@smythos/sre 1.6.0 → 1.6.8

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