@smythos/sre 1.6.0 → 1.6.8
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/index.js +43 -43
- package/dist/index.js.map +1 -1
- package/dist/types/index.d.ts +1 -0
- package/dist/types/subsystems/LLMManager/LLM.service/connectors/Ollama.class.d.ts +45 -0
- package/dist/types/subsystems/LLMManager/ModelsProvider.service/connectors/SmythModelsProvider.class.d.ts +39 -0
- package/dist/types/types/LLM.types.d.ts +2 -0
- package/package.json +2 -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 +314 -314
- 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 -599
- 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 +4 -3
- package/src/index.ts.bak +4 -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 -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 +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 +362 -0
- 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 -44
- package/src/subsystems/LLMManager/ModelsProvider.service/ModelsProviderConnector.ts +303 -303
- package/src/subsystems/LLMManager/ModelsProvider.service/connectors/JSONModelsProvider.class.ts +271 -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 -519
- 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/Components/Triggers/GmailTrigger.class.d.ts +0 -13
- package/dist/types/Components/Triggers/Trigger.class.d.ts +0 -3
- package/dist/types/helpers/AIPerformanceAnalyzer.helper.d.ts +0 -45
- package/dist/types/helpers/AIPerformanceCollector.helper.d.ts +0 -111
- package/dist/types/subsystems/IO/Storage.service/connectors/AzureBlobStorage.class.d.ts +0 -211
- package/dist/types/subsystems/IO/VectorDB.service/connectors/WeaviateVectorDB.class.d.ts +0 -187
- package/dist/types/subsystems/PerformanceManager/Performance.service/PerformanceConnector.d.ts +0 -102
- package/dist/types/subsystems/PerformanceManager/Performance.service/connectors/LocalPerformanceConnector.class.d.ts +0 -100
- package/dist/types/subsystems/PerformanceManager/Performance.service/index.d.ts +0 -22
- package/dist/types/types/Performance.types.d.ts +0 -468
- package/dist/types/utils/package-manager.utils.d.ts +0 -26
package/dist/types/index.d.ts
CHANGED
|
@@ -168,6 +168,7 @@ export * from './subsystems/LLMManager/LLM.service/connectors/Bedrock.class';
|
|
|
168
168
|
export * from './subsystems/LLMManager/LLM.service/connectors/Echo.class';
|
|
169
169
|
export * from './subsystems/LLMManager/LLM.service/connectors/GoogleAI.class';
|
|
170
170
|
export * from './subsystems/LLMManager/LLM.service/connectors/Groq.class';
|
|
171
|
+
export * from './subsystems/LLMManager/LLM.service/connectors/Ollama.class';
|
|
171
172
|
export * from './subsystems/LLMManager/LLM.service/connectors/Perplexity.class';
|
|
172
173
|
export * from './subsystems/LLMManager/LLM.service/connectors/VertexAI.class';
|
|
173
174
|
export * from './subsystems/LLMManager/LLM.service/connectors/xAI.class';
|
|
@@ -0,0 +1,45 @@
|
|
|
1
|
+
import EventEmitter from 'events';
|
|
2
|
+
import { TLLMMessageBlock, ToolData, APIKeySource, ILLMRequestFuncParams, TLLMChatResponse, TLLMPreparedParams, TLLMToolResultMessageBlock, TLLMRequestBody } from '@sre/types/LLM.types';
|
|
3
|
+
import { LLMConnector } from '../LLMConnector';
|
|
4
|
+
export declare class OllamaConnector extends LLMConnector {
|
|
5
|
+
name: string;
|
|
6
|
+
private getClient;
|
|
7
|
+
protected request({ acRequest, body, context }: ILLMRequestFuncParams): Promise<TLLMChatResponse>;
|
|
8
|
+
protected streamRequest({ acRequest, body, context }: ILLMRequestFuncParams): Promise<EventEmitter>;
|
|
9
|
+
protected reqBodyAdapter(params: TLLMPreparedParams): Promise<TLLMRequestBody>;
|
|
10
|
+
protected reportUsage(usage: {
|
|
11
|
+
prompt_tokens: number;
|
|
12
|
+
completion_tokens: number;
|
|
13
|
+
total_tokens: number;
|
|
14
|
+
}, metadata: {
|
|
15
|
+
modelEntryName: string;
|
|
16
|
+
keySource: APIKeySource;
|
|
17
|
+
agentId: string;
|
|
18
|
+
teamId: string;
|
|
19
|
+
}): {
|
|
20
|
+
sourceId: string;
|
|
21
|
+
input_tokens: number;
|
|
22
|
+
output_tokens: number;
|
|
23
|
+
input_tokens_cache_write: number;
|
|
24
|
+
input_tokens_cache_read: number;
|
|
25
|
+
keySource: APIKeySource;
|
|
26
|
+
agentId: string;
|
|
27
|
+
teamId: string;
|
|
28
|
+
};
|
|
29
|
+
transformToolMessageBlocks({ messageBlock, toolsData, }: {
|
|
30
|
+
messageBlock: TLLMMessageBlock;
|
|
31
|
+
toolsData: ToolData[];
|
|
32
|
+
}): TLLMToolResultMessageBlock[];
|
|
33
|
+
formatToolsConfig({ type, toolDefinitions, toolChoice }: {
|
|
34
|
+
type?: string;
|
|
35
|
+
toolDefinitions: any;
|
|
36
|
+
toolChoice?: string;
|
|
37
|
+
}): {
|
|
38
|
+
tools: any[];
|
|
39
|
+
tool_choice: string;
|
|
40
|
+
} | {
|
|
41
|
+
tools?: undefined;
|
|
42
|
+
tool_choice?: undefined;
|
|
43
|
+
};
|
|
44
|
+
getConsistentMessages(messages: TLLMMessageBlock[]): TLLMMessageBlock[];
|
|
45
|
+
}
|
|
@@ -0,0 +1,39 @@
|
|
|
1
|
+
import { AccessRequest } from '@sre/Security/AccessControl/AccessRequest.class';
|
|
2
|
+
import { ModelsProviderConnector } from '../ModelsProviderConnector';
|
|
3
|
+
import { IAccessCandidate } from '@sre/types/ACL.types';
|
|
4
|
+
import { ACL } from '@sre/Security/AccessControl/ACL.class';
|
|
5
|
+
import { TLLMModelsList } from '@sre/types/LLM.types';
|
|
6
|
+
type SmythModelsProviderConfig = {
|
|
7
|
+
/**
|
|
8
|
+
* The models to be used.
|
|
9
|
+
*
|
|
10
|
+
* If a string is provided, it will be used as the directory name to load the models from.
|
|
11
|
+
* If a TLLMModelsList is provided, it will be used as the models to be used.
|
|
12
|
+
*
|
|
13
|
+
*/
|
|
14
|
+
models?: string | TLLMModelsList;
|
|
15
|
+
/**
|
|
16
|
+
* The mode to be used.
|
|
17
|
+
*
|
|
18
|
+
* If 'append' is used, the models will be appended to the existing models.
|
|
19
|
+
* If 'replace' is used, the existing models will be replaced with the new models.
|
|
20
|
+
*/
|
|
21
|
+
mode?: 'merge' | 'replace';
|
|
22
|
+
};
|
|
23
|
+
export declare class SmythModelsProvider extends ModelsProviderConnector {
|
|
24
|
+
protected _settings?: SmythModelsProviderConfig;
|
|
25
|
+
name: string;
|
|
26
|
+
private models;
|
|
27
|
+
constructor(_settings?: SmythModelsProviderConfig);
|
|
28
|
+
start(): Promise<void>;
|
|
29
|
+
addModels(acRequest: AccessRequest, models: TLLMModelsList): Promise<void>;
|
|
30
|
+
getModels(acRequest: AccessRequest): Promise<any>;
|
|
31
|
+
getResourceACL(resourceId: string, candidate: IAccessCandidate): Promise<ACL>;
|
|
32
|
+
private reindexModels;
|
|
33
|
+
private scanDirectoryForModels;
|
|
34
|
+
private getValidModels;
|
|
35
|
+
private isValidSingleModel;
|
|
36
|
+
private isValidModel;
|
|
37
|
+
private initDirWatcher;
|
|
38
|
+
}
|
|
39
|
+
export {};
|
|
@@ -228,6 +228,7 @@ export declare const BuiltinLLMProviders: {
|
|
|
228
228
|
readonly VertexAI: "VertexAI";
|
|
229
229
|
readonly xAI: "xAI";
|
|
230
230
|
readonly Perplexity: "Perplexity";
|
|
231
|
+
readonly Ollama: "Ollama";
|
|
231
232
|
};
|
|
232
233
|
export type TBuiltinLLMProvider = (typeof BuiltinLLMProviders)[keyof typeof BuiltinLLMProviders];
|
|
233
234
|
export interface ILLMProviders {
|
|
@@ -245,6 +246,7 @@ export declare const TLLMProvider: {
|
|
|
245
246
|
readonly VertexAI: "VertexAI";
|
|
246
247
|
readonly xAI: "xAI";
|
|
247
248
|
readonly Perplexity: "Perplexity";
|
|
249
|
+
readonly Ollama: "Ollama";
|
|
248
250
|
};
|
|
249
251
|
export type TBedrockSettings = {
|
|
250
252
|
keyIDName: string;
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@smythos/sre",
|
|
3
|
-
"version": "1.6.
|
|
3
|
+
"version": "1.6.8",
|
|
4
4
|
"description": "Smyth Runtime Environment",
|
|
5
5
|
"author": "Alaa-eddine KADDOURI",
|
|
6
6
|
"license": "MIT",
|
|
@@ -82,6 +82,7 @@
|
|
|
82
82
|
"mime": "^4.0.3",
|
|
83
83
|
"mysql2": "^3.11.3",
|
|
84
84
|
"oauth-1.0a": "^2.2.6",
|
|
85
|
+
"ollama": "^0.6.0",
|
|
85
86
|
"openai": "^5.12.2",
|
|
86
87
|
"p-limit": "^6.1.0",
|
|
87
88
|
"qs": "^6.13.0",
|
|
@@ -1,161 +1,161 @@
|
|
|
1
|
-
import axios, { AxiosRequestConfig } from 'axios';
|
|
2
|
-
import Joi from 'joi';
|
|
3
|
-
|
|
4
|
-
import { Agent } from '@sre/AgentManager/Agent.class';
|
|
5
|
-
import { Component } from '../Component.class';
|
|
6
|
-
import { parseHeaders } from './parseHeaders';
|
|
7
|
-
import { parseUrl, parseSmythFsUrl, destroyPublicUrls } from './parseUrl';
|
|
8
|
-
import { parseData } from './parseData';
|
|
9
|
-
import { parseProxy } from './parseProxy';
|
|
10
|
-
import { parseArrayBufferResponse } from './ArrayBufferResponse.helper';
|
|
11
|
-
import { extractAdditionalParamsForOAuth1, handleOAuthHeaders as generateOAuthHeaders } from './OAuth.helper';
|
|
12
|
-
import { SocksProxyAgent } from 'socks-proxy-agent';
|
|
13
|
-
import { formatDataForDebug } from '@sre/utils/data.utils';
|
|
14
|
-
import { AccessCandidate } from '@sre/Security/AccessControl/AccessCandidate.class';
|
|
15
|
-
|
|
16
|
-
export class APICall extends Component {
|
|
17
|
-
protected schema = {
|
|
18
|
-
name: 'APICall',
|
|
19
|
-
description: 'Use this component to make an API call',
|
|
20
|
-
inputs: {},
|
|
21
|
-
outputs: {
|
|
22
|
-
Headers: {
|
|
23
|
-
description: 'The headers of the API call response',
|
|
24
|
-
default: true,
|
|
25
|
-
},
|
|
26
|
-
Response: {
|
|
27
|
-
description: 'The response of the API call',
|
|
28
|
-
default: true,
|
|
29
|
-
},
|
|
30
|
-
},
|
|
31
|
-
};
|
|
32
|
-
|
|
33
|
-
protected configSchema = Joi.object({
|
|
34
|
-
method: Joi.string().valid('GET', 'POST', 'PUT', 'PATCH', 'DELETE', 'HEAD', 'OPTIONS').required().label('Method'),
|
|
35
|
-
url: Joi.string()
|
|
36
|
-
.max(8192) /*.custom(isUrlValid, 'URL validation')*/
|
|
37
|
-
.required()
|
|
38
|
-
.label('URL'),
|
|
39
|
-
headers: Joi.any().allow('').label('Headers'),
|
|
40
|
-
contentType: Joi.string()
|
|
41
|
-
.valid('none', 'application/json', 'multipart/form-data', 'binary', 'application/x-www-form-urlencoded', 'text/plain', 'application/xml')
|
|
42
|
-
.label('Content-Type'),
|
|
43
|
-
body: Joi.any().allow('').label('Body'),
|
|
44
|
-
_templateSettings: Joi.object().allow(null).label('Template Settings'),
|
|
45
|
-
_templateVars: Joi.object().allow(null).label('Template Variables'),
|
|
46
|
-
proxy: Joi.string().allow('').label('Proxy'),
|
|
47
|
-
oauthService: Joi.string().allow('').label('OAuth Service'),
|
|
48
|
-
scope: Joi.string().allow('').label('Scope'),
|
|
49
|
-
authorizationURL: Joi.string().allow('').label('Authorization URL'),
|
|
50
|
-
tokenURL: Joi.string().allow('').label('Token URL'),
|
|
51
|
-
clientID: Joi.string().allow('').label('Client ID'),
|
|
52
|
-
clientSecret: Joi.string().allow('').label('Client Secret'),
|
|
53
|
-
oauth2CallbackURL: Joi.string().allow('').label('OAuth2 Callback URL'),
|
|
54
|
-
callbackURL: Joi.string().allow('').label('Callback URL'), // !TEMP: prevent validation error
|
|
55
|
-
requestTokenURL: Joi.string().allow('').label('Request Token URL'),
|
|
56
|
-
accessTokenURL: Joi.string().allow('').label('Access Token URL'),
|
|
57
|
-
userAuthorizationURL: Joi.string().allow('').label('User Authorization URL'),
|
|
58
|
-
consumerKey: Joi.string().allow('').label('Consumer Key'),
|
|
59
|
-
consumerSecret: Joi.string().allow('').label('Consumer Secret'),
|
|
60
|
-
oauth1CallbackURL: Joi.string().allow('').label('OAuth1 Callback URL'),
|
|
61
|
-
authenticate: Joi.string().allow('').label('Authenticate'),
|
|
62
|
-
oauth_con_id: Joi.string().allow('').label('OAuth Connection ID'),
|
|
63
|
-
});
|
|
64
|
-
constructor() {
|
|
65
|
-
super();
|
|
66
|
-
}
|
|
67
|
-
|
|
68
|
-
init() {}
|
|
69
|
-
|
|
70
|
-
async process(input, config, agent: Agent) {
|
|
71
|
-
await super.process(input, config, agent);
|
|
72
|
-
|
|
73
|
-
const logger = this.createComponentLogger(agent, config);
|
|
74
|
-
|
|
75
|
-
let publicUrls: string[] = [];
|
|
76
|
-
|
|
77
|
-
try {
|
|
78
|
-
logger.debug(`=== API Call Log ===`);
|
|
79
|
-
|
|
80
|
-
const method = config?.data?.method || 'get';
|
|
81
|
-
|
|
82
|
-
const reqConfig: AxiosRequestConfig = {};
|
|
83
|
-
reqConfig.method = method;
|
|
84
|
-
|
|
85
|
-
reqConfig.url = await parseUrl(input, config, agent);
|
|
86
|
-
|
|
87
|
-
// We generate public URLs for any resources specified with the smythfs protocol in the request URL.
|
|
88
|
-
({ url: reqConfig.url, publicUrls } = await parseSmythFsUrl(reqConfig.url, agent));
|
|
89
|
-
|
|
90
|
-
const { data, headers } = await parseData(input, config, agent);
|
|
91
|
-
|
|
92
|
-
// If the data is null, the request may fail. We encountered an issue where a request failed due to null data being provided.
|
|
93
|
-
let dataForDebug;
|
|
94
|
-
if (data) {
|
|
95
|
-
reqConfig.data = data;
|
|
96
|
-
|
|
97
|
-
dataForDebug = await formatDataForDebug(data, AccessCandidate.agent(agent.id));
|
|
98
|
-
}
|
|
99
|
-
|
|
100
|
-
reqConfig.headers = (await parseHeaders(input, config, agent)).concat({ ...headers });
|
|
101
|
-
|
|
102
|
-
const proxyConfig = await parseProxy(input, config, agent);
|
|
103
|
-
|
|
104
|
-
if (proxyConfig) {
|
|
105
|
-
if (proxyConfig instanceof SocksProxyAgent) {
|
|
106
|
-
const isSecureEndpoint = reqConfig.url?.startsWith('https://');
|
|
107
|
-
reqConfig[isSecureEndpoint ? 'httpsAgent' : 'httpAgent'] = proxyConfig;
|
|
108
|
-
} else {
|
|
109
|
-
reqConfig.proxy = proxyConfig;
|
|
110
|
-
}
|
|
111
|
-
}
|
|
112
|
-
|
|
113
|
-
let Response: any = {};
|
|
114
|
-
let Headers: any = {};
|
|
115
|
-
let _error: any = undefined;
|
|
116
|
-
try {
|
|
117
|
-
// To support both old and new OAuth configuration, we check for both oauth_con_id and oauthService.
|
|
118
|
-
logger.debug('checking oauth config', config?.data?.oauth_con_id, config?.data?.oauthService);
|
|
119
|
-
if (
|
|
120
|
-
(config?.data?.oauth_con_id && config.data.oauth_con_id !== 'None') ||
|
|
121
|
-
(config?.data?.oauthService && config.data.oauthService !== 'None')
|
|
122
|
-
) {
|
|
123
|
-
const additionalParams = extractAdditionalParamsForOAuth1(reqConfig);
|
|
124
|
-
const oauthHeaders = await generateOAuthHeaders(agent, config, reqConfig, logger, additionalParams);
|
|
125
|
-
//reqConfig.headers = { ...reqConfig.headers, ...oauthHeaders };
|
|
126
|
-
reqConfig.headers = reqConfig.headers.concat({ ...oauthHeaders });
|
|
127
|
-
}
|
|
128
|
-
|
|
129
|
-
// in order to handle binary data automatically, we need to set responseType to 'arraybuffer' for all requests, then parse the response data based on content-type
|
|
130
|
-
reqConfig.responseType = 'arraybuffer';
|
|
131
|
-
|
|
132
|
-
logger.debug('Making API call', { ...reqConfig, data: dataForDebug });
|
|
133
|
-
|
|
134
|
-
const response = await axios.request(reqConfig);
|
|
135
|
-
|
|
136
|
-
const parsedRes = await parseArrayBufferResponse(response, agent);
|
|
137
|
-
|
|
138
|
-
// log response headers
|
|
139
|
-
logger.debug('API call Response Headers', response.headers);
|
|
140
|
-
Response = parsedRes;
|
|
141
|
-
|
|
142
|
-
logger.debug('API call Response\n', Response);
|
|
143
|
-
|
|
144
|
-
Headers = Object.fromEntries(Object.entries(response.headers));
|
|
145
|
-
} catch (error) {
|
|
146
|
-
logger.debug(`Error making API call: ${error.message}`);
|
|
147
|
-
Headers = error?.response?.headers ? Object.fromEntries(Object.entries(error.response.headers)) : {};
|
|
148
|
-
Response = await parseArrayBufferResponse(error.response, agent);
|
|
149
|
-
_error = error.message;
|
|
150
|
-
}
|
|
151
|
-
|
|
152
|
-
return { Response, Headers, _error, _debug: logger.output };
|
|
153
|
-
} catch (error) {
|
|
154
|
-
return { _error: error.message, _debug: logger.output };
|
|
155
|
-
} finally {
|
|
156
|
-
if (publicUrls.length > 0) {
|
|
157
|
-
await destroyPublicUrls(publicUrls);
|
|
158
|
-
}
|
|
159
|
-
}
|
|
160
|
-
}
|
|
161
|
-
}
|
|
1
|
+
import axios, { AxiosRequestConfig } from 'axios';
|
|
2
|
+
import Joi from 'joi';
|
|
3
|
+
|
|
4
|
+
import { Agent } from '@sre/AgentManager/Agent.class';
|
|
5
|
+
import { Component } from '../Component.class';
|
|
6
|
+
import { parseHeaders } from './parseHeaders';
|
|
7
|
+
import { parseUrl, parseSmythFsUrl, destroyPublicUrls } from './parseUrl';
|
|
8
|
+
import { parseData } from './parseData';
|
|
9
|
+
import { parseProxy } from './parseProxy';
|
|
10
|
+
import { parseArrayBufferResponse } from './ArrayBufferResponse.helper';
|
|
11
|
+
import { extractAdditionalParamsForOAuth1, handleOAuthHeaders as generateOAuthHeaders } from './OAuth.helper';
|
|
12
|
+
import { SocksProxyAgent } from 'socks-proxy-agent';
|
|
13
|
+
import { formatDataForDebug } from '@sre/utils/data.utils';
|
|
14
|
+
import { AccessCandidate } from '@sre/Security/AccessControl/AccessCandidate.class';
|
|
15
|
+
|
|
16
|
+
export class APICall extends Component {
|
|
17
|
+
protected schema = {
|
|
18
|
+
name: 'APICall',
|
|
19
|
+
description: 'Use this component to make an API call',
|
|
20
|
+
inputs: {},
|
|
21
|
+
outputs: {
|
|
22
|
+
Headers: {
|
|
23
|
+
description: 'The headers of the API call response',
|
|
24
|
+
default: true,
|
|
25
|
+
},
|
|
26
|
+
Response: {
|
|
27
|
+
description: 'The response of the API call',
|
|
28
|
+
default: true,
|
|
29
|
+
},
|
|
30
|
+
},
|
|
31
|
+
};
|
|
32
|
+
|
|
33
|
+
protected configSchema = Joi.object({
|
|
34
|
+
method: Joi.string().valid('GET', 'POST', 'PUT', 'PATCH', 'DELETE', 'HEAD', 'OPTIONS').required().label('Method'),
|
|
35
|
+
url: Joi.string()
|
|
36
|
+
.max(8192) /*.custom(isUrlValid, 'URL validation')*/
|
|
37
|
+
.required()
|
|
38
|
+
.label('URL'),
|
|
39
|
+
headers: Joi.any().allow('').label('Headers'),
|
|
40
|
+
contentType: Joi.string()
|
|
41
|
+
.valid('none', 'application/json', 'multipart/form-data', 'binary', 'application/x-www-form-urlencoded', 'text/plain', 'application/xml')
|
|
42
|
+
.label('Content-Type'),
|
|
43
|
+
body: Joi.any().allow('').label('Body'),
|
|
44
|
+
_templateSettings: Joi.object().allow(null).label('Template Settings'),
|
|
45
|
+
_templateVars: Joi.object().allow(null).label('Template Variables'),
|
|
46
|
+
proxy: Joi.string().allow('').label('Proxy'),
|
|
47
|
+
oauthService: Joi.string().allow('').label('OAuth Service'),
|
|
48
|
+
scope: Joi.string().allow('').label('Scope'),
|
|
49
|
+
authorizationURL: Joi.string().allow('').label('Authorization URL'),
|
|
50
|
+
tokenURL: Joi.string().allow('').label('Token URL'),
|
|
51
|
+
clientID: Joi.string().allow('').label('Client ID'),
|
|
52
|
+
clientSecret: Joi.string().allow('').label('Client Secret'),
|
|
53
|
+
oauth2CallbackURL: Joi.string().allow('').label('OAuth2 Callback URL'),
|
|
54
|
+
callbackURL: Joi.string().allow('').label('Callback URL'), // !TEMP: prevent validation error
|
|
55
|
+
requestTokenURL: Joi.string().allow('').label('Request Token URL'),
|
|
56
|
+
accessTokenURL: Joi.string().allow('').label('Access Token URL'),
|
|
57
|
+
userAuthorizationURL: Joi.string().allow('').label('User Authorization URL'),
|
|
58
|
+
consumerKey: Joi.string().allow('').label('Consumer Key'),
|
|
59
|
+
consumerSecret: Joi.string().allow('').label('Consumer Secret'),
|
|
60
|
+
oauth1CallbackURL: Joi.string().allow('').label('OAuth1 Callback URL'),
|
|
61
|
+
authenticate: Joi.string().allow('').label('Authenticate'),
|
|
62
|
+
oauth_con_id: Joi.string().allow('').label('OAuth Connection ID'),
|
|
63
|
+
});
|
|
64
|
+
constructor() {
|
|
65
|
+
super();
|
|
66
|
+
}
|
|
67
|
+
|
|
68
|
+
init() {}
|
|
69
|
+
|
|
70
|
+
async process(input, config, agent: Agent) {
|
|
71
|
+
await super.process(input, config, agent);
|
|
72
|
+
|
|
73
|
+
const logger = this.createComponentLogger(agent, config);
|
|
74
|
+
|
|
75
|
+
let publicUrls: string[] = [];
|
|
76
|
+
|
|
77
|
+
try {
|
|
78
|
+
logger.debug(`=== API Call Log ===`);
|
|
79
|
+
|
|
80
|
+
const method = config?.data?.method || 'get';
|
|
81
|
+
|
|
82
|
+
const reqConfig: AxiosRequestConfig = {};
|
|
83
|
+
reqConfig.method = method;
|
|
84
|
+
|
|
85
|
+
reqConfig.url = await parseUrl(input, config, agent);
|
|
86
|
+
|
|
87
|
+
// We generate public URLs for any resources specified with the smythfs protocol in the request URL.
|
|
88
|
+
({ url: reqConfig.url, publicUrls } = await parseSmythFsUrl(reqConfig.url, agent));
|
|
89
|
+
|
|
90
|
+
const { data, headers } = await parseData(input, config, agent);
|
|
91
|
+
|
|
92
|
+
// If the data is null, the request may fail. We encountered an issue where a request failed due to null data being provided.
|
|
93
|
+
let dataForDebug;
|
|
94
|
+
if (data) {
|
|
95
|
+
reqConfig.data = data;
|
|
96
|
+
|
|
97
|
+
dataForDebug = await formatDataForDebug(data, AccessCandidate.agent(agent.id));
|
|
98
|
+
}
|
|
99
|
+
|
|
100
|
+
reqConfig.headers = (await parseHeaders(input, config, agent)).concat({ ...headers });
|
|
101
|
+
|
|
102
|
+
const proxyConfig = await parseProxy(input, config, agent);
|
|
103
|
+
|
|
104
|
+
if (proxyConfig) {
|
|
105
|
+
if (proxyConfig instanceof SocksProxyAgent) {
|
|
106
|
+
const isSecureEndpoint = reqConfig.url?.startsWith('https://');
|
|
107
|
+
reqConfig[isSecureEndpoint ? 'httpsAgent' : 'httpAgent'] = proxyConfig;
|
|
108
|
+
} else {
|
|
109
|
+
reqConfig.proxy = proxyConfig;
|
|
110
|
+
}
|
|
111
|
+
}
|
|
112
|
+
|
|
113
|
+
let Response: any = {};
|
|
114
|
+
let Headers: any = {};
|
|
115
|
+
let _error: any = undefined;
|
|
116
|
+
try {
|
|
117
|
+
// To support both old and new OAuth configuration, we check for both oauth_con_id and oauthService.
|
|
118
|
+
logger.debug('checking oauth config', config?.data?.oauth_con_id, config?.data?.oauthService);
|
|
119
|
+
if (
|
|
120
|
+
(config?.data?.oauth_con_id && config.data.oauth_con_id !== 'None') ||
|
|
121
|
+
(config?.data?.oauthService && config.data.oauthService !== 'None')
|
|
122
|
+
) {
|
|
123
|
+
const additionalParams = extractAdditionalParamsForOAuth1(reqConfig);
|
|
124
|
+
const oauthHeaders = await generateOAuthHeaders(agent, config, reqConfig, logger, additionalParams);
|
|
125
|
+
//reqConfig.headers = { ...reqConfig.headers, ...oauthHeaders };
|
|
126
|
+
reqConfig.headers = reqConfig.headers.concat({ ...oauthHeaders });
|
|
127
|
+
}
|
|
128
|
+
|
|
129
|
+
// in order to handle binary data automatically, we need to set responseType to 'arraybuffer' for all requests, then parse the response data based on content-type
|
|
130
|
+
reqConfig.responseType = 'arraybuffer';
|
|
131
|
+
|
|
132
|
+
logger.debug('Making API call', { ...reqConfig, data: dataForDebug });
|
|
133
|
+
|
|
134
|
+
const response = await axios.request(reqConfig);
|
|
135
|
+
|
|
136
|
+
const parsedRes = await parseArrayBufferResponse(response, agent);
|
|
137
|
+
|
|
138
|
+
// log response headers
|
|
139
|
+
logger.debug('API call Response Headers', response.headers);
|
|
140
|
+
Response = parsedRes;
|
|
141
|
+
|
|
142
|
+
logger.debug('API call Response\n', Response);
|
|
143
|
+
|
|
144
|
+
Headers = Object.fromEntries(Object.entries(response.headers));
|
|
145
|
+
} catch (error) {
|
|
146
|
+
logger.debug(`Error making API call: ${error.message}`);
|
|
147
|
+
Headers = error?.response?.headers ? Object.fromEntries(Object.entries(error.response.headers)) : {};
|
|
148
|
+
Response = await parseArrayBufferResponse(error.response, agent);
|
|
149
|
+
_error = error.message;
|
|
150
|
+
}
|
|
151
|
+
|
|
152
|
+
return { Response, Headers, _error, _debug: logger.output };
|
|
153
|
+
} catch (error) {
|
|
154
|
+
return { _error: error.message, _debug: logger.output };
|
|
155
|
+
} finally {
|
|
156
|
+
if (publicUrls.length > 0) {
|
|
157
|
+
await destroyPublicUrls(publicUrls);
|
|
158
|
+
}
|
|
159
|
+
}
|
|
160
|
+
}
|
|
161
|
+
}
|