@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
package/dist/types/subsystems/LLMManager/LLM.service/connectors/openai/OpenAIConnector.class.d.ts
CHANGED
|
@@ -42,7 +42,12 @@ export declare class OpenAIConnector extends LLMConnector {
|
|
|
42
42
|
}[] | Array<import("@anthropic-ai/sdk/resources/messages").TextBlockParam | import("@anthropic-ai/sdk/resources/messages").ImageBlockParam | import("@anthropic-ai/sdk/resources/messages").ToolUseBlockParam | import("@anthropic-ai/sdk/resources/messages").ToolResultBlockParam>;
|
|
43
43
|
parts?: {
|
|
44
44
|
text?: string;
|
|
45
|
-
functionCall
|
|
45
|
+
functionCall? /**
|
|
46
|
+
* Safely compute prompt token count across different interfaces (Chat Completions, Responses)
|
|
47
|
+
* - Normalizes message content to strings for encodeChat
|
|
48
|
+
* - Handles vision prompts when files are present
|
|
49
|
+
* - Never throws; defaults to 0 on failure
|
|
50
|
+
*/: {
|
|
46
51
|
name: string;
|
|
47
52
|
args: string;
|
|
48
53
|
};
|
|
@@ -58,6 +63,13 @@ export declare class OpenAIConnector extends LLMConnector {
|
|
|
58
63
|
}[];
|
|
59
64
|
private validateTokenLimit;
|
|
60
65
|
private getProvider;
|
|
66
|
+
/**
|
|
67
|
+
* Safely compute prompt token count across different interfaces (Chat Completions, Responses)
|
|
68
|
+
* - Normalizes message content to strings for encodeChat
|
|
69
|
+
* - Handles vision prompts when files are present
|
|
70
|
+
* - Never throws; defaults to 0 on failure
|
|
71
|
+
*/
|
|
72
|
+
private computePromptTokens;
|
|
61
73
|
/**
|
|
62
74
|
* Prepare request body for OpenAI Responses API
|
|
63
75
|
* Uses MessageTransformer and ToolsTransformer for clean interface transformations
|
|
@@ -2,7 +2,7 @@ import EventEmitter from 'events';
|
|
|
2
2
|
import OpenAI from 'openai';
|
|
3
3
|
import type { Stream } from 'openai/streaming';
|
|
4
4
|
import { BinaryInput } from '@sre/helpers/BinaryInput.helper';
|
|
5
|
-
import { TLLMParams, TLLMPreparedParams, ILLMRequestContext } from '@sre/types/LLM.types';
|
|
5
|
+
import { TLLMParams, TLLMPreparedParams, ILLMRequestContext, ToolData } from '@sre/types/LLM.types';
|
|
6
6
|
import { OpenAIApiInterface, ToolConfig } from './OpenAIApiInterface';
|
|
7
7
|
import { HandlerDependencies } from '../types';
|
|
8
8
|
/**
|
|
@@ -45,55 +45,56 @@ export declare class ResponsesApiInterface extends OpenAIApiInterface {
|
|
|
45
45
|
* Calculate search tool usage with cost
|
|
46
46
|
*/
|
|
47
47
|
private calculateSearchToolUsage;
|
|
48
|
-
prepareRequestBody(params: TLLMPreparedParams): Promise<OpenAI.Responses.ResponseCreateParams>;
|
|
49
48
|
/**
|
|
50
|
-
*
|
|
49
|
+
* Handle web search completed event with proper type safety
|
|
51
50
|
*/
|
|
52
|
-
|
|
51
|
+
private handleWebSearchCompleted;
|
|
53
52
|
/**
|
|
54
|
-
*
|
|
53
|
+
* Handle web search in-progress event (official typed)
|
|
55
54
|
*/
|
|
56
|
-
private
|
|
55
|
+
private handleWebSearchInProgress;
|
|
57
56
|
/**
|
|
58
|
-
*
|
|
57
|
+
* Handle web search searching event (official typed)
|
|
59
58
|
*/
|
|
60
|
-
private
|
|
59
|
+
private handleWebSearchSearching;
|
|
61
60
|
/**
|
|
62
|
-
*
|
|
61
|
+
* Handle output text delta events
|
|
63
62
|
*/
|
|
64
|
-
private
|
|
63
|
+
private handleOutputTextDelta;
|
|
65
64
|
/**
|
|
66
|
-
*
|
|
65
|
+
* Handle output item added events (function calls)
|
|
67
66
|
*/
|
|
68
|
-
private
|
|
67
|
+
private handleOutputItemAdded;
|
|
69
68
|
/**
|
|
70
|
-
*
|
|
69
|
+
* Handle function call arguments delta events
|
|
71
70
|
*/
|
|
72
|
-
private
|
|
71
|
+
private handleFunctionCallArgumentsDelta;
|
|
73
72
|
/**
|
|
74
|
-
*
|
|
73
|
+
* Handle function call arguments done events
|
|
75
74
|
*/
|
|
76
|
-
private
|
|
75
|
+
private handleFunctionCallArgumentsDone;
|
|
77
76
|
/**
|
|
78
|
-
*
|
|
77
|
+
* Handle output item done events
|
|
79
78
|
*/
|
|
80
|
-
private
|
|
79
|
+
private handleOutputItemDone;
|
|
81
80
|
/**
|
|
82
|
-
*
|
|
81
|
+
* Handle completion events and unknown event types
|
|
83
82
|
*/
|
|
84
|
-
private
|
|
83
|
+
private handleCompletionEvent;
|
|
84
|
+
prepareRequestBody(params: TLLMPreparedParams): Promise<OpenAI.Responses.ResponseCreateParams>;
|
|
85
85
|
/**
|
|
86
|
-
*
|
|
86
|
+
* Transform OpenAI tool definitions to Responses.Tool format
|
|
87
|
+
* Handles multiple tool definition formats and ensures compatibility
|
|
87
88
|
*/
|
|
88
|
-
|
|
89
|
+
transformToolsConfig(config: ToolConfig): OpenAI.Responses.Tool[];
|
|
89
90
|
/**
|
|
90
|
-
*
|
|
91
|
+
* Normalize tool arguments to string format for Responses API
|
|
91
92
|
*/
|
|
92
|
-
private
|
|
93
|
+
private normalizeToolArguments;
|
|
93
94
|
/**
|
|
94
|
-
*
|
|
95
|
+
* Validate if tool data is complete and valid for transformation
|
|
95
96
|
*/
|
|
96
|
-
private
|
|
97
|
+
private isValidToolData;
|
|
97
98
|
handleFileAttachments(files: BinaryInput[], agentId: string, messages: any[]): Promise<any[]>;
|
|
98
99
|
/**
|
|
99
100
|
* Get valid image files based on supported MIME types
|
|
@@ -126,7 +127,8 @@ export declare class ResponsesApiInterface extends OpenAIApiInterface {
|
|
|
126
127
|
*/
|
|
127
128
|
private prepareInputMessages;
|
|
128
129
|
/**
|
|
129
|
-
* Prepare tools for request
|
|
130
|
+
* Prepare function tools for Responses API request
|
|
131
|
+
* Transforms tools from various formats to Responses API format
|
|
130
132
|
*/
|
|
131
133
|
private prepareFunctionTools;
|
|
132
134
|
/**
|
|
@@ -134,9 +136,26 @@ export declare class ResponsesApiInterface extends OpenAIApiInterface {
|
|
|
134
136
|
* According to OpenAI documentation: https://platform.openai.com/docs/api-reference/responses/create
|
|
135
137
|
*/
|
|
136
138
|
private prepareWebSearchTool;
|
|
139
|
+
/**
|
|
140
|
+
* Transform messages for Responses API compatibility
|
|
141
|
+
* Handles the differences between Chat Completions and Responses API message formats
|
|
142
|
+
*/
|
|
137
143
|
private applyToolMessageTransformation;
|
|
138
144
|
/**
|
|
139
145
|
* Get search tool cost for a specific model and context size
|
|
140
146
|
*/
|
|
141
147
|
private getSearchToolCost;
|
|
148
|
+
/**
|
|
149
|
+
* Process function call responses and integrate them back into the conversation
|
|
150
|
+
* This method helps maintain compatibility with the chat completion flow
|
|
151
|
+
*/
|
|
152
|
+
processFunctionCallResults(toolsData: ToolData[]): Promise<ToolData[]>;
|
|
153
|
+
/**
|
|
154
|
+
* Validate tool choice parameter for Responses API
|
|
155
|
+
*/
|
|
156
|
+
private validateToolChoice;
|
|
157
|
+
/**
|
|
158
|
+
* Upsert a web search tool entry in toolsData and return its index
|
|
159
|
+
*/
|
|
160
|
+
private upsertWebSearchToolImmutable;
|
|
142
161
|
}
|
package/dist/types/subsystems/LLMManager/LLM.service/connectors/openai/apiInterfaces/constants.d.ts
CHANGED
|
@@ -1,4 +1,3 @@
|
|
|
1
|
-
import { SearchToolCostConfig } from '../types';
|
|
2
1
|
export declare const MODELS_WITHOUT_TEMPERATURE_SUPPORT: string[];
|
|
3
2
|
export declare const MODELS_WITHOUT_PRESENCE_PENALTY_SUPPORT: string[];
|
|
4
3
|
export declare const MODELS_WITHOUT_JSON_RESPONSE_SUPPORT: string[];
|
|
@@ -7,4 +6,7 @@ export declare const MODELS_WITHOUT_SYSTEM_MESSAGE_SUPPORT: string[];
|
|
|
7
6
|
* Search tool cost configuration
|
|
8
7
|
* Costs are in dollars per 1000 requests
|
|
9
8
|
*/
|
|
10
|
-
export declare const SEARCH_TOOL_COSTS:
|
|
9
|
+
export declare const SEARCH_TOOL_COSTS: {
|
|
10
|
+
'gpt-4': number;
|
|
11
|
+
'gpt-5': number;
|
|
12
|
+
};
|
|
@@ -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 {};
|
package/package.json
CHANGED
|
@@ -1,156 +1,156 @@
|
|
|
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
|
-
});
|
|
63
|
-
constructor() {
|
|
64
|
-
super();
|
|
65
|
-
}
|
|
66
|
-
|
|
67
|
-
init() {}
|
|
68
|
-
|
|
69
|
-
async process(input, config, agent: Agent) {
|
|
70
|
-
await super.process(input, config, agent);
|
|
71
|
-
|
|
72
|
-
const logger = this.createComponentLogger(agent, config);
|
|
73
|
-
|
|
74
|
-
let publicUrls: string[] = [];
|
|
75
|
-
|
|
76
|
-
try {
|
|
77
|
-
logger.debug(`=== API Call Log ===`);
|
|
78
|
-
|
|
79
|
-
const method = config?.data?.method || 'get';
|
|
80
|
-
|
|
81
|
-
const reqConfig: AxiosRequestConfig = {};
|
|
82
|
-
reqConfig.method = method;
|
|
83
|
-
|
|
84
|
-
reqConfig.url = await parseUrl(input, config, agent);
|
|
85
|
-
|
|
86
|
-
// We generate public URLs for any resources specified with the smythfs protocol in the request URL.
|
|
87
|
-
({ url: reqConfig.url, publicUrls } = await parseSmythFsUrl(reqConfig.url, agent));
|
|
88
|
-
|
|
89
|
-
const { data, headers } = await parseData(input, config, agent);
|
|
90
|
-
|
|
91
|
-
// If the data is null, the request may fail. We encountered an issue where a request failed due to null data being provided.
|
|
92
|
-
let dataForDebug;
|
|
93
|
-
if (data) {
|
|
94
|
-
reqConfig.data = data;
|
|
95
|
-
|
|
96
|
-
dataForDebug = await formatDataForDebug(data, AccessCandidate.agent(agent.id));
|
|
97
|
-
}
|
|
98
|
-
|
|
99
|
-
reqConfig.headers = (await parseHeaders(input, config, agent)).concat({ ...headers });
|
|
100
|
-
|
|
101
|
-
const proxyConfig = await parseProxy(input, config, agent);
|
|
102
|
-
|
|
103
|
-
if (proxyConfig) {
|
|
104
|
-
if (proxyConfig instanceof SocksProxyAgent) {
|
|
105
|
-
const isSecureEndpoint = reqConfig.url?.startsWith('https://');
|
|
106
|
-
reqConfig[isSecureEndpoint ? 'httpsAgent' : 'httpAgent'] = proxyConfig;
|
|
107
|
-
} else {
|
|
108
|
-
reqConfig.proxy = proxyConfig;
|
|
109
|
-
}
|
|
110
|
-
}
|
|
111
|
-
|
|
112
|
-
let Response: any = {};
|
|
113
|
-
let Headers: any = {};
|
|
114
|
-
let _error: any = undefined;
|
|
115
|
-
try {
|
|
116
|
-
if (config?.data?.oauthService && config?.data?.oauthService !== 'None') {
|
|
117
|
-
const rootUrl = new URL(reqConfig.url).origin;
|
|
118
|
-
const additionalParams = extractAdditionalParamsForOAuth1(reqConfig);
|
|
119
|
-
const oauthHeaders = await generateOAuthHeaders(agent, config, reqConfig, logger, additionalParams, rootUrl);
|
|
120
|
-
//reqConfig.headers = { ...reqConfig.headers, ...oauthHeaders };
|
|
121
|
-
reqConfig.headers = reqConfig.headers.concat({ ...oauthHeaders });
|
|
122
|
-
}
|
|
123
|
-
|
|
124
|
-
// 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
|
|
125
|
-
reqConfig.responseType = 'arraybuffer';
|
|
126
|
-
|
|
127
|
-
logger.debug('Making API call', { ...reqConfig, data: dataForDebug });
|
|
128
|
-
|
|
129
|
-
const response = await axios.request(reqConfig);
|
|
130
|
-
|
|
131
|
-
const parsedRes = await parseArrayBufferResponse(response, agent);
|
|
132
|
-
|
|
133
|
-
// log response headers
|
|
134
|
-
logger.debug('API call Response Headers', response.headers);
|
|
135
|
-
Response = parsedRes;
|
|
136
|
-
|
|
137
|
-
logger.debug('API call Response\n', Response);
|
|
138
|
-
|
|
139
|
-
Headers = Object.fromEntries(Object.entries(response.headers));
|
|
140
|
-
} catch (error) {
|
|
141
|
-
logger.debug(`Error making API call: ${error.message}`);
|
|
142
|
-
Headers = error?.response?.headers ? Object.fromEntries(Object.entries(error.response.headers)) : {};
|
|
143
|
-
Response = await parseArrayBufferResponse(error.response, agent);
|
|
144
|
-
_error = error.message;
|
|
145
|
-
}
|
|
146
|
-
|
|
147
|
-
return { Response, Headers, _error, _debug: logger.output };
|
|
148
|
-
} catch (error) {
|
|
149
|
-
return { _error: error.message, _debug: logger.output };
|
|
150
|
-
} finally {
|
|
151
|
-
if (publicUrls.length > 0) {
|
|
152
|
-
await destroyPublicUrls(publicUrls);
|
|
153
|
-
}
|
|
154
|
-
}
|
|
155
|
-
}
|
|
156
|
-
}
|
|
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
|
+
});
|
|
63
|
+
constructor() {
|
|
64
|
+
super();
|
|
65
|
+
}
|
|
66
|
+
|
|
67
|
+
init() {}
|
|
68
|
+
|
|
69
|
+
async process(input, config, agent: Agent) {
|
|
70
|
+
await super.process(input, config, agent);
|
|
71
|
+
|
|
72
|
+
const logger = this.createComponentLogger(agent, config);
|
|
73
|
+
|
|
74
|
+
let publicUrls: string[] = [];
|
|
75
|
+
|
|
76
|
+
try {
|
|
77
|
+
logger.debug(`=== API Call Log ===`);
|
|
78
|
+
|
|
79
|
+
const method = config?.data?.method || 'get';
|
|
80
|
+
|
|
81
|
+
const reqConfig: AxiosRequestConfig = {};
|
|
82
|
+
reqConfig.method = method;
|
|
83
|
+
|
|
84
|
+
reqConfig.url = await parseUrl(input, config, agent);
|
|
85
|
+
|
|
86
|
+
// We generate public URLs for any resources specified with the smythfs protocol in the request URL.
|
|
87
|
+
({ url: reqConfig.url, publicUrls } = await parseSmythFsUrl(reqConfig.url, agent));
|
|
88
|
+
|
|
89
|
+
const { data, headers } = await parseData(input, config, agent);
|
|
90
|
+
|
|
91
|
+
// If the data is null, the request may fail. We encountered an issue where a request failed due to null data being provided.
|
|
92
|
+
let dataForDebug;
|
|
93
|
+
if (data) {
|
|
94
|
+
reqConfig.data = data;
|
|
95
|
+
|
|
96
|
+
dataForDebug = await formatDataForDebug(data, AccessCandidate.agent(agent.id));
|
|
97
|
+
}
|
|
98
|
+
|
|
99
|
+
reqConfig.headers = (await parseHeaders(input, config, agent)).concat({ ...headers });
|
|
100
|
+
|
|
101
|
+
const proxyConfig = await parseProxy(input, config, agent);
|
|
102
|
+
|
|
103
|
+
if (proxyConfig) {
|
|
104
|
+
if (proxyConfig instanceof SocksProxyAgent) {
|
|
105
|
+
const isSecureEndpoint = reqConfig.url?.startsWith('https://');
|
|
106
|
+
reqConfig[isSecureEndpoint ? 'httpsAgent' : 'httpAgent'] = proxyConfig;
|
|
107
|
+
} else {
|
|
108
|
+
reqConfig.proxy = proxyConfig;
|
|
109
|
+
}
|
|
110
|
+
}
|
|
111
|
+
|
|
112
|
+
let Response: any = {};
|
|
113
|
+
let Headers: any = {};
|
|
114
|
+
let _error: any = undefined;
|
|
115
|
+
try {
|
|
116
|
+
if (config?.data?.oauthService && config?.data?.oauthService !== 'None') {
|
|
117
|
+
const rootUrl = new URL(reqConfig.url).origin;
|
|
118
|
+
const additionalParams = extractAdditionalParamsForOAuth1(reqConfig);
|
|
119
|
+
const oauthHeaders = await generateOAuthHeaders(agent, config, reqConfig, logger, additionalParams, rootUrl);
|
|
120
|
+
//reqConfig.headers = { ...reqConfig.headers, ...oauthHeaders };
|
|
121
|
+
reqConfig.headers = reqConfig.headers.concat({ ...oauthHeaders });
|
|
122
|
+
}
|
|
123
|
+
|
|
124
|
+
// 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
|
|
125
|
+
reqConfig.responseType = 'arraybuffer';
|
|
126
|
+
|
|
127
|
+
logger.debug('Making API call', { ...reqConfig, data: dataForDebug });
|
|
128
|
+
|
|
129
|
+
const response = await axios.request(reqConfig);
|
|
130
|
+
|
|
131
|
+
const parsedRes = await parseArrayBufferResponse(response, agent);
|
|
132
|
+
|
|
133
|
+
// log response headers
|
|
134
|
+
logger.debug('API call Response Headers', response.headers);
|
|
135
|
+
Response = parsedRes;
|
|
136
|
+
|
|
137
|
+
logger.debug('API call Response\n', Response);
|
|
138
|
+
|
|
139
|
+
Headers = Object.fromEntries(Object.entries(response.headers));
|
|
140
|
+
} catch (error) {
|
|
141
|
+
logger.debug(`Error making API call: ${error.message}`);
|
|
142
|
+
Headers = error?.response?.headers ? Object.fromEntries(Object.entries(error.response.headers)) : {};
|
|
143
|
+
Response = await parseArrayBufferResponse(error.response, agent);
|
|
144
|
+
_error = error.message;
|
|
145
|
+
}
|
|
146
|
+
|
|
147
|
+
return { Response, Headers, _error, _debug: logger.output };
|
|
148
|
+
} catch (error) {
|
|
149
|
+
return { _error: error.message, _debug: logger.output };
|
|
150
|
+
} finally {
|
|
151
|
+
if (publicUrls.length > 0) {
|
|
152
|
+
await destroyPublicUrls(publicUrls);
|
|
153
|
+
}
|
|
154
|
+
}
|
|
155
|
+
}
|
|
156
|
+
}
|