@xalia/agent 0.6.3 → 0.6.5
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/agent/src/agent/agent.js +12 -11
- package/dist/agent/src/agent/dummyLLM.js +24 -15
- package/dist/agent/src/agent/llm.js +0 -22
- package/dist/agent/src/agent/mcpServerManager.js +73 -15
- package/dist/agent/src/agent/openAI.js +32 -0
- package/dist/agent/src/agent/openAILLM.js +25 -1
- package/dist/agent/src/agent/openAILLMStreaming.js +8 -3
- package/dist/agent/src/agent/sudoMcpServerManager.js +22 -9
- package/dist/agent/src/chat/client/chatClient.js +2 -1
- package/dist/agent/src/chat/client/sessionClient.js +28 -3
- package/dist/agent/src/chat/data/dbSessionFileModels.js +10 -0
- package/dist/agent/src/chat/protocol/messages.js +1 -0
- package/dist/agent/src/chat/server/chatContextManager.js +4 -4
- package/dist/agent/src/chat/server/conversation.js +1 -1
- package/dist/agent/src/chat/server/imageGeneratorTools.js +7 -4
- package/dist/agent/src/chat/server/openSession.js +85 -12
- package/dist/agent/src/chat/server/sessionFileManager.js +17 -6
- package/dist/agent/src/chat/server/sessionRegistry.js +1 -1
- package/dist/agent/src/chat/server/tools.js +58 -10
- package/dist/agent/src/test/agent.test.js +26 -2
- package/dist/agent/src/test/chatContextManager.test.js +5 -5
- package/dist/agent/src/test/mcpServerManager.test.js +5 -1
- package/dist/agent/src/test/testTools.js +5 -2
- package/dist/agent/src/tool/chatMain.js +23 -3
- package/dist/agent/src/tool/files.js +0 -27
- package/package.json +3 -3
- package/scripts/test_chat +3 -1
- package/src/agent/agent.ts +53 -47
- package/src/agent/agentUtils.ts +7 -7
- package/src/agent/compressingContextManager.ts +4 -9
- package/src/agent/context.ts +28 -37
- package/src/agent/dummyLLM.ts +38 -28
- package/src/agent/iAgentEventHandler.ts +6 -9
- package/src/agent/imageGenLLM.ts +11 -5
- package/src/agent/llm.ts +41 -106
- package/src/agent/mcpServerManager.ts +145 -29
- package/src/agent/openAI.ts +123 -0
- package/src/agent/openAILLM.ts +52 -5
- package/src/agent/openAILLMStreaming.ts +36 -32
- package/src/agent/repeatLLM.ts +5 -6
- package/src/agent/sudoMcpServerManager.ts +48 -16
- package/src/agent/tools.ts +3 -5
- package/src/chat/client/chatClient.ts +3 -1
- package/src/chat/client/sessionClient.ts +47 -7
- package/src/chat/data/dataModels.ts +3 -3
- package/src/chat/data/dbSessionFileModels.ts +22 -0
- package/src/chat/protocol/messages.ts +39 -13
- package/src/chat/server/chatContextManager.ts +20 -24
- package/src/chat/server/conversation.ts +10 -10
- package/src/chat/server/imageGeneratorTools.ts +18 -9
- package/src/chat/server/openSession.ts +111 -22
- package/src/chat/server/sessionFileManager.ts +33 -10
- package/src/chat/server/sessionRegistry.ts +1 -1
- package/src/chat/server/tools.ts +77 -18
- package/src/chat/utils/approvalManager.ts +2 -2
- package/src/test/agent.test.ts +56 -31
- package/src/test/approvalManager.test.ts +2 -2
- package/src/test/chatContextManager.test.ts +11 -14
- package/src/test/compressingContextManager.test.ts +3 -3
- package/src/test/context.test.ts +3 -3
- package/src/test/conversation.test.ts +7 -7
- package/src/test/dbSessionMessages.test.ts +3 -3
- package/src/test/mcpServerManager.test.ts +10 -1
- package/src/test/testTools.ts +44 -33
- package/src/tool/agentChat.ts +10 -8
- package/src/tool/agentMain.ts +2 -2
- package/src/tool/chatMain.ts +38 -6
- package/src/tool/commandPrompt.ts +2 -4
- package/src/tool/files.ts +0 -34
- package/test_data/dummyllm_script_image_gen.json +27 -17
- package/test_data/dummyllm_script_invoke_image_gen_tool.json +9 -2
- package/test_data/dummyllm_script_render_tool.json +29 -0
- package/test_data/dummyllm_script_test_auto_approve.json +81 -0
- package/test_data/dummyllm_script_test_simplecalc_addition.json +29 -0
package/src/tool/agentMain.ts
CHANGED
|
@@ -25,7 +25,7 @@ import {
|
|
|
25
25
|
} from "./files";
|
|
26
26
|
import { DEFAULT_AGENT_LLM_MODEL, runChat } from "./agentChat";
|
|
27
27
|
import { NODE_PLATFORM } from "./nodePlatform";
|
|
28
|
-
import {
|
|
28
|
+
import { MessageParam } from "../agent/llm";
|
|
29
29
|
|
|
30
30
|
dotenv.config();
|
|
31
31
|
|
|
@@ -128,7 +128,7 @@ export const agentMain = command({
|
|
|
128
128
|
|
|
129
129
|
// Restore conversation from value or file.
|
|
130
130
|
|
|
131
|
-
const startingConversation:
|
|
131
|
+
const startingConversation: MessageParam[] | undefined =
|
|
132
132
|
utils.loadContentOrFileOrUndefined(conversationFile);
|
|
133
133
|
logger.debug(
|
|
134
134
|
`startingConversation: ${JSON.stringify(startingConversation)}`
|
package/src/tool/chatMain.ts
CHANGED
|
@@ -29,6 +29,7 @@ import * as options from "./options";
|
|
|
29
29
|
import { CommandPrompt } from "./commandPrompt";
|
|
30
30
|
import { NODE_PLATFORM } from "./nodePlatform";
|
|
31
31
|
import { loadImageAsDataUrl, loadSessionFileAsDataUrl } from "./files";
|
|
32
|
+
import { isFileMetaData } from "../chat/data/dbSessionFileModels";
|
|
32
33
|
|
|
33
34
|
const logger = getLogger();
|
|
34
35
|
|
|
@@ -223,6 +224,8 @@ const client = command({
|
|
|
223
224
|
${chalk.yellow("/get-file <name>")} Get file contents
|
|
224
225
|
${chalk.yellow("/share-session <file>")} Share and write access token
|
|
225
226
|
${chalk.yellow("/pause-agent <0|1>")} Pause (or unpause) the agent
|
|
227
|
+
${chalk.yellow("/add-mcp-server-url <server-name> <url>")} Add MCP server
|
|
228
|
+
${chalk.yellow("/get-resource <server-name> <uri>")} get MCP server resource
|
|
226
229
|
`;
|
|
227
230
|
|
|
228
231
|
const cmdPrompt = new CommandPrompt(repl, helpText);
|
|
@@ -299,6 +302,12 @@ const client = command({
|
|
|
299
302
|
case "pause-agent":
|
|
300
303
|
pauseAgent(sessionClient, cmds[1]);
|
|
301
304
|
break;
|
|
305
|
+
case "add-mcp-server-url":
|
|
306
|
+
addMcpServerFromUrl(sessionClient, cmds[1], cmds[2]);
|
|
307
|
+
break;
|
|
308
|
+
case "get-resource":
|
|
309
|
+
await getResource(sessionClient, cmds[1], cmds[2]);
|
|
310
|
+
break;
|
|
302
311
|
default:
|
|
303
312
|
console.log(`error: Unknown command ${cmds[0]}`);
|
|
304
313
|
}
|
|
@@ -383,6 +392,25 @@ function pauseAgent(sessionClient: SessionClient, pause: string) {
|
|
|
383
392
|
sessionClient.setAgentPaused(!!parseInt(pause));
|
|
384
393
|
}
|
|
385
394
|
|
|
395
|
+
function addMcpServerFromUrl(
|
|
396
|
+
sessionClient: SessionClient,
|
|
397
|
+
name: string,
|
|
398
|
+
url: string
|
|
399
|
+
) {
|
|
400
|
+
sessionClient.addMcpServerFromUrl(name, url);
|
|
401
|
+
}
|
|
402
|
+
|
|
403
|
+
async function getResource(
|
|
404
|
+
sessionClient: SessionClient,
|
|
405
|
+
serverName: string,
|
|
406
|
+
resourceUrl: string
|
|
407
|
+
) {
|
|
408
|
+
const contents = await sessionClient.getMcpResource(serverName, resourceUrl);
|
|
409
|
+
console.log(
|
|
410
|
+
`resource: (${serverName}) ${resourceUrl}: ${JSON.stringify(contents)}`
|
|
411
|
+
);
|
|
412
|
+
}
|
|
413
|
+
|
|
386
414
|
function setWorkspaceFromPrompt(
|
|
387
415
|
sessionClient: SessionClient,
|
|
388
416
|
cmds: string[]
|
|
@@ -491,11 +519,11 @@ function getCLIEventHandler(
|
|
|
491
519
|
break;
|
|
492
520
|
case "tool_call_result":
|
|
493
521
|
{
|
|
494
|
-
|
|
495
|
-
|
|
496
|
-
|
|
497
|
-
|
|
498
|
-
);
|
|
522
|
+
console.log(`tool call result: ${JSON.stringify(msg.result)}`);
|
|
523
|
+
|
|
524
|
+
const metadata = msg.result._meta;
|
|
525
|
+
if (isFileMetaData(metadata)) {
|
|
526
|
+
console.log(`filemanager file: ${JSON.stringify(metadata)}`);
|
|
499
527
|
|
|
500
528
|
// SessionFiles should already hold the file information.
|
|
501
529
|
|
|
@@ -521,7 +549,11 @@ function getCLIEventHandler(
|
|
|
521
549
|
msg.display_name
|
|
522
550
|
);
|
|
523
551
|
break;
|
|
524
|
-
|
|
552
|
+
case "session_error":
|
|
553
|
+
stdout.write(
|
|
554
|
+
chalk.red(`session_error(${msg.session_id}): ${msg.message}`)
|
|
555
|
+
);
|
|
556
|
+
break;
|
|
525
557
|
default:
|
|
526
558
|
stdout.write(`(unrecognised) ${JSON.stringify(msg.type)}\n`);
|
|
527
559
|
break;
|
|
@@ -1,6 +1,5 @@
|
|
|
1
1
|
import * as fs from "fs";
|
|
2
2
|
import chalk from "chalk";
|
|
3
|
-
import OpenAI from "openai";
|
|
4
3
|
|
|
5
4
|
import { InvalidConfiguration } from "@xalia/xmcp/sdk";
|
|
6
5
|
|
|
@@ -10,6 +9,7 @@ import { ISkillManager } from "../agent/sudoMcpServerManager";
|
|
|
10
9
|
import { IMcpServerManager } from "../agent/mcpServerManager";
|
|
11
10
|
|
|
12
11
|
import { IPrompt } from "./prompt";
|
|
12
|
+
import { MessageToolCall } from "../agent/llm";
|
|
13
13
|
|
|
14
14
|
type OnUnknownCommand = (cmds: string[]) => Promise<void>;
|
|
15
15
|
|
|
@@ -215,9 +215,7 @@ Have you installed server ${serverName} using the SudoMCP CLI tool?`);
|
|
|
215
215
|
console.log(`AgentProfile written to ${fileName}`);
|
|
216
216
|
}
|
|
217
217
|
|
|
218
|
-
async promptToolCall(
|
|
219
|
-
toolCall: OpenAI.ChatCompletionMessageToolCall
|
|
220
|
-
): Promise<boolean> {
|
|
218
|
+
async promptToolCall(toolCall: MessageToolCall): Promise<boolean> {
|
|
221
219
|
displayToolCall(toolCall);
|
|
222
220
|
const response = await this.prompt.run("Approve tool call? (Y/n) ");
|
|
223
221
|
return (
|
package/src/tool/files.ts
CHANGED
|
@@ -1,6 +1,5 @@
|
|
|
1
1
|
import * as fs from "fs";
|
|
2
2
|
import * as path from "path";
|
|
3
|
-
import { McpServerUrls } from "../agent/agent";
|
|
4
3
|
import {
|
|
5
4
|
EXTENSION_TO_SESSION_FILE_MIME_TYPE,
|
|
6
5
|
createSessionFileDataUrl,
|
|
@@ -83,36 +82,3 @@ export function loadImageAsDataUrlOrUndefined(
|
|
|
83
82
|
}
|
|
84
83
|
return undefined;
|
|
85
84
|
}
|
|
86
|
-
|
|
87
|
-
export function loadServerUrls(path: string): McpServerUrls {
|
|
88
|
-
try {
|
|
89
|
-
const file = fs.readFileSync(path, "utf-8");
|
|
90
|
-
const urls: unknown = JSON.parse(file);
|
|
91
|
-
|
|
92
|
-
// Validate the structure
|
|
93
|
-
if (typeof urls !== "object" || urls === null) {
|
|
94
|
-
throw new Error("Invalid server URLs format: must be an object");
|
|
95
|
-
}
|
|
96
|
-
|
|
97
|
-
// Validate each URL is a string
|
|
98
|
-
for (const [key, value] of Object.entries(
|
|
99
|
-
urls as Record<string, unknown>
|
|
100
|
-
)) {
|
|
101
|
-
if (typeof value !== "string") {
|
|
102
|
-
throw new Error(
|
|
103
|
-
`Invalid URL format for server ${key}: must be a string`
|
|
104
|
-
);
|
|
105
|
-
}
|
|
106
|
-
}
|
|
107
|
-
|
|
108
|
-
return urls as McpServerUrls;
|
|
109
|
-
} catch (error) {
|
|
110
|
-
if (error instanceof SyntaxError) {
|
|
111
|
-
throw new Error(`Invalid JSON in server URLs file: ${error.message}`);
|
|
112
|
-
}
|
|
113
|
-
if (error instanceof Error) {
|
|
114
|
-
throw new Error(`Failed to load server URLs: ${error.message}`);
|
|
115
|
-
}
|
|
116
|
-
throw error;
|
|
117
|
-
}
|
|
118
|
-
}
|
|
@@ -1,19 +1,29 @@
|
|
|
1
1
|
[
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
"url":"data:image/png;base64,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"
|
|
13
|
-
|
|
14
|
-
"index":0
|
|
15
|
-
|
|
2
|
+
{
|
|
3
|
+
"notes": "Test for image generating Agents",
|
|
4
|
+
"index": 0,
|
|
5
|
+
"message": {
|
|
6
|
+
"role": "assistant",
|
|
7
|
+
"content": "I'll add a generated image to the session.",
|
|
8
|
+
"tool_calls": [
|
|
9
|
+
{
|
|
10
|
+
"id": "file_frog.png",
|
|
11
|
+
"type": "function",
|
|
12
|
+
"function": {
|
|
13
|
+
"name": "put_file_content",
|
|
14
|
+
"arguments": "{\"name\":\"frog.png\",\"summary\":\"Image of a frog\",\"data_url\":\"data:image/png;base64,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\"}"
|
|
15
|
+
}
|
|
16
|
+
}
|
|
17
|
+
]
|
|
18
|
+
},
|
|
19
|
+
"finish_reason": "tool_calls"
|
|
16
20
|
},
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
21
|
+
{
|
|
22
|
+
"index": 0,
|
|
23
|
+
"message": {
|
|
24
|
+
"role": "assistant",
|
|
25
|
+
"content": "I've added the image to the session."
|
|
26
|
+
},
|
|
27
|
+
"finish_reason": "stop"
|
|
28
|
+
}
|
|
29
|
+
]
|
|
@@ -13,6 +13,14 @@
|
|
|
13
13
|
"name": "gen_image_file",
|
|
14
14
|
"arguments": "{\"prompt\":\"A frog\",\"name\":\"frog.png\",\"summary\":\"A picture of a frog\"}"
|
|
15
15
|
}
|
|
16
|
+
},
|
|
17
|
+
{
|
|
18
|
+
"id": "toolu_017umizET2MjAC2ir5t4iiVS",
|
|
19
|
+
"type": "function",
|
|
20
|
+
"function": {
|
|
21
|
+
"name": "test_tool",
|
|
22
|
+
"arguments": ""
|
|
23
|
+
}
|
|
16
24
|
}
|
|
17
25
|
]
|
|
18
26
|
},
|
|
@@ -22,8 +30,7 @@
|
|
|
22
30
|
"index": 0,
|
|
23
31
|
"message": {
|
|
24
32
|
"role": "assistant",
|
|
25
|
-
"content": "file+session:/./frog.png"
|
|
26
|
-
"metadata": { "type": "image/png" }
|
|
33
|
+
"content": "file+session:/./frog.png"
|
|
27
34
|
},
|
|
28
35
|
"finish_reason": "stop"
|
|
29
36
|
}
|
|
@@ -0,0 +1,29 @@
|
|
|
1
|
+
[
|
|
2
|
+
{
|
|
3
|
+
"notes": "Test script for render tool",
|
|
4
|
+
"index": 0,
|
|
5
|
+
"message": {
|
|
6
|
+
"role": "assistant",
|
|
7
|
+
"content": "I'll render a visualization.",
|
|
8
|
+
"tool_calls": [
|
|
9
|
+
{
|
|
10
|
+
"id": "toolu_render_001",
|
|
11
|
+
"type": "function",
|
|
12
|
+
"function": {
|
|
13
|
+
"name": "render",
|
|
14
|
+
"arguments": "{\"name\":\"diagram.html\",\"summary\":\"Simple rendered content\",\"html\":\"<div style=\\\"text-align:center\\\"><h2>Rendered Diagram</h2><p>This content was generated via the render tool.</p><div class=\\\"mermaid\\\">graph TD; A-->B; B-->C;</div></div>\"}"
|
|
15
|
+
}
|
|
16
|
+
}
|
|
17
|
+
]
|
|
18
|
+
},
|
|
19
|
+
"finish_reason": "tool_calls"
|
|
20
|
+
},
|
|
21
|
+
{
|
|
22
|
+
"index": 0,
|
|
23
|
+
"message": {
|
|
24
|
+
"role": "assistant",
|
|
25
|
+
"content": "I've rendered the visualization."
|
|
26
|
+
},
|
|
27
|
+
"finish_reason": "stop"
|
|
28
|
+
}
|
|
29
|
+
]
|
|
@@ -0,0 +1,81 @@
|
|
|
1
|
+
[
|
|
2
|
+
{
|
|
3
|
+
"index": 0,
|
|
4
|
+
"message": {
|
|
5
|
+
"role": "assistant",
|
|
6
|
+
"content": "I'll calculate 5 + 3 using the SimpleCalc addition tool.",
|
|
7
|
+
"tool_calls": [
|
|
8
|
+
{
|
|
9
|
+
"id": "toolu_auto_approve_add_001",
|
|
10
|
+
"type": "function",
|
|
11
|
+
"function": {
|
|
12
|
+
"name": "sudomcp_simplecalc__add",
|
|
13
|
+
"arguments": "{\"a\": 5, \"b\": 3}"
|
|
14
|
+
}
|
|
15
|
+
}
|
|
16
|
+
]
|
|
17
|
+
},
|
|
18
|
+
"finish_reason": "tool_calls"
|
|
19
|
+
},
|
|
20
|
+
{
|
|
21
|
+
"index": 0,
|
|
22
|
+
"message": {
|
|
23
|
+
"role": "assistant",
|
|
24
|
+
"content": "The result of 5 + 3 is 8."
|
|
25
|
+
},
|
|
26
|
+
"finish_reason": "stop"
|
|
27
|
+
},
|
|
28
|
+
{
|
|
29
|
+
"index": 0,
|
|
30
|
+
"message": {
|
|
31
|
+
"role": "assistant",
|
|
32
|
+
"content": "I'll calculate 4 * 6 using the SimpleCalc multiply tool.",
|
|
33
|
+
"tool_calls": [
|
|
34
|
+
{
|
|
35
|
+
"id": "toolu_auto_approve_multiply_001",
|
|
36
|
+
"type": "function",
|
|
37
|
+
"function": {
|
|
38
|
+
"name": "sudomcp_simplecalc__multiply",
|
|
39
|
+
"arguments": "{\"a\": 4, \"b\": 6}"
|
|
40
|
+
}
|
|
41
|
+
}
|
|
42
|
+
]
|
|
43
|
+
},
|
|
44
|
+
"finish_reason": "tool_calls"
|
|
45
|
+
},
|
|
46
|
+
{
|
|
47
|
+
"index": 0,
|
|
48
|
+
"message": {
|
|
49
|
+
"role": "assistant",
|
|
50
|
+
"content": "The result of 4 * 6 is 24."
|
|
51
|
+
},
|
|
52
|
+
"finish_reason": "stop"
|
|
53
|
+
},
|
|
54
|
+
{
|
|
55
|
+
"index": 0,
|
|
56
|
+
"message": {
|
|
57
|
+
"role": "assistant",
|
|
58
|
+
"content": "I'll calculate 7 * 8 using the SimpleCalc multiply tool.",
|
|
59
|
+
"tool_calls": [
|
|
60
|
+
{
|
|
61
|
+
"id": "toolu_auto_approve_multiply_002",
|
|
62
|
+
"type": "function",
|
|
63
|
+
"function": {
|
|
64
|
+
"name": "sudomcp_simplecalc__multiply",
|
|
65
|
+
"arguments": "{\"a\": 7, \"b\": 8}"
|
|
66
|
+
}
|
|
67
|
+
}
|
|
68
|
+
]
|
|
69
|
+
},
|
|
70
|
+
"finish_reason": "tool_calls"
|
|
71
|
+
},
|
|
72
|
+
{
|
|
73
|
+
"index": 0,
|
|
74
|
+
"message": {
|
|
75
|
+
"role": "assistant",
|
|
76
|
+
"content": "The result of 7 * 8 is 56."
|
|
77
|
+
},
|
|
78
|
+
"finish_reason": "stop"
|
|
79
|
+
}
|
|
80
|
+
]
|
|
81
|
+
|
|
@@ -0,0 +1,29 @@
|
|
|
1
|
+
[
|
|
2
|
+
{
|
|
3
|
+
"index": 0,
|
|
4
|
+
"message": {
|
|
5
|
+
"role": "assistant",
|
|
6
|
+
"content": "I'll test the SimpleCalc addition tool by adding two numbers together.",
|
|
7
|
+
"tool_calls": [
|
|
8
|
+
{
|
|
9
|
+
"id": "toolu_test_addition_001",
|
|
10
|
+
"type": "function",
|
|
11
|
+
"function": {
|
|
12
|
+
"name": "sudomcp_simplecalc__add",
|
|
13
|
+
"arguments": "{\"a\": 5, \"b\": 3}"
|
|
14
|
+
}
|
|
15
|
+
}
|
|
16
|
+
]
|
|
17
|
+
},
|
|
18
|
+
"finish_reason": "tool_calls"
|
|
19
|
+
},
|
|
20
|
+
{
|
|
21
|
+
"index": 0,
|
|
22
|
+
"message": {
|
|
23
|
+
"role": "assistant",
|
|
24
|
+
"content": "The SimpleCalc addition tool is working correctly. I used it to add 5 + 3, which equals 8."
|
|
25
|
+
},
|
|
26
|
+
"finish_reason": "stop"
|
|
27
|
+
}
|
|
28
|
+
]
|
|
29
|
+
|