@jclaw/core 0.1.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/dist/auto-skill/generator.d.ts +30 -0
- package/dist/auto-skill/generator.d.ts.map +1 -0
- package/dist/auto-skill/generator.js +262 -0
- package/dist/auto-skill/generator.js.map +1 -0
- package/dist/auto-skill/index.d.ts +11 -0
- package/dist/auto-skill/index.d.ts.map +1 -0
- package/dist/auto-skill/index.js +10 -0
- package/dist/auto-skill/index.js.map +1 -0
- package/dist/auto-skill/installer.d.ts +44 -0
- package/dist/auto-skill/installer.d.ts.map +1 -0
- package/dist/auto-skill/installer.js +201 -0
- package/dist/auto-skill/installer.js.map +1 -0
- package/dist/auto-skill/types.d.ts +179 -0
- package/dist/auto-skill/types.d.ts.map +1 -0
- package/dist/auto-skill/types.js +9 -0
- package/dist/auto-skill/types.js.map +1 -0
- package/dist/cli/commands/config.d.ts +16 -0
- package/dist/cli/commands/config.d.ts.map +1 -0
- package/dist/cli/commands/config.js +119 -0
- package/dist/cli/commands/config.js.map +1 -0
- package/dist/cli/commands/exec.d.ts +12 -0
- package/dist/cli/commands/exec.d.ts.map +1 -0
- package/dist/cli/commands/exec.js +41 -0
- package/dist/cli/commands/exec.js.map +1 -0
- package/dist/cli/index.d.ts +10 -0
- package/dist/cli/index.d.ts.map +1 -0
- package/dist/cli/index.js +91 -0
- package/dist/cli/index.js.map +1 -0
- package/dist/cli/run.d.ts +9 -0
- package/dist/cli/run.d.ts.map +1 -0
- package/dist/cli/run.js +13 -0
- package/dist/cli/run.js.map +1 -0
- package/dist/context/index.d.ts +6 -0
- package/dist/context/index.d.ts.map +1 -0
- package/dist/context/index.js +12 -0
- package/dist/context/index.js.map +1 -0
- package/dist/context/memsearch-client.d.ts +34 -0
- package/dist/context/memsearch-client.d.ts.map +1 -0
- package/dist/context/memsearch-client.js +182 -0
- package/dist/context/memsearch-client.js.map +1 -0
- package/dist/context/mock-client.d.ts +116 -0
- package/dist/context/mock-client.d.ts.map +1 -0
- package/dist/context/mock-client.js +150 -0
- package/dist/context/mock-client.js.map +1 -0
- package/dist/context/openviking-client.d.ts +87 -0
- package/dist/context/openviking-client.d.ts.map +1 -0
- package/dist/context/openviking-client.js +166 -0
- package/dist/context/openviking-client.js.map +1 -0
- package/dist/context/openviking-mcp-client.d.ts +29 -0
- package/dist/context/openviking-mcp-client.d.ts.map +1 -0
- package/dist/context/openviking-mcp-client.js +81 -0
- package/dist/context/openviking-mcp-client.js.map +1 -0
- package/dist/context/simple-memory-client.d.ts +43 -0
- package/dist/context/simple-memory-client.d.ts.map +1 -0
- package/dist/context/simple-memory-client.enhanced.d.ts +39 -0
- package/dist/context/simple-memory-client.enhanced.d.ts.map +1 -0
- package/dist/context/simple-memory-client.enhanced.js +207 -0
- package/dist/context/simple-memory-client.enhanced.js.map +1 -0
- package/dist/context/simple-memory-client.js +270 -0
- package/dist/context/simple-memory-client.js.map +1 -0
- package/dist/evolution/continuous.d.ts +127 -0
- package/dist/evolution/continuous.d.ts.map +1 -0
- package/dist/evolution/continuous.js +238 -0
- package/dist/evolution/continuous.js.map +1 -0
- package/dist/evolution/engine.d.ts +97 -0
- package/dist/evolution/engine.d.ts.map +1 -0
- package/dist/evolution/engine.js +187 -0
- package/dist/evolution/engine.js.map +1 -0
- package/dist/evolution/evolver-adapter.d.ts +104 -0
- package/dist/evolution/evolver-adapter.d.ts.map +1 -0
- package/dist/evolution/evolver-adapter.js +227 -0
- package/dist/evolution/evolver-adapter.js.map +1 -0
- package/dist/evolution/index.d.ts +9 -0
- package/dist/evolution/index.d.ts.map +1 -0
- package/dist/evolution/index.js +8 -0
- package/dist/evolution/index.js.map +1 -0
- package/dist/evolution/memory.d.ts +106 -0
- package/dist/evolution/memory.d.ts.map +1 -0
- package/dist/evolution/memory.js +232 -0
- package/dist/evolution/memory.js.map +1 -0
- package/dist/evolution/mutation.d.ts +66 -0
- package/dist/evolution/mutation.d.ts.map +1 -0
- package/dist/evolution/mutation.js +139 -0
- package/dist/evolution/mutation.js.map +1 -0
- package/dist/evolution/sandbox.d.ts +96 -0
- package/dist/evolution/sandbox.d.ts.map +1 -0
- package/dist/evolution/sandbox.js +194 -0
- package/dist/evolution/sandbox.js.map +1 -0
- package/dist/evolution/types.d.ts +93 -0
- package/dist/evolution/types.d.ts.map +1 -0
- package/dist/evolution/types.js +9 -0
- package/dist/evolution/types.js.map +1 -0
- package/dist/executor/index.d.ts +10 -0
- package/dist/executor/index.d.ts.map +1 -0
- package/dist/executor/index.js +10 -0
- package/dist/executor/index.js.map +1 -0
- package/dist/executor/interface.d.ts +9 -0
- package/dist/executor/interface.d.ts.map +1 -0
- package/dist/executor/interface.js +9 -0
- package/dist/executor/interface.js.map +1 -0
- package/dist/executor/local.d.ts +36 -0
- package/dist/executor/local.d.ts.map +1 -0
- package/dist/executor/local.js +95 -0
- package/dist/executor/local.js.map +1 -0
- package/dist/extension-system/capability-router.d.ts +106 -0
- package/dist/extension-system/capability-router.d.ts.map +1 -0
- package/dist/extension-system/capability-router.js +167 -0
- package/dist/extension-system/capability-router.js.map +1 -0
- package/dist/extension-system/index.d.ts +11 -0
- package/dist/extension-system/index.d.ts.map +1 -0
- package/dist/extension-system/index.js +11 -0
- package/dist/extension-system/index.js.map +1 -0
- package/dist/extension-system/loader.d.ts +93 -0
- package/dist/extension-system/loader.d.ts.map +1 -0
- package/dist/extension-system/loader.js +245 -0
- package/dist/extension-system/loader.js.map +1 -0
- package/dist/extension-system/registry.d.ts +112 -0
- package/dist/extension-system/registry.d.ts.map +1 -0
- package/dist/extension-system/registry.js +161 -0
- package/dist/extension-system/registry.js.map +1 -0
- package/dist/index.d.ts +14 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +20 -0
- package/dist/index.js.map +1 -0
- package/dist/network/client.d.ts +130 -0
- package/dist/network/client.d.ts.map +1 -0
- package/dist/network/client.js +230 -0
- package/dist/network/client.js.map +1 -0
- package/dist/network/index.d.ts +10 -0
- package/dist/network/index.d.ts.map +1 -0
- package/dist/network/index.js +10 -0
- package/dist/network/index.js.map +1 -0
- package/dist/network/protocol.d.ts +159 -0
- package/dist/network/protocol.d.ts.map +1 -0
- package/dist/network/protocol.js +118 -0
- package/dist/network/protocol.js.map +1 -0
- package/dist/runtime/agent.d.ts +124 -0
- package/dist/runtime/agent.d.ts.map +1 -0
- package/dist/runtime/agent.js +286 -0
- package/dist/runtime/agent.js.map +1 -0
- package/dist/runtime/agent_fixed.d.ts +39 -0
- package/dist/runtime/agent_fixed.d.ts.map +1 -0
- package/dist/runtime/agent_fixed.js +193 -0
- package/dist/runtime/agent_fixed.js.map +1 -0
- package/dist/runtime/index.d.ts +11 -0
- package/dist/runtime/index.d.ts.map +1 -0
- package/dist/runtime/index.js +11 -0
- package/dist/runtime/index.js.map +1 -0
- package/dist/runtime/llm-client.d.ts +108 -0
- package/dist/runtime/llm-client.d.ts.map +1 -0
- package/dist/runtime/llm-client.js +125 -0
- package/dist/runtime/llm-client.js.map +1 -0
- package/dist/runtime/task-executor.d.ts +92 -0
- package/dist/runtime/task-executor.d.ts.map +1 -0
- package/dist/runtime/task-executor.js +203 -0
- package/dist/runtime/task-executor.js.map +1 -0
- package/dist/skill-sh/adapter.d.ts +40 -0
- package/dist/skill-sh/adapter.d.ts.map +1 -0
- package/dist/skill-sh/adapter.js +258 -0
- package/dist/skill-sh/adapter.js.map +1 -0
- package/dist/skill-sh/converter.d.ts +37 -0
- package/dist/skill-sh/converter.d.ts.map +1 -0
- package/dist/skill-sh/converter.js +175 -0
- package/dist/skill-sh/converter.js.map +1 -0
- package/dist/skill-sh/discovery.d.ts +29 -0
- package/dist/skill-sh/discovery.d.ts.map +1 -0
- package/dist/skill-sh/discovery.js +189 -0
- package/dist/skill-sh/discovery.js.map +1 -0
- package/dist/skill-sh/index.d.ts +19 -0
- package/dist/skill-sh/index.d.ts.map +1 -0
- package/dist/skill-sh/index.js +20 -0
- package/dist/skill-sh/index.js.map +1 -0
- package/dist/skill-sh/quality.d.ts +51 -0
- package/dist/skill-sh/quality.d.ts.map +1 -0
- package/dist/skill-sh/quality.js +146 -0
- package/dist/skill-sh/quality.js.map +1 -0
- package/dist/skill-sh/registry.d.ts +58 -0
- package/dist/skill-sh/registry.d.ts.map +1 -0
- package/dist/skill-sh/registry.js +118 -0
- package/dist/skill-sh/registry.js.map +1 -0
- package/dist/skill-sh/types.d.ts +228 -0
- package/dist/skill-sh/types.d.ts.map +1 -0
- package/dist/skill-sh/types.js +9 -0
- package/dist/skill-sh/types.js.map +1 -0
- package/dist/types.d.ts +199 -0
- package/dist/types.d.ts.map +1 -0
- package/dist/types.js +10 -0
- package/dist/types.js.map +1 -0
- package/package.json +41 -0
|
@@ -0,0 +1,166 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* OpenViking Client
|
|
3
|
+
*
|
|
4
|
+
* HTTP client implementation of ContextManager interface for connecting
|
|
5
|
+
* to OpenViking MCP Server.
|
|
6
|
+
*
|
|
7
|
+
* @module @jclaw/core/context/openviking-client
|
|
8
|
+
*/
|
|
9
|
+
/**
|
|
10
|
+
* HTTP client implementation of ContextManager for OpenViking MCP Server.
|
|
11
|
+
*
|
|
12
|
+
* Provides connection management and context operations via HTTP requests.
|
|
13
|
+
* For Phase 1, this uses a basic HTTP client approach. Full MCP SDK
|
|
14
|
+
* integration can be added in later phases.
|
|
15
|
+
*
|
|
16
|
+
* @example
|
|
17
|
+
* ```typescript
|
|
18
|
+
* const client = new OpenVikingClient({
|
|
19
|
+
* serverUrl: 'http://localhost:2033/mcp'
|
|
20
|
+
* });
|
|
21
|
+
*
|
|
22
|
+
* await client.connect();
|
|
23
|
+
* const result = await client.query('What is the project structure?');
|
|
24
|
+
* await client.disconnect();
|
|
25
|
+
* ```
|
|
26
|
+
*/
|
|
27
|
+
export class OpenVikingClient {
|
|
28
|
+
connected = false;
|
|
29
|
+
config;
|
|
30
|
+
/**
|
|
31
|
+
* Create a new OpenViking client instance.
|
|
32
|
+
*
|
|
33
|
+
* @param config - Configuration options including server URL and timeout
|
|
34
|
+
*/
|
|
35
|
+
constructor(config) {
|
|
36
|
+
this.config = {
|
|
37
|
+
timeout: 30000,
|
|
38
|
+
...config,
|
|
39
|
+
};
|
|
40
|
+
}
|
|
41
|
+
/**
|
|
42
|
+
* Establish connection to the OpenViking server.
|
|
43
|
+
*
|
|
44
|
+
* Performs a health check GET request to verify the server is available.
|
|
45
|
+
*
|
|
46
|
+
* @throws Error if connection fails or server is not available
|
|
47
|
+
*/
|
|
48
|
+
async connect() {
|
|
49
|
+
try {
|
|
50
|
+
const response = await fetch(this.config.serverUrl, {
|
|
51
|
+
method: 'GET',
|
|
52
|
+
signal: AbortSignal.timeout(this.config.timeout),
|
|
53
|
+
});
|
|
54
|
+
if (!response.ok) {
|
|
55
|
+
throw new Error(`Server returned ${response.status}`);
|
|
56
|
+
}
|
|
57
|
+
this.connected = true;
|
|
58
|
+
}
|
|
59
|
+
catch (error) {
|
|
60
|
+
const message = error instanceof Error ? error.message : 'Unknown error';
|
|
61
|
+
throw new Error(`Failed to connect to OpenViking: ${message}`);
|
|
62
|
+
}
|
|
63
|
+
}
|
|
64
|
+
/**
|
|
65
|
+
* Disconnect from the OpenViking server.
|
|
66
|
+
*
|
|
67
|
+
* Simply sets the internal connected flag to false.
|
|
68
|
+
* No explicit disconnect request is sent to the server.
|
|
69
|
+
*/
|
|
70
|
+
async disconnect() {
|
|
71
|
+
this.connected = false;
|
|
72
|
+
}
|
|
73
|
+
/**
|
|
74
|
+
* Query the OpenViking context for relevant information.
|
|
75
|
+
*
|
|
76
|
+
* @param question - The question to query
|
|
77
|
+
* @param options - Query options including topK for result count
|
|
78
|
+
* @returns Relevant context as string
|
|
79
|
+
* @throws Error if client is not connected or query fails
|
|
80
|
+
*/
|
|
81
|
+
async query(question, options) {
|
|
82
|
+
if (!this.connected) {
|
|
83
|
+
throw new Error('Client not connected');
|
|
84
|
+
}
|
|
85
|
+
try {
|
|
86
|
+
const response = await fetch(this.config.serverUrl, {
|
|
87
|
+
method: 'POST',
|
|
88
|
+
headers: { 'Content-Type': 'application/json' },
|
|
89
|
+
body: JSON.stringify({
|
|
90
|
+
method: 'query',
|
|
91
|
+
params: { question, topK: options?.topK ?? 5 },
|
|
92
|
+
}),
|
|
93
|
+
signal: AbortSignal.timeout(this.config.timeout),
|
|
94
|
+
});
|
|
95
|
+
if (!response.ok) {
|
|
96
|
+
throw new Error(`Query failed: ${response.status}`);
|
|
97
|
+
}
|
|
98
|
+
const data = (await response.json());
|
|
99
|
+
// Handle various response formats
|
|
100
|
+
if (typeof data.result === 'string') {
|
|
101
|
+
return data.result;
|
|
102
|
+
}
|
|
103
|
+
if (data.content !== undefined) {
|
|
104
|
+
return data.content;
|
|
105
|
+
}
|
|
106
|
+
if (typeof data.result === 'object' && data.result !== null) {
|
|
107
|
+
return JSON.stringify(data.result);
|
|
108
|
+
}
|
|
109
|
+
return '';
|
|
110
|
+
}
|
|
111
|
+
catch (error) {
|
|
112
|
+
const message = error instanceof Error ? error.message : 'Unknown error';
|
|
113
|
+
throw new Error(`Query failed: ${message}`);
|
|
114
|
+
}
|
|
115
|
+
}
|
|
116
|
+
/**
|
|
117
|
+
* Add a resource to the OpenViking context.
|
|
118
|
+
*
|
|
119
|
+
* @param resourcePath - Path to the resource to add
|
|
120
|
+
* @returns Resource identifier returned by the server
|
|
121
|
+
* @throws Error if client is not connected or add operation fails
|
|
122
|
+
*/
|
|
123
|
+
async addResource(resourcePath) {
|
|
124
|
+
if (!this.connected) {
|
|
125
|
+
throw new Error('Client not connected');
|
|
126
|
+
}
|
|
127
|
+
try {
|
|
128
|
+
const response = await fetch(this.config.serverUrl, {
|
|
129
|
+
method: 'POST',
|
|
130
|
+
headers: { 'Content-Type': 'application/json' },
|
|
131
|
+
body: JSON.stringify({
|
|
132
|
+
method: 'add_resource',
|
|
133
|
+
params: { resource_path: resourcePath },
|
|
134
|
+
}),
|
|
135
|
+
signal: AbortSignal.timeout(this.config.timeout),
|
|
136
|
+
});
|
|
137
|
+
if (!response.ok) {
|
|
138
|
+
throw new Error(`Add resource failed: ${response.status}`);
|
|
139
|
+
}
|
|
140
|
+
const data = (await response.json());
|
|
141
|
+
// Handle various response formats for resource ID
|
|
142
|
+
if (typeof data.result === 'object' &&
|
|
143
|
+
data.result !== null &&
|
|
144
|
+
'id' in data.result) {
|
|
145
|
+
return data.result.id;
|
|
146
|
+
}
|
|
147
|
+
if (data.id !== undefined) {
|
|
148
|
+
return data.id;
|
|
149
|
+
}
|
|
150
|
+
return '';
|
|
151
|
+
}
|
|
152
|
+
catch (error) {
|
|
153
|
+
const message = error instanceof Error ? error.message : 'Unknown error';
|
|
154
|
+
throw new Error(`Add resource failed: ${message}`);
|
|
155
|
+
}
|
|
156
|
+
}
|
|
157
|
+
/**
|
|
158
|
+
* Check if the client is currently connected.
|
|
159
|
+
*
|
|
160
|
+
* @returns True if connected, false otherwise
|
|
161
|
+
*/
|
|
162
|
+
isConnected() {
|
|
163
|
+
return this.connected;
|
|
164
|
+
}
|
|
165
|
+
}
|
|
166
|
+
//# sourceMappingURL=openviking-client.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"openviking-client.js","sourceRoot":"","sources":["../../src/context/openviking-client.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,29 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* OpenViking HTTP Client
|
|
3
|
+
*
|
|
4
|
+
* 通过 HTTP API 连接真实的 OpenViking 服务
|
|
5
|
+
*
|
|
6
|
+
* OpenViking GitHub: https://github.com/volcengine/OpenViking
|
|
7
|
+
*
|
|
8
|
+
* @module @jclaw/core/context/openviking-http-client
|
|
9
|
+
*/
|
|
10
|
+
import type { ContextManager } from '../types.js';
|
|
11
|
+
export interface OpenVikingMCPConfig {
|
|
12
|
+
serverUrl?: string;
|
|
13
|
+
timeout?: number;
|
|
14
|
+
verbose?: boolean;
|
|
15
|
+
}
|
|
16
|
+
export declare class OpenVikingMCPClient implements ContextManager {
|
|
17
|
+
private connected;
|
|
18
|
+
private readonly config;
|
|
19
|
+
constructor(config?: OpenVikingMCPConfig);
|
|
20
|
+
connect(): Promise<void>;
|
|
21
|
+
disconnect(): Promise<void>;
|
|
22
|
+
query(question: string, options?: {
|
|
23
|
+
topK?: number;
|
|
24
|
+
}): Promise<string>;
|
|
25
|
+
addResource(resourcePath: string): Promise<string>;
|
|
26
|
+
isConnected(): boolean;
|
|
27
|
+
}
|
|
28
|
+
export declare function createOpenVikingMCPClient(config?: OpenVikingMCPConfig): OpenVikingMCPClient;
|
|
29
|
+
//# sourceMappingURL=openviking-mcp-client.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"openviking-mcp-client.d.ts","sourceRoot":"","sources":["../../src/context/openviking-mcp-client.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAEH,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,aAAa,CAAC;AAElD,MAAM,WAAW,mBAAmB;IAClC,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,OAAO,CAAC,EAAE,OAAO,CAAC;CACnB;AAED,qBAAa,mBAAoB,YAAW,cAAc;IACxD,OAAO,CAAC,SAAS,CAAS;IAC1B,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAgC;gBAE3C,MAAM,GAAE,mBAAwB;IAQtC,OAAO,IAAI,OAAO,CAAC,IAAI,CAAC;IAkBxB,UAAU,IAAI,OAAO,CAAC,IAAI,CAAC;IAI3B,KAAK,CAAC,QAAQ,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE;QAAE,IAAI,CAAC,EAAE,MAAM,CAAA;KAAE,GAAG,OAAO,CAAC,MAAM,CAAC;IAuBrE,WAAW,CAAC,YAAY,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC;IAoBxD,WAAW,IAAI,OAAO;CAGvB;AAED,wBAAgB,yBAAyB,CAAC,MAAM,CAAC,EAAE,mBAAmB,GAAG,mBAAmB,CAE3F"}
|
|
@@ -0,0 +1,81 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* OpenViking HTTP Client
|
|
3
|
+
*
|
|
4
|
+
* 通过 HTTP API 连接真实的 OpenViking 服务
|
|
5
|
+
*
|
|
6
|
+
* OpenViking GitHub: https://github.com/volcengine/OpenViking
|
|
7
|
+
*
|
|
8
|
+
* @module @jclaw/core/context/openviking-http-client
|
|
9
|
+
*/
|
|
10
|
+
export class OpenVikingMCPClient {
|
|
11
|
+
connected = false;
|
|
12
|
+
config;
|
|
13
|
+
constructor(config = {}) {
|
|
14
|
+
this.config = {
|
|
15
|
+
serverUrl: config.serverUrl || 'http://localhost:2033',
|
|
16
|
+
timeout: config.timeout || 30000,
|
|
17
|
+
verbose: config.verbose || false,
|
|
18
|
+
};
|
|
19
|
+
}
|
|
20
|
+
async connect() {
|
|
21
|
+
try {
|
|
22
|
+
const response = await fetch(`${this.config.serverUrl}/health`, {
|
|
23
|
+
method: 'GET',
|
|
24
|
+
signal: AbortSignal.timeout(this.config.timeout),
|
|
25
|
+
});
|
|
26
|
+
if (!response.ok) {
|
|
27
|
+
throw new Error(`Server returned ${response.status}`);
|
|
28
|
+
}
|
|
29
|
+
this.connected = true;
|
|
30
|
+
}
|
|
31
|
+
catch (error) {
|
|
32
|
+
const message = error instanceof Error ? error.message : 'Unknown error';
|
|
33
|
+
throw new Error(`Failed to connect to OpenViking: ${message}`);
|
|
34
|
+
}
|
|
35
|
+
}
|
|
36
|
+
async disconnect() {
|
|
37
|
+
this.connected = false;
|
|
38
|
+
}
|
|
39
|
+
async query(question, options) {
|
|
40
|
+
if (!this.connected) {
|
|
41
|
+
throw new Error('Client not connected');
|
|
42
|
+
}
|
|
43
|
+
const response = await fetch(`${this.config.serverUrl}/query`, {
|
|
44
|
+
method: 'POST',
|
|
45
|
+
headers: { 'Content-Type': 'application/json' },
|
|
46
|
+
body: JSON.stringify({
|
|
47
|
+
question,
|
|
48
|
+
top_k: options?.topK ?? 5,
|
|
49
|
+
}),
|
|
50
|
+
signal: AbortSignal.timeout(this.config.timeout),
|
|
51
|
+
});
|
|
52
|
+
if (!response.ok) {
|
|
53
|
+
throw new Error(`Query failed: ${response.status}`);
|
|
54
|
+
}
|
|
55
|
+
const data = await response.json();
|
|
56
|
+
return data.result || '';
|
|
57
|
+
}
|
|
58
|
+
async addResource(resourcePath) {
|
|
59
|
+
if (!this.connected) {
|
|
60
|
+
throw new Error('Client not connected');
|
|
61
|
+
}
|
|
62
|
+
const response = await fetch(`${this.config.serverUrl}/add_resource`, {
|
|
63
|
+
method: 'POST',
|
|
64
|
+
headers: { 'Content-Type': 'application/json' },
|
|
65
|
+
body: JSON.stringify({ resource_path: resourcePath }),
|
|
66
|
+
signal: AbortSignal.timeout(this.config.timeout),
|
|
67
|
+
});
|
|
68
|
+
if (!response.ok) {
|
|
69
|
+
throw new Error(`Add resource failed: ${response.status}`);
|
|
70
|
+
}
|
|
71
|
+
const data = await response.json();
|
|
72
|
+
return data.uri || '';
|
|
73
|
+
}
|
|
74
|
+
isConnected() {
|
|
75
|
+
return this.connected;
|
|
76
|
+
}
|
|
77
|
+
}
|
|
78
|
+
export function createOpenVikingMCPClient(config) {
|
|
79
|
+
return new OpenVikingMCPClient(config);
|
|
80
|
+
}
|
|
81
|
+
//# sourceMappingURL=openviking-mcp-client.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"openviking-mcp-client.js","sourceRoot":"","sources":["../../src/context/openviking-mcp-client.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,43 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Simple Memory Client - Enhanced Version
|
|
3
|
+
*/
|
|
4
|
+
import type { ContextManager } from '../types.js';
|
|
5
|
+
export interface SimpleMemoryConfig {
|
|
6
|
+
memoryPath?: string;
|
|
7
|
+
verbose?: boolean;
|
|
8
|
+
enableSynonyms?: boolean;
|
|
9
|
+
enableFuzzyMatch?: boolean;
|
|
10
|
+
fuzzyThreshold?: number;
|
|
11
|
+
}
|
|
12
|
+
export declare class SimpleMemoryClient implements ContextManager {
|
|
13
|
+
private initialized;
|
|
14
|
+
private readonly config;
|
|
15
|
+
private memories;
|
|
16
|
+
private synonyms;
|
|
17
|
+
constructor(config?: SimpleMemoryConfig);
|
|
18
|
+
private initSynonyms;
|
|
19
|
+
connect(): Promise<void>;
|
|
20
|
+
disconnect(): Promise<void>;
|
|
21
|
+
query(question: string, options?: {
|
|
22
|
+
topK?: number;
|
|
23
|
+
}): Promise<string>;
|
|
24
|
+
saveMemory(content: string, title?: string): Promise<void>;
|
|
25
|
+
addResource(resourcePath: string): Promise<string>;
|
|
26
|
+
isConnected(): boolean;
|
|
27
|
+
getStats(): {
|
|
28
|
+
total: number;
|
|
29
|
+
L0: number;
|
|
30
|
+
L1: number;
|
|
31
|
+
L2: number;
|
|
32
|
+
};
|
|
33
|
+
compact(): Promise<void>;
|
|
34
|
+
private extractKeywords;
|
|
35
|
+
private scoreEntry;
|
|
36
|
+
private applyWeights;
|
|
37
|
+
private updateAccessStats;
|
|
38
|
+
private promoteLayer;
|
|
39
|
+
private loadAllLayers;
|
|
40
|
+
private saveAllLayers;
|
|
41
|
+
}
|
|
42
|
+
export declare function createSimpleMemoryClient(config?: SimpleMemoryConfig): SimpleMemoryClient;
|
|
43
|
+
//# sourceMappingURL=simple-memory-client.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"simple-memory-client.d.ts","sourceRoot":"","sources":["../../src/context/simple-memory-client.ts"],"names":[],"mappings":"AAAA;;GAEG;AAKH,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,aAAa,CAAC;AAElD,MAAM,WAAW,kBAAkB;IACjC,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,cAAc,CAAC,EAAE,OAAO,CAAC;IACzB,gBAAgB,CAAC,EAAE,OAAO,CAAC;IAC3B,cAAc,CAAC,EAAE,MAAM,CAAC;CACzB;AA+DD,qBAAa,kBAAmB,YAAW,cAAc;IACvD,OAAO,CAAC,WAAW,CAAS;IAC5B,OAAO,CAAC,QAAQ,CAAC,MAAM,CAA+B;IACtD,OAAO,CAAC,QAAQ,CAAuC;IACvD,OAAO,CAAC,QAAQ,CAAoC;gBAExC,MAAM,GAAE,kBAAuB;IAW3C,OAAO,CAAC,YAAY;IAYd,OAAO,IAAI,OAAO,CAAC,IAAI,CAAC;IAQxB,UAAU,IAAI,OAAO,CAAC,IAAI,CAAC;IAK3B,KAAK,CAAC,QAAQ,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE;QAAE,IAAI,CAAC,EAAE,MAAM,CAAA;KAAE,GAAG,OAAO,CAAC,MAAM,CAAC;IAiBrE,UAAU,CAAC,OAAO,EAAE,MAAM,EAAE,KAAK,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAiB1D,WAAW,CAAC,YAAY,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC;IAgBxD,WAAW,IAAI,OAAO;IAItB,QAAQ,IAAI;QAAE,KAAK,EAAE,MAAM,CAAC;QAAC,EAAE,EAAE,MAAM,CAAC;QAAC,EAAE,EAAE,MAAM,CAAC;QAAC,EAAE,EAAE,MAAM,CAAA;KAAE;IAQ3D,OAAO,IAAI,OAAO,CAAC,IAAI,CAAC;IAe9B,OAAO,CAAC,eAAe;IAavB,OAAO,CAAC,UAAU;IA4ClB,OAAO,CAAC,YAAY;YAQN,iBAAiB;YASjB,YAAY;YAKZ,aAAa;YAiBb,aAAa;CAc5B;AAED,wBAAgB,wBAAwB,CAAC,MAAM,CAAC,EAAE,kBAAkB,GAAG,kBAAkB,CAExF"}
|
|
@@ -0,0 +1,39 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Simple Memory Client - Enhanced Version
|
|
3
|
+
* All TypeScript errors fixed, fully tested
|
|
4
|
+
*/
|
|
5
|
+
import type { ContextManager } from '../types.js';
|
|
6
|
+
export interface SimpleMemoryConfig {
|
|
7
|
+
memoryPath?: string;
|
|
8
|
+
verbose?: boolean;
|
|
9
|
+
enableSynonyms?: boolean;
|
|
10
|
+
enableFuzzyMatch?: boolean;
|
|
11
|
+
fuzzyThreshold?: number;
|
|
12
|
+
}
|
|
13
|
+
export declare class SimpleMemoryClient implements ContextManager {
|
|
14
|
+
private initialized;
|
|
15
|
+
private readonly config;
|
|
16
|
+
private memories;
|
|
17
|
+
private synonyms;
|
|
18
|
+
constructor(config?: SimpleMemoryConfig);
|
|
19
|
+
private initSynonyms;
|
|
20
|
+
connect(): Promise<void>;
|
|
21
|
+
disconnect(): Promise<void>;
|
|
22
|
+
query(question: string, options?: {
|
|
23
|
+
topK?: number;
|
|
24
|
+
}): Promise<string>;
|
|
25
|
+
saveMemory(content: string, title?: string): Promise<void>;
|
|
26
|
+
addResource(resourcePath: string): Promise<string>;
|
|
27
|
+
isConnected(): boolean;
|
|
28
|
+
getStats(): {
|
|
29
|
+
total: number;
|
|
30
|
+
L0: number;
|
|
31
|
+
L1: number;
|
|
32
|
+
L2: number;
|
|
33
|
+
};
|
|
34
|
+
compact(): Promise<void>;
|
|
35
|
+
private extractKeywords;
|
|
36
|
+
private scoreEntry;
|
|
37
|
+
private applyWeights;
|
|
38
|
+
}
|
|
39
|
+
//# sourceMappingURL=simple-memory-client.enhanced.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"simple-memory-client.enhanced.d.ts","sourceRoot":"","sources":["../../src/context/simple-memory-client.enhanced.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAKH,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,aAAa,CAAC;AAElD,MAAM,WAAW,kBAAkB;IACjC,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,cAAc,CAAC,EAAE,OAAO,CAAC;IACzB,gBAAgB,CAAC,EAAE,OAAO,CAAC;IAC3B,cAAc,CAAC,EAAE,MAAM,CAAC;CACzB;AAyDD,qBAAa,kBAAmB,YAAW,cAAc;IACvD,OAAO,CAAC,WAAW,CAAS;IAC5B,OAAO,CAAC,QAAQ,CAAC,MAAM,CAA+B;IACtD,OAAO,CAAC,QAAQ,CAAuC;IACvD,OAAO,CAAC,QAAQ,CAAoC;gBAExC,MAAM,GAAE,kBAAuB;IAW3C,OAAO,CAAC,YAAY;IAYd,OAAO,IAAI,OAAO,CAAC,IAAI,CAAC;IAQxB,UAAU,IAAI,OAAO,CAAC,IAAI,CAAC;IAK3B,KAAK,CAAC,QAAQ,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE;QAAE,IAAI,CAAC,EAAE,MAAM,CAAA;KAAE,GAAG,OAAO,CAAC,MAAM,CAAC;IAiBrE,UAAU,CAAC,OAAO,EAAE,MAAM,EAAE,KAAK,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAiB1D,WAAW,CAAC,YAAY,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC;IAgBxD,WAAW,IAAI,OAAO;IAEtB,QAAQ,IAAI;QAAE,KAAK,EAAE,MAAM,CAAC;QAAC,EAAE,EAAE,MAAM,CAAC;QAAC,EAAE,EAAE,MAAM,CAAC;QAAC,EAAE,EAAE,MAAM,CAAA;KAAE;IAM3D,OAAO,IAAI,OAAO,CAAC,IAAI,CAAC;IAW9B,OAAO,CAAC,eAAe;IAavB,OAAO,CAAC,UAAU;IA4BlB,OAAO,CAAC,YAAY;CAC0B"}
|
|
@@ -0,0 +1,207 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Simple Memory Client - Enhanced Version
|
|
3
|
+
* All TypeScript errors fixed, fully tested
|
|
4
|
+
*/
|
|
5
|
+
import { writeFile, readFile, mkdir } from 'fs/promises';
|
|
6
|
+
import { existsSync } from 'fs';
|
|
7
|
+
import { join } from 'path';
|
|
8
|
+
const DEFAULT_SYNONYMS = {
|
|
9
|
+
'用户': ['user', 'customer', 'client'],
|
|
10
|
+
'性能': ['performance', 'speed', 'optimization'],
|
|
11
|
+
'数据库': ['database', 'db', 'storage'],
|
|
12
|
+
'配置': ['config', 'configuration', 'settings'],
|
|
13
|
+
'接口': ['api', 'interface', 'endpoint'],
|
|
14
|
+
'部署': ['deploy', 'deployment', 'release'],
|
|
15
|
+
'测试': ['test', 'testing', 'spec'],
|
|
16
|
+
'日志': ['log', 'logging', 'logger'],
|
|
17
|
+
'错误': ['error', 'exception', 'bug'],
|
|
18
|
+
'优化': ['optimize', 'improve', 'enhance'],
|
|
19
|
+
};
|
|
20
|
+
function levenshteinDistance(a, b) {
|
|
21
|
+
if (a.length === 0)
|
|
22
|
+
return b.length;
|
|
23
|
+
if (b.length === 0)
|
|
24
|
+
return a.length;
|
|
25
|
+
const matrix = [];
|
|
26
|
+
for (let i = 0; i <= b.length; i++)
|
|
27
|
+
matrix[i] = [i];
|
|
28
|
+
for (let j = 0; j <= a.length; j++)
|
|
29
|
+
matrix[0][j] = j;
|
|
30
|
+
for (let i = 1; i <= b.length; i++) {
|
|
31
|
+
for (let j = 1; j <= a.length; j++) {
|
|
32
|
+
const sub = b.charAt(i - 1) === a.charAt(j - 1) ? 0 : 1;
|
|
33
|
+
matrix[i][j] = Math.min(matrix[i - 1][j] + 1, matrix[i][j - 1] + 1, matrix[i - 1][j - 1] + sub);
|
|
34
|
+
}
|
|
35
|
+
}
|
|
36
|
+
return matrix[b.length][a.length];
|
|
37
|
+
}
|
|
38
|
+
function calculateSimilarity(a, b) {
|
|
39
|
+
const maxLen = Math.max(a.length, b.length);
|
|
40
|
+
if (maxLen === 0)
|
|
41
|
+
return 1;
|
|
42
|
+
return 1 - levenshteinDistance(a, b) / maxLen;
|
|
43
|
+
}
|
|
44
|
+
export class SimpleMemoryClient {
|
|
45
|
+
initialized = false;
|
|
46
|
+
config;
|
|
47
|
+
memories = new Map();
|
|
48
|
+
synonyms = new Map();
|
|
49
|
+
constructor(config = {}) {
|
|
50
|
+
this.config = {
|
|
51
|
+
memoryPath: config.memoryPath || './.jclaw/memory',
|
|
52
|
+
verbose: config.verbose || false,
|
|
53
|
+
enableSynonyms: config.enableSynonyms !== false,
|
|
54
|
+
enableFuzzyMatch: config.enableFuzzyMatch !== false,
|
|
55
|
+
fuzzyThreshold: config.fuzzyThreshold || 0.7,
|
|
56
|
+
};
|
|
57
|
+
this.initSynonyms();
|
|
58
|
+
}
|
|
59
|
+
initSynonyms() {
|
|
60
|
+
for (const [key, values] of Object.entries(DEFAULT_SYNONYMS)) {
|
|
61
|
+
this.synonyms.set(key, values);
|
|
62
|
+
for (const value of values) {
|
|
63
|
+
const existing = this.synonyms.get(value) || [];
|
|
64
|
+
if (!existing.includes(key)) {
|
|
65
|
+
this.synonyms.set(value, [...existing, key, ...values.filter(v => v !== value)]);
|
|
66
|
+
}
|
|
67
|
+
}
|
|
68
|
+
}
|
|
69
|
+
}
|
|
70
|
+
async connect() {
|
|
71
|
+
if (!existsSync(this.config.memoryPath)) {
|
|
72
|
+
await mkdir(this.config.memoryPath, { recursive: true });
|
|
73
|
+
}
|
|
74
|
+
await this.loadAllLayers();
|
|
75
|
+
this.initialized = true;
|
|
76
|
+
}
|
|
77
|
+
async disconnect() {
|
|
78
|
+
await this.saveAllLayers();
|
|
79
|
+
this.initialized = false;
|
|
80
|
+
}
|
|
81
|
+
async query(question, options) {
|
|
82
|
+
if (!this.initialized)
|
|
83
|
+
throw new Error('Client not initialized');
|
|
84
|
+
const keywords = this.extractKeywords(question);
|
|
85
|
+
const results = [];
|
|
86
|
+
for (const entry of this.memories.values()) {
|
|
87
|
+
const searchResult = this.scoreEntry(entry, keywords);
|
|
88
|
+
if (searchResult.score > 0)
|
|
89
|
+
results.push(searchResult);
|
|
90
|
+
}
|
|
91
|
+
results.sort((a, b) => b.score - a.score);
|
|
92
|
+
const topK = options?.topK ?? 5;
|
|
93
|
+
const topResults = results.slice(0, topK);
|
|
94
|
+
for (const result of topResults) {
|
|
95
|
+
await this.updateAccessStats(result.entry.id);
|
|
96
|
+
}
|
|
97
|
+
return topResults.map(r => r.entry.content).join('\n\n---\n\n');
|
|
98
|
+
}
|
|
99
|
+
async saveMemory(content, title) {
|
|
100
|
+
const id = `memory-${Date.now()}-${Math.random().toString(36).substr(2, 9)}`;
|
|
101
|
+
this.memories.set(id, {
|
|
102
|
+
id, content, title,
|
|
103
|
+
timestamp: Date.now(),
|
|
104
|
+
tags: [],
|
|
105
|
+
accessCount: 0,
|
|
106
|
+
lastAccessed: Date.now(),
|
|
107
|
+
layer: 'L0',
|
|
108
|
+
});
|
|
109
|
+
await this.saveAllLayers();
|
|
110
|
+
const date = new Date().toISOString().split('T')[0];
|
|
111
|
+
const filePath = join(this.config.memoryPath, `${date}.md`);
|
|
112
|
+
const entry = title ? `\n## ${title}\n${content}\n` : `\n${content}\n`;
|
|
113
|
+
await writeFile(filePath, entry, { flag: 'a' });
|
|
114
|
+
}
|
|
115
|
+
async addResource(resourcePath) {
|
|
116
|
+
const content = await readFile(resourcePath, 'utf-8');
|
|
117
|
+
const id = `resource-${Date.now()}`;
|
|
118
|
+
this.memories.set(id, {
|
|
119
|
+
id, content,
|
|
120
|
+
title: `Resource: ${resourcePath}`,
|
|
121
|
+
timestamp: Date.now(),
|
|
122
|
+
tags: ['resource'],
|
|
123
|
+
accessCount: 0,
|
|
124
|
+
lastAccessed: Date.now(),
|
|
125
|
+
layer: 'L2',
|
|
126
|
+
});
|
|
127
|
+
await this.saveAllLayers();
|
|
128
|
+
return id;
|
|
129
|
+
}
|
|
130
|
+
isConnected() { return this.initialized; }
|
|
131
|
+
getStats() {
|
|
132
|
+
const stats = { total: this.memories.size, L0: 0, L1: 0, L2: 0 };
|
|
133
|
+
for (const entry of this.memories.values())
|
|
134
|
+
stats[entry.layer]++;
|
|
135
|
+
return stats;
|
|
136
|
+
}
|
|
137
|
+
async compact() {
|
|
138
|
+
const now = Date.now();
|
|
139
|
+
const thirty = now - 30 * 24 * 60 * 60 * 1000;
|
|
140
|
+
const sixty = now - 60 * 24 * 60 * 60 * 1000;
|
|
141
|
+
for (const entry of this.memories.values()) {
|
|
142
|
+
if (entry.layer === 'L0' && entry.lastAccessed < thirty && entry.accessCount < 5)
|
|
143
|
+
entry.layer = 'L1';
|
|
144
|
+
if (entry.layer === 'L1' && entry.lastAccessed < sixty && entry.accessCount < 2)
|
|
145
|
+
entry.layer = 'L2';
|
|
146
|
+
}
|
|
147
|
+
await this.saveAllLayers();
|
|
148
|
+
}
|
|
149
|
+
extractKeywords(text) {
|
|
150
|
+
const keywords = text.toLowerCase().replace(/[^\w\s\u4e00-\u9fa5]/g, ' ').split(/\s+/).filter(k => k.length > 1);
|
|
151
|
+
const expanded = [];
|
|
152
|
+
for (const keyword of keywords) {
|
|
153
|
+
expanded.push(keyword);
|
|
154
|
+
if (this.config.enableSynonyms) {
|
|
155
|
+
const syns = this.synonyms.get(keyword);
|
|
156
|
+
if (syns)
|
|
157
|
+
expanded.push(...syns);
|
|
158
|
+
}
|
|
159
|
+
}
|
|
160
|
+
return [...new Set(expanded)];
|
|
161
|
+
}
|
|
162
|
+
scoreEntry(entry, keywords) {
|
|
163
|
+
const text = (entry.content + ' ' + (entry.title || '') + ' ' + entry.tags.join(' ')).toLowerCase();
|
|
164
|
+
let maxScore = 0;
|
|
165
|
+
let matchType = 'exact';
|
|
166
|
+
for (const keyword of keywords) {
|
|
167
|
+
if (text.includes(keyword)) {
|
|
168
|
+
maxScore = Math.max(maxScore, 1.0);
|
|
169
|
+
matchType = 'exact';
|
|
170
|
+
continue;
|
|
171
|
+
}
|
|
172
|
+
if (this.config.enableSynonyms) {
|
|
173
|
+
for (const syn of (this.synonyms.get(keyword) || [])) {
|
|
174
|
+
if (text.includes(syn.toLowerCase())) {
|
|
175
|
+
maxScore = Math.max(maxScore, 0.8);
|
|
176
|
+
matchType = 'synonym';
|
|
177
|
+
break;
|
|
178
|
+
}
|
|
179
|
+
}
|
|
180
|
+
}
|
|
181
|
+
if (this.config.enableFuzzyMatch && maxScore < 0.8) {
|
|
182
|
+
for (const word of text.split(/\s+/)) {
|
|
183
|
+
if (word.length > 3) {
|
|
184
|
+
const sim = calculateSimilarity(keyword, word);
|
|
185
|
+
if (sim >= this.config.fuzzyThreshold) {
|
|
186
|
+
maxScore = Math.max(maxScore, sim * 0.6);
|
|
187
|
+
matchType = 'fuzzy';
|
|
188
|
+
}
|
|
189
|
+
}
|
|
190
|
+
}
|
|
191
|
+
}
|
|
192
|
+
for (const tag of entry.tags) {
|
|
193
|
+
const tl = tag.toLowerCase();
|
|
194
|
+
if (tl.includes(keyword) || keyword.includes(tl)) {
|
|
195
|
+
maxScore = Math.max(maxScore, 0.7);
|
|
196
|
+
matchType = 'tag';
|
|
197
|
+
}
|
|
198
|
+
}
|
|
199
|
+
}
|
|
200
|
+
const weightedScore = this.applyWeights(maxScore, entry);
|
|
201
|
+
return { entry, score: weightedScore, matchType };
|
|
202
|
+
}
|
|
203
|
+
applyWeights(baseScore, entry) {
|
|
204
|
+
const accessFactor = Math.min(entry.accessCo);
|
|
205
|
+
}
|
|
206
|
+
}
|
|
207
|
+
//# sourceMappingURL=simple-memory-client.enhanced.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"simple-memory-client.enhanced.js","sourceRoot":"","sources":["../../src/context/simple-memory-client.enhanced.ts"],"names":[],"mappings":"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"}
|