@xalia/agent 0.5.8 → 0.6.1
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 +23 -8
- package/dist/agent/src/agent/agent.js +173 -96
- package/dist/agent/src/agent/agentUtils.js +82 -53
- package/dist/agent/src/agent/compressingContextManager.js +102 -0
- package/dist/agent/src/agent/context.js +189 -0
- package/dist/agent/src/agent/dummyLLM.js +46 -5
- package/dist/agent/src/agent/iAgentEventHandler.js +2 -0
- package/dist/agent/src/agent/mcpServerManager.js +22 -23
- package/dist/agent/src/agent/nullAgentEventHandler.js +21 -0
- package/dist/agent/src/agent/nullPlatform.js +14 -0
- package/dist/agent/src/agent/openAILLMStreaming.js +12 -7
- package/dist/agent/src/agent/promptProvider.js +63 -0
- package/dist/agent/src/agent/repeatLLM.js +5 -5
- package/dist/agent/src/agent/sudoMcpServerManager.js +11 -9
- package/dist/agent/src/agent/tokenAuth.js +7 -7
- package/dist/agent/src/agent/tools.js +1 -1
- package/dist/agent/src/chat/client/chatClient.js +733 -0
- package/dist/agent/src/chat/client/connection.js +209 -0
- package/dist/agent/src/chat/client/connection.test.js +188 -0
- package/dist/agent/src/chat/client/constants.js +5 -0
- package/dist/agent/src/chat/client/index.js +15 -0
- package/dist/agent/src/chat/client/interfaces.js +2 -0
- package/dist/agent/src/chat/client/responseHandler.js +105 -0
- package/dist/agent/src/chat/client/sessionClient.js +331 -0
- package/dist/agent/src/chat/client/teamManager.js +2 -0
- package/dist/agent/src/chat/{apiKeyManager.js → data/apiKeyManager.js} +4 -0
- package/dist/agent/src/chat/data/dataModels.js +2 -0
- package/dist/agent/src/chat/data/database.js +749 -0
- package/dist/agent/src/chat/data/dbMcpServerConfigs.js +47 -0
- package/dist/agent/src/chat/protocol/connectionMessages.js +5 -0
- package/dist/agent/src/chat/protocol/constants.js +50 -0
- package/dist/agent/src/chat/protocol/errors.js +22 -0
- package/dist/agent/src/chat/protocol/messages.js +110 -0
- package/dist/agent/src/chat/server/chatContextManager.js +405 -0
- package/dist/agent/src/chat/server/connectionManager.js +352 -0
- package/dist/agent/src/chat/server/connectionManager.test.js +159 -0
- package/dist/agent/src/chat/server/conversation.js +198 -0
- package/dist/agent/src/chat/server/errorUtils.js +23 -0
- package/dist/agent/src/chat/server/openSession.js +869 -0
- package/dist/agent/src/chat/server/server.js +177 -0
- package/dist/agent/src/chat/server/sessionFileManager.js +161 -0
- package/dist/agent/src/chat/server/sessionRegistry.js +700 -0
- package/dist/agent/src/chat/server/sessionRegistry.test.js +97 -0
- package/dist/agent/src/chat/server/test-utils/mockFactories.js +307 -0
- package/dist/agent/src/chat/server/tools.js +243 -0
- package/dist/agent/src/chat/utils/agentSessionMap.js +66 -0
- package/dist/agent/src/chat/utils/approvalManager.js +85 -0
- package/dist/agent/src/{utils → chat/utils}/asyncLock.js +3 -3
- package/dist/agent/src/chat/{asyncQueue.js → utils/asyncQueue.js} +12 -2
- package/dist/agent/src/chat/utils/htmlToText.js +84 -0
- package/dist/agent/src/chat/utils/multiAsyncQueue.js +42 -0
- package/dist/agent/src/chat/utils/search.js +145 -0
- package/dist/agent/src/chat/utils/userResolver.js +46 -0
- package/dist/agent/src/chat/{websocket.js → utils/websocket.js} +2 -0
- package/dist/agent/src/test/agent.test.js +332 -0
- package/dist/agent/src/test/approvalManager.test.js +58 -0
- package/dist/agent/src/test/chatContextManager.test.js +392 -0
- package/dist/agent/src/test/clientServerConnection.test.js +158 -0
- package/dist/agent/src/test/compressingContextManager.test.js +65 -0
- package/dist/agent/src/test/context.test.js +83 -0
- package/dist/agent/src/test/conversation.test.js +89 -0
- package/dist/agent/src/test/db.test.js +262 -90
- package/dist/agent/src/test/dbMcpServerConfigs.test.js +72 -0
- package/dist/agent/src/test/dbTestTools.js +99 -0
- package/dist/agent/src/test/imageLoad.test.js +8 -7
- package/dist/agent/src/test/mcpServerManager.test.js +21 -18
- package/dist/agent/src/test/multiAsyncQueue.test.js +101 -0
- package/dist/agent/src/test/openaiStreaming.test.js +12 -11
- package/dist/agent/src/test/prompt.test.js +5 -4
- package/dist/agent/src/test/promptProvider.test.js +28 -0
- package/dist/agent/src/test/responseHandler.test.js +61 -0
- package/dist/agent/src/test/sudoMcpServerManager.test.js +14 -12
- package/dist/agent/src/test/testTools.js +109 -0
- package/dist/agent/src/test/tools.test.js +31 -0
- package/dist/agent/src/tool/agentChat.js +21 -10
- package/dist/agent/src/tool/agentMain.js +1 -1
- package/dist/agent/src/tool/chatMain.js +235 -58
- package/dist/agent/src/tool/commandPrompt.js +15 -9
- package/dist/agent/src/tool/files.js +20 -16
- package/dist/agent/src/tool/nodePlatform.js +47 -3
- package/dist/agent/src/tool/options.js +4 -4
- package/dist/agent/src/tool/prompt.js +19 -13
- package/eslint.config.mjs +14 -1
- package/package.json +14 -6
- package/scripts/chat_server +8 -0
- package/scripts/setup_chat +7 -2
- package/scripts/shutdown_chat_server +3 -0
- package/scripts/test_chat +135 -17
- package/src/agent/agent.ts +270 -135
- package/src/agent/agentUtils.ts +136 -95
- package/src/agent/compressingContextManager.ts +164 -0
- package/src/agent/context.ts +268 -0
- package/src/agent/dummyLLM.ts +76 -8
- package/src/agent/iAgentEventHandler.ts +54 -0
- package/src/agent/iplatform.ts +1 -0
- package/src/agent/mcpServerManager.ts +32 -30
- package/src/agent/nullAgentEventHandler.ts +20 -0
- package/src/agent/nullPlatform.ts +13 -0
- package/src/agent/openAILLMStreaming.ts +12 -6
- package/src/agent/promptProvider.ts +87 -0
- package/src/agent/repeatLLM.ts +5 -5
- package/src/agent/sudoMcpServerManager.ts +13 -11
- package/src/agent/tokenAuth.ts +7 -7
- package/src/agent/tools.ts +3 -1
- package/src/chat/client/chatClient.ts +900 -0
- package/src/chat/client/connection.test.ts +241 -0
- package/src/chat/client/connection.ts +276 -0
- package/src/chat/client/constants.ts +3 -0
- package/src/chat/client/index.ts +18 -0
- package/src/chat/client/interfaces.ts +34 -0
- package/src/chat/client/responseHandler.ts +131 -0
- package/src/chat/client/sessionClient.ts +443 -0
- package/src/chat/client/teamManager.ts +29 -0
- package/src/chat/{apiKeyManager.ts → data/apiKeyManager.ts} +6 -2
- package/src/chat/data/dataModels.ts +85 -0
- package/src/chat/data/database.ts +982 -0
- package/src/chat/data/dbMcpServerConfigs.ts +59 -0
- package/src/chat/protocol/connectionMessages.ts +49 -0
- package/src/chat/protocol/constants.ts +55 -0
- package/src/chat/protocol/errors.ts +16 -0
- package/src/chat/protocol/messages.ts +682 -0
- package/src/chat/server/README.md +127 -0
- package/src/chat/server/chatContextManager.ts +612 -0
- package/src/chat/server/connectionManager.test.ts +266 -0
- package/src/chat/server/connectionManager.ts +541 -0
- package/src/chat/server/conversation.ts +269 -0
- package/src/chat/server/errorUtils.ts +28 -0
- package/src/chat/server/openSession.ts +1332 -0
- package/src/chat/server/server.ts +177 -0
- package/src/chat/server/sessionFileManager.ts +239 -0
- package/src/chat/server/sessionRegistry.test.ts +138 -0
- package/src/chat/server/sessionRegistry.ts +1064 -0
- package/src/chat/server/test-utils/mockFactories.ts +422 -0
- package/src/chat/server/tools.ts +265 -0
- package/src/chat/utils/agentSessionMap.ts +76 -0
- package/src/chat/utils/approvalManager.ts +111 -0
- package/src/{utils → chat/utils}/asyncLock.ts +3 -3
- package/src/chat/{asyncQueue.ts → utils/asyncQueue.ts} +14 -3
- package/src/chat/utils/htmlToText.ts +61 -0
- package/src/chat/utils/multiAsyncQueue.ts +52 -0
- package/src/chat/utils/search.ts +139 -0
- package/src/chat/utils/userResolver.ts +48 -0
- package/src/chat/{websocket.ts → utils/websocket.ts} +2 -0
- package/src/test/agent.test.ts +487 -0
- package/src/test/approvalManager.test.ts +73 -0
- package/src/test/chatContextManager.test.ts +521 -0
- package/src/test/clientServerConnection.test.ts +207 -0
- package/src/test/compressingContextManager.test.ts +82 -0
- package/src/test/context.test.ts +105 -0
- package/src/test/conversation.test.ts +109 -0
- package/src/test/db.test.ts +351 -103
- package/src/test/dbMcpServerConfigs.test.ts +112 -0
- package/src/test/dbTestTools.ts +153 -0
- package/src/test/imageLoad.test.ts +7 -6
- package/src/test/mcpServerManager.test.ts +19 -14
- package/src/test/multiAsyncQueue.test.ts +125 -0
- package/src/test/openaiStreaming.test.ts +11 -10
- package/src/test/prompt.test.ts +4 -3
- package/src/test/promptProvider.test.ts +33 -0
- package/src/test/responseHandler.test.ts +78 -0
- package/src/test/sudoMcpServerManager.test.ts +22 -15
- package/src/test/testTools.ts +146 -0
- package/src/test/tools.test.ts +39 -0
- package/src/tool/agentChat.ts +26 -12
- package/src/tool/agentMain.ts +1 -1
- package/src/tool/chatMain.ts +283 -100
- package/src/tool/commandPrompt.ts +25 -9
- package/src/tool/files.ts +25 -19
- package/src/tool/nodePlatform.ts +52 -3
- package/src/tool/options.ts +4 -2
- package/src/tool/prompt.ts +22 -15
- package/test_data/dummyllm_script_crash.json +32 -0
- package/test_data/frog.png.b64 +1 -0
- package/vitest.config.ts +39 -0
- package/dist/agent/src/chat/client.js +0 -310
- package/dist/agent/src/chat/conversationManager.js +0 -502
- package/dist/agent/src/chat/db.js +0 -218
- package/dist/agent/src/chat/messages.js +0 -29
- package/dist/agent/src/chat/server.js +0 -158
- package/src/chat/client.ts +0 -445
- package/src/chat/conversationManager.ts +0 -730
- package/src/chat/db.ts +0 -304
- package/src/chat/messages.ts +0 -266
- package/src/chat/server.ts +0 -177
- /package/{frog.png → test_data/frog.png} +0 -0
|
@@ -0,0 +1,59 @@
|
|
|
1
|
+
import { McpServerConfiguration } from "@xalia/xmcp/sdk";
|
|
2
|
+
import { DbClientBase } from "./database";
|
|
3
|
+
|
|
4
|
+
export class DbMcpServerConfigs extends DbClientBase {
|
|
5
|
+
async clearConfigsForUser(user_uuid: string): Promise<void> {
|
|
6
|
+
const { error } = await this.client
|
|
7
|
+
.from("user_server_configs")
|
|
8
|
+
.delete()
|
|
9
|
+
.eq("user_uuid", user_uuid);
|
|
10
|
+
if (error) {
|
|
11
|
+
throw error;
|
|
12
|
+
}
|
|
13
|
+
}
|
|
14
|
+
|
|
15
|
+
async deleteConfigForUser(
|
|
16
|
+
user_uuid: string,
|
|
17
|
+
server_name: string
|
|
18
|
+
): Promise<void> {
|
|
19
|
+
const { error } = await this.client
|
|
20
|
+
.from("user_server_configs")
|
|
21
|
+
.delete()
|
|
22
|
+
.eq("user_uuid", user_uuid)
|
|
23
|
+
.eq("server_name", server_name);
|
|
24
|
+
if (error) {
|
|
25
|
+
throw error;
|
|
26
|
+
}
|
|
27
|
+
}
|
|
28
|
+
|
|
29
|
+
async getConfigForUser(
|
|
30
|
+
user_uuid: string,
|
|
31
|
+
server_name: string
|
|
32
|
+
): Promise<McpServerConfiguration | undefined> {
|
|
33
|
+
const { error, data } = await this.client
|
|
34
|
+
.from("user_server_configs")
|
|
35
|
+
.select("config")
|
|
36
|
+
.eq("user_uuid", user_uuid)
|
|
37
|
+
.eq("server_name", server_name)
|
|
38
|
+
.maybeSingle();
|
|
39
|
+
if (error) {
|
|
40
|
+
throw error;
|
|
41
|
+
}
|
|
42
|
+
|
|
43
|
+
return data ? (data.config as McpServerConfiguration) : undefined;
|
|
44
|
+
}
|
|
45
|
+
|
|
46
|
+
async setConfigForUser(
|
|
47
|
+
user_uuid: string,
|
|
48
|
+
server_name: string,
|
|
49
|
+
config: McpServerConfiguration
|
|
50
|
+
): Promise<void> {
|
|
51
|
+
const payload = { user_uuid, server_name, config };
|
|
52
|
+
const { error } = await this.client
|
|
53
|
+
.from("user_server_configs")
|
|
54
|
+
.upsert([payload], { onConflict: "user_uuid,server_name" });
|
|
55
|
+
if (error) {
|
|
56
|
+
throw error;
|
|
57
|
+
}
|
|
58
|
+
}
|
|
59
|
+
}
|
|
@@ -0,0 +1,49 @@
|
|
|
1
|
+
//
|
|
2
|
+
// Connection-level Client Messages
|
|
3
|
+
//
|
|
4
|
+
|
|
5
|
+
export type ClientConnectionData<T> = {
|
|
6
|
+
t: "data";
|
|
7
|
+
d: T;
|
|
8
|
+
};
|
|
9
|
+
|
|
10
|
+
export type ClientConnectionPong = {
|
|
11
|
+
t: "pong";
|
|
12
|
+
};
|
|
13
|
+
|
|
14
|
+
export type ClientConnectionMessage<T> =
|
|
15
|
+
| ClientConnectionData<T> // TODO: generic
|
|
16
|
+
| ClientConnectionPong;
|
|
17
|
+
|
|
18
|
+
//
|
|
19
|
+
// Connection-Level Server Messages (Transport)
|
|
20
|
+
//
|
|
21
|
+
|
|
22
|
+
/**
|
|
23
|
+
* Response to connection init
|
|
24
|
+
*/
|
|
25
|
+
export type ServerConnectionReady = {
|
|
26
|
+
t: "ready";
|
|
27
|
+
c_id: string; // TODO: remove
|
|
28
|
+
user_uuid: string;
|
|
29
|
+
};
|
|
30
|
+
|
|
31
|
+
export type ServerConnectionError = {
|
|
32
|
+
t: "error";
|
|
33
|
+
e: string;
|
|
34
|
+
};
|
|
35
|
+
|
|
36
|
+
export type ServerConnectionPing = {
|
|
37
|
+
t: "ping";
|
|
38
|
+
};
|
|
39
|
+
|
|
40
|
+
export type ServerConnectionData<T> = {
|
|
41
|
+
t: "data";
|
|
42
|
+
d: T;
|
|
43
|
+
};
|
|
44
|
+
|
|
45
|
+
export type ServerConnectionMessage<T> =
|
|
46
|
+
| ServerConnectionReady
|
|
47
|
+
| ServerConnectionError
|
|
48
|
+
| ServerConnectionPing
|
|
49
|
+
| ServerConnectionData<T>;
|
|
@@ -0,0 +1,55 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Protocol constants for the multi-session chat system
|
|
3
|
+
*/
|
|
4
|
+
|
|
5
|
+
/**
|
|
6
|
+
* Current version of the agent package
|
|
7
|
+
*/
|
|
8
|
+
export const AGENT_VERSION = "0.5.9";
|
|
9
|
+
|
|
10
|
+
/**
|
|
11
|
+
* Protocol version for WebSocket communication
|
|
12
|
+
*/
|
|
13
|
+
export const PROTOCOL_VERSION = AGENT_VERSION;
|
|
14
|
+
|
|
15
|
+
/**
|
|
16
|
+
* Client version sent in connection handshake
|
|
17
|
+
*/
|
|
18
|
+
export const CLIENT_VERSION = AGENT_VERSION;
|
|
19
|
+
|
|
20
|
+
/**
|
|
21
|
+
* Server version sent in connection handshake responses
|
|
22
|
+
*/
|
|
23
|
+
export const SERVER_VERSION = AGENT_VERSION;
|
|
24
|
+
|
|
25
|
+
/**
|
|
26
|
+
* Default message queue limits
|
|
27
|
+
*/
|
|
28
|
+
export const DEFAULT_MESSAGE_QUEUE_SIZE = 100;
|
|
29
|
+
export const DEFAULT_USER_MESSAGE_QUEUE_SIZE = 10;
|
|
30
|
+
|
|
31
|
+
/**
|
|
32
|
+
* Connection timeouts (in milliseconds)
|
|
33
|
+
*/
|
|
34
|
+
export const CONNECTION_READY_TIMEOUT = 2000; // 2 seconds
|
|
35
|
+
export const MESSAGE_PROCESSING_TIMEOUT = 10000; // 10 seconds
|
|
36
|
+
|
|
37
|
+
/**
|
|
38
|
+
* WebSocket close codes used by the chat system
|
|
39
|
+
* see: https://datatracker.ietf.org/doc/html/rfc6455#section-7.4.1
|
|
40
|
+
*/
|
|
41
|
+
export const CHAT_CLOSE_CODES = {
|
|
42
|
+
NORMAL_CLOSURE: 1000,
|
|
43
|
+
GOING_AWAY: 1001,
|
|
44
|
+
PROTOCOL_ERROR: 1002,
|
|
45
|
+
INVALID_DATA: 1007,
|
|
46
|
+
// 4000-4999: application-defined error codes
|
|
47
|
+
AUTH_FAILED: 4003,
|
|
48
|
+
SESSION_ERROR: 4402,
|
|
49
|
+
RATE_LIMITED: 4403,
|
|
50
|
+
} as const;
|
|
51
|
+
|
|
52
|
+
/**
|
|
53
|
+
* Maximum message size in bytes
|
|
54
|
+
*/
|
|
55
|
+
export const MAX_MESSAGE_SIZE = 64 * 1024; // 64KB
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* An error resulting the the connection being closed
|
|
3
|
+
*/
|
|
4
|
+
export class ChatFatalError extends Error {}
|
|
5
|
+
|
|
6
|
+
/**
|
|
7
|
+
* An error to be reported, but not resulting in termination of the
|
|
8
|
+
* connection.
|
|
9
|
+
*/
|
|
10
|
+
export class ChatErrorMessage extends Error {}
|
|
11
|
+
|
|
12
|
+
export class UserAlreadyConnected extends ChatFatalError {
|
|
13
|
+
constructor() {
|
|
14
|
+
super("User already connected to the conversation");
|
|
15
|
+
}
|
|
16
|
+
}
|