@xalia/agent 0.6.8 → 0.6.10

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.
Files changed (152) hide show
  1. package/.env.development +6 -0
  2. package/.env.test +7 -0
  3. package/README.md +11 -0
  4. package/context_system.md +498 -0
  5. package/dist/agent/src/agent/agent.js +169 -87
  6. package/dist/agent/src/agent/agentUtils.js +24 -18
  7. package/dist/agent/src/agent/compressingContextManager.js +10 -14
  8. package/dist/agent/src/agent/context.js +101 -127
  9. package/dist/agent/src/agent/contextWithWorkspace.js +133 -0
  10. package/dist/agent/src/agent/documentSummarizer.js +126 -0
  11. package/dist/agent/src/agent/dummyLLM.js +25 -22
  12. package/dist/agent/src/agent/imageGenLLM.js +22 -25
  13. package/dist/agent/src/agent/imageGenerator.js +2 -10
  14. package/dist/agent/src/agent/llm.js +1 -1
  15. package/dist/agent/src/agent/openAILLM.js +15 -12
  16. package/dist/agent/src/agent/openAILLMStreaming.js +73 -39
  17. package/dist/agent/src/agent/repeatLLM.js +16 -7
  18. package/dist/agent/src/agent/sudoMcpServerManager.js +21 -9
  19. package/dist/agent/src/agent/tokenCounter.js +390 -0
  20. package/dist/agent/src/agent/tokenCounter.test.js +206 -0
  21. package/dist/agent/src/agent/toolSettings.js +17 -0
  22. package/dist/agent/src/agent/tools/calculatorTool.js +45 -0
  23. package/dist/agent/src/agent/tools/contentExtractors/pdfToText.js +55 -0
  24. package/dist/agent/src/agent/tools/datetimeTool.js +38 -0
  25. package/dist/agent/src/agent/tools/fileManager/fileManagerTool.js +156 -0
  26. package/dist/agent/src/agent/tools/fileManager/index.js +31 -0
  27. package/dist/agent/src/agent/tools/fileManager/memoryFileManager.js +102 -0
  28. package/dist/agent/src/{chat/data → agent/tools/fileManager}/mimeTypes.js +3 -1
  29. package/dist/agent/src/agent/tools/fileManager/prompt.js +33 -0
  30. package/dist/agent/src/{chat/data/dbSessionFileModels.js → agent/tools/fileManager/types.js} +7 -0
  31. package/dist/agent/src/agent/tools/index.js +64 -0
  32. package/dist/agent/src/agent/tools/openUrlTool.js +57 -0
  33. package/dist/agent/src/agent/tools/renderTool.js +89 -0
  34. package/dist/agent/src/agent/tools/utils.js +61 -0
  35. package/dist/agent/src/{chat/utils/search.js → agent/tools/webSearch.js} +1 -2
  36. package/dist/agent/src/agent/tools/webSearchTool.js +40 -0
  37. package/dist/agent/src/chat/client/chatClient.js +63 -2
  38. package/dist/agent/src/chat/client/connection.js +6 -1
  39. package/dist/agent/src/chat/client/index.js +4 -1
  40. package/dist/agent/src/chat/client/sessionClient.js +28 -9
  41. package/dist/agent/src/chat/constants.js +8 -0
  42. package/dist/agent/src/chat/data/dbSessionFiles.js +11 -6
  43. package/dist/agent/src/chat/data/dbSessionMessages.js +11 -0
  44. package/dist/agent/src/chat/protocol/messages.js +9 -0
  45. package/dist/agent/src/chat/server/chatContextManager.js +186 -156
  46. package/dist/agent/src/chat/server/conversation.js +3 -0
  47. package/dist/agent/src/chat/server/imageGeneratorTools.js +39 -16
  48. package/dist/agent/src/chat/server/openAIRouterLLM.js +111 -0
  49. package/dist/agent/src/chat/server/openSession.js +253 -91
  50. package/dist/agent/src/chat/server/promptRefiner.js +86 -0
  51. package/dist/agent/src/chat/server/server.js +10 -2
  52. package/dist/agent/src/chat/server/sessionFileManager.js +22 -221
  53. package/dist/agent/src/chat/server/sessionRegistry.js +152 -6
  54. package/dist/agent/src/chat/server/sessionRegistry.test.js +1 -1
  55. package/dist/agent/src/chat/server/titleGenerator.js +112 -0
  56. package/dist/agent/src/chat/server/titleGenerator.test.js +113 -0
  57. package/dist/agent/src/chat/server/tools.js +64 -253
  58. package/dist/agent/src/chat/utils/approvalManager.js +6 -3
  59. package/dist/agent/src/chat/utils/multiAsyncQueue.js +3 -0
  60. package/dist/agent/src/test/agent.test.js +16 -17
  61. package/dist/agent/src/test/chatContextManager.test.js +44 -30
  62. package/dist/agent/src/test/clientServerConnection.test.js +1 -2
  63. package/dist/agent/src/test/compressingContextManager.test.js +22 -36
  64. package/dist/agent/src/test/context.test.js +55 -17
  65. package/dist/agent/src/test/contextTestTools.js +87 -0
  66. package/dist/agent/src/test/dbMcpServerConfigs.test.js +4 -4
  67. package/dist/agent/src/test/dbSessionFiles.test.js +17 -17
  68. package/dist/agent/src/test/testTools.js +6 -1
  69. package/dist/agent/src/test/tools.test.js +27 -9
  70. package/dist/agent/src/tool/agentChat.js +5 -2
  71. package/dist/agent/src/tool/chatMain.js +56 -15
  72. package/dist/agent/src/tool/commandPrompt.js +2 -2
  73. package/dist/agent/src/tool/files.js +7 -8
  74. package/package.json +4 -1
  75. package/scripts/test_chat +195 -173
  76. package/src/agent/agent.ts +257 -137
  77. package/src/agent/agentUtils.ts +32 -20
  78. package/src/agent/compressingContextManager.ts +13 -44
  79. package/src/agent/context.ts +165 -159
  80. package/src/agent/contextWithWorkspace.ts +162 -0
  81. package/src/agent/documentSummarizer.ts +157 -0
  82. package/src/agent/dummyLLM.ts +27 -23
  83. package/src/agent/imageGenLLM.ts +28 -32
  84. package/src/agent/imageGenerator.ts +3 -18
  85. package/src/agent/llm.ts +2 -2
  86. package/src/agent/openAILLM.ts +17 -13
  87. package/src/agent/openAILLMStreaming.ts +99 -43
  88. package/src/agent/repeatLLM.ts +19 -7
  89. package/src/agent/sudoMcpServerManager.ts +41 -20
  90. package/src/agent/test_data/harrypotter.txt +6065 -0
  91. package/src/agent/tokenCounter.test.ts +243 -0
  92. package/src/agent/tokenCounter.ts +483 -0
  93. package/src/agent/toolSettings.ts +24 -0
  94. package/src/agent/tools/calculatorTool.ts +50 -0
  95. package/src/agent/tools/contentExtractors/pdfToText.ts +60 -0
  96. package/src/agent/tools/datetimeTool.ts +41 -0
  97. package/src/agent/tools/fileManager/fileManagerTool.ts +199 -0
  98. package/src/agent/tools/fileManager/index.ts +50 -0
  99. package/src/agent/tools/fileManager/memoryFileManager.ts +120 -0
  100. package/src/{chat/data → agent/tools/fileManager}/mimeTypes.ts +3 -1
  101. package/src/agent/tools/fileManager/prompt.ts +38 -0
  102. package/src/{chat/data/dbSessionFileModels.ts → agent/tools/fileManager/types.ts} +76 -0
  103. package/src/agent/tools/index.ts +49 -0
  104. package/src/agent/tools/openUrlTool.ts +62 -0
  105. package/src/agent/tools/renderTool.ts +92 -0
  106. package/src/agent/tools/utils.ts +74 -0
  107. package/src/{chat/utils/search.ts → agent/tools/webSearch.ts} +0 -1
  108. package/src/agent/tools/webSearchTool.ts +44 -0
  109. package/src/chat/client/chatClient.ts +92 -3
  110. package/src/chat/client/connection.ts +11 -1
  111. package/src/chat/client/index.ts +3 -0
  112. package/src/chat/client/sessionClient.ts +40 -11
  113. package/src/chat/client/sessionFiles.ts +1 -1
  114. package/src/chat/constants.ts +6 -0
  115. package/src/chat/data/dataModels.ts +12 -0
  116. package/src/chat/data/dbSessionFiles.ts +12 -4
  117. package/src/chat/data/dbSessionMessages.ts +34 -0
  118. package/src/chat/protocol/messages.ts +94 -14
  119. package/src/chat/server/chatContextManager.ts +255 -221
  120. package/src/chat/server/connectionManager.ts +1 -1
  121. package/src/chat/server/conversation.ts +3 -0
  122. package/src/chat/server/imageGeneratorTools.ts +62 -30
  123. package/src/chat/server/openAIRouterLLM.ts +168 -0
  124. package/src/chat/server/openSession.ts +381 -138
  125. package/src/chat/server/promptRefiner.ts +106 -0
  126. package/src/chat/server/server.ts +9 -2
  127. package/src/chat/server/sessionFileManager.ts +35 -306
  128. package/src/chat/server/sessionRegistry.test.ts +0 -1
  129. package/src/chat/server/sessionRegistry.ts +228 -4
  130. package/src/chat/server/titleGenerator.test.ts +103 -0
  131. package/src/chat/server/titleGenerator.ts +143 -0
  132. package/src/chat/server/tools.ts +92 -281
  133. package/src/chat/utils/approvalManager.ts +9 -3
  134. package/src/chat/utils/multiAsyncQueue.ts +4 -0
  135. package/src/test/agent.test.ts +25 -30
  136. package/src/test/chatContextManager.test.ts +68 -38
  137. package/src/test/clientServerConnection.test.ts +0 -2
  138. package/src/test/compressingContextManager.test.ts +29 -34
  139. package/src/test/context.test.ts +59 -15
  140. package/src/test/contextTestTools.ts +95 -0
  141. package/src/test/dbMcpServerConfigs.test.ts +4 -4
  142. package/src/test/dbSessionFiles.test.ts +16 -16
  143. package/src/test/testTools.ts +8 -3
  144. package/src/test/tools.test.ts +30 -5
  145. package/src/tool/agentChat.ts +12 -3
  146. package/src/tool/chatMain.ts +59 -18
  147. package/src/tool/commandPrompt.ts +2 -2
  148. package/src/tool/files.ts +1 -3
  149. package/dist/agent/src/agent/tools.js +0 -44
  150. package/src/agent/tools.ts +0 -57
  151. /package/dist/agent/src/{chat/utils → agent/tools/contentExtractors}/htmlToText.js +0 -0
  152. /package/src/{chat/utils → agent/tools/contentExtractors}/htmlToText.ts +0 -0
@@ -14,6 +14,7 @@ import {
14
14
  McpServer,
15
15
  } from "@xalia/xmcp/sdk";
16
16
  import { Client as McpClient } from "@modelcontextprotocol/sdk/client/index.js";
17
+ import { CustomMcpServerDescriptor } from "../chat/data/dataModels";
17
18
 
18
19
  const DEVELOPMENT: boolean = process.env.DEVELOPMENT === "1";
19
20
 
@@ -31,7 +32,7 @@ class SanitizedServerBrief extends McpServerBrief {
31
32
  readonly originalName: string;
32
33
 
33
34
  private constructor() {
34
- super("dummy", "dummy", "dummy", false, {}, "dummy", "dummy");
35
+ super("dummy", "dummy", "dummy", false, {}, "dummy", null, null, undefined);
35
36
  this.originalName = "dummy";
36
37
  }
37
38
 
@@ -79,7 +80,8 @@ export class SkillManager extends McpServerManager implements ISkillManager {
79
80
  displayName: string
80
81
  ) => void,
81
82
  // Redirect to this page after successful authorization
82
- private authorized_url: string | undefined
83
+ private authorized_url: string | undefined,
84
+ private customMcpServers: Record<string, CustomMcpServerDescriptor>
83
85
  ) {
84
86
  super();
85
87
  }
@@ -96,7 +98,8 @@ export class SkillManager extends McpServerManager implements ISkillManager {
96
98
  ) => void,
97
99
  sudoMcpUrl?: string,
98
100
  sudoMcpApiKey?: string,
99
- authorized_url?: string
101
+ authorized_url?: string,
102
+ customMcpServers?: Record<string, CustomMcpServerDescriptor>
100
103
  ): Promise<SkillManager> {
101
104
  // TODO: Keep it on here and pass to `McpServerManager.addMcpServer`
102
105
  const apiClient = new ApiClient(
@@ -106,31 +109,29 @@ export class SkillManager extends McpServerManager implements ISkillManager {
106
109
  // Fetch server list
107
110
  const servers = await apiClient.listServers();
108
111
 
112
+ customMcpServers = customMcpServers || {};
109
113
  if (DEVELOPMENT) {
110
- servers.push(
111
- new McpServerBrief(
112
- "local_dev",
113
- "Local Dev Server",
114
+ customMcpServers["local_dev"] = {
115
+ name: "local_dev",
116
+ description:
114
117
  "A local mcp server using streamable-HTTP for development use. " +
115
- `URL: ${DEV_MCP_SERVER_URL}`,
116
- false,
117
- {},
118
- "",
119
- null,
120
- null,
121
- DEV_MCP_SERVER_URL
122
- )
123
- );
118
+ `URL: ${DEV_MCP_SERVER_URL}`,
119
+ url: DEV_MCP_SERVER_URL,
120
+ };
124
121
  }
125
122
 
126
- const [mcpServers, mcpServersMap] = buildServersList(servers);
123
+ const [mcpServers, mcpServersMap] = buildServersList(
124
+ servers,
125
+ customMcpServers
126
+ );
127
127
  return new SkillManager(
128
128
  apiClient,
129
129
  mcpServers,
130
130
  mcpServersMap,
131
131
  new Map(),
132
132
  openUrl,
133
- authorized_url
133
+ authorized_url,
134
+ customMcpServers
134
135
  );
135
136
  }
136
137
 
@@ -188,7 +189,10 @@ export class SkillManager extends McpServerManager implements ISkillManager {
188
189
  */
189
190
  public async refresh(): Promise<void> {
190
191
  const servers = await this.apiClient.listServers();
191
- const [mcpServers, mcpServersMap] = buildServersList(servers);
192
+ const [mcpServers, mcpServersMap] = buildServersList(
193
+ servers,
194
+ this.customMcpServers
195
+ );
192
196
  this.serverBriefs = mcpServers;
193
197
  this.serverBriefsMap = mcpServersMap;
194
198
  this.toolCache = new Map();
@@ -321,7 +325,8 @@ async function connectServer(
321
325
  * holding the original name in a new field).
322
326
  */
323
327
  function buildServersList(
324
- serverList: McpServerBrief[]
328
+ serverList: McpServerBrief[],
329
+ customServers: Record<string, CustomMcpServerDescriptor>
325
330
  ): [SanitizedServerBrief[], { [serverName: string]: SanitizedServerBrief }] {
326
331
  const servers: SanitizedServerBrief[] = [];
327
332
  const serversMap: { [serverName: string]: SanitizedServerBrief } = {};
@@ -332,6 +337,22 @@ function buildServersList(
332
337
  serversMap[ss.name] = ss;
333
338
  }
334
339
 
340
+ for (const [name, desc] of Object.entries(customServers)) {
341
+ const brief = new McpServerBrief(
342
+ name,
343
+ desc.name,
344
+ desc.description,
345
+ false,
346
+ {},
347
+ "",
348
+ null,
349
+ null,
350
+ desc.url
351
+ );
352
+ const ss = SanitizedServerBrief.fromServerBrief(brief);
353
+ servers.push(ss);
354
+ serversMap[ss.name] = ss;
355
+ }
335
356
  return [servers, serversMap];
336
357
  }
337
358