@smythos/sre 1.5.44 → 1.5.45

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