@smythos/sre 1.5.53 → 1.5.54
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 +98 -98
- 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 +3 -3
- package/dist/index.js.map +1 -1
- package/dist/types/subsystems/LLMManager/LLM.service/connectors/openai/OpenAIConnector.class.d.ts +1 -6
- package/dist/types/utils/package-manager.utils.d.ts +26 -0
- package/package.json +1 -1
- package/src/Components/APICall/APICall.class.ts +157 -157
- 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 +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 +138 -138
- 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 +590 -590
- 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 +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 +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 +301 -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 -488
- 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 +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 -496
- 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
package/src/types/LLM.types.ts
CHANGED
|
@@ -1,496 +1,496 @@
|
|
|
1
|
-
import OpenAI from 'openai';
|
|
2
|
-
import Anthropic from '@anthropic-ai/sdk';
|
|
3
|
-
import { FunctionCallingMode, ModelParams, GenerateContentRequest } from '@google/generative-ai';
|
|
4
|
-
|
|
5
|
-
import { BinaryInput } from '@sre/helpers/BinaryInput.helper';
|
|
6
|
-
import { type models } from '@sre/LLMManager/models';
|
|
7
|
-
import { AccessRequest } from '@sre/Security/AccessControl/AccessRequest.class';
|
|
8
|
-
import { ConverseCommandInput } from '@aws-sdk/client-bedrock-runtime';
|
|
9
|
-
|
|
10
|
-
export type LLMProvider = Extract<(typeof models)[keyof typeof models], { llm: string }>['llm'] | 'VertexAI' | 'Bedrock';
|
|
11
|
-
export type LLMModel = keyof typeof models;
|
|
12
|
-
export type LLMModelInfo = (typeof models)[LLMModel];
|
|
13
|
-
|
|
14
|
-
// Google Service Account Credentials Interface
|
|
15
|
-
export interface VertexAICredentials {
|
|
16
|
-
type: 'service_account';
|
|
17
|
-
project_id: string;
|
|
18
|
-
private_key_id: string;
|
|
19
|
-
private_key: string;
|
|
20
|
-
client_email: string;
|
|
21
|
-
client_id: string;
|
|
22
|
-
auth_uri: string;
|
|
23
|
-
token_uri: string;
|
|
24
|
-
auth_provider_x509_cert_url: string;
|
|
25
|
-
client_x509_cert_url: string;
|
|
26
|
-
universe_domain?: string; // Optional, defaults to "googleapis.com"
|
|
27
|
-
}
|
|
28
|
-
|
|
29
|
-
// Basic LLM Credentials Interface
|
|
30
|
-
export interface BasicCredentials {
|
|
31
|
-
apiKey: string;
|
|
32
|
-
isUserKey: boolean;
|
|
33
|
-
}
|
|
34
|
-
|
|
35
|
-
// AWS Bedrock Credentials Interface
|
|
36
|
-
export interface BedrockCredentials {
|
|
37
|
-
accessKeyId: string;
|
|
38
|
-
secretAccessKey: string;
|
|
39
|
-
sessionToken?: string;
|
|
40
|
-
}
|
|
41
|
-
|
|
42
|
-
// Union type for all credential types
|
|
43
|
-
export type ILLMConnectorCredentials = BasicCredentials | BedrockCredentials | VertexAICredentials;
|
|
44
|
-
|
|
45
|
-
export type TOpenAIResponseToolChoice = OpenAI.Responses.ToolChoiceOptions | OpenAI.Responses.ToolChoiceTypes | OpenAI.Responses.ToolChoiceFunction;
|
|
46
|
-
export type TLLMToolChoice = OpenAI.ChatCompletionToolChoiceOption;
|
|
47
|
-
|
|
48
|
-
// Local alias to the upstream OpenAI reasoning effort union type
|
|
49
|
-
export type OpenAIReasoningEffort = NonNullable<OpenAI.Responses.ResponseCreateParams['reasoning']>['effort'];
|
|
50
|
-
|
|
51
|
-
export type TOpenAIToolsInfo = {
|
|
52
|
-
webSearch: {
|
|
53
|
-
enabled: boolean;
|
|
54
|
-
contextSize: TSearchContextSize;
|
|
55
|
-
city?: string;
|
|
56
|
-
country?: string;
|
|
57
|
-
region?: string;
|
|
58
|
-
timezone?: string;
|
|
59
|
-
};
|
|
60
|
-
};
|
|
61
|
-
|
|
62
|
-
export type TxAIToolsInfo = {
|
|
63
|
-
search: {
|
|
64
|
-
enabled: boolean;
|
|
65
|
-
mode?: 'auto' | 'on' | 'off';
|
|
66
|
-
returnCitations?: boolean;
|
|
67
|
-
maxResults?: number;
|
|
68
|
-
dataSources?: string[];
|
|
69
|
-
country?: string;
|
|
70
|
-
excludedWebsites?: string[];
|
|
71
|
-
allowedWebsites?: string[];
|
|
72
|
-
includedXHandles?: string[];
|
|
73
|
-
excludedXHandles?: string[];
|
|
74
|
-
postFavoriteCount?: number;
|
|
75
|
-
postViewCount?: number;
|
|
76
|
-
rssLinks?: string;
|
|
77
|
-
safeSearch?: boolean;
|
|
78
|
-
fromDate?: string;
|
|
79
|
-
toDate?: string;
|
|
80
|
-
};
|
|
81
|
-
};
|
|
82
|
-
|
|
83
|
-
export type TToolsInfo = {
|
|
84
|
-
openai: TOpenAIToolsInfo;
|
|
85
|
-
xai: TxAIToolsInfo;
|
|
86
|
-
};
|
|
87
|
-
|
|
88
|
-
export type TSearchContextSize = 'low' | 'medium' | 'high';
|
|
89
|
-
|
|
90
|
-
export type TLLMParams = {
|
|
91
|
-
model: TLLMModel | string;
|
|
92
|
-
|
|
93
|
-
prompt?: string;
|
|
94
|
-
messages?: any[]; // TODO [Forhad]: apply proper typing
|
|
95
|
-
temperature?: number;
|
|
96
|
-
maxTokens?: number;
|
|
97
|
-
stopSequences?: string[];
|
|
98
|
-
topP?: number;
|
|
99
|
-
topK?: number;
|
|
100
|
-
frequencyPenalty?: number;
|
|
101
|
-
presencePenalty?: number;
|
|
102
|
-
responseFormat?: any; // TODO [Forhad]: apply proper typing
|
|
103
|
-
modelInfo?: TCustomLLMModel;
|
|
104
|
-
files?: BinaryInput[];
|
|
105
|
-
toolsConfig?: {
|
|
106
|
-
tools?: OpenAI.ChatCompletionTool[] | OpenAI.Responses.Tool[] | OpenAI.Responses.WebSearchTool[];
|
|
107
|
-
tool_choice?: TLLMToolChoice;
|
|
108
|
-
};
|
|
109
|
-
baseURL?: string;
|
|
110
|
-
|
|
111
|
-
size?: OpenAI.Images.ImageGenerateParams['size'] | OpenAI.Images.ImageEditParams['size']; // for image generation and image editing
|
|
112
|
-
quality?: 'standard' | 'hd'; // for image generation
|
|
113
|
-
n?: number; // for image generation
|
|
114
|
-
style?: 'vivid' | 'natural'; // for image generation
|
|
115
|
-
|
|
116
|
-
cache?: boolean;
|
|
117
|
-
agentId?: string;
|
|
118
|
-
teamId?: string;
|
|
119
|
-
thinking?: {
|
|
120
|
-
// for Anthropic
|
|
121
|
-
type: 'enabled' | 'disabled';
|
|
122
|
-
budget_tokens: number;
|
|
123
|
-
};
|
|
124
|
-
maxThinkingTokens?: number;
|
|
125
|
-
|
|
126
|
-
// #region Search
|
|
127
|
-
// Web search parameters (will be organized into toolsInfo.webSearch internally)
|
|
128
|
-
useWebSearch?: boolean;
|
|
129
|
-
webSearchContextSize?: TSearchContextSize;
|
|
130
|
-
webSearchCity?: string;
|
|
131
|
-
webSearchCountry?: string;
|
|
132
|
-
webSearchRegion?: string;
|
|
133
|
-
webSearchTimezone?: string;
|
|
134
|
-
|
|
135
|
-
// xAI specific search parameters (consider moving to toolsInfo.xaiSearch)
|
|
136
|
-
useSearch?: boolean;
|
|
137
|
-
searchMode?: 'auto' | 'on' | 'off';
|
|
138
|
-
returnCitations?: boolean;
|
|
139
|
-
maxSearchResults?: number;
|
|
140
|
-
searchDataSources?: string[];
|
|
141
|
-
searchCountry?: string;
|
|
142
|
-
excludedWebsites?: string[];
|
|
143
|
-
allowedWebsites?: string[];
|
|
144
|
-
includedXHandles?: string[];
|
|
145
|
-
excludedXHandles?: string[];
|
|
146
|
-
postFavoriteCount?: number;
|
|
147
|
-
postViewCount?: number;
|
|
148
|
-
rssLinks?: string;
|
|
149
|
-
safeSearch?: boolean;
|
|
150
|
-
fromDate?: string;
|
|
151
|
-
toDate?: string;
|
|
152
|
-
// #endregion
|
|
153
|
-
|
|
154
|
-
useReasoning?: boolean;
|
|
155
|
-
/**
|
|
156
|
-
* Controls the level of effort the model will put into reasoning
|
|
157
|
-
* For GPT-OSS models (20B, 120B): "low" | "medium" | "high"
|
|
158
|
-
* For Qwen 3 32B: "none" | "default"
|
|
159
|
-
*/
|
|
160
|
-
reasoningEffort?: 'none' | 'default' | OpenAIReasoningEffort;
|
|
161
|
-
max_output_tokens?: number;
|
|
162
|
-
verbosity?: OpenAI.Responses.ResponseCreateParams['text']['verbosity'];
|
|
163
|
-
abortSignal?: AbortSignal;
|
|
164
|
-
};
|
|
165
|
-
|
|
166
|
-
export type TLLMPreparedParams = TLLMParams & {
|
|
167
|
-
body: any;
|
|
168
|
-
modelEntryName?: string; // for usage reporting
|
|
169
|
-
credentials?: ILLMConnectorCredentials;
|
|
170
|
-
isUserKey?: boolean;
|
|
171
|
-
capabilities?: {
|
|
172
|
-
search?: boolean;
|
|
173
|
-
reasoning?: boolean;
|
|
174
|
-
imageGeneration?: boolean;
|
|
175
|
-
imageEditing?: boolean;
|
|
176
|
-
};
|
|
177
|
-
toolsInfo?: TToolsInfo;
|
|
178
|
-
};
|
|
179
|
-
|
|
180
|
-
export type TLLMConnectorParams = Omit<TLLMParams, 'model'> & {
|
|
181
|
-
//the LLMConnector accepts a model object that we extract the model info from instead of relying on the internal models list
|
|
182
|
-
model: string | TLLMModel | TCustomLLMModel;
|
|
183
|
-
};
|
|
184
|
-
|
|
185
|
-
export type TLLMModelEntry = {
|
|
186
|
-
llm: string;
|
|
187
|
-
tokens?: number;
|
|
188
|
-
completionTokens?: number;
|
|
189
|
-
enabled?: boolean;
|
|
190
|
-
components?: string[];
|
|
191
|
-
alias?: string;
|
|
192
|
-
tags?: string[];
|
|
193
|
-
keyOptions?: {
|
|
194
|
-
tokens: number;
|
|
195
|
-
completionTokens: number;
|
|
196
|
-
};
|
|
197
|
-
};
|
|
198
|
-
|
|
199
|
-
export enum TLLMCredentials {
|
|
200
|
-
Vault = 'vault',
|
|
201
|
-
Internal = 'internal',
|
|
202
|
-
BedrockVault = 'bedrock_vault',
|
|
203
|
-
VertexAIVault = 'vertexai_vault',
|
|
204
|
-
None = 'none',
|
|
205
|
-
}
|
|
206
|
-
export type TLLMModel = {
|
|
207
|
-
llm?: string;
|
|
208
|
-
isCustomLLM?: boolean;
|
|
209
|
-
modelId?: string;
|
|
210
|
-
tokens?: number;
|
|
211
|
-
completionTokens?: number;
|
|
212
|
-
components?: string[];
|
|
213
|
-
tags?: string[];
|
|
214
|
-
label?: string;
|
|
215
|
-
provider?: LLMProvider;
|
|
216
|
-
features?: string[];
|
|
217
|
-
enabled?: boolean;
|
|
218
|
-
alias?: string;
|
|
219
|
-
baseURL?: string;
|
|
220
|
-
keyOptions?: {
|
|
221
|
-
tokens: number;
|
|
222
|
-
completionTokens: number;
|
|
223
|
-
};
|
|
224
|
-
credentials?: TLLMCredentials;
|
|
225
|
-
|
|
226
|
-
//models can come with predefined params
|
|
227
|
-
//this can also be used to pass a preconfigured model object
|
|
228
|
-
params?: TLLMParams;
|
|
229
|
-
/**
|
|
230
|
-
* Specifies the API interface type to use for this model
|
|
231
|
-
* Examples: 'chat.completions', 'responses'
|
|
232
|
-
* This determines which OpenAI API endpoint and interface implementation to use
|
|
233
|
-
*/
|
|
234
|
-
interface?: 'chat.completions' | 'responses';
|
|
235
|
-
};
|
|
236
|
-
|
|
237
|
-
// #region [ Handle extendable LLM Providers ] ================================================
|
|
238
|
-
export const BuiltinLLMProviders = {
|
|
239
|
-
Echo: 'Echo',
|
|
240
|
-
OpenAI: 'OpenAI',
|
|
241
|
-
DeepSeek: 'DeepSeek',
|
|
242
|
-
GoogleAI: 'GoogleAI',
|
|
243
|
-
Anthropic: 'Anthropic',
|
|
244
|
-
Groq: 'Groq',
|
|
245
|
-
TogetherAI: 'TogetherAI',
|
|
246
|
-
Bedrock: 'Bedrock',
|
|
247
|
-
VertexAI: 'VertexAI',
|
|
248
|
-
xAI: 'xAI',
|
|
249
|
-
Perplexity: 'Perplexity',
|
|
250
|
-
} as const;
|
|
251
|
-
// Base provider type
|
|
252
|
-
export type TBuiltinLLMProvider = (typeof BuiltinLLMProviders)[keyof typeof BuiltinLLMProviders];
|
|
253
|
-
|
|
254
|
-
// Extensible interface for custom providers
|
|
255
|
-
export interface ILLMProviders {}
|
|
256
|
-
// Combined provider type that can be extended
|
|
257
|
-
export type TLLMProvider = TBuiltinLLMProvider | keyof ILLMProviders;
|
|
258
|
-
|
|
259
|
-
// For backward compatibility, export the built-in providers as enum-like object
|
|
260
|
-
export const TLLMProvider = BuiltinLLMProviders;
|
|
261
|
-
|
|
262
|
-
// #endregion
|
|
263
|
-
|
|
264
|
-
export type TBedrockSettings = {
|
|
265
|
-
keyIDName: string;
|
|
266
|
-
secretKeyName: string;
|
|
267
|
-
sessionKeyName: string;
|
|
268
|
-
};
|
|
269
|
-
export type TVertexAISettings = {
|
|
270
|
-
projectId: string;
|
|
271
|
-
credentialsName: string;
|
|
272
|
-
jsonCredentialsName: string;
|
|
273
|
-
apiEndpoint?: string;
|
|
274
|
-
};
|
|
275
|
-
|
|
276
|
-
export type TCustomLLMModel = TLLMModel & {
|
|
277
|
-
name: string;
|
|
278
|
-
settings: {
|
|
279
|
-
foundationModel: string;
|
|
280
|
-
customModel: string;
|
|
281
|
-
region: string;
|
|
282
|
-
} & (TBedrockSettings | TVertexAISettings);
|
|
283
|
-
};
|
|
284
|
-
|
|
285
|
-
//#region === LLM Tools ===========================
|
|
286
|
-
export type ToolData = {
|
|
287
|
-
index: number;
|
|
288
|
-
id: string;
|
|
289
|
-
type: string;
|
|
290
|
-
name: string;
|
|
291
|
-
arguments: string | Record<string, any>;
|
|
292
|
-
role: 'user' | 'tool' | 'assistant';
|
|
293
|
-
result?: string; // result string from the used tool
|
|
294
|
-
function?: any;
|
|
295
|
-
error?: string; // for Bedrock
|
|
296
|
-
callId?: string; // for OpenAI Responses API call ID mapping
|
|
297
|
-
};
|
|
298
|
-
|
|
299
|
-
/**
|
|
300
|
-
* Base tool definition interface - only truly common properties
|
|
301
|
-
* All provider-specific tool definitions extend from this
|
|
302
|
-
*/
|
|
303
|
-
export interface ToolDefinition {
|
|
304
|
-
name: string;
|
|
305
|
-
description: string;
|
|
306
|
-
}
|
|
307
|
-
|
|
308
|
-
/**
|
|
309
|
-
* OpenAI-specific tool definition
|
|
310
|
-
* Extends base with OpenAI's parameter format
|
|
311
|
-
*/
|
|
312
|
-
export interface OpenAIToolDefinition extends ToolDefinition {
|
|
313
|
-
parameters: {
|
|
314
|
-
type: 'object';
|
|
315
|
-
properties: Record<string, unknown>;
|
|
316
|
-
required?: string[];
|
|
317
|
-
};
|
|
318
|
-
}
|
|
319
|
-
|
|
320
|
-
/**
|
|
321
|
-
* Anthropic-specific tool definition
|
|
322
|
-
* Extends base with Anthropic's input_schema format
|
|
323
|
-
*/
|
|
324
|
-
export interface AnthropicToolDefinition extends ToolDefinition {
|
|
325
|
-
input_schema: {
|
|
326
|
-
type: 'object';
|
|
327
|
-
properties: Record<string, unknown>;
|
|
328
|
-
required: string[];
|
|
329
|
-
};
|
|
330
|
-
}
|
|
331
|
-
|
|
332
|
-
/**
|
|
333
|
-
* Legacy tool definition for backward compatibility
|
|
334
|
-
* @deprecated Use provider-specific definitions instead
|
|
335
|
-
*/
|
|
336
|
-
export interface LegacyToolDefinition extends ToolDefinition {
|
|
337
|
-
properties?: Record<string, unknown>;
|
|
338
|
-
requiredFields?: string[];
|
|
339
|
-
}
|
|
340
|
-
export type ToolChoice = OpenAI.ChatCompletionToolChoiceOption | FunctionCallingMode;
|
|
341
|
-
|
|
342
|
-
export interface ToolsConfig {
|
|
343
|
-
tools?: ToolDefinition[];
|
|
344
|
-
tool_choice?: ToolChoice;
|
|
345
|
-
}
|
|
346
|
-
|
|
347
|
-
//#endregion
|
|
348
|
-
|
|
349
|
-
export enum TLLMMessageRole {
|
|
350
|
-
User = 'user',
|
|
351
|
-
Assistant = 'assistant',
|
|
352
|
-
System = 'system',
|
|
353
|
-
Model = 'model',
|
|
354
|
-
Tool = 'tool',
|
|
355
|
-
Function = 'function',
|
|
356
|
-
}
|
|
357
|
-
|
|
358
|
-
export type TLLMMessageBlock = {
|
|
359
|
-
role: TLLMMessageRole;
|
|
360
|
-
content?:
|
|
361
|
-
| string
|
|
362
|
-
| { text: string }[]
|
|
363
|
-
| Array<Anthropic.TextBlockParam | Anthropic.ImageBlockParam | Anthropic.ToolUseBlockParam | Anthropic.ToolResultBlockParam>;
|
|
364
|
-
parts?: {
|
|
365
|
-
text?: string;
|
|
366
|
-
functionCall?: { name: string; args: string };
|
|
367
|
-
functionResponse?: { name: string; response: { name: string; content: string } };
|
|
368
|
-
}[]; // for Google Vertex AI
|
|
369
|
-
tool_calls?: ToolData[];
|
|
370
|
-
};
|
|
371
|
-
|
|
372
|
-
export type TLLMToolResultMessageBlock = TLLMMessageBlock & {
|
|
373
|
-
tool_call_id?: string; // for tool result message block of OpenAI
|
|
374
|
-
name?: string; // for tool result message block of OpenAI
|
|
375
|
-
};
|
|
376
|
-
|
|
377
|
-
export type GenerateImageConfig = {
|
|
378
|
-
size?: '256x256' | '512x512' | '1024x1024' | '1792x1024' | '1024x1792';
|
|
379
|
-
quality?: 'standard' | 'hd';
|
|
380
|
-
model: string;
|
|
381
|
-
style?: 'vivid' | 'natural';
|
|
382
|
-
n?: number;
|
|
383
|
-
response_format?: 'url' | 'b64_json';
|
|
384
|
-
prompt?: string;
|
|
385
|
-
};
|
|
386
|
-
|
|
387
|
-
// ! Deprecated
|
|
388
|
-
export type TLLMInputMessage = {
|
|
389
|
-
role: string;
|
|
390
|
-
content?: string | { text: string }[];
|
|
391
|
-
parts?: { text: string }[]; // * 'part' is for Google Vertex AI
|
|
392
|
-
};
|
|
393
|
-
|
|
394
|
-
export interface ILLMContextStore {
|
|
395
|
-
save(messages: any[]): Promise<void>;
|
|
396
|
-
load(count?: number): Promise<any[]>;
|
|
397
|
-
getMessage(message_id: string): Promise<any[]>;
|
|
398
|
-
}
|
|
399
|
-
|
|
400
|
-
export enum APIKeySource {
|
|
401
|
-
Smyth = 'smyth-managed',
|
|
402
|
-
User = 'user-managed',
|
|
403
|
-
Custom = 'custom',
|
|
404
|
-
}
|
|
405
|
-
|
|
406
|
-
export interface SmythLLMUsage {
|
|
407
|
-
sourceId: string;
|
|
408
|
-
input_tokens: number;
|
|
409
|
-
input_tokens_cache_write: number;
|
|
410
|
-
input_tokens_cache_read: number;
|
|
411
|
-
output_tokens: number;
|
|
412
|
-
keySource?: APIKeySource;
|
|
413
|
-
agentId: string;
|
|
414
|
-
teamId: string;
|
|
415
|
-
tier?: string; // for Google AI
|
|
416
|
-
}
|
|
417
|
-
|
|
418
|
-
export interface SmythTaskUsage {
|
|
419
|
-
sourceId: string;
|
|
420
|
-
number: number;
|
|
421
|
-
agentId: string;
|
|
422
|
-
teamId: string;
|
|
423
|
-
}
|
|
424
|
-
|
|
425
|
-
export type TLLMModelsList = {
|
|
426
|
-
[key: string]: TLLMModel | TCustomLLMModel;
|
|
427
|
-
};
|
|
428
|
-
|
|
429
|
-
export enum TLLMEvent {
|
|
430
|
-
/** Generated response chunks */
|
|
431
|
-
Content = 'content',
|
|
432
|
-
/** Thinking blocks/chunks */
|
|
433
|
-
Thinking = 'thinking',
|
|
434
|
-
/** End of the response */
|
|
435
|
-
End = 'end',
|
|
436
|
-
/** Error */
|
|
437
|
-
Error = 'error',
|
|
438
|
-
/** Tool information : emitted by the LLM determines the next tool call */
|
|
439
|
-
ToolInfo = 'toolInfo',
|
|
440
|
-
/** Tool call : emitted before the tool call */
|
|
441
|
-
ToolCall = 'toolCall',
|
|
442
|
-
/** Tool result : emitted after the tool call */
|
|
443
|
-
ToolResult = 'toolResult',
|
|
444
|
-
/** Tokens usage information */
|
|
445
|
-
Usage = 'usage',
|
|
446
|
-
/** Interrupted : emitted when the response is interrupted before completion */
|
|
447
|
-
Interrupted = 'interrupted',
|
|
448
|
-
}
|
|
449
|
-
|
|
450
|
-
export interface ILLMRequestContext {
|
|
451
|
-
modelEntryName: string;
|
|
452
|
-
agentId: string;
|
|
453
|
-
teamId: string;
|
|
454
|
-
isUserKey: boolean;
|
|
455
|
-
hasFiles?: boolean;
|
|
456
|
-
modelInfo: TCustomLLMModel | TLLMModel;
|
|
457
|
-
credentials: ILLMConnectorCredentials;
|
|
458
|
-
toolsInfo?: TToolsInfo;
|
|
459
|
-
}
|
|
460
|
-
|
|
461
|
-
// Generic interface that can be extended by specific providers
|
|
462
|
-
export interface ILLMRequestFuncParams<TBody = any> {
|
|
463
|
-
acRequest: AccessRequest;
|
|
464
|
-
body: TBody;
|
|
465
|
-
context: ILLMRequestContext;
|
|
466
|
-
}
|
|
467
|
-
|
|
468
|
-
// For future providers, you can add similar types:
|
|
469
|
-
// export type TAnthropicRequestBody = Anthropic.MessageCreateParams | Anthropic.MessageStreamParams;
|
|
470
|
-
// export type IAnthropicRequestFuncParams = ILLMRequestFuncParams<TAnthropicRequestBody>;
|
|
471
|
-
|
|
472
|
-
export type TLLMChatResponse = {
|
|
473
|
-
content: string;
|
|
474
|
-
finishReason: string;
|
|
475
|
-
thinkingContent?: string;
|
|
476
|
-
usage?: any;
|
|
477
|
-
useTool?: boolean;
|
|
478
|
-
toolsData?: ToolData[];
|
|
479
|
-
message?: OpenAI.ChatCompletionMessageParam | Anthropic.MessageParam;
|
|
480
|
-
};
|
|
481
|
-
|
|
482
|
-
export type TOpenAIRequestBody =
|
|
483
|
-
| OpenAI.ChatCompletionCreateParamsNonStreaming
|
|
484
|
-
| OpenAI.ChatCompletionCreateParamsStreaming
|
|
485
|
-
| OpenAI.ChatCompletionCreateParams
|
|
486
|
-
| OpenAI.Responses.ResponseCreateParams
|
|
487
|
-
| OpenAI.Responses.ResponseCreateParamsNonStreaming
|
|
488
|
-
| OpenAI.Responses.ResponseCreateParamsStreaming
|
|
489
|
-
| OpenAI.Images.ImageGenerateParams
|
|
490
|
-
| OpenAI.Images.ImageEditParams;
|
|
491
|
-
|
|
492
|
-
export type TAnthropicRequestBody = Anthropic.MessageCreateParamsNonStreaming;
|
|
493
|
-
|
|
494
|
-
export type TGoogleAIRequestBody = ModelParams & { messages: string | TLLMMessageBlock[] | GenerateContentRequest };
|
|
495
|
-
|
|
496
|
-
export type TLLMRequestBody = TOpenAIRequestBody | TAnthropicRequestBody | TGoogleAIRequestBody | ConverseCommandInput;
|
|
1
|
+
import OpenAI from 'openai';
|
|
2
|
+
import Anthropic from '@anthropic-ai/sdk';
|
|
3
|
+
import { FunctionCallingMode, ModelParams, GenerateContentRequest } from '@google/generative-ai';
|
|
4
|
+
|
|
5
|
+
import { BinaryInput } from '@sre/helpers/BinaryInput.helper';
|
|
6
|
+
import { type models } from '@sre/LLMManager/models';
|
|
7
|
+
import { AccessRequest } from '@sre/Security/AccessControl/AccessRequest.class';
|
|
8
|
+
import { ConverseCommandInput } from '@aws-sdk/client-bedrock-runtime';
|
|
9
|
+
|
|
10
|
+
export type LLMProvider = Extract<(typeof models)[keyof typeof models], { llm: string }>['llm'] | 'VertexAI' | 'Bedrock';
|
|
11
|
+
export type LLMModel = keyof typeof models;
|
|
12
|
+
export type LLMModelInfo = (typeof models)[LLMModel];
|
|
13
|
+
|
|
14
|
+
// Google Service Account Credentials Interface
|
|
15
|
+
export interface VertexAICredentials {
|
|
16
|
+
type: 'service_account';
|
|
17
|
+
project_id: string;
|
|
18
|
+
private_key_id: string;
|
|
19
|
+
private_key: string;
|
|
20
|
+
client_email: string;
|
|
21
|
+
client_id: string;
|
|
22
|
+
auth_uri: string;
|
|
23
|
+
token_uri: string;
|
|
24
|
+
auth_provider_x509_cert_url: string;
|
|
25
|
+
client_x509_cert_url: string;
|
|
26
|
+
universe_domain?: string; // Optional, defaults to "googleapis.com"
|
|
27
|
+
}
|
|
28
|
+
|
|
29
|
+
// Basic LLM Credentials Interface
|
|
30
|
+
export interface BasicCredentials {
|
|
31
|
+
apiKey: string;
|
|
32
|
+
isUserKey: boolean;
|
|
33
|
+
}
|
|
34
|
+
|
|
35
|
+
// AWS Bedrock Credentials Interface
|
|
36
|
+
export interface BedrockCredentials {
|
|
37
|
+
accessKeyId: string;
|
|
38
|
+
secretAccessKey: string;
|
|
39
|
+
sessionToken?: string;
|
|
40
|
+
}
|
|
41
|
+
|
|
42
|
+
// Union type for all credential types
|
|
43
|
+
export type ILLMConnectorCredentials = BasicCredentials | BedrockCredentials | VertexAICredentials;
|
|
44
|
+
|
|
45
|
+
export type TOpenAIResponseToolChoice = OpenAI.Responses.ToolChoiceOptions | OpenAI.Responses.ToolChoiceTypes | OpenAI.Responses.ToolChoiceFunction;
|
|
46
|
+
export type TLLMToolChoice = OpenAI.ChatCompletionToolChoiceOption;
|
|
47
|
+
|
|
48
|
+
// Local alias to the upstream OpenAI reasoning effort union type
|
|
49
|
+
export type OpenAIReasoningEffort = NonNullable<OpenAI.Responses.ResponseCreateParams['reasoning']>['effort'];
|
|
50
|
+
|
|
51
|
+
export type TOpenAIToolsInfo = {
|
|
52
|
+
webSearch: {
|
|
53
|
+
enabled: boolean;
|
|
54
|
+
contextSize: TSearchContextSize;
|
|
55
|
+
city?: string;
|
|
56
|
+
country?: string;
|
|
57
|
+
region?: string;
|
|
58
|
+
timezone?: string;
|
|
59
|
+
};
|
|
60
|
+
};
|
|
61
|
+
|
|
62
|
+
export type TxAIToolsInfo = {
|
|
63
|
+
search: {
|
|
64
|
+
enabled: boolean;
|
|
65
|
+
mode?: 'auto' | 'on' | 'off';
|
|
66
|
+
returnCitations?: boolean;
|
|
67
|
+
maxResults?: number;
|
|
68
|
+
dataSources?: string[];
|
|
69
|
+
country?: string;
|
|
70
|
+
excludedWebsites?: string[];
|
|
71
|
+
allowedWebsites?: string[];
|
|
72
|
+
includedXHandles?: string[];
|
|
73
|
+
excludedXHandles?: string[];
|
|
74
|
+
postFavoriteCount?: number;
|
|
75
|
+
postViewCount?: number;
|
|
76
|
+
rssLinks?: string;
|
|
77
|
+
safeSearch?: boolean;
|
|
78
|
+
fromDate?: string;
|
|
79
|
+
toDate?: string;
|
|
80
|
+
};
|
|
81
|
+
};
|
|
82
|
+
|
|
83
|
+
export type TToolsInfo = {
|
|
84
|
+
openai: TOpenAIToolsInfo;
|
|
85
|
+
xai: TxAIToolsInfo;
|
|
86
|
+
};
|
|
87
|
+
|
|
88
|
+
export type TSearchContextSize = 'low' | 'medium' | 'high';
|
|
89
|
+
|
|
90
|
+
export type TLLMParams = {
|
|
91
|
+
model: TLLMModel | string;
|
|
92
|
+
|
|
93
|
+
prompt?: string;
|
|
94
|
+
messages?: any[]; // TODO [Forhad]: apply proper typing
|
|
95
|
+
temperature?: number;
|
|
96
|
+
maxTokens?: number;
|
|
97
|
+
stopSequences?: string[];
|
|
98
|
+
topP?: number;
|
|
99
|
+
topK?: number;
|
|
100
|
+
frequencyPenalty?: number;
|
|
101
|
+
presencePenalty?: number;
|
|
102
|
+
responseFormat?: any; // TODO [Forhad]: apply proper typing
|
|
103
|
+
modelInfo?: TCustomLLMModel;
|
|
104
|
+
files?: BinaryInput[];
|
|
105
|
+
toolsConfig?: {
|
|
106
|
+
tools?: OpenAI.ChatCompletionTool[] | OpenAI.Responses.Tool[] | OpenAI.Responses.WebSearchTool[];
|
|
107
|
+
tool_choice?: TLLMToolChoice;
|
|
108
|
+
};
|
|
109
|
+
baseURL?: string;
|
|
110
|
+
|
|
111
|
+
size?: OpenAI.Images.ImageGenerateParams['size'] | OpenAI.Images.ImageEditParams['size']; // for image generation and image editing
|
|
112
|
+
quality?: 'standard' | 'hd'; // for image generation
|
|
113
|
+
n?: number; // for image generation
|
|
114
|
+
style?: 'vivid' | 'natural'; // for image generation
|
|
115
|
+
|
|
116
|
+
cache?: boolean;
|
|
117
|
+
agentId?: string;
|
|
118
|
+
teamId?: string;
|
|
119
|
+
thinking?: {
|
|
120
|
+
// for Anthropic
|
|
121
|
+
type: 'enabled' | 'disabled';
|
|
122
|
+
budget_tokens: number;
|
|
123
|
+
};
|
|
124
|
+
maxThinkingTokens?: number;
|
|
125
|
+
|
|
126
|
+
// #region Search
|
|
127
|
+
// Web search parameters (will be organized into toolsInfo.webSearch internally)
|
|
128
|
+
useWebSearch?: boolean;
|
|
129
|
+
webSearchContextSize?: TSearchContextSize;
|
|
130
|
+
webSearchCity?: string;
|
|
131
|
+
webSearchCountry?: string;
|
|
132
|
+
webSearchRegion?: string;
|
|
133
|
+
webSearchTimezone?: string;
|
|
134
|
+
|
|
135
|
+
// xAI specific search parameters (consider moving to toolsInfo.xaiSearch)
|
|
136
|
+
useSearch?: boolean;
|
|
137
|
+
searchMode?: 'auto' | 'on' | 'off';
|
|
138
|
+
returnCitations?: boolean;
|
|
139
|
+
maxSearchResults?: number;
|
|
140
|
+
searchDataSources?: string[];
|
|
141
|
+
searchCountry?: string;
|
|
142
|
+
excludedWebsites?: string[];
|
|
143
|
+
allowedWebsites?: string[];
|
|
144
|
+
includedXHandles?: string[];
|
|
145
|
+
excludedXHandles?: string[];
|
|
146
|
+
postFavoriteCount?: number;
|
|
147
|
+
postViewCount?: number;
|
|
148
|
+
rssLinks?: string;
|
|
149
|
+
safeSearch?: boolean;
|
|
150
|
+
fromDate?: string;
|
|
151
|
+
toDate?: string;
|
|
152
|
+
// #endregion
|
|
153
|
+
|
|
154
|
+
useReasoning?: boolean;
|
|
155
|
+
/**
|
|
156
|
+
* Controls the level of effort the model will put into reasoning
|
|
157
|
+
* For GPT-OSS models (20B, 120B): "low" | "medium" | "high"
|
|
158
|
+
* For Qwen 3 32B: "none" | "default"
|
|
159
|
+
*/
|
|
160
|
+
reasoningEffort?: 'none' | 'default' | OpenAIReasoningEffort;
|
|
161
|
+
max_output_tokens?: number;
|
|
162
|
+
verbosity?: OpenAI.Responses.ResponseCreateParams['text']['verbosity'];
|
|
163
|
+
abortSignal?: AbortSignal;
|
|
164
|
+
};
|
|
165
|
+
|
|
166
|
+
export type TLLMPreparedParams = TLLMParams & {
|
|
167
|
+
body: any;
|
|
168
|
+
modelEntryName?: string; // for usage reporting
|
|
169
|
+
credentials?: ILLMConnectorCredentials;
|
|
170
|
+
isUserKey?: boolean;
|
|
171
|
+
capabilities?: {
|
|
172
|
+
search?: boolean;
|
|
173
|
+
reasoning?: boolean;
|
|
174
|
+
imageGeneration?: boolean;
|
|
175
|
+
imageEditing?: boolean;
|
|
176
|
+
};
|
|
177
|
+
toolsInfo?: TToolsInfo;
|
|
178
|
+
};
|
|
179
|
+
|
|
180
|
+
export type TLLMConnectorParams = Omit<TLLMParams, 'model'> & {
|
|
181
|
+
//the LLMConnector accepts a model object that we extract the model info from instead of relying on the internal models list
|
|
182
|
+
model: string | TLLMModel | TCustomLLMModel;
|
|
183
|
+
};
|
|
184
|
+
|
|
185
|
+
export type TLLMModelEntry = {
|
|
186
|
+
llm: string;
|
|
187
|
+
tokens?: number;
|
|
188
|
+
completionTokens?: number;
|
|
189
|
+
enabled?: boolean;
|
|
190
|
+
components?: string[];
|
|
191
|
+
alias?: string;
|
|
192
|
+
tags?: string[];
|
|
193
|
+
keyOptions?: {
|
|
194
|
+
tokens: number;
|
|
195
|
+
completionTokens: number;
|
|
196
|
+
};
|
|
197
|
+
};
|
|
198
|
+
|
|
199
|
+
export enum TLLMCredentials {
|
|
200
|
+
Vault = 'vault',
|
|
201
|
+
Internal = 'internal',
|
|
202
|
+
BedrockVault = 'bedrock_vault',
|
|
203
|
+
VertexAIVault = 'vertexai_vault',
|
|
204
|
+
None = 'none',
|
|
205
|
+
}
|
|
206
|
+
export type TLLMModel = {
|
|
207
|
+
llm?: string;
|
|
208
|
+
isCustomLLM?: boolean;
|
|
209
|
+
modelId?: string;
|
|
210
|
+
tokens?: number;
|
|
211
|
+
completionTokens?: number;
|
|
212
|
+
components?: string[];
|
|
213
|
+
tags?: string[];
|
|
214
|
+
label?: string;
|
|
215
|
+
provider?: LLMProvider;
|
|
216
|
+
features?: string[];
|
|
217
|
+
enabled?: boolean;
|
|
218
|
+
alias?: string;
|
|
219
|
+
baseURL?: string;
|
|
220
|
+
keyOptions?: {
|
|
221
|
+
tokens: number;
|
|
222
|
+
completionTokens: number;
|
|
223
|
+
};
|
|
224
|
+
credentials?: TLLMCredentials;
|
|
225
|
+
|
|
226
|
+
//models can come with predefined params
|
|
227
|
+
//this can also be used to pass a preconfigured model object
|
|
228
|
+
params?: TLLMParams;
|
|
229
|
+
/**
|
|
230
|
+
* Specifies the API interface type to use for this model
|
|
231
|
+
* Examples: 'chat.completions', 'responses'
|
|
232
|
+
* This determines which OpenAI API endpoint and interface implementation to use
|
|
233
|
+
*/
|
|
234
|
+
interface?: 'chat.completions' | 'responses';
|
|
235
|
+
};
|
|
236
|
+
|
|
237
|
+
// #region [ Handle extendable LLM Providers ] ================================================
|
|
238
|
+
export const BuiltinLLMProviders = {
|
|
239
|
+
Echo: 'Echo',
|
|
240
|
+
OpenAI: 'OpenAI',
|
|
241
|
+
DeepSeek: 'DeepSeek',
|
|
242
|
+
GoogleAI: 'GoogleAI',
|
|
243
|
+
Anthropic: 'Anthropic',
|
|
244
|
+
Groq: 'Groq',
|
|
245
|
+
TogetherAI: 'TogetherAI',
|
|
246
|
+
Bedrock: 'Bedrock',
|
|
247
|
+
VertexAI: 'VertexAI',
|
|
248
|
+
xAI: 'xAI',
|
|
249
|
+
Perplexity: 'Perplexity',
|
|
250
|
+
} as const;
|
|
251
|
+
// Base provider type
|
|
252
|
+
export type TBuiltinLLMProvider = (typeof BuiltinLLMProviders)[keyof typeof BuiltinLLMProviders];
|
|
253
|
+
|
|
254
|
+
// Extensible interface for custom providers
|
|
255
|
+
export interface ILLMProviders {}
|
|
256
|
+
// Combined provider type that can be extended
|
|
257
|
+
export type TLLMProvider = TBuiltinLLMProvider | keyof ILLMProviders;
|
|
258
|
+
|
|
259
|
+
// For backward compatibility, export the built-in providers as enum-like object
|
|
260
|
+
export const TLLMProvider = BuiltinLLMProviders;
|
|
261
|
+
|
|
262
|
+
// #endregion
|
|
263
|
+
|
|
264
|
+
export type TBedrockSettings = {
|
|
265
|
+
keyIDName: string;
|
|
266
|
+
secretKeyName: string;
|
|
267
|
+
sessionKeyName: string;
|
|
268
|
+
};
|
|
269
|
+
export type TVertexAISettings = {
|
|
270
|
+
projectId: string;
|
|
271
|
+
credentialsName: string;
|
|
272
|
+
jsonCredentialsName: string;
|
|
273
|
+
apiEndpoint?: string;
|
|
274
|
+
};
|
|
275
|
+
|
|
276
|
+
export type TCustomLLMModel = TLLMModel & {
|
|
277
|
+
name: string;
|
|
278
|
+
settings: {
|
|
279
|
+
foundationModel: string;
|
|
280
|
+
customModel: string;
|
|
281
|
+
region: string;
|
|
282
|
+
} & (TBedrockSettings | TVertexAISettings);
|
|
283
|
+
};
|
|
284
|
+
|
|
285
|
+
//#region === LLM Tools ===========================
|
|
286
|
+
export type ToolData = {
|
|
287
|
+
index: number;
|
|
288
|
+
id: string;
|
|
289
|
+
type: string;
|
|
290
|
+
name: string;
|
|
291
|
+
arguments: string | Record<string, any>;
|
|
292
|
+
role: 'user' | 'tool' | 'assistant';
|
|
293
|
+
result?: string; // result string from the used tool
|
|
294
|
+
function?: any;
|
|
295
|
+
error?: string; // for Bedrock
|
|
296
|
+
callId?: string; // for OpenAI Responses API call ID mapping
|
|
297
|
+
};
|
|
298
|
+
|
|
299
|
+
/**
|
|
300
|
+
* Base tool definition interface - only truly common properties
|
|
301
|
+
* All provider-specific tool definitions extend from this
|
|
302
|
+
*/
|
|
303
|
+
export interface ToolDefinition {
|
|
304
|
+
name: string;
|
|
305
|
+
description: string;
|
|
306
|
+
}
|
|
307
|
+
|
|
308
|
+
/**
|
|
309
|
+
* OpenAI-specific tool definition
|
|
310
|
+
* Extends base with OpenAI's parameter format
|
|
311
|
+
*/
|
|
312
|
+
export interface OpenAIToolDefinition extends ToolDefinition {
|
|
313
|
+
parameters: {
|
|
314
|
+
type: 'object';
|
|
315
|
+
properties: Record<string, unknown>;
|
|
316
|
+
required?: string[];
|
|
317
|
+
};
|
|
318
|
+
}
|
|
319
|
+
|
|
320
|
+
/**
|
|
321
|
+
* Anthropic-specific tool definition
|
|
322
|
+
* Extends base with Anthropic's input_schema format
|
|
323
|
+
*/
|
|
324
|
+
export interface AnthropicToolDefinition extends ToolDefinition {
|
|
325
|
+
input_schema: {
|
|
326
|
+
type: 'object';
|
|
327
|
+
properties: Record<string, unknown>;
|
|
328
|
+
required: string[];
|
|
329
|
+
};
|
|
330
|
+
}
|
|
331
|
+
|
|
332
|
+
/**
|
|
333
|
+
* Legacy tool definition for backward compatibility
|
|
334
|
+
* @deprecated Use provider-specific definitions instead
|
|
335
|
+
*/
|
|
336
|
+
export interface LegacyToolDefinition extends ToolDefinition {
|
|
337
|
+
properties?: Record<string, unknown>;
|
|
338
|
+
requiredFields?: string[];
|
|
339
|
+
}
|
|
340
|
+
export type ToolChoice = OpenAI.ChatCompletionToolChoiceOption | FunctionCallingMode;
|
|
341
|
+
|
|
342
|
+
export interface ToolsConfig {
|
|
343
|
+
tools?: ToolDefinition[];
|
|
344
|
+
tool_choice?: ToolChoice;
|
|
345
|
+
}
|
|
346
|
+
|
|
347
|
+
//#endregion
|
|
348
|
+
|
|
349
|
+
export enum TLLMMessageRole {
|
|
350
|
+
User = 'user',
|
|
351
|
+
Assistant = 'assistant',
|
|
352
|
+
System = 'system',
|
|
353
|
+
Model = 'model',
|
|
354
|
+
Tool = 'tool',
|
|
355
|
+
Function = 'function',
|
|
356
|
+
}
|
|
357
|
+
|
|
358
|
+
export type TLLMMessageBlock = {
|
|
359
|
+
role: TLLMMessageRole;
|
|
360
|
+
content?:
|
|
361
|
+
| string
|
|
362
|
+
| { text: string }[]
|
|
363
|
+
| Array<Anthropic.TextBlockParam | Anthropic.ImageBlockParam | Anthropic.ToolUseBlockParam | Anthropic.ToolResultBlockParam>;
|
|
364
|
+
parts?: {
|
|
365
|
+
text?: string;
|
|
366
|
+
functionCall?: { name: string; args: string };
|
|
367
|
+
functionResponse?: { name: string; response: { name: string; content: string } };
|
|
368
|
+
}[]; // for Google Vertex AI
|
|
369
|
+
tool_calls?: ToolData[];
|
|
370
|
+
};
|
|
371
|
+
|
|
372
|
+
export type TLLMToolResultMessageBlock = TLLMMessageBlock & {
|
|
373
|
+
tool_call_id?: string; // for tool result message block of OpenAI
|
|
374
|
+
name?: string; // for tool result message block of OpenAI
|
|
375
|
+
};
|
|
376
|
+
|
|
377
|
+
export type GenerateImageConfig = {
|
|
378
|
+
size?: '256x256' | '512x512' | '1024x1024' | '1792x1024' | '1024x1792';
|
|
379
|
+
quality?: 'standard' | 'hd';
|
|
380
|
+
model: string;
|
|
381
|
+
style?: 'vivid' | 'natural';
|
|
382
|
+
n?: number;
|
|
383
|
+
response_format?: 'url' | 'b64_json';
|
|
384
|
+
prompt?: string;
|
|
385
|
+
};
|
|
386
|
+
|
|
387
|
+
// ! Deprecated
|
|
388
|
+
export type TLLMInputMessage = {
|
|
389
|
+
role: string;
|
|
390
|
+
content?: string | { text: string }[];
|
|
391
|
+
parts?: { text: string }[]; // * 'part' is for Google Vertex AI
|
|
392
|
+
};
|
|
393
|
+
|
|
394
|
+
export interface ILLMContextStore {
|
|
395
|
+
save(messages: any[]): Promise<void>;
|
|
396
|
+
load(count?: number): Promise<any[]>;
|
|
397
|
+
getMessage(message_id: string): Promise<any[]>;
|
|
398
|
+
}
|
|
399
|
+
|
|
400
|
+
export enum APIKeySource {
|
|
401
|
+
Smyth = 'smyth-managed',
|
|
402
|
+
User = 'user-managed',
|
|
403
|
+
Custom = 'custom',
|
|
404
|
+
}
|
|
405
|
+
|
|
406
|
+
export interface SmythLLMUsage {
|
|
407
|
+
sourceId: string;
|
|
408
|
+
input_tokens: number;
|
|
409
|
+
input_tokens_cache_write: number;
|
|
410
|
+
input_tokens_cache_read: number;
|
|
411
|
+
output_tokens: number;
|
|
412
|
+
keySource?: APIKeySource;
|
|
413
|
+
agentId: string;
|
|
414
|
+
teamId: string;
|
|
415
|
+
tier?: string; // for Google AI
|
|
416
|
+
}
|
|
417
|
+
|
|
418
|
+
export interface SmythTaskUsage {
|
|
419
|
+
sourceId: string;
|
|
420
|
+
number: number;
|
|
421
|
+
agentId: string;
|
|
422
|
+
teamId: string;
|
|
423
|
+
}
|
|
424
|
+
|
|
425
|
+
export type TLLMModelsList = {
|
|
426
|
+
[key: string]: TLLMModel | TCustomLLMModel;
|
|
427
|
+
};
|
|
428
|
+
|
|
429
|
+
export enum TLLMEvent {
|
|
430
|
+
/** Generated response chunks */
|
|
431
|
+
Content = 'content',
|
|
432
|
+
/** Thinking blocks/chunks */
|
|
433
|
+
Thinking = 'thinking',
|
|
434
|
+
/** End of the response */
|
|
435
|
+
End = 'end',
|
|
436
|
+
/** Error */
|
|
437
|
+
Error = 'error',
|
|
438
|
+
/** Tool information : emitted by the LLM determines the next tool call */
|
|
439
|
+
ToolInfo = 'toolInfo',
|
|
440
|
+
/** Tool call : emitted before the tool call */
|
|
441
|
+
ToolCall = 'toolCall',
|
|
442
|
+
/** Tool result : emitted after the tool call */
|
|
443
|
+
ToolResult = 'toolResult',
|
|
444
|
+
/** Tokens usage information */
|
|
445
|
+
Usage = 'usage',
|
|
446
|
+
/** Interrupted : emitted when the response is interrupted before completion */
|
|
447
|
+
Interrupted = 'interrupted',
|
|
448
|
+
}
|
|
449
|
+
|
|
450
|
+
export interface ILLMRequestContext {
|
|
451
|
+
modelEntryName: string;
|
|
452
|
+
agentId: string;
|
|
453
|
+
teamId: string;
|
|
454
|
+
isUserKey: boolean;
|
|
455
|
+
hasFiles?: boolean;
|
|
456
|
+
modelInfo: TCustomLLMModel | TLLMModel;
|
|
457
|
+
credentials: ILLMConnectorCredentials;
|
|
458
|
+
toolsInfo?: TToolsInfo;
|
|
459
|
+
}
|
|
460
|
+
|
|
461
|
+
// Generic interface that can be extended by specific providers
|
|
462
|
+
export interface ILLMRequestFuncParams<TBody = any> {
|
|
463
|
+
acRequest: AccessRequest;
|
|
464
|
+
body: TBody;
|
|
465
|
+
context: ILLMRequestContext;
|
|
466
|
+
}
|
|
467
|
+
|
|
468
|
+
// For future providers, you can add similar types:
|
|
469
|
+
// export type TAnthropicRequestBody = Anthropic.MessageCreateParams | Anthropic.MessageStreamParams;
|
|
470
|
+
// export type IAnthropicRequestFuncParams = ILLMRequestFuncParams<TAnthropicRequestBody>;
|
|
471
|
+
|
|
472
|
+
export type TLLMChatResponse = {
|
|
473
|
+
content: string;
|
|
474
|
+
finishReason: string;
|
|
475
|
+
thinkingContent?: string;
|
|
476
|
+
usage?: any;
|
|
477
|
+
useTool?: boolean;
|
|
478
|
+
toolsData?: ToolData[];
|
|
479
|
+
message?: OpenAI.ChatCompletionMessageParam | Anthropic.MessageParam;
|
|
480
|
+
};
|
|
481
|
+
|
|
482
|
+
export type TOpenAIRequestBody =
|
|
483
|
+
| OpenAI.ChatCompletionCreateParamsNonStreaming
|
|
484
|
+
| OpenAI.ChatCompletionCreateParamsStreaming
|
|
485
|
+
| OpenAI.ChatCompletionCreateParams
|
|
486
|
+
| OpenAI.Responses.ResponseCreateParams
|
|
487
|
+
| OpenAI.Responses.ResponseCreateParamsNonStreaming
|
|
488
|
+
| OpenAI.Responses.ResponseCreateParamsStreaming
|
|
489
|
+
| OpenAI.Images.ImageGenerateParams
|
|
490
|
+
| OpenAI.Images.ImageEditParams;
|
|
491
|
+
|
|
492
|
+
export type TAnthropicRequestBody = Anthropic.MessageCreateParamsNonStreaming;
|
|
493
|
+
|
|
494
|
+
export type TGoogleAIRequestBody = ModelParams & { messages: string | TLLMMessageBlock[] | GenerateContentRequest };
|
|
495
|
+
|
|
496
|
+
export type TLLMRequestBody = TOpenAIRequestBody | TAnthropicRequestBody | TGoogleAIRequestBody | ConverseCommandInput;
|