@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
@@ -42,7 +42,12 @@ export declare class OpenAIConnector extends LLMConnector {
42
42
  }[] | Array<import("@anthropic-ai/sdk/resources/messages").TextBlockParam | import("@anthropic-ai/sdk/resources/messages").ImageBlockParam | import("@anthropic-ai/sdk/resources/messages").ToolUseBlockParam | import("@anthropic-ai/sdk/resources/messages").ToolResultBlockParam>;
43
43
  parts?: {
44
44
  text?: string;
45
- functionCall?: {
45
+ functionCall? /**
46
+ * Safely compute prompt token count across different interfaces (Chat Completions, Responses)
47
+ * - Normalizes message content to strings for encodeChat
48
+ * - Handles vision prompts when files are present
49
+ * - Never throws; defaults to 0 on failure
50
+ */: {
46
51
  name: string;
47
52
  args: string;
48
53
  };
@@ -58,6 +63,13 @@ export declare class OpenAIConnector extends LLMConnector {
58
63
  }[];
59
64
  private validateTokenLimit;
60
65
  private getProvider;
66
+ /**
67
+ * Safely compute prompt token count across different interfaces (Chat Completions, Responses)
68
+ * - Normalizes message content to strings for encodeChat
69
+ * - Handles vision prompts when files are present
70
+ * - Never throws; defaults to 0 on failure
71
+ */
72
+ private computePromptTokens;
61
73
  /**
62
74
  * Prepare request body for OpenAI Responses API
63
75
  * Uses MessageTransformer and ToolsTransformer for clean interface transformations
@@ -2,7 +2,7 @@ import EventEmitter from 'events';
2
2
  import OpenAI from 'openai';
3
3
  import type { Stream } from 'openai/streaming';
4
4
  import { BinaryInput } from '@sre/helpers/BinaryInput.helper';
5
- import { TLLMParams, TLLMPreparedParams, ILLMRequestContext } from '@sre/types/LLM.types';
5
+ import { TLLMParams, TLLMPreparedParams, ILLMRequestContext, ToolData } from '@sre/types/LLM.types';
6
6
  import { OpenAIApiInterface, ToolConfig } from './OpenAIApiInterface';
7
7
  import { HandlerDependencies } from '../types';
8
8
  /**
@@ -45,55 +45,56 @@ export declare class ResponsesApiInterface extends OpenAIApiInterface {
45
45
  * Calculate search tool usage with cost
46
46
  */
47
47
  private calculateSearchToolUsage;
48
- prepareRequestBody(params: TLLMPreparedParams): Promise<OpenAI.Responses.ResponseCreateParams>;
49
48
  /**
50
- * Transform OpenAI tool definitions to Responses.Tool format
49
+ * Handle web search completed event with proper type safety
51
50
  */
52
- transformToolsConfig(config: ToolConfig): OpenAI.Responses.Tool[];
51
+ private handleWebSearchCompleted;
53
52
  /**
54
- * Transform assistant message block with tool calls for Responses API
53
+ * Handle web search in-progress event (official typed)
55
54
  */
56
- private transformAssistantMessageBlock;
55
+ private handleWebSearchInProgress;
57
56
  /**
58
- * Transform individual tool calls to ensure proper formatting
57
+ * Handle web search searching event (official typed)
59
58
  */
60
- private transformToolCalls;
59
+ private handleWebSearchSearching;
61
60
  /**
62
- * Transform tool results with comprehensive error handling and type support
61
+ * Handle output text delta events
63
62
  */
64
- private transformToolResults;
63
+ private handleOutputTextDelta;
65
64
  /**
66
- * Create a tool result message for the Responses API format
65
+ * Handle output item added events (function calls)
67
66
  */
68
- private createToolResultMessage;
67
+ private handleOutputItemAdded;
69
68
  /**
70
- * Format tool result content based on type and handle special cases
69
+ * Handle function call arguments delta events
71
70
  */
72
- private formatToolResult;
71
+ private handleFunctionCallArgumentsDelta;
73
72
  /**
74
- * Format tool error messages with context
73
+ * Handle function call arguments done events
75
74
  */
76
- private formatToolError;
75
+ private handleFunctionCallArgumentsDone;
77
76
  /**
78
- * Normalize content to string format for Responses API
77
+ * Handle output item done events
79
78
  */
80
- private normalizeContent;
79
+ private handleOutputItemDone;
81
80
  /**
82
- * Normalize tool arguments to string format for Responses API
81
+ * Handle completion events and unknown event types
83
82
  */
84
- private normalizeToolArguments;
83
+ private handleCompletionEvent;
84
+ prepareRequestBody(params: TLLMPreparedParams): Promise<OpenAI.Responses.ResponseCreateParams>;
85
85
  /**
86
- * Validate if tool data is complete and valid for transformation
86
+ * Transform OpenAI tool definitions to Responses.Tool format
87
+ * Handles multiple tool definition formats and ensures compatibility
87
88
  */
88
- private isValidToolData;
89
+ transformToolsConfig(config: ToolConfig): OpenAI.Responses.Tool[];
89
90
  /**
90
- * Check if the tool is a web search tool based on type or name
91
+ * Normalize tool arguments to string format for Responses API
91
92
  */
92
- private isWebSearchTool;
93
+ private normalizeToolArguments;
93
94
  /**
94
- * Format web search results with better structure
95
+ * Validate if tool data is complete and valid for transformation
95
96
  */
96
- private formatWebSearchResult;
97
+ private isValidToolData;
97
98
  handleFileAttachments(files: BinaryInput[], agentId: string, messages: any[]): Promise<any[]>;
98
99
  /**
99
100
  * Get valid image files based on supported MIME types
@@ -126,7 +127,8 @@ export declare class ResponsesApiInterface extends OpenAIApiInterface {
126
127
  */
127
128
  private prepareInputMessages;
128
129
  /**
129
- * Prepare tools for request
130
+ * Prepare function tools for Responses API request
131
+ * Transforms tools from various formats to Responses API format
130
132
  */
131
133
  private prepareFunctionTools;
132
134
  /**
@@ -134,9 +136,26 @@ export declare class ResponsesApiInterface extends OpenAIApiInterface {
134
136
  * According to OpenAI documentation: https://platform.openai.com/docs/api-reference/responses/create
135
137
  */
136
138
  private prepareWebSearchTool;
139
+ /**
140
+ * Transform messages for Responses API compatibility
141
+ * Handles the differences between Chat Completions and Responses API message formats
142
+ */
137
143
  private applyToolMessageTransformation;
138
144
  /**
139
145
  * Get search tool cost for a specific model and context size
140
146
  */
141
147
  private getSearchToolCost;
148
+ /**
149
+ * Process function call responses and integrate them back into the conversation
150
+ * This method helps maintain compatibility with the chat completion flow
151
+ */
152
+ processFunctionCallResults(toolsData: ToolData[]): Promise<ToolData[]>;
153
+ /**
154
+ * Validate tool choice parameter for Responses API
155
+ */
156
+ private validateToolChoice;
157
+ /**
158
+ * Upsert a web search tool entry in toolsData and return its index
159
+ */
160
+ private upsertWebSearchToolImmutable;
142
161
  }
@@ -1,4 +1,3 @@
1
- import { SearchToolCostConfig } from '../types';
2
1
  export declare const MODELS_WITHOUT_TEMPERATURE_SUPPORT: string[];
3
2
  export declare const MODELS_WITHOUT_PRESENCE_PENALTY_SUPPORT: string[];
4
3
  export declare const MODELS_WITHOUT_JSON_RESPONSE_SUPPORT: string[];
@@ -7,4 +6,7 @@ export declare const MODELS_WITHOUT_SYSTEM_MESSAGE_SUPPORT: string[];
7
6
  * Search tool cost configuration
8
7
  * Costs are in dollars per 1000 requests
9
8
  */
10
- export declare const SEARCH_TOOL_COSTS: SearchToolCostConfig;
9
+ export declare const SEARCH_TOOL_COSTS: {
10
+ 'gpt-4': number;
11
+ 'gpt-5': number;
12
+ };
@@ -32,7 +32,3 @@ export interface CostConfig {
32
32
  [contextSize: string]: number;
33
33
  };
34
34
  }
35
- export interface SearchToolCostConfig {
36
- normalModels: CostConfig;
37
- miniModels: CostConfig;
38
- }
@@ -0,0 +1,39 @@
1
+ import { AccessRequest } from '@sre/Security/AccessControl/AccessRequest.class';
2
+ import { ModelsProviderConnector } from '../ModelsProviderConnector';
3
+ import { IAccessCandidate } from '@sre/types/ACL.types';
4
+ import { ACL } from '@sre/Security/AccessControl/ACL.class';
5
+ import { TLLMModelsList } from '@sre/types/LLM.types';
6
+ type SmythModelsProviderConfig = {
7
+ /**
8
+ * The models to be used.
9
+ *
10
+ * If a string is provided, it will be used as the directory name to load the models from.
11
+ * If a TLLMModelsList is provided, it will be used as the models to be used.
12
+ *
13
+ */
14
+ models?: string | TLLMModelsList;
15
+ /**
16
+ * The mode to be used.
17
+ *
18
+ * If 'append' is used, the models will be appended to the existing models.
19
+ * If 'replace' is used, the existing models will be replaced with the new models.
20
+ */
21
+ mode?: 'merge' | 'replace';
22
+ };
23
+ export declare class SmythModelsProvider extends ModelsProviderConnector {
24
+ protected _settings?: SmythModelsProviderConfig;
25
+ name: string;
26
+ private models;
27
+ constructor(_settings?: SmythModelsProviderConfig);
28
+ start(): Promise<void>;
29
+ addModels(acRequest: AccessRequest, models: TLLMModelsList): Promise<void>;
30
+ getModels(acRequest: AccessRequest): Promise<any>;
31
+ getResourceACL(resourceId: string, candidate: IAccessCandidate): Promise<ACL>;
32
+ private reindexModels;
33
+ private scanDirectoryForModels;
34
+ private getValidModels;
35
+ private isValidSingleModel;
36
+ private isValidModel;
37
+ private initDirWatcher;
38
+ }
39
+ export {};
@@ -257,6 +257,7 @@ export type ToolData = {
257
257
  result?: string;
258
258
  function?: any;
259
259
  error?: string;
260
+ callId?: string;
260
261
  };
261
262
  /**
262
263
  * Base tool definition interface - only truly common properties
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@smythos/sre",
3
- "version": "1.5.44",
3
+ "version": "1.5.45",
4
4
  "description": "Smyth Runtime Environment",
5
5
  "author": "Alaa-eddine KADDOURI",
6
6
  "license": "MIT",
@@ -1,156 +1,156 @@
1
- import axios, { AxiosRequestConfig } from 'axios';
2
- import Joi from 'joi';
3
-
4
- import { Agent } from '@sre/AgentManager/Agent.class';
5
- import { Component } from '../Component.class';
6
- import { parseHeaders } from './parseHeaders';
7
- import { parseUrl, parseSmythFsUrl, destroyPublicUrls } from './parseUrl';
8
- import { parseData } from './parseData';
9
- import { parseProxy } from './parseProxy';
10
- import { parseArrayBufferResponse } from './ArrayBufferResponse.helper';
11
- import { extractAdditionalParamsForOAuth1, handleOAuthHeaders as generateOAuthHeaders } from './OAuth.helper';
12
- import { SocksProxyAgent } from 'socks-proxy-agent';
13
- import { formatDataForDebug } from '@sre/utils/data.utils';
14
- import { AccessCandidate } from '@sre/Security/AccessControl/AccessCandidate.class';
15
-
16
- export class APICall extends Component {
17
- protected schema = {
18
- name: 'APICall',
19
- description: 'Use this component to make an API call',
20
- inputs: {},
21
- outputs: {
22
- Headers: {
23
- description: 'The headers of the API call response',
24
- default: true,
25
- },
26
- Response: {
27
- description: 'The response of the API call',
28
- default: true,
29
- },
30
- },
31
- };
32
-
33
- protected configSchema = Joi.object({
34
- method: Joi.string().valid('GET', 'POST', 'PUT', 'PATCH', 'DELETE', 'HEAD', 'OPTIONS').required().label('Method'),
35
- url: Joi.string()
36
- .max(8192) /*.custom(isUrlValid, 'URL validation')*/
37
- .required()
38
- .label('URL'),
39
- headers: Joi.any().allow('').label('Headers'),
40
- contentType: Joi.string()
41
- .valid('none', 'application/json', 'multipart/form-data', 'binary', 'application/x-www-form-urlencoded', 'text/plain', 'application/xml')
42
- .label('Content-Type'),
43
- body: Joi.any().allow('').label('Body'),
44
- _templateSettings: Joi.object().allow(null).label('Template Settings'),
45
- _templateVars: Joi.object().allow(null).label('Template Variables'),
46
- proxy: Joi.string().allow('').label('Proxy'),
47
- oauthService: Joi.string().allow('').label('OAuth Service'),
48
- scope: Joi.string().allow('').label('Scope'),
49
- authorizationURL: Joi.string().allow('').label('Authorization URL'),
50
- tokenURL: Joi.string().allow('').label('Token URL'),
51
- clientID: Joi.string().allow('').label('Client ID'),
52
- clientSecret: Joi.string().allow('').label('Client Secret'),
53
- oauth2CallbackURL: Joi.string().allow('').label('OAuth2 Callback URL'),
54
- callbackURL: Joi.string().allow('').label('Callback URL'), // !TEMP: prevent validation error
55
- requestTokenURL: Joi.string().allow('').label('Request Token URL'),
56
- accessTokenURL: Joi.string().allow('').label('Access Token URL'),
57
- userAuthorizationURL: Joi.string().allow('').label('User Authorization URL'),
58
- consumerKey: Joi.string().allow('').label('Consumer Key'),
59
- consumerSecret: Joi.string().allow('').label('Consumer Secret'),
60
- oauth1CallbackURL: Joi.string().allow('').label('OAuth1 Callback URL'),
61
- authenticate: Joi.string().allow('').label('Authenticate'),
62
- });
63
- constructor() {
64
- super();
65
- }
66
-
67
- init() {}
68
-
69
- async process(input, config, agent: Agent) {
70
- await super.process(input, config, agent);
71
-
72
- const logger = this.createComponentLogger(agent, config);
73
-
74
- let publicUrls: string[] = [];
75
-
76
- try {
77
- logger.debug(`=== API Call Log ===`);
78
-
79
- const method = config?.data?.method || 'get';
80
-
81
- const reqConfig: AxiosRequestConfig = {};
82
- reqConfig.method = method;
83
-
84
- reqConfig.url = await parseUrl(input, config, agent);
85
-
86
- // We generate public URLs for any resources specified with the smythfs protocol in the request URL.
87
- ({ url: reqConfig.url, publicUrls } = await parseSmythFsUrl(reqConfig.url, agent));
88
-
89
- const { data, headers } = await parseData(input, config, agent);
90
-
91
- // If the data is null, the request may fail. We encountered an issue where a request failed due to null data being provided.
92
- let dataForDebug;
93
- if (data) {
94
- reqConfig.data = data;
95
-
96
- dataForDebug = await formatDataForDebug(data, AccessCandidate.agent(agent.id));
97
- }
98
-
99
- reqConfig.headers = (await parseHeaders(input, config, agent)).concat({ ...headers });
100
-
101
- const proxyConfig = await parseProxy(input, config, agent);
102
-
103
- if (proxyConfig) {
104
- if (proxyConfig instanceof SocksProxyAgent) {
105
- const isSecureEndpoint = reqConfig.url?.startsWith('https://');
106
- reqConfig[isSecureEndpoint ? 'httpsAgent' : 'httpAgent'] = proxyConfig;
107
- } else {
108
- reqConfig.proxy = proxyConfig;
109
- }
110
- }
111
-
112
- let Response: any = {};
113
- let Headers: any = {};
114
- let _error: any = undefined;
115
- try {
116
- if (config?.data?.oauthService && config?.data?.oauthService !== 'None') {
117
- const rootUrl = new URL(reqConfig.url).origin;
118
- const additionalParams = extractAdditionalParamsForOAuth1(reqConfig);
119
- const oauthHeaders = await generateOAuthHeaders(agent, config, reqConfig, logger, additionalParams, rootUrl);
120
- //reqConfig.headers = { ...reqConfig.headers, ...oauthHeaders };
121
- reqConfig.headers = reqConfig.headers.concat({ ...oauthHeaders });
122
- }
123
-
124
- // in order to handle binary data automatically, we need to set responseType to 'arraybuffer' for all requests, then parse the response data based on content-type
125
- reqConfig.responseType = 'arraybuffer';
126
-
127
- logger.debug('Making API call', { ...reqConfig, data: dataForDebug });
128
-
129
- const response = await axios.request(reqConfig);
130
-
131
- const parsedRes = await parseArrayBufferResponse(response, agent);
132
-
133
- // log response headers
134
- logger.debug('API call Response Headers', response.headers);
135
- Response = parsedRes;
136
-
137
- logger.debug('API call Response\n', Response);
138
-
139
- Headers = Object.fromEntries(Object.entries(response.headers));
140
- } catch (error) {
141
- logger.debug(`Error making API call: ${error.message}`);
142
- Headers = error?.response?.headers ? Object.fromEntries(Object.entries(error.response.headers)) : {};
143
- Response = await parseArrayBufferResponse(error.response, agent);
144
- _error = error.message;
145
- }
146
-
147
- return { Response, Headers, _error, _debug: logger.output };
148
- } catch (error) {
149
- return { _error: error.message, _debug: logger.output };
150
- } finally {
151
- if (publicUrls.length > 0) {
152
- await destroyPublicUrls(publicUrls);
153
- }
154
- }
155
- }
156
- }
1
+ import axios, { AxiosRequestConfig } from 'axios';
2
+ import Joi from 'joi';
3
+
4
+ import { Agent } from '@sre/AgentManager/Agent.class';
5
+ import { Component } from '../Component.class';
6
+ import { parseHeaders } from './parseHeaders';
7
+ import { parseUrl, parseSmythFsUrl, destroyPublicUrls } from './parseUrl';
8
+ import { parseData } from './parseData';
9
+ import { parseProxy } from './parseProxy';
10
+ import { parseArrayBufferResponse } from './ArrayBufferResponse.helper';
11
+ import { extractAdditionalParamsForOAuth1, handleOAuthHeaders as generateOAuthHeaders } from './OAuth.helper';
12
+ import { SocksProxyAgent } from 'socks-proxy-agent';
13
+ import { formatDataForDebug } from '@sre/utils/data.utils';
14
+ import { AccessCandidate } from '@sre/Security/AccessControl/AccessCandidate.class';
15
+
16
+ export class APICall extends Component {
17
+ protected schema = {
18
+ name: 'APICall',
19
+ description: 'Use this component to make an API call',
20
+ inputs: {},
21
+ outputs: {
22
+ Headers: {
23
+ description: 'The headers of the API call response',
24
+ default: true,
25
+ },
26
+ Response: {
27
+ description: 'The response of the API call',
28
+ default: true,
29
+ },
30
+ },
31
+ };
32
+
33
+ protected configSchema = Joi.object({
34
+ method: Joi.string().valid('GET', 'POST', 'PUT', 'PATCH', 'DELETE', 'HEAD', 'OPTIONS').required().label('Method'),
35
+ url: Joi.string()
36
+ .max(8192) /*.custom(isUrlValid, 'URL validation')*/
37
+ .required()
38
+ .label('URL'),
39
+ headers: Joi.any().allow('').label('Headers'),
40
+ contentType: Joi.string()
41
+ .valid('none', 'application/json', 'multipart/form-data', 'binary', 'application/x-www-form-urlencoded', 'text/plain', 'application/xml')
42
+ .label('Content-Type'),
43
+ body: Joi.any().allow('').label('Body'),
44
+ _templateSettings: Joi.object().allow(null).label('Template Settings'),
45
+ _templateVars: Joi.object().allow(null).label('Template Variables'),
46
+ proxy: Joi.string().allow('').label('Proxy'),
47
+ oauthService: Joi.string().allow('').label('OAuth Service'),
48
+ scope: Joi.string().allow('').label('Scope'),
49
+ authorizationURL: Joi.string().allow('').label('Authorization URL'),
50
+ tokenURL: Joi.string().allow('').label('Token URL'),
51
+ clientID: Joi.string().allow('').label('Client ID'),
52
+ clientSecret: Joi.string().allow('').label('Client Secret'),
53
+ oauth2CallbackURL: Joi.string().allow('').label('OAuth2 Callback URL'),
54
+ callbackURL: Joi.string().allow('').label('Callback URL'), // !TEMP: prevent validation error
55
+ requestTokenURL: Joi.string().allow('').label('Request Token URL'),
56
+ accessTokenURL: Joi.string().allow('').label('Access Token URL'),
57
+ userAuthorizationURL: Joi.string().allow('').label('User Authorization URL'),
58
+ consumerKey: Joi.string().allow('').label('Consumer Key'),
59
+ consumerSecret: Joi.string().allow('').label('Consumer Secret'),
60
+ oauth1CallbackURL: Joi.string().allow('').label('OAuth1 Callback URL'),
61
+ authenticate: Joi.string().allow('').label('Authenticate'),
62
+ });
63
+ constructor() {
64
+ super();
65
+ }
66
+
67
+ init() {}
68
+
69
+ async process(input, config, agent: Agent) {
70
+ await super.process(input, config, agent);
71
+
72
+ const logger = this.createComponentLogger(agent, config);
73
+
74
+ let publicUrls: string[] = [];
75
+
76
+ try {
77
+ logger.debug(`=== API Call Log ===`);
78
+
79
+ const method = config?.data?.method || 'get';
80
+
81
+ const reqConfig: AxiosRequestConfig = {};
82
+ reqConfig.method = method;
83
+
84
+ reqConfig.url = await parseUrl(input, config, agent);
85
+
86
+ // We generate public URLs for any resources specified with the smythfs protocol in the request URL.
87
+ ({ url: reqConfig.url, publicUrls } = await parseSmythFsUrl(reqConfig.url, agent));
88
+
89
+ const { data, headers } = await parseData(input, config, agent);
90
+
91
+ // If the data is null, the request may fail. We encountered an issue where a request failed due to null data being provided.
92
+ let dataForDebug;
93
+ if (data) {
94
+ reqConfig.data = data;
95
+
96
+ dataForDebug = await formatDataForDebug(data, AccessCandidate.agent(agent.id));
97
+ }
98
+
99
+ reqConfig.headers = (await parseHeaders(input, config, agent)).concat({ ...headers });
100
+
101
+ const proxyConfig = await parseProxy(input, config, agent);
102
+
103
+ if (proxyConfig) {
104
+ if (proxyConfig instanceof SocksProxyAgent) {
105
+ const isSecureEndpoint = reqConfig.url?.startsWith('https://');
106
+ reqConfig[isSecureEndpoint ? 'httpsAgent' : 'httpAgent'] = proxyConfig;
107
+ } else {
108
+ reqConfig.proxy = proxyConfig;
109
+ }
110
+ }
111
+
112
+ let Response: any = {};
113
+ let Headers: any = {};
114
+ let _error: any = undefined;
115
+ try {
116
+ if (config?.data?.oauthService && config?.data?.oauthService !== 'None') {
117
+ const rootUrl = new URL(reqConfig.url).origin;
118
+ const additionalParams = extractAdditionalParamsForOAuth1(reqConfig);
119
+ const oauthHeaders = await generateOAuthHeaders(agent, config, reqConfig, logger, additionalParams, rootUrl);
120
+ //reqConfig.headers = { ...reqConfig.headers, ...oauthHeaders };
121
+ reqConfig.headers = reqConfig.headers.concat({ ...oauthHeaders });
122
+ }
123
+
124
+ // in order to handle binary data automatically, we need to set responseType to 'arraybuffer' for all requests, then parse the response data based on content-type
125
+ reqConfig.responseType = 'arraybuffer';
126
+
127
+ logger.debug('Making API call', { ...reqConfig, data: dataForDebug });
128
+
129
+ const response = await axios.request(reqConfig);
130
+
131
+ const parsedRes = await parseArrayBufferResponse(response, agent);
132
+
133
+ // log response headers
134
+ logger.debug('API call Response Headers', response.headers);
135
+ Response = parsedRes;
136
+
137
+ logger.debug('API call Response\n', Response);
138
+
139
+ Headers = Object.fromEntries(Object.entries(response.headers));
140
+ } catch (error) {
141
+ logger.debug(`Error making API call: ${error.message}`);
142
+ Headers = error?.response?.headers ? Object.fromEntries(Object.entries(error.response.headers)) : {};
143
+ Response = await parseArrayBufferResponse(error.response, agent);
144
+ _error = error.message;
145
+ }
146
+
147
+ return { Response, Headers, _error, _debug: logger.output };
148
+ } catch (error) {
149
+ return { _error: error.message, _debug: logger.output };
150
+ } finally {
151
+ if (publicUrls.length > 0) {
152
+ await destroyPublicUrls(publicUrls);
153
+ }
154
+ }
155
+ }
156
+ }