@smythos/sre 1.5.44 → 1.5.45
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/CHANGELOG +90 -90
- package/LICENSE +18 -18
- package/README.md +135 -135
- package/dist/index.js +3 -3
- package/dist/index.js.map +1 -1
- package/dist/types/subsystems/LLMManager/LLM.service/connectors/openai/OpenAIConnector.class.d.ts +13 -1
- package/dist/types/subsystems/LLMManager/LLM.service/connectors/openai/apiInterfaces/ResponsesApiInterface.d.ts +46 -27
- package/dist/types/subsystems/LLMManager/LLM.service/connectors/openai/apiInterfaces/constants.d.ts +4 -2
- package/dist/types/subsystems/LLMManager/LLM.service/connectors/openai/types.d.ts +0 -4
- package/dist/types/subsystems/LLMManager/ModelsProvider.service/connectors/SmythModelsProvider.class.d.ts +39 -0
- package/dist/types/types/LLM.types.d.ts +1 -0
- package/package.json +1 -1
- package/src/Components/APICall/APICall.class.ts +156 -156
- package/src/Components/APICall/AccessTokenManager.ts +130 -130
- package/src/Components/APICall/ArrayBufferResponse.helper.ts +58 -58
- package/src/Components/APICall/OAuth.helper.ts +294 -294
- package/src/Components/APICall/mimeTypeCategories.ts +46 -46
- package/src/Components/APICall/parseData.ts +167 -167
- package/src/Components/APICall/parseHeaders.ts +41 -41
- package/src/Components/APICall/parseProxy.ts +68 -68
- package/src/Components/APICall/parseUrl.ts +91 -91
- package/src/Components/APIEndpoint.class.ts +234 -234
- package/src/Components/APIOutput.class.ts +58 -58
- package/src/Components/AgentPlugin.class.ts +102 -102
- package/src/Components/Async.class.ts +155 -155
- package/src/Components/Await.class.ts +90 -90
- package/src/Components/Classifier.class.ts +158 -158
- package/src/Components/Component.class.ts +132 -132
- package/src/Components/ComponentHost.class.ts +38 -38
- package/src/Components/DataSourceCleaner.class.ts +92 -92
- package/src/Components/DataSourceIndexer.class.ts +181 -181
- package/src/Components/DataSourceLookup.class.ts +161 -161
- package/src/Components/ECMASandbox.class.ts +71 -71
- package/src/Components/FEncDec.class.ts +29 -29
- package/src/Components/FHash.class.ts +33 -33
- package/src/Components/FSign.class.ts +80 -80
- package/src/Components/FSleep.class.ts +25 -25
- package/src/Components/FTimestamp.class.ts +25 -25
- package/src/Components/FileStore.class.ts +78 -78
- package/src/Components/ForEach.class.ts +97 -97
- package/src/Components/GPTPlugin.class.ts +70 -70
- package/src/Components/GenAILLM.class.ts +586 -586
- package/src/Components/HuggingFace.class.ts +314 -314
- package/src/Components/Image/imageSettings.config.ts +70 -70
- package/src/Components/ImageGenerator.class.ts +502 -502
- package/src/Components/JSONFilter.class.ts +54 -54
- package/src/Components/LLMAssistant.class.ts +213 -213
- package/src/Components/LogicAND.class.ts +28 -28
- package/src/Components/LogicAtLeast.class.ts +85 -85
- package/src/Components/LogicAtMost.class.ts +86 -86
- package/src/Components/LogicOR.class.ts +29 -29
- package/src/Components/LogicXOR.class.ts +34 -34
- package/src/Components/MCPClient.class.ts +112 -112
- package/src/Components/MemoryDeleteKeyVal.class.ts +70 -70
- package/src/Components/MemoryReadKeyVal.class.ts +66 -66
- package/src/Components/MemoryWriteKeyVal.class.ts +62 -62
- package/src/Components/MemoryWriteObject.class.ts +97 -97
- package/src/Components/MultimodalLLM.class.ts +128 -128
- package/src/Components/OpenAPI.class.ts +72 -72
- package/src/Components/PromptGenerator.class.ts +122 -122
- package/src/Components/ScrapflyWebScrape.class.ts +159 -159
- package/src/Components/ServerlessCode.class.ts +123 -123
- package/src/Components/TavilyWebSearch.class.ts +98 -98
- package/src/Components/VisionLLM.class.ts +104 -104
- package/src/Components/ZapierAction.class.ts +127 -127
- package/src/Components/index.ts +97 -97
- package/src/Core/AgentProcess.helper.ts +240 -240
- package/src/Core/Connector.class.ts +123 -123
- package/src/Core/ConnectorsService.ts +197 -197
- package/src/Core/DummyConnector.ts +49 -49
- package/src/Core/HookService.ts +105 -105
- package/src/Core/SmythRuntime.class.ts +235 -235
- package/src/Core/SystemEvents.ts +16 -16
- package/src/Core/boot.ts +56 -56
- package/src/config.ts +15 -15
- package/src/constants.ts +126 -126
- package/src/data/hugging-face.params.json +579 -579
- package/src/helpers/AWSLambdaCode.helper.ts +587 -587
- package/src/helpers/BinaryInput.helper.ts +331 -331
- package/src/helpers/Conversation.helper.ts +1119 -1119
- package/src/helpers/ECMASandbox.helper.ts +54 -54
- package/src/helpers/JsonContent.helper.ts +97 -97
- package/src/helpers/LocalCache.helper.ts +97 -97
- package/src/helpers/Log.helper.ts +274 -274
- package/src/helpers/OpenApiParser.helper.ts +150 -150
- package/src/helpers/S3Cache.helper.ts +147 -147
- package/src/helpers/SmythURI.helper.ts +5 -5
- package/src/helpers/Sysconfig.helper.ts +77 -77
- package/src/helpers/TemplateString.helper.ts +243 -243
- package/src/helpers/TypeChecker.helper.ts +329 -329
- package/src/index.ts +196 -196
- package/src/index.ts.bak +196 -196
- package/src/subsystems/AgentManager/Agent.class.ts +1114 -1114
- package/src/subsystems/AgentManager/Agent.helper.ts +3 -3
- package/src/subsystems/AgentManager/AgentData.service/AgentDataConnector.ts +230 -230
- package/src/subsystems/AgentManager/AgentData.service/connectors/CLIAgentDataConnector.class.ts +66 -66
- package/src/subsystems/AgentManager/AgentData.service/connectors/LocalAgentDataConnector.class.ts +142 -142
- package/src/subsystems/AgentManager/AgentData.service/connectors/NullAgentData.class.ts +39 -39
- package/src/subsystems/AgentManager/AgentData.service/index.ts +18 -18
- package/src/subsystems/AgentManager/AgentLogger.class.ts +297 -297
- package/src/subsystems/AgentManager/AgentRequest.class.ts +51 -51
- package/src/subsystems/AgentManager/AgentRuntime.class.ts +559 -559
- package/src/subsystems/AgentManager/AgentSSE.class.ts +101 -101
- package/src/subsystems/AgentManager/AgentSettings.class.ts +52 -52
- package/src/subsystems/AgentManager/Component.service/ComponentConnector.ts +32 -32
- package/src/subsystems/AgentManager/Component.service/connectors/LocalComponentConnector.class.ts +60 -60
- package/src/subsystems/AgentManager/Component.service/index.ts +11 -11
- package/src/subsystems/AgentManager/EmbodimentSettings.class.ts +47 -47
- package/src/subsystems/AgentManager/ForkedAgent.class.ts +154 -154
- package/src/subsystems/AgentManager/OSResourceMonitor.ts +77 -77
- package/src/subsystems/ComputeManager/Code.service/CodeConnector.ts +98 -98
- package/src/subsystems/ComputeManager/Code.service/connectors/AWSLambdaCode.class.ts +172 -172
- package/src/subsystems/ComputeManager/Code.service/connectors/ECMASandbox.class.ts +131 -131
- package/src/subsystems/ComputeManager/Code.service/index.ts +13 -13
- package/src/subsystems/IO/CLI.service/CLIConnector.ts +47 -47
- package/src/subsystems/IO/CLI.service/index.ts +9 -9
- package/src/subsystems/IO/Log.service/LogConnector.ts +32 -32
- package/src/subsystems/IO/Log.service/connectors/ConsoleLog.class.ts +28 -28
- package/src/subsystems/IO/Log.service/index.ts +13 -13
- package/src/subsystems/IO/NKV.service/NKVConnector.ts +43 -43
- package/src/subsystems/IO/NKV.service/connectors/NKVLocalStorage.class.ts +234 -234
- package/src/subsystems/IO/NKV.service/connectors/NKVRAM.class.ts +204 -204
- package/src/subsystems/IO/NKV.service/connectors/NKVRedis.class.ts +182 -182
- package/src/subsystems/IO/NKV.service/index.ts +14 -14
- package/src/subsystems/IO/Router.service/RouterConnector.ts +21 -21
- package/src/subsystems/IO/Router.service/connectors/ExpressRouter.class.ts +48 -48
- package/src/subsystems/IO/Router.service/connectors/NullRouter.class.ts +40 -40
- package/src/subsystems/IO/Router.service/index.ts +11 -11
- package/src/subsystems/IO/Storage.service/SmythFS.class.ts +489 -489
- package/src/subsystems/IO/Storage.service/StorageConnector.ts +66 -66
- package/src/subsystems/IO/Storage.service/connectors/LocalStorage.class.ts +327 -327
- package/src/subsystems/IO/Storage.service/connectors/S3Storage.class.ts +482 -482
- package/src/subsystems/IO/Storage.service/index.ts +13 -13
- package/src/subsystems/IO/VectorDB.service/VectorDBConnector.ts +108 -108
- package/src/subsystems/IO/VectorDB.service/connectors/MilvusVectorDB.class.ts +454 -454
- package/src/subsystems/IO/VectorDB.service/connectors/PineconeVectorDB.class.ts +384 -384
- package/src/subsystems/IO/VectorDB.service/connectors/RAMVecrtorDB.class.ts +421 -421
- package/src/subsystems/IO/VectorDB.service/embed/BaseEmbedding.ts +107 -107
- package/src/subsystems/IO/VectorDB.service/embed/OpenAIEmbedding.ts +109 -109
- package/src/subsystems/IO/VectorDB.service/embed/index.ts +21 -21
- package/src/subsystems/IO/VectorDB.service/index.ts +14 -14
- package/src/subsystems/LLMManager/LLM.helper.ts +251 -251
- package/src/subsystems/LLMManager/LLM.inference.ts +339 -339
- package/src/subsystems/LLMManager/LLM.service/LLMConnector.ts +489 -489
- package/src/subsystems/LLMManager/LLM.service/LLMCredentials.helper.ts +171 -171
- package/src/subsystems/LLMManager/LLM.service/connectors/Anthropic.class.ts +659 -659
- package/src/subsystems/LLMManager/LLM.service/connectors/Bedrock.class.ts +400 -400
- package/src/subsystems/LLMManager/LLM.service/connectors/Echo.class.ts +77 -77
- package/src/subsystems/LLMManager/LLM.service/connectors/GoogleAI.class.ts +757 -757
- package/src/subsystems/LLMManager/LLM.service/connectors/Groq.class.ts +304 -304
- package/src/subsystems/LLMManager/LLM.service/connectors/Perplexity.class.ts +250 -250
- package/src/subsystems/LLMManager/LLM.service/connectors/VertexAI.class.ts +423 -423
- package/src/subsystems/LLMManager/LLM.service/connectors/openai/OpenAIConnector.class.ts +488 -455
- package/src/subsystems/LLMManager/LLM.service/connectors/openai/apiInterfaces/ChatCompletionsApiInterface.ts +528 -528
- package/src/subsystems/LLMManager/LLM.service/connectors/openai/apiInterfaces/OpenAIApiInterface.ts +100 -100
- package/src/subsystems/LLMManager/LLM.service/connectors/openai/apiInterfaces/OpenAIApiInterfaceFactory.ts +81 -81
- package/src/subsystems/LLMManager/LLM.service/connectors/openai/apiInterfaces/ResponsesApiInterface.ts +1168 -862
- package/src/subsystems/LLMManager/LLM.service/connectors/openai/apiInterfaces/constants.ts +13 -37
- package/src/subsystems/LLMManager/LLM.service/connectors/openai/apiInterfaces/index.ts +4 -4
- package/src/subsystems/LLMManager/LLM.service/connectors/openai/apiInterfaces/utils.ts +11 -11
- package/src/subsystems/LLMManager/LLM.service/connectors/openai/types.ts +32 -37
- package/src/subsystems/LLMManager/LLM.service/connectors/xAI.class.ts +471 -471
- package/src/subsystems/LLMManager/LLM.service/index.ts +44 -44
- package/src/subsystems/LLMManager/ModelsProvider.service/ModelsProviderConnector.ts +300 -300
- package/src/subsystems/LLMManager/ModelsProvider.service/connectors/JSONModelsProvider.class.ts +252 -252
- package/src/subsystems/LLMManager/ModelsProvider.service/index.ts +11 -11
- package/src/subsystems/LLMManager/custom-models.ts +854 -854
- package/src/subsystems/LLMManager/models.ts +2540 -2540
- package/src/subsystems/LLMManager/paramMappings.ts +69 -69
- package/src/subsystems/MemoryManager/Cache.service/CacheConnector.ts +86 -86
- package/src/subsystems/MemoryManager/Cache.service/connectors/LocalStorageCache.class.ts +297 -297
- package/src/subsystems/MemoryManager/Cache.service/connectors/RAMCache.class.ts +201 -201
- package/src/subsystems/MemoryManager/Cache.service/connectors/RedisCache.class.ts +252 -252
- package/src/subsystems/MemoryManager/Cache.service/connectors/S3Cache.class.ts +373 -373
- package/src/subsystems/MemoryManager/Cache.service/index.ts +15 -15
- package/src/subsystems/MemoryManager/LLMCache.ts +72 -72
- package/src/subsystems/MemoryManager/LLMContext.ts +124 -124
- package/src/subsystems/MemoryManager/LLMMemory.service/LLMMemoryConnector.ts +26 -26
- package/src/subsystems/MemoryManager/RuntimeContext.ts +266 -266
- package/src/subsystems/Security/AccessControl/ACL.class.ts +208 -208
- package/src/subsystems/Security/AccessControl/AccessCandidate.class.ts +82 -82
- package/src/subsystems/Security/AccessControl/AccessRequest.class.ts +52 -52
- package/src/subsystems/Security/Account.service/AccountConnector.ts +44 -44
- package/src/subsystems/Security/Account.service/connectors/AWSAccount.class.ts +76 -76
- package/src/subsystems/Security/Account.service/connectors/DummyAccount.class.ts +130 -130
- package/src/subsystems/Security/Account.service/connectors/JSONFileAccount.class.ts +159 -159
- package/src/subsystems/Security/Account.service/index.ts +14 -14
- package/src/subsystems/Security/Credentials.helper.ts +62 -62
- package/src/subsystems/Security/ManagedVault.service/ManagedVaultConnector.ts +38 -38
- package/src/subsystems/Security/ManagedVault.service/connectors/NullManagedVault.class.ts +53 -53
- package/src/subsystems/Security/ManagedVault.service/connectors/SecretManagerManagedVault.ts +154 -154
- package/src/subsystems/Security/ManagedVault.service/index.ts +12 -12
- package/src/subsystems/Security/SecureConnector.class.ts +110 -110
- package/src/subsystems/Security/Vault.service/Vault.helper.ts +30 -30
- package/src/subsystems/Security/Vault.service/VaultConnector.ts +29 -29
- package/src/subsystems/Security/Vault.service/connectors/HashicorpVault.class.ts +46 -46
- package/src/subsystems/Security/Vault.service/connectors/JSONFileVault.class.ts +221 -221
- package/src/subsystems/Security/Vault.service/connectors/NullVault.class.ts +54 -54
- package/src/subsystems/Security/Vault.service/connectors/SecretsManager.class.ts +140 -140
- package/src/subsystems/Security/Vault.service/index.ts +12 -12
- package/src/types/ACL.types.ts +104 -104
- package/src/types/AWS.types.ts +10 -10
- package/src/types/Agent.types.ts +61 -61
- package/src/types/AgentLogger.types.ts +17 -17
- package/src/types/Cache.types.ts +1 -1
- package/src/types/Common.types.ts +2 -2
- package/src/types/LLM.types.ts +496 -495
- package/src/types/Redis.types.ts +8 -8
- package/src/types/SRE.types.ts +64 -64
- package/src/types/Security.types.ts +14 -14
- package/src/types/Storage.types.ts +5 -5
- package/src/types/VectorDB.types.ts +86 -86
- package/src/utils/base64.utils.ts +275 -275
- package/src/utils/cli.utils.ts +68 -68
- package/src/utils/data.utils.ts +322 -322
- package/src/utils/date-time.utils.ts +22 -22
- package/src/utils/general.utils.ts +238 -238
- package/src/utils/index.ts +12 -12
- package/src/utils/lazy-client.ts +261 -261
- package/src/utils/numbers.utils.ts +13 -13
- package/src/utils/oauth.utils.ts +35 -35
- package/src/utils/string.utils.ts +414 -414
- package/src/utils/url.utils.ts +19 -19
- package/src/utils/validation.utils.ts +74 -74
- package/dist/bundle-analysis-lazy.html +0 -4949
- package/dist/bundle-analysis.html +0 -4949
- package/dist/types/utils/package-manager.utils.d.ts +0 -26
|
@@ -1,112 +1,112 @@
|
|
|
1
|
-
import Joi from 'joi';
|
|
2
|
-
|
|
3
|
-
import { IAgent as Agent } from '@sre/types/Agent.types';
|
|
4
|
-
import { Conversation } from '@sre/helpers/Conversation.helper';
|
|
5
|
-
import { TemplateString } from '@sre/helpers/TemplateString.helper';
|
|
6
|
-
|
|
7
|
-
import { Component } from './Component.class';
|
|
8
|
-
import { Client } from '@modelcontextprotocol/sdk/client/index.js';
|
|
9
|
-
import { SSEClientTransport } from '@modelcontextprotocol/sdk/client/sse.js';
|
|
10
|
-
|
|
11
|
-
export class MCPClient extends Component {
|
|
12
|
-
protected configSchema = Joi.object({
|
|
13
|
-
model: Joi.string().optional(),
|
|
14
|
-
openAiModel: Joi.string().optional(), // for backward compatibility
|
|
15
|
-
mcpUrl: Joi.string().max(2048).uri().required().description('URL of the MCP'),
|
|
16
|
-
descForModel: Joi.string().max(5000).required().allow('').label('Description for Model'),
|
|
17
|
-
name: Joi.string().max(500).required().allow(''),
|
|
18
|
-
desc: Joi.string().max(5000).required().allow('').label('Description'),
|
|
19
|
-
logoUrl: Joi.string().max(8192).allow(''),
|
|
20
|
-
id: Joi.string().max(200),
|
|
21
|
-
version: Joi.string().max(100).allow(''),
|
|
22
|
-
domain: Joi.string().max(253).allow(''),
|
|
23
|
-
prompt: Joi.string().max(5000).optional().allow('').label('Prompt'),
|
|
24
|
-
});
|
|
25
|
-
|
|
26
|
-
constructor() {
|
|
27
|
-
super();
|
|
28
|
-
}
|
|
29
|
-
|
|
30
|
-
init() {}
|
|
31
|
-
|
|
32
|
-
async process(input, config, agent: Agent) {
|
|
33
|
-
await super.process(input, config, agent);
|
|
34
|
-
const logger = this.createComponentLogger(agent, config);
|
|
35
|
-
|
|
36
|
-
logger.debug(`=== MCP Client Log ===`);
|
|
37
|
-
|
|
38
|
-
try {
|
|
39
|
-
const mcpUrl = config?.data?.mcpUrl;
|
|
40
|
-
if (!mcpUrl) {
|
|
41
|
-
return { _error: 'Please provide a MCP URL!', _debug: logger.output };
|
|
42
|
-
}
|
|
43
|
-
|
|
44
|
-
const model = config?.data?.model || config?.data?.openAiModel;
|
|
45
|
-
const descForModel = TemplateString(config?.data?.descForModel).parse(input).result;
|
|
46
|
-
let prompt = TemplateString(config?.data?.prompt).parse(input).result;
|
|
47
|
-
|
|
48
|
-
if (!prompt) {
|
|
49
|
-
return { _error: 'Please provide a prompt', _debug: logger.output };
|
|
50
|
-
}
|
|
51
|
-
|
|
52
|
-
// TODO [Forhad]: Need to check and validate input prompt token
|
|
53
|
-
const baseUrl = new URL(mcpUrl);
|
|
54
|
-
const transport = new SSEClientTransport(baseUrl);
|
|
55
|
-
const client = new Client({
|
|
56
|
-
name: 'sse-client',
|
|
57
|
-
version: '1.0.0',
|
|
58
|
-
});
|
|
59
|
-
await client.connect(transport);
|
|
60
|
-
const toolsData = await client.listTools();
|
|
61
|
-
const conv = new Conversation(
|
|
62
|
-
model,
|
|
63
|
-
{
|
|
64
|
-
openapi: '3.0.1',
|
|
65
|
-
info: {
|
|
66
|
-
title: `${agent?.name}`,
|
|
67
|
-
version: `${agent?.version}`,
|
|
68
|
-
description: descForModel,
|
|
69
|
-
},
|
|
70
|
-
servers: [
|
|
71
|
-
{
|
|
72
|
-
url: agent?.domain,
|
|
73
|
-
},
|
|
74
|
-
],
|
|
75
|
-
paths: {},
|
|
76
|
-
},
|
|
77
|
-
{ agentId: agent?.id },
|
|
78
|
-
);
|
|
79
|
-
|
|
80
|
-
for (const tool of toolsData.tools) {
|
|
81
|
-
let toolArgs = {};
|
|
82
|
-
Object.entries(tool.inputSchema.properties).forEach(([propName, propDetails]) => {
|
|
83
|
-
toolArgs[propName] = {
|
|
84
|
-
description: '',
|
|
85
|
-
required: ((tool.inputSchema.required as string[]) || []).includes(propName) || false,
|
|
86
|
-
type: (propDetails as any).type,
|
|
87
|
-
...((propDetails as any).type === 'array' ? { items: { type: 'string' } } : {}),
|
|
88
|
-
};
|
|
89
|
-
});
|
|
90
|
-
await conv.addTool({
|
|
91
|
-
name: tool.name,
|
|
92
|
-
description: tool.description,
|
|
93
|
-
arguments: toolArgs,
|
|
94
|
-
handler: async (input) => {
|
|
95
|
-
const result = await client.callTool({
|
|
96
|
-
name: tool.name,
|
|
97
|
-
arguments: input,
|
|
98
|
-
});
|
|
99
|
-
return result;
|
|
100
|
-
},
|
|
101
|
-
});
|
|
102
|
-
}
|
|
103
|
-
const result = await conv.prompt(prompt);
|
|
104
|
-
|
|
105
|
-
logger.debug(`Response:\n`, result, '\n');
|
|
106
|
-
|
|
107
|
-
return { Output: result, _debug: logger.output };
|
|
108
|
-
} catch (error: any) {
|
|
109
|
-
return { _error: `Error on running MCP Client!\n${error?.message || JSON.stringify(error)}`, _debug: logger.output };
|
|
110
|
-
}
|
|
111
|
-
}
|
|
112
|
-
}
|
|
1
|
+
import Joi from 'joi';
|
|
2
|
+
|
|
3
|
+
import { IAgent as Agent } from '@sre/types/Agent.types';
|
|
4
|
+
import { Conversation } from '@sre/helpers/Conversation.helper';
|
|
5
|
+
import { TemplateString } from '@sre/helpers/TemplateString.helper';
|
|
6
|
+
|
|
7
|
+
import { Component } from './Component.class';
|
|
8
|
+
import { Client } from '@modelcontextprotocol/sdk/client/index.js';
|
|
9
|
+
import { SSEClientTransport } from '@modelcontextprotocol/sdk/client/sse.js';
|
|
10
|
+
|
|
11
|
+
export class MCPClient extends Component {
|
|
12
|
+
protected configSchema = Joi.object({
|
|
13
|
+
model: Joi.string().optional(),
|
|
14
|
+
openAiModel: Joi.string().optional(), // for backward compatibility
|
|
15
|
+
mcpUrl: Joi.string().max(2048).uri().required().description('URL of the MCP'),
|
|
16
|
+
descForModel: Joi.string().max(5000).required().allow('').label('Description for Model'),
|
|
17
|
+
name: Joi.string().max(500).required().allow(''),
|
|
18
|
+
desc: Joi.string().max(5000).required().allow('').label('Description'),
|
|
19
|
+
logoUrl: Joi.string().max(8192).allow(''),
|
|
20
|
+
id: Joi.string().max(200),
|
|
21
|
+
version: Joi.string().max(100).allow(''),
|
|
22
|
+
domain: Joi.string().max(253).allow(''),
|
|
23
|
+
prompt: Joi.string().max(5000).optional().allow('').label('Prompt'),
|
|
24
|
+
});
|
|
25
|
+
|
|
26
|
+
constructor() {
|
|
27
|
+
super();
|
|
28
|
+
}
|
|
29
|
+
|
|
30
|
+
init() {}
|
|
31
|
+
|
|
32
|
+
async process(input, config, agent: Agent) {
|
|
33
|
+
await super.process(input, config, agent);
|
|
34
|
+
const logger = this.createComponentLogger(agent, config);
|
|
35
|
+
|
|
36
|
+
logger.debug(`=== MCP Client Log ===`);
|
|
37
|
+
|
|
38
|
+
try {
|
|
39
|
+
const mcpUrl = config?.data?.mcpUrl;
|
|
40
|
+
if (!mcpUrl) {
|
|
41
|
+
return { _error: 'Please provide a MCP URL!', _debug: logger.output };
|
|
42
|
+
}
|
|
43
|
+
|
|
44
|
+
const model = config?.data?.model || config?.data?.openAiModel;
|
|
45
|
+
const descForModel = TemplateString(config?.data?.descForModel).parse(input).result;
|
|
46
|
+
let prompt = TemplateString(config?.data?.prompt).parse(input).result;
|
|
47
|
+
|
|
48
|
+
if (!prompt) {
|
|
49
|
+
return { _error: 'Please provide a prompt', _debug: logger.output };
|
|
50
|
+
}
|
|
51
|
+
|
|
52
|
+
// TODO [Forhad]: Need to check and validate input prompt token
|
|
53
|
+
const baseUrl = new URL(mcpUrl);
|
|
54
|
+
const transport = new SSEClientTransport(baseUrl);
|
|
55
|
+
const client = new Client({
|
|
56
|
+
name: 'sse-client',
|
|
57
|
+
version: '1.0.0',
|
|
58
|
+
});
|
|
59
|
+
await client.connect(transport);
|
|
60
|
+
const toolsData = await client.listTools();
|
|
61
|
+
const conv = new Conversation(
|
|
62
|
+
model,
|
|
63
|
+
{
|
|
64
|
+
openapi: '3.0.1',
|
|
65
|
+
info: {
|
|
66
|
+
title: `${agent?.name}`,
|
|
67
|
+
version: `${agent?.version}`,
|
|
68
|
+
description: descForModel,
|
|
69
|
+
},
|
|
70
|
+
servers: [
|
|
71
|
+
{
|
|
72
|
+
url: agent?.domain,
|
|
73
|
+
},
|
|
74
|
+
],
|
|
75
|
+
paths: {},
|
|
76
|
+
},
|
|
77
|
+
{ agentId: agent?.id },
|
|
78
|
+
);
|
|
79
|
+
|
|
80
|
+
for (const tool of toolsData.tools) {
|
|
81
|
+
let toolArgs = {};
|
|
82
|
+
Object.entries(tool.inputSchema.properties).forEach(([propName, propDetails]) => {
|
|
83
|
+
toolArgs[propName] = {
|
|
84
|
+
description: '',
|
|
85
|
+
required: ((tool.inputSchema.required as string[]) || []).includes(propName) || false,
|
|
86
|
+
type: (propDetails as any).type,
|
|
87
|
+
...((propDetails as any).type === 'array' ? { items: { type: 'string' } } : {}),
|
|
88
|
+
};
|
|
89
|
+
});
|
|
90
|
+
await conv.addTool({
|
|
91
|
+
name: tool.name,
|
|
92
|
+
description: tool.description,
|
|
93
|
+
arguments: toolArgs,
|
|
94
|
+
handler: async (input) => {
|
|
95
|
+
const result = await client.callTool({
|
|
96
|
+
name: tool.name,
|
|
97
|
+
arguments: input,
|
|
98
|
+
});
|
|
99
|
+
return result;
|
|
100
|
+
},
|
|
101
|
+
});
|
|
102
|
+
}
|
|
103
|
+
const result = await conv.prompt(prompt);
|
|
104
|
+
|
|
105
|
+
logger.debug(`Response:\n`, result, '\n');
|
|
106
|
+
|
|
107
|
+
return { Output: result, _debug: logger.output };
|
|
108
|
+
} catch (error: any) {
|
|
109
|
+
return { _error: `Error on running MCP Client!\n${error?.message || JSON.stringify(error)}`, _debug: logger.output };
|
|
110
|
+
}
|
|
111
|
+
}
|
|
112
|
+
}
|
|
@@ -1,70 +1,70 @@
|
|
|
1
|
-
import Joi from 'joi';
|
|
2
|
-
|
|
3
|
-
import { IAgent as Agent } from '@sre/types/Agent.types';
|
|
4
|
-
import { Component } from './Component.class';
|
|
5
|
-
import { ConnectorService } from '@sre/Core/ConnectorsService';
|
|
6
|
-
import { TemplateString } from '@sre/helpers/TemplateString.helper';
|
|
7
|
-
import { ICacheRequest } from '@sre/MemoryManager/Cache.service/CacheConnector';
|
|
8
|
-
|
|
9
|
-
export class MemoryDeleteKeyVal extends Component {
|
|
10
|
-
protected configSchema = Joi.object({
|
|
11
|
-
memoryName: Joi.string().max(255).allow('').label('Memory Name'),
|
|
12
|
-
key: Joi.string().max(255).allow('').label('Key'),
|
|
13
|
-
});
|
|
14
|
-
constructor() {
|
|
15
|
-
super();
|
|
16
|
-
}
|
|
17
|
-
init() {}
|
|
18
|
-
async process(input, config, agent: Agent) {
|
|
19
|
-
await super.process(input, config, agent);
|
|
20
|
-
|
|
21
|
-
const logger = this.createComponentLogger(agent, config);
|
|
22
|
-
|
|
23
|
-
try {
|
|
24
|
-
const cacheConnector = ConnectorService.getCacheConnector();
|
|
25
|
-
const connectorRequester: ICacheRequest = cacheConnector.agent(agent.id);
|
|
26
|
-
const teamId = agent.teamId;
|
|
27
|
-
const agentId = agent.id;
|
|
28
|
-
|
|
29
|
-
const memoryName = config.data.memoryName;
|
|
30
|
-
const key = TemplateString(config.data.key).parse(input).result;
|
|
31
|
-
|
|
32
|
-
const sessionId = agent.sessionId;
|
|
33
|
-
const workflowId = agent.agentRuntime.workflowReqId;
|
|
34
|
-
|
|
35
|
-
logger.debug(`Reading Scope Data for deletion`);
|
|
36
|
-
const scopeKeyId = `${agentId}:${memoryName}:${key}_scope`;
|
|
37
|
-
const scopeStrData = await connectorRequester.get(scopeKeyId);
|
|
38
|
-
|
|
39
|
-
if (!scopeStrData) {
|
|
40
|
-
return { _error: 'key not found', _debug: logger.output };
|
|
41
|
-
}
|
|
42
|
-
|
|
43
|
-
logger.debug(`Checking Scope for deletion`);
|
|
44
|
-
const scopeData = JSON.parse(scopeStrData);
|
|
45
|
-
const scopeKey = scopeData.value;
|
|
46
|
-
|
|
47
|
-
// Validate scope access like in MemoryReadKeyVal
|
|
48
|
-
if (scopeData.scope === 'session' && scopeKey !== sessionId) {
|
|
49
|
-
return { _error: 'key not found', _debug: logger.output };
|
|
50
|
-
}
|
|
51
|
-
|
|
52
|
-
if (scopeData.scope === 'request' && scopeKey !== workflowId) {
|
|
53
|
-
return { _error: 'key not found', _debug: logger.output };
|
|
54
|
-
}
|
|
55
|
-
|
|
56
|
-
logger.debug(`Deleting memory value and scope data`);
|
|
57
|
-
|
|
58
|
-
// Delete the actual value
|
|
59
|
-
const fullKey = `${agentId}:${scopeKey}:${memoryName}:${key}`;
|
|
60
|
-
await connectorRequester.delete(fullKey);
|
|
61
|
-
|
|
62
|
-
// Delete the scope metadata
|
|
63
|
-
await connectorRequester.delete(scopeKeyId);
|
|
64
|
-
|
|
65
|
-
return { Key: key, deleted: true, _debug: logger.output };
|
|
66
|
-
} catch (error: any) {
|
|
67
|
-
return { _error: error.message, _debug: logger.output };
|
|
68
|
-
}
|
|
69
|
-
}
|
|
70
|
-
}
|
|
1
|
+
import Joi from 'joi';
|
|
2
|
+
|
|
3
|
+
import { IAgent as Agent } from '@sre/types/Agent.types';
|
|
4
|
+
import { Component } from './Component.class';
|
|
5
|
+
import { ConnectorService } from '@sre/Core/ConnectorsService';
|
|
6
|
+
import { TemplateString } from '@sre/helpers/TemplateString.helper';
|
|
7
|
+
import { ICacheRequest } from '@sre/MemoryManager/Cache.service/CacheConnector';
|
|
8
|
+
|
|
9
|
+
export class MemoryDeleteKeyVal extends Component {
|
|
10
|
+
protected configSchema = Joi.object({
|
|
11
|
+
memoryName: Joi.string().max(255).allow('').label('Memory Name'),
|
|
12
|
+
key: Joi.string().max(255).allow('').label('Key'),
|
|
13
|
+
});
|
|
14
|
+
constructor() {
|
|
15
|
+
super();
|
|
16
|
+
}
|
|
17
|
+
init() {}
|
|
18
|
+
async process(input, config, agent: Agent) {
|
|
19
|
+
await super.process(input, config, agent);
|
|
20
|
+
|
|
21
|
+
const logger = this.createComponentLogger(agent, config);
|
|
22
|
+
|
|
23
|
+
try {
|
|
24
|
+
const cacheConnector = ConnectorService.getCacheConnector();
|
|
25
|
+
const connectorRequester: ICacheRequest = cacheConnector.agent(agent.id);
|
|
26
|
+
const teamId = agent.teamId;
|
|
27
|
+
const agentId = agent.id;
|
|
28
|
+
|
|
29
|
+
const memoryName = config.data.memoryName;
|
|
30
|
+
const key = TemplateString(config.data.key).parse(input).result;
|
|
31
|
+
|
|
32
|
+
const sessionId = agent.sessionId;
|
|
33
|
+
const workflowId = agent.agentRuntime.workflowReqId;
|
|
34
|
+
|
|
35
|
+
logger.debug(`Reading Scope Data for deletion`);
|
|
36
|
+
const scopeKeyId = `${agentId}:${memoryName}:${key}_scope`;
|
|
37
|
+
const scopeStrData = await connectorRequester.get(scopeKeyId);
|
|
38
|
+
|
|
39
|
+
if (!scopeStrData) {
|
|
40
|
+
return { _error: 'key not found', _debug: logger.output };
|
|
41
|
+
}
|
|
42
|
+
|
|
43
|
+
logger.debug(`Checking Scope for deletion`);
|
|
44
|
+
const scopeData = JSON.parse(scopeStrData);
|
|
45
|
+
const scopeKey = scopeData.value;
|
|
46
|
+
|
|
47
|
+
// Validate scope access like in MemoryReadKeyVal
|
|
48
|
+
if (scopeData.scope === 'session' && scopeKey !== sessionId) {
|
|
49
|
+
return { _error: 'key not found', _debug: logger.output };
|
|
50
|
+
}
|
|
51
|
+
|
|
52
|
+
if (scopeData.scope === 'request' && scopeKey !== workflowId) {
|
|
53
|
+
return { _error: 'key not found', _debug: logger.output };
|
|
54
|
+
}
|
|
55
|
+
|
|
56
|
+
logger.debug(`Deleting memory value and scope data`);
|
|
57
|
+
|
|
58
|
+
// Delete the actual value
|
|
59
|
+
const fullKey = `${agentId}:${scopeKey}:${memoryName}:${key}`;
|
|
60
|
+
await connectorRequester.delete(fullKey);
|
|
61
|
+
|
|
62
|
+
// Delete the scope metadata
|
|
63
|
+
await connectorRequester.delete(scopeKeyId);
|
|
64
|
+
|
|
65
|
+
return { Key: key, deleted: true, _debug: logger.output };
|
|
66
|
+
} catch (error: any) {
|
|
67
|
+
return { _error: error.message, _debug: logger.output };
|
|
68
|
+
}
|
|
69
|
+
}
|
|
70
|
+
}
|
|
@@ -1,66 +1,66 @@
|
|
|
1
|
-
import Joi from 'joi';
|
|
2
|
-
|
|
3
|
-
import { IAgent as Agent } from '@sre/types/Agent.types';
|
|
4
|
-
import { Component } from './Component.class';
|
|
5
|
-
import { ConnectorService } from '@sre/Core/ConnectorsService';
|
|
6
|
-
import { TemplateString } from '@sre/helpers/TemplateString.helper';
|
|
7
|
-
import { ICacheRequest } from '@sre/MemoryManager/Cache.service/CacheConnector';
|
|
8
|
-
|
|
9
|
-
const memory = {};
|
|
10
|
-
export class MemoryReadKeyVal extends Component {
|
|
11
|
-
protected configSchema = Joi.object({
|
|
12
|
-
memoryName: Joi.string().max(255).allow('').label('Memory Name'),
|
|
13
|
-
});
|
|
14
|
-
constructor() {
|
|
15
|
-
super();
|
|
16
|
-
}
|
|
17
|
-
init() {}
|
|
18
|
-
async process(input, config, agent: Agent) {
|
|
19
|
-
await super.process(input, config, agent);
|
|
20
|
-
|
|
21
|
-
const logger = this.createComponentLogger(agent, config);
|
|
22
|
-
|
|
23
|
-
try {
|
|
24
|
-
const cacheConnector = ConnectorService.getCacheConnector();
|
|
25
|
-
const connectorRequester: ICacheRequest = cacheConnector.agent(agent.id);
|
|
26
|
-
const teamId = agent.teamId;
|
|
27
|
-
const agentId = agent.id;
|
|
28
|
-
|
|
29
|
-
const memoryName = config.data.memoryName;
|
|
30
|
-
|
|
31
|
-
const key = input.Key;
|
|
32
|
-
|
|
33
|
-
const sessionId = agent.sessionId;
|
|
34
|
-
const workflowId = agent.agentRuntime.workflowReqId;
|
|
35
|
-
|
|
36
|
-
logger.debug(`Reading Scope Data`);
|
|
37
|
-
const scopeKeyId = `${agentId}:${memoryName}:${key}_scope`;
|
|
38
|
-
const scopeStrData = await connectorRequester.get(scopeKeyId);
|
|
39
|
-
|
|
40
|
-
if (!scopeStrData) {
|
|
41
|
-
return { _error: 'key not found', _debug: logger.output };
|
|
42
|
-
}
|
|
43
|
-
|
|
44
|
-
logger.debug(`Checking Scope`);
|
|
45
|
-
const scopeData = JSON.parse(scopeStrData);
|
|
46
|
-
const scopeKey = scopeData.value;
|
|
47
|
-
if (scopeData.scope === 'session' && scopeKey !== sessionId) {
|
|
48
|
-
return { _error: 'key not found', _debug: logger.output };
|
|
49
|
-
}
|
|
50
|
-
|
|
51
|
-
if (scopeData.scope === 'request' && scopeKey !== workflowId) {
|
|
52
|
-
return { _error: 'key not found', _debug: logger.output };
|
|
53
|
-
}
|
|
54
|
-
|
|
55
|
-
logger.debug(`Reading Value`);
|
|
56
|
-
|
|
57
|
-
const fullKey = `${agentId}:${scopeKey}:${memoryName}:${key}`;
|
|
58
|
-
|
|
59
|
-
const value = await connectorRequester.get(fullKey);
|
|
60
|
-
|
|
61
|
-
return { Value: value, _debug: logger.output };
|
|
62
|
-
} catch (error: any) {
|
|
63
|
-
return { _error: error.message, _debug: logger.output };
|
|
64
|
-
}
|
|
65
|
-
}
|
|
66
|
-
}
|
|
1
|
+
import Joi from 'joi';
|
|
2
|
+
|
|
3
|
+
import { IAgent as Agent } from '@sre/types/Agent.types';
|
|
4
|
+
import { Component } from './Component.class';
|
|
5
|
+
import { ConnectorService } from '@sre/Core/ConnectorsService';
|
|
6
|
+
import { TemplateString } from '@sre/helpers/TemplateString.helper';
|
|
7
|
+
import { ICacheRequest } from '@sre/MemoryManager/Cache.service/CacheConnector';
|
|
8
|
+
|
|
9
|
+
const memory = {};
|
|
10
|
+
export class MemoryReadKeyVal extends Component {
|
|
11
|
+
protected configSchema = Joi.object({
|
|
12
|
+
memoryName: Joi.string().max(255).allow('').label('Memory Name'),
|
|
13
|
+
});
|
|
14
|
+
constructor() {
|
|
15
|
+
super();
|
|
16
|
+
}
|
|
17
|
+
init() {}
|
|
18
|
+
async process(input, config, agent: Agent) {
|
|
19
|
+
await super.process(input, config, agent);
|
|
20
|
+
|
|
21
|
+
const logger = this.createComponentLogger(agent, config);
|
|
22
|
+
|
|
23
|
+
try {
|
|
24
|
+
const cacheConnector = ConnectorService.getCacheConnector();
|
|
25
|
+
const connectorRequester: ICacheRequest = cacheConnector.agent(agent.id);
|
|
26
|
+
const teamId = agent.teamId;
|
|
27
|
+
const agentId = agent.id;
|
|
28
|
+
|
|
29
|
+
const memoryName = config.data.memoryName;
|
|
30
|
+
|
|
31
|
+
const key = input.Key;
|
|
32
|
+
|
|
33
|
+
const sessionId = agent.sessionId;
|
|
34
|
+
const workflowId = agent.agentRuntime.workflowReqId;
|
|
35
|
+
|
|
36
|
+
logger.debug(`Reading Scope Data`);
|
|
37
|
+
const scopeKeyId = `${agentId}:${memoryName}:${key}_scope`;
|
|
38
|
+
const scopeStrData = await connectorRequester.get(scopeKeyId);
|
|
39
|
+
|
|
40
|
+
if (!scopeStrData) {
|
|
41
|
+
return { _error: 'key not found', _debug: logger.output };
|
|
42
|
+
}
|
|
43
|
+
|
|
44
|
+
logger.debug(`Checking Scope`);
|
|
45
|
+
const scopeData = JSON.parse(scopeStrData);
|
|
46
|
+
const scopeKey = scopeData.value;
|
|
47
|
+
if (scopeData.scope === 'session' && scopeKey !== sessionId) {
|
|
48
|
+
return { _error: 'key not found', _debug: logger.output };
|
|
49
|
+
}
|
|
50
|
+
|
|
51
|
+
if (scopeData.scope === 'request' && scopeKey !== workflowId) {
|
|
52
|
+
return { _error: 'key not found', _debug: logger.output };
|
|
53
|
+
}
|
|
54
|
+
|
|
55
|
+
logger.debug(`Reading Value`);
|
|
56
|
+
|
|
57
|
+
const fullKey = `${agentId}:${scopeKey}:${memoryName}:${key}`;
|
|
58
|
+
|
|
59
|
+
const value = await connectorRequester.get(fullKey);
|
|
60
|
+
|
|
61
|
+
return { Value: value, _debug: logger.output };
|
|
62
|
+
} catch (error: any) {
|
|
63
|
+
return { _error: error.message, _debug: logger.output };
|
|
64
|
+
}
|
|
65
|
+
}
|
|
66
|
+
}
|
|
@@ -1,62 +1,62 @@
|
|
|
1
|
-
import Joi from 'joi';
|
|
2
|
-
|
|
3
|
-
import { IAgent as Agent } from '@sre/types/Agent.types';
|
|
4
|
-
import { Component } from './Component.class';
|
|
5
|
-
import { ConnectorService } from '@sre/Core/ConnectorsService';
|
|
6
|
-
import { TemplateString } from '@sre/helpers/TemplateString.helper';
|
|
7
|
-
import { ICacheRequest } from '@sre/MemoryManager/Cache.service/CacheConnector';
|
|
8
|
-
|
|
9
|
-
const memory = {};
|
|
10
|
-
export class MemoryWriteKeyVal extends Component {
|
|
11
|
-
protected configSchema = Joi.object({
|
|
12
|
-
memoryName: Joi.string().max(255).allow('').label('Memory Name'),
|
|
13
|
-
key: Joi.string().max(255).allow('').label('Key'),
|
|
14
|
-
value: Joi.string().max(100000).allow('').label('Value'),
|
|
15
|
-
scope: Joi.string().max(20).allow('').label('Scope'),
|
|
16
|
-
ttl: Joi.number().min(300).max(604800).allow('').label('TTL'),
|
|
17
|
-
});
|
|
18
|
-
constructor() {
|
|
19
|
-
super();
|
|
20
|
-
}
|
|
21
|
-
init() {}
|
|
22
|
-
async process(input, config, agent: Agent) {
|
|
23
|
-
await super.process(input, config, agent);
|
|
24
|
-
|
|
25
|
-
const logger = this.createComponentLogger(agent, config);
|
|
26
|
-
|
|
27
|
-
try {
|
|
28
|
-
const cacheConnector = ConnectorService.getCacheConnector();
|
|
29
|
-
const connectorRequester: ICacheRequest = cacheConnector.agent(agent.id);
|
|
30
|
-
const teamId = agent.teamId;
|
|
31
|
-
const agentId = agent.id;
|
|
32
|
-
|
|
33
|
-
const memoryName = config.data.memoryName;
|
|
34
|
-
const key = TemplateString(config.data.key).parse(input).result;
|
|
35
|
-
const value = TemplateString(config.data.value).parse(input).result;
|
|
36
|
-
const scope = config.data.scope;
|
|
37
|
-
const ttl = scope === 'ttl' ? config?.data?.ttl : 3 * 60 * 60; // 3 hours default ttl
|
|
38
|
-
|
|
39
|
-
const sessionId = agent.sessionId;
|
|
40
|
-
const workflowId = agent.agentRuntime.workflowReqId;
|
|
41
|
-
|
|
42
|
-
let scopeKey = '';
|
|
43
|
-
if (scope === 'session') {
|
|
44
|
-
scopeKey = sessionId;
|
|
45
|
-
} else if (scope === 'request') {
|
|
46
|
-
scopeKey = workflowId;
|
|
47
|
-
} else if (scope === 'ttl') {
|
|
48
|
-
scopeKey = 'ttl';
|
|
49
|
-
}
|
|
50
|
-
|
|
51
|
-
const scopeKeyId = `${agentId}:${memoryName}:${key}_scope`;
|
|
52
|
-
await connectorRequester.set(scopeKeyId, JSON.stringify({ scope, value: scopeKey }), null, null, ttl);
|
|
53
|
-
|
|
54
|
-
const fullKey = `${agentId}:${scopeKey}:${memoryName}:${key}`;
|
|
55
|
-
await connectorRequester.set(fullKey, value, null, null, ttl);
|
|
56
|
-
|
|
57
|
-
return { Key: key, _debug: logger.output };
|
|
58
|
-
} catch (error: any) {
|
|
59
|
-
return { _error: error.message, _debug: logger.output };
|
|
60
|
-
}
|
|
61
|
-
}
|
|
62
|
-
}
|
|
1
|
+
import Joi from 'joi';
|
|
2
|
+
|
|
3
|
+
import { IAgent as Agent } from '@sre/types/Agent.types';
|
|
4
|
+
import { Component } from './Component.class';
|
|
5
|
+
import { ConnectorService } from '@sre/Core/ConnectorsService';
|
|
6
|
+
import { TemplateString } from '@sre/helpers/TemplateString.helper';
|
|
7
|
+
import { ICacheRequest } from '@sre/MemoryManager/Cache.service/CacheConnector';
|
|
8
|
+
|
|
9
|
+
const memory = {};
|
|
10
|
+
export class MemoryWriteKeyVal extends Component {
|
|
11
|
+
protected configSchema = Joi.object({
|
|
12
|
+
memoryName: Joi.string().max(255).allow('').label('Memory Name'),
|
|
13
|
+
key: Joi.string().max(255).allow('').label('Key'),
|
|
14
|
+
value: Joi.string().max(100000).allow('').label('Value'),
|
|
15
|
+
scope: Joi.string().max(20).allow('').label('Scope'),
|
|
16
|
+
ttl: Joi.number().min(300).max(604800).allow('').label('TTL'),
|
|
17
|
+
});
|
|
18
|
+
constructor() {
|
|
19
|
+
super();
|
|
20
|
+
}
|
|
21
|
+
init() {}
|
|
22
|
+
async process(input, config, agent: Agent) {
|
|
23
|
+
await super.process(input, config, agent);
|
|
24
|
+
|
|
25
|
+
const logger = this.createComponentLogger(agent, config);
|
|
26
|
+
|
|
27
|
+
try {
|
|
28
|
+
const cacheConnector = ConnectorService.getCacheConnector();
|
|
29
|
+
const connectorRequester: ICacheRequest = cacheConnector.agent(agent.id);
|
|
30
|
+
const teamId = agent.teamId;
|
|
31
|
+
const agentId = agent.id;
|
|
32
|
+
|
|
33
|
+
const memoryName = config.data.memoryName;
|
|
34
|
+
const key = TemplateString(config.data.key).parse(input).result;
|
|
35
|
+
const value = TemplateString(config.data.value).parse(input).result;
|
|
36
|
+
const scope = config.data.scope;
|
|
37
|
+
const ttl = scope === 'ttl' ? config?.data?.ttl : 3 * 60 * 60; // 3 hours default ttl
|
|
38
|
+
|
|
39
|
+
const sessionId = agent.sessionId;
|
|
40
|
+
const workflowId = agent.agentRuntime.workflowReqId;
|
|
41
|
+
|
|
42
|
+
let scopeKey = '';
|
|
43
|
+
if (scope === 'session') {
|
|
44
|
+
scopeKey = sessionId;
|
|
45
|
+
} else if (scope === 'request') {
|
|
46
|
+
scopeKey = workflowId;
|
|
47
|
+
} else if (scope === 'ttl') {
|
|
48
|
+
scopeKey = 'ttl';
|
|
49
|
+
}
|
|
50
|
+
|
|
51
|
+
const scopeKeyId = `${agentId}:${memoryName}:${key}_scope`;
|
|
52
|
+
await connectorRequester.set(scopeKeyId, JSON.stringify({ scope, value: scopeKey }), null, null, ttl);
|
|
53
|
+
|
|
54
|
+
const fullKey = `${agentId}:${scopeKey}:${memoryName}:${key}`;
|
|
55
|
+
await connectorRequester.set(fullKey, value, null, null, ttl);
|
|
56
|
+
|
|
57
|
+
return { Key: key, _debug: logger.output };
|
|
58
|
+
} catch (error: any) {
|
|
59
|
+
return { _error: error.message, _debug: logger.output };
|
|
60
|
+
}
|
|
61
|
+
}
|
|
62
|
+
}
|