@smythos/sre 1.6.1 → 1.6.8

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (234) hide show
  1. package/CHANGELOG +111 -111
  2. package/LICENSE +18 -18
  3. package/README.md +135 -135
  4. package/dist/index.js +2 -2
  5. package/dist/index.js.map +1 -1
  6. package/dist/types/subsystems/LLMManager/ModelsProvider.service/connectors/SmythModelsProvider.class.d.ts +39 -0
  7. package/package.json +1 -1
  8. package/src/Components/APICall/APICall.class.ts +161 -161
  9. package/src/Components/APICall/AccessTokenManager.ts +166 -166
  10. package/src/Components/APICall/ArrayBufferResponse.helper.ts +58 -58
  11. package/src/Components/APICall/OAuth.helper.ts +447 -447
  12. package/src/Components/APICall/mimeTypeCategories.ts +46 -46
  13. package/src/Components/APICall/parseData.ts +167 -167
  14. package/src/Components/APICall/parseHeaders.ts +41 -41
  15. package/src/Components/APICall/parseProxy.ts +68 -68
  16. package/src/Components/APICall/parseUrl.ts +91 -91
  17. package/src/Components/APIEndpoint.class.ts +234 -234
  18. package/src/Components/APIOutput.class.ts +58 -58
  19. package/src/Components/AgentPlugin.class.ts +102 -102
  20. package/src/Components/Async.class.ts +155 -155
  21. package/src/Components/Await.class.ts +90 -90
  22. package/src/Components/Classifier.class.ts +158 -158
  23. package/src/Components/Component.class.ts +147 -147
  24. package/src/Components/ComponentHost.class.ts +38 -38
  25. package/src/Components/DataSourceCleaner.class.ts +92 -92
  26. package/src/Components/DataSourceIndexer.class.ts +181 -181
  27. package/src/Components/DataSourceLookup.class.ts +161 -161
  28. package/src/Components/ECMASandbox.class.ts +72 -72
  29. package/src/Components/FEncDec.class.ts +29 -29
  30. package/src/Components/FHash.class.ts +33 -33
  31. package/src/Components/FSign.class.ts +80 -80
  32. package/src/Components/FSleep.class.ts +25 -25
  33. package/src/Components/FTimestamp.class.ts +66 -66
  34. package/src/Components/FileStore.class.ts +78 -78
  35. package/src/Components/ForEach.class.ts +97 -97
  36. package/src/Components/GPTPlugin.class.ts +70 -70
  37. package/src/Components/GenAILLM.class.ts +586 -586
  38. package/src/Components/HuggingFace.class.ts +313 -313
  39. package/src/Components/Image/imageSettings.config.ts +70 -70
  40. package/src/Components/ImageGenerator.class.ts +483 -483
  41. package/src/Components/JSONFilter.class.ts +54 -54
  42. package/src/Components/LLMAssistant.class.ts +213 -213
  43. package/src/Components/LogicAND.class.ts +28 -28
  44. package/src/Components/LogicAtLeast.class.ts +85 -85
  45. package/src/Components/LogicAtMost.class.ts +86 -86
  46. package/src/Components/LogicOR.class.ts +29 -29
  47. package/src/Components/LogicXOR.class.ts +34 -34
  48. package/src/Components/MCPClient.class.ts +137 -137
  49. package/src/Components/MemoryDeleteKeyVal.class.ts +70 -70
  50. package/src/Components/MemoryReadKeyVal.class.ts +67 -67
  51. package/src/Components/MemoryWriteKeyVal.class.ts +62 -62
  52. package/src/Components/MemoryWriteObject.class.ts +97 -97
  53. package/src/Components/MultimodalLLM.class.ts +128 -128
  54. package/src/Components/OpenAPI.class.ts +72 -72
  55. package/src/Components/PromptGenerator.class.ts +122 -122
  56. package/src/Components/ScrapflyWebScrape.class.ts +183 -183
  57. package/src/Components/ServerlessCode.class.ts +123 -123
  58. package/src/Components/TavilyWebSearch.class.ts +103 -103
  59. package/src/Components/VisionLLM.class.ts +104 -104
  60. package/src/Components/ZapierAction.class.ts +127 -127
  61. package/src/Components/index.ts +97 -97
  62. package/src/Core/AgentProcess.helper.ts +240 -240
  63. package/src/Core/Connector.class.ts +123 -123
  64. package/src/Core/ConnectorsService.ts +197 -197
  65. package/src/Core/DummyConnector.ts +49 -49
  66. package/src/Core/HookService.ts +105 -105
  67. package/src/Core/SmythRuntime.class.ts +241 -241
  68. package/src/Core/SystemEvents.ts +16 -16
  69. package/src/Core/boot.ts +56 -56
  70. package/src/config.ts +15 -15
  71. package/src/constants.ts +126 -126
  72. package/src/data/hugging-face.params.json +579 -579
  73. package/src/helpers/AWSLambdaCode.helper.ts +624 -599
  74. package/src/helpers/BinaryInput.helper.ts +331 -331
  75. package/src/helpers/Conversation.helper.ts +1157 -1157
  76. package/src/helpers/ECMASandbox.helper.ts +64 -64
  77. package/src/helpers/JsonContent.helper.ts +97 -97
  78. package/src/helpers/LocalCache.helper.ts +97 -97
  79. package/src/helpers/Log.helper.ts +274 -274
  80. package/src/helpers/OpenApiParser.helper.ts +150 -150
  81. package/src/helpers/S3Cache.helper.ts +147 -147
  82. package/src/helpers/SmythURI.helper.ts +5 -5
  83. package/src/helpers/Sysconfig.helper.ts +95 -95
  84. package/src/helpers/TemplateString.helper.ts +243 -243
  85. package/src/helpers/TypeChecker.helper.ts +329 -329
  86. package/src/index.ts +198 -198
  87. package/src/index.ts.bak +198 -198
  88. package/src/subsystems/AgentManager/Agent.class.ts +1114 -1114
  89. package/src/subsystems/AgentManager/Agent.helper.ts +3 -3
  90. package/src/subsystems/AgentManager/AgentData.service/AgentDataConnector.ts +230 -230
  91. package/src/subsystems/AgentManager/AgentData.service/connectors/CLIAgentDataConnector.class.ts +66 -66
  92. package/src/subsystems/AgentManager/AgentData.service/connectors/LocalAgentDataConnector.class.ts +145 -145
  93. package/src/subsystems/AgentManager/AgentData.service/connectors/NullAgentData.class.ts +39 -39
  94. package/src/subsystems/AgentManager/AgentData.service/index.ts +18 -18
  95. package/src/subsystems/AgentManager/AgentLogger.class.ts +301 -301
  96. package/src/subsystems/AgentManager/AgentRequest.class.ts +51 -51
  97. package/src/subsystems/AgentManager/AgentRuntime.class.ts +557 -557
  98. package/src/subsystems/AgentManager/AgentSSE.class.ts +101 -101
  99. package/src/subsystems/AgentManager/AgentSettings.class.ts +52 -52
  100. package/src/subsystems/AgentManager/Component.service/ComponentConnector.ts +32 -32
  101. package/src/subsystems/AgentManager/Component.service/connectors/LocalComponentConnector.class.ts +60 -60
  102. package/src/subsystems/AgentManager/Component.service/index.ts +11 -11
  103. package/src/subsystems/AgentManager/EmbodimentSettings.class.ts +47 -47
  104. package/src/subsystems/AgentManager/ForkedAgent.class.ts +154 -154
  105. package/src/subsystems/AgentManager/OSResourceMonitor.ts +77 -77
  106. package/src/subsystems/ComputeManager/Code.service/CodeConnector.ts +98 -98
  107. package/src/subsystems/ComputeManager/Code.service/connectors/AWSLambdaCode.class.ts +171 -172
  108. package/src/subsystems/ComputeManager/Code.service/connectors/ECMASandbox.class.ts +131 -131
  109. package/src/subsystems/ComputeManager/Code.service/index.ts +13 -13
  110. package/src/subsystems/IO/CLI.service/CLIConnector.ts +47 -47
  111. package/src/subsystems/IO/CLI.service/index.ts +9 -9
  112. package/src/subsystems/IO/Log.service/LogConnector.ts +32 -32
  113. package/src/subsystems/IO/Log.service/connectors/ConsoleLog.class.ts +28 -28
  114. package/src/subsystems/IO/Log.service/index.ts +13 -13
  115. package/src/subsystems/IO/NKV.service/NKVConnector.ts +43 -43
  116. package/src/subsystems/IO/NKV.service/connectors/NKVLocalStorage.class.ts +234 -234
  117. package/src/subsystems/IO/NKV.service/connectors/NKVRAM.class.ts +204 -204
  118. package/src/subsystems/IO/NKV.service/connectors/NKVRedis.class.ts +182 -182
  119. package/src/subsystems/IO/NKV.service/index.ts +14 -14
  120. package/src/subsystems/IO/Router.service/RouterConnector.ts +21 -21
  121. package/src/subsystems/IO/Router.service/connectors/ExpressRouter.class.ts +48 -48
  122. package/src/subsystems/IO/Router.service/connectors/NullRouter.class.ts +40 -40
  123. package/src/subsystems/IO/Router.service/index.ts +11 -11
  124. package/src/subsystems/IO/Storage.service/SmythFS.class.ts +488 -488
  125. package/src/subsystems/IO/Storage.service/StorageConnector.ts +66 -66
  126. package/src/subsystems/IO/Storage.service/connectors/LocalStorage.class.ts +327 -327
  127. package/src/subsystems/IO/Storage.service/connectors/S3Storage.class.ts +482 -482
  128. package/src/subsystems/IO/Storage.service/index.ts +13 -13
  129. package/src/subsystems/IO/VectorDB.service/VectorDBConnector.ts +108 -108
  130. package/src/subsystems/IO/VectorDB.service/connectors/MilvusVectorDB.class.ts +465 -465
  131. package/src/subsystems/IO/VectorDB.service/connectors/PineconeVectorDB.class.ts +387 -387
  132. package/src/subsystems/IO/VectorDB.service/connectors/RAMVecrtorDB.class.ts +408 -408
  133. package/src/subsystems/IO/VectorDB.service/embed/BaseEmbedding.ts +107 -107
  134. package/src/subsystems/IO/VectorDB.service/embed/GoogleEmbedding.ts +118 -118
  135. package/src/subsystems/IO/VectorDB.service/embed/OpenAIEmbedding.ts +109 -109
  136. package/src/subsystems/IO/VectorDB.service/embed/index.ts +26 -26
  137. package/src/subsystems/IO/VectorDB.service/index.ts +14 -14
  138. package/src/subsystems/LLMManager/LLM.helper.ts +251 -251
  139. package/src/subsystems/LLMManager/LLM.inference.ts +345 -345
  140. package/src/subsystems/LLMManager/LLM.service/LLMConnector.ts +492 -492
  141. package/src/subsystems/LLMManager/LLM.service/LLMCredentials.helper.ts +171 -171
  142. package/src/subsystems/LLMManager/LLM.service/connectors/Anthropic.class.ts +666 -666
  143. package/src/subsystems/LLMManager/LLM.service/connectors/Bedrock.class.ts +407 -407
  144. package/src/subsystems/LLMManager/LLM.service/connectors/Echo.class.ts +92 -92
  145. package/src/subsystems/LLMManager/LLM.service/connectors/GoogleAI.class.ts +983 -983
  146. package/src/subsystems/LLMManager/LLM.service/connectors/Groq.class.ts +319 -319
  147. package/src/subsystems/LLMManager/LLM.service/connectors/Ollama.class.ts +361 -361
  148. package/src/subsystems/LLMManager/LLM.service/connectors/Perplexity.class.ts +257 -257
  149. package/src/subsystems/LLMManager/LLM.service/connectors/VertexAI.class.ts +430 -430
  150. package/src/subsystems/LLMManager/LLM.service/connectors/openai/OpenAIConnector.class.ts +503 -503
  151. package/src/subsystems/LLMManager/LLM.service/connectors/openai/apiInterfaces/ChatCompletionsApiInterface.ts +524 -524
  152. package/src/subsystems/LLMManager/LLM.service/connectors/openai/apiInterfaces/OpenAIApiInterface.ts +100 -100
  153. package/src/subsystems/LLMManager/LLM.service/connectors/openai/apiInterfaces/OpenAIApiInterfaceFactory.ts +81 -81
  154. package/src/subsystems/LLMManager/LLM.service/connectors/openai/apiInterfaces/ResponsesApiInterface.ts +1145 -1145
  155. package/src/subsystems/LLMManager/LLM.service/connectors/openai/apiInterfaces/constants.ts +13 -13
  156. package/src/subsystems/LLMManager/LLM.service/connectors/openai/apiInterfaces/index.ts +4 -4
  157. package/src/subsystems/LLMManager/LLM.service/connectors/openai/apiInterfaces/utils.ts +11 -11
  158. package/src/subsystems/LLMManager/LLM.service/connectors/openai/types.ts +32 -32
  159. package/src/subsystems/LLMManager/LLM.service/connectors/xAI.class.ts +478 -478
  160. package/src/subsystems/LLMManager/LLM.service/index.ts +47 -47
  161. package/src/subsystems/LLMManager/ModelsProvider.service/ModelsProviderConnector.ts +303 -303
  162. package/src/subsystems/LLMManager/ModelsProvider.service/connectors/JSONModelsProvider.class.ts +271 -271
  163. package/src/subsystems/LLMManager/ModelsProvider.service/index.ts +11 -11
  164. package/src/subsystems/LLMManager/custom-models.ts +854 -854
  165. package/src/subsystems/LLMManager/models.ts +2540 -2540
  166. package/src/subsystems/LLMManager/paramMappings.ts +69 -69
  167. package/src/subsystems/MemoryManager/Cache.service/CacheConnector.ts +86 -86
  168. package/src/subsystems/MemoryManager/Cache.service/connectors/LocalStorageCache.class.ts +297 -297
  169. package/src/subsystems/MemoryManager/Cache.service/connectors/RAMCache.class.ts +214 -214
  170. package/src/subsystems/MemoryManager/Cache.service/connectors/RedisCache.class.ts +252 -252
  171. package/src/subsystems/MemoryManager/Cache.service/connectors/S3Cache.class.ts +373 -373
  172. package/src/subsystems/MemoryManager/Cache.service/index.ts +15 -15
  173. package/src/subsystems/MemoryManager/LLMCache.ts +72 -72
  174. package/src/subsystems/MemoryManager/LLMContext.ts +124 -124
  175. package/src/subsystems/MemoryManager/LLMMemory.service/LLMMemoryConnector.ts +26 -26
  176. package/src/subsystems/MemoryManager/RuntimeContext.ts +277 -277
  177. package/src/subsystems/Security/AccessControl/ACL.class.ts +208 -208
  178. package/src/subsystems/Security/AccessControl/AccessCandidate.class.ts +82 -82
  179. package/src/subsystems/Security/AccessControl/AccessRequest.class.ts +52 -52
  180. package/src/subsystems/Security/Account.service/AccountConnector.ts +44 -44
  181. package/src/subsystems/Security/Account.service/connectors/DummyAccount.class.ts +130 -130
  182. package/src/subsystems/Security/Account.service/connectors/JSONFileAccount.class.ts +170 -170
  183. package/src/subsystems/Security/Account.service/connectors/MySQLAccount.class.ts +76 -76
  184. package/src/subsystems/Security/Account.service/index.ts +14 -14
  185. package/src/subsystems/Security/Credentials.helper.ts +62 -62
  186. package/src/subsystems/Security/ManagedVault.service/ManagedVaultConnector.ts +38 -38
  187. package/src/subsystems/Security/ManagedVault.service/connectors/NullManagedVault.class.ts +53 -53
  188. package/src/subsystems/Security/ManagedVault.service/connectors/SecretManagerManagedVault.ts +154 -154
  189. package/src/subsystems/Security/ManagedVault.service/index.ts +12 -12
  190. package/src/subsystems/Security/SecureConnector.class.ts +110 -110
  191. package/src/subsystems/Security/Vault.service/Vault.helper.ts +30 -30
  192. package/src/subsystems/Security/Vault.service/VaultConnector.ts +29 -29
  193. package/src/subsystems/Security/Vault.service/connectors/HashicorpVault.class.ts +46 -46
  194. package/src/subsystems/Security/Vault.service/connectors/JSONFileVault.class.ts +221 -221
  195. package/src/subsystems/Security/Vault.service/connectors/NullVault.class.ts +54 -54
  196. package/src/subsystems/Security/Vault.service/connectors/SecretsManager.class.ts +140 -140
  197. package/src/subsystems/Security/Vault.service/index.ts +12 -12
  198. package/src/types/ACL.types.ts +104 -104
  199. package/src/types/AWS.types.ts +10 -10
  200. package/src/types/Agent.types.ts +61 -61
  201. package/src/types/AgentLogger.types.ts +17 -17
  202. package/src/types/Cache.types.ts +1 -1
  203. package/src/types/Common.types.ts +2 -2
  204. package/src/types/LLM.types.ts +520 -520
  205. package/src/types/Redis.types.ts +8 -8
  206. package/src/types/SRE.types.ts +64 -64
  207. package/src/types/Security.types.ts +14 -14
  208. package/src/types/Storage.types.ts +5 -5
  209. package/src/types/VectorDB.types.ts +86 -86
  210. package/src/utils/base64.utils.ts +275 -275
  211. package/src/utils/cli.utils.ts +68 -68
  212. package/src/utils/data.utils.ts +322 -322
  213. package/src/utils/date-time.utils.ts +22 -22
  214. package/src/utils/general.utils.ts +238 -238
  215. package/src/utils/index.ts +12 -12
  216. package/src/utils/lazy-client.ts +261 -261
  217. package/src/utils/numbers.utils.ts +13 -13
  218. package/src/utils/oauth.utils.ts +35 -35
  219. package/src/utils/string.utils.ts +414 -414
  220. package/src/utils/url.utils.ts +19 -19
  221. package/src/utils/validation.utils.ts +74 -74
  222. package/dist/bundle-analysis-lazy.html +0 -4949
  223. package/dist/bundle-analysis.html +0 -4949
  224. package/dist/types/Components/Triggers/GmailTrigger.class.d.ts +0 -13
  225. package/dist/types/Components/Triggers/Trigger.class.d.ts +0 -3
  226. package/dist/types/helpers/AIPerformanceAnalyzer.helper.d.ts +0 -45
  227. package/dist/types/helpers/AIPerformanceCollector.helper.d.ts +0 -111
  228. package/dist/types/subsystems/IO/Storage.service/connectors/AzureBlobStorage.class.d.ts +0 -211
  229. package/dist/types/subsystems/IO/VectorDB.service/connectors/WeaviateVectorDB.class.d.ts +0 -187
  230. package/dist/types/subsystems/PerformanceManager/Performance.service/PerformanceConnector.d.ts +0 -102
  231. package/dist/types/subsystems/PerformanceManager/Performance.service/connectors/LocalPerformanceConnector.class.d.ts +0 -100
  232. package/dist/types/subsystems/PerformanceManager/Performance.service/index.d.ts +0 -22
  233. package/dist/types/types/Performance.types.d.ts +0 -468
  234. package/dist/types/utils/package-manager.utils.d.ts +0 -26
@@ -1,520 +1,520 @@
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 | 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
- * This determines which API endpoint and interface implementation to use
232
- */
233
- interface?: LLMInterface;
234
-
235
- /**
236
- * Indicates whether this model supports image editing functionality
237
- * Only applicable for image generation models
238
- */
239
- supportsEditing?: boolean;
240
- };
241
-
242
- // #region [ LLM Interface Types ] ================================================
243
- /**
244
- * Enum for different LLM API interfaces
245
- * Each interface represents a different API endpoint or interaction pattern
246
- */
247
- export enum LLMInterface {
248
- /** OpenAI-style chat completions API */
249
- ChatCompletions = 'chat.completions',
250
- /** OpenAI-style responses API */
251
- Responses = 'responses',
252
- /** Google AI generateContent API (for text and multimodal) */
253
- GenerateContent = 'generateContent',
254
- /** Google AI generateImages API (for traditional Imagen models) */
255
- GenerateImages = 'generateImages',
256
- }
257
-
258
- // #region [ Handle extendable LLM Providers ] ================================================
259
- export const BuiltinLLMProviders = {
260
- Echo: 'Echo',
261
- OpenAI: 'OpenAI',
262
- DeepSeek: 'DeepSeek',
263
- GoogleAI: 'GoogleAI',
264
- Anthropic: 'Anthropic',
265
- Groq: 'Groq',
266
- TogetherAI: 'TogetherAI',
267
- Bedrock: 'Bedrock',
268
- VertexAI: 'VertexAI',
269
- xAI: 'xAI',
270
- Perplexity: 'Perplexity',
271
- Ollama: 'Ollama',
272
- } as const;
273
- // Base provider type
274
- export type TBuiltinLLMProvider = (typeof BuiltinLLMProviders)[keyof typeof BuiltinLLMProviders];
275
-
276
- // Extensible interface for custom providers
277
- export interface ILLMProviders {}
278
- // Combined provider type that can be extended
279
- export type TLLMProvider = TBuiltinLLMProvider | keyof ILLMProviders;
280
-
281
- // For backward compatibility, export the built-in providers as enum-like object
282
- export const TLLMProvider = BuiltinLLMProviders;
283
-
284
- // #endregion
285
-
286
- export type TBedrockSettings = {
287
- keyIDName: string;
288
- secretKeyName: string;
289
- sessionKeyName: string;
290
- };
291
- export type TVertexAISettings = {
292
- projectId: string;
293
- credentialsName: string;
294
- jsonCredentialsName: string;
295
- apiEndpoint?: string;
296
- };
297
-
298
- export type TCustomLLMModel = TLLMModel & {
299
- name: string;
300
- settings: {
301
- foundationModel: string;
302
- customModel: string;
303
- region: string;
304
- } & (TBedrockSettings | TVertexAISettings);
305
- };
306
-
307
- //#region === LLM Tools ===========================
308
- export type ToolData = {
309
- index: number;
310
- id: string;
311
- type: string;
312
- name: string;
313
- arguments: string | Record<string, any>;
314
- role: 'user' | 'tool' | 'assistant';
315
- result?: string; // result string from the used tool
316
- function?: any;
317
- error?: string; // for Bedrock
318
- callId?: string; // for OpenAI Responses API call ID mapping
319
- };
320
-
321
- /**
322
- * Base tool definition interface - only truly common properties
323
- * All provider-specific tool definitions extend from this
324
- */
325
- export interface ToolDefinition {
326
- name: string;
327
- description: string;
328
- }
329
-
330
- /**
331
- * OpenAI-specific tool definition
332
- * Extends base with OpenAI's parameter format
333
- */
334
- export interface OpenAIToolDefinition extends ToolDefinition {
335
- parameters: {
336
- type: 'object';
337
- properties: Record<string, unknown>;
338
- required?: string[];
339
- };
340
- }
341
-
342
- /**
343
- * Anthropic-specific tool definition
344
- * Extends base with Anthropic's input_schema format
345
- */
346
- export interface AnthropicToolDefinition extends ToolDefinition {
347
- input_schema: {
348
- type: 'object';
349
- properties: Record<string, unknown>;
350
- required: string[];
351
- };
352
- }
353
-
354
- /**
355
- * Legacy tool definition for backward compatibility
356
- * @deprecated Use provider-specific definitions instead
357
- */
358
- export interface LegacyToolDefinition extends ToolDefinition {
359
- properties?: Record<string, unknown>;
360
- requiredFields?: string[];
361
- }
362
- export type ToolChoice = OpenAI.ChatCompletionToolChoiceOption | FunctionCallingMode;
363
-
364
- export interface ToolsConfig {
365
- tools?: ToolDefinition[];
366
- tool_choice?: ToolChoice;
367
- }
368
-
369
- //#endregion
370
-
371
- export enum TLLMMessageRole {
372
- User = 'user',
373
- Assistant = 'assistant',
374
- System = 'system',
375
- Model = 'model',
376
- Tool = 'tool',
377
- Function = 'function',
378
- }
379
-
380
- export type TLLMMessageBlock = {
381
- role: TLLMMessageRole;
382
- content?:
383
- | string
384
- | { text: string }[]
385
- | Array<Anthropic.TextBlockParam | Anthropic.ImageBlockParam | Anthropic.ToolUseBlockParam | Anthropic.ToolResultBlockParam>;
386
- parts?: {
387
- text?: string;
388
- functionCall?: { name: string; args: string };
389
- functionResponse?: { name: string; response: { name: string; content: string } };
390
- }[]; // for Google Vertex AI
391
- tool_calls?: ToolData[];
392
- };
393
-
394
- export type TLLMToolResultMessageBlock = TLLMMessageBlock & {
395
- tool_call_id?: string; // for tool result message block of OpenAI
396
- name?: string; // for tool result message block of OpenAI
397
- };
398
-
399
- export type GenerateImageConfig = {
400
- size?: '256x256' | '512x512' | '1024x1024' | '1792x1024' | '1024x1792';
401
- quality?: 'standard' | 'hd';
402
- model: string;
403
- style?: 'vivid' | 'natural';
404
- n?: number;
405
- response_format?: 'url' | 'b64_json';
406
- prompt?: string;
407
- };
408
-
409
- // ! Deprecated
410
- export type TLLMInputMessage = {
411
- role: string;
412
- content?: string | { text: string }[];
413
- parts?: { text: string }[]; // * 'part' is for Google Vertex AI
414
- };
415
-
416
- export interface ILLMContextStore {
417
- save(messages: any[]): Promise<void>;
418
- load(count?: number): Promise<any[]>;
419
- getMessage(message_id: string): Promise<any[]>;
420
- }
421
-
422
- export enum APIKeySource {
423
- Smyth = 'smyth-managed',
424
- User = 'user-managed',
425
- Custom = 'custom',
426
- }
427
-
428
- export interface SmythLLMUsage {
429
- sourceId: string;
430
- input_tokens: number;
431
- input_tokens_cache_write: number;
432
- input_tokens_cache_read: number;
433
- output_tokens: number;
434
- keySource?: APIKeySource;
435
- agentId: string;
436
- teamId: string;
437
- tier?: string; // for Google AI
438
- }
439
-
440
- export interface SmythTaskUsage {
441
- sourceId: string;
442
- number: number;
443
- agentId: string;
444
- teamId: string;
445
- }
446
-
447
- export type TLLMModelsList = {
448
- [key: string]: TLLMModel | TCustomLLMModel;
449
- };
450
-
451
- export enum TLLMEvent {
452
- /** Generated response chunks */
453
- Data = 'data',
454
- /** Generated response chunks */
455
- Content = 'content',
456
- /** Thinking blocks/chunks */
457
- Thinking = 'thinking',
458
- /** End of the response */
459
- End = 'end',
460
- /** Error */
461
- Error = 'error',
462
- /** Tool information : emitted by the LLM determines the next tool call */
463
- ToolInfo = 'toolInfo',
464
- /** Tool call : emitted before the tool call */
465
- ToolCall = 'toolCall',
466
- /** Tool result : emitted after the tool call */
467
- ToolResult = 'toolResult',
468
- /** Tokens usage information */
469
- Usage = 'usage',
470
- /** Interrupted : emitted when the response is interrupted before completion */
471
- Interrupted = 'interrupted',
472
- }
473
-
474
- export interface ILLMRequestContext {
475
- modelEntryName: string;
476
- agentId: string;
477
- teamId: string;
478
- isUserKey: boolean;
479
- hasFiles?: boolean;
480
- modelInfo: TCustomLLMModel | TLLMModel;
481
- credentials: ILLMConnectorCredentials;
482
- toolsInfo?: TToolsInfo;
483
- }
484
-
485
- // Generic interface that can be extended by specific providers
486
- export interface ILLMRequestFuncParams<TBody = any> {
487
- acRequest: AccessRequest;
488
- body: TBody;
489
- context: ILLMRequestContext;
490
- }
491
-
492
- // For future providers, you can add similar types:
493
- // export type TAnthropicRequestBody = Anthropic.MessageCreateParams | Anthropic.MessageStreamParams;
494
- // export type IAnthropicRequestFuncParams = ILLMRequestFuncParams<TAnthropicRequestBody>;
495
-
496
- export type TLLMChatResponse = {
497
- content: string;
498
- finishReason: string;
499
- thinkingContent?: string;
500
- usage?: any;
501
- useTool?: boolean;
502
- toolsData?: ToolData[];
503
- message?: OpenAI.ChatCompletionMessageParam | Anthropic.MessageParam;
504
- };
505
-
506
- export type TOpenAIRequestBody =
507
- | OpenAI.ChatCompletionCreateParamsNonStreaming
508
- | OpenAI.ChatCompletionCreateParamsStreaming
509
- | OpenAI.ChatCompletionCreateParams
510
- | OpenAI.Responses.ResponseCreateParams
511
- | OpenAI.Responses.ResponseCreateParamsNonStreaming
512
- | OpenAI.Responses.ResponseCreateParamsStreaming
513
- | OpenAI.Images.ImageGenerateParams
514
- | OpenAI.Images.ImageEditParams;
515
-
516
- export type TAnthropicRequestBody = Anthropic.MessageCreateParamsNonStreaming;
517
-
518
- export type TGoogleAIRequestBody = ModelParams & { messages: string | TLLMMessageBlock[] | GenerateContentRequest };
519
-
520
- 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 | 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
+ * This determines which API endpoint and interface implementation to use
232
+ */
233
+ interface?: LLMInterface;
234
+
235
+ /**
236
+ * Indicates whether this model supports image editing functionality
237
+ * Only applicable for image generation models
238
+ */
239
+ supportsEditing?: boolean;
240
+ };
241
+
242
+ // #region [ LLM Interface Types ] ================================================
243
+ /**
244
+ * Enum for different LLM API interfaces
245
+ * Each interface represents a different API endpoint or interaction pattern
246
+ */
247
+ export enum LLMInterface {
248
+ /** OpenAI-style chat completions API */
249
+ ChatCompletions = 'chat.completions',
250
+ /** OpenAI-style responses API */
251
+ Responses = 'responses',
252
+ /** Google AI generateContent API (for text and multimodal) */
253
+ GenerateContent = 'generateContent',
254
+ /** Google AI generateImages API (for traditional Imagen models) */
255
+ GenerateImages = 'generateImages',
256
+ }
257
+
258
+ // #region [ Handle extendable LLM Providers ] ================================================
259
+ export const BuiltinLLMProviders = {
260
+ Echo: 'Echo',
261
+ OpenAI: 'OpenAI',
262
+ DeepSeek: 'DeepSeek',
263
+ GoogleAI: 'GoogleAI',
264
+ Anthropic: 'Anthropic',
265
+ Groq: 'Groq',
266
+ TogetherAI: 'TogetherAI',
267
+ Bedrock: 'Bedrock',
268
+ VertexAI: 'VertexAI',
269
+ xAI: 'xAI',
270
+ Perplexity: 'Perplexity',
271
+ Ollama: 'Ollama',
272
+ } as const;
273
+ // Base provider type
274
+ export type TBuiltinLLMProvider = (typeof BuiltinLLMProviders)[keyof typeof BuiltinLLMProviders];
275
+
276
+ // Extensible interface for custom providers
277
+ export interface ILLMProviders {}
278
+ // Combined provider type that can be extended
279
+ export type TLLMProvider = TBuiltinLLMProvider | keyof ILLMProviders;
280
+
281
+ // For backward compatibility, export the built-in providers as enum-like object
282
+ export const TLLMProvider = BuiltinLLMProviders;
283
+
284
+ // #endregion
285
+
286
+ export type TBedrockSettings = {
287
+ keyIDName: string;
288
+ secretKeyName: string;
289
+ sessionKeyName: string;
290
+ };
291
+ export type TVertexAISettings = {
292
+ projectId: string;
293
+ credentialsName: string;
294
+ jsonCredentialsName: string;
295
+ apiEndpoint?: string;
296
+ };
297
+
298
+ export type TCustomLLMModel = TLLMModel & {
299
+ name: string;
300
+ settings: {
301
+ foundationModel: string;
302
+ customModel: string;
303
+ region: string;
304
+ } & (TBedrockSettings | TVertexAISettings);
305
+ };
306
+
307
+ //#region === LLM Tools ===========================
308
+ export type ToolData = {
309
+ index: number;
310
+ id: string;
311
+ type: string;
312
+ name: string;
313
+ arguments: string | Record<string, any>;
314
+ role: 'user' | 'tool' | 'assistant';
315
+ result?: string; // result string from the used tool
316
+ function?: any;
317
+ error?: string; // for Bedrock
318
+ callId?: string; // for OpenAI Responses API call ID mapping
319
+ };
320
+
321
+ /**
322
+ * Base tool definition interface - only truly common properties
323
+ * All provider-specific tool definitions extend from this
324
+ */
325
+ export interface ToolDefinition {
326
+ name: string;
327
+ description: string;
328
+ }
329
+
330
+ /**
331
+ * OpenAI-specific tool definition
332
+ * Extends base with OpenAI's parameter format
333
+ */
334
+ export interface OpenAIToolDefinition extends ToolDefinition {
335
+ parameters: {
336
+ type: 'object';
337
+ properties: Record<string, unknown>;
338
+ required?: string[];
339
+ };
340
+ }
341
+
342
+ /**
343
+ * Anthropic-specific tool definition
344
+ * Extends base with Anthropic's input_schema format
345
+ */
346
+ export interface AnthropicToolDefinition extends ToolDefinition {
347
+ input_schema: {
348
+ type: 'object';
349
+ properties: Record<string, unknown>;
350
+ required: string[];
351
+ };
352
+ }
353
+
354
+ /**
355
+ * Legacy tool definition for backward compatibility
356
+ * @deprecated Use provider-specific definitions instead
357
+ */
358
+ export interface LegacyToolDefinition extends ToolDefinition {
359
+ properties?: Record<string, unknown>;
360
+ requiredFields?: string[];
361
+ }
362
+ export type ToolChoice = OpenAI.ChatCompletionToolChoiceOption | FunctionCallingMode;
363
+
364
+ export interface ToolsConfig {
365
+ tools?: ToolDefinition[];
366
+ tool_choice?: ToolChoice;
367
+ }
368
+
369
+ //#endregion
370
+
371
+ export enum TLLMMessageRole {
372
+ User = 'user',
373
+ Assistant = 'assistant',
374
+ System = 'system',
375
+ Model = 'model',
376
+ Tool = 'tool',
377
+ Function = 'function',
378
+ }
379
+
380
+ export type TLLMMessageBlock = {
381
+ role: TLLMMessageRole;
382
+ content?:
383
+ | string
384
+ | { text: string }[]
385
+ | Array<Anthropic.TextBlockParam | Anthropic.ImageBlockParam | Anthropic.ToolUseBlockParam | Anthropic.ToolResultBlockParam>;
386
+ parts?: {
387
+ text?: string;
388
+ functionCall?: { name: string; args: string };
389
+ functionResponse?: { name: string; response: { name: string; content: string } };
390
+ }[]; // for Google Vertex AI
391
+ tool_calls?: ToolData[];
392
+ };
393
+
394
+ export type TLLMToolResultMessageBlock = TLLMMessageBlock & {
395
+ tool_call_id?: string; // for tool result message block of OpenAI
396
+ name?: string; // for tool result message block of OpenAI
397
+ };
398
+
399
+ export type GenerateImageConfig = {
400
+ size?: '256x256' | '512x512' | '1024x1024' | '1792x1024' | '1024x1792';
401
+ quality?: 'standard' | 'hd';
402
+ model: string;
403
+ style?: 'vivid' | 'natural';
404
+ n?: number;
405
+ response_format?: 'url' | 'b64_json';
406
+ prompt?: string;
407
+ };
408
+
409
+ // ! Deprecated
410
+ export type TLLMInputMessage = {
411
+ role: string;
412
+ content?: string | { text: string }[];
413
+ parts?: { text: string }[]; // * 'part' is for Google Vertex AI
414
+ };
415
+
416
+ export interface ILLMContextStore {
417
+ save(messages: any[]): Promise<void>;
418
+ load(count?: number): Promise<any[]>;
419
+ getMessage(message_id: string): Promise<any[]>;
420
+ }
421
+
422
+ export enum APIKeySource {
423
+ Smyth = 'smyth-managed',
424
+ User = 'user-managed',
425
+ Custom = 'custom',
426
+ }
427
+
428
+ export interface SmythLLMUsage {
429
+ sourceId: string;
430
+ input_tokens: number;
431
+ input_tokens_cache_write: number;
432
+ input_tokens_cache_read: number;
433
+ output_tokens: number;
434
+ keySource?: APIKeySource;
435
+ agentId: string;
436
+ teamId: string;
437
+ tier?: string; // for Google AI
438
+ }
439
+
440
+ export interface SmythTaskUsage {
441
+ sourceId: string;
442
+ number: number;
443
+ agentId: string;
444
+ teamId: string;
445
+ }
446
+
447
+ export type TLLMModelsList = {
448
+ [key: string]: TLLMModel | TCustomLLMModel;
449
+ };
450
+
451
+ export enum TLLMEvent {
452
+ /** Generated response chunks */
453
+ Data = 'data',
454
+ /** Generated response chunks */
455
+ Content = 'content',
456
+ /** Thinking blocks/chunks */
457
+ Thinking = 'thinking',
458
+ /** End of the response */
459
+ End = 'end',
460
+ /** Error */
461
+ Error = 'error',
462
+ /** Tool information : emitted by the LLM determines the next tool call */
463
+ ToolInfo = 'toolInfo',
464
+ /** Tool call : emitted before the tool call */
465
+ ToolCall = 'toolCall',
466
+ /** Tool result : emitted after the tool call */
467
+ ToolResult = 'toolResult',
468
+ /** Tokens usage information */
469
+ Usage = 'usage',
470
+ /** Interrupted : emitted when the response is interrupted before completion */
471
+ Interrupted = 'interrupted',
472
+ }
473
+
474
+ export interface ILLMRequestContext {
475
+ modelEntryName: string;
476
+ agentId: string;
477
+ teamId: string;
478
+ isUserKey: boolean;
479
+ hasFiles?: boolean;
480
+ modelInfo: TCustomLLMModel | TLLMModel;
481
+ credentials: ILLMConnectorCredentials;
482
+ toolsInfo?: TToolsInfo;
483
+ }
484
+
485
+ // Generic interface that can be extended by specific providers
486
+ export interface ILLMRequestFuncParams<TBody = any> {
487
+ acRequest: AccessRequest;
488
+ body: TBody;
489
+ context: ILLMRequestContext;
490
+ }
491
+
492
+ // For future providers, you can add similar types:
493
+ // export type TAnthropicRequestBody = Anthropic.MessageCreateParams | Anthropic.MessageStreamParams;
494
+ // export type IAnthropicRequestFuncParams = ILLMRequestFuncParams<TAnthropicRequestBody>;
495
+
496
+ export type TLLMChatResponse = {
497
+ content: string;
498
+ finishReason: string;
499
+ thinkingContent?: string;
500
+ usage?: any;
501
+ useTool?: boolean;
502
+ toolsData?: ToolData[];
503
+ message?: OpenAI.ChatCompletionMessageParam | Anthropic.MessageParam;
504
+ };
505
+
506
+ export type TOpenAIRequestBody =
507
+ | OpenAI.ChatCompletionCreateParamsNonStreaming
508
+ | OpenAI.ChatCompletionCreateParamsStreaming
509
+ | OpenAI.ChatCompletionCreateParams
510
+ | OpenAI.Responses.ResponseCreateParams
511
+ | OpenAI.Responses.ResponseCreateParamsNonStreaming
512
+ | OpenAI.Responses.ResponseCreateParamsStreaming
513
+ | OpenAI.Images.ImageGenerateParams
514
+ | OpenAI.Images.ImageEditParams;
515
+
516
+ export type TAnthropicRequestBody = Anthropic.MessageCreateParamsNonStreaming;
517
+
518
+ export type TGoogleAIRequestBody = ModelParams & { messages: string | TLLMMessageBlock[] | GenerateContentRequest };
519
+
520
+ export type TLLMRequestBody = TOpenAIRequestBody | TAnthropicRequestBody | TGoogleAIRequestBody | ConverseCommandInput;