@smythos/sre 1.5.43 → 1.5.45

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