@smythos/sre 1.6.8 → 1.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.
- package/CHANGELOG +111 -111
- package/LICENSE +18 -18
- package/README.md +135 -135
- package/dist/bundle-analysis-lazy.html +4949 -0
- package/dist/bundle-analysis.html +4949 -0
- package/dist/index.js +2 -2
- package/dist/index.js.map +1 -1
- package/dist/types/Components/Triggers/Gmail.trigger.d.ts +58 -0
- package/dist/types/Components/Triggers/GmailTrigger.class.d.ts +44 -0
- package/dist/types/Components/Triggers/Trigger.class.d.ts +21 -0
- package/dist/types/Components/Triggers/WhatsApp.trigger.d.ts +22 -0
- package/dist/types/helpers/AIPerformanceAnalyzer.helper.d.ts +45 -0
- package/dist/types/helpers/AIPerformanceCollector.helper.d.ts +111 -0
- package/dist/types/subsystems/IO/Storage.service/connectors/AzureBlobStorage.class.d.ts +211 -0
- package/dist/types/subsystems/IO/VectorDB.service/connectors/WeaviateVectorDB.class.d.ts +187 -0
- package/dist/types/subsystems/PerformanceManager/Performance.service/PerformanceConnector.d.ts +102 -0
- package/dist/types/subsystems/PerformanceManager/Performance.service/connectors/LocalPerformanceConnector.class.d.ts +100 -0
- package/dist/types/subsystems/PerformanceManager/Performance.service/index.d.ts +22 -0
- package/dist/types/subsystems/Security/Credentials/Credentials.class.d.ts +2 -0
- package/dist/types/subsystems/Security/Credentials/ManagedOAuth2Credentials.class.d.ts +18 -0
- package/dist/types/subsystems/Security/Credentials/OAuth2Credentials.class.d.ts +14 -0
- package/dist/types/types/Performance.types.d.ts +468 -0
- package/dist/types/utils/package-manager.utils.d.ts +26 -0
- package/package.json +1 -1
- package/src/Components/APICall/APICall.class.ts +161 -161
- package/src/Components/APICall/AccessTokenManager.ts +166 -166
- package/src/Components/APICall/ArrayBufferResponse.helper.ts +58 -58
- package/src/Components/APICall/OAuth.helper.ts +447 -447
- 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 +147 -147
- 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 +72 -72
- 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 +66 -66
- 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 +313 -313
- package/src/Components/Image/imageSettings.config.ts +70 -70
- package/src/Components/ImageGenerator.class.ts +483 -483
- 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 +137 -137
- package/src/Components/MemoryDeleteKeyVal.class.ts +70 -70
- package/src/Components/MemoryReadKeyVal.class.ts +67 -67
- 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 +183 -183
- package/src/Components/ServerlessCode.class.ts +123 -123
- package/src/Components/TavilyWebSearch.class.ts +103 -103
- 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 +241 -241
- 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 +624 -624
- package/src/helpers/BinaryInput.helper.ts +331 -331
- package/src/helpers/Conversation.helper.ts +1157 -1157
- package/src/helpers/ECMASandbox.helper.ts +64 -64
- 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 +95 -95
- package/src/helpers/TemplateString.helper.ts +243 -243
- package/src/helpers/TypeChecker.helper.ts +329 -329
- package/src/index.ts +3 -3
- package/src/index.ts.bak +3 -3
- 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 +145 -145
- 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 +301 -301
- package/src/subsystems/AgentManager/AgentRequest.class.ts +51 -51
- package/src/subsystems/AgentManager/AgentRuntime.class.ts +557 -557
- 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 +171 -171
- 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 +488 -488
- 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 +465 -465
- package/src/subsystems/IO/VectorDB.service/connectors/PineconeVectorDB.class.ts +387 -387
- package/src/subsystems/IO/VectorDB.service/connectors/RAMVecrtorDB.class.ts +408 -408
- package/src/subsystems/IO/VectorDB.service/embed/BaseEmbedding.ts +107 -107
- package/src/subsystems/IO/VectorDB.service/embed/GoogleEmbedding.ts +118 -118
- package/src/subsystems/IO/VectorDB.service/embed/OpenAIEmbedding.ts +109 -109
- package/src/subsystems/IO/VectorDB.service/embed/index.ts +26 -26
- 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 +345 -345
- package/src/subsystems/LLMManager/LLM.service/LLMConnector.ts +492 -492
- package/src/subsystems/LLMManager/LLM.service/LLMCredentials.helper.ts +171 -171
- package/src/subsystems/LLMManager/LLM.service/connectors/Anthropic.class.ts +666 -666
- package/src/subsystems/LLMManager/LLM.service/connectors/Bedrock.class.ts +407 -407
- package/src/subsystems/LLMManager/LLM.service/connectors/Echo.class.ts +92 -92
- package/src/subsystems/LLMManager/LLM.service/connectors/GoogleAI.class.ts +983 -983
- package/src/subsystems/LLMManager/LLM.service/connectors/Groq.class.ts +319 -319
- package/src/subsystems/LLMManager/LLM.service/connectors/Ollama.class.ts +361 -361
- package/src/subsystems/LLMManager/LLM.service/connectors/Perplexity.class.ts +257 -257
- package/src/subsystems/LLMManager/LLM.service/connectors/VertexAI.class.ts +430 -430
- package/src/subsystems/LLMManager/LLM.service/connectors/openai/OpenAIConnector.class.ts +503 -503
- package/src/subsystems/LLMManager/LLM.service/connectors/openai/apiInterfaces/ChatCompletionsApiInterface.ts +524 -524
- 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 +1145 -1145
- package/src/subsystems/LLMManager/LLM.service/connectors/openai/apiInterfaces/constants.ts +13 -13
- 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 -32
- package/src/subsystems/LLMManager/LLM.service/connectors/xAI.class.ts +478 -478
- package/src/subsystems/LLMManager/LLM.service/index.ts +47 -47
- package/src/subsystems/LLMManager/ModelsProvider.service/ModelsProviderConnector.ts +303 -303
- package/src/subsystems/LLMManager/ModelsProvider.service/connectors/JSONModelsProvider.class.ts +280 -271
- 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 +214 -214
- 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 +277 -277
- 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/DummyAccount.class.ts +130 -130
- package/src/subsystems/Security/Account.service/connectors/JSONFileAccount.class.ts +170 -170
- package/src/subsystems/Security/Account.service/connectors/MySQLAccount.class.ts +76 -76
- 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 +520 -520
- 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/types/subsystems/LLMManager/ModelsProvider.service/connectors/SmythModelsProvider.class.d.ts +0 -39
|
@@ -1,161 +1,161 @@
|
|
|
1
|
-
import Joi from 'joi';
|
|
2
|
-
import { validateInteger } from '../utils';
|
|
3
|
-
import { jsonrepair } from 'jsonrepair';
|
|
4
|
-
import { TemplateString } from '@sre/helpers/TemplateString.helper';
|
|
5
|
-
import { JSONContent } from '@sre/helpers/JsonContent.helper';
|
|
6
|
-
import { ConnectorService } from '@sre/Core/ConnectorsService';
|
|
7
|
-
import { AccessCandidate } from '@sre/Security/AccessControl/AccessCandidate.class';
|
|
8
|
-
import { IAgent as Agent } from '@sre/types/Agent.types';
|
|
9
|
-
import { Component } from './Component.class';
|
|
10
|
-
|
|
11
|
-
// Note: LLMHelper renamed to LLMInference
|
|
12
|
-
class LLMInference {
|
|
13
|
-
static async getInstance(model: string) {
|
|
14
|
-
throw new Error('Method not implemented.');
|
|
15
|
-
}
|
|
16
|
-
}
|
|
17
|
-
|
|
18
|
-
export class DataSourceLookup extends Component {
|
|
19
|
-
protected configSchema = Joi.object({
|
|
20
|
-
topK: Joi.alternatives([Joi.string(), Joi.number()]) // Value is now a number; keep string fallback for backward compatibility.
|
|
21
|
-
|
|
22
|
-
.custom(validateInteger({ min: 0 }), 'custom range validation')
|
|
23
|
-
.label('Result Count'),
|
|
24
|
-
model: Joi.string().valid('gpt-4o-mini', 'gpt-4', 'gpt-3.5-turbo', 'gpt-4', 'gpt-3.5-turbo-16k').optional(),
|
|
25
|
-
prompt: Joi.string().max(30000).allow('').label('Prompt').optional(),
|
|
26
|
-
postprocess: Joi.boolean().strict().optional(),
|
|
27
|
-
includeMetadata: Joi.boolean().strict().optional(),
|
|
28
|
-
namespace: Joi.string().allow('').max(80).messages({
|
|
29
|
-
// Need to reserve 30 characters for the prefixed unique id
|
|
30
|
-
'string.max': `The length of the 'namespace' name must be 50 characters or fewer.`,
|
|
31
|
-
}),
|
|
32
|
-
scoreThreshold: Joi.number().optional().label('Score Threshold'),
|
|
33
|
-
includeScore: Joi.boolean().optional().label('Include Score'),
|
|
34
|
-
});
|
|
35
|
-
constructor() {
|
|
36
|
-
super();
|
|
37
|
-
}
|
|
38
|
-
init() {}
|
|
39
|
-
async process(input, config, agent: Agent) {
|
|
40
|
-
await super.process(input, config, agent);
|
|
41
|
-
const componentId = config.id;
|
|
42
|
-
const component = agent.components[componentId];
|
|
43
|
-
const teamId = agent.teamId;
|
|
44
|
-
let debugOutput = agent.agentRuntime?.debug ? '== Data Source Lookup Log ==\n' : null;
|
|
45
|
-
|
|
46
|
-
const outputs = {};
|
|
47
|
-
for (let con of config.outputs) {
|
|
48
|
-
if (con.default) continue;
|
|
49
|
-
outputs[con.name] = '';
|
|
50
|
-
}
|
|
51
|
-
|
|
52
|
-
const namespace = config.data.namespace.split('_').slice(1).join('_') || config.data.namespace;
|
|
53
|
-
const model = config.data?.model || 'gpt-4o-mini';
|
|
54
|
-
const prompt = config.data?.prompt?.trim?.() || '';
|
|
55
|
-
const postprocess = config.data?.postprocess || false;
|
|
56
|
-
const includeMetadata = config.data?.includeMetadata || false;
|
|
57
|
-
|
|
58
|
-
const scoreThreshold = config.data?.scoreThreshold || 0.001; // Use low score (0.001) to return most results for backward compatibility
|
|
59
|
-
const includeScore = config.data?.includeScore || false;
|
|
60
|
-
|
|
61
|
-
const _input = typeof input.Query === 'string' ? input.Query : JSON.stringify(input.Query);
|
|
62
|
-
|
|
63
|
-
const topK = Math.max(config.data?.topK || 50, 50);
|
|
64
|
-
|
|
65
|
-
let vectorDbConnector = ConnectorService.getVectorDBConnector();
|
|
66
|
-
let existingNs = await vectorDbConnector.requester(AccessCandidate.team(teamId)).namespaceExists(namespace);
|
|
67
|
-
|
|
68
|
-
if (!existingNs) {
|
|
69
|
-
throw new Error(`Namespace ${namespace} does not exist`);
|
|
70
|
-
}
|
|
71
|
-
|
|
72
|
-
let results: string[] | { content: string; metadata: any; score?: number }[];
|
|
73
|
-
let _error;
|
|
74
|
-
try {
|
|
75
|
-
const response = await vectorDbConnector
|
|
76
|
-
.requester(AccessCandidate.team(teamId))
|
|
77
|
-
.search(namespace, _input, { topK, includeMetadata: true });
|
|
78
|
-
|
|
79
|
-
results = response.slice(0, config.data.topK).map((result) => ({
|
|
80
|
-
content: result.text,
|
|
81
|
-
metadata: result.metadata,
|
|
82
|
-
score: result.score, // use a very low score to return
|
|
83
|
-
}));
|
|
84
|
-
|
|
85
|
-
results = results.filter((result) => result.score >= scoreThreshold);
|
|
86
|
-
|
|
87
|
-
// Transform results based on inclusion flags
|
|
88
|
-
results = results.map((result) => {
|
|
89
|
-
const transformedResult: any = {
|
|
90
|
-
content: result.content,
|
|
91
|
-
};
|
|
92
|
-
|
|
93
|
-
if (includeMetadata) {
|
|
94
|
-
// legacy user-specific metadata key [result.metadata?.metadata]
|
|
95
|
-
transformedResult.metadata = this.parseMetadata(result.metadata || result.metadata?.metadata);
|
|
96
|
-
}
|
|
97
|
-
|
|
98
|
-
if (includeScore) {
|
|
99
|
-
transformedResult.score = result.score;
|
|
100
|
-
}
|
|
101
|
-
|
|
102
|
-
// If neither metadata nor score is included, return just the content string
|
|
103
|
-
return includeMetadata || includeScore ? transformedResult : result.content;
|
|
104
|
-
});
|
|
105
|
-
|
|
106
|
-
debugOutput += `[Results] \nLoaded ${results.length} results from namespace: ${namespace}\n\n`;
|
|
107
|
-
} catch (error) {
|
|
108
|
-
_error = error.toString();
|
|
109
|
-
}
|
|
110
|
-
|
|
111
|
-
//is there a post processing LLM?
|
|
112
|
-
|
|
113
|
-
//TODO : better handling of context window exceeding max length
|
|
114
|
-
if (postprocess && prompt) {
|
|
115
|
-
const promises: any = [];
|
|
116
|
-
for (let result of results) {
|
|
117
|
-
const _prompt = TemplateString(prompt.replace(/{{result}}/g, JSON.stringify(result))).parse(input).result;
|
|
118
|
-
const llmInference = await LLMInference.getInstance(model);
|
|
119
|
-
// const req = llmInference.prompt({ query: _prompt, params: { ...config, agentId: agent.id } }).catch((error) => ({ error: error }));
|
|
120
|
-
// promises.push(req);
|
|
121
|
-
}
|
|
122
|
-
results = await Promise.all(promises);
|
|
123
|
-
for (let i = 0; i < results.length; i++) {
|
|
124
|
-
if (typeof results[i] === 'string') {
|
|
125
|
-
// results[i] = parseJson(results[i]);
|
|
126
|
-
results[i] = JSONContent(results[i] as string).tryParse();
|
|
127
|
-
}
|
|
128
|
-
}
|
|
129
|
-
}
|
|
130
|
-
|
|
131
|
-
const totalLength = JSON.stringify(results).length;
|
|
132
|
-
debugOutput += `[Total Length] \n${totalLength}\n\n`;
|
|
133
|
-
|
|
134
|
-
return {
|
|
135
|
-
Results: results,
|
|
136
|
-
_error,
|
|
137
|
-
_debug: debugOutput,
|
|
138
|
-
//_debug: `Query: ${_input}. \nTotal Length = ${totalLength} \nResults: ${JSON.stringify(results)}`,
|
|
139
|
-
};
|
|
140
|
-
}
|
|
141
|
-
|
|
142
|
-
// private async checkIfTeamOwnsNamespace(teamId: string, namespaceId: string, token: string) {
|
|
143
|
-
// try {
|
|
144
|
-
// const res = await SmythAPIHelper.fromAuth({ token }).mwSysAPI.get(`/vectors/namespaces/${namespaceId}`);
|
|
145
|
-
// if (res.data?.namespace?.teamId !== teamId) {
|
|
146
|
-
// throw new Error(`Namespace does not exist`);
|
|
147
|
-
// }
|
|
148
|
-
// return true;
|
|
149
|
-
// } catch (err) {
|
|
150
|
-
// throw new Error(`Namespace does not exist`);
|
|
151
|
-
// }
|
|
152
|
-
// }
|
|
153
|
-
|
|
154
|
-
private parseMetadata(metadata: any) {
|
|
155
|
-
try {
|
|
156
|
-
return JSON.parse(jsonrepair(metadata));
|
|
157
|
-
} catch (err) {
|
|
158
|
-
return metadata;
|
|
159
|
-
}
|
|
160
|
-
}
|
|
161
|
-
}
|
|
1
|
+
import Joi from 'joi';
|
|
2
|
+
import { validateInteger } from '../utils';
|
|
3
|
+
import { jsonrepair } from 'jsonrepair';
|
|
4
|
+
import { TemplateString } from '@sre/helpers/TemplateString.helper';
|
|
5
|
+
import { JSONContent } from '@sre/helpers/JsonContent.helper';
|
|
6
|
+
import { ConnectorService } from '@sre/Core/ConnectorsService';
|
|
7
|
+
import { AccessCandidate } from '@sre/Security/AccessControl/AccessCandidate.class';
|
|
8
|
+
import { IAgent as Agent } from '@sre/types/Agent.types';
|
|
9
|
+
import { Component } from './Component.class';
|
|
10
|
+
|
|
11
|
+
// Note: LLMHelper renamed to LLMInference
|
|
12
|
+
class LLMInference {
|
|
13
|
+
static async getInstance(model: string) {
|
|
14
|
+
throw new Error('Method not implemented.');
|
|
15
|
+
}
|
|
16
|
+
}
|
|
17
|
+
|
|
18
|
+
export class DataSourceLookup extends Component {
|
|
19
|
+
protected configSchema = Joi.object({
|
|
20
|
+
topK: Joi.alternatives([Joi.string(), Joi.number()]) // Value is now a number; keep string fallback for backward compatibility.
|
|
21
|
+
|
|
22
|
+
.custom(validateInteger({ min: 0 }), 'custom range validation')
|
|
23
|
+
.label('Result Count'),
|
|
24
|
+
model: Joi.string().valid('gpt-4o-mini', 'gpt-4', 'gpt-3.5-turbo', 'gpt-4', 'gpt-3.5-turbo-16k').optional(),
|
|
25
|
+
prompt: Joi.string().max(30000).allow('').label('Prompt').optional(),
|
|
26
|
+
postprocess: Joi.boolean().strict().optional(),
|
|
27
|
+
includeMetadata: Joi.boolean().strict().optional(),
|
|
28
|
+
namespace: Joi.string().allow('').max(80).messages({
|
|
29
|
+
// Need to reserve 30 characters for the prefixed unique id
|
|
30
|
+
'string.max': `The length of the 'namespace' name must be 50 characters or fewer.`,
|
|
31
|
+
}),
|
|
32
|
+
scoreThreshold: Joi.number().optional().label('Score Threshold'),
|
|
33
|
+
includeScore: Joi.boolean().optional().label('Include Score'),
|
|
34
|
+
});
|
|
35
|
+
constructor() {
|
|
36
|
+
super();
|
|
37
|
+
}
|
|
38
|
+
init() {}
|
|
39
|
+
async process(input, config, agent: Agent) {
|
|
40
|
+
await super.process(input, config, agent);
|
|
41
|
+
const componentId = config.id;
|
|
42
|
+
const component = agent.components[componentId];
|
|
43
|
+
const teamId = agent.teamId;
|
|
44
|
+
let debugOutput = agent.agentRuntime?.debug ? '== Data Source Lookup Log ==\n' : null;
|
|
45
|
+
|
|
46
|
+
const outputs = {};
|
|
47
|
+
for (let con of config.outputs) {
|
|
48
|
+
if (con.default) continue;
|
|
49
|
+
outputs[con.name] = '';
|
|
50
|
+
}
|
|
51
|
+
|
|
52
|
+
const namespace = config.data.namespace.split('_').slice(1).join('_') || config.data.namespace;
|
|
53
|
+
const model = config.data?.model || 'gpt-4o-mini';
|
|
54
|
+
const prompt = config.data?.prompt?.trim?.() || '';
|
|
55
|
+
const postprocess = config.data?.postprocess || false;
|
|
56
|
+
const includeMetadata = config.data?.includeMetadata || false;
|
|
57
|
+
|
|
58
|
+
const scoreThreshold = config.data?.scoreThreshold || 0.001; // Use low score (0.001) to return most results for backward compatibility
|
|
59
|
+
const includeScore = config.data?.includeScore || false;
|
|
60
|
+
|
|
61
|
+
const _input = typeof input.Query === 'string' ? input.Query : JSON.stringify(input.Query);
|
|
62
|
+
|
|
63
|
+
const topK = Math.max(config.data?.topK || 50, 50);
|
|
64
|
+
|
|
65
|
+
let vectorDbConnector = ConnectorService.getVectorDBConnector();
|
|
66
|
+
let existingNs = await vectorDbConnector.requester(AccessCandidate.team(teamId)).namespaceExists(namespace);
|
|
67
|
+
|
|
68
|
+
if (!existingNs) {
|
|
69
|
+
throw new Error(`Namespace ${namespace} does not exist`);
|
|
70
|
+
}
|
|
71
|
+
|
|
72
|
+
let results: string[] | { content: string; metadata: any; score?: number }[];
|
|
73
|
+
let _error;
|
|
74
|
+
try {
|
|
75
|
+
const response = await vectorDbConnector
|
|
76
|
+
.requester(AccessCandidate.team(teamId))
|
|
77
|
+
.search(namespace, _input, { topK, includeMetadata: true });
|
|
78
|
+
|
|
79
|
+
results = response.slice(0, config.data.topK).map((result) => ({
|
|
80
|
+
content: result.text,
|
|
81
|
+
metadata: result.metadata,
|
|
82
|
+
score: result.score, // use a very low score to return
|
|
83
|
+
}));
|
|
84
|
+
|
|
85
|
+
results = results.filter((result) => result.score >= scoreThreshold);
|
|
86
|
+
|
|
87
|
+
// Transform results based on inclusion flags
|
|
88
|
+
results = results.map((result) => {
|
|
89
|
+
const transformedResult: any = {
|
|
90
|
+
content: result.content,
|
|
91
|
+
};
|
|
92
|
+
|
|
93
|
+
if (includeMetadata) {
|
|
94
|
+
// legacy user-specific metadata key [result.metadata?.metadata]
|
|
95
|
+
transformedResult.metadata = this.parseMetadata(result.metadata || result.metadata?.metadata);
|
|
96
|
+
}
|
|
97
|
+
|
|
98
|
+
if (includeScore) {
|
|
99
|
+
transformedResult.score = result.score;
|
|
100
|
+
}
|
|
101
|
+
|
|
102
|
+
// If neither metadata nor score is included, return just the content string
|
|
103
|
+
return includeMetadata || includeScore ? transformedResult : result.content;
|
|
104
|
+
});
|
|
105
|
+
|
|
106
|
+
debugOutput += `[Results] \nLoaded ${results.length} results from namespace: ${namespace}\n\n`;
|
|
107
|
+
} catch (error) {
|
|
108
|
+
_error = error.toString();
|
|
109
|
+
}
|
|
110
|
+
|
|
111
|
+
//is there a post processing LLM?
|
|
112
|
+
|
|
113
|
+
//TODO : better handling of context window exceeding max length
|
|
114
|
+
if (postprocess && prompt) {
|
|
115
|
+
const promises: any = [];
|
|
116
|
+
for (let result of results) {
|
|
117
|
+
const _prompt = TemplateString(prompt.replace(/{{result}}/g, JSON.stringify(result))).parse(input).result;
|
|
118
|
+
const llmInference = await LLMInference.getInstance(model);
|
|
119
|
+
// const req = llmInference.prompt({ query: _prompt, params: { ...config, agentId: agent.id } }).catch((error) => ({ error: error }));
|
|
120
|
+
// promises.push(req);
|
|
121
|
+
}
|
|
122
|
+
results = await Promise.all(promises);
|
|
123
|
+
for (let i = 0; i < results.length; i++) {
|
|
124
|
+
if (typeof results[i] === 'string') {
|
|
125
|
+
// results[i] = parseJson(results[i]);
|
|
126
|
+
results[i] = JSONContent(results[i] as string).tryParse();
|
|
127
|
+
}
|
|
128
|
+
}
|
|
129
|
+
}
|
|
130
|
+
|
|
131
|
+
const totalLength = JSON.stringify(results).length;
|
|
132
|
+
debugOutput += `[Total Length] \n${totalLength}\n\n`;
|
|
133
|
+
|
|
134
|
+
return {
|
|
135
|
+
Results: results,
|
|
136
|
+
_error,
|
|
137
|
+
_debug: debugOutput,
|
|
138
|
+
//_debug: `Query: ${_input}. \nTotal Length = ${totalLength} \nResults: ${JSON.stringify(results)}`,
|
|
139
|
+
};
|
|
140
|
+
}
|
|
141
|
+
|
|
142
|
+
// private async checkIfTeamOwnsNamespace(teamId: string, namespaceId: string, token: string) {
|
|
143
|
+
// try {
|
|
144
|
+
// const res = await SmythAPIHelper.fromAuth({ token }).mwSysAPI.get(`/vectors/namespaces/${namespaceId}`);
|
|
145
|
+
// if (res.data?.namespace?.teamId !== teamId) {
|
|
146
|
+
// throw new Error(`Namespace does not exist`);
|
|
147
|
+
// }
|
|
148
|
+
// return true;
|
|
149
|
+
// } catch (err) {
|
|
150
|
+
// throw new Error(`Namespace does not exist`);
|
|
151
|
+
// }
|
|
152
|
+
// }
|
|
153
|
+
|
|
154
|
+
private parseMetadata(metadata: any) {
|
|
155
|
+
try {
|
|
156
|
+
return JSON.parse(jsonrepair(metadata));
|
|
157
|
+
} catch (err) {
|
|
158
|
+
return metadata;
|
|
159
|
+
}
|
|
160
|
+
}
|
|
161
|
+
}
|
|
@@ -1,72 +1,72 @@
|
|
|
1
|
-
import { IAgent as Agent } from '@sre/types/Agent.types';
|
|
2
|
-
import { Component } from './Component.class';
|
|
3
|
-
import Joi from 'joi';
|
|
4
|
-
import { ConnectorService } from '@sre/Core/ConnectorsService';
|
|
5
|
-
import { CodeExecutionResult } from '@sre/ComputeManager/Code.service/CodeConnector';
|
|
6
|
-
|
|
7
|
-
export class ECMASandbox extends Component {
|
|
8
|
-
protected configSchema = Joi.object({
|
|
9
|
-
code: Joi.string().max(500000).allow('').label('Code'),
|
|
10
|
-
});
|
|
11
|
-
constructor() {
|
|
12
|
-
super();
|
|
13
|
-
}
|
|
14
|
-
init() {}
|
|
15
|
-
async process(input, config, agent: Agent) {
|
|
16
|
-
await super.process(input, config, agent);
|
|
17
|
-
|
|
18
|
-
const logger = this.createComponentLogger(agent, config);
|
|
19
|
-
try {
|
|
20
|
-
let Output: any = {};
|
|
21
|
-
let _error = undefined;
|
|
22
|
-
|
|
23
|
-
let codeInputs = {};
|
|
24
|
-
for (let fieldName in input) {
|
|
25
|
-
const _type = typeof input[fieldName];
|
|
26
|
-
switch (_type) {
|
|
27
|
-
case 'string':
|
|
28
|
-
const b64encoded = Buffer.from(input[fieldName]).toString('base64');
|
|
29
|
-
codeInputs[fieldName] = `___internal.b64decode('${b64encoded}')`;
|
|
30
|
-
break;
|
|
31
|
-
case 'number':
|
|
32
|
-
case 'boolean':
|
|
33
|
-
codeInputs[fieldName] = input[fieldName];
|
|
34
|
-
break;
|
|
35
|
-
default:
|
|
36
|
-
codeInputs[fieldName] = input[fieldName];
|
|
37
|
-
break;
|
|
38
|
-
}
|
|
39
|
-
}
|
|
40
|
-
|
|
41
|
-
//const inputVarsCode = this.generateInputVarCode(codeInputs);
|
|
42
|
-
//const code = inputVarsCode + '\n' + config.data.code;
|
|
43
|
-
const code = config.data.code;
|
|
44
|
-
|
|
45
|
-
logger.debug(`Running code: \n${code}\n`);
|
|
46
|
-
|
|
47
|
-
const ecmaCodeConnector = ConnectorService.getCodeConnector('ECMASandbox');
|
|
48
|
-
|
|
49
|
-
const executionResponse: CodeExecutionResult = await ecmaCodeConnector.agent(agent.id).execute(config.id, { code, inputs: input });
|
|
50
|
-
if (executionResponse.success) {
|
|
51
|
-
Output = executionResponse.output;
|
|
52
|
-
} else {
|
|
53
|
-
Output = undefined;
|
|
54
|
-
_error = executionResponse.errors;
|
|
55
|
-
}
|
|
56
|
-
|
|
57
|
-
return { Output, _error, _debug: logger.output };
|
|
58
|
-
} catch (err: any) {
|
|
59
|
-
const _error = err?.response?.data || err?.message || err.toString();
|
|
60
|
-
logger.error(`Error running code: \n${_error}\n`);
|
|
61
|
-
return { Output: undefined, _error, _debug: logger.output };
|
|
62
|
-
}
|
|
63
|
-
}
|
|
64
|
-
|
|
65
|
-
private generateInputVarCode(input: Record<string, any>) {
|
|
66
|
-
let input_vars = '';
|
|
67
|
-
for (const key in input) {
|
|
68
|
-
input_vars += `var ${key} = ${input[key]};\n`;
|
|
69
|
-
}
|
|
70
|
-
return input_vars;
|
|
71
|
-
}
|
|
72
|
-
}
|
|
1
|
+
import { IAgent as Agent } from '@sre/types/Agent.types';
|
|
2
|
+
import { Component } from './Component.class';
|
|
3
|
+
import Joi from 'joi';
|
|
4
|
+
import { ConnectorService } from '@sre/Core/ConnectorsService';
|
|
5
|
+
import { CodeExecutionResult } from '@sre/ComputeManager/Code.service/CodeConnector';
|
|
6
|
+
|
|
7
|
+
export class ECMASandbox extends Component {
|
|
8
|
+
protected configSchema = Joi.object({
|
|
9
|
+
code: Joi.string().max(500000).allow('').label('Code'),
|
|
10
|
+
});
|
|
11
|
+
constructor() {
|
|
12
|
+
super();
|
|
13
|
+
}
|
|
14
|
+
init() {}
|
|
15
|
+
async process(input, config, agent: Agent) {
|
|
16
|
+
await super.process(input, config, agent);
|
|
17
|
+
|
|
18
|
+
const logger = this.createComponentLogger(agent, config);
|
|
19
|
+
try {
|
|
20
|
+
let Output: any = {};
|
|
21
|
+
let _error = undefined;
|
|
22
|
+
|
|
23
|
+
let codeInputs = {};
|
|
24
|
+
for (let fieldName in input) {
|
|
25
|
+
const _type = typeof input[fieldName];
|
|
26
|
+
switch (_type) {
|
|
27
|
+
case 'string':
|
|
28
|
+
const b64encoded = Buffer.from(input[fieldName]).toString('base64');
|
|
29
|
+
codeInputs[fieldName] = `___internal.b64decode('${b64encoded}')`;
|
|
30
|
+
break;
|
|
31
|
+
case 'number':
|
|
32
|
+
case 'boolean':
|
|
33
|
+
codeInputs[fieldName] = input[fieldName];
|
|
34
|
+
break;
|
|
35
|
+
default:
|
|
36
|
+
codeInputs[fieldName] = input[fieldName];
|
|
37
|
+
break;
|
|
38
|
+
}
|
|
39
|
+
}
|
|
40
|
+
|
|
41
|
+
//const inputVarsCode = this.generateInputVarCode(codeInputs);
|
|
42
|
+
//const code = inputVarsCode + '\n' + config.data.code;
|
|
43
|
+
const code = config.data.code;
|
|
44
|
+
|
|
45
|
+
logger.debug(`Running code: \n${code}\n`);
|
|
46
|
+
|
|
47
|
+
const ecmaCodeConnector = ConnectorService.getCodeConnector('ECMASandbox');
|
|
48
|
+
|
|
49
|
+
const executionResponse: CodeExecutionResult = await ecmaCodeConnector.agent(agent.id).execute(config.id, { code, inputs: input });
|
|
50
|
+
if (executionResponse.success) {
|
|
51
|
+
Output = executionResponse.output;
|
|
52
|
+
} else {
|
|
53
|
+
Output = undefined;
|
|
54
|
+
_error = executionResponse.errors;
|
|
55
|
+
}
|
|
56
|
+
|
|
57
|
+
return { Output, _error, _debug: logger.output };
|
|
58
|
+
} catch (err: any) {
|
|
59
|
+
const _error = err?.response?.data || err?.message || err.toString();
|
|
60
|
+
logger.error(`Error running code: \n${_error}\n`);
|
|
61
|
+
return { Output: undefined, _error, _debug: logger.output };
|
|
62
|
+
}
|
|
63
|
+
}
|
|
64
|
+
|
|
65
|
+
private generateInputVarCode(input: Record<string, any>) {
|
|
66
|
+
let input_vars = '';
|
|
67
|
+
for (const key in input) {
|
|
68
|
+
input_vars += `var ${key} = ${input[key]};\n`;
|
|
69
|
+
}
|
|
70
|
+
return input_vars;
|
|
71
|
+
}
|
|
72
|
+
}
|
|
@@ -1,29 +1,29 @@
|
|
|
1
|
-
import { Component } from './Component.class';
|
|
2
|
-
import { IAgent as Agent } from '@sre/types/Agent.types';
|
|
3
|
-
|
|
4
|
-
export class FEncDec extends Component {
|
|
5
|
-
constructor() {
|
|
6
|
-
super();
|
|
7
|
-
}
|
|
8
|
-
init() {}
|
|
9
|
-
async process(input, config, agent: Agent) {
|
|
10
|
-
await super.process(input, config, agent);
|
|
11
|
-
const logger = this.createComponentLogger(agent, config);
|
|
12
|
-
try {
|
|
13
|
-
const _error = undefined;
|
|
14
|
-
|
|
15
|
-
const data = input.Data;
|
|
16
|
-
const action = config.data.action || 'Encode';
|
|
17
|
-
const encoding = config.data.encoding;
|
|
18
|
-
logger.debug(`${encoding} ${action} data`);
|
|
19
|
-
|
|
20
|
-
const Output = action == 'Encode' ? Buffer.from(data).toString(encoding) : Buffer.from(data, encoding).toString('utf8');
|
|
21
|
-
|
|
22
|
-
return { Output, _error, _debug: logger.output };
|
|
23
|
-
} catch (err: any) {
|
|
24
|
-
const _error = err?.response?.data || err?.message || err.toString();
|
|
25
|
-
logger.error(` Error processing data \n${_error}\n`);
|
|
26
|
-
return { hash: undefined, _error, _debug: logger.output };
|
|
27
|
-
}
|
|
28
|
-
}
|
|
29
|
-
}
|
|
1
|
+
import { Component } from './Component.class';
|
|
2
|
+
import { IAgent as Agent } from '@sre/types/Agent.types';
|
|
3
|
+
|
|
4
|
+
export class FEncDec extends Component {
|
|
5
|
+
constructor() {
|
|
6
|
+
super();
|
|
7
|
+
}
|
|
8
|
+
init() {}
|
|
9
|
+
async process(input, config, agent: Agent) {
|
|
10
|
+
await super.process(input, config, agent);
|
|
11
|
+
const logger = this.createComponentLogger(agent, config);
|
|
12
|
+
try {
|
|
13
|
+
const _error = undefined;
|
|
14
|
+
|
|
15
|
+
const data = input.Data;
|
|
16
|
+
const action = config.data.action || 'Encode';
|
|
17
|
+
const encoding = config.data.encoding;
|
|
18
|
+
logger.debug(`${encoding} ${action} data`);
|
|
19
|
+
|
|
20
|
+
const Output = action == 'Encode' ? Buffer.from(data).toString(encoding) : Buffer.from(data, encoding).toString('utf8');
|
|
21
|
+
|
|
22
|
+
return { Output, _error, _debug: logger.output };
|
|
23
|
+
} catch (err: any) {
|
|
24
|
+
const _error = err?.response?.data || err?.message || err.toString();
|
|
25
|
+
logger.error(` Error processing data \n${_error}\n`);
|
|
26
|
+
return { hash: undefined, _error, _debug: logger.output };
|
|
27
|
+
}
|
|
28
|
+
}
|
|
29
|
+
}
|
|
@@ -1,33 +1,33 @@
|
|
|
1
|
-
import { Component } from './Component.class';
|
|
2
|
-
import { IAgent as Agent } from '@sre/types/Agent.types';
|
|
3
|
-
import crypto from 'crypto';
|
|
4
|
-
|
|
5
|
-
export class FHash extends Component {
|
|
6
|
-
constructor() {
|
|
7
|
-
super();
|
|
8
|
-
}
|
|
9
|
-
init() {}
|
|
10
|
-
async process(input, config, agent: Agent) {
|
|
11
|
-
await super.process(input, config, agent);
|
|
12
|
-
const logger = this.createComponentLogger(agent, config);
|
|
13
|
-
try {
|
|
14
|
-
const _error = undefined;
|
|
15
|
-
|
|
16
|
-
const data = input.Data;
|
|
17
|
-
const algorithm = config.data.algorithm;
|
|
18
|
-
const encoding = config.data.encoding;
|
|
19
|
-
logger.debug(` Generating hash using ${algorithm} algorithm and ${encoding} encoding`);
|
|
20
|
-
|
|
21
|
-
const hashAlgo = crypto.createHash(algorithm);
|
|
22
|
-
hashAlgo.update(data);
|
|
23
|
-
|
|
24
|
-
const Hash = hashAlgo.digest(encoding);
|
|
25
|
-
logger.debug(` Generated hash: ${Hash}`);
|
|
26
|
-
return { Hash, _error, _debug: logger.output };
|
|
27
|
-
} catch (err: any) {
|
|
28
|
-
const _error = err?.response?.data || err?.message || err.toString();
|
|
29
|
-
logger.error(` Error generating hash \n${_error}\n`);
|
|
30
|
-
return { hash: undefined, _error, _debug: logger.output };
|
|
31
|
-
}
|
|
32
|
-
}
|
|
33
|
-
}
|
|
1
|
+
import { Component } from './Component.class';
|
|
2
|
+
import { IAgent as Agent } from '@sre/types/Agent.types';
|
|
3
|
+
import crypto from 'crypto';
|
|
4
|
+
|
|
5
|
+
export class FHash extends Component {
|
|
6
|
+
constructor() {
|
|
7
|
+
super();
|
|
8
|
+
}
|
|
9
|
+
init() {}
|
|
10
|
+
async process(input, config, agent: Agent) {
|
|
11
|
+
await super.process(input, config, agent);
|
|
12
|
+
const logger = this.createComponentLogger(agent, config);
|
|
13
|
+
try {
|
|
14
|
+
const _error = undefined;
|
|
15
|
+
|
|
16
|
+
const data = input.Data;
|
|
17
|
+
const algorithm = config.data.algorithm;
|
|
18
|
+
const encoding = config.data.encoding;
|
|
19
|
+
logger.debug(` Generating hash using ${algorithm} algorithm and ${encoding} encoding`);
|
|
20
|
+
|
|
21
|
+
const hashAlgo = crypto.createHash(algorithm);
|
|
22
|
+
hashAlgo.update(data);
|
|
23
|
+
|
|
24
|
+
const Hash = hashAlgo.digest(encoding);
|
|
25
|
+
logger.debug(` Generated hash: ${Hash}`);
|
|
26
|
+
return { Hash, _error, _debug: logger.output };
|
|
27
|
+
} catch (err: any) {
|
|
28
|
+
const _error = err?.response?.data || err?.message || err.toString();
|
|
29
|
+
logger.error(` Error generating hash \n${_error}\n`);
|
|
30
|
+
return { hash: undefined, _error, _debug: logger.output };
|
|
31
|
+
}
|
|
32
|
+
}
|
|
33
|
+
}
|