@smythos/sre 1.5.0

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 (188) hide show
  1. package/README.md +135 -0
  2. package/dist/index.js +7 -0
  3. package/dist/index.js.map +1 -0
  4. package/dist/types/Components/APICall/APICall.class.d.ts +34 -0
  5. package/dist/types/Components/APICall/AccessTokenManager.d.ts +17 -0
  6. package/dist/types/Components/APICall/ArrayBufferResponse.helper.d.ts +3 -0
  7. package/dist/types/Components/APICall/OAuth.helper.d.ts +10 -0
  8. package/dist/types/Components/APICall/mimeTypeCategories.d.ts +6 -0
  9. package/dist/types/Components/APICall/parseData.d.ts +5 -0
  10. package/dist/types/Components/APICall/parseHeaders.d.ts +3 -0
  11. package/dist/types/Components/APICall/parseProxy.d.ts +4 -0
  12. package/dist/types/Components/APICall/parseUrl.d.ts +7 -0
  13. package/dist/types/Components/APIEndpoint.class.d.ts +16 -0
  14. package/dist/types/Components/APIOutput.class.d.ts +15 -0
  15. package/dist/types/Components/AgentPlugin.class.d.ts +16 -0
  16. package/dist/types/Components/Async.class.d.ts +17 -0
  17. package/dist/types/Components/Await.class.d.ts +22 -0
  18. package/dist/types/Components/Classifier.class.d.ts +33 -0
  19. package/dist/types/Components/Component.class.d.ts +35 -0
  20. package/dist/types/Components/ComponentHost.class.d.ts +12 -0
  21. package/dist/types/Components/DataSourceCleaner.class.d.ts +19 -0
  22. package/dist/types/Components/DataSourceIndexer.class.d.ts +25 -0
  23. package/dist/types/Components/DataSourceLookup.class.d.ts +17 -0
  24. package/dist/types/Components/FEncDec.class.d.ts +17 -0
  25. package/dist/types/Components/FHash.class.d.ts +17 -0
  26. package/dist/types/Components/FSign.class.d.ts +18 -0
  27. package/dist/types/Components/FSleep.class.d.ts +19 -0
  28. package/dist/types/Components/FTimestamp.class.d.ts +19 -0
  29. package/dist/types/Components/FileStore.class.d.ts +11 -0
  30. package/dist/types/Components/ForEach.class.d.ts +16 -0
  31. package/dist/types/Components/GPTPlugin.class.d.ts +17 -0
  32. package/dist/types/Components/GenAILLM.class.d.ts +130 -0
  33. package/dist/types/Components/HuggingFace.class.d.ts +17 -0
  34. package/dist/types/Components/Image/imageSettings.config.d.ts +21 -0
  35. package/dist/types/Components/ImageGenerator.class.d.ts +17 -0
  36. package/dist/types/Components/JSONFilter.class.d.ts +13 -0
  37. package/dist/types/Components/LLMAssistant.class.d.ts +19 -0
  38. package/dist/types/Components/LogicAND.class.d.ts +7 -0
  39. package/dist/types/Components/LogicAtLeast.class.d.ts +9 -0
  40. package/dist/types/Components/LogicAtMost.class.d.ts +9 -0
  41. package/dist/types/Components/LogicOR.class.d.ts +7 -0
  42. package/dist/types/Components/LogicXOR.class.d.ts +7 -0
  43. package/dist/types/Components/MCPClient.class.d.ts +17 -0
  44. package/dist/types/Components/PromptGenerator.class.d.ts +19 -0
  45. package/dist/types/Components/ScrapflyWebScrape.class.d.ts +30 -0
  46. package/dist/types/Components/TavilyWebSearch.class.d.ts +31 -0
  47. package/dist/types/Components/index.d.ts +74 -0
  48. package/dist/types/Core/AgentProcess.helper.d.ts +36 -0
  49. package/dist/types/Core/Connector.class.d.ts +34 -0
  50. package/dist/types/Core/ConnectorsService.d.ts +64 -0
  51. package/dist/types/Core/DummyConnector.d.ts +4 -0
  52. package/dist/types/Core/HookService.d.ts +27 -0
  53. package/dist/types/Core/SmythRuntime.class.d.ts +28 -0
  54. package/dist/types/Core/SystemEvents.d.ts +12 -0
  55. package/dist/types/Core/boot.d.ts +1 -0
  56. package/dist/types/config.d.ts +11 -0
  57. package/dist/types/constants.d.ts +79 -0
  58. package/dist/types/helpers/BinaryInput.helper.d.ts +33 -0
  59. package/dist/types/helpers/Conversation.helper.d.ts +85 -0
  60. package/dist/types/helpers/JsonContent.helper.d.ts +16 -0
  61. package/dist/types/helpers/LocalCache.helper.d.ts +14 -0
  62. package/dist/types/helpers/Log.helper.d.ts +22 -0
  63. package/dist/types/helpers/OpenApiParser.helper.d.ts +10 -0
  64. package/dist/types/helpers/S3Cache.helper.d.ts +9 -0
  65. package/dist/types/helpers/SmythURI.helper.d.ts +3 -0
  66. package/dist/types/helpers/TemplateString.helper.d.ts +71 -0
  67. package/dist/types/helpers/TypeChecker.helper.d.ts +10 -0
  68. package/dist/types/index.d.ts +173 -0
  69. package/dist/types/subsystems/AgentManager/Agent.class.d.ts +78 -0
  70. package/dist/types/subsystems/AgentManager/Agent.helper.d.ts +1 -0
  71. package/dist/types/subsystems/AgentManager/AgentData.service/AgentDataConnector.d.ts +33 -0
  72. package/dist/types/subsystems/AgentManager/AgentData.service/connectors/CLIAgentDataConnector.class.d.ts +20 -0
  73. package/dist/types/subsystems/AgentManager/AgentData.service/connectors/LocalAgentDataConnector.class.d.ts +48 -0
  74. package/dist/types/subsystems/AgentManager/AgentData.service/connectors/NullAgentData.class.d.ts +19 -0
  75. package/dist/types/subsystems/AgentManager/AgentData.service/index.d.ts +4 -0
  76. package/dist/types/subsystems/AgentManager/AgentLogger.class.d.ts +11 -0
  77. package/dist/types/subsystems/AgentManager/AgentRequest.class.d.ts +15 -0
  78. package/dist/types/subsystems/AgentManager/AgentRuntime.class.d.ts +91 -0
  79. package/dist/types/subsystems/AgentManager/AgentSSE.class.d.ts +40 -0
  80. package/dist/types/subsystems/AgentManager/AgentSettings.class.d.ts +12 -0
  81. package/dist/types/subsystems/AgentManager/Component.service/ComponentConnector.d.ts +17 -0
  82. package/dist/types/subsystems/AgentManager/Component.service/connectors/LocalComponentConnector.class.d.ts +14 -0
  83. package/dist/types/subsystems/AgentManager/Component.service/index.d.ts +4 -0
  84. package/dist/types/subsystems/AgentManager/EmbodimentSettings.class.d.ts +8 -0
  85. package/dist/types/subsystems/AgentManager/ForkedAgent.class.d.ts +15 -0
  86. package/dist/types/subsystems/AgentManager/OSResourceMonitor.d.ts +2 -0
  87. package/dist/types/subsystems/ComputeManager/Code.service/CodeConnector.d.ts +58 -0
  88. package/dist/types/subsystems/ComputeManager/Code.service/connectors/AWSLambdaCode.class.d.ts +15 -0
  89. package/dist/types/subsystems/ComputeManager/Code.service/index.d.ts +4 -0
  90. package/dist/types/subsystems/IO/CLI.service/CLIConnector.d.ts +21 -0
  91. package/dist/types/subsystems/IO/CLI.service/index.d.ts +4 -0
  92. package/dist/types/subsystems/IO/Log.service/LogConnector.d.ts +17 -0
  93. package/dist/types/subsystems/IO/Log.service/connectors/ConsoleLog.class.d.ts +12 -0
  94. package/dist/types/subsystems/IO/Log.service/index.d.ts +4 -0
  95. package/dist/types/subsystems/IO/NKV.service/NKVConnector.d.ts +33 -0
  96. package/dist/types/subsystems/IO/NKV.service/connectors/NKVRAM.class.d.ts +43 -0
  97. package/dist/types/subsystems/IO/NKV.service/connectors/NKVRedis.class.d.ts +27 -0
  98. package/dist/types/subsystems/IO/NKV.service/index.d.ts +4 -0
  99. package/dist/types/subsystems/IO/Router.service/RouterConnector.d.ts +11 -0
  100. package/dist/types/subsystems/IO/Router.service/connectors/ExpressRouter.class.d.ts +21 -0
  101. package/dist/types/subsystems/IO/Router.service/connectors/NullRouter.class.d.ts +12 -0
  102. package/dist/types/subsystems/IO/Router.service/index.d.ts +4 -0
  103. package/dist/types/subsystems/IO/Storage.service/SmythFS.class.d.ts +49 -0
  104. package/dist/types/subsystems/IO/Storage.service/StorageConnector.d.ts +30 -0
  105. package/dist/types/subsystems/IO/Storage.service/connectors/LocalStorage.class.d.ts +58 -0
  106. package/dist/types/subsystems/IO/Storage.service/connectors/S3Storage.class.d.ts +53 -0
  107. package/dist/types/subsystems/IO/Storage.service/index.d.ts +4 -0
  108. package/dist/types/subsystems/IO/VectorDB.service/VectorDBConnector.d.ts +41 -0
  109. package/dist/types/subsystems/IO/VectorDB.service/connectors/MilvusVectorDB.class.d.ts +49 -0
  110. package/dist/types/subsystems/IO/VectorDB.service/connectors/PineconeVectorDB.class.d.ts +50 -0
  111. package/dist/types/subsystems/IO/VectorDB.service/connectors/RAMVecrtorDB.class.d.ts +52 -0
  112. package/dist/types/subsystems/IO/VectorDB.service/embed/BaseEmbedding.d.ts +53 -0
  113. package/dist/types/subsystems/IO/VectorDB.service/embed/OpenAIEmbedding.d.ts +16 -0
  114. package/dist/types/subsystems/IO/VectorDB.service/embed/index.d.ts +16 -0
  115. package/dist/types/subsystems/IO/VectorDB.service/index.d.ts +4 -0
  116. package/dist/types/subsystems/LLMManager/LLM.helper.d.ts +125 -0
  117. package/dist/types/subsystems/LLMManager/LLM.inference.d.ts +36 -0
  118. package/dist/types/subsystems/LLMManager/LLM.service/LLMConnector.d.ts +62 -0
  119. package/dist/types/subsystems/LLMManager/LLM.service/LLMCredentials.helper.d.ts +3 -0
  120. package/dist/types/subsystems/LLMManager/LLM.service/connectors/Anthropic.class.d.ts +68 -0
  121. package/dist/types/subsystems/LLMManager/LLM.service/connectors/Bedrock.class.d.ts +46 -0
  122. package/dist/types/subsystems/LLMManager/LLM.service/connectors/Echo.class.d.ts +18 -0
  123. package/dist/types/subsystems/LLMManager/LLM.service/connectors/GoogleAI.class.d.ts +57 -0
  124. package/dist/types/subsystems/LLMManager/LLM.service/connectors/Groq.class.d.ts +55 -0
  125. package/dist/types/subsystems/LLMManager/LLM.service/connectors/OpenAI.class.d.ts +92 -0
  126. package/dist/types/subsystems/LLMManager/LLM.service/connectors/Perplexity.class.d.ts +86 -0
  127. package/dist/types/subsystems/LLMManager/LLM.service/connectors/VertexAI.class.d.ts +38 -0
  128. package/dist/types/subsystems/LLMManager/LLM.service/index.d.ts +5 -0
  129. package/dist/types/subsystems/LLMManager/ModelsProvider.service/ModelsProviderConnector.d.ts +36 -0
  130. package/dist/types/subsystems/LLMManager/ModelsProvider.service/connectors/SmythModelsProvider.class.d.ts +39 -0
  131. package/dist/types/subsystems/LLMManager/ModelsProvider.service/index.d.ts +4 -0
  132. package/dist/types/subsystems/LLMManager/custom-models.d.ts +785 -0
  133. package/dist/types/subsystems/LLMManager/models.d.ts +2629 -0
  134. package/dist/types/subsystems/LLMManager/paramMappings.d.ts +69 -0
  135. package/dist/types/subsystems/MemoryManager/Cache.service/CacheConnector.d.ts +41 -0
  136. package/dist/types/subsystems/MemoryManager/Cache.service/connectors/LocalStorageCache.class.d.ts +33 -0
  137. package/dist/types/subsystems/MemoryManager/Cache.service/connectors/RAMCache.class.d.ts +31 -0
  138. package/dist/types/subsystems/MemoryManager/Cache.service/connectors/RedisCache.class.d.ts +33 -0
  139. package/dist/types/subsystems/MemoryManager/Cache.service/connectors/S3Cache.class.d.ts +38 -0
  140. package/dist/types/subsystems/MemoryManager/Cache.service/index.d.ts +4 -0
  141. package/dist/types/subsystems/MemoryManager/LLMCache.d.ts +27 -0
  142. package/dist/types/subsystems/MemoryManager/LLMContext.d.ts +25 -0
  143. package/dist/types/subsystems/MemoryManager/RuntimeContext.d.ts +50 -0
  144. package/dist/types/subsystems/Security/AccessControl/ACL.class.d.ts +29 -0
  145. package/dist/types/subsystems/Security/AccessControl/AccessCandidate.class.d.ts +21 -0
  146. package/dist/types/subsystems/Security/AccessControl/AccessRequest.class.d.ts +13 -0
  147. package/dist/types/subsystems/Security/Account.service/AccountConnector.d.ts +27 -0
  148. package/dist/types/subsystems/Security/Account.service/connectors/AWSAccount.class.d.ts +19 -0
  149. package/dist/types/subsystems/Security/Account.service/connectors/DummyAccount.class.d.ts +19 -0
  150. package/dist/types/subsystems/Security/Account.service/connectors/JSONFileAccount.class.d.ts +25 -0
  151. package/dist/types/subsystems/Security/Account.service/index.d.ts +4 -0
  152. package/dist/types/subsystems/Security/Credentials.helper.d.ts +16 -0
  153. package/dist/types/subsystems/Security/ManagedVault.service/ManagedVaultConnector.d.ts +23 -0
  154. package/dist/types/subsystems/Security/ManagedVault.service/connectors/NullManagedVault.class.d.ts +14 -0
  155. package/dist/types/subsystems/Security/ManagedVault.service/connectors/SecretManagerManagedVault.d.ts +22 -0
  156. package/dist/types/subsystems/Security/ManagedVault.service/index.d.ts +4 -0
  157. package/dist/types/subsystems/Security/SecureConnector.class.d.ts +13 -0
  158. package/dist/types/subsystems/Security/Vault.service/Vault.helper.d.ts +5 -0
  159. package/dist/types/subsystems/Security/Vault.service/VaultConnector.d.ts +17 -0
  160. package/dist/types/subsystems/Security/Vault.service/connectors/HashicorpVault.class.d.ts +13 -0
  161. package/dist/types/subsystems/Security/Vault.service/connectors/JSONFileVault.class.d.ts +23 -0
  162. package/dist/types/subsystems/Security/Vault.service/connectors/NullVault.class.d.ts +16 -0
  163. package/dist/types/subsystems/Security/Vault.service/connectors/SecretsManager.class.d.ts +20 -0
  164. package/dist/types/subsystems/Security/Vault.service/index.d.ts +4 -0
  165. package/dist/types/types/ACL.types.d.ts +83 -0
  166. package/dist/types/types/AWS.types.d.ts +7 -0
  167. package/dist/types/types/Agent.types.d.ts +52 -0
  168. package/dist/types/types/AgentLogger.types.d.ts +16 -0
  169. package/dist/types/types/Cache.types.d.ts +1 -0
  170. package/dist/types/types/Common.types.d.ts +3 -0
  171. package/dist/types/types/LLM.types.d.ts +365 -0
  172. package/dist/types/types/Redis.types.d.ts +6 -0
  173. package/dist/types/types/SRE.types.d.ts +60 -0
  174. package/dist/types/types/Security.types.d.ts +16 -0
  175. package/dist/types/types/Storage.types.d.ts +3 -0
  176. package/dist/types/types/VectorDB.types.d.ts +66 -0
  177. package/dist/types/utils/base64.utils.d.ts +86 -0
  178. package/dist/types/utils/cli.utils.d.ts +20 -0
  179. package/dist/types/utils/data.utils.d.ts +17 -0
  180. package/dist/types/utils/date-time.utils.d.ts +3 -0
  181. package/dist/types/utils/general.utils.d.ts +75 -0
  182. package/dist/types/utils/index.d.ts +9 -0
  183. package/dist/types/utils/numbers.utils.d.ts +2 -0
  184. package/dist/types/utils/oauth.utils.d.ts +7 -0
  185. package/dist/types/utils/string.utils.d.ts +28 -0
  186. package/dist/types/utils/url.utils.d.ts +1 -0
  187. package/dist/types/utils/validation.utils.d.ts +25 -0
  188. package/package.json +117 -0
package/dist/index.js ADDED
@@ -0,0 +1,7 @@
1
+ import e from"dotenv";import t from"joi";import"dotenv/config";import s from"winston";import n from"winston-transport";import a from"p-limit";import o,{AxiosHeaders as r}from"axios";import*as i from"file-type";import{fileTypeFromBuffer as l}from"file-type";import{isBinaryFileSync as c}from"isbinaryfile";import u,{EventEmitter as d}from"events";import m,{createHash as p,randomUUID as h}from"crypto";import{encode as g,encodeChat as y}from"gpt-tokenizer";import f from"path";import b from"os";import"process";import*as w from"fs";import I,{existsSync as k,mkdirSync as A,writeFileSync as v,readFileSync as x,unlinkSync as _}from"fs";import T from"mime";import{Readable as L}from"stream";import C from"xxhashjs";import{jsonrepair as S}from"jsonrepair";import P from"js-yaml";import{EventSource as M}from"eventsource";import*as R from"acorn";import O from"dayjs";import D from"querystring";import{HfInference as q}from"@huggingface/inference";import{Runware as E}from"@runware/sdk-js";import N from"form-data";import{SocksProxyAgent as $}from"socks-proxy-agent";import G from"oauth-1.0a";import{Client as j}from"@modelcontextprotocol/sdk/client/index.js";import{SSEClientTransport as U}from"@modelcontextprotocol/sdk/client/sse.js";import{GetBucketLifecycleConfigurationCommand as B,PutBucketLifecycleConfigurationCommand as F,S3Client as V,HeadObjectCommand as z,DeleteObjectCommand as J,GetObjectCommand as K,PutObjectCommand as W,PutObjectTaggingCommand as Q,GetObjectTaggingCommand as H,CopyObjectCommand as X}from"@aws-sdk/client-s3";import Y,{toFile as Z,OpenAI as ee}from"openai";import te from"image-size";import{GoogleGenerativeAI as se}from"@google/generative-ai";import{GoogleAIFileManager as ne,FileState as ae}from"@google/generative-ai/server";import oe from"@anthropic-ai/sdk";import re from"groq-sdk";import{BedrockRuntimeClient as ie,ConverseCommand as le,ConverseStreamCommand as ce}from"@aws-sdk/client-bedrock-runtime";import{VertexAI as ue}from"@google-cloud/vertexai";import de from"ioredis";import*as me from"readline-sync";import{SecretsManagerClient as pe,ListSecretsCommand as he,GetSecretValueCommand as ge,PutSecretValueCommand as ye,CreateSecretCommand as fe,DeleteSecretCommand as be}from"@aws-sdk/client-secrets-manager";import we from"mysql2/promise";import{Pinecone as Ie}from"@pinecone-database/pinecone";import{MilvusClient as ke,DataType as Ae,ErrorCode as ve}from"@zilliz/milvus2-sdk-node";import xe from"chokidar";import _e from"fs/promises";var Te="1.5.0";e.config();const Le={LOG_LEVEL:process.env.LOG_LEVEL||"none",LOG_FILTER:process.env.LOG_FILTER||"",NODE_ENV:process.env?.NODE_ENV},Ce=["GET","POST","PUT","PATCH","DELETE","HEAD","OPTIONS"],Se={none:"none",urlEncodedFormData:"application/x-www-form-urlencoded",multipartFormData:"multipart/form-data",json:"application/json",text:"text/plain",xml:"application/xml",binary:"binary"};var Pe=(e=>(e.ChatBot="chatBot",e.ChatGPT="chatGPT",e))(Pe||{});const Me="Please provide a valid Image Source. Supported image sources are: HTTP(S) URL, Base64 string, Data URL, Output Image from other component(s).",Re="Please provide a valid data that is either a Blob, SmythFileObject (Binary Output from any Component), ArrayBuffer, Buffer, Base64 string, Data URL, or HTTP(s) URL",Oe="The maximum depth has been exceeded for the provided array or object.",De="The maximum array size has been exceeded for the provided array.",qe="The maximum object size has been exceeded for the provided object.",Ee=10,Ne=1e3,$e=1e3,Ge=10485760,je=10,Ue=2048,Be="ExpirationPolicy=DeleteDaily",Fe="ExpirationPolicy=DeleteWeekly",Ve="ExpirationPolicy=DeleteMonthly",ze="gpt-4o-mini",Je={apiCall:"APICall",code:"Code",llmPrompt:"PromptGenerator",visionLLM:"VisionLLM"},Ke='\nRespond ONLY with a valid, parsable JSON object. Follow these strict guidelines:\n1. The response must begin with \'{\' and end with \'}\'.\n2. Use double quotes for all keys and string values.\n3. Do not include any explanations, markdown, or text outside the JSON object.\n4. Do not use newlines or indentation within the JSON structure.\n5. For single-key responses, use the format: {"result": "your content here"}\n6. For multiple keys, use: {"key1": "value1", "key2": "value2", ...}\n\nExample of a valid response:\n{"result": "This is a valid JSON response without any extra text."}\n',We={OpenAI:{image:["image/png","image/jpeg","image/jpg","image/webp","image/gif"],imageGen:["image/png","image/jpeg","image/jpg","image/webp"],document:["application/pdf"]},TogetherAI:{image:["image/png","image/jpeg","image/jpg","image/webp","image/gif"]},Anthropic:{image:["image/png","image/jpeg","image/jpg","image/webp","image/gif"]},GoogleAI:{image:["image/png","image/jpeg","image/jpg","image/webp","image/heic","image/heif"],video:["video/mp4","video/mpeg","video/mov","video/avi","video/x-msvideo","video/x-flv","video/mpg","video/webm","video/wmv","video/3gpp"],audio:["audio/wav","audio/mp3","audio/mpeg","audio/aiff","audio/aac","audio/ogg","audio/flac"],document:["application/pdf","application/x-javascript","application/x-typescript","application/x-python-code","application/json","application/rtf","text/plain","text/html","text/css","text/javascript","text/x-typescript","text/csv","text/markdown","text/x-python","text/xml","text/rtf"]},Groq:{image:["image/png","image/jpeg","image/jpg","image/webp","image/gif"]}},Qe={openai:{enabled:!0},anthropic:{enabled:!0},googleai:{enabled:!0},togetherai:{enabled:!0},groq:{enabled:!0},xai:{enabled:!0}},He="smythos/";var Xe=(e=>(e.Storage="Storage",e.VectorDB="VectorDB",e.Cache="Cache",e.LLM="LLM",e.Vault="Vault",e.Account="Account",e.AgentData="AgentData",e.CLI="CLI",e.NKV="NKV",e.Router="Router",e.ManagedVault="ManagedVault",e.Log="Log",e.Component="Component",e.ModelsProvider="ModelsProvider",e.Code="Code",e))(Xe||{}),Ye=Object.defineProperty,Ze=(e,t,s)=>((e,t,s)=>t in e?Ye(e,t,{enumerable:!0,configurable:!0,writable:!0,value:s}):e[t]=s)(e,"symbol"!=typeof t?t+"":t,s);function et(){return(Date.now()+Math.random()).toString(36).replace(".","").toUpperCase()}async function tt(e,t=10){const s=a(t),n=e.map((e=>s(e)));return(await Promise.allSettled(n)).flatMap((e=>"fulfilled"===e.status?[e.value]:[])).filter(Boolean)}const st=e=>{try{return"string"==typeof e&&!!JSON.parse(e)}catch{return!1}};class nt extends Promise{constructor(e){let t,s,n=!1;super(((e,a)=>{t=t=>{n||(n=!0,e(t))},s=e=>{n||(n=!0,a(e))}})),Ze(this,"_isSettled",!1),Ze(this,"isSettled"),Ze(this,"resolve"),Ze(this,"reject"),this.resolve=t,this.reject=s,this.isSettled=()=>n,e(this.resolve,this.reject,this.isSettled)}}function at(e,t,s){let n=null,a=0;return function(...o){const r=Date.now();n&&clearTimeout(n),s.leading&&!n&&(e.apply(this,o),a=r),s.maxWait&&r-a>=s.maxWait&&(e.apply(this,o),a=r),n=setTimeout((()=>{n=null,a=r,e.apply(this,o)}),t)}}function ot(e=3,t=0){const s=(new Error).stack;if(!s)return[];const n=s.split("\n").slice(3+t),a=[],o=Math.min(e,n.length);for(let e=0;e<o;e++){const t=n[e].trim();if(!t)continue;let s=t.match(/at\s+(.+?)\s+\((.+?):(\d+):(\d+)\)/);if(s){const[,t,n,r]=s,i=n.split(/[/\\]/).pop()||n,l=t.includes(".")?t.split(".").pop():t;a.push(`${e<o-1?"├":"└"} ${l}() in ${i} (${n}:${r})`)}else if(s=t.match(/at\s+(.+?):(\d+):(\d+)/),s){const[,e,t]=s,n=e.split(/[/\\]/).pop()||e;a.push(` ${n}:${t}`)}if(!s&&t.includes("at ")){const e=t.replace("at ","").trim();a.push(` ${e}`)}}return a}function rt(e,t=3,s=0){const n=ot(t,s);n.length>0&&(e.debug("Call trace:"),n.forEach(((t,s)=>{e.debug(` ${t}`)})))}function it(e){return new Promise((t=>setTimeout(t,e)))}var lt=Object.defineProperty,ct=(e,t,s)=>((e,t,s)=>t in e?lt(e,t,{enumerable:!0,configurable:!0,writable:!0,value:s}):e[t]=s)(e,"symbol"!=typeof t?t+"":t,s);function ut(e){return e&&"string"==typeof e}function dt(e){if(null==e)return e;if("object"!=typeof e){if("string"==typeof e){if("true"===e.toLowerCase())return!0;if("false"===e.toLowerCase())return!1;if((e=>{const t=parseFloat(e);return!isNaN(t)&&t<=Number.MAX_SAFE_INTEGER&&t>=Number.MIN_SAFE_INTEGER&&t.toString()===e.trim()})(e))return Number(e);if("null"===e.toLowerCase())return null;if("undefined"===e.toLowerCase())return}return e}return Array.isArray(e)?e.map((e=>dt(e))):Object.fromEntries(Object.entries(e).map((([e,t])=>[e,dt(t)])))}const mt=e=>e&&"string"==typeof e?e.split("-").map((e=>e.charAt(0).toUpperCase()+e.slice(1))).join(" "):e;function pt(e,{chunkSize:t=4e3,chunkOverlap:s=500}={}){return new gt({chunkSize:t,chunkOverlap:s}).splitText(e)}class ht{constructor({chunkSize:e=1e3,chunkOverlap:t=200,separators:s,keepSeparator:n}={}){if(ct(this,"chunkSize"),ct(this,"chunkOverlap"),ct(this,"separators",["\n\n","\n"," ",""]),ct(this,"keepSeparator",!0),this.chunkSize=e,this.chunkOverlap=t,s&&(this.separators=s),void 0!==n&&(this.keepSeparator=n),this.chunkOverlap>=this.chunkSize)throw new Error("Cannot have chunkOverlap >= chunkSize")}splitText(e){return this._splitText(e,this.separators)}_splitText(e,t){const s=[];let n,a=t[t.length-1];for(let s=0;s<t.length;s+=1){const o=t[s];if(""===o){a=o;break}if(e.includes(o)){a=o,n=t.slice(s+1);break}}const o=this.splitOnSeparator(e,a);let r=[];const i=this.keepSeparator?"":a;for(const e of o)if(this.lengthFunction(e)<this.chunkSize)r.push(e);else{if(r.length){const e=this.mergeSplits(r,i);s.push(...e),r=[]}if(n){const t=this._splitText(e,n);s.push(...t)}else s.push(e)}if(r.length){const e=this.mergeSplits(r,i);s.push(...e)}return s}splitOnSeparator(e,t){let s;if(t)if(this.keepSeparator){const n=t.replace(/[/\-\\^$*+?.()|[\]{}]/g,"\\$&");s=e.split(new RegExp(`(?=${n})`))}else s=e.split(t);else s=e.split("");return s.filter((e=>""!==e))}lengthFunction(e){return e.length}joinDocs(e,t){const s=e.join(t).trim();return""===s?null:s}mergeSplits(e,t){const s=[],n=[];let a=0;for(const o of e){const e=this.lengthFunction(o);if(a+e+n.length*t.length>this.chunkSize&&(a>this.chunkSize&&console.warn(`Created a chunk of size ${a}, which is longer than the specified ${this.chunkSize}`),n.length>0)){const o=this.joinDocs(n,t);for(null!==o&&s.push(o);a>this.chunkOverlap||a+e+n.length*t.length>this.chunkSize&&a>0;)a-=this.lengthFunction(n[0]),n.shift()}n.push(o),a+=e}const o=this.joinDocs(n,t);return null!==o&&s.push(o),s}}class gt extends ht{constructor({chunkSize:e=1e3,chunkOverlap:t=200,separators:s=["\n\n","\n"," ",""],keepSeparator:n=!0}={}){super({chunkSize:e,chunkOverlap:t,separators:s,keepSeparator:n})}}const yt=e=>{if("string"!=typeof e)return!1;const t=e.match(/^data:([\w+\-\.]+\/[\w+\-\.]+);base64,(.*)$/);if(!t)return!1;const[,,s]=t;return It(s)},ft=async e=>{try{e=At(e);const t=Buffer.from(e,"base64"),s=await l(t);return s?.mime||""}catch(e){return console.error("Error getting mimetype from base64 data: ",e),""}};function bt(e){return e.replace(/\s|\\n|\\s/g,"")}function wt(e){return/^data:([\w+\-\.]+\/[\w+\-\.]+);base64,(.*)$/.test(e)}function It(e){if(!ut(e))return!1;const t=bt(e);if(t.length<128)return!1;try{return Buffer.from(t,"base64").toString("base64").replace(/=+$/,"")===t.replace(/=+$/,"")}catch{return!1}}async function kt(e){try{const{data:t}=await function(e){const t=e.match(/^data:([\w+\-\.]+\/[\w+\-\.]+);base64,(.*)$/);if(!t)throw new Error("Invalid data URL!");const[,s,n]=t;if(!It(n))throw new Error("Invalid base64 data!");return{mimetype:s,data:bt(n)}}(e),s=Buffer.from(t,"base64"),n=await l(s);return n?.mime||""}catch(e){throw new Error(`Error identifying MIME type from base64 data: ${e?.message}`)}}const At=e=>{if("string"!=typeof e||e.length>Ge)throw new Error("Invalid input");return e.replace(/\s|\\n|\\s/g,"")};async function vt(e){const t=[];for await(const s of e)t.push("string"==typeof s?Buffer.from(s):s);return Buffer.concat(t)}const xt=["image/","audio/","video/","application/pdf","application/zip","application/octet-stream"];function _t(e){let t;switch(!0){case e instanceof ArrayBuffer:t=Buffer.from(new Uint8Array(e));break;case ArrayBuffer.isView(e)&&!(e instanceof DataView):t=Buffer.from(new Uint8Array(e.buffer));break;case e instanceof DataView:t=Buffer.from(new Uint8Array(e.buffer,e.byteOffset,e.byteLength));break;case Buffer.isBuffer(e):t=e;break;case"string"==typeof e:t=Buffer.from(e,"utf-8");break;default:return null}return t}const Tt=e=>"object"==typeof e&&null!==e&&!Array.isArray(e)&&"[object Object]"===Object.prototype.toString.call(e)&&e.constructor===Object,Lt=e=>{try{return Buffer.isBuffer(e)}catch{return!1}};function Ct(e){if("string"!=typeof e)return!1;return/^([a-zA-Z0-9]+:\/\/)([^\s.]+\.[^\s]{2,})(:[0-9]{1,5})?(\/[^\s]*)?(\?[^\s]*)?$/i.test(e)}function St(e){if("string"!=typeof e)return!1;return/^smythfs:\/\/([^\s.]+\.[^\s]{2,})(:[0-9]{1,5})?(\/[^\s]*)?(\?[^\s]*)?$/i.test(e)}const Pt=e=>!!("object"==typeof e&&null!==e&&e?.url&&Ct(e?.url)&&"size"in e&&"mimetype"in e);async function Mt(e){const t={blob:()=>e.type,buffer:async()=>{try{const t=await l(e);return t?.mime??""}catch{return console.warn("Failed to get mime type from buffer"),""}},url:async()=>{try{const t=await o.get(e);return t.headers["content-type"]}catch{return console.warn("Failed to get mime type from URL"),""}},smythFile:()=>e.mimetype,base64DataUrl:()=>kt(e),base64:()=>async function(e){try{const t=bt(e),s=Buffer.from(t,"base64"),n=await l(s);return n?.mime||""}catch(e){throw new Error(`Error identifying MIME type from base64 data: ${e?.message}`)}}(e),string:()=>(e=>{if("string"!=typeof e)return"";if(!e.trim())return"";const t=e.trim();if(t.startsWith("{")&&t.endsWith("}")||t.startsWith("[")&&t.endsWith("]"))try{return JSON.parse(t),"application/json"}catch{}if(t.startsWith("<")&&t.endsWith(">"))return t.match(/^<\?xml\s/i)||t.match(/^<[a-zA-Z][^>]*>.*<\/[a-zA-Z][^>]*>$/s)?"application/xml":t.match(/^<!DOCTYPE\s+html/i)||t.match(/<html[^>]*>/i)||t.match(/<head[^>]*>/i)||t.match(/<body[^>]*>/i)||t.match(/<div[^>]*>/i)||t.match(/<p[^>]*>/i)?"text/html":t.match(/<svg[^>]*>/i)?"image/svg+xml":"application/xml";if(t.match(/^[^{]*\{[^}]*\}/s)||t.match(/@(import|media|charset|keyframes|font-face)/i))return"text/css";if(t.match(/^(function\s+\w+|var\s+\w+|let\s+\w+|const\s+\w+|class\s+\w+)/i)||t.match(/(console\.log|document\.|window\.|require\(|import\s+)/i)||t.match(/=>\s*{|function\s*\(/))return"application/javascript";if(t.match(/^---\s*$/m)||t.match(/^[a-zA-Z_][a-zA-Z0-9_]*:\s*[^\n]+$/m)||t.match(/^\s*-\s+[^\n]+$/m))return"application/yaml";const s=t.split("\n");if(s.length>1){const e=s[0],t=e.includes(","),n=e.includes(";"),a=e.includes("\t");if(t||n||a){const a=t?",":n?";":"\t",o=e.split(a).length;let r=0;for(let e=0;e<Math.min(s.length,5);e++){const t=s[e].split(a).length;t===o&&t>1&&r++}if(r>=Math.min(s.length,3))return"text/csv"}}return t.match(/^#+\s+/m)||t.match(/^\*\s+/m)||t.match(/^-\s+/m)||t.match(/\*\*[^*]+\*\*/g)||t.match(/\[[^\]]+\]\([^)]+\)/g)?"text/markdown":t.match(/^\s*(SELECT|INSERT|UPDATE|DELETE|CREATE|DROP|ALTER|GRANT|REVOKE)\s+/i)?"application/sql":"text/plain"})(e)},s={blob:e instanceof Blob,buffer:Lt(e),url:Ct(e),smythFile:Pt(e),base64DataUrl:yt(e),base64:It(e),string:"string"==typeof e},[n=""]=Object.entries(s).find((([,e])=>e))||[];return n?await(t?.[n]?.()):""}async function Rt(e){let t;if(!e)return e;try{if("BinaryInput"===e.constructor?.name){const s=await e.getJsonData();t=`[BinaryInput size=${s?.size}]`}else t=Lt(e)?`[Buffer size=${e.byteLength}]`:"FormData"===e.constructor?.name?"[FormData]":It(e)||wt(e)?`[Base64 size=${function(e){const t=e.includes(";base64,")?e.split(";base64,")[1]:e,s=t.endsWith("==")?2:t.endsWith("=")?1:0;return Math.floor(3*t.length/4)-s}(e)}]`:e}catch(e){t="[Binary]"}return t}function Ot(e,t){t||(t=process.argv);const s=t,n={};return(Array.isArray(e)?e:[e]).forEach((e=>{const t=s.indexOf(`--${e}`);if(-1!==t){const a=[];for(let e=t+1;e<s.length&&!s[e].startsWith("--");e++)a.push(s[e]);if(1===a.length&&a[0].includes("=")){const t={},[s,...o]=a[0].split("="),r=o.join("=").replace(/^"|"$/g,"");t[s]=r,n[e]=t}else if(1===a.length)n[e]=a[0];else if(a.length>1){const t={};a.forEach((e=>{const[s,...n]=e.split("="),a=n.join("=").replace(/^"|"$/g,"");t[s]=a})),n[e]=t}}})),n}function Dt(e){if("number"==typeof e)return!0;if("string"!=typeof e)return!1;return/^-?\d+(\.\d+)?$/.test(e.trim())}function qt(e){const t=parseFloat(e);return!isNaN(t)&&t<=Number.MAX_SAFE_INTEGER&&t>=Number.MIN_SAFE_INTEGER&&t.toString()===e.trim()}function Et(e){if(""===e)return!0;const t=e.split(/(\{\{[^}]+\}\})/).filter(Boolean);for(const e of t)if(e.startsWith("{{")&&e.endsWith("}}")){if(""===e.slice(2,-2).trim())return!1}else if(!/^[a-zA-Z0-9\-_.]+$/.test(e))return!1;return!0}var Nt=Object.defineProperty,$t=(e,t,s)=>((e,t,s)=>t in e?Nt(e,t,{enumerable:!0,configurable:!0,writable:!0,value:s}):e[t]=s)(e,"symbol"!=typeof t?t+"":t,s);s.addColors({error:"red",warn:"yellow",info:"green",debug:"blue"});const Gt={min:"info",full:"debug"};let jt=()=>{let e=Ot("debug")?.debug||Le?.LOG_LEVEL;return Gt[e]&&(e=Gt[e]),["none","error","warn","info","debug"].includes(e)?e:"none"};const Ut=(Le.LOG_FILTER||"").split(","),Bt=s.format((e=>!(Le.LOG_FILTER&&!Ut.some((t=>e.module?.includes(t))))&&e))();class Ft extends n{constructor(e){super(e),$t(this,"logs"),this.logs=e.logs}log(e,t){setImmediate((()=>{this.emit("logged",e)})),this.logs.push(`${e.level}: ${e.message}`),t()}}class Vt extends d{constructor(e,t,s){super(),this._logger=e,this.data=t,this.labels=s,$t(this,"startTime",Date.now())}get output(){return Array.isArray(this.data)?this.data.join("\n"):void 0}get elapsedTime(){return Date.now()-this.startTime}log(...e){this._logger.log("info",Kt(...e),this.labels),this.emit("logged",{level:"info",message:Kt(...e)})}warn(...e){this._logger.log("warn",Kt(...e),this.labels),this.emit("logged",{level:"warn",message:Kt(...e)})}debug(...e){this._logger.log("debug",Kt(...e),this.labels),this.emit("logged",{level:"debug",message:Kt(...e)})}info(...e){this._logger.log("info",Kt(...e),this.labels),this.emit("logged",{level:"info",message:Kt(...e)})}verbose(...e){this._logger.log("verbose",Kt(...e),this.labels),this.emit("logged",{level:"verbose",message:Kt(...e)})}error(...e){const t="\nCall Stack:\n"+ot(10).join("\n");this._logger.log("error",Kt(...e),{...this.labels,stack:t}),this.emit("logged",{level:"error",message:Kt(...e)})}close(){this._logger.clear(),this._logger.close()}}s.format.printf((e=>`${e.timestamp} ${s.format.colorize().colorize(e.level,`${e.level}: ${e.message}`)}`));const zt=500;function Jt(e){const t=s.createLogger({format:s.format.combine(s.format((e=>"none"!=Le.LOG_LEVEL&&"none"!=jt()&&""!=jt()&&(e.message=function(e){if("PROD"!==Le.NODE_ENV)return e;if(e.length>500)return e;const t=["password","eyJ","token","email","secret","key","apikey","api_key","auth","credential"];for(const s of t){const t=new RegExp(`(${s})((?:[^\\n]{0,29}(?=\\n))|(?:[^\\n]{30}\\S*))`,"gmi");e=e.replace(t,"$1 [!! SmythOS::REDACTED_DATA !!] ")}return e}(e.message),e)))(),s.format.timestamp(),s.format.errors({stack:!0}),s.format.splat(),s.format.json()),transports:[new s.transports.Console({level:"error",format:s.format.combine(s.format.printf((e=>{let t=e.message;return t=t?.length>zt?t.substring(0,zt)+"...":t,`${e.level}:${e.module||""} ${t} ${e.stack||""}`}))),stderrLevels:["error"]}),new s.transports.Console({level:jt(),format:s.format.combine(Bt,s.format.printf((e=>{const t=e.module?s.format.colorize().colorize(e.level,` [${e.module}]`):"",n=s.format.colorize().colorize(e.level,`${e.level}${t}`);let a=e.message;return a=a?.length>zt?a.substring(0,zt)+"...":a,`${n} - ${a}`})))})]});return Array.isArray(e)&&t.add(new Ft({level:"debug",logs:e})),t}function Kt(...e){return e.map((e=>{if("object"==typeof e&&null!==e&&!(e instanceof Error))try{return JSON.stringify(e,null,2)}catch(t){return String(e)}return String(e)})).join(" ")}function Wt(e,t=!1){return function(e,t){const s=Jt(t);return s.defaultMeta=e,new Vt(s,t,e)}({module:e},t?[]:void 0)}const Qt=e=>{const t=Wt(`DummyConnector<${e}>`);return new Proxy({},{get:function(s,n,a){return"valid"!==n&&("function"==typeof s[n]?s[n]:function(...s){const a=s.length>0?s.map((e=>"object"==typeof e?JSON.stringify(e,null,0).slice(0,50)+"...":"string"==typeof e?`"${e.slice(0,50)}..."`:"number"==typeof e||"boolean"==typeof e||"function"==typeof e||"symbol"==typeof e?e.toString():void 0===e?"undefined":String(e))).join(", "):"(no arguments)";t.warn(`[!!] Unimplemented Connector tried to call: ${e}.${n.toString()}(${a})`),rt(t,3,1)})}})};var Ht=Object.defineProperty,Xt=(e,t,s)=>((e,t,s)=>t in e?Ht(e,t,{enumerable:!0,configurable:!0,writable:!0,value:s}):e[t]=s)(e,"symbol"!=typeof t?t+"":t,s);class Yt{constructor(e=36e5){Xt(this,"cache"),Xt(this,"expiryMap"),Xt(this,"timeouts"),Xt(this,"defaultTTL",36e5),this.defaultTTL=e,this.cache=new Map,this.expiryMap=new Map,this.timeouts=new Map}set(e,t,s=this.defaultTTL){this.cache.set(e,t);const n=Date.now()+s;this.expiryMap.set(e,n),this.clearTimeout(e);const a=setTimeout((()=>{this.delete(e)}),s);this.timeouts.set(e,a),a.unref()}updateTTL(e,t=this.defaultTTL){if(!this.has(e))return;const s=Date.now()+t;this.expiryMap.set(e,s),this.clearTimeout(e);const n=setTimeout((()=>{this.delete(e)}),t);this.timeouts.set(e,n),n.unref()}get(e,t){if(!this.has(e))return;const s=this.cache.get(e);return void 0!==s?(this.updateTTL(e,t),s):void 0}has(e){if(!this.cache.has(e))return!1;const t=this.expiryMap.get(e);return!(t&&Date.now()>t)||(this.delete(e),!1)}delete(e){return this.clearTimeout(e),this.expiryMap.delete(e),this.cache.delete(e)}clear(){for(const e of this.cache.keys())this.clearTimeout(e);this.cache.clear(),this.expiryMap.clear(),this.timeouts.clear()}clearTimeout(e){const t=this.timeouts.get(e);t&&(clearTimeout(t),this.timeouts.delete(e))}}const Zt="default";var es=(e=>(e.None="none",e.Owner="owner",e.Read="read",e.Write="write",e))(es||{}),ts=(e=>(e.Agent="agent",e.User="user",e.Team="team",e.Public="public",e))(ts||{});const ss={user:"u",agent:"a",team:"t",public:"p"},ns={none:"n",owner:"o",read:"r",write:"w"},as=Object.fromEntries(Object.entries(ss).map((([e,t])=>[t,e]))),os=Object.fromEntries(Object.entries(ns).map((([e,t])=>[t,e])));var rs=(e=>(e.Granted="granted",e.Denied="denied",e))(rs||{});class is extends Error{constructor(e){super(e),this.name="ACLAccessDeniedError"}}var ls=Object.defineProperty,cs=(e,t,s)=>((e,t,s)=>t in e?ls(e,t,{enumerable:!0,configurable:!0,writable:!0,value:s}):e[t]=s)(e,"symbol"!=typeof t?t+"":t,s);class us{constructor(e){if(cs(this,"id"),cs(this,"resourceId"),cs(this,"level",[]),cs(this,"candidate"),e||(this.id="aclR:"+et()),["role","id"].every((t=>t in e)))this.id="aclR:"+et(),this.candidate=e;else{const t=e;this.id=t.id,this.level=t.level,this.candidate=t.candidate}this.resourceId=void 0}static clone(e){return new us(e)}setLevel(e){return this.level=Array.isArray(e)?e:[e],this}addLevel(e){return this.level=[...this.level,...Array.isArray(e)?e:[e]],this}resource(e){return this.resourceId=e,this}setCandidate(e){return this.candidate=e,this}}var ds=Object.defineProperty,ms=(e,t,s)=>((e,t,s)=>t in e?ds(e,t,{enumerable:!0,configurable:!0,writable:!0,value:s}):e[t]=s)(e,"symbol"!=typeof t?t+"":t,s);class ps{constructor(e){ms(this,"role"),ms(this,"id"),this.role=e?e.role:ts.Public,this.id=e?e.id:""}toString(){return`AC:R[${this.role}]:ID[${this.id}]`}get request(){return new us(this)}get readRequest(){return new us(this).setLevel(es.Read)}get writeRequest(){return new us(this).setLevel(es.Write)}get ownerRequest(){return new us(this).setLevel(es.Owner)}static clone(e){return new ps(e)}team(e){return this.role=ts.Team,this.id=e,this}static team(e){return new ps({role:ts.Team,id:e})}agent(e){return this.role=ts.Agent,this.id=e,this}static agent(e){return new ps({role:ts.Agent,id:e})}user(e){return this.role=ts.User,this.id=e,this}static user(e){return new ps({role:ts.User,id:e})}public(){return this.role=ts.Public,this.id=ts.Public,this}static public(){return new ps({role:ts.Public,id:""})}}var hs=Object.defineProperty,gs=(e,t,s)=>((e,t,s)=>t in e?hs(e,t,{enumerable:!0,configurable:!0,writable:!0,value:s}):e[t]=s)(e,"symbol"!=typeof t?t+"":t,s);const ys=Wt("Connector"),fs=class e{constructor(e){this._settings=e,gs(this,"name"),gs(this,"started",!1),gs(this,"_interactionHandler"),gs(this,"_readyPromise")}get settings(){return this._settings}get interactionHandler(){return this._interactionHandler}get valid(){return!0}setInteraction(e){this._interactionHandler=e}instance(t){const s=p("sha256").update(JSON.stringify(t||{})).digest("hex"),n=`${this.name}-${s}`;if(e.lCache.has(n))return e.lCache.get(n);const a=new(0,this.constructor)(t);return e.lCache.set(n,a,36e5),a}static isValid(e){return void 0!==e.name&&null!==e.name&&""!==e.name}async start(){ys.info(`Starting ${this.name} connector ...`),this.started=!0}async stop(){ys.info(`Stopping ${this.name} connector ...`)}ready(){return this._readyPromise||(this._readyPromise=new Promise((e=>{let t=6e4;if(this.started)e(!0);else{const s=setInterval((()=>{this.started&&(clearInterval(s),e(!0)),t-=100,t<=0&&(clearInterval(s),e(!1))}),100)}}))),this._readyPromise}requester(e){return null}user(e){return"string"==typeof e?this.requester(ps.user(e)):this.requester(e)}team(e){return this.requester(ps.team(e))}agent(e){return this.requester(ps.agent(e))}};gs(fs,"lCache",new Yt);let bs=fs;const ws=new d;var Is=Object.defineProperty,ks=(e,t,s)=>((e,t,s)=>t in e?Is(e,t,{enumerable:!0,configurable:!0,writable:!0,value:s}):e[t]=s)(e,"symbol"!=typeof t?t+"":t,s);const As=Wt("ConnectorService");let vs={},xs=!1;ws.on("SRE:Booted",(e=>{vs=e,xs=!0}));const _s=class e{static get ready(){return xs}static get service(){return vs}static register(t,s,n){"function"==typeof n&&function(e,t){if("function"!=typeof e||"function"!=typeof t)return!1;let s=Object.getPrototypeOf(e.prototype),n=10;for(;s&&n>=0;){if(s===t.prototype)return!0;s=Object.getPrototypeOf(s),n++}return!1}(n,bs)?(e.Connectors[t]||(e.Connectors[t]={}),e.Connectors[t][s]=n):As.error(`Invalid Connector ${t}:${s}`)}static init(t,s,n,a={},o=!1){if(e.ConnectorInstances[t]?.[s])throw new Error(`Connector ${t}:${s} already initialized`);const r=e.Connectors[t];if(!r)return;const i=r[s];if(i){const r=new i(a);r.interactionHandler&&r.interactionHandler(),r.start(),e.ConnectorInstances[t]||(e.ConnectorInstances[t]={});const l=n||s;return e.ConnectorInstances[t][l]=r,!e.ConnectorInstances[t].default&&o&&(e.ConnectorInstances[t].default=r),r}}static async _stop(){for(let t in e.ConnectorInstances){let s=Object.values(e.ConnectorInstances[t]);s=s.filter(((e,t,s)=>s.indexOf(e)===t));for(let e of s)e.stop()}}static getInstance(t,s="default"){const n=e.ConnectorInstances[t]?.[s||"default"];return n||(As.warn(`Connector ${t} not initialized returning DummyConnector`),rt(As,5),Qt(t))}static getStorageConnector(t){return e.getInstance(Xe.Storage,t)}static getCacheConnector(t){return e.getInstance(Xe.Cache,t)}static getVectorDBConnector(t){return e.getInstance(Xe.VectorDB,t)}static getNKVConnector(t){return e.getInstance(Xe.NKV,t)}static getLLMConnector(t){return e.getInstance(Xe.LLM,t)}static getVaultConnector(t){return e.getInstance(Xe.Vault,t)}static getManagedVaultConnector(t){return e.getInstance(Xe.ManagedVault,t)}static getAccountConnector(t){return e.getInstance(Xe.Account,t)}static getAgentDataConnector(t){return e.getInstance(Xe.AgentData,t)}static getCLIConnector(t){return e.getInstance(Xe.CLI,t)}static getLogConnector(t){return e.getInstance(Xe.Log,t)}static getComponentConnector(t){return e.getInstance(Xe.Component,t)}static getModelsProviderConnector(t){return e.getInstance(Xe.ModelsProvider,t)}static hasInstance(t,s="default"){const n=e.ConnectorInstances[t]?.[s];return n&&n.valid}static getRouterConnector(t){return e.getInstance(Xe.Router,t)}};ks(_s,"Connectors",{}),ks(_s,"ConnectorInstances",{});let Ts=_s;class Ls{init(){}constructor(){this.register()}}class Cs{static async getTeamKey(e,t){const s=Ts.getVaultConnector();return await s.requester(ps.team(t)).get(e)}static async getUserKey(e,t){const s=Ts.getVaultConnector(),n=Ts.getAccountConnector(),a=await n.getCandidateTeam(ps.user(t));return await s.requester(ps.team(a)).get(e)}static async getAgentKey(e,t){const s=Ts.getVaultConnector(),n=Ts.getAccountConnector(),a=await n.getCandidateTeam(ps.agent(t));return await s.requester(ps.team(a)).get(e)}}var Ss=Object.defineProperty,Ps=(e,t,s)=>((e,t,s)=>t in e?Ss(e,t,{enumerable:!0,configurable:!0,writable:!0,value:s}):e[t]=s)(e,"symbol"!=typeof t?t+"":t,s);const Ms={default:/{{(.*?)}}/g,doubleCurly:/{{(.*?)}}/g,singleCurly:/{(.*?)}/g,doubleCurlyForSingleMatch:/{{(.*?)}}/,templateVariables:/{{([A-Z]+):([\w\s]+):[\[{](.*?)[\]}]}}/gm,prefix:e=>new RegExp(`{{${e}(.*?)}}`,"g"),suffix:e=>new RegExp(`{{(.*?)${e}}}`,"g"),prefSuf:(e,t)=>new RegExp(`{{${e}(.*?)${t}}}`,"g"),fn:e=>new RegExp(`{{${e}\\((.*?)\\)}}`,"g")},Rs={vaultTeam:e=>async t=>{try{return await Cs.getTeamKey(t,e)}catch(e){return t}},componentTemplateVar:e=>async(t,s)=>{try{const n=s[2];if(!n)return t;const a=Object.values(e).find((e=>e.label==n));return a?`{{${a.id}}}`:t}catch(e){return t}}};class Os{constructor(e){this.templateString=e,Ps(this,"_current"),Ps(this,"_promiseQueue",[]),this._current=e}get result(){if(this._promiseQueue.length<=0)return this._current;throw new Error("This template object has async results, you should use .asyncResult with await instead of .result")}get asyncResult(){return new Promise((async(e,t)=>{await Promise.all(this._promiseQueue),e(this._current)}))}static create(e){return new Os(e)}parse(e,t=Ms.default){return"string"!=typeof this._current||"object"!=typeof e||(this._current=this._current.replace(t,((t,s)=>{const n=e?.[s]??t;return"object"==typeof n?JSON.stringify(n):qs(n)}))),this}parseRaw(e,t=Ms.doubleCurlyForSingleMatch){if("string"!=typeof this._current||"object"!=typeof e)return this;const s=this._current.match(t),n=s?s[1]:"";if(n){const t=e?.[n];this._current=t}return this}parseTeamKeysAsync(e){return this.process(Rs.vaultTeam(e),Ms.fn("KEY"))}parseComponentTemplateVarsAsync(e){return this.process(Rs.componentTemplateVar(e),Ms.templateVariables)}process(e,t=Ms.default){if("string"!=typeof this._current)return this;let s,n={};const a=[];for(;null!==(s=t.exec(this._current));){const t=s[1];n[t]=s[0];const o=e(t,s);o instanceof Promise?(o.then((e=>{if(void 0===e)return s?.[0];n[t]=e})),a.push(o)):n[t]=o}return a.length>0?(new Promise((async(e,s)=>{await Promise.all(a),this.parse(n,t),e(!0)})),this._promiseQueue.push(Promise.all(a))):this.parse(n,t),this}clean(e=Ms.default,t=""){return"string"!=typeof this._current||(this._current=this._current.replace(e,t)),this}}function Ds(e){return e?e.replace(/\\/g,"\\\\").replace(/"/g,'\\"').replace(/\n/g,"\\n").replace(/\r/g,"\\r").replace(/\t/g,"\\t"):e}function qs(e){return"string"!=typeof e?e:e.replace(/\\"/g,'"').replace(/"/g,'\\"')}function Es(e){return Os.create(e)}var Ns=Object.defineProperty,$s=(e,t,s)=>((e,t,s)=>t in e?Ns(e,t,{enumerable:!0,configurable:!0,writable:!0,value:s}):e[t]=s)(e,"symbol"!=typeof t?t+"":t,s);const Gs=Wt("AgentLogger.class");class js{constructor(e,t){this.agent=e,this.trId=t,$s(this,"_callId",""),$s(this,"queue",[]),$s(this,"_isProcessing",!1),$s(this,"_lastPush",0),$s(this,"storage"),this.storage=Ts.getStorageConnector()}async getCallId(){return this._callId}push(e){Ts.getLogConnector().valid&&(this.queue.push(e),this._lastPush=Date.now(),this.processQueue())}formatData(e,t=1e3){if(!e)return;let s="string"==typeof e?e:JSON.stringify(e);return s.length>t&&(s=s.substr(0,t)+"..."),s}getDataFilePath(e,t=1e3){if(!e)return;if(("string"==typeof e?e:JSON.stringify(e)).length>t){return`${function(){const e=new Date;return`${e.getFullYear()}-${String(e.getMonth()+1).padStart(2,"0")}-${String(e.getDate()).padStart(2,"0")}`}()}/${"L"+et().toUpperCase()}`}return null}prepareData(e){let t=e.sourceId,s=e.componentId,n=e.input?{preview:this.formatData(e.input),full:this.getDataFilePath(e.input),action:e.input.__action,status:e.input.__status}:void 0,a=e.output?{preview:this.formatData(e.output),full:this.getDataFilePath(e.output)}:void 0,o=e.domain,r=e.inputTimestamp,i=e.outputTimestamp,l=e.result?JSON.stringify({preview:this.formatData(e.result),full:this.getDataFilePath(e.result)}):void 0,c=e.sessionID;const u=this.agent.components[t],d=this.agent.components[s],m=u?.name,p=d?.name,h=u?.displayName||u?.name||t,y=d?.displayName||d?.name||s,f=e.step||this.agent?.agentRuntime?.curStep||"";m&&(t+=`@${m}@${f}`),p&&(s+=`@${p}@${f+1}`);const b=g("string"==typeof e.input?e.input:JSON.stringify(e.input)||""),w=g("string"==typeof e.output?e.output:JSON.stringify(e.output)||""),I=b.length||void 0,k=w.length||void 0,A=e.tags||"";let v=e.error||e?.output?.error||e?.output?._error||e?.result?.error||e?.result?.result?.error||e?.result?._error||e?.result?.result?._error;return{sourceId:t,componentId:s,domain:o,input:n,output:a,inputTimestamp:r,outputTimestamp:i,result:l,error:v?JSON.stringify({preview:this.formatData(v),full:this.getDataFilePath(v)}):void 0,sourceName:h,componentName:y,sessionID:c,inputTokens:I,outputTokens:k,tags:A,workflowID:e.workflowID,processID:e.processID,raw_input:e.input,raw_output:e.output,raw_result:e.result,raw_error:v}}async storeLogData(e,t){if(Ts.getLogConnector().valid&&e)try{const s="string"==typeof t?t:JSON.stringify(t),n=f.posix.join("teams",this.agent.teamId,`logs/${this.agent.id}/${e}`),a={teamid:this.agent.teamId,agentid:this.agent.id,ContentType:"text/plain"};await this.storage.requester(ps.agent(this.agent.id)).write(n,s,void 0,a)}catch(t){Gs.error("Error storing Log File : ",e,t)}}async processQueue(){const e=Ts.getLogConnector();if(!(!e.valid||this.queue.length<=0||this._isProcessing)){this._isProcessing=!0;try{if(this._callId)for(;this.queue.length>0;){const t=this.queue.shift(),s=this.prepareData(t);Object.keys(s).forEach((e=>{s[e]||delete s[e]}));const n=s.raw_input,a=s.raw_output,o=s.raw_result,r=s.raw_error;delete s.raw_input,delete s.raw_output,delete s.raw_result,delete s.raw_error;const i=s.result?JSON.parse(s.result):void 0,l=s.error?JSON.parse(s.error):void 0;await this.storeLogData(s?.input?.full,n),await this.storeLogData(s?.output?.full,a),await this.storeLogData(i?.full,o),await this.storeLogData(l?.full,r),await e.requester(ps.agent(this.agent.id)).log(s,this._callId)}else{const t=this.queue.shift(),s=this.prepareData(t),n=s.raw_input,a=s.raw_output,o=s.raw_result,r=s.raw_error;delete s.raw_input,delete s.raw_output,delete s.raw_result,delete s.raw_error;const i=s.result?JSON.parse(s.result):void 0,l=s.error?JSON.parse(s.error):void 0;await this.storeLogData(s?.input?.full,n),await this.storeLogData(s?.output?.full,a),await this.storeLogData(i?.full,o),await this.storeLogData(l?.full,r);const c=await e.requester(ps.agent(this.agent.id)).log(s);this._callId=c?.data?.log?.id}}catch(e){Gs.error("Error processing log queue:",e?.response?.data?.message||e)}this._isProcessing=!1,at(this.processQueue.bind(this),1e3,{leading:!0,maxWait:1e4}),await it(1e3),this.processQueue()}}canDelete(){return this.queue.length>0?(this.processQueue(),!1):0!=this._lastPush&&this._lastPush+36e5<Date.now()}}const Us=class e{constructor(e){this.agent=e}static async cleanup(){if(!Ts.getLogConnector().valid)return;const t=Object.keys(e.transactions);for(const s of t){e.transactions[s].canDelete()&&delete e.transactions[s]}}static log(e,t,s){if(Ts.getLogConnector().valid)return e.agentRuntime.debug&&(s.tags="DEBUG "),t||(t="log-"+et()),this.transactions[t]||(this.transactions[t]=new js(e,t)),this.transactions[t].push(s),at(this.cleanup.bind(this),1e3,{leading:!0,maxWait:1e4}),t}static async logTask(e,t){const s=Ts.getLogConnector();s.valid&&(e.usingTestDomain||await s.requester(ps.agent(e.id)).logTask(t,e.usingTestDomain),at(this.cleanup.bind(this),1e3,{leading:!0,maxWait:1e4}))}};$s(Us,"transactions",{}),$s(Us,"cleanupInterval");let Bs=Us;var Fs=Object.defineProperty,Vs=(e,t,s)=>((e,t,s)=>t in e?Fs(e,t,{enumerable:!0,configurable:!0,writable:!0,value:s}):e[t]=s)(e,"symbol"!=typeof t?t+"":t,s);const zs=Wt("RuntimeContext");class Js extends u{constructor(e){super(),this.runtime=e,Vs(this,"circularLimitReached",!1),Vs(this,"step",0),Vs(this,"sessionResult",!1),Vs(this,"sessionResults"),Vs(this,"components",{}),Vs(this,"checkRuntimeContext",null),Vs(this,"ctxFile",""),Vs(this,"_runtimeFileReady"),Vs(this,"_cacheConnector"),Vs(this,"_readyPromise");const t=e.agent;this._cacheConnector=Ts.getCacheConnector();const s=(e.processID?.split(":")[0]||"")==e.xDebugId?"":"."+et()+e.reqTag;this.ctxFile=`${e.xDebugId}${s}${t.jobID?`-job-${t.jobID}`:""}`,this._readyPromise=new Promise(((e,t)=>{let s=!1;this.on("ready",(()=>{s=!0,e(!0)}));setTimeout((()=>{s||t(new Error("Agent Runtime context initialization timeout"))}),3e5).unref()})),this.initRuntimeContext()}serialize(){return{step:this.step,sessionResult:this.sessionResult,sessionResults:this.sessionResults,components:this.components}}deserialize(e){this.step=e.step,this.sessionResult=e.sessionResult,this.sessionResults=e.sessionResults,this.components=e.components}reset(){this.step=0,this.sessionResult=!1,this.sessionResults=null,this.components={}}initRuntimeContext(){if(this._runtimeFileReady)return;const e=this.runtime.xDebugId?.startsWith("dbg-");zs.debug("Init ctxFile",this.ctxFile);const t=this.runtime.agent;let s=(t.agentRequest.method||"POST").toUpperCase();const n=t.endpoints?.[t.agentRequest.path]?.[s];let a={};this._cacheConnector.requester(ps.agent(this.runtime.agent.id)).get(this.ctxFile).then((async s=>{if(s)a=JSON.parse(s),a.step||(a.step=0);else{a=JSON.parse(JSON.stringify({components:t.components,connections:t.connections,timestamp:Date.now()})),a.step||(a.step=0);for(let t in a.components){a.components[t]={id:t,name:a.components[t].name,ctx:{active:!1,name:a.components[t].name}};const s=a.components[t];n&&null!=n.id&&s.id==n.id&&e&&(s.ctx.active=!0)}await this._cacheConnector.requester(ps.agent(this.runtime.agent.id)).set(this.ctxFile,JSON.stringify(a,null,2),null,null,21600)}this.deserialize(a),this._runtimeFileReady=!0,this.emit("ready")}))}async ready(){return!!this._runtimeFileReady||this._readyPromise}async sync(){if(!this.ctxFile)return;this.emit("syncing");if(this.runtime.sessionClosed){await this._cacheConnector.requester(ps.agent(this.runtime.agent.id)).exists(this.ctxFile)&&(this.runtime.debug?this._cacheConnector.requester(ps.agent(this.runtime.agent.id)).updateTTL(this.ctxFile,300):this._cacheConnector.requester(ps.agent(this.runtime.agent.id)).delete(this.ctxFile))}else{const e=this.serialize();e&&await this._cacheConnector.requester(ps.agent(this.runtime.agent.id)).set(this.ctxFile,JSON.stringify(e,null,2),null,null,21600)}}incStep(){this.step++,this.sync()}updateComponent(e,t){const s=this;if(!s)return;const n=s.components[e];n||(zs.log(">>>>>>> updateComponent Component debug data not found",e,n),zs.log(">>> ctxFile",this.ctxFile),zs.log(">>> ctxData",s)),n.ctx={...n.ctx,...t,step:this.step},this.sync()}resetComponent(e){const t=this,s=t.components[e];s||(zs.log(">>>>>>> resetComponent Component debug data not found",e,s),zs.log(">>> ctxFile",this.ctxFile),zs.log(">>> ctxData",t)),s.ctx.runtimeData={},s.ctx.active=!1,this.sync()}getComponentData(e){const t=this;if(!t)return null;const s=t.components[e];s||(zs.log(">>>>>>> getComponentData Component debug data not found",e,s),zs.log(">>> ctxFile",this.ctxFile),zs.log(">>> ctxData",t));return s.ctx}}var Ks=Object.defineProperty,Ws=(e,t,s)=>((e,t,s)=>t in e?Ks(e,t,{enumerable:!0,configurable:!0,writable:!0,value:s}):e[t]=s)(e,"symbol"!=typeof t?t+"":t,s);class Qs{constructor(e,t,s=3600){Ws(this,"_cacheConnector"),Ws(this,"_cacheId"),Ws(this,"_ttl"),Ws(this,"_candidate"),this._cacheConnector=Ts.getCacheConnector(),this._cacheId=t||"llm_cache_"+et(),this._ttl=s,this._candidate=e}get id(){return this._cacheId}async set(e,t){this._cacheConnector.valid&&await this._cacheConnector.requester(this._candidate).set(`${this._cacheId}:${e}`,"object"==typeof t?JSON.stringify(t):t,null,null,this._ttl)}async get(e,t="json"){if(!this._cacheConnector.valid)return;const s=await this._cacheConnector.requester(this._candidate).get(`${this._cacheId}:${e}`);let n;if("json"===t)try{n=JSON.parse(s)}catch(t){console.warn(`Invalid JSON data for key ${e}`),n=null}else n=s;return n}async delete(e){this._cacheConnector.valid&&await this._cacheConnector.requester(this._candidate).delete(`${this._cacheId}:${e}`)}async clear(){this._cacheConnector.valid&&await this._cacheConnector.requester(this._candidate).delete(this._cacheId)}}var Hs=Object.defineProperty,Xs=(e,t,s)=>((e,t,s)=>t in e?Hs(e,t,{enumerable:!0,configurable:!0,writable:!0,value:s}):e[t]=s)(e,"symbol"!=typeof t?t+"":t,s);const Ys=Wt("AgentRuntime"),Zs=new Proxy({},{get:function(e,t,s){return"function"==typeof e[t]?e[t]:function(){Ys.warn(`AgentRuntime Unavailable tried to call : ${t.toString()}`)}}}),en=class e{constructor(t){this.agent=t,Xs(this,"agentContext"),Xs(this,"llmCache"),Xs(this,"xDebugRun",""),Xs(this,"xDebugInject",""),Xs(this,"xDebugRead",""),Xs(this,"xDebugStop",""),Xs(this,"xDebugPendingInject",null),Xs(this,"xMockDataInject",null),Xs(this,"xDebugId",""),Xs(this,"xDebugCmd",""),Xs(this,"_debugActive",!1),Xs(this,"_runtimeFileReady",!1),Xs(this,"sessionClosed",!1),Xs(this,"reqTagOwner",!1),Xs(this,"reqTag"),Xs(this,"processID"),Xs(this,"workflowReqId"),Xs(this,"alwaysActiveComponents",{}),Xs(this,"exclusiveComponents",{}),Xs(this,"checkRuntimeContext",null),this.reqTag=t.agentRequest.header("X-REQUEST-TAG");const s=!!this.reqTag;this.reqTag?(this.xDebugStop=void 0,this.xDebugRun=void 0,this.xDebugInject=void 0,this.xDebugRead=void 0):(this.xDebugStop=t.agentRequest.header("X-DEBUG-STOP"),this.xDebugRun=t.agentRequest.header("X-DEBUG-RUN"),this.xDebugInject=t.agentRequest.header("X-DEBUG-INJ"),this.xDebugRead=t.agentRequest.header("X-DEBUG-READ"),this.reqTag="xTAG-"+et(),this.reqTagOwner=!0),this.xDebugId=this.xDebugStop||this.xDebugRun||this.xDebugRead,!this.xDebugId&&t.agentRequest.body&&(null!=this.xDebugInject&&null!=this.xDebugInject?(this.xDebugPendingInject=t.agentRequest.body,this.xDebugRun=this.xDebugInject||"inj-"+et()):""==this.xDebugRun&&(this.xDebugRun="dbg-"+et()),this.xDebugId=this.xDebugRun),void 0!==t.agentRequest.header("X-MOCK-DATA-INJ")&&(this.xMockDataInject=t.agentRequest.body),this.processID=this.xDebugId,this.xDebugId||(this.xDebugId=t.sessionId,this.processID=this.reqTag),s&&(this.processID+=`:${Math.floor(1e3+9e3*Math.random())}`),this.workflowReqId=this.xDebugRun||this.xDebugStop||this.reqTag,e.tagsData[this.reqTag]||(e.tagsData[this.reqTag]={}),e.processResults[this.processID]||(e.processResults[this.processID]={timestamp:Date.now(),errorResults:[],sessionResults:[]}),this.agentContext=new Js(this),this.agentContext.on("ready",(()=>{this.alwaysActiveComponents={},this.exclusiveComponents={};for(let e of this.agent.data.components){const t=this.agent.ComponentInstances[e.name];if(t){if(t.alwaysActive){this.alwaysActiveComponents[e.id]=t,this.updateComponent(e.id,{active:!0,alwaysActive:!0});const s={...this.getRuntimeData(e.id)};this.saveRuntimeComponentData(e.id,s)}if(t.exclusive){this.exclusiveComponents[e.id]=t,this.updateComponent(e.id,{exclusive:!0});const s={...this.getRuntimeData(e.id)};this.saveRuntimeComponentData(e.id,s)}}else Ys.warn(`Component ${e.name} Exists in agent but has no implementation`)}})),this._debugActive=this.xDebugId!=t.sessionId;const n=t.agentRequest.header("X-CACHE-ID")||"";this.llmCache=new Qs(ps.agent(this.agent.id),n)}get circularLimitReached(){return this.agentContext?.circularLimitReached||!1}set circularLimitReached(e){this.agentContext&&(this.agentContext.circularLimitReached=e)}get debug(){return this._debugActive}get curStep(){return this.agentContext?.step||0}async ready(){return this.agentContext.ready()}destroy(){this.sessionClosed=!0,this.sync()}incTag(t){e.tagsData[this.reqTag][t]||(e.tagsData[this.reqTag][t]=0),e.tagsData[this.reqTag][t]++}async sync(){(this.reqTagOwner&&this.sessionClosed||this.circularLimitReached)&&(Ys.log(">>>>>>>>>>>> deleting tagsData",this.reqTag),delete e.tagsData[this.reqTag]),this.agentContext.sync()}getWaitingComponents(){const e=this.agentContext;return Object.values(e?.components||[]).filter((e=>1==e?.ctx?.active)).filter((e=>e?.ctx?.status&&void 0!==typeof e?.ctx?.output))}getExclusiveActiveComponents(){const e=this.agentContext;return Object.values(e?.components||[]).filter((e=>1==e?.ctx?.active)).filter((e=>1==e?.ctx?.exclusive))}readState(e,t=!1){if(!this._debugActive||!e)return null;const s=this,n=this.agent,a=s.agentContext,o=s.xDebugPendingInject||Object.values(a?.components||[]);let r;r=o.filter((e=>1==e?.ctx?.active&&1==e?.ctx?.exclusive)),r&&0!=r.length||(r=o.filter((e=>1==e?.ctx?.active||!e?.ctx?.output?._error&&Array.isArray(e?.ctx?._job_components)&&e?.ctx?._job_components.length>0))),o.filter((e=>1==e?.ctx?.active&&e?.ctx?.status&&void 0!==typeof e?.ctx?.output)),o.filter((e=>1==e?.ctx?.active&&!e?.ctx?.status));let i={};for(let e of o)i[e.id]=e.ctx;let l=e;r&&0!=r.length||(l=null,s.sessionClosed=!0);const c=Object.values(a?.components||[]).filter((e=>1==e?.ctx?.active&&!e?.ctx?.alwaysActive)),u=Object.values(a?.components||[]).filter((e=>!e?.ctx?.output?._error&&Array.isArray(e?.ctx?._job_components)&&e?.ctx?._job_components.length>0));if(0==c.length&&0==u.length&&(s.sessionClosed=!0),s.circularLimitReached){const e=`Circular Calls Limit Reached on ${s.checkCircularLimit()}. Current agent circular limit is ${n.circularLimit}`;return s.sessionClosed=!0,{state:i,dbgSession:l,sessionClosed:s.sessionClosed,error:e}}const d=this.curStep>=1?this.curStep-1:0;if(t){const e={};for(let t in i){const s=i[t];s.step>=d&&(e[t]=s)}i=e}return{state:i,dbgSession:l,sessionClosed:s.sessionClosed,step:d}}async runCycle(){Ys.debug(`runCycle agentId=${this.agent.id} wfReqId=${this.workflowReqId} reqTag=${this.reqTag} session=${this.xDebugRun} cycleId=${this.processID}`);const t=this,s=this.agent,n=t.agentContext,a=t.xDebugPendingInject||Object.values(n?.components||[]);let o;o=a.filter((e=>1==e?.ctx?.active&&1==e?.ctx?.exclusive)),o&&0!=o.length||(o=a.filter((e=>1==e?.ctx?.active||!e?.ctx?.output?._error&&Array.isArray(e?.ctx?._job_components)&&e?.ctx?._job_components.length>0)));const r=a.filter((e=>1==e?.ctx?.active&&e?.ctx?.status&&void 0!==typeof e?.ctx?.output)),i=a.filter((e=>1==e?.ctx?.active&&!e?.ctx?.status||!e?.ctx?.output?._error&&Array.isArray(e?.ctx?._job_components)&&e?.ctx?._job_components.length>0));let l;if(o&&0!=o.length||(t.sessionClosed=!0,l={state:{sessionClosed:!0},dbgSession:null,expiredDbgSession:t.xDebugId,sessionClosed:!0}),!l&&o.length==r.length&&n.sessionResult&&(t.sessionClosed=!0,l={state:{sessionClosed:!0},dbgSession:null,expiredDbgSession:t.xDebugId,sessionClosed:!0}),!l&&i.length>0){const e=[];for(let n of i){const a=t.xDebugPendingInject?n.ctx.input:void 0;e.push(s.callComponent(n.ctx.sourceId,n.id,a))}const o=await Promise.all(e),r=1==o.length?o[0]:o;t.xDebugPendingInject=null;const c=Object.values(n?.components||[]).filter((e=>1==e?.ctx?.active)),u=Object.values(n?.components||[]).filter((e=>!e?.ctx?.output?._error&&Array.isArray(e?.ctx?._job_components)&&e?.ctx?._job_components.length>0));a.filter((e=>e?.ctx?.status&&void 0!==typeof e?.ctx?.output)).length==c.length&&(n.sessionResult=!0);let d=o.flat().filter((e=>e.id&&e.result&&!e.result._missing_inputs&&!s.connections.find((t=>t.sourceId==e.id)))),m=o.flat().filter((e=>e.id&&(e.error||e.result?._error)));m=m.filter((e=>!n?.components?.[e.id]?.ctx?.runtimeData?._ChildLoopData)),n.sessionResult&&0==d.length&&t.sessionClosed&&(d=m),n.sessionResults=d,l={state:r,dbgSession:t.xDebugRun,sessionResult:t.agentContext.sessionResult,sessionResults:t.agentContext.sessionResults,errorResults:m,sessionClosed:0==c.length&&0==u.length}}else t.sessionClosed=!0,l={state:{sessionClosed:!0},dbgSession:null,expiredDbgSession:t.xDebugId,sessionClosed:!0};if(this.checkCircularLimit(),l.sessionResults&&e.processResults[this.processID].sessionResults.push(l.sessionResults),l.errorResults&&e.processResults[this.processID].errorResults.push(l.errorResults),l?.sessionClosed||this.circularLimitReached){const e=this.processResults();l.finalResult=e,t.sessionClosed=!0}return this.incStep(),this.sync(),l}processResults(){let t={error:"Error processing results"};const s=e.processResults[this.processID].sessionResults,n=e.processResults[this.processID].errorResults;if(this.circularLimitReached){t={error:`Circular Calls Limit Reached on ${this.circularLimitReached}. Current circular limit is ${this.agent.circularLimit}`}}else{let e=[s,n].flat(1/0);e&&0!=e.length||(e=n.flat(1/0));t=e.reduce(((e,t)=>(e.seen[t.id]||(e.result.push(t),e.seen[t.id]=!0),e)),{seen:{},result:[]}).result.filter((e=>!e.result?._exclude))}return delete e.processResults[this.processID],this.sync(),t}checkCircularLimit(){if(this.circularLimitReached)return this.agentContext.circularLimitReached;for(let t in e.tagsData[this.reqTag])if(e.tagsData[this.reqTag][t]>this.agent.circularLimit)return this.sessionClosed=!0,this.agentContext.circularLimitReached=t,t;return!1}async injectDebugOutput(e){let t={};if(this.xDebugPendingInject?t=this.xDebugPendingInject?.find((t=>t.id==e)):this.xMockDataInject&&(t=this.xMockDataInject?.find((t=>t.id==e))),t?.ctx?.output){let e=!0;for(let s in t.ctx.output)if(""!=t.ctx.output[s]){e=!1;break}return e?null:t.ctx.output}}getRuntimeData(e){const t=this.getComponentData(e);if(!t)return{};return t.runtimeData||{}}updateRuntimeData(e,t){const s=this.getComponentData(e);s&&(s.runtimeData={...s.runtimeData,...t},this.sync())}saveRuntimeComponentData(e,t){this.updateComponent(e,{runtimeData:t})}incStep(){this.agentContext.incStep()}updateComponent(e,t){this.agentContext.updateComponent(e,t)}resetComponent(e){this.agentContext.resetComponent(e)}getComponentData(e){return this.agentContext.getComponentData(e)}};Xs(en,"processResults",{}),Xs(en,"tagsData",{}),Xs(en,"dummy",Zs);let tn=en;const sn={mem:function(){const e=b.totalmem(),t=b.freemem(),s=e-t;return{totalMemory:(e/1024**3).toFixed(2)+" GB",freeMemory:(t/1024**3).toFixed(2)+" GB",usedMemory:(s/1024**3).toFixed(2)+" GB",memoryUsagePercentage:(s/e*100).toFixed(2)}}(),cpu:function(){const e=b.cpus();let t=0,s=0,n=0,a=0,o=0,r=0;for(let r of e)t+=r.times.user,s+=r.times.nice,n+=r.times.sys,a+=r.times.idle,o+=r.times.irq;return r=t+s+n+a+o,{user:t/r*100,sys:n/r*100,idle:a/r*100,load:100-a/r*100}}()};var nn=Object.defineProperty,an=(e,t,s)=>((e,t,s)=>t in e?nn(e,t,{enumerable:!0,configurable:!0,writable:!0,value:s}):e[t]=s)(e,t+"",s);class on{constructor(e){this.agent=e,an(this,"connections",new Map)}add(e,t){this.connections.set(t,e)}[Symbol.iterator](){return this.connections.entries()}async send(e,t){if(!e||!t)return;const s=`event: ${e}\ndata: ${"string"==typeof t?t:JSON.stringify(t)}\n\n`;for(const[e,t]of this.connections.entries())try{t&&!t.finished?t.write(s):this.connections.delete(e)}catch(t){console.error(`Error sending SSE to connection ${e}:`,t),this.connections.delete(e)}}remove(e){const t=this.connections.get(e);if(t){try{t&&!t.finished&&t.end()}catch(t){console.error(`Error closing connection ${e}:`,t)}return this.connections.delete(e)}return!1}async close(){for(const[e,t]of this.connections.entries())try{t&&!t.finished&&(t.end(),console.log("Delibertly shutting down sse connection with id: ",e))}catch(t){console.error(`Error closing connection ${e}:`,t)}this.connections.clear()}getConnectionCount(){return this.connections.size}}var rn=Object.defineProperty,ln=(e,t,s)=>((e,t,s)=>t in e?rn(e,t,{enumerable:!0,configurable:!0,writable:!0,value:s}):e[t]=s)(e,"symbol"!=typeof t?t+"":t,s);const cn=Wt("Agent");class un{constructor(e,t,s,n){this.id=e,this.agentSettings=s,ln(this,"name"),ln(this,"data"),ln(this,"teamId"),ln(this,"components"),ln(this,"connections"),ln(this,"endpoints",{}),ln(this,"sessionId"),ln(this,"sessionTag",""),ln(this,"callerSessionId"),ln(this,"apiBasePath","/api"),ln(this,"agentRuntime"),ln(this,"usingTestDomain",!1),ln(this,"domain",""),ln(this,"debugSessionEnabled",!1),ln(this,"circularLimit",100),ln(this,"version",""),ln(this,"agentVariables",{}),ln(this,"_kill",!1),ln(this,"async",!1),ln(this,"jobID",""),ln(this,"planInfo",{}),ln(this,"callback"),ln(this,"agentRequest"),ln(this,"sse"),ln(this,"modelsProvider"),ln(this,"_componentInstance",{}),ln(this,"_componentInstancesLoader",new nt((()=>{})));const a="string"==typeof t?JSON.parse(t):t;this.data=a.connections&&a.components?a:a.data,this.data||(this.data={name:"",connections:[],components:[]}),this.name=this.data.name,this.version=this.data.agentVersion||"",this.teamId=this.data.teamId,this.connections=this.data.connections,this.debugSessionEnabled=this.data.debugSessionEnabled,this.usingTestDomain=this.data.usingTestDomain,this.agentVariables=this.data.variables||{};const o=this.data.components.filter((e=>"APIEndpoint"==e.name));for(let e of o){let t=e.data.method||"POST";t=t.toUpperCase(),this.endpoints[`${this.apiBasePath}/${e.data.endpoint}`]||(this.endpoints[`${this.apiBasePath}/${e.data.endpoint}`]={}),this.endpoints[`${this.apiBasePath}/${e.data.endpoint}`][t]=e}this.components={};for(let e of this.data.components)this.components[e.id]=e;for(let e of this.data.connections){const t=this.components[e.sourceId],s=this.components[e.targetId],n="number"==typeof e.sourceIndex?e.sourceIndex:t.outputs.findIndex((t=>t.name==e.sourceIndex)),a="number"==typeof e.targetIndex?e.targetIndex:s.inputs.findIndex((t=>t.name==e.targetIndex));e.sourceIndex=n,e.targetIndex=a;const o=t.outputs[n];o.index=n;const r=s.inputs[a];r.index=a,o.next||(o.next=[]),o.next.push(s.id),r.prev||(r.prev=[]),r.prev.push(t.id)}this.tagAsyncComponents(),n&&this.setRequest(n),this.sse=new on(this);try{Ts.getComponentConnector().requester(ps.agent(e)).getAll().then((e=>{this._componentInstance={...this._componentInstance,...e},this._componentInstancesLoader.resolve(!0)}))}catch(e){cn.warn("Could not load custom components"),this._componentInstancesLoader.reject("Could not load custom components")}const r=Ts.getModelsProviderConnector();r.valid&&(this.modelsProvider=r.agent(e))}get ComponentInstances(){return this._componentInstance}addSSE(e,t){if(e instanceof on)for(const[t,s]of e)this.sse.add(s,t);else{const s=t||Math.random().toString(36).substring(2,15);this.sse.add(e,s)}}setRequest(e){if(this.agentRequest)return;this.agentRequest=e,this.agentRequest=e;const t=function(){const e=new Date;return`${e.getFullYear()}-${String(e.getMonth()+1).padStart(2,"0")}-${String(e.getDate()).padStart(2,"0")}-${String(e.getHours()).padStart(2,"0")}-${String(e.getMinutes()).padStart(2,"0")}-${String(e.getSeconds()).padStart(2,"0")}`}();this.sessionId="rt-"+(this.agentRequest.sessionID||t+"."+et());const s=this?.agentRequest?.headers["x-session-tag"];s&&(this.sessionTag+=this.sessionTag?`,${s}`:s);var n=new RegExp(`^/v[0-9]+(.[0-9]+)?${this.apiBasePath}/(.*)`);this.agentRequest?.path?.startsWith(`${this.apiBasePath}/`)||this.agentRequest?.path?.match(n)?(this.agentRuntime=new tn(this),this.callerSessionId=this?.agentRequest?.headers["x-caller-session-id"]?.substring(0,256)||this.agentRuntime.workflowReqId||this.sessionId):this.agentRuntime=tn.dummy}setCallback(e){this.callback=e}kill(){this._kill=!0}isKilled(){return this._kill}async parseVariables(){if("object"==typeof this.agentVariables)for(let e in this.agentVariables){const t=this.agentVariables[e];t.startsWith("{{")&&t.endsWith("}}")&&(this.agentVariables[e]=await Es(t).parseTeamKeysAsync(this.teamId).asyncResult)}}async process(e,t){let s;await this.agentRuntime.ready();const n="e-"+et(),a=Date.now();this.sse.send("agent",{eventId:n,action:"callStart",endpointPath:e,id:this.id,name:this.name,startTime:a,input:t});const o=Bs.log(this,null,{sourceId:e,componentId:"AGENT",domain:this.domain,input:t,workflowID:this.agentRuntime.workflowReqId,processID:this.agentRuntime.processID,inputTimestamp:(new Date).toISOString(),sessionID:this.callerSessionId,tags:this.sessionTag}),r=this.agentRequest.method.toUpperCase(),i=this.endpoints[e]?.[r];if(this.agentRuntime.debug){if(!i&&"/api/"!=this.agentRequest.path)throw o&&Bs.log(this,o,{error:`Endpoint ${r} ${e} Not Found`}),new Error(`Endpoint ${r} ${e} Not Found`);let t;if(t||(t=await this.agentRuntime.runCycle()),t&&void 0!==t?.state)return this.agentRuntime.sync(),t?.finalResult&&(t.finalResult=await this.postProcess(t.finalResult).catch((e=>({error:e})))),t}if(!i){o&&Bs.log(this,o,{error:`Endpoint ${r} ${e} Not Found`});const s=Date.now(),i=s-a;throw this.sse.send("agent",{eventId:n,action:"callStop",endpointPath:e,id:this.id,name:this.name,startTime:a,endTime:s,duration:i,input:t,error:`Endpoint ${r} ${e} Not Found`}),new Error(`Endpoint ${r} ${e} Not Found`)}let l;this.agentRuntime.updateComponent(i.id,{active:!0,input:t,sourceId:null});do{l=await this.agentRuntime.runCycle();const e=Math.floor(sn.cpu.load*this.planInfo?.maxLatency||0);await it(30+e)}while(!l?.finalResult&&!this._kill);if(this._kill){const s=Date.now(),o=s-a;return this.sse.send("agent",{eventId:n,action:"callStop",endpointPath:e,id:this.id,name:this.name,startTime:a,endTime:s,duration:o,input:t,error:"Agent killed"}),cn.warn(`Agent ${this.id} was killed`),{error:"Agent killed"}}if(s=await this.postProcess(l?.finalResult).catch((e=>({error:e}))),this.agentRuntime.circularLimitReached){const o=this.agentRuntime.circularLimitReached;s={error:`Circular Calls Limit Reached on ${o}. Current circular limit is ${this.circularLimit}`};const r=Date.now(),i=r-a;throw this.sse.send("agent",{eventId:n,action:"callStop",endpointPath:e,id:this.id,name:this.name,startTime:a,endTime:r,duration:i,input:t,error:s.error}),new Error(`Circular Calls Limit Reached on ${o}. Current circular limit is ${this.circularLimit}`)}o&&Bs.log(this,o,{outputTimestamp:""+Date.now(),result:s}),this.updateTasksCount();const c=Date.now(),u=c-a;return this.sse.send("agent",{eventId:n,action:"callStop",endpointPath:e,id:this.id,name:this.name,startTime:a,endTime:c,duration:u,input:t,result:s}),this.agentRuntime.debug?{state:s,dbgSession:null,sessionClosed:!1}:s}async updateTasksCount(){}async postProcess(e){Array.isArray(e)&&(e=e.flat(1/0)),Array.isArray(e)||(e=[e]),e=e.filter((e=>!(e?.result?._error&&e?.result?._error_handled)));for(let t=0;t<e.length;t++){const s=e[t];if(!s)continue;s._debug&&delete s._debug,s._debug_time&&delete s._debug_time;const n=this.components[s.id];if(!n)continue;const a=this._componentInstance[n.name];if(!a)continue;const o=await a.postProcess(s,n,this).catch((e=>({error:e})));e[t]=o}return 1==e.length&&(e=e[0]),e}hasLoopAncestor(e){if(!e.prev)return!1;for(let t of e.prev){const e=this.components[t];if("ForEach"==e.name)return!0;for(let t of e.inputs)if(this.hasLoopAncestor(t))return!0}}clearChildLoopRuntimeComponentData(e){const t=this.components[e],s=this.agentRuntime.getRuntimeData(e);if(s._ChildLoopData)for(let e of t.inputs)this.hasLoopAncestor(e)&&delete s.input[e.name]}getComponentMissingInputs(e,t){let s=[];const n=this.components[e];if(this._componentInstance[n.name].alwaysActive)return s;const a=this.findReadablePredecessors(e),o={};for(let e of a)e&&(o[e.input.name]=e);const r=this.connections.filter((t=>t.targetId==e)).map((e=>e.targetIndex)),i=n.inputs.filter((e=>r.includes(e.index)));if(Array.isArray(i)&&i.length>0)for(let e of i)if(!e.optional){if(o[e.name]){const t=o[e.name],s=t.component,n=this.components[t.id];if(s.hasOutput(t.output.name,n,this))continue}void 0===t[e.name]&&s.push(e.name)}return s}findReadablePredecessors(e){const t=this.components[e];this._componentInstance[t.name];return this.connections.filter((t=>t.targetId==e)).map((e=>{const s=this.components[e.sourceId],n=this._componentInstance[s.name],a=s.outputs[e.sourceIndex],o=t.inputs[e.targetIndex];return n.hasReadOutput?{output:a,input:o,component:n,id:e.sourceId}:null})).filter((e=>null!=e))}updateStep(e,t){const s=this.agentRuntime,n=s.curStep;s.getComponentData(t),s.updateComponent(t,{step:n})}async callComponent(e,t,s){const n=Date.now(),a=this.agentRuntime,o=this.components[t],r=this._componentInstance[o.name],i="e-"+et();if(this.sse.send("component",{eventId:i,action:"callStart",sourceId:e,id:t,name:o.displayName,title:o.title,startTime:n,input:s}),this._kill){cn.warn(`Agent ${this.id} was killed, skipping component ${o.name}`);const s={id:o.id,name:o.displayName,result:null,error:"Agent killed"},a=Date.now(),r=a-n;return this.sse.send("component",{eventId:i,action:"callStop",sourceId:e,id:t,name:o.displayName,title:o.title,startTime:n,endTime:a,duration:r,output:s}),s}if(!r){const s=Date.now(),a=s-n;throw this.sse.send("component",{eventId:i,action:"callStop",sourceId:e,id:t,name:o.displayName,title:o.title,startTime:n,endTime:s,duration:a,output:{error:"Component not found"}}),new Error(`Component ${o.name} not found`)}if(this.agentRuntime.incTag(t),this.agentRuntime.checkCircularLimit(),this.agentRuntime.circularLimitReached){const s=Date.now(),a=s-n;return this.sse.send("component",{eventId:i,action:"callStop",sourceId:e,id:t,name:o.displayName,title:o.title,startTime:n,endTime:s,duration:a,output:{error:"Circular Calls Reached"}}),{error:"Circular Calls Reached"}}const l=a.getComponentData(t);l?.output?._missing_inputs&&a.updateComponent(t,{output:{}});const c=this.prepareComponentInput(t,s),u=Bs.log(this,null,{sourceId:e||"AGENT",componentId:t,domain:this.domain,workflowID:this.agentRuntime.workflowReqId,processID:this.agentRuntime.processID,input:"APIEndpoint"==o.name?"GET"==this.agentRequest.method?this.agentRequest.query:this.agentRequest.body:c,inputTimestamp:(new Date).toISOString(),sessionID:this.callerSessionId,tags:this.sessionTag});let d=null,m=[];if(this.updateStep(e,t),a.debug&&(d=await a.injectDebugOutput(t)),!d){if(m=this.getComponentMissingInputs(t,c),m.length>0){a.updateComponent(t,{active:!0,status:"waiting"});const e=this.connections.filter((e=>e.sourceId==t))||[];for(let t of e){if("_error"==o.outputs[t.sourceIndex].name)break}d={_error:"Missing inputs : "+JSON.stringify(m),_missing_inputs:m}}if(!d){const e=await r.validateConfig(o);if(e._error)d=e;else try{await this.parseVariables(),d=await r.process({...this.agentVariables,...c},{...o,eventId:i},this),cn.log(d)}catch(e){cn.error("Error on component process: ",{componentId:t,name:o.name,input:c},e),d=e?.message?{Response:void 0,_error:e.message,_debug:e.message}:{Response:void 0,_error:e.toString(),_debug:e.toString()}}}}const p=this.agentRuntime.getRuntimeData(t);if(a.updateComponent(t,{output:d}),d._in_progress&&a.updateComponent(t,{active:!0,status:"in_progress"}),(d.error||d._error)&&(p?._ChildLoopData?._in_progress||this.agentRuntime.resetComponent(t),u&&Bs.log(this,u,{error:d.error||d._error}),d.error)){const s=Date.now(),a=s-n;return this.sse.send("component",{eventId:i,action:"callStop",sourceId:e,id:t,name:o.displayName,title:o.title,startTime:n,endTime:s,duration:a,output:{error:d.error||d._error}}),[{id:o.id,name:o.displayName,result:null,error:d.error||d._error,_debug:d.error||d._error}]}let h=[];if(d&&!d._missing_inputs){if(Bs.logTask(this,1),h=await this.callNextComponents(t,d).catch((e=>({error:e,id:o.id,name:o.displayName}))),p._LoopData&&d._in_progress&&null==p._LoopData.branches){const e=Array.isArray(h)?h.length:1;d._in_progress&&(p._LoopData.branches=e,a.updateRuntimeData(t,{_LoopData:p._LoopData}))}if(h._is_leaf){delete h._is_leaf;const e=p._ChildLoopData;if(e&&e.parentId){const t=e.parentId,s=this.agentRuntime.getRuntimeData(t)._LoopData;if(s){s.result||(s.result=[]);let e=JSON.parse(JSON.stringify(h));h.result&&(h.result._exclude=!0),e=await r.postProcess(e,o,this),s.result.push(e),s.branches--,s.branches<=0&&a.updateComponent(t,{active:!0,status:""}),a.updateRuntimeData(t,{_LoopData:s})}}else{const e=this.agentRuntime.getRuntimeData(t)._LoopData;e&&1==e.loopIndex&&(e._in_progress=!1,d._in_progress=!1,a.updateComponent(t,{active:!0,status:""}),a.updateRuntimeData(t,{_LoopData:e}))}}}if(!d._missing_inputs&&!d._in_progress){p?._ChildLoopData?._in_progress&&p._ChildLoopData?.loopIndex<p._ChildLoopData?.loopLength?(this.clearChildLoopRuntimeComponentData(t),a.updateComponent(t,{active:!0,status:"waiting"})):this.agentRuntime.resetComponent(t)}Array.isArray(h)&&(h=h.flat(1/0).filter((e=>null!=e.result))),u&&Bs.log(this,u,{output:d,outputTimestamp:""+Date.now()});const g=Date.now(),y=g-n;return this.sse.send("component",{eventId:i,action:"callStop",sourceId:e,id:t,name:o.displayName,title:o.title,startTime:n,endTime:g,duration:y,output:d}),[h,{id:o.id,name:o.displayName,result:d}]}JSONExpression(e,t){const s=t.split(/\.|\[|\]\.|\]\[|\]/).filter(Boolean);let n=e;for(let e of s){if(null==n)return;n=n[e]}return n}async callNextComponents(e,t){const s=this.agentRuntime,n=this.components[e];this._componentInstance[n.name];let a=this.connections.filter((t=>t.sourceId==e)).map((e=>({...e,output:t,componentData:n})));const o=s.getWaitingComponents(),r=o.map((e=>e.id)),i=Object.keys(this.agentRuntime.alwaysActiveComponents),l=this.connections.filter((e=>i.includes(e.sourceId)&&r.includes(e.targetId))).map((e=>{const t={};o.find((t=>t.id==e.targetId));const s=this.components[e.sourceId],n=this._componentInstance[s.name],a=s.outputs[e.sourceIndex];return t[a.name]=n.readOutput(a.name,s,this),{...e,output:t,componentData:this.components[e.sourceId]}}));if(a=[...a,...l],!Array.isArray(a)||0==a.length)return{id:n.id,name:n.name,result:t,_is_leaf:!0};const c=a.reduce(((e,t)=>{let s=t.targetId;return e[s]||(e[s]=[]),e[s].push(t),e}),{}),u=[];for(let n in c){const a=this.components[n];if(!this.async&&a.async&&"Async"!==a.name)continue;this._componentInstance[a.name];const o=c[n];let r=!1;if(Array.isArray(o)&&o.length>0){const i={};for(let e of o){const t=e.output,s=e.componentData,n=s.outputs[e.sourceIndex],o=a.inputs[e.targetIndex],l=n.expression||n.name,c=l.split("."),u=s.outputs.find((e=>e.default));let d;if("_error"==n.name&&(r=!0),n.default?d=t[n.name]:u&&(d=t[u.name]?.[n.name]),void 0===d&&c.length>=1){let e=this.JSONExpression(t,l);void 0!==e&&(d=e)}if(void 0!==d){let e=dn(i[o.name],d).filter((e=>void 0!==e));i[o.name]=1===e.length?e[0]:e}}if(!i||"{}"==JSON.stringify(i))continue;const l=this.prepareComponentInput(n,i),c=this.components[n];r&&c&&(t._error_handled=!0);const d=this.getComponentMissingInputs(n,l).length>0?"waiting":void 0,m=this.agentRuntime.getRuntimeData(e);let p=m._LoopData;p&&p._in_progress||(p=m._ChildLoopData),s.updateComponent(n,{active:!0,input:i,sourceId:e,status:d}),s.updateRuntimeData(n,{_ChildLoopData:p,_LoopData:null}),u.push({id:n,name:c.name,inputs:i}),d&&Bs.log(this,null,{sourceId:e,componentId:n,step:this.agentRuntime.curStep+1,domain:this.domain,workflowID:this.agentRuntime.workflowReqId,processID:this.agentRuntime.processID,input:{__action:"status_update",__status:d,data:i},inputTimestamp:(new Date).toISOString(),sessionID:this.callerSessionId,tags:this.sessionTag})}}if(0==u.length)return{id:n.id,name:n.name,result:t,_is_leaf:!0};const d=await Promise.all(u);return 1==d.length?d[0]:d}prepareComponentInput(e,t){const s=this.agentRuntime.getRuntimeData(e),n=this.components[e],a=s?.input||{};let o={...a};if(t)for(let e in t){let s=t[e];o[e]=dn(a[e],s).filter((e=>void 0!==e)),1==o[e].length&&(o[e]=o[e][0])}const r=this.findReadablePredecessors(e);for(let e of r)if(e){const t=this.components[e.id],s=e.component.readOutput(e.output.name,t,this);s&&e.input?.name&&(o||(o={}),o[e.input.name]=s)}this.agentRuntime.updateRuntimeData(e,{input:o});for(let e of n.inputs)e.defaultVal&&void 0===o[e.name]&&(o[e.name]=Es(e.defaultVal).parse(this.agentVariables).result);return o}getConnectionSource(e){return this.components[e.sourceId].inputs.find((t=>t.index===e.sourceIndex))}getConnectionTarget(e){return this.components[e.targetId].inputs.find((t=>t.index===e.targetIndex))}recursiveTagAsyncComponents(e){const t=this;for(let s of e.outputs){if("Async"==e.name&&"JobID"===s.name)continue;const n=t.connections.filter((t=>t.sourceId===e.id&&t.sourceIndex===s.index));if(n)for(let e of n){const s=t.components[e.targetId];s&&(s.async=!0,this.recursiveTagAsyncComponents(s))}}}tagAsyncComponents(){const e=Object.values(this.components).filter((e=>"Async"===e.name));if(e&&0!=e.length)for(let t of e)t.async=!0,this.recursiveTagAsyncComponents(t)}}function dn(e,t){return void 0===e?[t]:(Array.isArray(e)||(e=[e]),[...e,t])}var mn=Object.defineProperty,pn=(e,t,s)=>((e,t,s)=>t in e?mn(e,t,{enumerable:!0,configurable:!0,writable:!0,value:s}):e[t]=s)(e,"symbol"!=typeof t?t+"":t,s);class hn{constructor(e){if(pn(this,"headers"),pn(this,"body"),pn(this,"query"),pn(this,"params"),pn(this,"method","GET"),pn(this,"path",""),pn(this,"sessionID",""),pn(this,"res",null),pn(this,"req",null),pn(this,"files",[]),pn(this,"_agent_authinfo"),!e)return;this.headers=JSON.parse(JSON.stringify(e.headers||{})),this.body=JSON.parse(JSON.stringify(e.body||e.data||{})),this.query=JSON.parse(JSON.stringify(e.query||{})),this.params=JSON.parse(JSON.stringify(e.params||{}));const t=Object.fromEntries(Object.entries(this.headers).map((([e,t])=>[e.toLowerCase(),t])));if(this.headers={...t,...this.headers},e?.url)try{const t=new URL(e.url);this.path=t.pathname,this.query={...this.query,...Object.fromEntries(t.searchParams)}}catch{}e?.path&&(this.path=e.path),this.method=e.method,this.sessionID=e.sessionID,this.files=e.files||[],this._agent_authinfo=e._agent_authinfo,this.req=e instanceof hn?e?.req:e,this.res=e?.res||null}header(e){return this.headers[e.toLowerCase()]}}var gn=Object.defineProperty,yn=(e,t,s)=>((e,t,s)=>t in e?gn(e,t,{enumerable:!0,configurable:!0,writable:!0,value:s}):e[t]=s)(e,"symbol"!=typeof t?t+"":t,s);Wt("EmbodimentSettings");class fn{constructor(e){yn(this,"_embodiments"),yn(this,"_ready",!1),this.init(e)}async init(e){const t=Ts.getAgentDataConnector();this._embodiments=await t.getAgentEmbodiments(e).catch((e=>[])),this._ready=!0}ready(e=1e4){return new Promise(((t,s)=>{const n=setInterval((()=>{this._ready&&(clearInterval(n),t(!0)),e-=100}),100);setTimeout((()=>{clearInterval(n),s(!1)}),e)}))}get(e,t){if(!this._embodiments)return;const s=this._embodiments.find((t=>t.type?.toLowerCase()===e.toLowerCase()));return t?s?.properties?.[t]:s?.properties}}var bn=Object.defineProperty,wn=(e,t,s)=>((e,t,s)=>t in e?bn(e,t,{enumerable:!0,configurable:!0,writable:!0,value:s}):e[t]=s)(e,"symbol"!=typeof t?t+"":t,s);Wt("AgentSettings");class In{constructor(e){wn(this,"_settings"),wn(this,"embodiments"),wn(this,"_ready",!1),e&&this.init(e)}async init(e){this.embodiments=new fn(e);const t=Ts.getAgentDataConnector();this._settings=await t.getAgentSettings(e).catch((e=>{}))||{},this._ready=!0}ready(e=1e4){return new Promise(((t,s)=>{const n=setInterval((()=>{this._ready&&(clearInterval(n),t(!0)),e-=100}),100);setTimeout((()=>{clearInterval(n),s(!1)}),e)}))}get(e){return this._settings?.[e]||""}set(e,t){this._settings[e]=t}has(e){return this._settings[e]}}var kn=Object.defineProperty,An=(e,t,s)=>((e,t,s)=>t in e?kn(e,t,{enumerable:!0,configurable:!0,writable:!0,value:s}):e[t]=s)(e,"symbol"!=typeof t?t+"":t,s);class vn{constructor(e,t){this.agentData=e,this.agentVersion=t,An(this,"agent"),An(this,"_loadPromise"),this.initAgent(e,t)}async initAgent(e,t){let s,n;if("object"==typeof e)s=e,s.components&&s.connections&&(s={data:s,version:"1.0"}),n=s.data.id||"tmp-"+et();else{const a=/^{.*}$/g,o=e.match(a)?.[0],r=/^[a-zA-Z0-9\-]+$/g;if(n=e.match(r)?.[0],n){const e=Ts.getAgentDataConnector();s=await e.getAgentData(n,t)}!s&&o&&(s=JSON.parse(o),n=s.id||"tmp-"+et(),s.components&&s.connections&&(s={data:s,version:"1.0"}))}const a=new In(n);this.agent=new un(n,s,a)}async ready(){return this._loadPromise?this._loadPromise:this._loadPromise=new Promise((e=>{let t=1e4;const s=setInterval((()=>{this.agent&&(clearInterval(s),e(!0)),t-=100,t<=0&&(clearInterval(s),e(!1))}),100)}))}static load(e,t){return new vn(e,t)}async run(e,t){if(await this.ready(),!this.agent)throw new Error("Failed to load agent");let s=this.parseReqConfig(e);this.agent.setRequest(s),"function"==typeof t&&this.agent.setCallback(t);const n=s.path.match(/(^\/v[0-9]+\.[0-9]+?)?(\/api\/(.+)?)/);if(!n||!n[2])return{status:404,data:{error:"Endpoint not found"}};const a=n[2],o="GET"==s.method?s.query:s.body;return{data:await this.agent.process(a,o).catch((e=>({error:e.message})))}}reset(){this.initAgent(this.agentData)}parseReqConfig(e){return e instanceof hn?e:Array.isArray(e)?this.parseCLI(e):new hn(e)}parseCLI(e){const t=Ts.getCLIConnector().parse(e,["endpoint","post","get","put","delete","patch","head","options","headers","session"]),s=["get","post","put","delete","patch","head","options"].find((e=>t[e])),n=new hn;switch(n.method=s?.toUpperCase()||"GET",n.body={},n.query={},s){case"get":case"delete":case"head":case"options":n.query=t[s];break;case"post":case"put":case"patch":n.body=t[s]}n.path=`/api/${t.endpoint}`,n.params=t.endpoint?.split("/"),n.headers=t.headers||{};for(let e in n.headers)n.headers[e.toLowerCase()]=n.headers[e],delete n.headers[e];if(n.sessionID=t.session||et(),n.files=[],n.body)for(let e in n.body){let t=n.body[e];const s=f.join(process.cwd(),t),a=f.basename(s);if(I.existsSync(s))try{const t=I.readFileSync(s),o=a.split(".").pop(),r={fieldname:e,originalname:a,buffer:t,mimetype:T.getType(o)||"application/octet-stream"};delete n.body[e],n.files.push(r),i.fileTypeFromBuffer(t).then((e=>{e&&(r.mimetype=e.mime)}))}catch(e){console.warn("Coud not read file",s,e.message)}}return n}async post(e,t,s){return this.run({method:"POST",path:e,body:t||{},headers:s})}async get(e,t,s){return this.run({method:"GET",path:e,query:t,headers:s})}async readDebugState(e,t){if(await this.ready(),!this.agent)throw new Error("Failed to load agent");let s=this.parseReqConfig(t);return this.agent.setRequest(s),await this.agent.agentRuntime.ready(),this.agent.agentRuntime.readState(e,!0)}}var xn=Object.defineProperty,_n=(e,t,s)=>((e,t,s)=>t in e?xn(e,t,{enumerable:!0,configurable:!0,writable:!0,value:s}):e[t]=s)(e,"symbol"!=typeof t?t+"":t,s);const Tn={none:e=>e,xxh3:e=>{const t=C.h64();return e?t.update(e.toString()).digest().toString(16):null}};class Ln{constructor(e){_n(this,"hashAlgorithm"),_n(this,"entries"),_n(this,"migrated"),"string"==typeof e?this.deserializeACL(e):(this.hashAlgorithm=e?.hashAlgorithm,this.entries=e?.entries?JSON.parse(JSON.stringify(e?.entries)):{},this.migrated=e?.migrated),this.hashAlgorithm||(this.hashAlgorithm="xxh3"),this.entries||(this.entries={})}get ACL(){return{hashAlgorithm:this.hashAlgorithm,entries:JSON.parse(JSON.stringify(this.entries)),migrated:this.migrated}}get serializedACL(){return this.serializeACL(this)}static from(e){return new Ln(e)}checkExactAccess(e){if(!this?.entries)return!1;const t=this?.entries[e.candidate.role];if(!t)return!1;let s=e.candidate.id;if(!Tn[this.hashAlgorithm])throw new Error(`Hash algorithm ${this.hashAlgorithm} not supported`);s=Tn[this.hashAlgorithm](s);const n=t[s];if(!n)return!1;return(Array.isArray(e.level)?e.level:[e.level]).every((e=>n.includes(e)))}addPublicAccess(e){if(this?.entries[ts.Public]||(this.entries[ts.Public]={}),!Tn[this.hashAlgorithm])throw new Error(`Hash algorithm ${this.hashAlgorithm} not supported`);const t=ts.Public,s=Tn[this.hashAlgorithm](t);this?.entries[ts.Public][s]||(this.entries[ts.Public][s]=[]);const n=this.entries[ts.Public][s];return this.entries[ts.Public][s]=[...n,...e],this}removePublicAccess(e){if(!this?.entries[ts.Public])return this;const t=ts.Public,s=Tn[this.hashAlgorithm](t),n=this[ts.Public][s];return this[ts.Public][s]=n.filter((t=>!e.includes(t))),this}addAccess(e,t,s){if(e===ts.Public)throw new Error("Adding public access using addAccess method is not allowed. Use addPublicAccess method instead.");const n=Array.isArray(s)?s:[s];if(this?.entries[e]||(this.entries[e]={}),!Tn[this.hashAlgorithm])throw new Error(`Hash algorithm ${this.hashAlgorithm} not supported`);const a=Tn[this.hashAlgorithm](t);if(!a)throw new Error(`Invalid ownerId: ${e}:${t}`);this?.entries[e][a]||(this.entries[e][a]=[]);const o=this.entries[e][a];return this.entries[e][a]=[...o,...n],this}static addAccess(e,t,s){return Ln.from().addAccess(e,t,s)}removeAccess(e,t,s){const n=Array.isArray(s)?s:[s];if(!this[e])return this;if(!this[e][t])return this;const a=this[e][t];return this[e][t]=a.filter((e=>!n.includes(e))),this}serializeACL(e){let t="";if(e.hashAlgorithm&&(t+=`h:${e.hashAlgorithm}|`),e.entries)for(const[s,n]of Object.entries(e.entries)){const e=ss[s],a=[];for(const[e,t]of Object.entries(n||{}))if(t){const s=t.map((e=>ns[e])).join("");a.push(`${e}/${s}`)}a.length>0&&(t+=`${e}:${a.join(",")}|`)}return t.endsWith("|")&&(t=t.slice(0,-1)),t}deserializeACL(e){const t=e.split("|");this.hashAlgorithm="",this.entries={};for(const e of t)if(e.startsWith("h:"))this.hashAlgorithm=e.substring(2);else{const[t,s]=e.split(":"),n=as[t];if(n){const e={},t=s.split(",");for(const s of t){const[t,n]=s.split("/"),a=n.split("").map((e=>os[e]));e[t]=a}this.entries[n]=e}}}}const Cn=Wt("SecureConnector");class Sn extends bs{async start(){Cn.info(`Starting ${this.name} connector ...`)}async stop(){Cn.info(`Stopping ${this.name} connector ...`)}async hasAccess(e){const t=await this.getResourceACL(e.resourceId,e.candidate).catch((t=>(Cn.error(`Error getting ACL for ${e.resourceId}: ${t}`),null)));if(!t)return!1;if(t.checkExactAccess(e))return!0;const s=us.clone(e).setLevel(es.Owner);if(t.checkExactAccess(s))return!0;const n=us.clone(e).setCandidate(ps.public());if(t.checkExactAccess(n))return!0;const a=Ts.getAccountConnector(),o=await a.getCandidateTeam(e.candidate),r=us.clone(e).setCandidate(ps.team(o));if(t.checkExactAccess(r))return!0;const i=us.clone(r).setLevel(es.Owner);return!!t.checkExactAccess(i)}async getAccessTicket(e,t){const s=us.clone(t).resource(e);return{request:t,access:await this.hasAccess(s)?rs.Granted:rs.Denied}}static AccessControl(e,t,s){const n=s.value;return s.value=async function(...e){const[t,s]=e;if(void 0!==s){if((await this.getAccessTicket(s,t)).access!==rs.Granted)throw Cn.error(`Access denied for ${t.candidate.id} on ${s}`),new is("Access Denied")}return n.apply(this,e)},s}}class Pn extends Sn{requester(e){return{write:async(t,s,n,a)=>await this.write(e.writeRequest,t,s,n,a),read:async t=>await this.read(e.readRequest,t),delete:async t=>{await this.delete(e.readRequest,t)},exists:async t=>await this.exists(e.readRequest,t),getMetadata:async t=>await this.getMetadata(e.readRequest,t),setMetadata:async(t,s)=>{await this.setMetadata(e.writeRequest,t,s)},getACL:async t=>await this.getACL(e.readRequest,t),setACL:async(t,s)=>await this.setACL(e.writeRequest,t,s),expire:async(t,s)=>await this.expire(e.writeRequest,t,s)}}}class Mn extends Sn{requester(e){return{get:async t=>await this.get(e.readRequest,t),set:async(t,s,n,a,o)=>await this.set(e.writeRequest,t,s,n,a,o),delete:async t=>{await this.delete(e.writeRequest,t)},exists:async t=>await this.exists(e.readRequest,t),getMetadata:async t=>await this.getMetadata(e.readRequest,t),setMetadata:async(t,s)=>{await this.setMetadata(e.writeRequest,t,s)},updateTTL:async(t,s)=>{await this.updateTTL(e.writeRequest,t,s)},getTTL:async t=>await this.getTTL(e.readRequest,t),getACL:async t=>await this.getACL(e.readRequest,t),setACL:async(t,s)=>{await this.setACL(e.writeRequest,t,s)}}}}var Rn=Object.defineProperty,On=(e,t,s)=>((e,t,s)=>t in e?Rn(e,t,{enumerable:!0,configurable:!0,writable:!0,value:s}):e[t]=s)(e,t+"",s);class Dn{constructor(e){this.dataString=e,On(this,"_current"),this._current=e}get result(){return this._current}static create(e){return new Dn(e)}tryParse(){const e=this._current;if(!ut(e)||Dt(e)||qt(e))return e;let t=e.trim();if(t.startsWith("{")&&t.endsWith("}")||t.startsWith("[")&&t.endsWith("]"))try{return JSON.parse(t)}catch(e){try{const e=S(t);return JSON.parse(e)}catch(e){}}if(t=(this.extractJsonFromString(e)||e).trim(),Dt(t)&&!qt(t)||!t.startsWith("{")&&!t.startsWith("["))return t;try{return JSON.parse(t)}catch(s){try{const e=S(t);return JSON.parse(e)}catch(t){return e}}}tryFullParse(){const e=this._current;if(!e)return e;if(Dt(e)&&!qt(e)||!e.startsWith("{")&&!e.startsWith("["))return e;try{return JSON.parse(e)}catch(t){try{return JSON.parse(S(e))}catch(t){return console.warn("Error on parseJson: ",t.toString()),console.warn(" Tried to parse: ",e),{result:e,error:t.toString()}}}}extractJsonFromString(e){try{const t=/(\{.*\})/s,s=e.match(t);return s?.[1]}catch{return null}}}function qn(e){return Dn.create(e)}var En=Object.defineProperty,Nn=(e,t,s)=>((e,t,s)=>t in e?En(e,t,{enumerable:!0,configurable:!0,writable:!0,value:s}):e[t]=s)(e,"symbol"!=typeof t?t+"":t,s);const $n=class e{constructor(t,s){if(this.storage=t,this.cache=s,Nn(this,"hash"),!Ts.ready)throw new Error("SRE not available");this.hash=e.generateInstanceHash(this.storage.name,this.cache.name)}static generateInstanceHash(e,t){const s=`${e}:${t}`;return m.createHash("sha256").update(s).digest("hex").substring(0,6)}static get Instance(){return e.getInstance()}static getInstance(t="",s=""){const n=t instanceof Pn?t:Ts.getStorageConnector(t),a=s instanceof Mn?s:Ts.getCacheConnector(s),o=e.generateInstanceHash(n.name,a.name);if(e.instances[o])return e.instances[o];const r=new e(n,a),i=Ts.getRouterConnector();return i&&i?.get instanceof Function&&(i.get(`/_temp/${o}/:uid`,r.serveTempContent.bind(r)),i.get(`/storage/${o}/:file_id`,r.serveResource.bind(r))),e.instances[o]=r,r}getBaseUri(e){return`smythfs://${e.id}.${e.role}`}async read(e,t){const s=await this.URIParser(e);if(!s)throw new Error("Invalid Resource URI");t=t||s.defaultCandidate;const n=Ts.getAccountConnector();if(!await n.isTeamMember(s.team,t))throw new Error("Access Denied");const a=`teams/${s.team}${s.path}`,o=t instanceof ps?t:new ps(t),r=await this.storage.requester(o).read(a);return r?this.toBuffer(r):null}async write(e,t,s,n,a){const o=await this.URIParser(e);if(!o)throw new Error("Invalid Resource URI");s=s||o.defaultCandidate;const r=Ts.getAccountConnector();if(!await r.isTeamMember(o.team,s))throw new Error("Access Denied");const i=`teams/${o.team}${o.path}`,l=s instanceof ps?s:new ps(s);let c;if(o.team&&o.team!==Zt&&(c=(new Ln).addAccess(ts.Team,o.team,es.Read).ACL),n||(n={}),!n?.ContentType&&(n.ContentType=await Mt(t),!n.ContentType)){const t=e.split(".").pop();t&&(n.ContentType=T.getType(t)||"application/octet-stream")}await this.storage.requester(l).write(i,t,c,n),a&&await this.storage.requester(l).expire(i,a)}async delete(e,t){const s=await this.URIParser(e);if(!s)throw new Error("Invalid Resource URI");t=t||s.defaultCandidate;const n=Ts.getAccountConnector();if(!await n.isTeamMember(s.team,t))throw new Error("Access Denied");const a=`teams/${s.team}${s.path}`,o=t instanceof ps?t:new ps(t);await this.storage.requester(o).delete(a)}async exists(e,t){const s=await this.URIParser(e);if(!s)throw new Error("Invalid Resource URI");t=t||s.defaultCandidate;const n=Ts.getAccountConnector();if(!await n.isTeamMember(s.team,t))throw new Error("Access Denied");const a=`teams/${s.team}${s.path}`,o=t instanceof ps?t:new ps(t);return await this.storage.requester(o).exists(a)}async genTempUrl(e,t,s=3600){const n=await this.URIParser(e);if(!n)throw new Error("Invalid Resource URI");t=t||n.defaultCandidate;const a=Ts.getAccountConnector();if(!await a.isTeamMember(n.team,t))throw new Error("Access Denied");if(!await this.exists(e,t))throw new Error("Resource does not exist");const o=t instanceof ps?t:new ps(t),r=`teams/${n.team}${n.path}`,i=await this.storage.requester(o).getMetadata(r),l=m.randomUUID(),c=ps.user(`system:${l}`);await this.cache.requester(c).set(`pub_url:${l}`,JSON.stringify({accessCandidate:o,uri:e,contentType:i?.ContentType}),void 0,void 0,s);return`${Ts.getRouterConnector().baseUrl}/_temp/${this.hash}/${l}`}async destroyTempUrl(e,{delResource:t}={delResource:!1}){const s=e.split("/_temp/")[1];if(!s)throw new Error("Invalid Temp URL format");const n=s.split("/")[1]?.split("?")[0];if(!n)throw new Error("Invalid Temp URL format");let a=await this.cache.requester(ps.user(`system:${n}`)).get(`pub_url:${n}`);if(!a)throw new Error("Invalid Temp URL");a=Dn.create(a).tryParse(),await this.cache.requester(ps.user(`system:${n}`)).delete(`pub_url:${n}`),t&&await this.delete(a.uri,ps.clone(a.accessCandidate))}async serveTempContent(e,t){try{const{uid:s}=e.params;let n=await this.cache.requester(ps.user(`system:${s}`)).get(`pub_url:${s}`);if(!n)return t.writeHead(404,{"Content-Type":"text/plain"}),void t.end("Invalid Temp URL");n=Dn.create(n).tryParse();const a=await this.read(n.uri,ps.clone(n.accessCandidate)),o=Buffer.isBuffer(a)?a:Buffer.from(a,"binary"),r=n.contentType||"application/octet-stream";t.writeHead(200,{"Content-Type":r,"Content-Disposition":"inline","Content-Length":o.length}),t.end(o)}catch(e){console.error("Error serving temp content:",e),t.writeHead(500,{"Content-Type":"text/plain"}),t.end("Internal Server Error")}}async genResourceUrl(e,t){const s=await this.URIParser(e);if(!s)throw new Error("Invalid Resource URI");t=t||s.defaultCandidate;const n=Ts.getAccountConnector();if(!await n.isTeamMember(s.team,t))throw new Error("Access Denied");if(!await this.exists(e,t))throw new Error("Resource does not exist");const a=t instanceof ps?t:new ps(t);if(a.role!==ts.Agent)throw new Error("Only agents can generate resource urls");const o=a.id,r=`teams/${s.team}${s.path}`,i=await this.storage.requester(a).getMetadata(r),l=m.randomUUID(),c=ps.user(`system:${l}`);await this.cache.requester(c).set(`storage_url:${l}`,JSON.stringify({accessCandidate:a,uri:e,contentType:i?.ContentType}),void 0,void 0);const u=i?.ContentType,d=u?T.getExtension(u):void 0,p=Ts.getAgentDataConnector(),h=Ts.getRouterConnector().baseUrl;return`${p.getAgentConfig(o)?.agentStageDomain?`https://${p.getAgentConfig(o).agentStageDomain}`:h}/storage/${this.hash}/${l}${d?`.${d}`:""}`}async destroyResourceUrl(e,{delResource:t}={delResource:!1}){}async serveResource(e,t){try{const{file_id:s}=e.params,[n,a]=s.split(".");let o=await this.cache.requester(ps.user(`system:${n}`)).get(`storage_url:${n}`);if(!o)return t.writeHead(404,{"Content-Type":"text/plain"}),void t.end("Invalid Resource URL");o=Dn.create(o).tryParse();const r=await this.read(o.uri,ps.clone(o.accessCandidate)),i=Buffer.isBuffer(r)?r:Buffer.from(r,"binary"),l=o.contentType||"application/octet-stream";t.writeHead(200,{"Content-Type":l,"Content-Disposition":"inline","Content-Length":i.length}),t.end(i)}catch(e){console.error("Error serving storage resource content:",e),t.writeHead(500,{"Content-Type":"text/plain"}),t.end("Internal Server Error")}}async URIParser(e){const t=e.split("://");if(2!==t.length)return;if("smythfs"!==t[0].toLowerCase())return;const s=this.CaseSensitiveURL(`http://${t[1]}`),n=s.hostname.split(".").pop();if("team"!==n&&"user"!==n&&"agent"!==n&&"smyth"!==n)throw new Error("Invalid Resource URI");let a="team"===n?s.hostname.replace(`.${n}`,""):void 0;const o="user"===n?s.hostname.replace(`.${n}`,""):void 0,r="agent"===n?s.hostname.replace(`.${n}`,""):void 0,i="smyth"===n?s.hostname.replace(`.${n}`,""):void 0;let l,c="";if(!a){let e;o?(e=ps.user(o),c="/"+o):r&&(e=ps.agent(r),c="/"+r),e&&(a=await Ts.getAccountConnector().getCandidateTeam(e))}return a?l=ps.team(a):o?l=ps.user(o):r&&(l=ps.agent(r)),{hash:s.hash,team:a,user:o,agent:r,smyth:i,defaultCandidate:l,path:c+s.pathname}}CaseSensitiveURL(e){const t=e.split("://");if(2!==t.length)return null;const s=t[1],n=Math.min(...[s.indexOf("/"),s.indexOf("?"),s.indexOf("#"),s.length].filter((e=>e>=0))),a=s.substring(0,n),[o,r]=a.split(":"),i=new URL(e);return{protocol:i.protocol,hostname:o,port:i.port,pathname:i.pathname,search:i.search,searchParams:i.searchParams,hash:i.hash,href:i.href,origin:i.origin,host:o+(i.port?`:${i.port}`:""),originalPort:r||null}}async toBuffer(e){if(Buffer.isBuffer(e))return e;if("string"==typeof e)return Buffer.from(e,"utf-8");if(e instanceof Uint8Array)return Buffer.from(e);if(e instanceof L)return new Promise(((t,s)=>{const n=[];e.on("data",(e=>{n.push(Buffer.isBuffer(e)?e:Buffer.from(e))})),e.on("end",(()=>{t(Buffer.concat(n))})),e.on("error",(e=>{s(e)}))}));throw new Error("Unsupported data type")}};Nn($n,"instances",{});let Gn=$n;var jn=Object.defineProperty,Un=(e,t,s)=>((e,t,s)=>t in e?jn(e,t,{enumerable:!0,configurable:!0,writable:!0,value:s}):e[t]=s)(e,"symbol"!=typeof t?t+"":t,s);class Bn{constructor(e,t,s,n){this._name=t,this.mimetype=s,this.candidate=n,Un(this,"size"),Un(this,"url"),Un(this,"_ready"),Un(this,"_readyPromise"),Un(this,"_source"),Un(this,"_uploading",!1),t||(t=et()),this._name=t,this.load(e,t,s,n)}async ready(){return!!this._ready||(this._readyPromise||(this._readyPromise=new Promise((e=>{const t=setInterval((()=>{this._ready&&(clearInterval(t),e(!0))}),100)}))),this._readyPromise)}async load(e,t,s,n){const a=t.split(".")?.length>1?t.split(".").pop():"";if(this.mimetype=s||T.getType(a)||"",this.url="","object"==typeof e&&e.url&&e.mimetype&&e.size){this.mimetype=e.mimetype,this.size=e.size,this.url=e.url;const t=T.getExtension(this.mimetype);return this._name.endsWith(`.${t}`)||(this._name+=`.${t}`),void(n?this._source=await Gn.Instance.read(this.url,n).finally((()=>{this._ready=!0})):this._ready=!0)}if("string"==typeof e&&e.startsWith("smythfs://")){if(this.url=e,n)try{this._source=await Gn.Instance.read(this.url,n),this.mimetype=await Mt(this._source),this.size=this._source.byteLength,this.mimetype||(this.mimetype=T.getType(this.url)||T.getType(this._name)||"");const e=T.getExtension(this.mimetype);this._name.endsWith(`.${e}`)||(this._name+=`.${e}`)}finally{this._ready=!0}else this._ready=!0;return}if(Ct(e)){try{const t=await o({method:"get",url:e,responseType:"arraybuffer"});this.size=t.data.byteLength,this._source=Buffer.from(t.data,"binary");let s=t.headers?.["content-type"]||"";const n=new URL(e).pathname;let a=n.split(".")?.length>1?n.split(".").pop():"";if(s&&!s.startsWith("binary/octet-stream")||(s=a?T.getType(a):""),!s){const e=await l(this._source);s=e?.mime||""}this.mimetype=s,a=a||T.getExtension(this.mimetype),this._name.endsWith(`.${a}`)||(this._name+=`.${a}`)}catch(t){console.error("Error loading binary data from url:",e.url)}return void(this._ready=!0)}const r=await async function(e){if(yt(e)){const t=/^data:([^;]+);base64,(.*)$/,s=e.match(t);if(!s)return{data:"",mimetype:"",size:0};const[,n,a]=s,o=At(a);return{data:o,mimetype:n,size:Buffer.from(o,"base64").byteLength}}if(It(e)){const t=At(e),s=Buffer.from(t,"base64");return{data:t,mimetype:await ft(t),size:s.byteLength}}return null}(e);if(r){this.mimetype||(this.mimetype=r.mimetype),this.size=r.size,this._source=Buffer.from(r.data,"base64");const e=T.getExtension(this.mimetype);return this._name.endsWith(`.${e}`)||(this._name+=`.${e}`),void(this._ready=!0)}if("string"==typeof e)return this._source=Buffer.from(e),this.size=e.length,this.mimetype="text/plain",this._name.endsWith(".txt")||(this._name+=".txt"),void(this._ready=!0);if(Buffer.isBuffer(e)){this._source=e,this.size=(e=>{const t=_t(e);return t?t.byteLength:0})(e),this.mimetype||(this.mimetype=await Mt(e));const t=T.getExtension(this.mimetype);this._name.endsWith(`.${t}`)||(this._name+=`.${t}`)}e instanceof Blob&&(this._source=Buffer.from(await e.arrayBuffer()),this.size=e.size,this.mimetype=e.type),this._ready=!0}async getUrlInfo(e){try{const t=await o.get(e),s=t.headers["content-type"];return{contentType:s,contentLength:t.headers["content-length"]}}catch(e){return{contentType:"",contentLength:0}}}static from(e,t,s,n){return e instanceof Bn?e:new Bn(e,t,s,n)}async upload(e,t){if(await this.ready(),!this._uploading)try{if(this._uploading=!0,!this.url){const s=Ts.getAccountConnector(),n=await s.getCandidateTeam(e);this.url=`smythfs://${n}.team/${e.id}/_temp/${this._name}`,await Gn.Instance.write(this.url,this._source,e,void 0,t),this._uploading=!1}}catch(e){console.error("Error uploading binary data:",e),this._uploading=!1}}async getJsonData(e,t){return await this.upload(e,t),{mimetype:this.mimetype,size:this.size,url:this.url,name:this._name}}async readData(e){if(await this.ready(),!this.url)throw new Error("Binary data not ready");return await Gn.Instance.read(this.url,e)}async getName(){return await this.ready(),this._name}async getBuffer(){return await this.ready(),this._source}async getReadStream(){return await this.ready(),L.from(this._source)}}var Fn=(e=>(e.Vault="vault",e.Internal="internal",e.BedrockVault="bedrock_vault",e.VertexAIVault="vertexai_vault",e.None="none",e))(Fn||{});const Vn={Echo:"Echo",OpenAI:"OpenAI",DeepSeek:"DeepSeek",GoogleAI:"GoogleAI",Anthropic:"Anthropic",Groq:"Groq",TogetherAI:"TogetherAI",Bedrock:"Bedrock",VertexAI:"VertexAI",xAI:"xAI",Perplexity:"Perplexity"},zn=Vn;var Jn=(e=>(e.User="user",e.Assistant="assistant",e.System="system",e.Model="model",e.Tool="tool",e.Function="function",e))(Jn||{}),Kn=(e=>(e.Smyth="smyth-managed",e.User="user-managed",e.Custom="custom",e))(Kn||{}),Wn=(e=>(e.Content="content",e.Thinking="thinking",e.End="end",e.Error="error",e.ToolInfo="toolInfo",e.ToolCall="toolCall",e.ToolResult="toolResult",e.Usage="usage",e.Interrupted="interrupted",e))(Wn||{});function Qn(e){return"object"==typeof e&&e.id&&"function"==typeof e.callComponent}var Hn=Object.defineProperty,Xn=(e,t,s)=>((e,t,s)=>t in e?Hn(e,t,{enumerable:!0,configurable:!0,writable:!0,value:s}):e[t]=s)(e,"symbol"!=typeof t?t+"":t,s);const Yn=Wt("LLMInference");let Zn=class e{constructor(){Xn(this,"model"),Xn(this,"llmConnector"),Xn(this,"modelProviderReq"),Xn(this,"teamId")}static async getInstance(t,s){const n=Ts.getModelsProviderConnector();if(!n.valid)throw new Error("Model provider Not available, cannot create LLM instance");const a=Ts.getAccountConnector(),o=await a.requester(s).getTeam(),r=new e;r.teamId=o,r.modelProviderReq=n.requester(s);const i=await r.modelProviderReq.getProvider(t);return i&&(r.llmConnector=Ts.getLLMConnector(i)),r.llmConnector||Yn.error(`Model ${t} unavailable for team ${o}`),r.model=t,r}static user(e){}get connector(){return this.llmConnector}async prompt({query:e,contextWindow:t,files:s,params:n}){let a=t||[];if(e){const t=this.llmConnector.enhancePrompt(e,n);a.push({role:Jn.User,content:t})}n.model||(n.model=this.model),n.messages=a,n.files=s;try{let e=await this.llmConnector.requester(ps.agent(n.agentId)).request(n);const t=this.llmConnector.postProcess(e?.content);if(t.error){if("stop"!==e.finishReason)throw new Error("The model stopped before completing the response, this is usually due to output token limit reached.");throw new Error(t.error)}return t}catch(e){throw Yn.error("Error in chatRequest: ",e),e}}async promptStream({query:e,contextWindow:t,files:s,params:n}){let a=t||[];if(e){const t=this.llmConnector.enhancePrompt(e,n);a.push({role:Jn.User,content:t})}n.model||(n.model=this.model),n.messages=a,n.files=s;try{return await this.llmConnector.user(ps.agent(n.agentId)).streamRequest(n)}catch(e){Yn.error("Error in streamRequest:",e);const t=new d;return process.nextTick((()=>{t.emit("error",e),t.emit("end")})),t}}async imageGenRequest({query:e,files:t,params:s}){return s.prompt=e,this.llmConnector.user(ps.agent(s.agentId)).imageGenRequest(s)}async imageEditRequest({query:e,files:t,params:s}){return s.prompt=e,s.files=t,this.llmConnector.user(ps.agent(s.agentId)).imageEditRequest(s)}async streamRequest(e,t){const s=Qn(t)?t.id:t;try{if(!e.messages||!e.messages?.length)throw new Error("Input messages are required.");const t=e.model||this.model;return await this.llmConnector.user(ps.agent(s)).streamRequest({...e,model:t})}catch(e){Yn.error("Error in streamRequest:",e);const t=new d;return process.nextTick((()=>{t.emit("error",e),t.emit("end")})),t}}async multimodalStreamRequest(e,t,s){const n=Qn(s)?s.id:s,a=[],o=[];for(let e of t){const t=Bn.from(e);o.push(t),a.push(t.upload(ps.agent(n)))}await Promise.all(a),e.fileSources=o;try{const t=Array.isArray(e.messages)?e.messages.pop():{},s=t?.content||"",a=e.model||this.model;return await this.llmConnector.user(ps.agent(n)).multimodalStreamRequest(s,{...e,model:a})}catch(e){throw Yn.error("Error in multimodalRequest: ",e),e}}async multimodalStreamRequestLegacy(e,t,s={},n){const a=Qn(n)?n.id:n,o=[],r=[];for(let e of t){const t=Bn.from(e);r.push(t),o.push(t.upload(ps.agent(a)))}await Promise.all(o);const i=s.data;i.files=r;try{e=this.llmConnector.enhancePrompt(e,s);const t=i.model||this.model;return await this.llmConnector.user(ps.agent(a)).multimodalStreamRequest(e,{...i,model:t})}catch(e){throw Yn.error("Error in multimodalRequest: ",e),e}}async getContextWindow(e,t,s,n=1024){const a=await this.modelProviderReq.getModelInfo(this.model,!0);let o=a?.tokens,r=a?.completionTokens||a?.tokens,i=Math.min(s,o),l=Math.min(n,r||0);i+l>o&&(i-=i+l-o);const c={role:"system",content:e};let u=[],d=y([c],"gpt-4o").length;for(let e=t?.length-1;e>=0;e--){const s=t[e];if("system"!==s.role){if(d=0,s?.content&&(d+=ea(s.content)),s?.messageBlock?.content&&(d+=ea(s.messageBlock.content)),s.toolsData)for(let e of s.toolsData)d+=ea(e.result);if(d>i)break;u.unshift(s)}}u.unshift(c);let m=[];for(let e of u)if(e.role&&e.content&&m.push({role:e.role,content:e.content}),e.messageBlock&&e.toolsData){const t=this.connector.transformToolMessageBlocks({messageBlock:e?.messageBlock,toolsData:e?.toolsData});m.push(...t)}return m=this.connector.getConsistentMessages(m),m}};function ea(e,t="gpt-4o"){try{const s="string"==typeof e?e:JSON.stringify(e);return y([{role:"user",content:s}],t).length}catch(e){return Yn.warn("Error in countTokens: ",e),0}}var ta=Object.defineProperty,sa=(e,t,s)=>((e,t,s)=>t in e?ta(e,t,{enumerable:!0,configurable:!0,writable:!0,value:s}):e[t]=s)(e,"symbol"!=typeof t?t+"":t,s);class na{constructor(e,t="",s){this.llmInference=e,sa(this,"_systemPrompt",""),sa(this,"_llmContextStore"),sa(this,"_llmCache"),sa(this,"contextLength"),sa(this,"_messages",[]),this._llmCache=new Qs(ps.team(this.llmInference.teamId)),this.systemPrompt=t,s&&(this._llmContextStore=s,this._llmContextStore.load().then((e=>{this._messages=e,this._llmCache.set("messages",this._messages)})))}get systemPrompt(){return this._systemPrompt}set systemPrompt(e){this._systemPrompt=e,this._llmCache?.set("systemPrompt",this.systemPrompt)}get llmCache(){return this._llmCache}get messages(){return this._messages}get model(){return this.llmInference.model}push(...e){this._messages.push(...e),this._llmContextStore&&this._llmContextStore.save(this._messages),this._llmCache.set("messages",this._messages)}addUserMessage(e,t,s){const n=this._messages[this._messages.length-1];n&&(n.__smyth_data__?.next||(n.__smyth_data__.next=[]),n.__smyth_data__.next.push(t));const a=n?.__smyth_data__?.message_id;this.push({role:"user",content:e,__smyth_data__:{message_id:t,...s,prev:a,next:[]}})}addAssistantMessage(e,t,s){const n=this._messages[this._messages.length-1];n&&(n.__smyth_data__?.next||(n.__smyth_data__.next=[]),n.__smyth_data__.next.push(t));const a=n?.__smyth_data__?.message_id;this.push({role:"assistant",content:e,__smyth_data__:{message_id:t,...s,prev:a,next:[]}})}addToolMessage(e,t,s,n){const a=this._messages[this._messages.length-1];a&&(a.__smyth_data__?.next||(a.__smyth_data__.next=[]),a.__smyth_data__.next.push(s));const o=a?.__smyth_data__?.message_id;this.push({messageBlock:e,toolsData:t,__smyth_data__:{message_id:s,...n,prev:o,next:[]}})}async getContextWindow(e,t=1024){const s=JSON.parse(JSON.stringify(this._messages));return this.llmInference.getContextWindow(this.systemPrompt,s,e,t)}}const aa=async(e,t=e)=>{if("object"!=typeof e||null===e)return e;if(e.$ref){const s=e.$ref,n=s.replace(/^#\//,"").split("/");let a=t;for(const e of n){if(void 0===a[e])throw new Error(`Could not resolve $ref: ${s}`);a=a[e]}return aa(a,t)}if(Array.isArray(e))return Promise.all(e.map((e=>aa(e,t))));const s={};for(const n of Object.keys(e))s[n]=await aa(e[n],t);return s};class oa{static mapReqMethods(e){const t=new Map;for(const s in e){const n=e[s];for(const e in n){const s=n[e];Ce.includes(e.toUpperCase())&&t.set(s?.operationId,e)}}return t}static mapEndpoints(e){const t=new Map;for(const s in e){const n=e[s];for(const e in n){const a=n[e];Ce.includes(e.toUpperCase())&&t.set(a?.operationId,s)}}return t}static async yamlToJson(e){const t=P.load(e);return await aa(t)}static async getJson(e){try{let t=e;return"string"==typeof e&&(t=JSON.parse(e)),await aa(t)}catch(t){try{return await oa.yamlToJson(e)}catch(e){throw new Error("Invalid OpenAPI specification or JSON data format")}}}static async getJsonFromUrl(e){const t=(await o.get(e)).data;return oa.getJson(t)}static isValidOpenAPI(e){return e?.openapi&&e?.paths&&e?.servers}}const ra={};class ia{static register(e,t){if("function"!=typeof t)throw new Error("Hook callback must be a function");ra[e]||(ra[e]=[]),ra[e].push(t)}static trigger(e,...t){ra[e]&&ra[e].forEach((e=>e(...t)))}}function la(e){return function(t,s,n){const a=n.value;return n.value=function(...t){return ra[e]&&ra[e].forEach((e=>{e.apply(this,t)})),a.apply(this,t)},n}}function ca(e){return function(t,s,n){const a=n.value;return n.value=async function(...t){return ra[e]&&await Promise.all(ra[e].map((e=>e.apply(this,t)))),a.apply(this,t)},n}}function ua(e,t){return function(s,n,a){const o=a.value;return a.value=async function(...s){if(ra[e]){const n="function"==typeof t?await t(this):{};await Promise.all(ra[e].map((e=>e.apply(this,[n,...s]))))}return o.apply(this,s)},a}}var da=Object.defineProperty,ma=Object.getOwnPropertyDescriptor,pa=(e,t,s,n)=>{for(var a,o=ma(t,s),r=e.length-1;r>=0;r--)(a=e[r])&&(o=a(t,s,o)||o);return o&&da(t,s,o),o},ha=(e,t,s)=>((e,t,s)=>t in e?da(e,t,{enumerable:!0,configurable:!0,writable:!0,value:s}):e[t]=s)(e,"symbol"!=typeof t?t+"":t,s);const ga=Wt("ConversationHelper");class ya extends u{constructor(e,t,s){super(),this._model=e,this._specSource=t,this._settings=s,ha(this,"_agentId",""),ha(this,"_systemPrompt"),ha(this,"userDefinedSystemPrompt",""),ha(this,"toolChoice","auto"),ha(this,"assistantName"),ha(this,"_reqMethods"),ha(this,"_toolsConfig"),ha(this,"_endpoints"),ha(this,"_baseUrl"),ha(this,"_status",""),ha(this,"_currentWaitPromise"),ha(this,"_llmContextStore"),ha(this,"_context"),ha(this,"_maxContextSize",131072),ha(this,"_maxOutputTokens",8192),ha(this,"_teamId"),ha(this,"_agentVersion"),ha(this,"agentData"),ha(this,"_lastError"),ha(this,"_spec"),ha(this,"_customToolsDeclarations",[]),ha(this,"_customToolsHandlers",{}),ha(this,"stop",!1),this.on("error",(e=>{this._lastError=e,ga.warn("Conversation Error: ",e?.message)})),s?.maxContextSize&&(this._maxContextSize=s.maxContextSize),s?.maxOutputTokens&&(this._maxOutputTokens=s.maxOutputTokens),s?.systemPrompt&&(this.userDefinedSystemPrompt=s.systemPrompt),s?.toolChoice&&(this.toolChoice=s.toolChoice),s?.store&&(this._llmContextStore=s.store),this._agentVersion=s?.agentVersion,(async()=>{t?this.loadSpecFromSource(t).then((async e=>{if(!e)throw this._status="error",this.emit("error","Unable to parse OpenAPI specifications"),new Error("Invalid OpenAPI specification data format");this._spec=e,!this._agentId&&s?.agentId&&(this._agentId=s.agentId),this._agentId||(this._agentId="FAKE_AGENT_ID"),await this.assignTeamIdFromAgentId(this._agentId),await this.updateModel(this._model),this._status="ready"})).catch((e=>{this._status="error",this.emit("error",e)})):(await this.updateModel(this._model),this._status="ready")})()}get systemPrompt(){return this._systemPrompt}set systemPrompt(e){this._systemPrompt=e,this._context&&(this._context.systemPrompt=e)}get context(){return this._context}set spec(e){this.ready.then((()=>{this._status="",this.loadSpecFromSource(e).then((async e=>{if(!e)throw this._status="error",this.emit("error","Invalid OpenAPI specification data format"),new Error("Invalid OpenAPI specification data format");this._spec=e,await this.assignTeamIdFromAgentId(this._agentId),await this.updateModel(this._model),this._status="ready"}))}))}set model(e){this.ready.then((async()=>{this._status="",await this.updateModel(e),this._status="ready"}))}get model(){return this._model}get ready(){return this._currentWaitPromise||(this._currentWaitPromise=new Promise(((e,t)=>{if(this._status)return e(this._status);let s=0;const n=setInterval((()=>this._status?(clearInterval(n),e(this._status)):(s+=100,s>=3e4?(clearInterval(n),t("Timeout: Failed to prepare data")):void 0)),100)}))),this._currentWaitPromise}async prompt(e,t={},s=4,n){return await this.streamPrompt(e,t,s,n)}async streamPrompt(e,t={},s=4,n){if(e&&(this.stop=!1),this.stop)return this.emit("interrupted","interrupted"),void this.emit("end");await this.ready,n&&n.addEventListener("abort",(()=>{this.emit("aborted","Aborted by user!")}));const a="Continue with the next tool call if there are any, or just inform the user that you are done";let o="";const r=this._reqMethods,i=this._toolsConfig,l=this._endpoints,c=this._baseUrl,u="msg_"+h();t["X-DEBUG"];const d=await Zn.getInstance(this.model,ps.team(this._teamId));e&&this._context.addUserMessage(e,u);const m=await this._context.getContextWindow(this._maxContextSize,this._maxOutputTokens);let p=this._maxOutputTokens;"object"==typeof this.model&&this.model?.params?.maxTokens&&(p=this.model.params.maxTokens);const g=await d.promptStream({contextWindow:m,params:{model:this.model,toolsConfig:this._settings?.toolsStrategy?this._settings.toolsStrategy(i):i,maxTokens:p,cache:this._settings?.experimentalCache,agentId:this._agentId,abortSignal:n}}).catch((e=>{ga.error("Error on promptStream: ",e),this.emit(Wn.Error,e)}));if(n&&n.addEventListener("abort",(()=>{g.removeAllListeners()})),!g||g.error)throw new Error("[LLM Request Error]");e&&this.emit("start"),g.on("data",(e=>{this.stop||this.emit("data",e)})),g.on(Wn.Thinking,(e=>{this.stop||this.emit(Wn.Thinking,e)})),g.on(Wn.Content,(e=>{if(this.stop)return;const t=this._context?.messages?.[this._context?.messages?.length-1];t?.content?.includes(a)&&t?.__smyth_data__?.internal||(o+=e,this.emit(Wn.Content,e))}));let y="stop",f=new Promise(((e,i)=>{let d=!1,m=!1,p="";g.on(Wn.Error,(e=>{m=!0,i(e)})),g.on(Wn.ToolInfo,(async(m,h=[])=>{if(this.stop)return;d=!0;let y={role:"assistant",content:o,tool_calls:[]};h?.length>0&&(this.emit("thoughtProcess",h.filter((e=>"thinking"===e.type)).map((e=>e.thinking||"")).join("\n")),y.thinkingBlocks=h),y.tool_calls=m.map((e=>({id:e.id,type:e.type,function:{name:e.name,arguments:e.arguments}}))),this.emit(Wn.ToolInfo,m);const f=e=>{if(this.stop)return;let t="",s="";if("object"==typeof e)return e.content&&(t=e.content,p+=t,g.emit(Wn.Content,t)),void(e.thinking&&(s=e.thinking,g.emit(Wn.Thinking,s)));"string"==typeof e&&(p+=e,g.emit(Wn.Content,e))},b=m.map((e=>async()=>{const s=l?.get(e?.name)||e?.name;let a="string"==typeof e?.arguments?qn(e?.arguments).tryParse()||{}:e?.arguments;if(a?.error)throw new Error("[Tool] Arguments Parsing Error\n"+JSON.stringify({message:a?.error}));this.emit("beforeToolCall",{tool:e,args:a},y),this.emit(Wn.ToolCall,{tool:e,_llmRequest:y});const o={type:e?.type,method:r?.get(e?.name),endpoint:s,args:a,baseUrl:c,headers:t,agentCallback:f};let{data:i,error:u}=await this.useTool(o,n);u&&(i="object"==typeof u&&null!==typeof u?JSON.stringify(u):u);const d=i;return i="object"==typeof i&&null!==typeof i?JSON.stringify(i):i,this.emit("afterToolCall",{tool:e,args:a},i),this.emit(Wn.ToolResult,{tool:e,result:d}),{...e,result:i}})),w=await tt(b,s);p?(y.content+="\n"+p,this._context.addToolMessage(y,w,u),this._context.addUserMessage(a,u,{internal:!0})):this._context.addToolMessage(y,w,u),this.streamPrompt(null,t,s,n).then(e).catch(i)})),g.on(Wn.End,(async(t,s,n)=>{if(n&&(y=n),s&&this.emit(Wn.Usage,s),!m&&(!d||p)){const t=this._context?.messages?.[this._context?.messages?.length-1];let s;t?.content?.includes(a)&&t?.__smyth_data__?.internal&&(s={internal:!0}),this._context.addAssistantMessage(o,u,s),e("")}}))}));const b=await f.catch((e=>(ga.error("Error in toolsPromise: ",e),this.emit(Wn.Error,e),"")));o+=b;let w=qn(o).tryParse();return e&&("stop"!==y&&this.emit(Wn.Interrupted,y),this.emit(Wn.End)),w}resolveToolEndpoint(e,t,s,n){let a={};if(n){const e=this._spec?.paths?.[s]?.[t.toLowerCase()]?.parameters||[];for(let t of e)"path"===t.in&&(a[t.name]=n[t.name]||"",delete n[t.name])}const o=Es(s).parse(a,Ms.singleCurly).clean().result,r=new URL(o,e);return Object.keys(n).forEach((e=>{r.searchParams.append(e,n[e])})),r.toString()}async useTool(e,t){if(this.stop)return{data:null,error:"Conversation Interrupted"};const{type:s,endpoint:n,args:a,method:r,baseUrl:i,headers:l={},agentCallback:c}=e;if("function"===s){const s=this._customToolsHandlers[n];if(s)try{return{data:await s(a),error:null}}catch(e){return{data:null,error:e?.message||"Custom tool handler failed"}}try{const s={method:r,url:this.resolveToolEndpoint(i,r,n,"get"==r?a:{}),headers:{...l},signal:t};"get"!==r&&(Object.keys(a).length&&(s.data=a),s.headers["Content-Type"]="application/json"),ga.debug("Calling tool: ",s),s.headers["X-CACHE-ID"]=this._context?.llmCache?.id;const u=void 0!==s.headers["X-DEBUG"]||void 0!==s.headers["X-MONITOR-ID"]||void 0!==s.headers["X-AGENT-REMOTE-CALL"];if(s.url.includes("localhost")||s.headers["X-AGENT-ID"]&&!u){let e;ga.log("RUNNING AGENT LOCALLY"),e=this.agentData===this._specSource?vn.load(this.agentData,this._agentVersion):vn.load(s.headers["X-AGENT-ID"]||this._agentId,s.headers["X-AGENT-VERSION"]||this._agentVersion);return{data:(await e.run(s,c)).data,error:null}}if(ga.log("RUNNING AGENT REMOTELY"),s.headers["X-DEBUG"]&&s.headers["X-AGENT-ID"]||s.headers["X-MONITOR-ID"]){ga.log("ATTACHING MONITOR TO REMOTE AGENT CALL");const t=s.url.split("/api")[0]+"/agent/"+s.headers["X-AGENT-ID"]+"/monitor",n=new M(t,{fetch:(e,t)=>fetch(e,{...t,headers:{...t?.headers||{},...Object.fromEntries(Object.entries(s.headers).map((([e,t])=>[e,String(t)])))}})});let a="";n.addEventListener("init",(e=>{a=e.data,ga.log("monitorId",a),s.headers["X-MONITOR-ID"]?s.headers["X-MONITOR-ID"]=`${s.headers["X-MONITOR-ID"]},${a}`:s.headers["X-MONITOR-ID"]=a})),n.addEventListener("llm/passthrough/content",(t=>{e.agentCallback&&e.agentCallback({content:t.data.replace(/\\n/g,"\n")})})),n.addEventListener("llm/passthrough/thinking",(t=>{e.agentCallback&&e.agentCallback({thinking:t.data.replace(/\\n/g,"\n")})})),await new Promise((e=>{let t=5e3,s=setInterval((()=>{(a||t<=0)&&(clearInterval(s),e(!0)),t-=100}),100)}))}return{data:(await o.request(s)).data,error:null}}catch(e){return ga.warn("Failed to call Tool: ",i,n),ga.warn(" ====>",e),{data:null,error:e?.response?.data||e?.message}}}return{data:null,error:`'${s}' tool type not supported at the moment`}}async addTool(e){if(!e.arguments){const t=e.handler,s=this.extractArgsAsOpenAPI(t),n={};for(let t of s)if(n[t.name]=t.schema,e.inputs&&t.schema.properties){const s=[];for(let n in t.schema.properties){const a=e.inputs?.find((e=>e.name===n));t.schema.properties[n].description||(t.schema.properties[n].description=a?.description),a?.optional||s.push(n)}s.length&&(t.schema.required=s)}e.arguments=n,e.handler=async e=>{const s=Object.values(e);return await t(...s)}}const t=Object.values(e.arguments).map((e=>e.required?e.name:null)).filter((e=>e)),s={};for(let t in e.arguments)s[t]={type:e.arguments[t].type||"string",properties:e.arguments[t].properties,description:e.arguments[t].description,..."array"===e.arguments[t].type?{items:{type:e.arguments[t].items?.type||"string"}}:{}};const n={name:e.name,description:e.description,properties:s,requiredFields:t};this._customToolsDeclarations.push(n),this._customToolsHandlers[e.name]=e.handler;const a=(await Zn.getInstance(this.model,ps.team(this._teamId))).connector.formatToolsConfig({type:"function",toolDefinitions:[n],toolChoice:this.toolChoice});this._toolsConfig?this._toolsConfig.tools.push(...a?.tools):this._toolsConfig=a}async updateModel(e){try{if(this._model=e,this._spec){this._reqMethods=oa.mapReqMethods(this._spec?.paths),this._endpoints=oa.mapEndpoints(this._spec?.paths),this._baseUrl=this._spec?.servers?.[0].url;const e=this.getFunctionDeclarations(this._spec);e.push(...this._customToolsDeclarations);const t=await Zn.getInstance(this._model,ps.team(this._teamId));if(!t.connector)return void this.emit("error","No connector found for model: "+this._model);this._toolsConfig=t.connector.formatToolsConfig({type:"function",toolDefinitions:e,toolChoice:this.toolChoice});let s=[];this._context&&(s=this._context.messages),this._context=new na(t,this.systemPrompt,this._llmContextStore)}else this._toolsConfig=null,this._reqMethods=null,this._endpoints=null,this._baseUrl=null}catch(e){this.emit("error",e)}}patchSpec(e){const t=e?.paths;for(const e in t){const s=t[e];for(const t in s){const n=s[t];n?.operationId||(n.operationId=e.replace(/\//g,"_").replace(/{|}/g,"").replace(/\./g,"_"))}}return e}async loadSpecFromSource(e){if("object"==typeof e)return oa.isValidOpenAPI(e)?(this.systemPrompt=e?.info?.description||"",this.patchSpec(e)):"string"==typeof e?.behavior&&e?.components&&e?.connections?(this.agentData=e,await this.loadSpecFromAgent(e)):null;if("string"==typeof e){if(Ct(e)){const t=await oa.getJsonFromUrl(e);t.info?.description&&(this.systemPrompt=t.info.description),this.userDefinedSystemPrompt&&(this.systemPrompt=this.userDefinedSystemPrompt),t.info?.title&&(this.assistantName=t.info.title);const s=new URL(e).origin;return t?.servers||(t.servers=[{url:s}]),0==t.servers?.length&&(t.servers=[{url:s}]),this.assistantName&&(this.systemPrompt=`Assistant Name : ${this.assistantName}\n\n${this.systemPrompt}`),this.patchSpec(t)}const t=Ts.getAgentDataConnector(),s=e;if(this._agentId=s,void 0===this._agentVersion){const e=await t.isDeployed(s);this._agentVersion=e?"latest":""}if(this.agentData=await t.getAgentData(s,this._agentVersion).catch((e=>null)),!this.agentData)return null;return await this.loadSpecFromAgent(this.agentData)}}async loadSpecFromAgent(e){e?.components&&(e={name:e?.name,data:e,version:"1.0.0"});const t=Ts.getAgentDataConnector();this.systemPrompt=e?.data?.behavior||this.systemPrompt,this.userDefinedSystemPrompt&&(this.systemPrompt=this.userDefinedSystemPrompt),this.assistantName=e?.data?.name||e?.data?.templateInfo?.name||this.assistantName,this.assistantName&&(this.systemPrompt=`Assistant Name : ${this.assistantName}\n\n${this.systemPrompt}`);const s=await t.getOpenAPIJSON(e,"http://localhost/",this._agentVersion,!0).catch((e=>null));return this.patchSpec(s)}getFunctionDeclarations(e){const t=e?.paths,s=oa.mapReqMethods(t);let n=[];for(const e in t){const a=t[e];for(const e in a){const t=a[e];if(!t?.operationId)continue;let o={},r=[];if("get"===(s.get(t?.operationId)||"get").toLowerCase()){const e=t?.parameters||[];for(const t of e)o[t.name]={...t.schema,description:t.description},!0===t.required&&r.push(t?.name||"")}else{o=t?.requestBody?.content?.["application/json"]?.schema?.properties,r=t?.requestBody?.content?.["application/json"]?.schema?.required;for(const e in o)delete o[e]?.required}o||(o={}),r||(r=[]);const i={name:t?.operationId,description:t?.description||t?.summary||"",properties:o,requiredFields:r};n.push(i)}}return n}async assignTeamIdFromAgentId(e){if(e){const t=Ts.getAccountConnector(),s=await(t.getCandidateTeam(ps.agent(e))?.catch((()=>"")));this._teamId=s||""}}extractArgsAsOpenAPI(e){const t=R.parse(`(${e.toString()})`,{ecmaVersion:"latest"}).body[0].expression.params;let s=0;return t.map((function(e){if("Identifier"===e.type)return{name:e.name,in:"query",required:!0,schema:{type:"string",name:e.name,required:!0}};if("AssignmentPattern"===e.type&&"Identifier"===e.left.type)return{name:e.left.name,in:"query",required:!1,schema:{type:"string",name:e.left.name,required:!1}};if("RestElement"===e.type&&"Identifier"===e.argument.type)return{name:e.argument.name,in:"query",required:!1,schema:{type:"array",items:{type:"string"}}};if("ObjectPattern"===e.type){const t=`[object_${s++}]`;return{name:t,in:"query",required:!0,schema:{type:"object",required:!0,name:t,properties:Object.fromEntries(e.properties.map((e=>[e.key.name||"[unknown]",{type:"string"}])))}}}const t=`[unknown_${s++}]`;return{name:t,in:"query",required:!0,schema:{type:"string",name:t,required:!0}}}))}}pa([ua("Conversation.prompt",(async e=>(await e.ready,{teamId:e._teamId,agentId:e._agentId,model:e._model})))],ya.prototype,"prompt"),pa([ua("Conversation.streamPrompt",(async e=>(await e.ready,{teamId:e._teamId,agentId:e._agentId,model:e._model})))],ya.prototype,"streamPrompt");const fa=(e,t)=>`Invalid ${e} value for Input: ${t}`,ba=Wt("TypeChecker.helper"),wa={any:async function(e){return e},string:ka,number:async function(e,t,s){const n=parseFloat(e);if(isNaN(n))throw new Error("Invalid Number value");return n},integer:async function(e,t,s){const n=parseInt(e);if(isNaN(n))throw new Error("Invalid Integer value");return n},boolean:async function(e,t,s){if("boolean"==typeof e)return e;if("string"==typeof e||"number"==typeof e){const t=String(e).toLowerCase();if(["true","1"].includes(t))return!0;if(["false","0"].includes(t))return!1;throw new Error("Invalid Boolean value")}throw new Error("Invalid Boolean value")},array:async function(e,t,s){try{if(Array.isArray(e))return e;if("string"!=typeof e)throw new Error("Invalid Array value");try{return e.trim().startsWith("[")?qn(e).tryParse():e.split(",")}catch{throw new Error("Invalid Array value")}}catch(e){throw new Error("Invalid Array value")}},object:async function(e,t,s){try{const t=Tt(e)?e:qn(e).tryParse();if(!Tt(t))throw new Error("Invalid Object value");return t}catch(e){throw new Error("Invalid Object value")}},date:async function(e,t,s){const n="Invalid Date value\nThe date string is expected to be in a format commonly used in English-speaking countries.";if("string"!=typeof e&&"number"!=typeof e)throw new Error(n);let a;if("string"==typeof e&&isNaN(Number(e)))a=O(e).locale("en");else{const t="number"==typeof e?e:Number(e);a=O.unix(t/1e3)}if(!a.isValid())throw new Error(n);return a.toISOString()},binary:xa,text:ka,image:xa,audio:xa,video:xa};async function Ia(e,t,s){try{if(!t||0===Object.keys(t)?.length)return e;const n={...e},a={};for(const e of t)e?.name&&(a[e.name]={...e});for(const[t,o]of Object.entries(a)){let a=e?.[t]||"";if(!a)continue;const r=o?.type?.toLowerCase()||"any";wa[r]?n[t]=await wa[r](a,t,s):ba.warn(`Unsupported type: ${r} for Input: ${t} for agent: ${s?.id} input: ${t}`)}return n}catch(e){throw e}}async function ka(e,t,s){if(null==e||"null"===e||"undefined"===e)return"";if(It(e)||wt(e))return e;if(Pt(e)){const s=await va(e,t),n=(await s.getBuffer()).toString("base64");return s.mimetype?`data:${s.mimetype};base64,${n}`:n}return"object"==typeof e||Array.isArray(e)?JSON.stringify(e):String(e)}function Aa(e){if(!e?.startsWith("smythfs://"))return null;try{const t=e.split("/");return t.length<4?null:t[3]}catch{return null}}async function va(e,t,s){if(e instanceof Bn)return e;let n,a,o="",r="",i=`${et()}-${t}`;if(e&&"object"==typeof e&&e?.url&&e?.mimetype){const t=e?.url;r=e?.mimetype,e?.name&&(i=e?.name),t?.startsWith("smythfs://")?(a=e,o=Aa(t)):a=t}else"string"==typeof e&&e.startsWith("smythfs://")&&(o=Aa(e)),a=e;o&&(n=ps.agent(o));const l=Bn.from(a,i,r,n);return await l.ready(),l}async function xa(e,t,s){try{let s=e;if("string"==typeof e){const t=e.trim();if(Ct(t)||St(t)||It(e)||wt(e))s=t;else{const t=function(e){if("string"!=typeof e)return[];try{const t=qn(e).tryParse();if("object"==typeof t)return Object.values(t).map((e=>String(e).trim())).filter((e=>Ct(e)||St(e)));const s=new Set([...e.split(",").map((e=>e.trim())).filter((e=>e&&(Ct(e)||St(e)))),...e.split("\n").map((e=>e.trim())).filter((e=>e&&(Ct(e)||St(e))))]);return Array.from(s)}catch(e){return ba.warn("Error extracting URLs from value",{error:e}),[]}}(e);t.length>0&&(s=t)}}return Array.isArray(s)?await Promise.all(s.map((e=>va(e,t)))):await va(s,t)}catch(e){return ba.warn("Error processing binary input",{key:t,error:e.message}),null}}var _a=Object.defineProperty,Ta=Object.getOwnPropertyDescriptor,La=(e,t,s)=>((e,t,s)=>t in e?_a(e,t,{enumerable:!0,configurable:!0,writable:!0,value:s}):e[t]=s)(e,"symbol"!=typeof t?t+"":t,s);class Ca{constructor(){La(this,"hasReadOutput",!1),La(this,"hasPostProcess",!0),La(this,"alwaysActive",!1),La(this,"exclusive",!1),La(this,"schema",{name:"Component",settings:{},inputs:{}}),La(this,"configSchema")}init(){}createComponentLogger(e,t){const s=Wt(t.name||this.constructor.name,e?.agentRuntime?.debug);return s.on("logged",(s=>{e.sse&&t.eventId&&e.sse.send("component",{eventId:t.eventId,action:"log",name:t.name||this.constructor.name,title:t.title,logs:[{level:s.level,message:s.message}]})})),s}async validateConfig(e){if(!this.configSchema)return{};if(e.data._templateVars)for(let s in e.data._templateVars)this.configSchema=this.configSchema.append({[s]:t.any()});const s=await this.configSchema.validate(e.data);return s.error?{id:e.id,name:e.name,_error:`Schema Validation error: ${s?.error?.message} on component ${e.displayName}:${e.title}`,_debug:`Schema Validation error: ${s?.error?.message} on component ${e.displayName}:${e.title}`}:{}}async process(e,t,s){if(s.isKilled())throw new Error("Agent killed");const n=await Ia(e,t?.inputs,s);for(const[t,s]of Object.entries(n))e[t]=s}async postProcess(e,t,s){return e?.result&&(delete e?.result?._debug,e?.result?._error||delete e?.result?._error),e}async enable(e,t){}async disable(e,t){}readOutput(e,t,s){return null}hasOutput(e,t,s){return!1}}((e,t,s)=>{for(var n,a=Ta(t,s),o=e.length-1;o>=0;o--)(n=e[o])&&(a=n(t,s,a)||a);a&&_a(t,s,a)})([ca("Component.process")],Ca.prototype,"process");var Sa=Object.defineProperty,Pa=(e,t,s)=>((e,t,s)=>t in e?Sa(e,t,{enumerable:!0,configurable:!0,writable:!0,value:s}):e[t]=s)(e,t+"",s);class Ma extends Ca{constructor(){super(),Pa(this,"configSchema",t.object({agentId:t.string().max(200).required(),openAiModel:t.string().max(200).optional(),model:t.string().max(200).optional(),descForModel:t.string().max(5e3).allow("").label("Description for Model"),id:t.string().max(200),name:t.string().max(500),desc:t.string().max(5e3).allow("").label("Description"),logoUrl:t.string().max(8192).allow(""),version:t.string().max(100).allow(""),domain:t.string().max(253).allow("")}))}async process(e,t,s){await super.process(e,t,s);const n=this.createComponentLogger(s,t);n.debug("=== Agent Plugin Log ===");try{const a=t.data?.agentId;if(!a)return{_error:"Agent Component ID is required!",_debug:n.output};const o=s.agentRuntime?.reqTag,r=t?.data?.model||t?.data?.openAiModel,i=Es(t?.data?.descForModel).parse(e).result,l="string"==typeof e?.Prompt?e?.Prompt:JSON.stringify(e?.Prompt),c=Ts.getAgentDataConnector(),u=await c.isDeployed(a);let d=t.data?.version||"";if(n.debug("Version: ",d),"same-as-parent"===d){if(await c.isDeployed(s?.id)){if(!u)return{_error:`Call failed, Agent '${t.data?.name}' (${a}) is not deployed. Please deploy the agent and try again.`,_debug:n.output};d="latest"}else d=""}else if("dev-latest"===d)d="";else if("prod-latest"===d){if(!u)return{_error:`Call failed, Agent '${t.data?.name}' (${a}) is not deployed. Please deploy the agent and try again.`,_debug:n.output};d="latest"}const m=new ya(r,a,{systemPrompt:i,agentVersion:d}),p=await m.prompt(l,{"X-AGENT-ID":a,"X-AGENT-VERSION":d,"X-REQUEST-TAG":o,"x-caller-session-id":s.callerSessionId});return n.debug("Response:\n",p,"\n"),{Response:p,_debug:n.output}}catch(e){return console.error("Error on running Agent Component: ",e),{_error:`Error on running Agent Component!\n${e?.message||JSON.stringify(e)}`,_debug:n.output}}}}var Ra=Object.defineProperty,Oa=(e,t,s)=>((e,t,s)=>t in e?Ra(e,t,{enumerable:!0,configurable:!0,writable:!0,value:s}):e[t]=s)(e,t+"",s);function Da(e){return null==e||"string"==typeof e&&""===e.trim()||Array.isArray(e)&&0===e.length||"object"==typeof e&&null!==e&&0===Object.keys(e).length}function qa(e=""){return!(!e||"string"!=typeof e)&&(e?.match(/{{(.*?)}}/g)??[]).length>0}function Ea(e=""){return!(!e||"string"!=typeof e)&&(e?.match(/{{KEY\((.*?)\)}}/g)??[]).length>0}function Na(e="",t){return e.replace(/{{KEY\((.*?)\)}}/g,((e,s)=>"teamid"===s?t:""))}class $a extends Ca{constructor(){super(),Oa(this,"configSchema",t.object({endpoint:t.string().pattern(/^[a-zA-Z0-9]+([-_][a-zA-Z0-9]+)*$/).max(50).required(),method:t.string().valid("POST","GET").allow(""),description:t.string().max(5e3).allow(""),summary:t.string().max(1e3).allow(""),doc:t.string().max(1e3).allow(""),ai_exposed:t.boolean().default(!0),advancedModeEnabled:t.boolean().optional(),endpointLabel:t.string().max(100).allow("").optional()}))}init(){}async process(e,t,s){await super.process(e,t,s);const n=s.agentRequest,a=this.createComponentLogger(s,t),o=n?n.headers:{};let r=n?n.body:e;const i=n?n.params:{};let l=n?n.query:{};const c=n?n._agent_authinfo:void 0;for(const[t,n]of Object.entries(r))Ea(n)?r[t]=await Na(n,s?.teamId):qa(n)&&(r[t]=Es(n).parse(e).result);for(const[t,n]of Object.entries(l))Ea(n)?l[t]=await Na(n,s?.teamId):qa(n)&&(l[t]=Es(n).parse(e).result);const u=t.inputs.filter((e=>void 0!==e.defaultVal&&""!==e.defaultVal&&null!==e.defaultVal)),d=[],m=[];for(const e of t.outputs){const t=e?.expression||e?.name,s=t?.split(".")[1];s&&(t?.includes("body")&&d.push(s),t?.includes("query")&&m.push(s))}for(const t of u){const s=t?.name;let n=e[s];d.includes(s)&&Da(r[s])&&(r[s]=n),m.includes(s)&&Da(l[s])&&(l[s]=n)}if(void 0!==n.header("X-Debug-Inj")&&s.agentRuntime.debug&&Object.values(e).length>0)if("GET"===t.data.method)for(const[t,s]of Object.entries(e))s instanceof Bn?a.debug("[WARNING] Binary files are not supported for GET requests. Key:",t):l[t]=s;else r=e;r=await Ia(r,t.inputs,s),l=await Ia(l,t.inputs,s),a.debug("Parsing inputs"),a.debug(" Headers",o),a.debug(" Body",r),a.debug(" Params",i),a.debug(" Query",l),a.debug("Parsing body json input");for(let e in r){const t=r[e];if("string"==typeof t&&t.trim().startsWith("{")&&t.trim().endsWith("}"))try{const t=JSON.parse(S(r[e]));r[e]=t}catch{}}a.debug("Parsed body json input",r),a.debug("Parsing query json input");for(let e in l){const t=l[e];if("string"==typeof t&&t.trim().startsWith("{")&&t.trim().endsWith("}"))try{const t=JSON.parse(S(l[e]));l[e]=t}catch{}}a.debug("Parsed query json input",l);for(let e of t.inputs){if(!e.isFile&&!["image","audio","video","binary"].includes(e?.type?.toLowerCase()))continue;const t=e.name;a.debug("Parsing file input ",t);let o=r[t];Array.isArray(o)||(o=[o]);const i=(await Promise.all(o.map((async e=>{if(!(e instanceof Bn)&&n.files?.length>0){const s=n.files.find((e=>e.fieldname===t));if(!s)return null;e=new Bn(s.buffer,et()+"-"+s.originalname,s.mimetype)}return e instanceof Bn?await e.getJsonData(ps.agent(s.id)):null})))).filter((e=>null!==e));i.length>0&&(r[t]=1===i.length?i[0]:i)}return{headers:o,body:r,query:l,params:i,_authInfo:c,_debug:a.output}}}var Ga=Object.defineProperty,ja=(e,t,s)=>((e,t,s)=>t in e?Ga(e,t,{enumerable:!0,configurable:!0,writable:!0,value:s}):e[t]=s)(e,"symbol"!=typeof t?t+"":t,s);class Ua extends Ca{constructor(){super(),ja(this,"configSchema",t.object({format:t.string().valid("full","minimal","raw").label("Output Format").required(),contentType:t.string().valid("application/json","text/plain","text/html","application/xml").optional().allow("").label("Content Type")})),ja(this,"hasPostProcess",!0)}init(){}async process(e,t,s){await super.process(e,t,s);const n=this.createComponentLogger(s,t);let a={};n.debug(" Processing outputs ");for(let s in e)t.inputs.find((e=>e.name==s))&&(a[s]=e[s]);if("raw"===t.data.format){let s="";for(let n in e)t.inputs.find((e=>e.name==n))&&(s+=e[n]);a=s}return{Output:a,_error:void 0,_debug:n.output}}async postProcess(e,t,s){let n=t.data.contentType||"application/json";for(let t in s.agentVariables)delete e?.result?.Output?.[t];if("minimal"==t?.data?.format||"application/json"!==n){if(e?.result?.Output)return e?.result?.Output;if(e?.result?._error)return e?.result?._error;delete e.id,delete e.name}return e}}var Ba=Object.defineProperty,Fa=(e,t,s)=>((e,t,s)=>t in e?Ba(e,t,{enumerable:!0,configurable:!0,writable:!0,value:s}):e[t]=s)(e,t+"",s);Wt("ForkedAgent");class Va{constructor(e,t){this.parent=e,Fa(this,"agent");const s=function(e,t){const s=[],n=[];za(e,t,{},s,n);const a=s.find((e=>e.id==t));if(a&&"APIEndpoint"!==a.name){const o={id:`${t}_ENDPOINT`,name:"APIEndpoint",outputs:[{name:"headers",index:0,default:!0},{name:"body",index:1,default:!0},{name:"query",index:2,default:!0}],inputs:[],data:{endpoint:t,description:"",method:"POST"},displayName:"APIEndpoint",title:"APIEndpoint",description:""};s.push(o);const r=e.connections.filter((e=>e.targetId===t));let i=3;for(let e of r){const t=a.inputs.find((t=>t.index==e.targetIndex)),s=JSON.parse(JSON.stringify(t));o.inputs.push(s);const r={name:t.name,expression:`body.${t.name}`,optional:!1,index:i++,default:!1};o.outputs.push(r),n.push({sourceId:o.id,targetId:a.id,sourceIndex:r.index,targetIndex:t.index})}}return{components:s,connections:n}}(this.parent.data,t);s.variables=JSON.parse(JSON.stringify(this.parent?.data?.variables||{})),s.teamId=this.parent.teamId;const n={name:this.parent.name,data:s,teamId:this.parent.teamId,debugSessionEnabled:!1,version:this.parent.version},a=new hn(this.parent.agentRequest.req);a.headers=[],this.agent=new un(this.parent.id,n,this.parent.agentSettings,a);const o=t+"-"+et();this.agent.jobID=o}get agentRequest(){return this.agent.agentRequest}get components(){return this.agent.components}get agentRuntime(){return this.agent.agentRuntime}get jobID(){return this.agent.jobID}process(e,t){return this.agent.process(e,t)}}function za(e,t,s,n,a){const o=e.components.find((e=>e.id===t));if(!o)return;const r=function(e){const t=JSON.parse(JSON.stringify(e));return t.id=e.id,t}(o);s[t]=r.id,n.push(r);e.connections.filter((e=>e.sourceId===t)).forEach((t=>{const o=JSON.parse(JSON.stringify(t));o.sourceId=r.id,s[t.targetId]||za(e,t.targetId,s,n,a),o.targetId=s[t.targetId],a.push(o)}))}var Ja=Object.defineProperty,Ka=(e,t,s)=>((e,t,s)=>t in e?Ja(e,t,{enumerable:!0,configurable:!0,writable:!0,value:s}):e[t]=s)(e,"symbol"!=typeof t?t+"":t,s);const Wa=class e extends Ca{constructor(){super(),Ka(this,"configSchema",null)}init(){}async process(t,s,n){await super.process(t,s,n),this.createComponentLogger(n,s);const a=s.data.forked;try{if(a){let e={JobID:n.jobID};for(let s in t)e[s]=t[s];return e}{const a=new Va(n,s.id),o=a.jobID;a.agent.async=!0,a.agent.jobID=o,this.cleanJobIDBranch(a.agent);if(a.components[s.id].data.forked=!0,a.agentRequest.body={...t},e.JOBS[n.id]||(e.JOBS[n.id]={}),e.JOBS[n.id][o]={status:"pending"},n.debugSessionEnabled){const e=Object.keys(a.components);n.agentRuntime.updateComponent(s.id,{_job_components:e})}return a.process(`/api/${s.id}`,t).then((t=>{e.JOBS[n.id][o].result=t,e.JOBS[n.id][o].status="done"})).finally((async()=>{"done"!==e.JOBS[n.id][o].status&&(e.JOBS[n.id][o].status="failed"),n.debugSessionEnabled&&(await it(1e3),n.agentRuntime.reloadCtxData(),n.agentRuntime.updateComponent(s.id,{_job_components:[]}))})),{JobID:o}}}catch(e){}return{}}cleanJobIDBranch(e){const t=Object.values(e.components).find((e=>"Async"===e.name));if(!t)return;const s=t.outputs.findIndex((e=>"JobID"===e.name));-1!==s&&(e.connections=e.connections.filter((n=>!(n.sourceId===t.id&&n.sourceIndex===s&&!e.components[n.targetId].async))),this.removeOrphanedBranches(e))}removeOrphanedBranches(e){const t=[];for(let s in e.components){const n=e.components[s];if("APIEndpoint"===n.name)continue;e.connections.some((e=>e.targetId===n.id))||t.push(n.id)}for(let s of t)this.removeComponent(e,s)}removeComponent(e,t){e.components[t],delete e.components[t],e.connections=e.connections.filter((e=>e.sourceId!==t)),this.removeOrphanedBranches(e)}};Ka(Wa,"JOBS",{}),Ka(Wa,"ForkedAgent");let Qa=Wa;var Ha=Object.defineProperty,Xa=(e,t,s)=>((e,t,s)=>t in e?Ha(e,t,{enumerable:!0,configurable:!0,writable:!0,value:s}):e[t]=s)(e,"symbol"!=typeof t?t+"":t,s);const Ya=class e extends Ca{constructor(){super(),Xa(this,"configSchema",t.object({jobs_count:t.number().min(1).max(100).default(1).label("Jobs Count"),max_time:t.number().min(1).max(21600).default(1).label("Max time")}))}init(){}async process(t,s,n){await super.process(t,s,n);const a=this.createComponentLogger(n,s);try{let o={};const r=null;let i=parseInt(s.data.jobs_count||1),l=parseInt(s.data.max_time||1);const c=Array.isArray(t.Jobs)?t.Jobs:[t.Jobs];e.WAITS[n.id]||(e.WAITS[n.id]={}),e.WAITS[n.id][s.id]||(e.WAITS[n.id][s.id]={}),e.WAITS[n.id][s.id][n.agentRuntime.workflowReqId]||(e.WAITS[n.id][s.id][n.agentRuntime.workflowReqId]=[]);for(let t of c)e.WAITS[n.id][s.id][n.agentRuntime.workflowReqId].push(t);a.debug("Jobs",c),a.debug("Waiting for jobs to finish");let u=new Promise(((e,t)=>{let s=setInterval((()=>{if(l<0)return clearInterval(s),e(!0);let t=!0,a=0;for(let e of c){if("pending"==Qa.JOBS?.[n.id]?.[e]?.status){t=!1;break}a++}if(a>=i&&(t=!0),t)return clearInterval(s),e(!0);l-=1}),1e3)}));await u,a.debug("Jobs finished, collecting results");for(let e of c)o[e]={output:Qa.JOBS?.[n.id]?.[e]?.result,status:Qa.JOBS?.[n.id]?.[e]?.status||"unknown_job"};return delete e.WAITS[n.id][s.id][n.agentRuntime.workflowReqId],a.debug("Results",o),{Results:o,_error:r,_debug:a.output,_debug_time:a.elapsedTime}}catch(t){const o=t?.response?.data||t?.message||t.toString();return a.error(` Error running code \n${o}\n`),delete e.WAITS[n.id][s.id][n.agentRuntime.workflowReqId],{Output:void 0,_error:o,_debug:a.output,_debug_time:a.elapsedTime}}}};Xa(Ya,"WAITS",{});let Za=Ya;var eo=Object.defineProperty,to=(e,t,s)=>((e,t,s)=>t in e?eo(e,t,{enumerable:!0,configurable:!0,writable:!0,value:s}):e[t]=s)(e,"symbol"!=typeof t?t+"":t,s);class so extends Ca{constructor(){super(),to(this,"schema",{name:"Classifier",settings:{model:{type:"string",max:200,required:!0},prompt:{type:"string",max:3e4,allow:"",label:"Prompt"}},inputs:{Input:{type:"Any",default:!0}}}),to(this,"configSchema",t.object({model:t.string().max(200).required(),prompt:t.string().max(3e4).allow("").label("Prompt")}))}init(){}escapeJSONString(e){return e.replace(/\{/g,"<[<(").replace(/\}/g,")>]>").replace(/"/g,"`")}unescapeJSONString(e){return e.replace(/<\[<\(/g,"{").replace(/\)>]>/g,"}").replace(/`/g,'"')}async process(e,t,s){await super.process(e,t,s);const n=this.createComponentLogger(s,t),a=JSON.parse(JSON.stringify(e));for(let e in a)"string"==typeof a[e]?a[e]=this.escapeJSONString(a[e]):"object"==typeof a[e]&&(a[e]=JSON.stringify(a[e]),a[e]=this.escapeJSONString(a[e]));const o="string"==typeof e?e:JSON.stringify(a,null,2),r={};for(let e of t.outputs)r[e.name]=e.description||"";const i={};for(let e of t.outputs)i[e.name]="<Boolean|String>";const l=t.data.model,c=await s.modelsProvider.getModelId(l);n.log(` Selected model : ${c||l}`);let u="";const d=["_debug","_error"],m=Object.keys(i).filter((e=>!d.includes(e)));if(m.length>0&&(m.forEach((e=>i[e])),u=`${t.data.prompt}\n${o}\n\n---\nCategories: \n${JSON.stringify(r,null,2)}`,u=Es(u).parse(e).result),n.log(` Enhanced prompt \n${u}\n`),!u)return n.error(" Missing information, Cannot run classifier"),{_error:"Missing information, Cannot run classifier",_debug:n.output};const p=await Zn.getInstance(l||"echo",ps.agent(s.id));if(!p.connector)return{_error:`The model '${l}' is not available. Please try a different one.`,_debug:n.output};try{let e=await p.prompt({query:u,params:{...t,agentId:s.id}}).catch((e=>({error:e})));if(e?.error){const t=e?.error+" "+(e?.details||"");return n.error(" LLM Error=",t),{_error:t,_debug:n.output}}let a="string"==typeof e?Dn.create(e).tryParse():e;for(let e in a)if(a[e]){if("string"==typeof a[e]){a[e]=this.unescapeJSONString(a[e]);const t=Dn.create(a[e]).tryParse();"object"!=typeof t||t.error||(a[e]=t)}}else delete a[e];return a.error&&(a._error=a.error,n.warn(` Post process error=${a.error}`),delete a.error),n.log(" Classifier result\n",a),a._debug=n.output,a}catch(e){return{_error:e.message,_debug:n.output}}}}var no=Object.defineProperty,ao=(e,t,s)=>((e,t,s)=>t in e?no(e,t,{enumerable:!0,configurable:!0,writable:!0,value:s}):e[t]=s)(e,t+"",s);class oo extends Ca{constructor(){super(),ao(this,"configSchema",null)}init(){}async process(e,t,s){await super.process(e,t,s);const n=this.createComponentLogger(s,t);try{const a=t.data._component,o=Ts.getComponentConnector(),r=await o.requester(ps.agent(s.id)).get(a);return r?await r.process(e,t,s):(n.debug(`Component ${a} not found`),{_error:`Component ${a} not found`,_debug:n.output})}catch(e){return{_error:e.message,_debug:n.output}}}}var ro=Object.defineProperty,io=(e,t,s)=>((e,t,s)=>t in e?ro(e,t,{enumerable:!0,configurable:!0,writable:!0,value:s}):e[t]=s)(e,"symbol"!=typeof t?t+"":t,s);class lo extends Ca{constructor(){super(),io(this,"MAX_ALLOWED_URLS_PER_INPUT",20),io(this,"configSchema",t.object({namespace:t.string().max(50).allow(""),id:t.string().custom(Et,"id custom validation").allow("").label("source identifier"),name:t.string().max(50).allow("").label("label"),metadata:t.string().allow(null).allow("").max(1e4).label("metadata")}))}init(){}async process(e,t,s){await super.process(e,t,s);const n=s.teamId;s.id;let a=s.agentRuntime?.debug?"== Source Indexer Log ==\n":null;try{const s={...t.data,name:Es(t.data.name).parse(e).result,id:Es(t.data.id).parse(e).result,metadata:Es(t.data.metadata).parse(e).result},o={};for(let e of t.outputs)e.default||(o[e.name]=e?.description?`<${e?.description}>`:"");const r=s.namespace.split("_").slice(1).join("_")||s.namespace;a+=`[Selected namespace id] \n${r}\n\n`;const i=Ts.getVectorDBConnector();if(!await i.requester(ps.team(n)).namespaceExists(r)){a+=`[Created namespace] \n${await i.requester(ps.team(n)).createNamespace(r)}\n\n`}const l=this.validateInput(e);if(l.error)throw new Error(`Input validation error: ${l.error}\n EXITING...`);const c=s.id,u=/^[a-zA-Z0-9\-\_\.]+$/;if(!c)throw new Error("Id is required");if(!u.test(c))throw new Error("Invalid id. Accepted characters: 'a-z', 'A-Z', '0-9', '-', '_', '.'");let d=null;
2
+ //! DISABLE URL ARRAY PARSING FOR NOW UNTIL WE HAVE A GOOD WAY TO HANDLE BULK INDEXING
3
+ const m=lo.genDsId(c,n,r);if(Ct(l.value.Source))throw a+="STEP: Parsing input as url\n\n",new Error("URLs are not supported yet");return a+="STEP: Parsing input as text\n\n",d=await this.addDSFromText({teamId:n,namespaceId:r,text:l.value.Source,name:s.name||"Untitled",metadata:s.metadata||null,sourceId:m}),a+="Created datasource successfully\n\n",{_debug:a,Success:{result:d?.data?.dataSource||!0,id:s.id}}}catch(e){return a+=`Error: ${e?.message||"Couldn't index data source"}\n\n`,{_debug:a,_error:e?.message||"Couldn't index data source"}}}validateInput(e){return t.object({Source:t.any().required()}).unknown(!0).validate(e)}async addDSFromText({teamId:e,sourceId:t,namespaceId:s,text:n,name:a,metadata:o}){let r=Ts.getVectorDBConnector();return await r.requester(ps.team(e)).createDatasource(s,{text:n,metadata:o,id:t,label:a})}static genDsId(e,t,s){return`${t}::${s}::${e}`}async addDSFromUrl({teamId:e,namespaceId:t,dsId:s,type:n,url:a,name:o,metadata:r}){throw new Error("URLs are not supported yet")}}var co=Object.defineProperty,uo=(e,t,s)=>((e,t,s)=>t in e?co(e,t,{enumerable:!0,configurable:!0,writable:!0,value:s}):e[t]=s)(e,t+"",s);class mo extends Ca{constructor(){super(),uo(this,"configSchema",t.object({namespaceId:t.string().max(50).allow("").label("namespace"),id:t.string().custom(Et,"custom validation characterSet").allow("").label("source identifier")}))}init(){}async process(e,t,s){await super.process(e,t,s);const n=s.teamId;s.id;let a=s.agentRuntime?.debug?"== Source Indexer Log ==\n":null;try{const s=this.validateConfigData(t.data);if(s.error)throw new Error(`Config data validation error: ${s.error}\n EXITING...`);const o={};for(let e of t.outputs)e.default||(o[e.name]=e?.description?`<${e?.description}>`:"");const r=this.validateInput(e);if(r.error)throw new Error(`Input validation error: ${r.error}\n EXITING...`);const i=s.value.namespaceId.split("_")?.slice(1).join("_")||s.value.namespaceId;let l=Ts.getVectorDBConnector();if(!await l.requester(ps.team(n)).namespaceExists(i))throw new Error(`Namespace ${i} does not exist`);const c=Es(t.data.id).parse(e).result;if(!/^[a-zA-Z0-9\-\_\.]+$/.test(c))throw new Error("Invalid id. Accepted characters: 'a-z', 'A-Z', '0-9', '-', '_', '.'");a+=`Searching for data source with id: ${c}\n`;const u=lo.genDsId(c,n,i);return await l.requester(ps.team(n)).deleteDatasource(i,u),a+=`Deleted data source with id: ${c}\n`,{_debug:a,Success:!0}}catch(e){return a+=`Failed to delete data source: \n Error: ${e?.message}\n`,{_debug:a,_error:e?.message||"Couldn't delete data source"}}}validateInput(e){return t.object({}).unknown(!0).validate(e)}validateConfigData(e){return t.object({namespaceId:t.string().required(),id:t.string().optional().allow("").allow(null)}).unknown(!0).validate(e)}}var po=Object.defineProperty,ho=(e,t,s)=>((e,t,s)=>t in e?po(e,t,{enumerable:!0,configurable:!0,writable:!0,value:s}):e[t]=s)(e,t+"",s);class go{static async getInstance(e){throw new Error("Method not implemented.")}}class yo extends Ca{constructor(){var e;super(),ho(this,"configSchema",t.object({topK:t.string().custom((e={min:0},(t,s)=>{const n=Number(t),a=s.schema._flags.label||s.state.path[s.state.path.length-1];if(isNaN(n))throw new Error(`The value for '${a}' must be a number`);if(void 0!==e.min&&void 0!==e.max){if(n<e.min||n>e.max)throw new Error(`The value for '${a}' must be from ${e.min} to ${e.max}`)}else if(void 0!==e.min){if(n<e.min)throw new Error(`The value for '${a}' must be greater or equal to ${e.min}`)}else if(void 0!==e.max&&n>e.max)throw new Error(`The value for '${a}' must be less or equal to ${e.max}`);return t}),"custom range validation").label("Result Count"),model:t.string().valid("gpt-4o-mini","gpt-4","gpt-3.5-turbo","gpt-4","gpt-3.5-turbo-16k").optional(),prompt:t.string().max(3e4).allow("").label("Prompt").optional(),postprocess:t.boolean().strict().optional(),includeMetadata:t.boolean().strict().optional(),namespace:t.string().allow("").max(80).messages({"string.max":"The length of the 'namespace' name must be 50 characters or fewer."})}))}init(){}async process(e,t,s){await super.process(e,t,s);const n=t.id;s.components[n];const a=s.teamId;let o=s.agentRuntime?.debug?"== Data Source Lookup Log ==\n":null;const r={};for(let e of t.outputs)e.default||(r[e.name]="");const i=t.data.namespace.split("_").slice(1).join("_")||t.data.namespace,l=t.data?.model||"gpt-4o-mini",c=t.data?.prompt?.trim?.()||"",u=t.data?.postprocess||!1,d=t.data?.includeMetadata||!1,m="string"==typeof e.Query?e.Query:JSON.stringify(e.Query),p=Math.max(t.data?.topK||50,50);let h,g,y=Ts.getVectorDBConnector();if(!await y.requester(ps.team(a)).namespaceExists(i))throw new Error(`Namespace ${i} does not exist`);try{h=(await y.requester(ps.team(a)).search(i,m,{topK:p,includeMetadata:!0})).slice(0,t.data.topK).map((e=>({content:e.metadata?.text,metadata:e.metadata}))),h=d?h.map((e=>({content:e.content,metadata:this.parseMetadata(e.metadata||e.metadata?.metadata)}))):h.map((e=>e.content)),o+=`[Results] \nLoaded ${h.length} results from namespace: ${i}\n\n`}catch(e){g=e.toString()}if(u&&c){const t=[];for(let t of h)Es(c.replace(/{{result}}/g,JSON.stringify(t))).parse(e).result,await go.getInstance(l);h=await Promise.all(t);for(let e=0;e<h.length;e++)"string"==typeof h[e]&&(h[e]=qn(h[e]).tryParse())}return o+=`[Total Length] \n${JSON.stringify(h).length}\n\n`,{Results:h,_error:g,_debug:o}}parseMetadata(e){try{return JSON.parse(S(e))}catch(t){return e}}}class fo extends Ca{constructor(){super()}init(){}async process(e,t,s){await super.process(e,t,s);const n=this.createComponentLogger(s,t);try{const s=void 0,a=e.Data,o=t.data.action||"Encode",r=t.data.encoding;n.debug(`${r} ${o} data`);return{Output:"Encode"==o?Buffer.from(a).toString(r):Buffer.from(a,r).toString("utf8"),_error:s,_debug:n.output}}catch(e){const t=e?.response?.data||e?.message||e.toString();return n.error(` Error processing data \n${t}\n`),{hash:void 0,_error:t,_debug:n.output}}}}class bo extends Ca{constructor(){super()}init(){}async process(e,t,s){await super.process(e,t,s);const n=this.createComponentLogger(s,t);try{const s=void 0,a=e.Data,o=t.data.algorithm,r=t.data.encoding;n.debug(` Generating hash using ${o} algorithm and ${r} encoding`);const i=m.createHash(o);i.update(a);const l=i.digest(r);return n.debug(` Generated hash: ${l}`),{Hash:l,_error:s,_debug:n.output}}catch(e){const t=e?.response?.data||e?.message||e.toString();return n.error(` Error generating hash \n${t}\n`),{hash:void 0,_error:t,_debug:n.output}}}}var wo=Object.defineProperty,Io=(e,t,s)=>((e,t,s)=>t in e?wo(e,t,{enumerable:!0,configurable:!0,writable:!0,value:s}):e[t]=s)(e,t+"",s);class ko extends Ca{constructor(){super(),Io(this,"configSchema",t.object({name:t.string().max(1e3).allow("").label("Name"),ttl:t.number().integer().label("TTL")}))}init(){}async process(e,t,s){await super.process(e,t,s);const n=this.createComponentLogger(s,t);try{n.debug("=== File Store Log ===");let a,o={},r=e.Data;const i=ps.agent(s.id),l=await Bn.from(r,null,null,i),c=await l.getJsonData(i),u=await l.getBuffer(),d=Es(t.data.name).parse(e).result,m={ContentType:c.mimetype},p=t.data.ttl||86400,h=c.url?.split(".").pop(),g=Ts.getStorageConnector("S3"),y=this.getFileName(d,h);try{const e=`teams/${s.teamId}/components_data/${y}`;await g.requester(ps.agent(s.teamId)).write(e,u,null,m),await g.requester(ps.agent(s.teamId)).expire(e,+p);const t=`smythfs://${s.teamId}.team/components_data/${y}`;o={Url:await Gn.Instance.genResourceUrl(t,ps.agent(s.teamId))}}catch(e){n.error(`Error saving file \n${e}\n`),a=e?.response?.data||e?.message||e.toString(),o=void 0}return{...o,_error:a,_debug:n.output}}catch(e){const t=e?.response?.data||e?.message||e.toString();return n.error(` Error saving file \n${t}\n`),{Output:void 0,_error:t,_debug:n.output}}}getExtension(e){return e.split("/")[1]}getFileName(e,t){return`${btoa(String.fromCharCode(...crypto.getRandomValues(new Uint8Array(9)))).replace(/[+/=]/g,"")}${e?`.${e}`:""}.${t}`}}var Ao=Object.defineProperty,vo=(e,t,s)=>((e,t,s)=>t in e?Ao(e,t,{enumerable:!0,configurable:!0,writable:!0,value:s}):e[t]=s)(e,t+"",s);class xo extends Ca{constructor(){super(),vo(this,"configSchema",null)}init(){}async process(e,t,s){await super.process(e,t,s);let n,a,o={},r=null,i=!0;const l=this.createComponentLogger(s,t);try{const n=e.Input;let r;r=Array.isArray(n)?n:"string"==typeof n?n.trim().startsWith("[")?qn(n).tryParse():n.split(","):[n],Array.isArray(r)||"object"!=typeof r||(r=Object.values(r));const c=s.agentRuntime.getRuntimeData(t.id)._LoopData||{parentId:t.id,loopIndex:0,loopLength:r.length};l.debug(`Loop: ${c.loopIndex} / ${c.loopLength}`),delete c.branches,c.result&&(a=c.result,l.debug(` => Loop Result : ${JSON.stringify(o,null,2)}`),l.debug("---------------------------------------------------")),o=r[c.loopIndex],l.debug(` => Loop Data : ${JSON.stringify(o,null,2)}`),i=void 0!==o,i&&c.loopIndex++,c._in_progress=i,s.agentRuntime.updateRuntimeData(t.id,{_LoopData:c})}catch(e){r=e,l.error(e)}if(!i)switch(n=a||[],t?.data?.format){case"minimal":n=n.map((e=>_o(e.result)));break;case"results-array":n=n.map((e=>Object.values(_o(e.result)))).flat(1/0)}return{Loop:o,Result:n,_temp_result:a,_error:r,_in_progress:i,_debug:l.output}}async postProcess(e,t,s){return e=await super.postProcess(e,t,s),e?.result&&(delete e.result._temp_result,delete e.result._in_progress,delete e.result.Loop),e}}function _o(e){return"object"!=typeof e||(e._debug&&delete e._debug,e._error&&delete e._error,e._temp_result&&delete e._temp_result,e._in_progress&&delete e._in_progress),e}class To extends Ca{constructor(){super()}init(){}async process(e,t,s){await super.process(e,t,s);const n=this.createComponentLogger(s,t);try{const a=void 0,o=s?s.teamId:null;let r=e.Data,i=e.Key||t.data.key;i=await Es(i).parse(e).parseTeamKeysAsync(o).asyncResult;const l=t.data.signMethod||"HMAC",c=t.data.dataTransform||"None",u=t.data.hashType||"md5",d=t.data.RSA_padding,m=t.data.RSA_saltLength,p=t.data.encoding||"hex";if("string"!=typeof r)switch(c){case"Stringify":r=JSON.stringify(r);break;case"Querystring":r=D.stringify(r)}n.debug(" Data to sign = ",r),n.debug(` Signing data using ${l} algorithm and ${p} encoding`);const h=this.signData(r,i,l,p,{hashType:u,RSA_padding:d,RSA_saltLength:m});return n.debug(` Signature generated: ${h}`),{Signature:h,_error:a,_debug:n.output}}catch(e){const t=e?.response?.data||e?.message||e.toString();return n.error(` Error generating hash \n${t}\n`),{hash:void 0,_error:t,_debug:n.output}}}signData(e,t,s,n="hex",a={}){switch(s){case"RSA":const o=`${s}-${a.hashType||"md5"}`.toUpperCase(),r=m.createSign(o);r.update(e);const i={key:t,padding:a.RSA_padding?m.constants[a.RSA_padding]:void 0,saltLength:a.RSA_saltLength?m.constants[a.RSA_saltLength]:void 0};return r.sign(i,n.toLowerCase());case"HMAC":const l=m.createHmac(a.hashType,t);return l.update(e),l.digest(n)}return null}}class Lo extends Ca{constructor(){super()}init(){}async process(e,t,s){await super.process(e,t,s);const n=this.createComponentLogger(s,t);try{const s=void 0,a=parseInt(t.data.delay||1),o=e.Input;return n.debug(`Sleeping for ${a} seconds`),await new Promise((e=>setTimeout(e,1e3*a))),{Output:o,_error:s,_debug:n.output,_debug_time:n.elapsedTime}}catch(e){const t=e?.response?.data||e?.message||e.toString();return n.error(` Error processing data \n${t}\n`),{hash:void 0,_error:t,_debug:n.output,_debug_time:n.elapsedTime}}}}class Co extends Ca{constructor(){super()}init(){}async process(e,t,s){await super.process(e,t,s);const n=this.createComponentLogger(s,t);try{const e=void 0,s=(t.data.format,Date.now());return n.debug(`Timestamp : ${s}`),{Timestamp:s,_error:e,_debug:n.output,_debug_time:n.elapsedTime}}catch(e){const t=e?.response?.data||e?.message||e.toString();return n.error(` Error processing data \n${t}\n`),{hash:void 0,_error:t,_debug:n.output,_debug_time:n.elapsedTime}}}}var So=Object.defineProperty,Po=(e,t,s)=>((e,t,s)=>t in e?So(e,t,{enumerable:!0,configurable:!0,writable:!0,value:s}):e[t]=s)(e,"symbol"!=typeof t?t+"":t,s);class Mo extends Ca{constructor(){super(),Po(this,"schema",{name:"GenAILLM",description:"Use this component to generate a responses from an LLM",settings:{model:{type:"string",max:200,required:!0},prompt:{type:"string",max:8e6,label:"Prompt"},temperature:{type:"number",min:0,max:5,label:"Temperature"},maxTokens:{type:"number",min:1,label:"Maximum Tokens"},maxThinkingTokens:{type:"number",min:1,label:"Maximum Thinking Tokens"},stopSequences:{type:"string",max:400,label:"Stop Sequences",allowEmpty:!0},topP:{type:"number",min:0,max:1,label:"Top P"},topK:{type:"number",min:0,max:500,label:"Top K"},frequencyPenalty:{type:"number",min:0,max:2,label:"Frequency Penalty"},presencePenalty:{type:"number",min:0,max:2,label:"Presence Penalty"},responseFormat:{type:"string",valid:["json","text"],label:"Response Format"},passthrough:{type:"boolean",description:"If true, the LLM response will be returned as is by the agent",label:"Passthrough"},useSystemPrompt:{type:"boolean",description:"If true, the component will use parent agent system prompt",label:"Use System Prompt"},useContextWindow:{type:"boolean",description:"If true, the component will use parent agent context window",label:"Use Context Window"},maxContextWindowLength:{type:"number",min:0,description:"The maximum number of messages to use from this component context window (if useContextWindow is true)",label:"Maximum Context Window Length"}},inputs:{Input:{type:"Any",description:"An input that you can pass to the LLM"},Attachment:{type:"Binary",description:"An attachment that you can pass to the LLM",optional:!0}},outputs:{Reply:{default:!0}}}),Po(this,"configSchema",t.object({model:t.string().max(200).required(),prompt:t.string().required().max(8e6).label("Prompt"),temperature:t.number().min(0).max(5).label("Temperature"),maxTokens:t.number().min(1).label("Maximum Tokens"),stopSequences:t.string().allow("").max(400).label("Stop Sequences"),topP:t.number().min(0).max(1).label("Top P"),topK:t.number().min(0).max(500).label("Top K"),frequencyPenalty:t.number().min(0).max(2).label("Frequency Penalty"),presencePenalty:t.number().min(0).max(2).label("Presence Penalty"),responseFormat:t.string().valid("json","text").optional().label("Response Format"),passthrough:t.boolean().optional().label("Passthrough"),useSystemPrompt:t.boolean().optional().label("Use System Prompt"),useContextWindow:t.boolean().optional().label("Use Context Window"),maxContextWindowLength:t.number().optional().min(0).label("Maximum Context Window Length"),useWebSearch:t.boolean().optional().label("Use Search"),webSearchContextSize:t.string().valid("high","medium","low").optional().label("Search Content Size"),webSearchCity:t.string().max(100).optional().allow("").label("Search City"),webSearchCountry:t.string().max(100).optional().allow("").label("Search Country"),webSearchRegion:t.string().max(100).optional().allow("").label("Search Region"),webSearchTimezone:t.string().max(100).optional().allow("").label("Search Timezone"),useReasoning:t.boolean().optional().label("Use Reasoning"),maxThinkingTokens:t.number().min(1).label("Maximum Thinking Tokens")}))}init(){}async process(e,t,s){await super.process(e,t,s);const n=this.createComponentLogger(s,t);try{n.debug("=== GenAILLM Log ===");const a=t.data.passthrough||!1,o=t.data.useContextWindow||!1,r=t.data.useSystemPrompt||!1,i=(t.data.useWebSearch,parseInt(t.data.maxTokens)||1024),l=parseInt(t.data.maxContextWindowLength)||1024,c=t.data.model||"echo",u=await Zn.getInstance(c,ps.agent(s.id));if(!u.connector)return{_error:`The model '${c}' is not available. Please try a different one.`,_debug:n.output};const d=await s.modelsProvider.getModelId(c);n.debug(` Model : ${d||c}`);let m=Es(t.data.prompt).parse(e).result,p=function(e,t){const s=["Image","Audio","Video","Binary"],n=t.inputs?.filter((e=>s.includes(e.type)))?.flatMap((t=>{const s=e[t.name];return Array.isArray(s)?s.map((t=>Es(t).parseRaw(e).result)):Es(s).parseRaw(e).result}))?.filter((e=>e))||[];return n}(e,t),h=!1;const g=await s.modelsProvider.getProvider(c),y="Echo"===g;if(p?.length>0&&!y){const e=We?.[g]||{},t=await s.modelsProvider.getModelInfo(c),a=t?.features||[],o=new Set,r=await Promise.all(p.map((async t=>{const s=t?.mimetype||await Mt(t),[n=""]=Object.entries(e).find((([e,t])=>t.includes(s)))||[];return s&&o.add(s),a?.includes(n)?t:null})));if(p=r.filter(Boolean),0===p.length)return{_error:`Model does not support ${o?.size>0?Array.from(o).join(", "):"File(s)"}`,_debug:n.output};h=!0}let f;n.debug(" Prompt\n",m,"\n"),y||n.debug(" Files\n",await Promise.all(p.map((e=>Rt(e))))),t.data.responseFormat=t.data?.responseFormat||"json";const b=u.connector.enhancePrompt(m,t);let w=[],I="";if(r){I=await s.agentRuntime.llmCache.get("systemPrompt","text")||s.data?.behavior||"",I&&n.debug(" Using Agent System Prompt\n",I),I&&(w=[{role:"system",content:I}])}if(o){const e=await s.agentRuntime.llmCache.get("messages","json");try{const t="string"==typeof e?JSON.parse(e):e,s=await u.getContextWindow(I,t,l,i);s.length>0&&n.debug(` Using Agent Context Window : ${s.length-1} messages will be used`),w=[...s]}catch(t){n.warn("Error on parsing context window: ",t),console.warn(e)}}"user"==w[w.length-1]?.role?w[w.length-1].content=b:w.push({role:"user",content:b});let k="stop";const A=new Promise((async(e,n)=>{let o,r="";o=await u.promptStream({contextWindow:w,files:p,params:{...t.data,agentId:s.id}}).catch((e=>{console.error("Error on promptStream: ",e),n(e)})),o.on("content",(e=>{a&&("function"==typeof s.callback&&s.callback({content:e}),s.sse.send("llm/passthrough/content",e.replace(/\n/g,"\\n"))),r+=e})),o.on("thinking",(e=>{a&&("function"==typeof s.callback&&s.callback({thinking:e}),s.sse.send("llm/passthrough/thinking",e.replace(/\n/g,"\\n")))})),o.on("end",(()=>{a&&("function"==typeof s.callback&&s.callback({content:"\n"}),s.sse.send("llm/passthrough/content","\\n")),e(r)})),o.on("interrupted",(e=>{k=e||"stop"})),o.on("error",(e=>{n(e)}))}));if(f=await A.catch((e=>({error:e.message||e}))),"stop"!==k)return{Reply:f,_error:"The model stopped before completing the response, this is usually due to output token limit reached.",_debug:n.output};if(!f)return{_error:" LLM Error = Empty Response!",_debug:n.output};if(f?.error){const e=f?.error+" "+(f?.details||"");return n.error(" LLM Error=",e),{Output:f?.data,_error:e,_debug:n.output}}const v=u.connector.postProcess(f);if(v.error)return n.error(" LLM Error=",v.error),{_error:v.error,_debug:n.output};n.debug(" Reply \n",v);const x={Reply:v};return x._debug=n.output,x}catch(e){return{_error:e.message,_debug:n.output}}}}var Ro=Object.defineProperty,Oo=(e,t,s)=>((e,t,s)=>t in e?Ro(e,t,{enumerable:!0,configurable:!0,writable:!0,value:s}):e[t]=s)(e,t+"",s);class Do extends Ca{constructor(){super(),Oo(this,"configSchema",t.object({model:t.string().optional(),openAiModel:t.string().optional(),specUrl:t.string().max(2048).uri().required().description("URL of the OpenAPI specification"),descForModel:t.string().max(5e3).required().allow("").label("Description for Model"),name:t.string().max(500).required().allow(""),desc:t.string().max(5e3).required().allow("").label("Description"),logoUrl:t.string().max(8192).allow(""),id:t.string().max(200),version:t.string().max(100).allow(""),domain:t.string().max(253).allow("")}))}init(){}async process(e,t,s){await super.process(e,t,s);const n=this.createComponentLogger(s,t);n.debug("=== Open API Log ===");try{const a=t?.data?.specUrl;if(!a)return{_error:"Please provide a Open API Specification URL!",_debug:n.output};const o=t?.data?.model||t?.data?.openAiModel,r=Es(t?.data?.descForModel).parse(e).result;let i="";if(e?.Prompt?i="string"==typeof e?.Prompt?e?.Prompt:JSON.stringify(e?.Prompt):e?.Query&&(i="string"==typeof e?.Query?e?.Query:JSON.stringify(e?.Query)),!i)return{_error:"Please provide a prompt",_debug:n.output};const l=new ya(o,a,{systemPrompt:r,agentId:s?.id}),c=await l.prompt(i);return n.debug("Response:\n",c,"\n"),{Output:c,_debug:n.output}}catch(e){return console.error("Error on running Open API: ",e),{_error:`Error on running Open API!\n${e?.message||JSON.stringify(e)}`,_debug:n.output}}}}var qo={"text-classification":{inputs:{Text:{type:"string",desc:"(required) a string to be classified",request_parameter_name:"inputs",request_parameter_type:"string"}},formatRequest:'inputs: "{{text}}"'},"token-classification":{inputs:{Text:{type:"string",desc:"(required) a string to be classified",request_parameter_name:"inputs",request_parameter_type:"string"}},parameters:{aggregation_strategy:{type:"string",default:"simple",desc:"(Default: simple). There are several aggregation strategies:",supportedValues:[{value:"none",desc:"Every token gets classified without further aggregation."},{value:"simple",desc:"Entities are grouped according to the default schema (B-, I- tags get merged when the tag is similar)."},{value:"first",desc:"Same as the simple strategy except words cannot end up with different tags. Words will use the tag of the first token when there is ambiguity."},{value:"average",desc:"Same as the simple strategy except words cannot end up with different tags. Scores are averaged across tokens and then the maximum label is applied."},{value:"max",desc:"Same as the simple strategy except words cannot end up with different tags. Word entity will be the token with the maximum score."}]}},formatRequest:'inputs: "{{text}}"'},"table-question-answering":{inputs:{Query:{type:"string",desc:"(required) The query in plain text that you want to ask the table",request_parameter_name:"query",request_parameter_type:"string"},Table:{type:"string",desc:"(required) A table of data represented as a dict of list where entries are headers and the lists are all the values, all lists must have the same size.",request_parameter_name:"table",request_parameter_type:"Record<string, string[]>"}},formatRequest:'inputs: { query: "{{query}}", table: {{table}} }'},"question-answering":{inputs:{Question:{type:"string",request_parameter_name:"question",request_parameter_type:"string"},Context:{type:"string",request_parameter_name:"context",request_parameter_type:"string"}},formatRequest:'inputs: { context: "{{context}}", question: "{{question}}" }'},"document-question-answering":{inputs:{Image:{type:"URL | base64 | file | SmythFileObject",desc:"(required) image URL, base64 string, uploaded image, or linked image output",request_parameter_name:"image",request_parameter_type:"Blob | ArrayBuffer"},Question:{type:"string",desc:"(required) Question about document image.",request_parameter_name:"question",request_parameter_type:"string"}},formatRequest:'inputs: { image: {{image}}, question: "{{question}}" }'},"visual-question-answering":{inputs:{Image:{type:"URL | base64 | file | SmythFileObject",desc:"(required) image URL, base64 string, uploaded image, or linked image output",request_parameter_name:"image",request_parameter_type:"Blob | ArrayBuffer"},Question:{type:"string",desc:"(required) Question about visual image.",request_parameter_name:"question",request_parameter_type:"string"}},formatRequest:'inputs: { image: {{image}}, question: "{{question}}" }'},"zero-shot-classification":{inputs:{Text:{type:"string",desc:"(required) a string or list of strings",request_parameter_name:"inputs",request_parameter_type:"string | string[]"}},parameters:{candidate_labels:{type:"string[]",default:[],desc:"(required) a list of strings that are potential classes for inputs. (max 10 candidate_labels, for more, simply run multiple requests, results are going to be misleading if using too many candidate_labels anyway. If you want to keep the exact same, you can simply run multi_label=true and do the scaling on your end. )"},multi_label:{type:"boolean",default:!1,desc:"(Default: false) Boolean that is set to True if classes can overlap"}},formatRequest:'inputs: "{{text}}", parameters: { candidate_labels: [{{candidate_labels}}] }'},translation:{inputs:{Text:{type:"string",desc:"(required) a string to be translated in the original languages",request_parameter_name:"inputs",request_parameter_type:"string"}},formatRequest:'inputs: "{{text}}"'},summarization:{inputs:{Text:{type:"string",desc:"(required) a string to be summarized",request_parameter_name:"inputs",request_parameter_type:"string"}},parameters:{min_length:{type:"number",default:"None",desc:"(Default: None). Integer to define the minimum length in tokens of the output summary."},max_length:{type:"number",default:"None",desc:"(Default: None). Integer to define the maximum length in tokens of the output summary."},top_k:{type:"number",default:"None",desc:"(Default: None). Integer to define the top tokens considered within the sample operation to create new text."},top_p:{type:"number",default:"None",desc:"(Default: None). Float to define the tokens that are within the sample operation of text generation. Add tokens in the sample for more probable to least probable until the sum of the probabilities is greater than top_p."},temperature:{type:"number",default:1,desc:"(Default: 1.0). Float (0.0-100.0). The temperature of the sampling operation. 1 means regular sampling, 0 means always take the highest score, 100.0 is getting closer to uniform probability."},repetition_penalty:{type:"number",default:"None",desc:"(Default: None). Float (0.0-100.0). The more a token is used within generation the more it is penalized to not be picked in successive generation passes."},max_time:{type:"number",default:"None",desc:"(Default: None). Float (0-120.0). The amount of time in seconds that the query should take maximum. Network can cause some overhead so it will be a soft limit."}},formatRequest:'inputs: "{{text}}"'},conversational:{inputs:{Text:{type:"string",desc:"(required) The last input from the user in the conversation.",request_parameter_name:"text",request_parameter_type:"string"},Generated_responses:{type:"string[]",desc:"A list of strings corresponding to the earlier replies from the model.",request_parameter_name:"generated_responses",request_parameter_type:"string[]"},Past_user_inputs:{type:"string[]",desc:"A list of strings corresponding to the earlier replies from the user. Should be of the same length of generated_responses.",request_parameter_name:"past_user_inputs",request_parameter_type:"string[]"}},parameters:{min_length:{type:"number",default:"None",desc:"(Default: None). Integer to define the minimum length in tokens of the output summary."},max_length:{type:"number",default:"None",desc:"(Default: None). Integer to define the maximum length in tokens of the output summary."},top_k:{type:"number",default:"None",desc:"(Default: None). Integer to define the top tokens considered within the sample operation to create new text."},top_p:{type:"number",default:"None",desc:"(Default: None). Float to define the tokens that are within the sample operation of text generation. Add tokens in the sample for more probable to least probable until the sum of the probabilities is greater than top_p."},temperature:{type:"number",default:1,desc:"(Default: 1.0). Float (0.0-100.0). The temperature of the sampling operation. 1 means regular sampling, 0 means always take the highest score, 100.0 is getting closer to uniform probability."},repetition_penalty:{type:"number",default:"None",desc:"(Default: None). Float (0.0-100.0). The more a token is used within generation the more it is penalized to not be picked in successive generation passes."},max_time:{type:"number",default:"None",desc:"(Default: None). Float (0-120.0). The amount of time in seconds that the query should take maximum. Network can cause some overhead so it will be a soft limit."}},formatRequest:'inputs: "{{text}}", past_user_inputs: [{{past_user_inputs}}], generated_responses: [{{generated_responses}}] }'},"text-generation":{inputs:{Text:{type:"string",desc:"(required) a string to be generated from",request_parameter_name:"inputs",request_parameter_type:"string"}},parameters:{do_sample:{type:"boolean",default:!0,desc:"(Optional: true). Bool. Whether or not to use sampling, use greedy decoding otherwise."},max_time:{type:"number",default:"None",desc:"(Default: None). Float (0-120.0). The amount of time in seconds that the query should take maximum. Network can cause some overhead so it will be a soft limit."},num_return_sequences:{type:"number",default:1,desc:"(Default: 1). Integer. The number of proposition you want to be returned."},repetition_penalty:{type:"number",default:"None",desc:"(Default: None). Float (0.0-100.0). The more a token is used within generation the more it is penalized to not be picked in successive generation passes."},return_full_text:{type:"boolean",default:!0,desc:"(Default: true). Bool. If set to False, the return results will not contain the original query making it easier for prompting."},temperature:{type:"number",default:1,desc:"(Default: 1.0). Float (0.0-100.0). The temperature of the sampling operation. 1 means regular sampling, 0 means always take the highest score, 100.0 is getting closer to uniform probability."},max_new_tokens:{type:"number",default:"None",desc:"(Default: None). Int (0-250). The amount of new tokens to be generated, this does not include the input length it is a estimate of the size of generated text you want. Each new tokens slows down the request, so look for balance between response times and length of text generated."},top_k:{type:"number",default:"None",desc:"(Default: None). Integer to define the top tokens considered within the sample operation to create new text."},top_p:{type:"number",default:"None",desc:"(Default: None). Float to define the tokens that are within the sample operation of text generation. Add tokens in the sample for more probable to least probable until the sum of the probabilities is greater than top_p."},truncate:{type:"number",default:"None",desc:"(Default: None). Integer. The maximum number of tokens from the input."}},formatRequest:'inputs: "{{text}}"'},"text2text-generation":{inputs:{Text:{type:"string",desc:"(required) a string to be generated from",request_parameter_name:"inputs",request_parameter_type:"string"}},parameters:{max_time:{type:"number",default:"None",desc:"(Default: None). Float (0-120.0). The amount of time in seconds that the query should take maximum. Network can cause some overhead so it will be a soft limit."},num_return_sequences:{type:"number",default:1,desc:"(Default: 1). Integer. The number of proposition you want to be returned."},repetition_penalty:{type:"number",default:"None",desc:"(Default: None). Float (0.0-100.0). The more a token is used within generation the more it is penalized to not be picked in successive generation passes."},temperature:{type:"number",default:1,desc:"(Default: 1.0). Float (0.0-100.0). The temperature of the sampling operation. 1 means regular sampling, 0 means always take the highest score, 100.0 is getting closer to uniform probability."},max_new_tokens:{type:"number",default:"None",desc:"(Default: None). Int (0-250). The amount of new tokens to be generated, this does not include the input length it is a estimate of the size of generated text you want. Each new tokens slows down the request, so look for balance between response times and length of text generated."},top_k:{type:"number",default:"None",desc:"(Default: None). Integer to define the top tokens considered within the sample operation to create new text."},top_p:{type:"number",default:"None",desc:"(Default: None). Float to define the tokens that are within the sample operation of text generation. Add tokens in the sample for more probable to least probable until the sum of the probabilities is greater than top_p."}},formatRequest:'inputs: "{{text}}"'},"fill-mask":{inputs:{Text:{type:"string",desc:"(required) a string to be filled from, must contain the [MASK] token (check model card for exact name of the mask)",request_parameter_name:"inputs",request_parameter_type:"string"}},formatRequest:'inputs: "{{text}}"'},"sentence-similarity":{inputs:{Source_sentence:{type:"string",desc:"(required) The string that you wish to compare the other strings with. This can be a phrase, sentence, or longer passage, depending on the model being used.",request_parameter_name:"source_sentence",request_parameter_type:"string"},Sentences:{type:"string[]",desc:"(required) A list of strings which will be compared against the source_sentence.",request_parameter_name:"sentences",request_parameter_type:"string[]"}},formatRequest:'inputs: { source_sentence: "{{source_sentence}}", sentences: [{{sentences}}] }'},"text-to-image":{inputs:{Text:{type:"string",desc:"(required) prompt to generate image from",request_parameter_name:"inputs",request_parameter_type:"string"}},formatRequest:'inputs: "{{text}}"'},"image-to-text":{inputs:{Image:{type:"URL | base64 | file | SmythFileObject",desc:"(required) image URL, base64 string, uploaded image, or linked image output",request_parameter_name:"data",request_parameter_type:"Blob | ArrayBuffer"}},formatRequest:"data: {{image}} "},"image-classification":{inputs:{Image:{type:"URL | base64 | file | SmythFileObject",desc:"(required) image URL, base64 string, uploaded image, or linked image output",request_parameter_name:"data",request_parameter_type:"Blob | ArrayBuffer"}},formatRequest:"data: {{image}}"},"object-detection":{inputs:{Image:{type:"URL | base64 | file | SmythFileObject",desc:"(required) image URL, base64 string, uploaded image, or linked image output",request_parameter_name:"data",request_parameter_type:"Blob | ArrayBuffer"}},formatRequest:"data: {{image}}"},"image-segmentation":{inputs:{Image:{type:"URL | base64 | file | SmythFileObject",desc:"(required) image URL, base64 string, uploaded image, or linked image output",request_parameter_name:"data",request_parameter_type:"Blob | ArrayBuffer"}},formatRequest:"data: {{image}}"},"zero-shot-image-classification":{inputs:{Image:{type:"URL | base64 | file | SmythFileObject",desc:"(required) image URL, base64 string, uploaded image, or linked image output",request_parameter_name:"image",request_parameter_type:"Blob | ArrayBuffer"}},parameters:{candidate_labels:{type:"string[]",desc:"A list of strings that are potential classes for inputs. (max 10)"}},formatRequest:"inputs: { image: {{image}}, parameters: { candidate_labels: [{{candidate_labels}}] } }"},"image-to-image":{inputs:{Image:{type:"URL | base64 | file | SmythFileObject",desc:"(required) image URL, base64 string, uploaded image, or linked image output",request_parameter_name:"inputs",request_parameter_type:"Blob | ArrayBuffer"}},parameters:{prompt:{type:"string",desc:"(Optional) The text prompt to guide the image generation",default:"None"},strength:{type:"number",default:0,desc:"(Optional) The 'strength' parameter is effective only for SD img2img and alt diffusion img2img models. It conceptually indicates the extent of transformation applied to the reference 'image,' with values between 0 and 1. A higher 'strength' adds more noise to the initial 'image,' and the denoising process runs for the specified number of iterations in 'num_inference_steps.' A 'strength' of 1 ignores the 'image,' applying maximum added noise and running denoising for the full set of iterations."},negative_prompt:{type:"string",default:"None",desc:"(Optional) A negative prompt for the image generation"},height:{type:"number",default:"None",desc:"(Optional) The height in pixels of the generated image"},width:{type:"number",default:"None",desc:"(Optional) The width in pixels of the generated image"},num_inference_steps:{type:"number",default:"None",desc:"(Optional) The number of denoising steps. More denoising steps usually lead to a higher quality image at the expense of slower inference."},guidance_scale:{type:"number",default:"None",desc:"(Optional) Guidance scale: Higher guidance scale encourages to generate images that are closely linked to the text `prompt`, usually at the expense of lower image quality."},guess_mode:{type:"boolean",default:"None",desc:"(Optional) guess_mode only works for ControlNet models, defaults to False In this mode, the ControlNet encoder will try best to recognize the content of the input image even if you remove all prompts. The `guidance_scale` between 3.0 and 5.0 is recommended."}},formatRequest:"inputs: {{image}}"},"text-to-speech":{inputs:{Text:{type:"string",desc:"(required) a string to be converted to speech",request_parameter_name:"inputs",request_parameter_type:"string"}},formatRequest:'inputs: "{{text}}"'},"automatic-speech-recognition":{inputs:{Audio:{type:"URL | base64 | SmythFileObject",desc:"(required) audio URL, base64 string, SmythFileObject",request_parameter_name:"data",request_parameter_type:"Blob | ArrayBuffer"}},formatRequest:"data: {{audio}}"},"audio-to-audio":{inputs:{Audio:{type:"URL | base64 | SmythFileObject",desc:"(required) audio URL, base64 string, SmythFileObject",request_parameter_name:"data",request_parameter_type:"Blob | ArrayBuffer"}},formatRequest:"data: {{audio}}"},"audio-classification":{inputs:{Audio:{type:"URL | base64 | SmythFileObject",desc:"(required) audio URL, base64 string, SmythFileObject",request_parameter_name:"data",request_parameter_type:"Blob | ArrayBuffer"}},formatRequest:"data: {{audio}}"},"feature-extraction":{inputs:{Text:{type:"string | string[]",desc:"(required) a string or a list of strings to get the features from.",request_parameter_name:"inputs",request_parameter_type:"string | string[]"}},formatRequest:'inputs: "{{text}}"'}},Eo=Object.defineProperty,No=(e,t,s)=>((e,t,s)=>t in e?Eo(e,t,{enumerable:!0,configurable:!0,writable:!0,value:s}):e[t]=s)(e,t+"",s);function $o(e,t){let s=null;try{s=JSON.parse(e)}catch(s){return t.error("string.invalidJson",{value:e})}if("object"!=typeof s||null===s)return t.error("string.notJsonObject",{value:e});for(const n in s)if(""===n.trim())return t.error("object.emptyKey",{value:e});return s}class Go extends Ca{constructor(){super(),No(this,"configSchema",t.object({accessToken:t.string().max(350).required().label("Access Token"),modelName:t.string().max(100).required(),modelTask:t.string().max(100).required(),inputConfig:t.string().allow(""),parameters:t.string().custom($o,"custom JSON validation").allow(""),name:t.string().max(100).required(),displayName:t.string().max(100).required(),desc:t.string().max(5e3).required().allow(""),logoUrl:t.string().max(500).allow(""),disableCache:t.boolean().strict()}))}init(){}async process(e,t,s){await super.process(e,t,s);const n=this.createComponentLogger(s,t);n.debug("=== Hugging Face Log ===");const a=s?.id,o=s?.teamId,r=await Os.create(t?.data?.accessToken).parseTeamKeysAsync(o).asyncResult;if(!r)return{_error:"Please provide a valid Hugging Face Access Token",_debug:n.output};const i=new q(r),l=t?.data?.modelTask;if(!l)return{_error:"Hugging Face Task is required!",_debug:n.output};n.debug(`Task: ${mt(l)}`);let c=(e=>e&&"string"==typeof e?e.replace(/-([a-z])/g,(function(e,t){return t.toUpperCase()})):e)(l);if("text2textGeneration"===c&&(c="textGeneration"),!i?.[c])return{_error:`Inference API does not support for this task - ${mt(l)}`,_debug:n.output};const u=t?.data?.modelName;if(!u)return{_error:"Hugging Face Model is required!",_debug:n.output};n.debug(`Model Name: ${u}`);let d={};const m=qo?.[l]?.formatRequest,p=qo?.[l]?.inputs;if(p&&Object.keys(p).length>0){for(const e in p){const t=p[e];d[e]=t}"object"==typeof d&&null!==d&&(d={...d,formatRequest:m})}d&&0!==Object.keys(d)?.length||console.log("No inputs config found for Hugging Face Model!");let h={};if(!e||0===Object.keys(e)?.length)return{_error:"Please provide a valid input!",_debug:n.output};if("object"!=typeof e)return{_error:"Invalid input!",_debug:n.output};if("object"==typeof e&&Object.keys(e)?.length>0)for(const t in e)if(d?.[t]){let s=e[t],o=d[t].request_parameter_name,r=d[t].request_parameter_type;if(r&&r?.includes("Blob"))try{const e=Bn.from(s,void 0,void 0,ps.agent(a)),t=await e.getBuffer(),n=new Blob([t]);h[o]=n}catch(e){return{_error:e?.message||JSON.stringify(e),_debug:n.output}}else h[o]=s}const g=function(e){const t=e?.trim();return/^(inputs|data):\s*{(?![{])/.test(t)}(d.formatRequest)?{inputs:h}:h;let y;if(g.inputs&&"object"==typeof g.inputs){y={...g.inputs};for(const[e,t]of Object.entries(g.inputs||{}))t instanceof Blob&&(y[e]=`Blob size=${t.size}`)}else y=g;n.debug("Inputs: ",y);let f=JSON.parse(t?.data?.parameters||"{}");f=dt(f);let b={};if(f&&Object.keys(f)?.length>0)for(const t in f){const s=f[t];if("string"==typeof s){if("none"===s?.toLowerCase())continue;b[t]=Os.create(s).parse(e).result}else b[t]=s}let w={model:u,...g};const I={};t?.data?.disableCache&&(I.use_cache=!1),Object.keys(b)?.length>0&&(w.parameters=b,n.debug("Parameters: \n",b));const k=async({retryCount:e=0,retryLimit:t=2,retryDelay:n=1e3})=>{try{"function"==typeof i[c]&&e!==t||(c="request");const n=await i[c](w,I);let a;if(n instanceof Blob){a=await Bn.from(n).getJsonData(ps.agent(s.id))}else a=Array.isArray(n)?await Promise.all(n.map((async e=>{if(e.blob instanceof Blob||"string"==typeof e.blob&&It(e.blob)){let t;t=e.blob instanceof Blob?Bn.from(e.blob):Bn.from(e.blob,void 0,e["content-type"]);const n=await t.getJsonData(ps.agent(s.id));return{...e,blob:n}}return e}))):n;return a}catch(s){if(e<t)return await it(n),k({retryCount:e+1,retryLimit:t,retryDelay:2*n});throw s}};try{const e=await k({retryCount:0,retryLimit:2,retryDelay:5e3});return n.debug("Output: \n",e),{Output:e,_debug:n.output}}catch(e){return console.log("Error on running Hugging Face Model!",e),console.log("Error: args, options ",w,I),{_error:`Error from Hugging Face: \n${e?.message||JSON.stringify(e)}`,_debug:n.output}}}}const jo={model:t.string().max(100).required(),positivePrompt:t.string().required().min(2).max(2e3).label("Positive Prompt"),negativePrompt:t.string().optional().allow("").min(2).max(2e3).label("Negative Prompt"),width:t.number().min(128).max(2048).multiple(64).optional().messages({"number.multiple":"{{#label}} must be divisible by 64 (eg: 128...512, 576, 640...2048). Provided value: {{#value}}"}),height:t.number().min(128).max(2048).multiple(64).optional().messages({"number.multiple":"{{#label}} must be divisible by 64 (eg: 128...512, 576, 640...2048). Provided value: {{#value}}"}),outputFormat:t.string().valid("JPG","PNG","WEBP").optional(),outputQuality:t.number().min(20).max(99).optional().label("Output Quality"),numberResults:t.number().min(1).max(20).optional().label("Number of Results"),steps:t.number().min(0).max(100).optional().label("Strength"),backgroundColor:t.array().items(t.number().when("$index",{is:3,then:t.number().min(0).max(1),otherwise:t.number().min(0).max(255).integer()}).required()).length(4).optional().allow("").label("Background Color").description("RGBA color array [red, green, blue, alpha]. RGB values must be between 0-255, alpha must be between 0-1"),strength:t.number().min(0).max(1).optional().label("Strength"),upscaleFactor:t.number().min(2).max(4).optional().label("Upscale Factor"),confidence:t.number().min(0).max(1).optional().label("Confidence"),maxDetections:t.number().min(1).max(20).optional().label("Max Detections"),maskPadding:t.number().min(0).max(100).optional().label("Mask Padding"),maskBlur:t.number().min(0).max(100).optional().label("Mask Blur"),preProcessorType:t.string().valid("canny","depth","mlsd","normalbae","openpose","tile","seg","lineart","lineart_anime","shuffle","scribble","softedge").optional().label("Pre-Processor Type"),ipAdapters:t.array().items(t.object({model:t.string().required().label("IP Adapter Model"),guideImage:t.string().required().min(2).max(10485760).label("Guide Image"),weight:t.number().required().min(0).max(1).label("IP Adapter Weight")})).optional().label("IP Adapters")};async function Uo(e,t){"string"==typeof t&&(t={vaultProvider:"",keyName:t});const s=Ts.getVaultConnector(t.vaultProvider||"").requester(e),n=await s.get(t.keyName);if(!t.mapping)return n;const a={};for(const[e,s]of Object.entries(t.mapping))a[e]=Bo(n,s);return a}function Bo(e,t){const s=t.split(/\.|\[|\]\.|\]\[|\]/).filter(Boolean);let n=e;for(let e of s){if(null==n)return;n=n[e]}return n}var Fo=Object.defineProperty,Vo=(e,t,s)=>((e,t,s)=>t in e?Fo(e,t,{enumerable:!0,configurable:!0,writable:!0,value:s}):e[t]=s)(e,t+"",s);const zo={"dall-e-3":{standard:{"1024x1024":.04,"1024x1792":.08,"1792x1024":.08},hd:{"1024x1024":.08,"1024x1792":.12,"1792x1024":.12}},"dall-e-2":{"256x256":.016,"512x512":.018,"1024x1024":.02}};class Jo extends Ca{constructor(){super(),Vo(this,"configSchema",t.object({model:t.string().max(100).required(),prompt:t.string().optional().min(2).max(2e3).label("Prompt"),sizeDalle2:t.string().valid("256x256","512x512","1024x1024").optional(),sizeDalle3:t.string().valid("1024x1024","1792x1024","1024x1792").optional(),quality:t.string().valid("standard","hd","auto","high","medium","low").allow("").optional(),style:t.string().valid("vivid","natural").optional(),isRawInputPrompt:t.boolean().strict().optional(),negativePrompt:t.string().optional().allow("").min(2).max(2e3).label("Negative Prompt"),width:t.number().min(128).max(2048).multiple(64).optional().messages({"number.multiple":"{{#label}} must be divisible by 64 (eg: 128...512, 576, 640...2048). Provided value: {{#value}}"}),height:t.number().min(128).max(2048).multiple(64).optional().messages({"number.multiple":"{{#label}} must be divisible by 64 (eg: 128...512, 576, 640...2048). Provided value: {{#value}}"}),outputFormat:t.string().valid("PNG","JPEG","WEBP","auto","jpeg","png","webp").optional(),strength:jo.strength,size:t.string().optional().allow("").max(100).label("Size")}))}init(){}async process(e,t,s){await super.process(e,t,s);const n=this.createComponentLogger(s,t);n.debug("=== Image Generator Log ===");let a=t?.data?.model;if(!a)return{_error:"Model Not Found: ",_debug:n.output};n.debug(`Model: ${a}`);let o=t.data?.prompt||e?.Prompt;if(o="string"==typeof o?o:JSON.stringify(o),o=Es(o).parse(e).result,!o)return{_error:"Please provide a prompt or Image",_debug:n.output};n.debug("Prompt: \n",o);const r=await async function(e,t){return await function(e){return e?.replace(He,"")?.startsWith("gpt")}(e)?"gpt":await async function(e,t){const s=await t.modelsProvider.getProvider(e);return"Runware"===s||s.toLowerCase()==="Runware".toLowerCase()}(e,t)?"runware":await function(e){return e?.replace(He,"")?.startsWith("dall-e")}(e)?"dall-e":null}(a,s);if("function"!=typeof Ko[r])return{_error:`The model '${a}' is not available. Please try a different one.`,_debug:n.output};try{const{output:i}=await Ko[r]({model:a,config:t,input:e,logger:n,agent:s,prompt:o});return n.debug("Output: ",i),{Output:i,_debug:n.output}}catch(e){return{_error:`Generating Image(s)\n${e?.message||JSON.stringify(e)}`,_debug:n.output}}}}const Ko={gpt:async({model:e,prompt:t,config:s,logger:n,agent:a,input:o})=>{let r={model:e,size:s?.data?.size||"auto",quality:s?.data?.quality||"auto"};try{const i=await Zn.getInstance(e,ps.agent(a.id));if(!i.connector)return{_error:`The model '${e}' is not available. Please try a different one.`,_debug:n.output};const l=await a.modelsProvider.getProvider(e),c=Wo(o,s),u=c.filter((e=>Ko.isValidImageFile(l,e.mimetype)));if(c.length>0&&0===u.length)throw new Error("Supported image file types are: "+We[l]?.imageGen?.join(", "));let d;d=u.length>0?await i.imageEditRequest({query:t,files:u,params:{...r,agentId:a.id}}):await i.imageGenRequest({query:t,params:{...r,agentId:a.id}}),d?.usage&&Ko.reportTokenUsage(d.usage,{modelEntryName:e,keySource:e.startsWith(He)?Kn.Smyth:Kn.User,agentId:a.id,teamId:a.teamId});let m=d?.data?.[0]?.b64_json;const p=Bn.from(m),h="object"==typeof a&&a.id?a.id:a;return{output:await p.getJsonData(ps.agent(h))}}catch(e){throw new Error(`OpenAI Image Generation Error: ${e?.message||JSON.stringify(e)}`)}},"dall-e":async({model:e,prompt:t,config:s,logger:n,agent:a,input:o})=>{let r=t;if(Wo(o,s).length>0)throw new Error("OpenAI Image Generation Error: DALL-E models do not support image editing or variations. Please use a different model.");const i=s?.data?.responseFormat||"url";let l={responseFormat:i,model:e},c=0;if("dall-e-3"===e){const n=s?.data?.sizeDalle3||"1024x1024",a=s?.data?.quality||"standard",o=s?.data?.style||"vivid";l.size=n,l.quality=a,l.style=o;(s?.data?.isRawInputPrompt||!1)&&(r=`I NEED to test how the tool works with extremely simple prompts. DO NOT add any detail, just use it AS-IS: ${t}`),c=zo[e][a][n]}else if("dall-e-2"===e){const t=s?.data?.sizeDalle2||"256x256",n=parseInt(s?.data?.numberOfImages)||1;l.size=t,l.n=n,c=zo[e][t]}const u=await Zn.getInstance(e,ps.agent(a.id));if(!u.connector)return{_error:`The model '${e}' is not available. Please try a different one.`,_debug:n.output};const d=await u.imageGenRequest({query:r,params:{...l,agentId:a.id}});let m=d?.data?.[0]?.[i];const p=d?.data?.[0]?.revised_prompt;return p&&t!==p&&n.debug(`Revised Prompt:\n${p}`),Ko.reportUsage({cost:c},{modelEntryName:e,keySource:Kn.Smyth,agentId:a.id,teamId:a.teamId}),{output:m}},runware:async({model:e,prompt:t,config:s,agent:n,input:a})=>{const o=n.teamId,r=await Uo(ps.team(o),"runware"),i=new E({apiKey:r});await i.ensureConnection();const l=s?.data?.negativePrompt||"",c=Wo(a,s);let u=Array.isArray(c)?c[0]:c;u=await async function(e){if(!e)return"";if("string"==typeof e){if(It(e))return`data:${await Mt(e)||"image/png"};base64,${e}`;if(wt(e))return e;if(Ct(e))return e;throw new Error("Invalid string input: must be base64, data URL, or HTTP(S) URL")}if("BinaryInput"===e.constructor?.name)try{const t=await e.getBuffer();return`data:${await Mt(t)||"image/png"};base64,${t.toString("base64")}`}catch(e){throw new Error(`Failed to process BinaryInput: ${e.message}`)}throw new Error("Unsupported input type")}(u);const d={model:await n.modelsProvider.getModelId(e),positivePrompt:t,width:+s?.data?.width||1024,height:+s?.data?.height||1024,numberResults:1,outputType:"URL",outputFormat:s?.data?.outputFormat||"JPEG",includeCost:!0};u&&(d.seedImage=u,d.strength=+s?.data?.strength||.5),l&&(d.negativePrompt=l);try{const t=(await i.requestImages(d))[0];let s=t.imageURL;return Ko.reportUsage({cost:t.cost},{modelEntryName:e,keySource:Kn.Smyth,agentId:n.id,teamId:n.teamId}),{output:s}}catch(e){throw new Error(`Runware Image Generation Error: ${e?.message||JSON.stringify(e)}`)}finally{await i.disconnect()}},reportTokenUsage(e,t){const s={sourceId:`api:imagegen.${t.modelEntryName.replace(He,"")}`,keySource:t.keySource,input_tokens_txt:e?.input_tokens_details?.text_tokens||0,input_tokens_img:e?.input_tokens_details?.image_tokens||0,output_tokens:e?.output_tokens,input_tokens_cache_read:e?.prompt_tokens_details?.cached_tokens||0,agentId:t.agentId,teamId:t.teamId};return ws.emit("USAGE:API",s),s},reportUsage(e,t){const s={sourceId:"api:imagegen.smyth",keySource:t.keySource,cost:e?.cost,agentId:t.agentId,teamId:t.teamId};return ws.emit("USAGE:API",s),s},isValidImageFile:(e,t)=>We[e]?.imageGen?.includes(t)};function Wo(e,t){const s=["Image","Audio","Video","Binary"];return t.inputs?.filter((e=>s.includes(e.type)))?.flatMap((t=>{const s=e[t.name];return Array.isArray(s)?s.map((t=>Es(t).parseRaw(e).result)):Es(s).parseRaw(e).result}))?.filter((e=>e))||[]}var Qo=Object.defineProperty,Ho=(e,t,s)=>((e,t,s)=>t in e?Qo(e,t,{enumerable:!0,configurable:!0,writable:!0,value:s}):e[t]=s)(e,t+"",s);class Xo extends Ca{constructor(){super(),Ho(this,"configSchema",t.object({model:t.string().max(200).required(),prompt:t.string().required().max(8e6).label("Prompt"),temperature:t.number().min(0).max(5).label("Temperature"),maxTokens:t.number().min(1).label("Maximum Tokens"),stopSequences:t.string().allow("").max(400).label("Stop Sequences"),topP:t.number().min(0).max(1).label("Top P"),topK:t.number().min(0).max(500).label("Top K"),frequencyPenalty:t.number().min(0).max(2).label("Frequency Penalty"),presencePenalty:t.number().min(0).max(2).label("Presence Penalty"),responseFormat:t.string().valid("json","text").optional().label("Response Format"),passthrough:t.boolean().optional().label("Passthrough")}))}init(){}async process(e,t,s){await super.process(e,t,s);const n=this.createComponentLogger(s,t);try{n.debug("=== LLM Prompt Log ===");const a=t.data.passthrough||!1,o=t.data.model||"echo",r=await Zn.getInstance(o,ps.agent(s.id));if(!r.connector)return{_error:`The model '${o}' is not available. Please try a different one.`,_debug:n.output};const i=await s.modelsProvider.getModelId(o);n.debug(` Model : ${i||o}`);let l,c=Es(t.data.prompt).parse(e).result;if(n.debug(" Prompt\n",c,"\n"),t.data.responseFormat=t.data?.responseFormat||"json",a){const e=new Promise((async(e,n)=>{let a="";const i=await r.promptStream({query:c,params:{...t,model:o,agentId:s.id}}).catch((e=>{console.error("Error on promptStream: ",e),n(e)}));i.on("content",(e=>{"function"==typeof s.callback&&s.callback({content:e}),s.sse.send("llm/passthrough/content",e),a+=e})),i.on("thinking",(e=>{"function"==typeof s.callback&&s.callback({thinking:e}),s.sse.send("llm/passthrough/thinking",e)})),i.on("end",(()=>{console.log("end"),e(a)}))}));l=await e}else l=await r.prompt({query:c,params:{...t,agentId:s.id}}).catch((e=>({error:e})));if(!l)return{_error:" LLM Error = Empty Response!",_debug:n.output};if(l?.error){const e=l?.error+" "+(l?.details||"");return n.error(" LLM Error=",e),{Reply:l?.data,_error:e,_debug:n.output}}n.debug(" Response \n",l);const u={Reply:l};return u._debug=n.output,u}catch(e){return{_error:e.message,_debug:n.output}}}}async function Yo(e,t,s){const n=s?s.teamId:null,a=t?.template?.settings||{},o=t?.data?.contentType||Se.none;let i="object"==typeof t?.data?.headers?JSON.stringify(t?.data?.headers):t?.data?.headers||"{}";t.data._templateVars&&a&&(i=await Es(i).parseComponentTemplateVarsAsync(a).asyncResult,i=await Es(i).parse(t.data._templateVars).result),i=await Es(i).parseTeamKeysAsync(n).asyncResult,i=Es(i).parse(e).clean().result;let l=qn(i).tryParse();return"object"!=typeof l&&(l={"x-smyth-error":"Error parsing headers"}),l=Object.fromEntries(Object.entries(l).map((([e,t])=>[e.toLowerCase(),t]))),l["content-type"]||"none"===o||(l["content-type"]=o),new r(l)}async function Zo(e,t,s){const n=s?s.teamId:null,a=t?.template?.settings||{};let o=t?.data?.url.replace(/\+/g,"%20");t.data._templateVars&&a&&(o=await Es(o).parseComponentTemplateVarsAsync(a).asyncResult,o=await Es(o).parse(t.data._templateVars).result),o=await Es(o).parseTeamKeysAsync(n).asyncResult,o=Es(o).parse(e).clean().result;return new URL(o).href}async function er(e,t){const s=new URL(e),n=s.searchParams,a=[];for(const[e,s]of n.entries())if(s.startsWith("smythfs://")){const o=await Gn.Instance.genTempUrl(s,ps.agent(t.id));a.push(o),n.set(e,o)}return{url:s.href,publicUrls:a}}async function tr(e){try{await Promise.all(e.map((e=>Gn.Instance.destroyTempUrl(e)))),console.log("Successfully cleaned up all temp urls for API Call Component")}catch(e){console.warn("Failed to clean up temp urls for API Call Component:",e)}return!0}async function sr(e,t,s){const n=s?s.teamId:null,a=t?.template?.settings||{},o=t?.data?.contentType||Se.none;let r="string"==typeof t?.data?.body?t?.data?.body?.trim():t?.data?.body;if(!r)return{data:null,headers:{}};t.data._templateVars&&a&&(r=await Es(r).parseComponentTemplateVarsAsync(a).asyncResult),r=await Es(r).parseTeamKeysAsync(n).asyncResult;const i={[Se.json]:nr,[Se.urlEncodedFormData]:ar,[Se.multipartFormData]:or,[Se.binary]:rr,[Se.text]:lr,[Se.none]:ir}[o]||ir,{data:l=null,headers:c={}}=await i(r,e,t,s);return{data:l,headers:c}}async function nr(e,t,s,n){return{data:qn(Es(e).parse(s.data._templateVars).parse(t).clean().result).tryParse()}}async function ar(e,t,s,n){const a=qn(Es(e).parse(s.data._templateVars).parse(t).clean().result).tryParse();if("object"==typeof a){const e=new URLSearchParams;for(const t in a)e.append(t,String(a[t]));return{data:e.toString()}}return{data:a}}async function or(e,t,s,n){const a=new N,o="string"==typeof e?JSON.parse(e):e;for(const e in o){let n=o[e];if(n="boolean"==typeof n?String(n):n,n=Es(n).parseRaw(t).result,n instanceof Bn){const t=await n.getBuffer(),s=new L;s.push(t||null),s.push(null);const o=await n.getName()||e;a.append(e,s,{filename:o,contentType:n.mimetype})}else if(n&&"object"==typeof n&&n?.url){const t=await Bn.from(n.url,"",n?.mimetype),s=await t.getBuffer(),o=new L;o.push(s||null),o.push(null);const r=await t.getName()||e;a.append(e,o,{filename:r,contentType:t.mimetype})}else n=Es(n).parse(s.data._templateVars).parse(t).clean().result,n&&a.append(e,n)}return{data:a,headers:a.getHeaders()}}async function rr(e,t,s,n){const a=Es(e).parseRaw(t).result;if(a&&a instanceof Bn){return{data:await a.getBuffer(),headers:{"Content-Type":a.mimetype}}}if(a&&"object"==typeof a&&a?.url){const e=await Bn.from(a.url,"",a?.mimetype);return{data:await e.getBuffer(),headers:{"Content-Type":e.mimetype}}}return{data:Buffer.from([]),headers:{}}}async function ir(e,t,s,n){return{data:"string"==typeof e?e:JSON.stringify(e),headers:{}}}function lr(e,t,s,n){return{data:Es(e).parse(s.data._templateVars).parse(t).clean().result}}async function cr(e,t,s){const n=s?s.teamId:null,a=t?.template?.settings||{};let o=t?.data?.proxy;if(!o)return!1;o=decodeURIComponent(o),t.data._templateVars&&a&&(o=await Es(o).parseComponentTemplateVarsAsync(a).parse(t.data._templateVars).asyncResult),o=await Es(o).parseTeamKeysAsync(n).asyncResult,o=Es(o).parse(e).clean().result;const r=o.split(/\n|\\n/).filter((e=>e))||[],i=Math.floor(Math.random()*r?.length),l=r[i]?.trim(),c=new URL(l),u=c.protocol.replace(":","");let d;if(c.protocol.startsWith("socks")){let e=`${u}://${c.hostname}:${c.port}`;"socks4"!==u&&"socks4a"!==u||!c.username?"socks5"===u&&c.username&&(e=`${u}://${c.username}:${c.password}@${c.hostname}:${c.port}`):e=`${u}://${c.username}@${c.hostname}:${c.port}`,d=new $(e)}else d={protocol:u,host:c.hostname,port:parseInt(c.port),auth:c.username?{username:c.username,password:c.password}:void 0};return d}const ur={binary:["image/","multipart/form-data","video/","application/msword","application/octet-stream","application/pdf","application/vnd.ms-excel","application/vnd.ms-powerpoint","application/vnd.oasis.opendocument.text","application/vnd.openxmlformats-officedocument","application/zip","application/x-7z-compressed","application/x-rar-compressed","application/x-tar","application/x-bzip","application/x-bzip2","application/x-gzip","application/vnd.android.package-archive","application/vnd.visio","application/x-deb","application/x-rpm","application/x-executable","font/ttf","font/otf","font/woff","font/woff2","model/"],json:["application/graphql","application/json","application/ld+json","application/vnd.api+json"],text:["text/","application/xml","application/xhtml+xml","application/csv","application/x-www-form-urlencoded","application/x-yaml","application/yaml","application/javascript","application/sql","application/rtf"]},dr={json:function(e){return JSON.parse(Buffer.from(e).toString("utf8")||"{}")},text:mr,binary:pr};function mr(e){return Buffer.from(e).toString("utf8")}async function pr(e,t,s){const n=Bn.from(e,null,t);return await n.getJsonData(ps.agent(s))}async function hr(e,t){if(!e?.data)return null;const s=e.data,n=e.headers["content-type"],a=n?.split(";")[0];let o=Object.keys(ur).find((e=>ur[e].includes(a)));o||(o=Object.keys(ur).find((e=>ur[e].some((e=>a?.startsWith(e))))));const r=dr[o];return r?r(s,n,t.id):(i=n)&&xt.some((e=>i.startsWith(e)))||(e=>{if("string"==typeof e)return!1;try{const t=_t(e);return!!t&&c(t,t.byteLength)}catch(e){return!1}})(s)?pr(s,n,t.id):mr(s);var i}var gr=Object.defineProperty,yr=(e,t,s)=>((e,t,s)=>t in e?gr(e,t,{enumerable:!0,configurable:!0,writable:!0,value:s}):e[t]=s)(e,"symbol"!=typeof t?t+"":t,s);const fr=Wt("AccessTokenManager");let br;ws.on("SRE:Booted",(()=>{br=Ts.getManagedVaultConnector()}));class wr{constructor(e,t,s,n,a,o,r,i,l,c){yr(this,"clientId"),yr(this,"clientSecret"),yr(this,"primaryToken"),yr(this,"secondaryToken"),yr(this,"tokenUrl"),yr(this,"expires_in"),yr(this,"data"),yr(this,"keyId"),yr(this,"logger"),yr(this,"agent"),this.clientId=e,this.clientSecret=t,this.primaryToken=o,this.secondaryToken=s,this.tokenUrl=n,this.expires_in=a,this.data=r,this.keyId=i,this.logger=l,this.agent=c}async getAccessToken(){try{const e=(new Date).getTime();if(!this.secondaryToken&&!this.expires_in)return fr.log("Using long-lived access token"),this.logger.debug("Using long-lived access token. If authentication failes, please re-authenticate and try again"),this.primaryToken;if(!this.expires_in||e>=Number(this.expires_in)){if(!this.secondaryToken)throw this.logger.debug("Refresh token is missing. Please re authenticate"),fr.log("Refresh token is missing. Please re authenticate..."),new Error("Reauthentication required");return this.logger.debug("Access token is expired or missing. Refreshing access token..."),fr.log("Access token is expired or missing. Refreshing access token..."),await this.refreshAccessToken()}return fr.log("Access token is still valid"),this.logger.debug("Access token is still valid."),this.primaryToken}catch(e){throw fr.error("Error fetching access token:",e),this.logger.debug("Error fetching access token"),e}}async refreshAccessToken(){try{const e=await o.post(this.tokenUrl,new URLSearchParams({client_id:this.clientId,client_secret:this.clientSecret,refresh_token:this.secondaryToken,grant_type:"refresh_token"}).toString(),{headers:{"Content-Type":"application/x-www-form-urlencoded"}}),t=e?.data?.access_token;fr.log("Access token refreshed successfully."),this.logger.debug("Access token refreshed successfully.");const s=e?.data?.expires_in?1e3*e?.data?.expires_in:e?.data?.expires_in,n=s?(new Date).getTime()+s:s;this.data.primary=t,this.data.expires_in=n?n?.toString():n;const a=await br.user(ps.agent(this.agent.id)).set(this.keyId,JSON.stringify(this.data));return a&&200===a.status?(fr.log("Access token value is updated successfully."),this.logger.debug("Access token value is updated successfully.")):(fr.log("Warning: new access token value is not updated."),this.logger.debug("Warning: new access token value is not updated.")),t}catch(e){throw fr.error("Failed to refresh access token:",e),this.logger.debug(`Failed to refresh access token: ${e}`),new Error("Failed to refresh access token.")}}}const Ir=Wt("OAuth.helper");let kr;function Ar(e={}){let t={};const s=new URL(e.url).searchParams;t=Object.fromEntries(s.entries());const n=e.headers?.["Content-Type"]||"";if(n===Se.urlEncodedFormData){if("string"==typeof e.data){const s=new URLSearchParams(e.data);t={...t,...Object.fromEntries(s)}}}else if(n===Se.json){if(e.data){const s=m.createHash("sha1").update(JSON.stringify(e.data)).digest("base64");t.oauth_body_hash=s}}else if(n===Se.multipartFormData){const s=e.data;for(const[e,n]of s.entries())"object"==typeof n&&null!==n&&"size"in n&&"type"in n||(t[e]=n)}return t}ws.on("SRE:Booted",(()=>{try{kr=Ts.getManagedVaultConnector()}catch(e){Ir.warn("Could not find a compatible ManagedVault connector, OAuth APICalls will not work")}}));const vr=(e,t,s,n={})=>{const a=new G({consumer:{key:s.consumerKey,secret:s.consumerSecret},signature_method:"HMAC-SHA1",hash_function:(e,t)=>m.createHmac("sha1",t).update(e).digest("base64")}),o={url:e,method:t,...n},r=a.authorize(o,{key:s.token,secret:s.tokenSecret});return a.toHeader(r)},xr=async(e,t)=>{let s=null;try{s=`OAUTH_${t.componentId??t.id}_TOKENS`;try{const n=await kr.user(ps.agent(e.id)).get(s),a="object"==typeof n?n:JSON.parse(n||"{}");if(!a)throw new Error("Failed to retrieve OAuth tokens from vault. Please authenticate ...");const o=a.primary,r=a.secondary,i=a.type;if("oauth2"===i&&"OAuth2 Client Credentials"!==t.data.oauthService&&(r||Ir.warn("Warning: refresh_token is missing for OAuth2"),a.expires_in||Ir.warn("Warning: expires_in is missing for OAuth2.")),"OAuth2 Client Credentials"!==t.data.oauthService&&!o)throw new Error("Retrieved OAuth tokens do not exist, invalid OR incomplete. Please authenticate ...");const l={primaryToken:o,secondaryToken:r,type:i};return"oauth"===i?("consumerKey"in a&&(l.consumerKey=a.consumerKey),"consumerSecret"in a&&(l.consumerSecret=a.consumerSecret),l.team=a.team):"oauth2"===i&&(l.tokenURL=a.tokenURL,"clientID"in a&&(l.clientID=a.clientID),"clientSecret"in a&&(l.clientSecret=a.clientSecret),l.expiresIn=a.expires_in??0,l.team=a.team),{responseData:l,data:a,keyId:s}}catch(e){throw new Error(`Failed to parse retrieved tokens: ${e}`)}}catch(e){throw Ir.error("Error retrieving OAuth tokens:",e),e}},_r=async(e,t,s,n,a={},r)=>{let i={};const{responseData:l,data:c,keyId:u}=await xr(e,t);try{let d=JSON.stringify({consumerKey:t.data.consumerKey,consumerSecret:t.data.consumerSecret,clientID:t.data.clientID,clientSecret:t.data.clientSecret,tokenURL:t.data.tokenURL});d=await Es(d).parseTeamKeysAsync(l.team||e.teamId).asyncResult;const m=JSON.parse(d);if("OAuth2 Client Credentials"===m.oauthService){const s=await async function(e,t,s,n,a,r){const i=e=>{throw t.debug(e),new Error(e)};try{e=e[s]||{};const{clientID:l,clientSecret:c,tokenURL:u}=a.data,d=(new Date).getTime();if(!n.expiresIn||d>=Number(n.expiresIn)){l&&c&&u||i("Missing client_id, client_secret OR token_url");const n=new URLSearchParams({grant_type:"client_credentials",client_id:l,client_secret:c}),m=await o.post(u,n.toString(),{headers:{"Content-Type":"application/x-www-form-urlencoded"}});Ir.log("Access token refreshed successfully."),t.debug("Access token refreshed successfully.");const p=m.data.access_token,h=d+1e3*m.data.expires_in;return 0===Object.keys(e).length&&(e={primary:"",secondary:"",type:"oauth2",tokenURL:u,expires_in:"",team:r.teamId,oauth_info:{oauth_keys_prefix:`OAUTH_${a.componentId??a.id}`,service:"oauth2_client_credentials",tokenURL:u,clientID:l,clientSecret:c}}),e.primary=p,e.expires_in=h.toString(),await kr.user(ps.agent(r.id)).set(s,e),p}return Ir.log("Access token value is still valid."),t.debug("Access token value is still valid."),n.primaryToken}catch(e){i(`Failed to refresh access token: ${e}`)}}(c,n,u,l,t,e);i.Authorization=`Bearer ${s}`}else if("oauth"===l.type){const e=vr(r,s.method,{consumerKey:m.consumerKey,consumerSecret:m.consumerSecret,token:l.primaryToken,tokenSecret:l.secondaryToken},a);i={...s.headers,...e},n.debug("OAuth1 access token check success.")}else if("oauth2"===l.type){const t=new wr(m.clientID,m.clientSecret,l.secondaryToken,m.tokenURL,l.expiresIn,l.primaryToken,c,u,n,e),s=await t.getAccessToken();i.Authorization=`Bearer ${s}`}return i}catch(e){throw n.error(`Access token check failed: ${e}`),e}};var Tr=Object.defineProperty,Lr=(e,t,s)=>((e,t,s)=>t in e?Tr(e,t,{enumerable:!0,configurable:!0,writable:!0,value:s}):e[t]=s)(e,"symbol"!=typeof t?t+"":t,s);class Cr extends Ca{constructor(){super(),Lr(this,"schema",{name:"APICall",description:"Use this component to make an API call",inputs:{},outputs:{Headers:{description:"The headers of the API call response",default:!0},Response:{description:"The response of the API call",default:!0}}}),Lr(this,"configSchema",t.object({method:t.string().valid("GET","POST","PUT","PATCH","DELETE","HEAD","OPTIONS").required().label("Method"),url:t.string().max(8192).required().label("URL"),headers:t.any().allow("").label("Headers"),contentType:t.string().valid("none","application/json","multipart/form-data","binary","application/x-www-form-urlencoded","text/plain","application/xml").label("Content-Type"),body:t.any().allow("").label("Body"),_templateSettings:t.object().allow(null).label("Template Settings"),_templateVars:t.object().allow(null).label("Template Variables"),proxy:t.string().allow("").label("Proxy"),oauthService:t.string().allow("").label("OAuth Service"),scope:t.string().allow("").label("Scope"),authorizationURL:t.string().allow("").label("Authorization URL"),tokenURL:t.string().allow("").label("Token URL"),clientID:t.string().allow("").label("Client ID"),clientSecret:t.string().allow("").label("Client Secret"),oauth2CallbackURL:t.string().allow("").label("OAuth2 Callback URL"),callbackURL:t.string().allow("").label("Callback URL"),requestTokenURL:t.string().allow("").label("Request Token URL"),accessTokenURL:t.string().allow("").label("Access Token URL"),userAuthorizationURL:t.string().allow("").label("User Authorization URL"),consumerKey:t.string().allow("").label("Consumer Key"),consumerSecret:t.string().allow("").label("Consumer Secret"),oauth1CallbackURL:t.string().allow("").label("OAuth1 Callback URL"),authenticate:t.string().allow("").label("Authenticate")}))}init(){}async process(e,t,s){await super.process(e,t,s);const n=this.createComponentLogger(s,t);let a=[];try{n.debug("=== API Call Log ===");const r=t?.data?.method||"get",i={};i.method=r,i.url=await Zo(e,t,s),({url:i.url,publicUrls:a}=await er(i.url,s));const{data:l,headers:c}=await sr(e,t,s);let u;l&&(i.data=l,u=await Rt(l)),i.headers=(await Yo(e,t,s)).concat({...c});const d=await cr(e,t,s);if(d)if(d instanceof $){const e=i.url?.startsWith("https://");i[e?"httpsAgent":"httpAgent"]=d}else i.proxy=d;let m,p={},h={};try{if(t?.data?.oauthService&&"None"!==t?.data?.oauthService){const e=new URL(i.url).origin,a=Ar(i),o=await _r(s,t,i,n,a,e);i.headers=i.headers.concat({...o})}i.responseType="arraybuffer",n.debug("Making API call",{...i,data:u});const e=await o.request(i),a=await hr(e,s);n.debug("API call Response Headers",e.headers),p=a,n.debug("API call Response\n",p),h=Object.fromEntries(Object.entries(e.headers))}catch(e){n.debug(`Error making API call: ${e.message}`),h=e?.response?.headers?Object.fromEntries(Object.entries(e.response.headers)):{},p=await hr(e.response,s),m=e.message}return{Response:p,Headers:h,_error:m,_debug:n.output}}catch(e){return{_error:e.message,_debug:n.output}}finally{a.length>0&&await tr(a)}}}var Sr=Object.defineProperty,Pr=(e,t,s)=>((e,t,s)=>t in e?Sr(e,t,{enumerable:!0,configurable:!0,writable:!0,value:s}):e[t]=s)(e,t+"",s);class Mr extends Ca{constructor(){super(),Pr(this,"configSchema",t.object({fields:t.string().max(3e4).allow("").label("Prompt")}))}init(){}async process(e,t,s){await super.process(e,t,s);const n=this.createComponentLogger(s,t);n.debug("=== JSONFilter Log ===");let a={},o=null;try{t.id;const s=t.data.fields;a=function(e,t){const s=t?.split(",").map((e=>e.trim()));function n(e){return Array.isArray(e)?e.map(n):null!==e&&"object"==typeof e?Object.keys(e).filter((e=>s.includes(e))).reduce(((t,s)=>(t[s]=n(e[s]),t)),{}):e}return n(e)}(e.Input,s),n.debug("Output filtered")}catch(e){o=e,n.error(" JSONFilter Error",e)}return{Output:a,_error:o,_debug:n.output}}}class Rr extends Ca{constructor(){super()}init(){}async process(e,t,s){await super.process(e,t,s),this.createComponentLogger(s,t);const n={Output:!0};for(let s of t.inputs)if(!e[s.name]){n.Output=void 0;break}return n.Verified=void 0!==n.Output,n.Unverified=!n.Verified,n.Verified||delete n.Verified,n.Unverified||delete n.Unverified,n}}class Or extends Ca{constructor(){super()}init(){}async process(e,t,s){await super.process(e,t,s);const n={Output:void 0};console.log(e),console.log(t);for(let s of t.inputs)if(e[s.name]){n.Output=!0;break}return n.Verified=void 0!==n.Output,n.Unverified=!n.Verified,n.Verified||delete n.Verified,n.Unverified||delete n.Unverified,n}}class Dr extends Ca{constructor(){super()}init(){}async process(e,t,s){await super.process(e,t,s);const n={Output:void 0};let a=0;for(let s of t.inputs)e[s.name]&&a++;return 1===a&&(n.Output=!0),n.Verified=void 0!==n.Output,n.Unverified=!n.Verified,n.Verified||delete n.Verified,n.Unverified||delete n.Unverified,n}}var qr=Object.defineProperty,Er=(e,t,s)=>((e,t,s)=>t in e?qr(e,t,{enumerable:!0,configurable:!0,writable:!0,value:s}):e[t]=s)(e,t+"",s);class Nr extends Ca{constructor(){var e;super(),Er(this,"configSchema",t.object({minSetInputs:t.string().custom((e={min:0,max:9},(t,s)=>{const n=Number(t),a=s.schema._flags.label||s.state.path[s.state.path.length-1];if(isNaN(n))throw new Error(`The value for '${a}' must be a number`);if(void 0!==e.min&&void 0!==e.max){if(n<e.min||n>e.max)throw new Error(`The value for '${a}' must be from ${e.min} to ${e.max}`)}else if(void 0!==e.min){if(n<e.min)throw new Error(`The value for '${a}' must be greater or equal to ${e.min}`)}else if(void 0!==e.max&&n>e.max)throw new Error(`The value for '${a}' must be less or equal to ${e.max}`);return t}),"custom range validation").label("Minimum Inputs")}))}init(){}async process(e,t,s){await super.process(e,t,s),this.createComponentLogger(s,t);const n={Output:void 0};if("string"!=typeof t.data.minSetInputs||""===t.data.minSetInputs.trim()||isNaN(Number(t.data.minSetInputs)))return n;const a=Number(t.data.minSetInputs);if(t.inputs.length<a)return n;let o=0;for(let s of t.inputs)e[s.name]&&o++;return o>=a&&(n.Output=!0),n.Verified=void 0!==n.Output,n.Unverified=!n.Verified,n.Verified||delete n.Verified,n.Unverified||delete n.Unverified,n}}var $r=Object.defineProperty,Gr=(e,t,s)=>((e,t,s)=>t in e?$r(e,t,{enumerable:!0,configurable:!0,writable:!0,value:s}):e[t]=s)(e,t+"",s);class jr extends Ca{constructor(){var e;super(),Gr(this,"configSchema",t.object({maxSetInputs:t.string().custom((e={min:0,max:9},(t,s)=>{const n=Number(t),a=s.schema._flags.label||s.state.path[s.state.path.length-1];if(isNaN(n))throw new Error(`The value for '${a}' must be a number`);if(void 0!==e.min&&void 0!==e.max){if(n<e.min||n>e.max)throw new Error(`The value for '${a}' must be from ${e.min} to ${e.max}`)}else if(void 0!==e.min){if(n<e.min)throw new Error(`The value for '${a}' must be greater or equal to ${e.min}`)}else if(void 0!==e.max&&n>e.max)throw new Error(`The value for '${a}' must be less or equal to ${e.max}`);return t}),"custom range validation").label("Maximum Inputs")}))}init(){}async process(e,t,s){await super.process(e,t,s);const n={Output:void 0};if("string"!=typeof t.data.maxSetInputs||""===t.data.maxSetInputs.trim()||isNaN(Number(t.data.maxSetInputs)))return n;const a=Number(t.data.maxSetInputs);if(t.inputs.length<a)return n;let o=0;for(let s of t.inputs)if(e[s.name]&&(o++,o>a))break;return o<=a&&(n.Output=!0),n.Verified=void 0!==n.Output,n.Unverified=!n.Verified,n.Verified||delete n.Verified,n.Unverified||delete n.Unverified,n}}var Ur=Object.defineProperty,Br=(e,t,s)=>((e,t,s)=>t in e?Ur(e,t,{enumerable:!0,configurable:!0,writable:!0,value:s}):e[t]=s)(e,t+"",s);let Fr;function Vr(){return Fr||(Fr=Ts.getCacheConnector()),Fr}class zr extends Ca{constructor(){super(),Br(this,"configSchema",t.object({model:t.string().max(200).required(),behavior:t.string().max(3e4).allow("").label("Behavior"),passthrough:t.boolean().optional().label("Passthrough")}))}init(){}async process(e,t,s){await super.process(e,t,s);const n=this.createComponentLogger(s,t);try{n.debug("== LLM Assistant Log ==\n");const a=t.data.passthrough||!1,o=t.data.model||"echo",r=t.data.ttl||void 0;const i=await Zn.getInstance(o,ps.agent(s.id));if(!i.connector)return{_error:`The model '${o}' is not available. Please try a different one.`,_debug:n.output};const l=await s.modelsProvider.getModelId(o);n.debug(` Model : ${l||o}`);const c=e.UserInput,u=e.UserId,d=e.ConversationId;let m=Es(t.data.behavior).parse(e).result;n.debug(`[Parsed Behavior] \n${m}\n\n`);let p=2048;await s.modelsProvider.isStandardLLM(o);const h=!0;p=await s.modelsProvider.getMaxCompletionTokens(o,h);const y=await async function(e,t,s,n=2048){if(!t&&!s)return[];const a=Vr(),o=`${e}:conv-u${t}-c${s}`,r=await(a.requester(ps.agent(e))?.get(o));let i=r?qn(r).tryParse():[];const l=[];let c=0;"system"==i[0]?.role&&(c+=g(i[0]?.content).length+3);for(let e=i.length-1;e>=0;e--){if("system"==i[e].role)continue;const t=i[e],s=g(t?.content).length+3;if(c+s>n)break;l.unshift(t),c+=s}return"system"==i[0]?.role&&l.unshift(i[0]),l}(s.id,u,d,Math.round(p/2));y.push({role:Jn.User,content:c}),y[0]?.role!=Jn.System&&y.unshift({role:Jn.System,content:m});let f;if(a){const e=new Promise((async(e,n)=>{let a="";const r=await i.promptStream({contextWindow:y,params:{...t,model:o,agentId:s.id}}).catch((e=>{console.error("Error on promptStream: ",e),n(e)}));r.on("content",(e=>{"function"==typeof s.callback&&s.callback({content:e}),s.sse.send("llm/passthrough/content",e),a+=e})),r.on("thinking",(e=>{"function"==typeof s.callback&&s.callback({thinking:e}),s.sse.send("llm/passthrough/thinking",e)})),r.on("end",(()=>{console.log("end"),e(a)}))}));f=await e}else f=await i.prompt({contextWindow:y,params:{...t,agentId:s.id}}).catch((e=>({error:e})));if(!f)return{_error:" LLM Error = Empty Response!",_debug:n.output};if(f?.error){const e=f?.error+" "+(f?.details||"");return n.error(" LLM Error=",e),{Response:f?.data,_error:e,_debug:n.output}}y.push({role:"assistant",content:f}),async function(e,t,s,n,a){if(!t&&!s)return;const o=`${e}:conv-u${t}-c${s}`;Vr().requester(ps.agent(e)).set(o,JSON.stringify(n),null,null,a)}(s.id,u,d,y,r),n.debug(" Response \n",f);const b={Response:f};return b._debug=n.output,b}catch(e){return{_error:e.message,_debug:n.output}}}}var Jr=Object.defineProperty,Kr=(e,t,s)=>((e,t,s)=>t in e?Jr(e,t,{enumerable:!0,configurable:!0,writable:!0,value:s}):e[t]=s)(e,t+"",s);class Wr extends Ca{constructor(){super(),Kr(this,"configSchema",t.object({antiScrapingProtection:t.boolean().default(!1).label("Enable Anti-Scraping Protection"),javascriptRendering:t.boolean().default(!1).label("Enable JavaScript Rendering"),autoScroll:t.boolean().default(!1).label("Enable Auto Scroll"),format:t.string().default("markdown").label("Format").optional()}))}init(){}async process(e,t,s){await super.process(e,t,s);const n=this.createComponentLogger(s,t);try{n.debug("=== Web Scrape Log ===");let a,o={};const r=this.extractUrls(e);n.debug("Payload:",JSON.stringify(t.data)),n.debug(`Vaild URLs: ${JSON.stringify(r)}`);const i=s.teamId,l=await Uo(ps.team(i),"scrapfly"),c=await Promise.all(r.map((e=>this.scrapeURL(e,t.data,l)))),u=c.filter((e=>e.success)).map((e=>({url:e.url,content:e.content})));o={Results:u,FailedURLs:c.filter((e=>!e.success)).map((e=>({url:e.url,error:e.error})))};const d=c.reduce(((e,t)=>e+(t.cost||0)),0);return this.reportUsage({urlsScraped:u?.length,agentId:s.id,teamId:s.teamId,totalCredits:d}),{...o,_error:a,_debug:n.output}}catch(e){const t=e?.message||e?.response?.data||e.toString();return n.error(` Error scraping web \n${t}\n`),{Output:void 0,_error:t,_debug:n.output}}}async scrapeURL(e,t,s){try{const n=await o({method:"get",url:"https://api.scrapfly.io/scrape",params:{url:encodeURIComponent(e),key:s,cost_budget:80,...t.format?{format:t.format}:{format:"markdown"},...t.antiScrapingProtection&&{asp:!0},...t.javascriptRendering&&{render_js:!0},...t.autoScroll&&{auto_scroll:!0,render_js:!0}}});return{content:n.data?.result?.content,success:!0,url:e,cost:n.data?.context?.cost?.total||0}}catch(t){return{content:void 0,success:!1,error:t?.response?.data?.result?.error?.message||"Failed to scrape URL",url:e,cost:0}}}extractUrls(e){const t=[];for(const s in e)if(Object.prototype.hasOwnProperty.call(e,s)){const n=e[s];if("string"==typeof n)try{let e=JSON.parse(n);for(const s of e)this.isValidUrl(s)&&t.push(s.trim())}catch(e){const s=n.split(",");for(const e of s)this.isValidUrl(e)&&t.push(e.trim())}else if("object"==typeof n)for(const e of n)this.isValidUrl(e)&&t.push(e.trim())}return t}isValidUrl(e){try{return new URL(e),!0}catch(e){return!1}}reportUsage({urlsScraped:e,agentId:t,teamId:s,totalCredits:n}){ws.emit("USAGE:API",{sourceId:"api:webscrape.smyth",credits:n,agentId:t,teamId:s})}}var Qr=Object.defineProperty,Hr=(e,t,s)=>((e,t,s)=>t in e?Qr(e,t,{enumerable:!0,configurable:!0,writable:!0,value:s}):e[t]=s)(e,"symbol"!=typeof t?t+"":t,s);class Xr extends Ca{constructor(){super(),Hr(this,"schema",{name:"TavilyWebSearch",description:"Use this component to generate a responses from an LLM",inputs:{SearchQuery:{type:"Text",description:"The search query to get the web search results of",default:!0}},outputs:{Results:{type:"Array",description:"The web search results",default:!0}}}),Hr(this,"configSchema",t.object({includeImages:t.boolean().default(!1).label("Include Image Results"),sourcesLimit:t.number().integer().default(10).label("Sources Limit"),searchTopic:t.string().valid("general","news").label("Search Topic"),includeQAs:t.boolean().default(!1).label("Include QAs"),timeRange:t.string().valid("None","day","week","month","year").label("Time Range"),includeRawContent:t.boolean().default(!1).label("Include Raw Content"),excludeDomains:t.string().allow("").label("Exclude Domains")}))}init(){}async process(e,t,s){await super.process(e,t,s);const n=this.createComponentLogger(s,t);try{n.debug("=== Web Scrape Log ===");let a,r={},i=e.SearchQuery;const l=s.teamId,c=await Uo(ps.team(l),"tavily");n.debug("Payload:",JSON.stringify(t.data));const u=await o({method:"post",url:"https://api.tavily.com/search",data:{api_key:c,query:i,topic:t.data.searchTopic,exclude_domains:t.data.excludeDomains?.length?t.data.excludeDomains.split(","):[],max_results:t.data.sourcesLimit,..."None"!==t.data.timeRange?{time_range:t.data.timeRange}:{},...t.data.includeImages?{include_images:!0}:{},...t.data.includeQAs?{include_answer:!0}:{},...t.data.includeRawContent?{include_raw_content:!0}:{}}});return r={Results:u.data.results,...t.data.includeImages?{Images:u.data.images}:{},...t.data.includeQAs?{Answer:u.data.answer}:{}},this.reportUsage({agentId:s.id,teamId:s.teamId}),{...r,_error:a,_debug:n.output}}catch(e){const t=e?.message||e?.response?.data||e.toString();return n.error(` Error scraping web \n${JSON.stringify(t)}\n`),{Output:void 0,_error:t,_debug:n.output}}}reportUsage({agentId:e,teamId:t}){ws.emit("USAGE:API",{sourceId:"api:websearch.smyth",credits:1,agentId:e,teamId:t})}}var Yr=Object.defineProperty,Zr=(e,t,s)=>((e,t,s)=>t in e?Yr(e,t,{enumerable:!0,configurable:!0,writable:!0,value:s}):e[t]=s)(e,t+"",s);class ei extends Ca{constructor(){super(),Zr(this,"configSchema",t.object({model:t.string().optional(),openAiModel:t.string().optional(),mcpUrl:t.string().max(2048).uri().required().description("URL of the MCP"),descForModel:t.string().max(5e3).required().allow("").label("Description for Model"),name:t.string().max(500).required().allow(""),desc:t.string().max(5e3).required().allow("").label("Description"),logoUrl:t.string().max(8192).allow(""),id:t.string().max(200),version:t.string().max(100).allow(""),domain:t.string().max(253).allow(""),prompt:t.string().max(5e3).optional().allow("").label("Prompt")}))}init(){}async process(e,t,s){await super.process(e,t,s);const n=this.createComponentLogger(s,t);n.debug("=== MCP Client Log ===");try{const a=t?.data?.mcpUrl;if(!a)return{_error:"Please provide a MCP URL!",_debug:n.output};const o=t?.data?.model||t?.data?.openAiModel,r=Es(t?.data?.descForModel).parse(e).result;let i=Es(t?.data?.prompt).parse(e).result;if(!i)return{_error:"Please provide a prompt",_debug:n.output};const l=new URL(a),c=new U(l),u=new j({name:"sse-client",version:"1.0.0"});await u.connect(c);const d=await u.listTools(),m=new ya(o,{openapi:"3.0.1",info:{title:`${s?.name}`,version:`${s?.version}`,description:r},servers:[{url:s?.domain}],paths:{}},{agentId:s?.id});for(const e of d.tools){let t={};Object.entries(e.inputSchema.properties).forEach((([s,n])=>{t[s]={description:"",required:(e.inputSchema.required||[]).includes(s)||!1,type:n.type,..."array"===n.type?{items:{type:"string"}}:{}}})),await m.addTool({name:e.name,description:e.description,arguments:t,handler:async t=>await u.callTool({name:e.name,arguments:t})})}const p=await m.prompt(i);return n.debug("Response:\n",p,"\n"),{Output:p,_debug:n.output}}catch(e){return{_error:`Error on running MCP Client!\n${e?.message||JSON.stringify(e)}`,_debug:n.output}}}}const ti={Component:new Ca,Note:new Ca,APIEndpoint:new $a,APIOutput:new Ua,PromptGenerator:new Xo,LLMPrompt:new Xo,APICall:new Cr,FSleep:new Lo,FHash:new bo,FEncDec:new fo,FSign:new To,FTimestamp:new Co,DataSourceLookup:new yo,DataSourceIndexer:new lo,DataSourceCleaner:new mo,JSONFilter:new Mr,LogicAND:new Rr,LogicOR:new Or,LogicXOR:new Dr,LogicAtLeast:new Nr,LogicAtMost:new jr,AgentPlugin:new Ma,LLMAssistant:new zr,Async:new Qa,Await:new Za,ForEach:new xo,HuggingFace:new Go,GPTPlugin:new Do,Classifier:new so,GenAILLM:new Mo,FileStore:new ko,WebSearch:new Xr,WebScrape:new Wr,TavilyWebSearch:new Xr,ScrapflyWebScrape:new Wr,ComponentHost:new oo,ImageGenerator:new Jo,MCPClient:new ei};function si(){const e=[];for(let t=1;t<100;t++)e.push({ID:`ExpireAfter${t}Days`,Filter:{Tag:{Key:"Expiry",Value:"ExpireAfter"+t+"Days"}},Status:"Enabled",Expiration:{Days:t}});for(let t=100;t<1e3;t+=10)e.push({ID:`ExpireAfter${t}Days`,Filter:{Tag:{Key:"Expiry",Value:"ExpireAfter"+t+"Days"}},Status:"Enabled",Expiration:{Days:t}});for(let t=1e3;t<=1e4;t+=100)e.push({ID:`ExpireAfter${t}Days`,Filter:{Tag:{Key:"Expiry",Value:"ExpireAfter"+t+"Days"}},Status:"Enabled",Expiration:{Days:t}});return e}function ni(e){let t;if(e>=1&&e<100)t=`ExpireAfter${e}Days`;else if(e>=100&&e<1e3){t=`ExpireAfter${10*Math.ceil(e/10)}Days`}else{if(!(e>=1e3&&e<=1e4))throw new Error("Invalid expiry days. Please provide a valid expiry days value.");t=`ExpireAfter${100*Math.ceil(e/100)}Days`}return{Key:"Expiry",Value:t}}function ai(e,t){return t.filter((t=>!e.some((e=>e.ID===t.ID))))}function oi(e){return Math.ceil(e/86400)}async function ri(e,t){try{const s=new B({Bucket:e}),n=(await t.send(s)).Rules,a=ai(n,si());if(a.length>0){const s={Bucket:e,LifecycleConfiguration:{Rules:[...n,...a]}},o=new F(s);await t.send(o)}else console.log("Lifecycle configuration already exists")}catch(s){if("NoSuchLifecycleConfiguration"===s.code){console.log("No lifecycle configuration found. Creating new configuration...");const s=si(),n=new F({Bucket:e,LifecycleConfiguration:{Rules:s}});await t.send(n),console.log("Lifecycle configuration created successfully.")}else console.error("Error checking lifecycle configuration:",s)}}var ii=Object.defineProperty,li=Object.getOwnPropertyDescriptor,ci=(e,t,s,n)=>{for(var a,o=li(t,s),r=e.length-1;r>=0;r--)(a=e[r])&&(o=a(t,s,o)||o);return o&&ii(t,s,o),o},ui=(e,t,s)=>((e,t,s)=>t in e?ii(e,t,{enumerable:!0,configurable:!0,writable:!0,value:s}):e[t]=s)(e,"symbol"!=typeof t?t+"":t,s);Object.defineProperty(global,"crypto",{value:{getRandomValues:e=>m.randomBytes(e.length)}});const di=Wt("S3Storage");class mi extends Pn{constructor(e){super(e),this._settings=e,ui(this,"name","S3Storage"),ui(this,"client"),ui(this,"bucket"),ui(this,"isInitialized",!1),this.bucket=e.bucket;const t={};e.region&&(t.region=e.region),e.accessKeyId&&e.secretAccessKey&&(t.credentials={accessKeyId:e.accessKeyId,secretAccessKey:e.secretAccessKey}),this.client=new V(t),this.initialize()}async initialize(){await ri(this.bucket,this.client),this.isInitialized=!0}async read(e,t){const s={Bucket:this.bucket,Key:t},n=new z(s),a=await this.client.send(n),o=a?.Expiration;if(o){const e=o.match(/expiry-date="([^"]+)"/);if(e){const t=new Date(e[1]);if(new Date>t){const e=new J(s);return void await this.client.send(e)}}}const r=new K(s);try{const e=await this.client.send(r);return await vt(e.Body)}catch(e){if("NotFound"===e.name||"NoSuchKey"===e.name)return;throw di.error("Error reading object from S3",e.name,e.message),e}}async getMetadata(e,t){try{return await this.getS3Metadata(t)}catch(e){throw di.error("Error getting access rights in S3",e.name,e.message),e}}async setMetadata(e,t,s){try{let e=await this.getS3Metadata(t);e||(e={}),e={...e,...s},await this.setS3Metadata(t,e)}catch(e){throw di.error("Error setting access rights in S3",e),e}}async write(e,t,s,n,a){this.isInitialized||await this.initialize();const o=e.candidate;let r={...a,"x-amz-meta-acl":Ln.from(n).addAccess(o.role,o.id,es.Owner).ACL};const i=new W({Bucket:this.bucket,Key:t,Body:s,Metadata:this.serializeS3Metadata(r),ContentType:r.ContentType});try{await this.client.send(i)}catch(e){throw di.error("Error writing object to S3",e.name,e.message),e}}async delete(e,t){const s=new J({Bucket:this.bucket,Key:t});try{await this.client.send(s)}catch(e){throw di.error("Error deleting object from S3",e.name,e.message),e}}async exists(e,t){const s=new z({Bucket:this.bucket,Key:t});try{return await this.client.send(s),!0}catch(e){if("NotFound"===e.name||"NoSuchKey"===e.name)return!1;throw di.error("Error checking object existence in S3",e.name,e.message),e}}async getResourceACL(e,t){const s=await this.getS3Metadata(e);return void 0!==s?Ln.from(s?.["x-amz-meta-acl"]):(new Ln).addAccess(t.role,t.id,es.Owner)}async getACL(e,t){try{const e=await this.getS3Metadata(t);return Ln.from(e?.["x-amz-meta-acl"])}catch(e){throw di.error("Error getting access rights in S3",e.name,e.message),e}}async setACL(e,t,s){try{let n=await this.getS3Metadata(t);n||(n={}),n["x-amz-meta-acl"]=Ln.from(s).addAccess(e.candidate.role,e.candidate.id,es.Owner).ACL,await this.setS3Metadata(t,n)}catch(e){throw di.error("Error setting access rights in S3",e),e}}async expire(e,t,s){const n=ni(oi(s)),a=new Q({Bucket:this.bucket,Key:t,Tagging:{TagSet:[{Key:n.Key,Value:n.Value}]}});await this.client.send(a)}migrateMetadata(e){if(e.agentid||e.teamid||e.userid){const t=["agentid","teamid","userid"],s=new Ln;for(let n of t){if(!e[n])continue;const t="agentid"===n?ts.Agent:"teamid"===n?ts.Team:ts.User;s.addAccess(t,e[n].toString(),[es.Owner,es.Read,es.Write]),delete e[n]}s.migrated=!0;const n={"x-amz-meta-acl":s.ACL};for(let t in e)n[t]=e[t];return n}return e}serializeS3Metadata(e){let t={};e["x-amz-meta-acl"]&&(e["x-amz-meta-acl"]&&(t["x-amz-meta-acl"]="string"==typeof e["x-amz-meta-acl"]?e["x-amz-meta-acl"]:Ln.from(e["x-amz-meta-acl"]).serializedACL),delete e["x-amz-meta-acl"]);for(let s in e)"ContentType"!=s&&(t[s]="string"==typeof e[s]?e[s]:JSON.stringify(e[s]));return t}deserializeS3Metadata(e){let t={};for(let s in e)if("x-amz-meta-acl"!==s)try{t[s]=JSON.parse(e[s])}catch(n){t[s]=e[s]}else t[s]=Ln.from(e[s]).ACL;return t=this.migrateMetadata(t),t}async getS3Metadata(e){try{const t=new z({Bucket:this.bucket,Key:e}),s=await this.client.send(t),n=s.Metadata;if(!n||0===Object.keys(n).length)return{};let a=this.deserializeS3Metadata(n);return a.ContentType||(a.ContentType=s.ContentType?s.ContentType:"application/octet-stream"),a}catch(e){if("NotFound"===e.name||"NoSuchKey"===e.name)return;throw di.error("Error reading object metadata from S3",e.name,e.message),e}}async setS3Metadata(e,t){try{const s=new K({Bucket:this.bucket,Key:e}),n=await this.client.send(s),a=await vt(n.Body),o=this.serializeS3Metadata(t),r=new W({Bucket:this.bucket,Key:e,Body:a,Metadata:o});await this.client.send(r)}catch(e){throw di.error("Error setting object metadata in S3",e.name,e.message),e}}}ci([Sn.AccessControl],mi.prototype,"read"),ci([Sn.AccessControl],mi.prototype,"getMetadata"),ci([Sn.AccessControl],mi.prototype,"setMetadata"),ci([Sn.AccessControl],mi.prototype,"write"),ci([Sn.AccessControl],mi.prototype,"delete"),ci([Sn.AccessControl],mi.prototype,"exists"),ci([Sn.AccessControl],mi.prototype,"getACL"),ci([Sn.AccessControl],mi.prototype,"setACL"),ci([Sn.AccessControl],mi.prototype,"expire");var pi=Object.defineProperty,hi=Object.getOwnPropertyDescriptor,gi=(e,t,s,n)=>{for(var a,o=hi(t,s),r=e.length-1;r>=0;r--)(a=e[r])&&(o=a(t,s,o)||o);return o&&pi(t,s,o),o},yi=(e,t,s)=>((e,t,s)=>t in e?pi(e,t,{enumerable:!0,configurable:!0,writable:!0,value:s}):e[t]=s)(e,"symbol"!=typeof t?t+"":t,s);const fi=Wt("LocalStorage");class bi extends Pn{constructor(e){super(e),this._settings=e,yi(this,"name","LocalStorage"),yi(this,"folder"),yi(this,"storagePrefix","local"),yi(this,"metadataPrefix",".local.metadata"),yi(this,"isInitialized",!1),this.folder=e?.folder||f.join(b.homedir(),".smyth/storage"),this.initialize(),I.existsSync(this.folder)||fi.error(`Invalid folder provided: ${this.folder}`)}async read(e,t){this.isInitialized||await this.initialize();try{const s=this.getStorageFilePath(e.candidate.id,t);if(!I.existsSync(s))return;return I.readFileSync(s,"utf-8")}catch(e){throw fi.error("Error reading object from local storage",e.name,e.message),e}}async getMetadata(e,t){try{const s=this.getMetadataFilePath(e.candidate.id,t);if(!I.existsSync(s))return;const n=I.readFileSync(s,"utf-8");return this.deserializeMetadata(JSON.parse(n))}catch(e){throw fi.error("Error reading metadata from LocalStorage",e.name,e.message),e}}async setMetadata(e,t,s){try{let n=await this.getMetadata(e,t);n||(n={}),n={...n,...s};const a=this.getMetadataFilePath(e.candidate.id,t,!0),o=this.serializeMetadata(n);I.writeFileSync(a,JSON.stringify(o))}catch(e){throw fi.error("Error setting metadata in local storage",e.name,e.message),e}}async write(e,t,s,n,a){this.isInitialized||await this.initialize();const o=e.candidate;let r={...a,acl:Ln.from(n).addAccess(o.role,o.id,es.Owner).ACL};const i=this.getStorageFilePath(e.candidate.id,t,!0);I.writeFileSync(i,s),await this.setMetadata(e,t,r)}async delete(e,t){try{const s=this.getStorageFilePath(e.candidate.id,t);I.existsSync(s)&&I.unlinkSync(s);const n=this.getMetadataFilePath(e.candidate.id,t);I.existsSync(n)&&I.unlinkSync(n)}catch(e){throw fi.error("Error deleting object from local storage",e.name,e.message),e}}async exists(e,t){this.isInitialized||await this.initialize();const s=this.getStorageFilePath(e.candidate.id,t);return!!I.existsSync(s)}async getResourceACL(e,t){this.isInitialized||await this.initialize();const s=this.getMetadataFilePath(t.id,e);if(!I.existsSync(s))return(new Ln).addAccess(t.role,t.id,es.Owner);const n=I.readFileSync(s,"utf-8");if(!(void 0!==n))return(new Ln).addAccess(t.role,t.id,es.Owner);try{let e=JSON.parse(n);return Ln.from(e?.acl)}catch(e){throw fi.error("Error parsing metadata in local storage",e.name,e.message),e}}async getACL(e,t){try{const s=await this.getMetadata(e,t);return Ln.from(s?.acl)}catch(e){throw fi.error("Error getting access rights in local storage",e.name,e.message),e}}async setACL(e,t,s){try{let n=await this.getMetadata(e,t);n||(n={}),n.acl=Ln.from(s).addAccess(e.candidate.role,e.candidate.id,es.Owner).ACL,await this.setMetadata(e,t,n)}catch(e){throw fi.error("Error setting access rights in local storage",e),e}}async expire(e,t,s){fi.warn(`LocalStorage.expire is not implemented, request will be ignored for resource ${t} and ttl ${s}`)}async initialize(){const e=f.join(this.folder,this.storagePrefix);k(e)||I.mkdirSync(e,{recursive:!0});const t=f.join(this.folder,this.metadataPrefix);k(t)||(I.mkdirSync(t,{recursive:!0}),I.writeFileSync(f.join(t,"README_IMPORTANT.txt"),"This folder is used for smythOS metadata, do not delete it, it will break SmythOS local filesystem")),this.isInitialized=!0}getStorageFilePath(e,t,s=!1){const n=f.join(this.folder,this.storagePrefix,t),a=f.dirname(n);return s&&!I.existsSync(a)&&I.mkdirSync(a,{recursive:!0}),n}getMetadataFilePath(e,t,s=!1){const n=f.join(this.folder,this.metadataPrefix,t),a=f.dirname(n);return s&&!I.existsSync(a)&&I.mkdirSync(a,{recursive:!0}),n}serializeMetadata(e){let t={};e.acl&&(e.acl&&(t.acl="string"==typeof e.acl?e.acl:Ln.from(e.acl).serializedACL),delete e.acl);for(let s in e)t[s]="string"==typeof e[s]?e[s]:JSON.stringify(e[s]);return t}deserializeMetadata(e){let t={};for(let s in e)if("acl"!==s)try{t[s]=JSON.parse(e[s])}catch(n){t[s]=e[s]}else t[s]=Ln.from(e[s]).ACL;return t}}gi([Sn.AccessControl],bi.prototype,"read"),gi([Sn.AccessControl],bi.prototype,"getMetadata"),gi([Sn.AccessControl],bi.prototype,"setMetadata"),gi([Sn.AccessControl],bi.prototype,"write"),gi([Sn.AccessControl],bi.prototype,"delete"),gi([Sn.AccessControl],bi.prototype,"exists"),gi([Sn.AccessControl],bi.prototype,"getACL"),gi([Sn.AccessControl],bi.prototype,"setACL"),gi([Sn.AccessControl],bi.prototype,"expire");class wi extends Ls{register(){Ts.register(Xe.Storage,"S3",mi),Ts.register(Xe.Storage,"LocalStorage",bi)}}async function Ii(e,t){const s=Array.isArray(t.credentials)?t.credentials||[Fn.None]:[t.credentials];for(let n of s){if("object"==typeof n)return n;switch(n){case Fn.None:return{apiKey:""};case Fn.Internal:case Fn.Vault:{const s=await ki(e,t);if(s)return s;break}case Fn.BedrockVault:{const s=await Ai(e,t);if(s)return s;break}case Fn.VertexAIVault:{const s=await vi(e,t);if(s)return s;break}}}return{}}async function ki(e,t){const s=(t.provider||t.llm)?.toLowerCase(),n=Ts.getVaultConnector(),a=await n.requester(e).get(s).catch((()=>""));return a?{apiKey:a,isUserKey:!0}:null}async function Ai(e,t){const s=t.settings?.keyIDName,n=t.settings?.secretKeyName,a=t.settings?.sessionKeyName,o=Ts.getVaultConnector(),[r,i,l]=await Promise.all([o.requester(e).get(s).catch((()=>"")),o.requester(e).get(n).catch((()=>"")),o.requester(e).get(a).catch((()=>""))]);let c={accessKeyId:r,secretAccessKey:i,isUserKey:!0};return l&&(c.sessionToken=l),r&&i?c:null}async function vi(e,t){const s=t.settings?.jsonCredentialsName,n=Ts.getVaultConnector();let a=await n.requester(e).get(s).catch((()=>""));const o=JSON.parse(a);return o?{...o,isUserKey:!0}:null}var xi=Object.defineProperty,_i=(e,t,s)=>((e,t,s)=>t in e?xi(e,t,{enumerable:!0,configurable:!0,writable:!0,value:s}):e[t]=s)(e,"symbol"!=typeof t?t+"":t,s);const Ti=Wt("LLMConnector");class Li extends L{constructor(e){super(e),_i(this,"dataQueue"),_i(this,"toolsData"),_i(this,"hasData"),_i(this,"isReading"),this.dataQueue=[],this.toolsData=[],this.isReading=!0}_read(e){if(this.dataQueue.length>0)for(;this.dataQueue.length>0;){const e=this.dataQueue.shift();if(!this.push(e))break}else this.push(null)}enqueueData(e){this.dataQueue.push(e),this.read(0)}endStream(){this.isReading=!1,this.push(null)}}class Ci extends bs{constructor(){super(...arguments),_i(this,"vaultConnector")}imageGenRequest({acRequest:e,body:t,context:s}){return Promise.reject(new Error("Image edit not supported by this model"))}imageEditRequest({acRequest:e,body:t,context:s}){return Promise.reject(new Error("Image edit not supported by this model"))}requester(e){this.vaultConnector=Ts.getVaultConnector(),this.vaultConnector&&this.vaultConnector.valid||Ti.warn(`Vault Connector unavailable for ${e.id} `);return{request:async t=>{const s=await this.prepareParams(e,t);return await this.request({acRequest:e.readRequest,body:s.body,context:{modelEntryName:s.modelEntryName,agentId:s.agentId,teamId:s.teamId,isUserKey:s.isUserKey,hasFiles:s.files?.length>0,modelInfo:s.modelInfo,credentials:s.credentials}})},streamRequest:async t=>{const s=await this.prepareParams(e,t),n={acRequest:e.readRequest,body:s.body,context:{modelEntryName:s.modelEntryName,agentId:s.agentId,teamId:s.teamId,isUserKey:s.isUserKey,hasFiles:s.files?.length>0,modelInfo:s.modelInfo,credentials:s.credentials}};let a;return a=!0===s.capabilities?.search&&!0===s.useWebSearch?await this.webSearchRequest(n):await this.streamRequest(n),a},imageGenRequest:async t=>{const s=await this.prepareParams(e,t);return await this.imageGenRequest({acRequest:e.readRequest,body:s.body,context:{modelEntryName:s.modelEntryName,isUserKey:s.isUserKey,agentId:s.agentId,teamId:s.teamId,hasFiles:s.files?.length>0,modelInfo:s.modelInfo,credentials:s.credentials}})},imageEditRequest:async t=>{const s=await this.prepareParams(e,t);return await this.imageEditRequest({acRequest:e.readRequest,body:s.body,context:{modelEntryName:s.modelEntryName,isUserKey:s.isUserKey,agentId:s.agentId,teamId:s.teamId,hasFiles:s.files?.length>0,modelInfo:s.modelInfo,credentials:s.credentials}})}}}enhancePrompt(e,t){if(!e)return e;let s=e;const n={};if(t?.outputs)for(let e of t.outputs)e.default||(n[e.name]=e?.description?` (${e?.description})`:"");const a=["_debug","_error"],o=Object.keys(n).filter((e=>!a.includes(e)));if(o.length>0){const e={};o.forEach((s=>e[s]=("Classifier"===t.name?"<Boolean|String>":"<value>")+(n[s]||""))),s+="\n##\nExpected output format = "+JSON.stringify(e)+"\nThe output JSON should only use the entries from the output format."}return s}postProcess(e){try{return qn(e).tryParse()}catch(t){return{error:"Invalid JSON response",data:e,details:"The response from the model is not a valid JSON object. Please check the model output and try again."}}}formatToolsConfig({type:e="function",toolDefinitions:t,toolChoice:s="auto"}){throw new Error("This model does not support tools")}transformToolMessageBlocks({messageBlock:e,toolsData:t}){throw new Error("This model does not support tools")}getConsistentMessages(e){return e}async prepareParams(e,t){const s=Ts.getModelsProviderConnector(),n=t?.files;delete t?.files;const a=JSON.parse(JSON.stringify(t)),o=this.formatParamValues(a),r=o.model,i=await this.getTeamId(e);o.modelEntryName="string"==typeof r?r:r.modelId,o.teamId=i;const l=s.requester(e),c=await l.getModelInfo(r);if(c.params)for(let e in c.params)void 0===o[e]&&(o[e]=c.params[e]);const u=await l.isStandardLLM(r);await l.getProvider(r),o.credentials=await Ii(e,c),o.baseURL=c?.baseURL,u||(o.modelInfo=c),o.maxTokens?o.maxTokens=await l.adjustMaxCompletionTokens(r,o.maxTokens,o?.isUserKey):o.maxTokens=await l.getMaxCompletionTokens(r,o?.isUserKey),o.model=await l.getModelId(r),o.files=n;const d=c?.features||[];o.capabilities={search:d.includes("search"),reasoning:d.includes("reasoning"),imageGeneration:d.includes("image-generation")},o.agentId=e.id;const m=await this.reqBodyAdapter(o);return{...o,body:m}}formatParamValues(e){let t={};for(const[s,n]of Object.entries(e)){let e=n;"stopSequences"===s&&(e=e?e?.split(","):null),"string"!=typeof e||isNaN(Number(e))||(e=+e),"messages"===s&&(e=this.getConsistentMessages(e)),t[s]=e}return t}async getTeamId(e){const t=Ts.getAccountConnector();if(!t)throw new Error("Account Connector unavailable, cannot proceed");return await t.getCandidateTeam(e)}}var Si=Object.defineProperty,Pi=(e,t,s)=>((e,t,s)=>t in e?Si(e,t,{enumerable:!0,configurable:!0,writable:!0,value:s}):e[t]=s)(e,t+"",s);class Mi extends Ci{constructor(){super(...arguments),Pi(this,"name","LLM:Echo")}async request({acRequest:e,body:t,context:s}){const n=t?.messages?.[0]?.content;return{content:n,finishReason:"stop",useTool:!1,toolsData:[],message:{content:n,role:"assistant"},usage:{}}}async streamRequest({acRequest:e,body:t,context:s}){const n=new u;let a="";return Array.isArray(t?.messages)&&(a=t?.messages?.filter((e=>"user"===e.role)).pop()?.content),(async()=>{const e=a.split(" ");for(let t=0;t<e.length;t++){await new Promise((e=>setTimeout(e,50)));const s=t===e.length-1,a={content:e[t]+(s?"":" ")};n.emit("data",a),n.emit("content",a.content)}setTimeout((()=>{n.emit("end",[],[])}),100)})(),n}async webSearchRequest({acRequest:e,body:t,context:s}){throw new Error("Web search is not supported for Echo")}async reqBodyAdapter(e){return e}enhancePrompt(e,t){return e}postProcess(e){try{const t=qn(e).tryFullParse();return t?.error?e:t}catch(t){return e}}reportUsage(e,t){}}class Ri{static hasSystemMessage(e){return!!Array.isArray(e)&&e?.some((e=>"system"===e.role))}static separateSystemMessages(e){return{systemMessage:e.find((e=>"system"===e.role))||{},otherMessages:e.filter((e=>"system"!==e.role))}}static async countVisionPromptTokens(e){let t=0;const s=e?.filter((e=>"text"===e.type)),n=g(s?.[0]?.text).length,a=e?.filter((e=>"image_url"===e.type));let o=0;for(const e of a){const t=e?.image_url?.url,{width:s,height:n}=await this.getImageDimensions(t);o+=this.countImageTokens(s,n)}return t=n+o,t}static async getImageDimensions(e){try{let t;if(yt(e)){const s=e.replace(/^data:image\/\w+;base64,/,"");t=Buffer.from(s,"base64")}else{if(!Ct(e))throw new Error("Please provide a valid image url!");{const s=await o.get(e,{responseType:"arraybuffer"});t=Buffer.from(s.data)}}const s=te(t);return{width:s?.width||0,height:s?.height||0}}catch(e){throw console.error("Error getting image dimensions",e),new Error("Please provide a valid image url!")}}static countImageTokens(e,t,s="auto"){if("low"===s)return 85;const n=Math.max(e,t),a=Math.min(e,t);let o=a;n>2048&&(o=2048/n*a),o=Math.floor(.75*o);let r=Math.ceil(o/512);return a!==o&&(r*=Math.ceil(o*(n/a)/512)),170*r+85}static removeDuplicateUserMessages(e){const t=JSON.parse(JSON.stringify(e));return t.length>1&&t[0].role===Jn.User&&t[1].role===Jn.User&&t.shift(),t.length>1&&t[t.length-1].role===Jn.User&&t[t.length-2].role===Jn.User&&t.pop(),t}}var Oi=Object.defineProperty,Di=(e,t,s)=>((e,t,s)=>t in e?Oi(e,t,{enumerable:!0,configurable:!0,writable:!0,value:s}):e[t]=s)(e,"symbol"!=typeof t?t+"":t,s);const qi=["gpt-4.5-preview","gpt-4o-2024-08-06","gpt-4o-mini-2024-07-18","gpt-4-turbo","gpt-3.5-turbo"],Ei={low:.03,medium:.035,high:.05},Ni={low:.025,medium:.0275,high:.03},$i="web_search_preview",Gi={"gpt-4.1":Ei,"gpt-4o":Ei,"gpt-4o-search":Ei,"gpt-4.1-mini":Ni,"gpt-4o-mini":Ni,"gpt-4o-mini-search":Ni};class ji extends Ci{constructor(){super(...arguments),Di(this,"name","LLM:OpenAI"),Di(this,"validImageMimeTypes",We.OpenAI.image),Di(this,"validDocumentMimeTypes",We.OpenAI.document)}async getClient(e){const t=e.credentials?.apiKey,s=e?.modelInfo?.baseURL;if(!t)throw new Error("Please provide an API key for OpenAI");return new Y({baseURL:s,apiKey:t})}async request({acRequest:e,body:t,context:s}){const n=t;try{const t=await this.getClient(s),a=n?.messages||[],o=a[a.length-1],r=s?.hasFiles?await Ri.countVisionPromptTokens(o?.content):y(a,"gpt-4")?.length;await this.validateTokenLimit({acRequest:e,promptTokens:r,context:s,maxTokens:n.max_completion_tokens});const i=await t.chat.completions.create(n),l=i?.choices?.[0]?.message,c=i?.choices?.[0]?.finish_reason;let u=[],d=!1;"tool_calls"===c&&(u=l?.tool_calls?.map(((e,t)=>({index:t,id:e?.id,type:e?.type,name:e?.function?.name,arguments:e?.function?.arguments,role:"tool"})))||[],d=!0);const m=i?.usage;return this.reportUsage(m,{modelEntryName:s.modelEntryName,keySource:s.isUserKey?Kn.User:Kn.Smyth,agentId:s.agentId,teamId:s.teamId}),{content:l?.content??"",finishReason:c,useTool:d,toolsData:u,message:l,usage:m}}catch(e){throw e}}async streamRequest({acRequest:e,body:t,context:s}){const n=t,a=new u,o=[],r=[];try{const t=await this.getClient(s),i=n?.messages||[],l=i[i.length-1],c=s?.hasFiles?await Ri.countVisionPromptTokens(l?.content):y(i,"gpt-4")?.length;await this.validateTokenLimit({acRequest:e,promptTokens:c,context:s,maxTokens:n.max_completion_tokens});let u="stop";const d=await t.chat.completions.create({...n,stream:!0,stream_options:{include_usage:!0}});return(async()=>{let e={},t=[];for await(const s of d){e=s.choices[0]?.delta;const n=s.usage;if(n&&o.push(n),a.emit("data",e),!e?.tool_calls&&e?.content&&a.emit("content",e?.content,e?.role),e?.tool_calls){const s=e?.tool_calls?.[0],n=s?.index;t[n]={index:n,role:"tool",id:(t?.[n]?.id||"")+(s?.id||""),type:(t?.[n]?.type||"")+(s?.type||""),name:(t?.[n]?.name||"")+(s?.function?.name||""),arguments:(t?.[n]?.arguments||"")+(s?.function?.arguments||"")}}else s.choices[0]?.finish_reason&&(u=s.choices[0]?.finish_reason)}if(t?.length>0){for(let e of t)e.type.includes("functionfunction")&&(e.type="function");a.emit(Wn.ToolInfo,t)}o.forEach((e=>{const t=this.reportUsage(e,{modelEntryName:s.modelEntryName,keySource:s.isUserKey?Kn.User:Kn.Smyth,agentId:s.agentId,teamId:s.teamId});r.push(t)})),"stop"!==u&&a.emit("interrupted",u),setTimeout((()=>{a.emit("end",t,r,u)}),100)})(),a}catch(e){throw e}}async webSearchRequest({acRequest:e,body:t,context:s}){const n=t,a=new u,o=[],r=[];try{const e=await this.getClient(s);let t="stop";const i=await e.responses.create(n);return(async()=>{let e=[];for await(const e of i){if("type"in e){if("response.output_text.delta"===e.type)if(e?.delta){const t={role:"assistant",content:e.delta};a.emit("data",t),a.emit("content",e.delta,"assistant")}}"response"in e&&e.response?.usage&&o.push(e.response.usage)}const l=s.modelEntryName?.replace(He,""),c=n.tools?.[0],u=Gi?.[l]?.[c?.search_context_size]||0;this.reportUsage({cost:u,completion_tokens:0,prompt_tokens:0,total_tokens:0},{modelEntryName:s.modelEntryName,keySource:s.isUserKey?Kn.User:Kn.Smyth,agentId:s.agentId,teamId:s.teamId}),setTimeout((()=>{a.emit("end",e,r,t)}),100)})(),a}catch(e){throw e}}async imageGenRequest({acRequest:e,body:t,context:s}){try{const e=await this.getClient(s);return await e.images.generate(t)}catch(e){throw e}}async imageEditRequest({acRequest:e,body:t,context:s}){const n=t;try{const e=await this.getClient(s);return await e.images.edit(n)}catch(e){throw e}}async processImageData(e,t){const s=this.getValidImageFiles(e);return 0===s.length?[]:await this.getImageData(s,t)}getValidDocumentFiles(e){const t=[];for(let s of e)this.validDocumentMimeTypes.includes(s?.mimetype)&&t.push(s);return t}async processDocumentData(e,t){const s=this.getValidDocumentFiles(e);return 0===s.length?[]:await this.getDocumentData(s,t)}async reqBodyAdapter(e){return e?.useWebSearch&&!0===e.capabilities?.search?this.prepareBodyForWebSearchRequest(e):!0===e.capabilities?.imageGeneration?e?.files?.length>0?this.prepareBodyForImageEditRequest(e):this.prepareBodyForImageGenRequest(e):(e.capabilities,this.prepareBody(e))}reportUsage(e,t){const s={sourceId:`llm:${t.modelEntryName.replace(He,"")}`,input_tokens:e?.input_tokens||e?.prompt_tokens-(e?.prompt_tokens_details?.cached_tokens||0),output_tokens:e?.output_tokens||e?.completion_tokens||0,input_tokens_cache_write:0,input_tokens_cache_read:e?.input_tokens_details?.cached_tokens||e?.prompt_tokens_details?.cached_tokens||0,cost:e?.cost||0,keySource:t.keySource,agentId:t.agentId,teamId:t.teamId};return ws.emit("USAGE:LLM",s),s}formatToolsConfig({type:e="function",toolDefinitions:t,toolChoice:s="auto"}){let n=[];return"function"===e&&(n=t.map((e=>{const{name:t,description:s,properties:n,requiredFields:a}=e;return{type:"function",function:{name:t,description:s,parameters:{type:"object",properties:n,required:a}}}}))),n?.length>0?{tools:n,tool_choice:s||"auto"}:{}}transformToolMessageBlocks({messageBlock:e,toolsData:t}){const s=[];if(e){const t={...e,content:"object"==typeof e.content?JSON.stringify(e.content):e.content};if(t.tool_calls)for(let e of t.tool_calls)e.function.arguments="object"==typeof e.function.arguments?JSON.stringify(e.function.arguments):e.function.arguments;s.push(t)}const n=t.map((e=>({tool_call_id:e.id,role:Jn.Tool,name:e.name,content:"string"==typeof e.result?e.result:JSON.stringify(e.result)})));return[...s,...n]}getConsistentMessages(e){return Ri.removeDuplicateUserMessages(e).map((e=>{const t={...e};let s="";return e?.parts?s=e.parts.map((e=>e?.text||"")).join(" "):Array.isArray(e?.content)?s=e.content.map((e=>e?.text||"")).join(" "):e?.content&&(s=e.content),t.content=s,t}))}getValidImageFiles(e){const t=[];for(let s of e)this.validImageMimeTypes.includes(s?.mimetype)&&t.push(s);return t}async getImageData(e,t){try{const s=[];for(let n of e){const e=(await n.readData(ps.agent(t))).toString("base64"),a=`data:${n.mimetype};base64,${e}`;s.push({type:"image_url",image_url:{url:a}})}return s}catch(e){throw e}}async getDocumentData(e,t){try{const s=[];for(let n of e){const e=(await n.readData(ps.agent(t))).toString("base64"),a=`data:${n.mimetype};base64,${e}`;s.push({type:"file",file:{file_data:a,filename:await n.getName()}})}return s}catch(e){throw e}}getWebSearchTool(e){const t=e?.webSearchCity,s=e?.webSearchCountry,n=e?.webSearchRegion,a=e?.webSearchTimezone,o={type:"approximate"};t&&(o.city=t),s&&(o.country=s),n&&(o.region=n),a&&(o.timezone=a);const r={type:$i,search_context_size:e?.webSearchContextSize||"medium"};return Object.keys(o).length>1&&(r.user_location=o),r}async validateTokenLimit({acRequest:e,maxTokens:t,promptTokens:s,context:n}){const a=await this.getProvider(e,n.modelEntryName);await a.validateTokensLimit({model:n.modelEntryName,promptTokens:s,completionTokens:t,hasAPIKey:n.isUserKey})}async getProvider(e,t){return Ts.getModelsProviderConnector().requester(e.candidate)}async prepareBodyForWebSearchRequest(e){const t={model:e.model,input:e.messages,stream:!0};void 0!==e?.max_output_tokens&&(t.max_output_tokens=e.max_output_tokens);const s=this.getWebSearchTool(e);return t.tools=[s],e?.toolsConfig?.tool_choice&&(t.tool_choice=e.toolsConfig.tool_choice),t}async prepareBodyForImageGenRequest(e){const{model:t,size:s,quality:n,n:a,responseFormat:o,style:r}=e,i={prompt:e.prompt,model:t,size:s,n:a||1};return n&&(i.quality=n),o&&(i.response_format=o),r&&(i.style=r),i}async prepareBodyForImageEditRequest(e){const{model:t,size:s,n:n,responseFormat:a}=e,o={prompt:e.prompt,model:t,size:s,n:n||1,image:null};a&&(o.response_format=a);const r=e?.files||[];if(r.length>0){const e=await Promise.all(r.map((async e=>await Z(await e.getReadStream(),await e.getName(),{type:e.mimetype}))));o.image=e}return o}async prepareBody(e){const t=await this.prepareMessages(e);"json"===(e?.responseFormat||"")&&(t?.[0]?.role===Jn.System?t[0].content+=Ke:t.unshift({role:Jn.System,content:Ke}),qi.includes(e.model)?e.responseFormat={type:"json_object"}:e.responseFormat=void 0);const s={model:e.model,messages:t};return e?.toolsConfig?.tools&&e?.toolsConfig?.tools?.length>0&&(s.tools=e?.toolsConfig?.tools),e?.toolsConfig?.tool_choice&&(s.tool_choice=e?.toolsConfig?.tool_choice),void 0!==e?.maxTokens&&(s.max_completion_tokens=e.maxTokens),void 0!==e?.temperature&&(s.temperature=e.temperature),void 0!==e?.topP&&(s.top_p=e.topP),void 0!==e?.frequencyPenalty&&(s.frequency_penalty=e.frequencyPenalty),void 0!==e?.presencePenalty&&(s.presence_penalty=e.presencePenalty),void 0!==e?.responseFormat&&(s.response_format=e.responseFormat),e?.stopSequences?.length&&(s.stop=e.stopSequences),s}async prepareMessages(e){const t=e?.messages||[],s=e?.files||[];if(s.length>0){const n=[],a=[];for(let t of s){const s=Bn.from(t);n.push(s.upload(ps.agent(e.agentId))),a.push(s)}await Promise.all(n);const o=this.getValidImageFiles(a),r=this.getValidDocumentFiles(a),i=o.length>0?await this.processImageData(o,e.agentId):[],l=r.length>0?await this.processDocumentData(r,e.agentId):[],c=Array.isArray(t)?t.pop():{},u=[{type:"text",text:c?.content||""||""},...i,...l];t.push({role:"user",content:u})}return t}}var Ui=Object.defineProperty,Bi=(e,t,s)=>((e,t,s)=>t in e?Ui(e,t,{enumerable:!0,configurable:!0,writable:!0,value:s}):e[t]=s)(e,"symbol"!=typeof t?t+"":t,s);const Fi=["gemini-1.5-pro-exp-0801","gemini-1.5-pro-latest","gemini-1.5-pro-latest","gemini-1.5-pro","gemini-1.5-pro-001","gemini-1.5-flash-latest","gemini-1.5-flash-001","gemini-1.5-flash"],Vi=Fi,zi=[...We.GoogleAI.image,...We.GoogleAI.audio,...We.GoogleAI.video,...We.GoogleAI.document];class Ji extends Ci{constructor(){super(...arguments),Bi(this,"name","LLM:GoogleAI"),Bi(this,"validMimeTypes",{all:zi,image:We.GoogleAI.image})}async getClient(e){const t=e.credentials?.apiKey;if(!t)throw new Error("Please provide an API key for Google AI");return new se(t)}async request({acRequest:e,body:t,context:s}){try{const e=t.messages;delete t.messages;const n=(await this.getClient(s)).getGenerativeModel(t),a=await n.generateContent(e),o=await a.response,r=o.text(),i=o.candidates[0].finishReason||"stop",l=o?.usageMetadata;this.reportUsage(l,{modelEntryName:s.modelEntryName,keySource:s.isUserKey?Kn.User:Kn.Smyth,agentId:s.agentId,teamId:s.teamId});const c=o.candidates[0]?.content?.parts?.filter((e=>e.functionCall));let u=[],d=!1;return c&&c.length>0&&(u=c.map(((e,t)=>({index:t,id:`tool-${t}`,type:"function",name:e.functionCall.name,arguments:JSON.stringify(e.functionCall.args),role:Jn.Assistant}))),d=!0),{content:r,finishReason:i,useTool:d,toolsData:u,message:{content:r,role:"assistant"},usage:l}}catch(e){throw e}}async streamRequest({acRequest:e,body:t,context:s}){const n=new u,a=t.messages;delete t.messages;const o=(await this.getClient(s)).getGenerativeModel(t);try{const e=await o.generateContentStream(a);let t,r=[];return(async()=>{for await(const s of e.stream){const e=s.text();if(n.emit("content",e),s.candidates[0]?.content?.parts){const e=s.candidates[0].content.parts.filter((e=>e.functionCall));e.length>0&&(r=e.map(((e,t)=>({index:t,id:`tool-${t}`,type:"function",name:e.functionCall.name,arguments:JSON.stringify(e.functionCall.args),role:Jn.Assistant}))),n.emit(Wn.ToolInfo,r))}s?.usageMetadata&&(t=s.usageMetadata)}t&&this.reportUsage(t,{modelEntryName:s.modelEntryName,keySource:s.isUserKey?Kn.User:Kn.Smyth,agentId:s.agentId,teamId:s.teamId}),setTimeout((()=>{n.emit("end",r)}),100)})(),n}catch(e){throw e}}async webSearchRequest({acRequest:e,body:t,context:s}){throw new Error("Web search is not supported for Google AI")}async reqBodyAdapter(e){const t=e?.model;let s={model:t,messages:await this.prepareMessages(e)};let n="",a="";"json"===(e?.responseFormat||"")&&(a+=Ke,Vi.includes(t)&&(n="application/json"));const o={};return void 0!==e.maxTokens&&(o.maxOutputTokens=e.maxTokens),void 0!==e.temperature&&(o.temperature=e.temperature),void 0!==e.topP&&(o.topP=e.topP),void 0!==e.topK&&(o.topK=e.topK),e.stopSequences?.length&&(o.stopSequences=e.stopSequences),n&&(o.responseMimeType=n),a&&(s.systemInstruction=a),Object.keys(o).length>0&&(s.generationConfig=o),s}reportUsage(e,t){const s=t.modelEntryName;let n="";const a={"gemini-1.5-pro":128e3,"gemini-2.5-pro":2e5},o=e?.promptTokensDetails?.find((e=>"TEXT"===e.modality))?.tokenCount||e?.promptTokenCount||0,r=e?.promptTokensDetails?.find((e=>"AUDIO"===e.modality))?.tokenCount||0,i=Object.keys(a).find((e=>s.includes(e)));i&&(n=o<a[i]?"tier1":"tier2");const l={sourceId:`llm:${t.modelEntryName.replace(He,"")}`,input_tokens:o,output_tokens:e.candidatesTokenCount,input_tokens_audio:r,input_tokens_cache_read:e.cachedContentTokenCount||0,input_tokens_cache_write:0,reasoning_tokens:e.thoughtsTokenCount,keySource:t.keySource,agentId:t.agentId,teamId:t.teamId,tier:n};return ws.emit("USAGE:LLM",l),l}formatToolsConfig({toolDefinitions:e,toolChoice:t="auto"}){return{tools:e.map((e=>{const{name:t,description:s,properties:n,requiredFields:a}=e;return{functionDeclarations:[{name:this.sanitizeFunctionName(t),description:s||"",parameters:{type:"OBJECT",properties:n&&Object.keys(n).length>0?n:{dummy:{type:"string"}},required:a||[]}}]}})),toolChoice:{type:t}}}transformToolMessageBlocks({messageBlock:e,toolsData:t}){const s=[];if(e){const t=[];if("string"==typeof e.content?t.push({text:e.content}):Array.isArray(e.content)&&t.push(...e.content),e.parts){const s=e.parts.filter((e=>e.functionCall));s.length>0&&t.push(...s.map((e=>({functionCall:{name:e.functionCall.name,args:JSON.parse(e.functionCall.args)}}))))}s.push({role:e.role,parts:t})}const n=t.map((e=>({role:Jn.Function,parts:[{functionResponse:{name:e.name,response:{name:e.name,content:"string"==typeof e.result?e.result:JSON.stringify(e.result)}}}]})));return[...s,...n]}getConsistentMessages(e){return Ri.removeDuplicateUserMessages(e).map((e=>{const t={...e};let s="";switch(t.role){case Jn.Assistant:case Jn.System:t.role=Jn.Model;break;case Jn.User:break;default:t.role=Jn.User}return t?.parts?s=t.parts.map((e=>e?.text||"...")).join(" "):Array.isArray(t?.content)?s=t.content.map((e=>e?.text||"...")).join(" "):t?.content&&(s=t.content||"..."),t.parts=[{text:s||"..."}],delete t.content,t}))}async prepareMessages(e){let t=e?.messages||"";return t=(e?.files||[]).length>0?await this.prepareMessagesWithFiles(e):e?.toolsConfig?.tools?.length>0?await this.prepareMessagesWithTools(e):await this.prepareMessagesWithTextQuery(e),t}async prepareMessagesWithFiles(e){const t=e.model;let s=e?.messages||"";const n=e?.files||[],a=[],o=[];for(let t of n){const s=Bn.from(t);a.push(s.upload(ps.agent(e.agentId))),o.push(s)}await Promise.all(a);const r=this.getValidFiles(o,"all");if(r.some((e=>e?.mimetype?.includes("video")))&&r.length>1)throw new Error("Only one video file is supported at a time.");const i=r.map((t=>async()=>{try{return{url:(await this.uploadFile({file:t,apiKey:e.credentials.apiKey,agentId:e.agentId})).url,mimetype:t.mimetype}}catch{return null}})),l=await tt(i);if(l&&0===l?.length)throw new Error("There is an issue during upload file in Google AI Server!");const c=this.getFileData(l),u=Array.isArray(s)?s.pop():{role:Jn.User,content:""};let d=u?.content||"";return Fi.includes(t)||(d=`${d}\n`),s=1===c.length?[...c,{text:d}]:[d,...c],s}async prepareMessagesWithTools(e){let t,s="",n=e?.messages||[];if(Ri.hasSystemMessage(n)){const e=Ri.separateSystemMessages(n),a=e.systemMessage?.content;s="string"==typeof a?a:"",t=e.otherMessages}else t=n;const a={contents:t};return s&&(a.systemInstruction=s),e?.toolsConfig?.tools&&(a.tools=e?.toolsConfig?.tools),e?.toolsConfig?.tool_choice&&(a.toolConfig={functionCallingConfig:{mode:e?.toolsConfig?.tool_choice||"auto"}}),a}async prepareMessagesWithTextQuery(e){const t=e.model;let s="",n="";const{systemMessage:a,otherMessages:o}=Ri.separateSystemMessages(e?.messages);"content"in a&&(s=a.content);return"json"===(e?.responseFormat||"")&&(s+=Ke),o?.length>0&&(n+=o.map((e=>e?.parts?.[0]?.text||"")).join("\n")),Fi.includes(t)||(n=`${n}\n${s}`),n}sanitizeFunctionName(e){if(null==e)return"_unnamed_function";let t=e.replace(/[^a-zA-Z0-9_.-]/g,"");return/^[a-zA-Z_]/.test(t)||(t="_"+t),""===t&&(t="_unnamed_function"),t=t.slice(0,64),t}async uploadFile({file:e,apiKey:t,agentId:s}){try{if(!t||!e?.mimetype)throw new Error("Missing required parameters to save file for Google AI!");const n=b.tmpdir(),a=et(),o=f.join(n,a),r=await e.readData(ps.agent(s));await I.promises.writeFile(o,new Uint8Array(r));const i=new ne(t),l=await i.uploadFile(o,{mimeType:e.mimetype,displayName:a}),c=l.file.name;let u=await i.getFile(c);for(;u.state===ae.PROCESSING;)process.stdout.write("."),await new Promise((e=>setTimeout(e,1e4))),u=await i.getFile(c);if(u.state===ae.FAILED)throw new Error("File processing failed.");return await I.promises.unlink(o),{url:l.file.uri||""}}catch(e){throw new Error(`Error uploading file for Google AI: ${e.message}`)}}getValidFiles(e,t){const s=[];for(let n of e)this.validMimeTypes[t].includes(n?.mimetype)&&s.push(n);if(0===s?.length)throw new Error(`Unsupported file(s). Please make sure your file is one of the following types: ${this.validMimeTypes[t].join(", ")}`);return s}getFileData(e){try{const t=[];for(let s of e)t.push({fileData:{mimeType:s.mimetype,fileUri:s.url}});return t}catch(e){throw e}}}var Ki=Object.defineProperty,Wi=(e,t,s)=>((e,t,s)=>t in e?Ki(e,t,{enumerable:!0,configurable:!0,writable:!0,value:s}):e[t]=s)(e,"symbol"!=typeof t?t+"":t,s);const Qi=["smythos/claude-3.7-sonnet-thinking","claude-3.7-sonnet-thinking"];class Hi extends Ci{constructor(){super(...arguments),Wi(this,"name","LLM:Anthropic"),Wi(this,"validImageMimeTypes",We.Anthropic.image)}async getClient(e){const t=e.credentials?.apiKey;if(!t)throw new Error("Please provide an API key for Anthropic");return new oe({apiKey:t})}async request({acRequest:e,body:t,context:s}){try{const e=await this.getClient(s),n=await e.messages.create(t),a={role:n?.role||Jn.User,content:n?.content||""},o=n?.stop_reason;let r=[],i=!1;if("tool_use"===o){const e=n?.content?.filter((e=>"tool_use"===e.type));if(0===e?.length)return;e.forEach(((e,t)=>{r.push({index:t,id:e?.id,type:"function",name:e?.name,arguments:e?.input,role:n?.role})})),i=!0}const l=n?.content?.find((e=>"text"===e.type)),c=l?.text||"",u=n?.usage;return this.reportUsage(u,{modelEntryName:s.modelEntryName,keySource:s.isUserKey?Kn.User:Kn.Smyth,agentId:s.agentId,teamId:s.teamId}),{content:c,finishReason:n?.stop_reason,useTool:i,toolsData:r,message:a,usage:u}}catch(e){throw e}}async streamRequest({acRequest:e,body:t,context:s}){try{const e=new u,n=[];let a=(await this.getClient(s)).messages.stream(t),o=[],r=[];return a.on("streamEvent",(e=>{e.message})),a.on("error",(t=>{e.emit("error",t)})),a.on("text",(t=>{e.emit("content",t)})),a.on("thinking",(t=>{e.emit("thinking",t)})),a.on("finalMessage",(t=>{let a="stop";r=t.content.filter((e=>"thinking"===e.type||"redacted_thinking"===e.type));const i=t.content.filter((e=>"tool_use"===e.type));if(i?.length>0?(i.forEach(((e,s)=>{o.push({index:s,id:e?.id,type:"function",name:e?.name,arguments:e?.input,role:t?.role})})),e.emit(Wn.ToolInfo,o,r)):a=t.stop_reason,t?.usage){const e=t.usage,a=this.reportUsage(e,{modelEntryName:s.modelEntryName,keySource:s.isUserKey?Kn.User:Kn.Smyth,agentId:s.agentId,teamId:s.teamId});n.push(a)}"stop"!==a&&"end_turn"!==a&&e.emit("interrupted",a),setTimeout((()=>{e.emit("end",o,n,a)}),100)})),e}catch(e){throw e}}async webSearchRequest({acRequest:e,body:t,context:s}){throw new Error("Web search requests are not supported by Anthropic")}async reqBodyAdapter(e){const t=await this.prepareBody(e);return await this.shouldUseThinkingMode(e)?await this.prepareBodyForThinkingRequest({body:t,maxThinkingTokens:e.maxThinkingTokens,toolChoice:e?.toolsConfig?.tool_choice}):t}reportUsage(e,t){const s={sourceId:`llm:${t.modelEntryName.replace(He,"")}`,input_tokens:e.input_tokens,output_tokens:e.output_tokens,input_tokens_cache_write:e.cache_creation_input_tokens,input_tokens_cache_read:e.cache_read_input_tokens,keySource:t.keySource,agentId:t.agentId,teamId:t.teamId};return ws.emit("USAGE:LLM",s),s}formatToolsConfig({type:e="function",toolDefinitions:t,toolChoice:s="auto"}){let n=[];return"function"===e&&(n=t.map((e=>{const{name:t,description:s,properties:n,requiredFields:a}=e;return{name:t,description:s,input_schema:{type:"object",properties:n,required:a}}}))),n?.length>0?{tools:n}:{}}transformToolMessageBlocks({messageBlock:e,toolsData:t}){const s=[];if(e){const t=[];if(e.thinkingBlocks?.length>0&&t.push(...e.thinkingBlocks),Array.isArray(e.content)?t.push(...e.content):e.content&&t.push({type:"text",text:e.content}),e.tool_calls){const s=e.tool_calls.map((e=>{const t=e?.function?.arguments;return{type:"tool_use",id:e.id,name:e?.function?.name,input:"string"==typeof t?qn(t||"{}").tryParse():t||{}}}));t.push(...s)}s.push({role:e?.role,content:t})}const n=t.map((e=>({type:"tool_result",tool_use_id:e.id,content:e.result})));return n.length>0&&s.push({role:Jn.User,content:n}),s}getConsistentMessages(e){let t=JSON.parse(JSON.stringify(e)),s=null;if(t[0]?.role===Jn.System&&(s=t.shift()),t=Ri.removeDuplicateUserMessages(t),t=t.map((e=>{let t;if(e?.parts)t=e.parts.map((e=>e?.text||"")).join(" ");else if(Array.isArray(e?.content))if(Array.isArray(e.content)){const s=e.content.filter((e=>"object"==typeof e&&"type"in e&&("tool_use"===e.type||"tool_result"===e.type)));t=s?.length>0?e.content.map((e=>"text"!==e.type||e.text&&""!==e.text.trim()?e:{...e,text:"..."})):e.content.map((e=>e?.text||"")).join(" ").trim()}else t=e.content;else e?.content&&(t=e.content);return e.content=t||"...",e})),t[0]?.role===Jn.User&&Array.isArray(t[0].content)){t[0].content.find((e=>"type"in e&&"tool_result"===e.type))&&t.shift()}return t[0]?.role!==Jn.User&&t.unshift({role:Jn.User,content:"continue"}),s&&s.content&&t.unshift(s),t}async prepareBody(e){let t=await this.prepareMessages(e),s={model:e.model,messages:t,max_tokens:e.maxTokens};const{systemMessage:n,otherMessages:a}=Ri.separateSystemMessages(t);"content"in n&&(s.system=n?.content),t=a;"json"===(e?.responseFormat||"")&&(s.system=s.system?`${s.system} ${Ke}`:Ke,t.push({role:Jn.Assistant,content:"{"}));if(Ri.hasSystemMessage(t)){const{systemMessage:n,otherMessages:a}=Ri.separateSystemMessages(t);"content"in n&&(s.system=await this.prepareSystemPrompt(n,e)),t=a}void 0!==e?.temperature&&(s.temperature=e.temperature),void 0!==e?.topP&&(s.top_p=e.topP),void 0!==e?.topK&&(s.top_k=e.topK),e?.stopSequences?.length&&(s.stop_sequences=e.stopSequences),e?.toolsConfig?.tools&&e?.toolsConfig?.tools.length>0&&(s.tools=e?.toolsConfig?.tools,e?.cache&&(s.tools[s.tools.length-1].cache_control={type:"ephemeral"}));const o=e?.toolsConfig?.tool_choice;return o&&(s.tool_choice=o),s.messages=t,s}async prepareBodyForThinkingRequest({body:e,maxThinkingTokens:t,toolChoice:s=null}){let n=e.messages.filter((e=>e?.role!==Jn.Assistant&&"{"!==e?.content)),a=Math.min(t,e.max_tokens);a===e.max_tokens&&(a=Math.floor(.8*a));const o={model:e.model,messages:n,max_tokens:e.max_tokens,thinking:{type:"enabled",budget_tokens:a}};return s&&(["any","tool"].includes(s.type)?o.tool_choice={type:"auto"}:o.tool_choice=s),o}async prepareMessages(e){const t=e?.messages||[],s=e?.files||[];if(s?.length>0){const n=[],a=[];for(let t of s){const s=Bn.from(t);n.push(s.upload(ps.agent(e.agentId))),a.push(s)}await Promise.all(n);const o=this.getValidImageFiles(a),r=await this.getImageData(o,e.agentId),i=Array.isArray(t)?t.pop():{},l=[{type:"text",text:i?.content||""},...r];t.push({role:Jn.User,content:l})}return t}async prepareSystemPrompt(e,t){let s=e?.content;return"string"==typeof s&&(s=[{type:"text",text:s}]),s.unshift({type:"text",text:'If you need to call a function, Do NOT inform the user that you are about to do so, and do not thank the user after you get the response. Just say something like "Give me a moment...", then when you get the response, Just continue answering the user without saying anything about the function you just called'}),t?.cache&&(s[s.length-1].cache_control={type:"ephemeral"}),s}async shouldUseThinkingMode(e){if(Qi.includes(e.modelEntryName))return!0;return e?.useReasoning&&!0===e.capabilities?.reasoning}getValidImageFiles(e){const t=[];for(let s of e)this.validImageMimeTypes.includes(s?.mimetype)&&t.push(s);if(0===t?.length)throw new Error(`Unsupported file(s). Please make sure your file is one of the following types: ${this.validImageMimeTypes.join(", ")}`);return t}async getImageData(e,t){try{const s=[];for(let n of e){const e=(await n.readData(ps.agent(t))).toString("base64");s.push({type:"image",source:{type:"base64",data:e,media_type:n.mimetype}})}return s}catch(e){throw e}}}var Xi=Object.defineProperty,Yi=(e,t,s)=>((e,t,s)=>t in e?Xi(e,t,{enumerable:!0,configurable:!0,writable:!0,value:s}):e[t]=s)(e,t+"",s);class Zi extends Ci{constructor(){super(...arguments),Yi(this,"name","LLM:Groq")}async getClient(e){const t=e.credentials?.apiKey;if(!t)throw new Error("Please provide an API key for Groq");return new re({apiKey:t})}async request({acRequest:e,body:t,context:s}){try{const e=await this.getClient(s),n=await e.chat.completions.create(t),a=n?.choices?.[0]?.message,o=n?.choices?.[0]?.finish_reason,r=a?.tool_calls,i=n.usage;this.reportUsage(i,{modelEntryName:s.modelEntryName,keySource:s.isUserKey?Kn.User:Kn.Smyth,agentId:s.agentId,teamId:s.teamId});let l=[],c=!1;return r&&(l=r.map(((e,t)=>({index:t,id:e.id,type:e.type,name:e.function.name,arguments:e.function.arguments,role:Jn.Assistant}))),c=!0),{content:a?.content??"",finishReason:o,useTool:c,toolsData:l,message:a,usage:i}}catch(e){throw e}}async streamRequest({acRequest:e,body:t,context:s}){const n=new u,a=[];try{const e=await this.getClient(s),o=await e.chat.completions.create({...t,stream:!0,stream_options:{include_usage:!0}});let r=[];return(async()=>{for await(const e of o){const t=e.choices[0]?.delta,s=e.x_groq?.usage||e.usage;s&&a.push(s),n.emit("data",t),t?.content&&n.emit("content",t.content),t?.tool_calls&&t.tool_calls.forEach(((e,t)=>{r[t]?r[t].arguments+=e.function?.arguments||"":r[t]={index:t,id:e.id,type:e.type,name:e.function?.name,arguments:e.function?.arguments,role:"assistant"}}))}r.length>0&&n.emit(Wn.ToolInfo,r),a.forEach((e=>{this.reportUsage(e,{modelEntryName:s.modelEntryName,keySource:s.isUserKey?Kn.User:Kn.Smyth,agentId:s.agentId,teamId:s.teamId})})),setTimeout((()=>{n.emit("end",r)}),100)})(),n}catch(e){throw e}}async webSearchRequest({acRequest:e,body:t,context:s}){throw new Error("Web search is not supported for Groq")}async reqBodyAdapter(e){const t=e?.messages||[],s={model:e.model,messages:t};return"json"===(e?.responseFormat||"")&&("system"===t?.[0]?.role?t[0].content+=Ke:t.unshift({role:"system",content:Ke})),void 0!==e.maxTokens&&(s.max_tokens=e.maxTokens),void 0!==e.temperature&&(s.temperature=e.temperature),void 0!==e.topP&&(s.top_p=e.topP),e.stopSequences?.length&&(s.stop=e.stopSequences),e.toolsConfig?.tools&&(s.tools=e.toolsConfig?.tools),e.toolsConfig?.tool_choice&&(s.tool_choice=e.toolsConfig?.tool_choice),s}reportUsage(e,t){const s={sourceId:`llm:${t.modelEntryName.replace(He,"")}`,input_tokens:e?.prompt_tokens-(e?.prompt_tokens_details?.cached_tokens||0),output_tokens:e?.completion_tokens,input_tokens_cache_write:0,input_tokens_cache_read:e?.prompt_tokens_details?.cached_tokens||0,keySource:t.keySource,agentId:t.agentId,teamId:t.teamId};return ws.emit("USAGE:LLM",s),s}formatToolsConfig({type:e="function",toolDefinitions:t,toolChoice:s="auto"}){let n=[];return"function"===e&&(n=t.map((e=>{const{name:t,description:s,properties:n,requiredFields:a}=e;return{type:"function",function:{name:t,description:s,parameters:{type:"object",properties:n,required:a}}}}))),n?.length>0?{tools:n,tool_choice:s}:{}}getConsistentMessages(e){return Ri.removeDuplicateUserMessages(e).map((e=>{const t={...e};let s="";return e?.parts?s=e.parts.map((e=>e?.text||"")).join(" "):Array.isArray(e?.content)?s=e.content.map((e=>e?.text||"")).join(" "):e?.content&&(s=e.content),t.content=s,t}))}}var el=Object.defineProperty,tl=(e,t,s)=>((e,t,s)=>t in e?el(e,t,{enumerable:!0,configurable:!0,writable:!0,value:s}):e[t]=s)(e,t+"",s);class sl extends Ci{constructor(){super(...arguments),tl(this,"name","LLM:Bedrock")}async getClient(e){const t=e.credentials,s=e.modelInfo.settings.region;if(!(Object.keys(t).length>=2))throw new Error("Access key ID and secret access key are required for Bedrock");return new ie({region:s,credentials:t})}async request({acRequest:e,body:t,context:s}){try{const e=await this.getClient(s),n=new le(t),a=await e.send(n),o=a.usage;this.reportUsage(o,{modelEntryName:s.modelEntryName,keySource:s.isUserKey?Kn.User:Kn.Smyth,agentId:s.agentId,teamId:s.teamId});const r=a.output?.message,i=a.stopReason;let l=[],c=!1;if("tool_use"===i){l=(r?.content?.filter((e=>e?.toolUse))||[]).map(((e,t)=>({index:t,id:e.toolUse?.toolUseId,type:"function",name:al(e.toolUse?.name),arguments:e.toolUse?.input,role:"tool"}))),c=!0}return{content:Array.isArray(r?.content)?r?.content?.[0]?.text||"":r?.content||"",finishReason:i,useTool:c,toolsData:l,message:r,usage:o}}catch(e){throw e?.error||e}}async streamRequest({acRequest:e,body:t,context:s}){const n=new u;try{const e=await this.getClient(s),a=new ce(t),o=(await e.send(a)).stream;return o&&(async()=>{let e={role:"",content:"",toolCalls:[],currentToolCall:null,currentToolInput:""};for await(const t of o){if(t.messageStart&&(e.role=t.messageStart.role||"",n.emit("data",{role:e.role})),t.contentBlockDelta?.delta?.text&&(e.content+=t.contentBlockDelta.delta.text,n.emit("data",t.contentBlockDelta.delta.text),n.emit("content",t.contentBlockDelta.delta.text,e.role)),t.contentBlockStart?.start?.toolUse){const s=t.contentBlockStart.start.toolUse;s.toolUseId&&s.name&&(e.currentToolCall={index:e.toolCalls.length,id:s.toolUseId,type:"function",name:al(s.name),arguments:"",role:"tool"},e.currentToolInput="")}if(t.contentBlockDelta?.delta?.toolUse?.input&&e.currentToolCall&&(e.currentToolInput+=t.contentBlockDelta.delta.toolUse.input,e.currentToolCall.arguments=e.currentToolInput),t.contentBlockStop&&e.currentToolCall&&("string"==typeof e.currentToolCall.arguments&&st(e.currentToolCall.arguments)&&(e.currentToolCall.arguments=JSON.parse(e.currentToolCall.arguments)),e.toolCalls.push(e.currentToolCall),e.currentToolCall=null,e.currentToolInput=""),t.messageStop&&(e.toolCalls.length>0&&n.emit(Wn.ToolInfo,e.toolCalls),n.emit(Wn.End,e.toolCalls)),t?.metadata?.usage){const e=t.metadata.usage;this.reportUsage(e,{modelEntryName:s.modelEntryName,keySource:s.isUserKey?Kn.User:Kn.Smyth,agentId:s.agentId,teamId:s.teamId})}}})(),n}catch(e){const t=e;return n.emit(Wn.Error,t?.error||t),n}}async webSearchRequest({acRequest:e,body:t,context:s}){throw new Error("Web search is not supported for Bedrock")}async reqBodyAdapter(e){const t=e.modelInfo;let s,n=e?.messages||[];const{systemMessage:a,otherMessages:o}=Ri.separateSystemMessages(n);"content"in a&&(s="string"==typeof a?.content?[{text:a?.content}]:a?.content),n=o;const r={modelId:t.settings?.customModel||t.settings?.foundationModel,messages:n};return s&&(r.system=s),e?.toolsConfig?.tools?.length>0&&(r.toolConfig={tools:e?.toolsConfig?.tools,...e?.toolsConfig?.tool_choice&&{toolChoice:e?.toolsConfig?.tool_choice}}),r}reportUsage(e,t){const s={sourceId:`llm:${t.modelEntryName.replace(He,"")}`,input_tokens:e.inputTokens,output_tokens:e.outputTokens,input_tokens_cache_write:e.cacheWriteInputTokenCount||0,input_tokens_cache_read:e.cacheReadInputTokenCount||0,keySource:t.keySource,agentId:t.agentId,teamId:t.teamId};return ws.emit("USAGE:LLM",s),s}formatToolsConfig({type:e="function",toolDefinitions:t,toolChoice:s="auto"}){let n=[];return"function"===e&&(n=t.map((e=>{const{name:t,description:s,properties:n,requiredFields:a}=e;return{toolSpec:{name:nl(t),description:s,inputSchema:{json:{type:"object",properties:n,required:a}}}}}))),n?.length>0?{tools:n,toolChoice:s||"auto"}:{}}transformToolMessageBlocks({messageBlock:e,toolsData:t}){const s=[];if(e){const t=[];"string"==typeof e.content?t.push({text:e.content}):Array.isArray(e.content)&&t.push(...e.content),e.tool_calls?.length&&e.tool_calls.forEach((e=>{const s=e?.function?.arguments;t.push({toolUse:{toolUseId:e.id,name:nl(e?.function?.name),input:"string"==typeof s?qn(s||"{}").tryParse():s||{}}})})),s.push({role:e?.role,content:t})}if(t?.length){const e=t.filter((e=>e.id&&(e.result||e.error))).map((e=>{let t;return"string"==typeof e?.result?t=[{text:e.result}]:"object"==typeof e?.result&&(t=[{json:e.result}]),{toolResult:{toolUseId:e.id,content:t,...e.error&&{status:"error"}}}}));e.length>0&&s.push({role:Jn.User,content:e})}return s}getConsistentMessages(e){return Ri.removeDuplicateUserMessages(e).map((e=>{let t=[];return e?.parts?t=e.parts.map((e=>"text"in e?{...e,text:e.text||"..."}:{...e})):e?.content&&(t=Array.isArray(e.content)?e.content.map((e=>"text"in e?{...e,text:e.text||"..."}:{...e})):[{text:e?.content||"..."}]),{role:e.role,content:t}}))}}function nl(e){return e?.replace(/-/g,"__")}function al(e){return e?.replace(/__/g,"-")}var ol=Object.defineProperty,rl=(e,t,s)=>((e,t,s)=>t in e?ol(e,t,{enumerable:!0,configurable:!0,writable:!0,value:s}):e[t]=s)(e,t+"",s);class il extends Ci{constructor(){super(...arguments),rl(this,"name","LLM:VertexAI")}async getClient(e){const t=e.credentials,s=e.modelInfo,n=s?.settings?.projectId,a=s?.settings?.region;return new ue({project:n,location:a,googleAuthOptions:{credentials:t}})}async request({acRequest:e,body:t,context:s}){const n=t.messages;delete t.messages;try{const e=(await this.getClient(s)).getGenerativeModel(t),a=await e.generateContent({contents:n}),o=a?.response?.candidates?.[0]?.content?.parts?.[0]?.text,r=a?.response?.usageMetadata;return this.reportUsage(r,{modelEntryName:s.modelEntryName,keySource:s.isUserKey?Kn.User:Kn.Smyth,agentId:s.agentId,teamId:s.teamId}),{content:o,finishReason:"stop",useTool:!1,toolsData:[],message:{content:o,role:"assistant"},usage:r}}catch(e){throw e}}async streamRequest({acRequest:e,body:t,context:s}){const n=new u;return setTimeout((()=>{try{this.request({acRequest:e,body:t,context:s}).then((e=>{const t=e.finishReason,s=e.usage;n.emit("interrupted",t),n.emit("content",e.content),n.emit("end",void 0,s,t)})).catch((e=>{n.emit("error",e.message||e.toString())}))}catch(e){n.emit("error",e.message||e.toString())}}),100),n}async webSearchRequest({acRequest:e,body:t,context:s}){throw new Error("Web search is not supported for Vertex AI")}async reqBodyAdapter(e){let t,s=e?.messages||[];const{systemMessage:n,otherMessages:a}=Ri.separateSystemMessages(s);"content"in n&&(t=n.content),s=a;"json"===(e?.responseFormat||"")&&(t=Ke);const o=e.modelInfo;let r={model:o?.settings?.customModel||o?.settings?.foundationModel,messages:s};const i={};return void 0!==e?.maxTokens&&(i.maxOutputTokens=e.maxTokens),void 0!==e?.temperature&&(i.temperature=e.temperature),void 0!==e?.topP&&(i.topP=e.topP),void 0!==e?.topK&&(i.topK=e.topK),e?.stopSequences?.length&&(i.stopSequences=e.stopSequences),t&&(r.systemInstruction=t),Object.keys(i).length>0&&(r.generationConfig=i),r}reportUsage(e,t){const s={sourceId:`llm:${t.modelEntryName.replace(He,"")}`,input_tokens:e.promptTokenCount||0,output_tokens:e.candidatesTokenCount||0,input_tokens_cache_read:e.cachedContentTokenCount||0,input_tokens_cache_write:0,keySource:t.keySource,agentId:t.agentId,teamId:t.teamId};return ws.emit("USAGE:LLM",s),s}formatToolsConfig({type:e="function",toolDefinitions:t,toolChoice:s="auto"}){throw new Error("Tool configuration is not currently implemented for Vertex AI")}getConsistentMessages(e){return Ri.removeDuplicateUserMessages(e).map((e=>{let t=[];return e?.parts?t=e.parts:e?.content&&(t=Array.isArray(e.content)?e.content:[{text:e.content}]),{role:e.role,parts:t}}))}}var ll=Object.defineProperty,cl=(e,t,s)=>((e,t,s)=>t in e?ll(e,t,{enumerable:!0,configurable:!0,writable:!0,value:s}):e[t]=s)(e,t+"",s);class ul extends Ci{constructor(){super(...arguments),cl(this,"name","LLM:Perplexity")}async getClient(e){const t=e.credentials?.apiKey;if(!t)throw new Error("Please provide an API key for Perplexity");return o.create({baseURL:e?.modelInfo?.baseURL,headers:{Authorization:`Bearer ${t}`,"Content-Type":"application/json"}})}async request({acRequest:e,body:t,context:s}){try{const e=await this.getClient(s),n=await e.post("/chat/completions",t),a=n?.data?.choices?.[0]?.message.content,o=n?.data?.choices?.[0]?.finish_reason,r=n?.data?.usage;return this.reportUsage(r,{modelEntryName:s.modelEntryName,keySource:s.isUserKey?Kn.User:Kn.Smyth,agentId:s.agentId,teamId:s.teamId}),{content:a,finishReason:o,useTool:!1,toolsData:[],message:{content:a,role:"assistant"},usage:r}}catch(e){throw e}}async streamRequest({acRequest:e,body:t,context:s}){const n=new u;return setTimeout((()=>{try{this.request({acRequest:e,body:t,context:s}).then((e=>{const t=e.finishReason,s=e.usage;n.emit("interrupted",t),n.emit("content",e.content),n.emit("end",void 0,s,t)})).catch((e=>{n.emit("error",e.message||e.toString())}))}catch(e){n.emit("error",e.message||e.toString())}}),100),n}async webSearchRequest({acRequest:e,body:t,context:s}){throw new Error("Web search is not supported for Perplexity")}async reqBodyAdapter(e){const t=e?.messages||[];"json"===(e?.responseFormat||"")&&(t?.[0]?.role===Jn.System?t[0].content+=Ke:t.unshift({role:Jn.System,content:Ke}),delete e.responseFormat);const s={model:e.model,messages:t};return void 0!==e?.maxTokens&&(s.max_tokens=e.maxTokens),void 0!==e?.temperature&&(s.temperature=e.temperature),void 0!==e?.topP&&(s.top_p=e.topP),void 0!==e?.topK&&(s.top_k=e.topK),e?.frequencyPenalty&&(s.frequency_penalty=e.frequencyPenalty),void 0!==e?.presencePenalty&&(s.presence_penalty=e.presencePenalty),e.responseFormat&&(s.response_format=e.responseFormat),s}reportUsage(e,t){const s={sourceId:`llm:${t.modelEntryName.replace(He,"")}`,input_tokens:e?.prompt_tokens-(e?.prompt_tokens_details?.cached_tokens||0),output_tokens:e?.completion_tokens,input_tokens_cache_write:0,input_tokens_cache_read:e?.prompt_tokens_details?.cached_tokens||0,reasoning_tokens:e?.reasoning_tokens||0,keySource:t.keySource,agentId:t.agentId,teamId:t.teamId};return ws.emit("USAGE:LLM",s),s}formatToolsConfig({type:e="function",toolDefinitions:t,toolChoice:s="auto"}){let n=[];return"function"===e&&(n=t.map((e=>{const{name:t,description:s,properties:n,requiredFields:a}=e;return{type:"function",function:{name:t,description:s,parameters:{type:"object",properties:n,required:a}}}}))),n?.length>0?{tools:n,tool_choice:s||"auto"}:{}}transformToolMessageBlocks({messageBlock:e,toolsData:t}){const s=[];if(e){const t={...e,content:"object"==typeof e.content?JSON.stringify(e.content):e.content};if(t.tool_calls)for(let e of t.tool_calls)e.function.arguments="object"==typeof e.function.arguments?JSON.stringify(e.function.arguments):e.function.arguments;s.push(t)}const n=t.map((e=>({tool_call_id:e.id,role:Jn.Tool,name:e.name,content:"string"==typeof e.result?e.result:JSON.stringify(e.result)})));return[...s,...n]}getConsistentMessages(e){return Ri.removeDuplicateUserMessages(e).map((e=>{const t={...e};let s="";return e?.parts?s=e.parts.map((e=>e?.text||"")).join(" "):Array.isArray(e?.content)?s=e.content.map((e=>e?.text||"")).join(" "):e?.content&&(s=e.content),t.content=s,t}))}}class dl extends Ls{register(){Ts.register(Xe.LLM,"Echo",Mi),Ts.register(Xe.LLM,"OpenAI",ji),Ts.register(Xe.LLM,"DeepSeek",ji),Ts.register(Xe.LLM,"GoogleAI",Ji),Ts.register(Xe.LLM,"Anthropic",Hi),Ts.register(Xe.LLM,"Groq",Zi),Ts.register(Xe.LLM,"TogetherAI",ji),Ts.register(Xe.LLM,"Bedrock",sl),Ts.register(Xe.LLM,"VertexAI",il),Ts.register(Xe.LLM,"xAI",ji),Ts.register(Xe.LLM,"Perplexity",ul)}init(){Ts.init(Xe.LLM,"Echo"),Ts.init(Xe.LLM,"OpenAI"),Ts.init(Xe.LLM,"DeepSeek"),Ts.init(Xe.LLM,"GoogleAI"),Ts.init(Xe.LLM,"Anthropic"),Ts.init(Xe.LLM,"Groq"),Ts.init(Xe.LLM,"TogetherAI"),Ts.init(Xe.LLM,"Bedrock"),Ts.init(Xe.LLM,"VertexAI"),Ts.init(Xe.LLM,"xAI"),Ts.init(Xe.LLM,"Perplexity")}}var ml=Object.defineProperty,pl=Object.getOwnPropertyDescriptor,hl=(e,t,s,n)=>{for(var a,o=pl(t,s),r=e.length-1;r>=0;r--)(a=e[r])&&(o=a(t,s,o)||o);return o&&ml(t,s,o),o},gl=(e,t,s)=>((e,t,s)=>t in e?ml(e,t,{enumerable:!0,configurable:!0,writable:!0,value:s}):e[t]=s)(e,"symbol"!=typeof t?t+"":t,s);const yl=Wt("RedisCache");class fl extends Mn{constructor(e){super(e),this._settings=e,gl(this,"name","RedisCache"),gl(this,"redis"),gl(this,"_prefix","smyth:cache"),gl(this,"_mdPrefix","smyth:metadata");const t="string"==typeof(s=e.hosts||process.env.REDIS_HOSTS)?s.split(",").map((e=>{const[t,s]=e.split(":");return{host:t,port:Number(s)}})):Array.isArray(s)?s.map((e=>{if("string"==typeof e){const[t,s]=e.split(":");return{host:t,port:Number(s)}}return e})):[];var s;let n=1===t.length?t[0].host:null,a=1===t.length?t[0].port:null;this.redis=new de({...n?{host:n,port:a}:{sentinels:t,name:e.name||process.env.REDIS_MASTER_NAME},password:e.password||process.env.REDIS_PASSWORD}),this.redis.on("error",(e=>{yl.error("Redis Error:",e)})),this.redis.on("connect",(()=>{yl.log("Redis connected!")}))}get client(){return this.redis}get prefix(){return this._prefix}get mdPrefix(){return this._mdPrefix}async get(e,t){return await this.redis.get(`${this._prefix}:${t}`)}async set(e,t,s,n,a,o){const r=e.candidate,i=[],l=a||{};return l.acl=Ln.from(n).addAccess(r.role,r.id,es.Owner).ACL,o&&o>0?(i.push(this.redis.set(`${this._prefix}:${t}`,s,"EX",o)),i.push(this.setMetadataWithTTL(e,t,l,o))):(i.push(this.redis.set(`${this._prefix}:${t}`,s)),i.push(this.setMetadata(e,t,l))),await Promise.all(i),!0}async delete(e,t){await Promise.all([this.redis.del(`${this._prefix}:${t}`),this.redis.del(`${this._mdPrefix}:${t}`)])}async exists(e,t){return!!await this.redis.exists(`${this._prefix}:${t}`)}async getMetadata(e,t){if(this.exists(e,t))try{const e=await this.redis.get(`${this._mdPrefix}:${t}`);return e?this.deserializeRedisMetadata(e):{}}catch(e){return{}}}async setMetadata(e,t,s){await this.setMetadataWithTTL(e,t,s)}async setMetadataWithTTL(e,t,s,n){n&&n>0?await this.redis.set(`${this._mdPrefix}:${t}`,this.serializeRedisMetadata(s),"EX",n):await this.redis.set(`${this._mdPrefix}:${t}`,this.serializeRedisMetadata(s))}async updateTTL(e,t,s){s&&await Promise.all([this.redis.expire(`${this._prefix}:${t}`,s),this.redis.expire(`${this._mdPrefix}:${t}`,s)])}async getTTL(e,t){return this.redis.ttl(`${this._prefix}:${t}`)}async getResourceACL(e,t){const s=await this.redis.get(`${this._mdPrefix}:${e}`).catch((e=>{})),n=null!=s,a=n?this.deserializeRedisMetadata(s):{};return n?Ln.from(a?.acl):(new Ln).addAccess(t.role,t.id,es.Owner)}async getACL(e,t){try{const s=await this.getMetadata(e,t);return s?.acl||{}}catch(e){throw yl.error("Error getting access rights in S3",e.name,e.message),e}}async setACL(e,t,s){try{let n=await this.getMetadata(e,t);n||(n={}),n.acl=Ln.from(s).addAccess(e.candidate.role,e.candidate.id,es.Owner).ACL,await this.setMetadata(e,t,n)}catch(e){throw yl.error("Error setting access rights in S3",e),e}}serializeRedisMetadata(e){if(!e)return"";if(e.acl){const t=e.acl;t&&(e.acl=Ln.from(t).serializedACL)}return JSON.stringify(e)}deserializeRedisMetadata(e){try{const t=JSON.parse(e);if(t.acl){const e=Ln.from(t.acl).ACL;t.acl=e}return t}catch(t){return yl.warn("Error deserializing metadata",e),{}}}async stop(){super.stop(),await this.redis.quit()}}hl([Sn.AccessControl],fl.prototype,"get"),hl([Sn.AccessControl],fl.prototype,"set"),hl([Sn.AccessControl],fl.prototype,"delete"),hl([Sn.AccessControl],fl.prototype,"exists"),hl([Sn.AccessControl],fl.prototype,"getMetadata"),hl([Sn.AccessControl],fl.prototype,"setMetadata"),hl([Sn.AccessControl],fl.prototype,"updateTTL"),hl([Sn.AccessControl],fl.prototype,"getTTL"),hl([Sn.AccessControl],fl.prototype,"getACL"),hl([Sn.AccessControl],fl.prototype,"setACL");var bl=Object.defineProperty,wl=Object.getOwnPropertyDescriptor,Il=(e,t,s,n)=>{for(var a,o=wl(t,s),r=e.length-1;r>=0;r--)(a=e[r])&&(o=a(t,s,o)||o);return o&&bl(t,s,o),o},kl=(e,t,s)=>((e,t,s)=>t in e?bl(e,t,{enumerable:!0,configurable:!0,writable:!0,value:s}):e[t]=s)(e,"symbol"!=typeof t?t+"":t,s);const Al=Wt("S3Cache");class vl extends Mn{constructor(e){super(e),this._settings=e,kl(this,"name","S3Cache"),kl(this,"s3Client"),kl(this,"bucketName"),kl(this,"isInitialized",!1),kl(this,"cachePrefix","_smyth_cache"),this.s3Client=new V({region:e.region,credentials:{accessKeyId:e.accessKeyId,secretAccessKey:e.secretAccessKey}}),this.bucketName=e.bucketName}get client(){return this.s3Client}async get(e,t){const s=e.candidate.id;this.isInitialized||await this.initialize();try{const e={Bucket:this.bucketName,Key:`${this.cachePrefix}/${s}/${t}`},n=new z(e),a=await this.s3Client.send(n),o=a?.Expiration;if(o){const s=o.match(/expiry-date="([^"]+)"/);if(s){const n=new Date(s[1]);if(new Date>n){const s=new J(e);return await this.s3Client.send(s),Al.log(`Object ${t} expired and deleted.`),null}}}const r=new K(e);return(await this.s3Client.send(r)).Body.transformToString()}catch(e){throw Al.error(`Error reading object ${t}:`,e),null}}async set(e,t,s,n,a,o){const r=e.candidate,i=r.id,l=a||{};l.acl=Ln.from(n).addAccess(r.role,r.id,es.Owner).ACL;const c=this.serializeS3Metadata(l),u={Bucket:this.bucketName,Key:`${this.cachePrefix}/${i}/${t}`,Body:s,Metadata:c};if(o){const e=ni(oi(o));u.Tagging=`${e.Key}=${e.Value}`}const d=new W(u);return await this.s3Client.send(d),!0}async delete(e,t){try{const s=e.candidate.id,n=new J({Bucket:this.bucketName,Key:`${this.cachePrefix}/${s}/${t}`});await this.s3Client.send(n)}catch(e){return void Al.log(`Error deleting object ${t}:`,e)}}async exists(e,t){const s=e.candidate.id;try{const n={Bucket:this.bucketName,Key:`${this.cachePrefix}/${s}/${t}`},a=new z(n),o=await this.s3Client.send(a),r=o?.Expiration;if(r){const s=r.match(/expiry-date="([^"]+)"/);if(s){const n=new Date(s[1]);if(new Date>n)return await this.delete(e,t),Al.log(`Object ${t} expired and deleted.`),!1}}return!0}catch(e){return Al.error(`Error reading object ${t}:`,e),!1}}async getMetadata(e,t){const s=e.candidate.id;try{return await this.getS3Metadata(`${this.cachePrefix}/${s}/${t}`)}catch(e){throw Al.error("Error getting access rights in S3",e.name,e.message),e}}async setMetadata(e,t,s){const n=e.candidate.id;try{let e=await this.getS3Metadata(`${this.cachePrefix}/${n}/${t}`);e||(e={}),e={...e,...s},await this.setS3Metadata(`${this.cachePrefix}/${n}/${t}`,e)}catch(e){throw Al.error("Error setting access rights in S3",e),e}}async updateTTL(e,t,s){if(s){const n=e.candidate.id,a=ni(oi(s)),o=new Q({Bucket:this.bucketName,Key:`${this.cachePrefix}/${n}/${t}`,Tagging:{TagSet:[{Key:a.Key,Value:a.Value}]}});await this.s3Client.send(o)}}async getTTL(e,t){const s=e.candidate.id,n=new z({Bucket:this.bucketName,Key:`${this.cachePrefix}/${s}/${t}`}),a=await this.s3Client.send(n),o=a?.Expiration;if(o){const e=o.match(/expiry-date="([^"]+)"/);if(e){const t=new Date(e[1]),s=new Date,n=t.getTime()-s.getTime();return Math.floor(n/864e5)}}return-1}async getResourceACL(e,t){try{const s=new z({Bucket:this.bucketName,Key:`${this.cachePrefix}/${t.id}/${e}`}),n=(await this.s3Client.send(s)).Metadata;return n.acl?Ln.from(n?.acl):(new Ln).addAccess(t.role,t.id,es.Owner)}catch(e){if("NotFound"===e.name)return(new Ln).addAccess(t.role,t.id,es.Owner);throw e}}async getACL(e,t){try{const s=await this.getMetadata(e,t);return s?.acl||{}}catch(e){throw e}}async setACL(e,t,s){try{let n=await this.getMetadata(e,t);n||(n={}),n.acl=Ln.from(s).addAccess(e.candidate.role,e.candidate.id,es.Owner).ACL,await this.setMetadata(e,t,n)}catch(e){throw Al.error("Error setting access rights in S3",e),e}}async getS3Metadata(e){try{const t=new z({Bucket:this.bucketName,Key:e}),s=await this.client.send(t),n=s.Metadata;if(!n||0===Object.keys(n).length)return{};let a=this.deserializeS3Metadata(n);return a.ContentType||(a.ContentType=s.ContentType?s.ContentType:"application/octet-stream"),a}catch(e){if("NotFound"===e.name||"NoSuchKey"===e.name)return;throw Al.error("Error reading object metadata from S3",e.name,e.message),e}}async setS3Metadata(e,t){try{const s=new H({Bucket:this.bucketName,Key:e}),n=await this.client.send(s),a=this.serializeS3Metadata(t),o=new X({Bucket:this.bucketName,CopySource:`${this.bucketName}/${e}`,Key:e,Metadata:a,MetadataDirective:"REPLACE",Tagging:n.TagSet.map((e=>`${e.Key}=${e.Value}`)).join("&")});await this.client.send(o)}catch(e){throw Al.error("Error setting object metadata in S3",e.name,e.message),e}}async initialize(){await ri(this.bucketName,this.s3Client),this.isInitialized=!0}serializeS3Metadata(e){let t={};e.acl&&(t.acl="string"==typeof e.acl?e.acl:Ln.from(e.acl).serializedACL,delete e.acl);for(let s in e)"ContentType"!=s&&(t[s]="string"==typeof e[s]?e[s]:JSON.stringify(e[s]));return t}deserializeS3Metadata(e){let t={};for(let s in e)if("acl"!==s)try{t[s]=JSON.parse(e[s])}catch(n){t[s]=e[s]}else t[s]=Ln.from(e[s]).ACL;return t}}Il([Sn.AccessControl],vl.prototype,"get"),Il([Sn.AccessControl],vl.prototype,"set"),Il([Sn.AccessControl],vl.prototype,"delete"),Il([Sn.AccessControl],vl.prototype,"exists"),Il([Sn.AccessControl],vl.prototype,"getMetadata"),Il([Sn.AccessControl],vl.prototype,"setMetadata"),Il([Sn.AccessControl],vl.prototype,"updateTTL"),Il([Sn.AccessControl],vl.prototype,"getTTL"),Il([Sn.AccessControl],vl.prototype,"getACL"),Il([Sn.AccessControl],vl.prototype,"setACL");var xl=Object.defineProperty,_l=Object.getOwnPropertyDescriptor,Tl=(e,t,s,n)=>{for(var a,o=_l(t,s),r=e.length-1;r>=0;r--)(a=e[r])&&(o=a(t,s,o)||o);return o&&xl(t,s,o),o},Ll=(e,t,s)=>((e,t,s)=>t in e?xl(e,t,{enumerable:!0,configurable:!0,writable:!0,value:s}):e[t]=s)(e,"symbol"!=typeof t?t+"":t,s);const Cl=Wt("LocalStorageCache");class Sl extends Mn{constructor(e){super(e),Ll(this,"name","LocalStorageCache"),Ll(this,"folder"),Ll(this,"_prefix","cache"),Ll(this,"_mdPrefix","cache.metadata"),Ll(this,"isInitialized",!1),this.folder=e.folder||`${b.tmpdir()}/.smyth/cache`,this.initialize()}async initialize(){k(this.folder)||A(this.folder,{recursive:!0});const e=f.join(this.folder,this._prefix);k(e)||A(e,{recursive:!0});const t=f.join(this.folder,this._mdPrefix);k(t)||(A(t,{recursive:!0}),v(f.join(t,"README_IMPORTANT.txt"),"This folder is used for smythOS metadata, do not delete it, it will break SmythOS cache functionality")),this.isInitialized=!0}get prefix(){return this._prefix}get mdPrefix(){return this._mdPrefix}async get(e,t){this.isInitialized||await this.initialize();try{const s=this.getStorageFilePath(e.candidate.id,t);if(!k(s))return;const n=x(s,"utf-8"),a=this.getMetadataFilePath(e.candidate.id,t),o=x(a,"utf-8"),r=JSON.parse(o);return r.expiresAt&&r.expiresAt<Date.now()?void await this.delete(e,t):n}catch(e){throw Cl.error("Error reading object from local storage",e.name,e.message),e}}async set(e,t,s,n,a,o){this.isInitialized||await this.initialize();const r=e.candidate;let i={...a,acl:Ln.from(n).addAccess(r.role,r.id,es.Owner).ACL,...o?{expiresAt:Date.now()+1e3*o}:{}};const l=this.getStorageFilePath(e.candidate.id,t,!0);this.createDirectories(l,t);const c=this.getStorageFilePath(e.candidate.id,t);return v(c,s),await this.setMetadata(e,t,i),!0}async delete(e,t){try{const s=this.getStorageFilePath(e.candidate.id,t);if(!k(s))return;_(s);const n=this.getMetadataFilePath(e.candidate.id,t);_(n)}catch(e){throw Cl.error("Error deleting object from local storage",e.name,e.message),e}}async exists(e,t){this.isInitialized||await this.initialize();const s=this.getStorageFilePath(e.candidate.id,t);if(!k(s))return!1;const n=this.getMetadataFilePath(e.candidate.id,t);if(!k(n))return!1;const a=x(n,"utf-8"),o=JSON.parse(a);return!(o.expiresAt&&o.expiresAt<Date.now())||(await this.delete(e,t),!1)}async getMetadata(e,t){try{const s=this.getMetadataFilePath(e.candidate.id,t);if(!k(s))return;const n=x(s,"utf-8");return this.deserializeMetadata(JSON.parse(n))}catch(e){throw Cl.error("Error reading metadata from LocalStorage",e.name,e.message),e}}async setMetadata(e,t,s){try{let n=await this.getMetadata(e,t);n||(n={}),n={...n,...s};const a=this.getMetadataFilePath(e.candidate.id,t,!0);this.createDirectories(a,t);const o=this.getMetadataFilePath(e.candidate.id,t),r=this.serializeMetadata(n);v(o,JSON.stringify(r))}catch(e){throw Cl.error("Error setting metadata in local storage",e.name,e.message),e}}async updateTTL(e,t,s){if(s){const n=this.getMetadataFilePath(e.candidate.id,t),a=x(n,"utf-8"),o=JSON.parse(a);o.expiresAt=Date.now()+1e3*s,v(n,JSON.stringify(o))}}async getTTL(e,t){const s=this.getMetadataFilePath(e.candidate.id,t),n=x(s,"utf-8"),a=JSON.parse(n);return a.expiresAt&&a.expiresAt>Date.now()?Math.floor((a.expiresAt-Date.now())/1e3):0}async getResourceACL(e,t){this.isInitialized||await this.initialize();const s=this.getMetadataFilePath(t.id,e);if(!k(s))return(new Ln).addAccess(t.role,t.id,es.Owner);const n=x(s,"utf-8");if(!(void 0!==n))return(new Ln).addAccess(t.role,t.id,es.Owner);try{let e=JSON.parse(n);return Ln.from(e?.acl)}catch(e){throw Cl.error("Error parsing metadata in local storage",e.name,e.message),e}}async getACL(e,t){try{const s=await this.getMetadata(e,t);return Ln.from(s?.acl)}catch(e){throw Cl.error("Error getting access rights in local storage",e.name,e.message),e}}async setACL(e,t,s){try{let n=await this.getMetadata(e,t);n||(n={}),n.acl=Ln.from(s).addAccess(e.candidate.role,e.candidate.id,es.Owner).ACL,await this.setMetadata(e,t,n)}catch(e){throw Cl.error("Error setting access rights in local storage",e),e}}serializeMetadata(e){let t={};e.acl&&(e.acl&&(t.acl="string"==typeof e.acl?e.acl:Ln.from(e.acl).serializedACL),delete e.acl);for(let s in e)"ContentType"!=s&&(t[s]="string"==typeof e[s]?e[s]:JSON.stringify(e[s]));return t}deserializeMetadata(e){let t={};for(let s in e)if("acl"!==s)try{t[s]=JSON.parse(e[s])}catch(n){t[s]=e[s]}else t[s]=Ln.from(e[s]).ACL;return t}getStorageFilePath(e,t,s=!1){return k(f.join(this.folder,this._prefix,e))||A(f.join(this.folder,this._prefix,e)),s?f.join(this.folder,this._prefix,e):f.join(this.folder,this._prefix,e,t)}getMetadataFilePath(e,t,s=!1){return k(f.join(this.folder,this._mdPrefix,e))||A(f.join(this.folder,this._mdPrefix,e)),s?f.join(this.folder,this._mdPrefix,e):f.join(this.folder,this._mdPrefix,e,t)}createDirectories(e,t){const s=t.split("/").slice(0,-1);let n=e;for(let e of s)n=f.join(n,e),k(n)||A(n)}}Tl([Sn.AccessControl],Sl.prototype,"get"),Tl([Sn.AccessControl],Sl.prototype,"set"),Tl([Sn.AccessControl],Sl.prototype,"delete"),Tl([Sn.AccessControl],Sl.prototype,"exists"),Tl([Sn.AccessControl],Sl.prototype,"getMetadata"),Tl([Sn.AccessControl],Sl.prototype,"setMetadata"),Tl([Sn.AccessControl],Sl.prototype,"updateTTL"),Tl([Sn.AccessControl],Sl.prototype,"getTTL"),Tl([Sn.AccessControl],Sl.prototype,"getACL"),Tl([Sn.AccessControl],Sl.prototype,"setACL");var Pl=Object.defineProperty,Ml=Object.getOwnPropertyDescriptor,Rl=(e,t,s,n)=>{for(var a,o=Ml(t,s),r=e.length-1;r>=0;r--)(a=e[r])&&(o=a(t,s,o)||o);return o&&Pl(t,s,o),o},Ol=(e,t,s)=>((e,t,s)=>t in e?Pl(e,t,{enumerable:!0,configurable:!0,writable:!0,value:s}):e[t]=s)(e,"symbol"!=typeof t?t+"":t,s);const Dl=Wt("RAMCache");class ql extends Mn{constructor(e){super(e),this._settings=e,Ol(this,"name","RAMCache"),Ol(this,"_prefix","smyth:cache"),Ol(this,"_mdPrefix","smyth:metadata"),Ol(this,"cache",new Map),Ol(this,"cleanupInterval"),this.cleanupInterval=setInterval((()=>this.cleanupExpiredEntries()),6e4),this.cleanupInterval.unref()}get prefix(){return this._prefix}get mdPrefix(){return this._mdPrefix}getFullKey(e){return`${this._prefix}:${e}`}getFullMetadataKey(e){return`${this._mdPrefix}:${e}`}cleanupExpiredEntries(){const e=Date.now();for(const[t,s]of this.cache.entries())s.expiresAt&&s.expiresAt<e&&this.cache.delete(t)}async get(e,t){const s=this.getFullKey(t),n=this.cache.get(s);return n?n.expiresAt&&n.expiresAt<Date.now()?(this.cache.delete(s),null):n.value:null}async set(e,t,s,n,a,o){const r=e.candidate,i=this.getFullKey(t),l=this.getFullMetadataKey(t),c=a||{};c.acl=Ln.from(n).addAccess(r.role,r.id,es.Owner).ACL;const u={value:s,metadata:c,expiresAt:o?Date.now()+1e3*o:void 0};return this.cache.set(i,u),this.cache.set(l,u),!0}async delete(e,t){const s=this.getFullKey(t),n=this.getFullMetadataKey(t);this.cache.delete(s),this.cache.delete(n)}async exists(e,t){const s=this.getFullKey(t),n=this.cache.get(s);return!!n&&(!(n.expiresAt&&n.expiresAt<Date.now())||(this.cache.delete(s),!1))}async getMetadata(e,t){if(!await this.exists(e,t))return;const s=this.getFullMetadataKey(t),n=this.cache.get(s);return n?.metadata||{}}async setMetadata(e,t,s){const n=this.getFullMetadataKey(t),a=this.cache.get(n);a&&(a.metadata=s,this.cache.set(n,a))}async updateTTL(e,t,s){const n=this.getFullKey(t),a=this.getFullMetadataKey(t),o=this.cache.get(n);o&&(o.expiresAt=s?Date.now()+1e3*s:void 0,this.cache.set(n,o),this.cache.set(a,o))}async getTTL(e,t){const s=this.getFullKey(t),n=this.cache.get(s);if(!n||!n.expiresAt)return-1;const a=Math.ceil((n.expiresAt-Date.now())/1e3);return a>0?a:-1}async getResourceACL(e,t){const s=this.getFullMetadataKey(e),n=this.cache.get(s);return n?Ln.from(n.metadata?.acl):(new Ln).addAccess(t.role,t.id,es.Owner)}async getACL(e,t){try{const s=await this.getMetadata(e,t);return s?.acl||{}}catch(e){throw Dl.error("Error getting access rights in RAMCache",e.name,e.message),e}}async setACL(e,t,s){try{let n=await this.getMetadata(e,t);n||(n={}),n.acl=Ln.from(s).addAccess(e.candidate.role,e.candidate.id,es.Owner).ACL,await this.setMetadata(e,t,n)}catch(e){throw Dl.error("Error setting access rights in RAMCache",e),e}}async stop(){super.stop(),clearInterval(this.cleanupInterval),this.cache.clear()}}Rl([Sn.AccessControl],ql.prototype,"get"),Rl([Sn.AccessControl],ql.prototype,"set"),Rl([Sn.AccessControl],ql.prototype,"delete"),Rl([Sn.AccessControl],ql.prototype,"exists"),Rl([Sn.AccessControl],ql.prototype,"getMetadata"),Rl([Sn.AccessControl],ql.prototype,"setMetadata"),Rl([Sn.AccessControl],ql.prototype,"updateTTL"),Rl([Sn.AccessControl],ql.prototype,"getTTL"),Rl([Sn.AccessControl],ql.prototype,"getACL"),Rl([Sn.AccessControl],ql.prototype,"setACL");class El extends Ls{register(){Ts.register(Xe.Cache,"Redis",fl),Ts.register(Xe.Cache,"S3",vl),Ts.register(Xe.Cache,"LocalStorage",Sl),Ts.register(Xe.Cache,"RAM",ql)}}class Nl extends Sn{requester(e){return{get:async t=>this.get(e.readRequest,t),exists:async t=>this.exists(e.readRequest,t),listKeys:async()=>this.listKeys(e.readRequest)}}}var $l=Object.defineProperty,Gl=Object.getOwnPropertyDescriptor,jl=(e,t,s,n)=>{for(var a,o=Gl(t,s),r=e.length-1;r>=0;r--)(a=e[r])&&(o=a(t,s,o)||o);return o&&$l(t,s,o),o},Ul=(e,t,s)=>((e,t,s)=>t in e?$l(e,t,{enumerable:!0,configurable:!0,writable:!0,value:s}):e[t]=s)(e,"symbol"!=typeof t?t+"":t,s);const Bl=Wt("JSONFileVault");class Fl extends Nl{constructor(e){super(e),this._settings=e,Ul(this,"name","JSONFileVault"),Ul(this,"vaultData"),Ul(this,"index"),Ul(this,"sharedVault"),this.sharedVault=e.shared||!1;let t=this.findVaultFile(e.file);if(this.vaultData={},I.existsSync(t)){try{if(e.fileKey&&I.existsSync(e.fileKey))try{const s=I.readFileSync(e.fileKey,"utf8"),n=I.readFileSync(t,"utf8").toString(),a=m.privateDecrypt({key:s,padding:m.constants.RSA_PKCS1_OAEP_PADDING},Buffer.from(n,"base64"));this.vaultData=JSON.parse(a.toString("utf8"))}catch(e){throw new Error("Failed to decrypt vault")}else this.vaultData=JSON.parse(I.readFileSync(t).toString())}catch(e){this.vaultData={}}this.vaultData?.encrypted&&this.vaultData?.algorithm&&this.vaultData?.data&&this.setInteraction(this.getMasterKeyInteractive.bind(this));for(let e in this.vaultData)for(let t in this.vaultData[e]){this.index||(this.index={}),this.index[t]||(this.index[t]={});const s=this.vaultData[e][t];this.index[t][e]=s}}}findVaultFile(e){let t=e;return I.existsSync(t)?t:(Bl.warn("Vault file not found in:",t,"trying to find in local .smyth directory"),t=f.join(process.cwd(),".smyth",".sre","vault.json"),I.existsSync(t)?(Bl.warn("Using alternative vault file found in : ",t),t):(Bl.warn("Vault file not found in:",t,"trying to find in user home directory"),t=f.join(b.homedir(),".smyth",".sre","vault.json"),I.existsSync(t)?(Bl.warn("Using alternative vault file found in : ",t),t):(Bl.warn("Vault file not found in:",t),Bl.warn("!!! All attempts to find the vault file failed !!!"),Bl.warn("!!! Will continue without vault !!!"),Bl.warn("!!! Many features might not work !!!"),null)))}getMasterKeyInteractive(){process.stdout.write("===[ Encrypted Vault Detected ]=================================\n");const e=me.question("Enter master key: ",{hideEchoBack:!0,mask:"*"});return Bl.info("Master key entered"),e}async get(e,t){const s=Ts.getAccountConnector(),n=await s.getCandidateTeam(e.candidate);return this.vaultData?.[n]?.[t]||this.vaultData?.shared?.[t]}async exists(e,t){const s=Ts.getAccountConnector(),n=await s.getCandidateTeam(e.candidate);return!(!this.vaultData?.[n]?.[t]&&!this.vaultData?.shared?.[t])}async listKeys(e){return Object.keys(this.vaultData)}async getResourceACL(e,t){const s=Ts.getAccountConnector(),n=await s.getCandidateTeam(t),a=new Ln;return e&&"string"!=typeof this.vaultData?.[n]?.[e]?(this.sharedVault&&"string"==typeof this.vaultData?.shared?.[e]&&a.addAccess(t.role,t.id,es.Read),a):(a.addAccess(ts.Team,n,es.Owner).addAccess(ts.Team,n,es.Read).addAccess(ts.Team,n,es.Write),this.sharedVault&&"string"==typeof this.vaultData?.shared?.[e]&&a.addAccess(t.role,t.id,es.Read),a)}}jl([Sn.AccessControl],Fl.prototype,"get"),jl([Sn.AccessControl],Fl.prototype,"exists"),jl([Sn.AccessControl],Fl.prototype,"listKeys");var Vl=Object.defineProperty,zl=Object.getOwnPropertyDescriptor,Jl=(e,t,s,n)=>{for(var a,o=zl(t,s),r=e.length-1;r>=0;r--)(a=e[r])&&(o=a(t,s,o)||o);return o&&Vl(t,s,o),o},Kl=(e,t,s)=>((e,t,s)=>t in e?Vl(e,t,{enumerable:!0,configurable:!0,writable:!0,value:s}):e[t]=s)(e,"symbol"!=typeof t?t+"":t,s);const Wl=Wt("SecretsManager");class Ql extends Nl{constructor(e){super(e),this._settings=e,Kl(this,"name","SecretsManager"),Kl(this,"secretsManager"),this.secretsManager=new pe({region:e.region,...e.awsAccessKeyId&&e.awsSecretAccessKey?{accessKeyId:e.awsAccessKeyId,secretAccessKey:e.awsSecretAccessKey}:{}})}async get(e,t){try{const e=await this.getSecretByName(t);return e?.SecretString}catch(e){throw Wl.error(e),e}}async exists(e,t){return!!await this.get(e,t)}async listKeys(e){return Wl.warn("SecretsManager.listKeys is not implemented"),[]}async getResourceACL(e,t){const s=Ts.getAccountConnector(),n=await s.getCandidateTeam(t),a=new Ln;return a.addAccess(ts.Team,n,es.Owner).addAccess(ts.Team,n,es.Read).addAccess(ts.Team,n,es.Write),a}async getSecretByName(e){try{const s=[];let n;do{const e=await this.secretsManager.send(new he({NextToken:n,Filters:[{Key:"tag-key",Values:["smyth-vault"]}]}));if(e.SecretList)for(const t of e.SecretList)t.Name&&s.push({ARN:t.ARN,Name:t.Name,CreatedDate:t.CreatedDate});n=e.NextToken}while(n);const a=[],o=[];for(const e of s)o.push(t(e,this.secretsManager));const r=await Promise.all(o);for(const e of r)a.push(e);return a.find((t=>t.Name===e))}catch(e){Wl.error(e)}async function t(e,t){let s=(await t.send(new ge({SecretId:e.ARN}))).SecretString,n=e.Name;if(s)try{let e=JSON.parse(s);1===Object.keys(e).length&&(n=Object.keys(e)[0],s=e[n])}catch(e){}return{Name:n,ARN:e.ARN,CreatedDate:e.CreatedDate,SecretId:e.Name,SecretString:s}}}}Jl([Sn.AccessControl],Ql.prototype,"get"),Jl([Sn.AccessControl],Ql.prototype,"exists"),Jl([Sn.AccessControl],Ql.prototype,"listKeys");var Hl=Object.defineProperty,Xl=Object.getOwnPropertyDescriptor,Yl=(e,t,s,n)=>{for(var a,o=Xl(t,s),r=e.length-1;r>=0;r--)(a=e[r])&&(o=a(t,s,o)||o);return o&&Hl(t,s,o),o},Zl=(e,t,s)=>((e,t,s)=>t in e?Hl(e,t,{enumerable:!0,configurable:!0,writable:!0,value:s}):e[t]=s)(e,"symbol"!=typeof t?t+"":t,s);const ec=Wt("NullVault");class tc extends Nl{constructor(e){super(e),this._settings=e,Zl(this,"name","NullVault"),Zl(this,"vaultData"),Zl(this,"index"),Zl(this,"sharedVault"),ec.warn("NullVault is used : Vault features will not be available")}async get(e,t){return ec.debug(`Ignored operation:NullVault.get: ${t}`),"NULLKEY"}async exists(e,t){return ec.debug(`Ignored operation:NullVault.exists: ${t}`),!1}async listKeys(e){return ec.debug("Ignored operation:NullVault.listKeys"),[]}async getResourceACL(e,t){const s=new Ln;return s.addAccess(t.role,t.id,es.Read),s}}Yl([Sn.AccessControl],tc.prototype,"get"),Yl([Sn.AccessControl],tc.prototype,"exists"),Yl([Sn.AccessControl],tc.prototype,"listKeys");class sc extends Ls{register(){Ts.register(Xe.Vault,"JSONFileVault",Fl),Ts.register(Xe.Vault,"SecretsManager",Ql),Ts.register(Xe.Vault,"NullVault",tc)}}class nc extends bs{requester(e){return{getAllUserSettings:async()=>this.getAllUserSettings(e.readRequest,e.id),getUserSetting:async t=>this.getUserSetting(e.readRequest,e.id,t),getAllTeamSettings:async()=>this.getAllTeamSettings(e.readRequest,e.id),getTeamSetting:async t=>this.getTeamSetting(e.readRequest,e.id,t),isTeamMember:async t=>this.isTeamMember(t,e),getCandidateTeam:async()=>this.getCandidateTeam(e),getTeam:async()=>this.getCandidateTeam(e),getAgentSetting:async t=>this.getAgentSetting(e.readRequest,e.id,t)}}}var ac=Object.defineProperty,oc=(e,t,s)=>((e,t,s)=>t in e?ac(e,t,{enumerable:!0,configurable:!0,writable:!0,value:s}):e[t]=s)(e,"symbol"!=typeof t?t+"":t,s);const rc=Wt("DummyAccount");class ic extends nc{constructor(e){super(e),this._settings=e,oc(this,"name","DummyAccount"),oc(this,"data",{}),this.data=e?.data||{},this.data[Zt]||(this.data[Zt]={users:{},agents:{FAKE_AGENT_ID:{}},settings:{}}),this.data[Zt]||rc.warn("You are using the DummyAccount connector. This is a development tool and should not be used in production if you have security concerns.")}isTeamMember(e,t){if(e===Zt)return Promise.resolve(!0);switch(t.role){case ts.Team:return Promise.resolve(e===t.id);case ts.User:return Promise.resolve(this.data[e]?.users?.[t.id]);case ts.Agent:return Promise.resolve(this.data[e]?.agents?.[t.id]);default:return Promise.resolve(!1)}}getCandidateTeam(e){if(e.role===ts.Team)return Promise.resolve(e.id);for(const t in this.data){if(e.role===ts.User&&this.data[t]?.users?.[e.id])return Promise.resolve(t);if(e.role===ts.Agent&&this.data[t]?.agents?.[e.id])return Promise.resolve(t)}return Promise.resolve(Zt)}getResourceACL(e,t){throw new Error("getResourceACL Method not implemented.")}getAllTeamSettings(e,t){return Promise.resolve(this.data[t]?.settings)}getAllUserSettings(e,t){for(const e in this.data)if(this.data[e]?.users?.[t])return Promise.resolve(this.data[e]?.users?.[t]?.settings);return Promise.resolve([])}getTeamSetting(e,t,s){return Promise.resolve(this.data[t]?.settings?.[s])}getUserSetting(e,t,s){for(const e in this.data)if(this.data[e]?.users?.[t])return Promise.resolve(this.data[e]?.users?.[t]?.settings?.[s]);return Promise.resolve(void 0)}getAgentSetting(e,t,s){for(const e in this.data)if(this.data[e]?.agents?.[t])return Promise.resolve(this.data[e]?.agents?.[t]?.settings?.[s]);return Promise.resolve(void 0)}}var lc=Object.defineProperty,cc=(e,t,s)=>((e,t,s)=>t in e?lc(e,t,{enumerable:!0,configurable:!0,writable:!0,value:s}):e[t]=s)(e,"symbol"!=typeof t?t+"":t,s);class uc extends nc{constructor(e){super(e),this._settings=e,cc(this,"name","AWSAccount"),cc(this,"pool"),this.pool=we.createPool({host:e.host,database:e.database||"app",user:e.user||"app",password:e.password,connectionLimit:10})}isTeamMember(e,t){return Promise.resolve(!0)}getCandidateTeam(e){return e.role===ts.Team?Promise.resolve(e.id):Promise.resolve(Zt)}async getAllTeamSettings(e,t){try{const[e]=await this.pool.execute("SELECT `key`, `value` FROM TeamSettings"),t=[];return Array.isArray(e)&&e.length>0&&t.push(...e.map((e=>({key:e.key,value:e.value})))),t}catch(e){return console.error("Error in getTeamSetting:",e),[]}}async getTeamSetting(e,t,s){try{const[e]=await this.pool.execute("SELECT `value` FROM TeamSettings WHERE `key` = ? LIMIT 1",[s]);return Array.isArray(e)&&e.length>0&&"value"in e[0]?e[0].value:""}catch(e){return console.error("Error in getTeamSetting:",e),""}}getResourceACL(e,t){throw new Error("getResourceACL Method not implemented.")}getAllUserSettings(e,t){throw new Error("getAllUserSettings Method not implemented.")}getUserSetting(e,t,s){throw new Error("getUserSetting Method not implemented.")}getAgentSetting(e,t,s){throw new Error("getAgentSetting Method not implemented.")}}var dc=Object.defineProperty,mc=(e,t,s)=>((e,t,s)=>t in e?dc(e,t,{enumerable:!0,configurable:!0,writable:!0,value:s}):e[t]=s)(e,"symbol"!=typeof t?t+"":t,s);class pc extends nc{constructor(e){super(e),this._settings=e,mc(this,"name","JSONFileAccount"),mc(this,"data",{}),mc(this,"file"),this.file=e.file,this.loadData()}loadData(){try{const e=w.readFileSync(this.file,"utf-8");this.data=JSON.parse(e)}catch(e){console.error("Error loading JSON account data:",e),this.data={}}}saveData(){try{w.writeFileSync(this.file,JSON.stringify(this.data,null,2))}catch(e){console.error("Error saving JSON account data:",e)}}async isTeamMember(e,t){return!!this.data[e]&&(t.role===ts.User?!!this.data[e].users?.[t.id]:t.role===ts.Agent&&!!this.data[e].agents?.[t.id])}async getCandidateTeam(e){if(e.role===ts.Team)return e.id;for(const[t,s]of Object.entries(this.data)){const n=s;if(e.role===ts.User&&n.users?.[e.id])return t;if(e.role===ts.Agent&&n.agents?.[e.id])return t}return Zt}async getResourceACL(e,t){throw new Error("getResourceACL Method not implemented.")}async getAllTeamSettings(e,t){return this.data[t]?.settings?Object.entries(this.data[t].settings).map((([e,t])=>({key:e,value:t}))):[]}async getAllUserSettings(e,t){for(const e of Object.values(this.data)){const s=e;if(s.users?.[t]?.settings)return Object.entries(s.users[t].settings).map((([e,t])=>({key:e,value:t})))}return[]}async getTeamSetting(e,t,s){return this.data[t]?.settings?.[s]||""}async getUserSetting(e,t,s){for(const e of Object.values(this.data)){const n=e;if(n.users?.[t]?.settings?.[s])return n.users[t].settings[s]}return""}async getAgentSetting(e,t,s){for(const e of Object.values(this.data)){const n=e;if(n.agents?.[t]?.settings?.[s])return n.agents[t].settings[s]}return""}}class hc extends Ls{register(){Ts.register(Xe.Account,"AWSAccount",uc),Ts.register(Xe.Account,"DummyAccount",ic),Ts.register(Xe.Account,"JSONFileAccount",pc)}}var gc=Object.defineProperty,yc=(e,t,s)=>((e,t,s)=>t in e?gc(e,t,{enumerable:!0,configurable:!0,writable:!0,value:s}):e[t]=s)(e,t+"",s);const fc=JSON.stringify({openapi:"3.0.1",info:{title:"{{model_name}}",description:"{{model_description}}",version:"{{version}}"},servers:[{url:"{{server_url}}"}],paths:{},components:{schemas:{}}}),bc=JSON.stringify({summary:"{{summary}}",operationId:"{{operationId}}","x-openai-isConsequential":!1,requestBody:{required:!0,content:{}},responses:{200:{description:"response",content:{"text/plain":{schema:{type:"string"}}}}}});class wc extends bs{constructor(){super(...arguments),yc(this,"name","AgentDataConnector")}async getOpenAPIJSON(e,t,s,n=!1){if(!e)throw new Error("Agent not found");const a=s&&"latest"!=s?`/v${s}/api`:"/api",o="object"==typeof e?e:await this.getAgentData(e,s),r=o.name;let i=n?o.data.behavior:o.data.shortDescription;i||(i=o.data.description);const l=o.data.version||"1.0.0",c=Es(fc).parse({model_name:Ds(r),model_description:Ds(i),server_url:t,version:l}).clean().result,u=JSON.parse(c),d=o.data.components.filter((e=>"APIEndpoint"===e.name));for(let e of d){const t=e.data.ai_exposed||void 0===e.data.ai_exposed;if(n&&!t)continue;let s=(e.data.method||"post").toLowerCase(),o=n?e.data.description||e.data.doc:e.data.doc||e.data.description;const r=qn(Es(bc).parse({summary:o?.replace(/"/g,'\\"'),operationId:e?.data?.endpoint}).clean().result).tryParse();if("object"==typeof r)if(u.paths[a+"/"+e.data.endpoint]||(u.paths[a+"/"+e.data.endpoint]={}),u.paths[a+"/"+e.data.endpoint][s]=r,e.inputs.length>0)if("get"===s){delete r.requestBody,r.parameters=[];for(let t of e.inputs){const e={name:t.name,in:"query",description:t.description,required:!t.optional,schema:Ic(t.type)},{style:s,explode:n}=kc(t.type);s&&(e.style=s,e.explode=n),r.parameters.push(e)}}else{const t=[],s=!n&&e.inputs.some((e=>"binary"===e.type.toLowerCase().trim()))?"multipart/form-data":"application/json";r.requestBody.content[s]={};for(let a of e.inputs){a.optional||t.push(a.name),r.requestBody.content[s].schema||(r.requestBody.content[s].schema={type:"object"});const e=r.requestBody.content[s].schema||{type:"object"};e.properties||(e.properties={}),e.properties[a.name]={...Ic(a.type),format:n||"binary"!==a.type.toLowerCase().trim()?void 0:"binary",description:a.description,default:a.defaultVal},e.required=t,r.requestBody.content[s].schema||(r.requestBody.content["application/json"].schema=e)}}else delete r.requestBody;else console.warn("Error on openAPIEntry: ",r)}return u}}function Ic(e){switch(e?.toLowerCase()){case"binary":case"string":case"any":default:return{type:"string"};case"number":case"float":return{type:"number"};case"integer":return{type:"integer"};case"boolean":return{type:"boolean"};case"array":return{type:"array",items:{}};case"object":return{type:"object",additionalProperties:{}}}}function kc(e){switch(e.toLowerCase()){case"array":return{style:"form",explode:!1};case"object":return{style:"deepObject",explode:!0};default:return{style:"",explode:!1}}}var Ac=Object.defineProperty,vc=(e,t,s)=>((e,t,s)=>t in e?Ac(e,t,{enumerable:!0,configurable:!0,writable:!0,value:s}):e[t]=s)(e,"symbol"!=typeof t?t+"":t,s);class xc extends wc{constructor(e){super(),vc(this,"name","CLIAgentDataConnector"),vc(this,"argv"),this.argv=e.args||process.argv}getAgentConfig(e){return{}}async getAgentData(e,t){const s=Ts.getCLIConnector().get("agent"),n=I.realpathSync(process.cwd()),a=f.join(n,s.agent);if(I.existsSync(a)){const e=I.readFileSync(a,"utf8");return{data:JSON.parse(e),version:t||"1.0"}}}getAgentIdByDomain(e){return Promise.resolve("")}async getAgentSettings(e,t){const s=Ts.getCLIConnector().get("settings");let n;return"string"==typeof s.settings?I.existsSync(s.settings)&&(n=JSON.parse(I.readFileSync(s.settings,"utf8"))):n=s.settings,n}async getAgentEmbodiments(e){return[]}async listTeamAgents(e,t){return console.warn("listTeamAgents is not implemented for CLIAgentDataConnector"),[]}async isDeployed(e){return!0}}var _c=Object.defineProperty,Tc=(e,t,s)=>((e,t,s)=>t in e?_c(e,t,{enumerable:!0,configurable:!0,writable:!0,value:s}):e[t]=s)(e,"symbol"!=typeof t?t+"":t,s);class Lc extends wc{constructor(e){super(),Tc(this,"name","LocalAgentDataConnector"),Tc(this,"devDir"),Tc(this,"prodDir"),Tc(this,"agentsData",{dev:{},prod:{}}),Tc(this,"agentSettings",{dev:{},prod:{}}),this.devDir=e.devDir,this.prodDir=e.prodDir}getAgentConfig(e){return{}}indexDir(e){const t=I.readdirSync(e),s={},n={};for(const a of t){if(!a.endsWith(".smyth"))continue;const t=I.readFileSync(f.join(e,a),"utf8");let o;try{if(o=JSON.parse(t),!o.components){console.warn(`File ${a} is not a valid agent data file, skipping...`);continue}o.id||(console.warn(`Agent data for ${a} does not contain an id, generating one...`),o.id="tmp-"+et())}catch(e){console.warn(`Error parsing agent data for ${a}: ${e.message}`)}o.components&&(s[o.id]=o),o.settings&&(n[o.id]=o.settings)}return{agentsData:s,agentSettings:n}}indexAgentsData(){const{agentsData:e,agentSettings:t}=this.indexDir(this.devDir),{agentsData:s,agentSettings:n}=this.indexDir(this.prodDir);this.agentsData={dev:e,prod:s},this.agentSettings={dev:t,prod:n}}async start(){super.start(),this.started=!1,this.indexAgentsData(),this.started=!0}async getAgentData(e,t){if(!await this.ready())throw new Error("Connector not ready");const s=t?this.agentsData.prod[e]:this.agentsData.dev[e];if(s)return{data:s,version:t||"1.0"};throw new Error(`Agent with id ${e} not found`)}getAgentIdByDomain(e){return Promise.resolve("")}async getAgentSettings(e,t){if(!await this.ready())throw new Error("Connector not ready");const s=t?this.agentSettings.prod[e]:this.agentSettings.dev[e];if(s)return s;throw new Error(`Settings for agent with id ${e} not found`)}async getAgentEmbodiments(e){return[]}async listTeamAgents(e,t){return console.warn("listTeamAgents is not implemented for LocalAgentDataConnector"),[]}async isDeployed(e){return!!this.agentsData.prod[e]}}var Cc=Object.defineProperty,Sc=(e,t,s)=>((e,t,s)=>t in e?Cc(e,t,{enumerable:!0,configurable:!0,writable:!0,value:s}):e[t]=s)(e,t+"",s);class Pc extends wc{constructor(e){super(),Sc(this,"name","NullAgentData")}getAgentConfig(e){return{}}async getAgentData(e,t){return{data:{},version:"1.0"}}getAgentIdByDomain(e){return Promise.resolve("")}async getAgentSettings(e,t){return{}}async getAgentEmbodiments(e){return[]}async listTeamAgents(e,t){return[]}async isDeployed(e){return!0}}class Mc extends Ls{register(){Ts.register(Xe.AgentData,"AgentData",wc),Ts.register(Xe.AgentData,"CLI",xc),Ts.register(Xe.AgentData,"Local",Lc),Ts.register(Xe.AgentData,"NullAgentData",Pc)}}var Rc=Object.defineProperty,Oc=(e,t,s)=>((e,t,s)=>t in e?Rc(e,t,{enumerable:!0,configurable:!0,writable:!0,value:s}):e[t]=s)(e,t+"",s);class Dc extends Sn{constructor(){super(...arguments),Oc(this,"USER_METADATA_KEY","user_metadata")}requester(e){return{search:async(t,s,n)=>await this.search(e.readRequest,t,s,n),createDatasource:async(t,s)=>await this.createDatasource(e.writeRequest,t,s),deleteDatasource:async(t,s)=>{await this.deleteDatasource(e.writeRequest,t,s)},listDatasources:async t=>await this.listDatasources(e.readRequest,t),getDatasource:async(t,s)=>await this.getDatasource(e.readRequest,t,s),createNamespace:async(t,s)=>{await this.createNamespace(e.writeRequest,t,s)},deleteNamespace:async t=>{await this.deleteNamespace(e.writeRequest,t)},namespaceExists:async t=>await this.namespaceExists(e.readRequest,t)}}constructNsName(e,t){const s=t.trim().replace(/\s/g,"_").toLowerCase();return`${e.role[0]+"_"+e.id}_${s}`}}var qc=Object.defineProperty,Ec=(e,t,s)=>((e,t,s)=>t in e?qc(e,t,{enumerable:!0,configurable:!0,writable:!0,value:s}):e[t]=s)(e,"symbol"!=typeof t?t+"":t,s);class Nc{constructor(e){Ec(this,"model"),Ec(this,"modelName"),Ec(this,"chunkSize",512),Ec(this,"stripNewLines",!0),Ec(this,"dimensions"),Ec(this,"timeout"),Ec(this,"maxConcurrency"),this.model=e?.model??this.model,this.chunkSize=e?.chunkSize??this.chunkSize,this.stripNewLines=e?.stripNewLines??this.stripNewLines,this.timeout=e?.timeout,this.dimensions=e?.dimensions}chunkArr(e,t){return e.reduce(((e,s,n)=>{const a=Math.floor(n/t),o=e[a]||[];return e[a]=o.concat([s]),e}),[])}processTexts(e){return this.stripNewLines?e.map((e=>e.replace(/\n/g," "))):e}detectSourceType(e){return"string"==typeof e?Ct(e)?"url":"text":Array.isArray(e)&&e.every((e=>"number"==typeof e))?"vector":"unknown"}transformSource(e,t,s){switch(t){case"text":{const t=e.map((e=>e.source));return this.embedTexts(t,s).then((s=>e.map(((e,n)=>({...e,source:s[n],metadata:{...e.metadata,text:t[n]}})))))}case"vector":return e}}get dummyVector(){return Array(this.dimensions-1).fill(0).concat([1])}}var $c=Object.defineProperty,Gc=(e,t,s)=>((e,t,s)=>t in e?$c(e,t,{enumerable:!0,configurable:!0,writable:!0,value:s}):e[t]=s)(e,"symbol"!=typeof t?t+"":t,s);class jc extends Nc{constructor(e){super({maxConcurrency:2,model:e?.model??"text-embedding-ada-002",...e}),this.settings=e,Gc(this,"client"),Gc(this,"clientConfig"),Gc(this,"canSpecifyDimensions",!0),this.clientConfig={dangerouslyAllowBrowser:!0},"text-embedding-ada-002"===this.model&&(this.canSpecifyDimensions=!1)}async embedTexts(e,t){const s=this.chunkArr(this.processTexts(e),this.chunkSize),n=s.map((e=>{const s={model:this.model,input:e};return this.dimensions&&this.canSpecifyDimensions&&(s.dimensions=this.dimensions),this.embed(s,t)})),a=await Promise.all(n),o=[];for(let e=0;e<a.length;e+=1){const t=s[e],{data:n}=a[e];for(let e=0;e<t.length;e+=1)o.push(n[e].embedding)}return o}async embedText(e,t){const s={model:this.model,input:this.processTexts([e])[0]};this.dimensions&&this.canSpecifyDimensions&&(s.dimensions=this.dimensions);const{data:n}=await this.embed(s,t);return n[0].embedding}async embed(e,t){const s={provider:"OpenAI",modelId:this.model,credentials:this.settings?.credentials},n=await Ii(t,s);if(!this.client){const e={...this.clientConfig,apiKey:n.apiKey,timeout:this.timeout,maxRetries:0};this.client=new ee(e)}try{return await this.client.embeddings.create(e)}catch(e){throw((e,t)=>new Y.APIError(e,{code:t?.errKey||t?.code,message:t?.message,type:t?.name},t?.message,null))(e.statusCode,e)}}}Gc(jc,"models",["text-embedding-ada-002","text-embedding-3-large"]);const Uc={OpenAI:{embedder:jc,models:jc.models}};class Bc{static create(e,t){return new Uc[e].embedder(t)}}var Fc=Object.defineProperty,Vc=Object.getOwnPropertyDescriptor,zc=(e,t,s,n)=>{for(var a,o=Vc(t,s),r=e.length-1;r>=0;r--)(a=e[r])&&(o=a(t,s,o)||o);return o&&Fc(t,s,o),o},Jc=(e,t,s)=>((e,t,s)=>t in e?Fc(e,t,{enumerable:!0,configurable:!0,writable:!0,value:s}):e[t]=s)(e,"symbol"!=typeof t?t+"":t,s);const Kc=Wt("Pinecone VectorDB");class Wc extends Dc{constructor(e){super(e),this._settings=e,Jc(this,"name","PineconeVectorDB"),Jc(this,"id","pinecone"),Jc(this,"client"),Jc(this,"indexName"),Jc(this,"cache"),Jc(this,"accountConnector"),Jc(this,"nkvConnector"),Jc(this,"embedder"),e.apiKey?e.indexName?(this.client=new Ie({apiKey:e.apiKey}),Kc.info("Pinecone client initialized"),Kc.info("Pinecone index name:",e.indexName),this.indexName=e.indexName,this.accountConnector=Ts.getAccountConnector(),this.cache=Ts.getCacheConnector(),this.nkvConnector=Ts.getNKVConnector(),e.embeddings.dimensions||(e.embeddings.dimensions=1024),this.embedder=Bc.create(e.embeddings.provider,e.embeddings)):Kc.warn("Missing Pinecone index name : returning empty Pinecone connector"):Kc.warn("Missing Pinecone API key : returning empty Pinecone connector")}async getResourceACL(e,t){const s=this.constructNsName(t,e),n=await this.getACL(ps.clone(t),s);return!!n?Ln.from(n):(new Ln).addAccess(t.role,t.id,es.Owner)}async createNamespace(e,t,s){const n=this.constructNsName(e.candidate,t),a=(new Ln).addAccess(e.candidate.role,e.candidate.id,es.Owner),o={acl:a.serializedACL,displayName:t,...s};return await this.client.Index(this.indexName).namespace(n).upsert([{id:`_reserved_${n}`,values:this.embedder.dummyVector,metadata:{isSkeletonVector:!0,...o}}]),await this.setACL(e,n,a.ACL),new Promise((e=>e()))}async namespaceExists(e,t){const s=await this.client.Index(this.indexName).describeIndexStats();return Object.keys(s.namespaces).includes(this.constructNsName(e.candidate,t))}async deleteNamespace(e,t){this.constructNsName(e.candidate,t),await this.client.Index(this.indexName).namespace(this.constructNsName(e.candidate,t)).deleteAll().catch((e=>{if("PineconeNotFoundError"!=e?.name)throw e;Kc.warn(`Namespace ${t} does not exist and was requested to be deleted`)})),await this.deleteACL(ps.clone(e.candidate),t)}async search(e,t,s,n={}){const a=this.client.Index(this.indexName).namespace(this.constructNsName(e.candidate,t));let o=s;"string"==typeof s&&(o=await this.embedder.embedText(s,e.candidate));const r=(n.topK||10)+1,i=await a.query({topK:r,vector:o,includeMetadata:!0,includeValues:!0});let l=[];for(const e of i.matches)e.metadata?.isSkeletonVector||(e.metadata?.user&&(e.metadata.user=Dn.create(e.metadata.user.toString()).tryParse()),l.push({id:e.id,values:e.values,metadata:e.metadata}));return l.slice(0,n.topK)}async insert(e,t,s){if((s=Array.isArray(s)?s:[s]).some((e=>this.embedder.detectSourceType(e.source)!==this.embedder.detectSourceType(s[0].source))))throw new Error("All sources must be of the same type");const n=this.embedder.detectSourceType(s[0].source);if("unknown"===n||"url"===n)throw new Error("Invalid source type");const a=(await this.embedder.transformSource(s,n,e.candidate)).map((e=>({id:e.id,values:e.source,metadata:e.metadata})));await this.client.Index(this.indexName).namespace(this.constructNsName(e.candidate,t)).upsert(a);const o=e.candidate;if(!await this.requester(ps.clone(o)).namespaceExists(t)){let s=(new Ln).addAccess(o.role,o.id,es.Owner).ACL;await this.setACL(e,t,s)}return a.map((e=>e.id))}async delete(e,t,s){const n=Array.isArray(s)?s:[s];await this.client.Index(this.indexName).namespace(this.constructNsName(e.candidate,t)).deleteMany(n)}async createDatasource(e,t,s){const n=(new Ln).addAccess(e.candidate.role,e.candidate.id,es.Owner),a=s.id||m.randomUUID(),o=this.constructNsName(e.candidate,t),r=pt(s.text,{chunkSize:s.chunkSize,chunkOverlap:s.chunkOverlap}),i=Array.from({length:r.length},((e,t)=>`${a}_${m.randomUUID()}`)),l=r.map(((e,t)=>({id:i[t],source:e,metadata:{acl:n.serializedACL,namespaceId:o,datasourceId:a,user:s.metadata?S(JSON.stringify(s.metadata)):void 0}}))),c=await this.insert(e,t,l),u={namespaceId:o,candidateId:e.candidate.id,candidateRole:e.candidate.role,name:s.label||"Untitled",metadata:s.metadata?S(JSON.stringify(s.metadata)):void 0,text:s.text,vectorIds:c,id:a};return await this.nkvConnector.requester(e.candidate).set(`vectorDB:${this.id}:namespaces:${o}:datasources`,a,JSON.stringify(u)),u}async deleteDatasource(e,t,s){const n=this.constructNsName(e.candidate,t);let a=Dn.create((await this.nkvConnector.requester(e.candidate).get(`vectorDB:${this.id}:namespaces:${n}:datasources`,s))?.toString()).tryParse();if(!a||"object"!=typeof a)throw new Error(`Data source not found with id: ${s}`);await this.delete(e,t,a.vectorIds||[]),await this.nkvConnector.requester(e.candidate).delete(`vectorDB:${this.id}:namespaces:${n}:datasources`,s)}async listDatasources(e,t){const s=this.constructNsName(e.candidate,t);return(await this.nkvConnector.requester(e.candidate).list(`vectorDB:${this.id}:namespaces:${s}:datasources`)).map((e=>Dn.create(e.data?.toString()).tryParse()))}async getDatasource(e,t,s){const n=this.constructNsName(e.candidate,t);return Dn.create((await this.nkvConnector.requester(e.candidate).get(`vectorDB:${this.id}:namespaces:${n}:datasources`,s))?.toString()).tryParse()}async setACL(e,t,s){await this.cache.requester(ps.clone(e.candidate)).set(`vectorDB:pinecone:namespace:${t}:acl`,JSON.stringify(s))}async getACL(e,t){let s=await this.cache.requester(e).get(`vectorDB:pinecone:namespace:${t}:acl`);return Dn.create(s?.toString?.()).tryParse()}async deleteACL(e,t){this.cache.requester(ps.clone(e)).delete(`vectorDB:pinecone:namespace:${t}:acl`)}constructNsName(e,t){const s=t.trim().replace(/\s/g,"_").toLowerCase();let n=e.id;return e.role!==ts.Team&&(n=e.role[0]+"_"+e.id),`${n}_${s}`}}zc([Sn.AccessControl],Wc.prototype,"createNamespace"),zc([Sn.AccessControl],Wc.prototype,"namespaceExists"),zc([Sn.AccessControl],Wc.prototype,"deleteNamespace"),zc([Sn.AccessControl],Wc.prototype,"search"),zc([Sn.AccessControl],Wc.prototype,"insert"),zc([Sn.AccessControl],Wc.prototype,"delete"),zc([Sn.AccessControl],Wc.prototype,"createDatasource"),zc([Sn.AccessControl],Wc.prototype,"deleteDatasource"),zc([Sn.AccessControl],Wc.prototype,"listDatasources"),zc([Sn.AccessControl],Wc.prototype,"getDatasource");var Qc=Object.defineProperty,Hc=Object.getOwnPropertyDescriptor,Xc=(e,t,s,n)=>{for(var a,o=Hc(t,s),r=e.length-1;r>=0;r--)(a=e[r])&&(o=a(t,s,o)||o);return o&&Qc(t,s,o),o},Yc=(e,t,s)=>((e,t,s)=>t in e?Qc(e,t,{enumerable:!0,configurable:!0,writable:!0,value:s}):e[t]=s)(e,"symbol"!=typeof t?t+"":t,s);const Zc=Wt("Milvus");class eu extends Dc{constructor(e){super(e),this._settings=e,Yc(this,"name","MilvusVectorDB"),Yc(this,"id","milvus"),Yc(this,"client"),Yc(this,"cache"),Yc(this,"accountConnector"),Yc(this,"embedder"),Yc(this,"SCHEMA_DEFINITION"),Yc(this,"INDEX_PARAMS");const t={address:e.credentials.address,token:"token"in e.credentials?e.credentials.token:void 0,user:"user"in e.credentials?e.credentials.user:void 0,password:"password"in e.credentials?e.credentials.password:void 0};Zc.log("clientConfig",t),this.client=new ke(t),Zc.info("Milvus client initialized"),this.accountConnector=Ts.getAccountConnector(),this.cache=Ts.getCacheConnector(),e.embeddings.dimensions||(e.embeddings.dimensions=1024),this.embedder=Bc.create(e.embeddings.provider,e.embeddings),this.SCHEMA_DEFINITION=[{name:"id",data_type:Ae.VarChar,is_primary_key:!0,max_length:2048},{name:"text",data_type:Ae.VarChar,max_length:65535},{name:this.USER_METADATA_KEY,data_type:Ae.VarChar,max_length:65535},{name:"namespaceId",data_type:Ae.VarChar,max_length:2048},{name:"datasourceId",data_type:Ae.VarChar,max_length:2048},{name:"datasourceLabel",data_type:Ae.VarChar,max_length:2048},{name:"vector",data_type:Ae.FloatVector,dim:this.embedder.dimensions},{name:"acl",data_type:Ae.VarChar,max_length:2048}],this.INDEX_PARAMS={index_type:"AUTOINDEX",metric_type:"COSINE",field_name:"vector"}}async createNamespace(e,t,s){const n=this.constructNsName(e.candidate,t);await this.client.createCollection({collection_name:n,schema:this.SCHEMA_DEFINITION,index_params:this.INDEX_PARAMS});const a=(new Ln).addAccess(e.candidate.role,e.candidate.id,es.Owner).ACL;return await this.setACL(e,n,a),new Promise((e=>e()))}async namespaceExists(e,t){const s=await this.client.hasCollection({collection_name:this.constructNsName(e.candidate,t)});if(s.status.error_code!==ve.SUCCESS)throw new Error(`Error checking collection: ${s}`);return Boolean(s.value)}async deleteNamespace(e,t){const s=this.constructNsName(e.candidate,t),n=await this.client.dropCollection({collection_name:s});if(n.error_code!==ve.SUCCESS)throw new Error(`Error dropping collection: ${n}`);await this.deleteACL(ps.clone(e.candidate),t)}async search(e,t,s,n={}){const a=this.constructNsName(e.candidate,t);let o=s;"string"==typeof s&&(o=await this.embedder.embedText(s,e.candidate));return(await this.client.search({vector:o,collection_name:a,output_fields:["id","text",this.USER_METADATA_KEY,"namespaceId","datasourceId","datasourceLabel","vector"],limit:n.topK||10})).results.map((e=>{let t=e;return e?.[this.USER_METADATA_KEY]&&(t[this.USER_METADATA_KEY]=Dn.create(e[this.USER_METADATA_KEY].toString()).tryParse()),{id:t.id,values:t.vector,text:t.text,metadata:t[this.USER_METADATA_KEY]??{},score:t.score}}))}async insert(e,t,s){s=Array.isArray(s)?s:[s];const n=this.constructNsName(e.candidate,t);if(s.some((e=>this.embedder.detectSourceType(e.source)!==this.embedder.detectSourceType(s[0].source))))throw new Error("All sources must be of the same type");const a=this.embedder.detectSourceType(s[0].source);if("unknown"===a||"url"===a)throw new Error("Unsupported source type");const o=(await this.embedder.transformSource(s,a,e.candidate)).map((e=>({id:e.id,text:e.metadata?.text,user_metadata:e.metadata?.[this.USER_METADATA_KEY],namespaceId:n,datasourceId:e.metadata?.datasourceId,datasourceLabel:e.metadata?.datasourceLabel,vector:e.source,acl:e.metadata?.acl}))),r=await this.client.insert({collection_name:n,data:o});if(r.status.error_code!==ve.SUCCESS)throw Zc.error("Error inserting data: ",r),new Error(`Error inserting data: ${r?.status?.error_code}`);return o.map((e=>e.id))}async delete(e,t,s){const n=this.constructNsName(e.candidate,t);if("object"==typeof s){if(!["datasourceId"].some((e=>e in s)))throw new Error(`Unsupported field in delete target: ${Object.keys(s).join(", ")}`);const e=await this.client.deleteEntities({collection_name:n,expr:`datasourceId == "${s.datasourceId}"`});if(e.status.error_code!==ve.SUCCESS)throw new Error(`Error deleting data: ${e}`)}else{const e=Array.isArray(s)?s:[s],t=await this.client.delete({collection_name:n,ids:e});if(t.status.error_code!==ve.SUCCESS)throw new Error(`Error deleting data: ${t}`)}}async createDatasource(e,t,s){await this.accountConnector.getCandidateTeam(e.candidate);const n=(new Ln).addAccess(e.candidate.role,e.candidate.id,es.Owner),a=s.id||m.randomUUID(),o=this.constructNsName(e.candidate,t),r=pt(s.text,{chunkSize:s.chunkSize,chunkOverlap:s.chunkOverlap}),i=Array.from({length:r.length},((e,t)=>m.randomUUID())),l=s.label||"Untitled",c=r.map(((e,t)=>({id:i[t],source:e,metadata:{acl:n.serializedACL,namespaceId:o,datasourceId:a,datasourceLabel:l,user_metadata:s.metadata?S(JSON.stringify(s.metadata)):JSON.stringify({})}}))),u=await this.insert(e,t,c);return{namespaceId:o,candidateId:e.candidate.id,candidateRole:e.candidate.role,name:l,metadata:s.metadata?S(JSON.stringify(s.metadata)):void 0,text:s.text,vectorIds:u,id:a}}async deleteDatasource(e,t,s){this.constructNsName(e.candidate,t),await this.delete(e,t,{datasourceId:s})}async listDatasources(e,t){const s=this.constructNsName(e.candidate,t),n=await this.client.queryIterator({collection_name:s,batchSize:1e3,output_fields:["id","text",this.USER_METADATA_KEY,"namespaceId","datasourceId","datasourceLabel","vector"]}),a=new Map;try{for await(const t of n)for(const n of t){const t=n.datasourceId;a.has(t)||a.set(t,{namespaceId:s,candidateId:e.candidate.id,candidateRole:e.candidate.role,text:n.text,name:n.datasourceLabel,metadata:n[this.USER_METADATA_KEY]?Dn.create(n[this.USER_METADATA_KEY].toString()).tryParse():void 0,vectorIds:[],id:t}),a.get(t).vectorIds.push(n.id)}}finally{}return Array.from(a.values())}async getDatasource(e,t,s){const n=this.constructNsName(e.candidate,t),a=await this.client.query({collection_name:n,expr:`datasourceId == "${s}"`,output_fields:["id","text",this.USER_METADATA_KEY,"namespaceId","datasourceId","datasourceLabel","vector"]});if(0===a.data.length)return;const o=a.data[0],r=a.data.map((e=>e.id));return{namespaceId:n,candidateId:e.candidate.id,candidateRole:e.candidate.role,text:o.text,name:o.datasourceLabel,metadata:o[this.USER_METADATA_KEY]?Dn.create(o[this.USER_METADATA_KEY].toString()).tryParse():void 0,vectorIds:r,id:s}}async setACL(e,t,s){await this.cache.requester(ps.clone(e.candidate)).set(`vectorDB:pinecone:namespace:${t}:acl`,JSON.stringify(s))}async getACL(e,t){let s=await this.cache.requester(e).get(`vectorDB:pinecone:namespace:${t}:acl`);return Dn.create(s?.toString?.()).tryParse()}async getResourceACL(e,t){const s=this.constructNsName(t,e),n=await this.getACL(ps.clone(t),s);return!!n?Ln.from(n):(new Ln).addAccess(t.role,t.id,es.Owner)}async deleteACL(e,t){this.cache.requester(ps.clone(e)).delete(`vectorDB:pinecone:namespace:${t}:acl`)}constructNsName(e,t){const s=t.trim().replace(/\s/g,"_").toLowerCase();let n=e.role[0]+"_"+e.id;return`${"c"+m.createHash("sha256").update(n).digest("hex").slice(0,8)}_${s}`}}Xc([Sn.AccessControl],eu.prototype,"createNamespace"),Xc([Sn.AccessControl],eu.prototype,"namespaceExists"),Xc([Sn.AccessControl],eu.prototype,"deleteNamespace"),Xc([Sn.AccessControl],eu.prototype,"search"),Xc([Sn.AccessControl],eu.prototype,"insert"),Xc([Sn.AccessControl],eu.prototype,"delete"),Xc([Sn.AccessControl],eu.prototype,"createDatasource"),Xc([Sn.AccessControl],eu.prototype,"deleteDatasource"),Xc([Sn.AccessControl],eu.prototype,"listDatasources"),Xc([Sn.AccessControl],eu.prototype,"getDatasource");var tu=Object.defineProperty,su=Object.getOwnPropertyDescriptor,nu=(e,t,s,n)=>{for(var a,o=su(t,s),r=e.length-1;r>=0;r--)(a=e[r])&&(o=a(t,s,o)||o);return o&&tu(t,s,o),o},au=(e,t,s)=>((e,t,s)=>t in e?tu(e,t,{enumerable:!0,configurable:!0,writable:!0,value:s}):e[t]=s)(e,"symbol"!=typeof t?t+"":t,s);Wt("RAM VectorDB");class ou extends Dc{constructor(e){super(e),this._settings=e,au(this,"name","RAMVec"),au(this,"id","ram"),au(this,"accountConnector"),au(this,"vectors",{}),au(this,"namespaces",{}),au(this,"datasources",{}),au(this,"acls",{}),au(this,"embedder"),this.accountConnector=Ts.getAccountConnector(),e.embeddings||(e.embeddings={provider:"OpenAI",model:"text-embedding-3-large"}),e.embeddings.dimensions||(e.embeddings.dimensions=1024),this.embedder=Bc.create(e.embeddings.provider,e.embeddings)}async getResourceACL(e,t){const s=this.constructNsName(t,e),n=this.acls[s];return!!n?Ln.from(n):(new Ln).addAccess(t.role,t.id,es.Owner)}async createNamespace(e,t,s){const n=this.constructNsName(e.candidate,t);if(!this.namespaces[n]){const a={namespace:n,displayName:t,candidateId:e.candidate.id,candidateRole:e.candidate.role,metadata:{...s,storageType:"RAM"}};this.namespaces[n]=a,this.vectors[n]=[],this.datasources[n]={}}const a=(new Ln).addAccess(e.candidate.role,e.candidate.id,es.Owner).ACL;return this.acls[n]=a,new Promise((e=>e()))}async namespaceExists(e,t){const s=this.constructNsName(e.candidate,t);return!!this.namespaces[s]}async getNamespace(e,t){const s=this.constructNsName(e.candidate,t),n=this.namespaces[s];if(!n)throw new Error(`Namespace ${t} not found`);return n}async listNamespaces(e){return Object.values(this.namespaces).filter((t=>t.candidateId===e.candidate.id))}async deleteNamespace(e,t){const s=this.constructNsName(e.candidate,t);delete this.vectors[s],delete this.namespaces[s],delete this.datasources[s],delete this.acls[s]}async search(e,t,s,n={}){const a=this.constructNsName(e.candidate,t);if(!this.namespaces[a])throw new Error("Namespace does not exist");let o=s;"string"==typeof s&&(o=await this.embedder.embedText(s,e.candidate));const r=this.vectors[a]||[],i=[];for(const e of r){const t=this.cosineSimilarity(o,e.values);i.push({id:e.id,score:t,values:e.values,metadata:n.includeMetadata?e.metadata:void 0})}const l=n.topK||10;return i.sort(((e,t)=>t.score-e.score)).slice(0,l)}async insert(e,t,s){const n=this.constructNsName(e.candidate,t),a=Array.isArray(s)?s:[s],o=[];this.vectors[n]||(this.vectors[n]=[]);for(const t of a){let s=[];s="string"==typeof t.source?await this.embedder.embedText(t.source,e.candidate):t.source;const a={id:t.id,values:s,datasource:t.metadata?.datasource||"unknown",metadata:t.metadata},r=this.vectors[n].findIndex((e=>e.id===t.id));r>=0?this.vectors[n][r]=a:this.vectors[n].push(a),o.push(t.id)}return o}async delete(e,t,s){const n=this.constructNsName(e.candidate,t),a=Array.isArray(s)?s:[s];this.vectors[n]&&(this.vectors[n]=this.vectors[n].filter((e=>!a.includes(e.id))))}async createDatasource(e,t,s){const n=this.constructNsName(e.candidate,t),a=s.id||m.randomUUID();this.namespaces[n]||await this.createNamespace(e,t);const o=[],r=s.chunkSize||1e3,i=s.chunkOverlap||200,l=this.splitTextIntoChunks(s.text,r,i);this.vectors[n]||(this.vectors[n]=[]);for(let t=0;t<l.length;t++){const r=`${a}_chunk_${t}`,i={id:r,values:await this.embedder.embedText(l[t],e.candidate),datasource:a,metadata:{...s.metadata,text:l[t],chunkIndex:t,totalChunks:l.length}};this.vectors[n].push(i),o.push(r)}const c={namespaceId:n,candidateId:e.candidate.id,candidateRole:e.candidate.role,name:s.label||`Datasource ${a}`,metadata:JSON.stringify(s.metadata||{}),text:s.text,vectorIds:o,id:a};return this.datasources[n]||(this.datasources[n]={}),this.datasources[n][a]?this.datasources[n][a].vectorIds.push(...o):this.datasources[n][a]=c,c}async deleteDatasource(e,t,s){const n=this.constructNsName(e.candidate,t);if(!this.namespaces[n])throw new Error("Namespace does not exist");const a=this.datasources[n]?.[s];a&&this.vectors[n]&&(this.vectors[n]=this.vectors[n].filter((e=>e.datasource!==s))),this.datasources[n]&&delete this.datasources[n][s]}async listDatasources(e,t){const s=this.constructNsName(e.candidate,t),n=this.datasources[s]||{};return Object.values(n)}async getDatasource(e,t,s){const n=this.constructNsName(e.candidate,t),a=this.datasources[n]?.[s];if(!a)throw new Error(`Datasource ${s} not found`);return a}cosineSimilarity(e,t){if(e.length!==t.length)throw new Error("Vectors must have the same length");let s=0,n=0,a=0;for(let o=0;o<e.length;o++)s+=e[o]*t[o],n+=e[o]*e[o],a+=t[o]*t[o];return n=Math.sqrt(n),a=Math.sqrt(a),0===n||0===a?0:s/(n*a)}splitTextIntoChunks(e,t,s){const n=[];let a=0;for(;a<e.length;){const o=Math.min(a+t,e.length);if(n.push(e.slice(a,o)),o===e.length)break;a=o-s}return n}}nu([Sn.AccessControl],ou.prototype,"createNamespace"),nu([Sn.AccessControl],ou.prototype,"namespaceExists"),nu([Sn.AccessControl],ou.prototype,"getNamespace"),nu([Sn.AccessControl],ou.prototype,"listNamespaces"),nu([Sn.AccessControl],ou.prototype,"deleteNamespace"),nu([Sn.AccessControl],ou.prototype,"search"),nu([Sn.AccessControl],ou.prototype,"insert"),nu([Sn.AccessControl],ou.prototype,"delete"),nu([Sn.AccessControl],ou.prototype,"createDatasource"),nu([Sn.AccessControl],ou.prototype,"deleteDatasource"),nu([Sn.AccessControl],ou.prototype,"listDatasources"),nu([Sn.AccessControl],ou.prototype,"getDatasource");class ru extends Ls{register(){Ts.register(Xe.VectorDB,"Pinecone",Wc),Ts.register(Xe.VectorDB,"RAMVec",ou),Ts.register(Xe.VectorDB,"Milvus",eu)}}var iu=Object.defineProperty,lu=(e,t,s)=>((e,t,s)=>t in e?iu(e,t,{enumerable:!0,configurable:!0,writable:!0,value:s}):e[t]=s)(e,"symbol"!=typeof t?t+"":t,s);class cu extends bs{constructor(e){super(e),this._settings=e,lu(this,"name","CLI"),lu(this,"params"),this.params=this.parse(process.argv)}parse(e,t){let s=t;s&&!Array.isArray(s)&&(s=[s]);const n=s||function(e){e||(e=process.argv);const t=e,s=[];for(let e=2;e<t.length;e++)t[e].startsWith("--")&&s.push(t[e].replace(/^--/,""));return s}(e);return Ot(n,e)}get(e){let t=e;Array.isArray(t)||(t=[t]);const s={};return t.forEach((e=>{this.params[e]&&(s[e]=this.params[e])})),s}}class uu extends Ls{register(){Ts.register(Xe.CLI,"CLI",cu)}}class du extends Sn{requester(e){return{get:async(t,s)=>this.get(e.readRequest,t,s),set:async(t,s,n)=>this.set(e.writeRequest,t,s,n),delete:async(t,s)=>this.delete(e.writeRequest,t,s),exists:async(t,s)=>this.exists(e.readRequest,t,s),deleteAll:async t=>this.deleteAll(e.writeRequest,t),list:async t=>this.list(e.readRequest,t)}}}var mu=Object.defineProperty,pu=Object.getOwnPropertyDescriptor,hu=(e,t,s,n)=>{for(var a,o=pu(t,s),r=e.length-1;r>=0;r--)(a=e[r])&&(o=a(t,s,o)||o);return o&&mu(t,s,o),o},gu=(e,t,s)=>((e,t,s)=>t in e?mu(e,t,{enumerable:!0,configurable:!0,writable:!0,value:s}):e[t]=s)(e,"symbol"!=typeof t?t+"":t,s);const yu=class extends du{constructor(e){super(e),this._settings=e,gu(this,"name","Redis"),gu(this,"redisCacheConnector"),gu(this,"accountConnector"),this.redisCacheConnector=Ts.getCacheConnector("Redis"),this.accountConnector=Ts.getAccountConnector()}key(...e){return e.join(":")}mdKey(...e){return e.join(":")}async get(e,t,s){const n=await this.accountConnector.getCandidateTeam(e.candidate);return await this.redisCacheConnector.requester(ps.team(n)).get(this.key(`team_${n}`,t,s))}async set(e,t,s,n){const a=await this.accountConnector.getCandidateTeam(e.candidate),o=this.key(`team_${a}`,t,s);await this.redisCacheConnector.requester(ps.team(a)).set(o,n);!await this.redisCacheConnector.requester(ps.team(a)).exists(t)&&await this.redisCacheConnector.requester(ps.team(a)).set(this.key(`team_${a}`,t),"",void 0,{ns:!0})}async delete(e,t,s){const n=await this.accountConnector.getCandidateTeam(e.candidate);await this.redisCacheConnector.requester(ps.team(n)).delete(this.key(`team_${n}`,t,s))}async exists(e,t,s){const n=await this.accountConnector.getCandidateTeam(e.candidate);return await this.redisCacheConnector.requester(ps.team(n)).exists(this.key(`team_${n}`,t,s))}async list(e,t){const s=await this.accountConnector.getCandidateTeam(e.candidate);let n=await this.fetchKeysByPrefix(this.key(this.redisCacheConnector.prefix,`team_${s}`,t));if(n=n.filter((e=>e!==this.key(this.redisCacheConnector.prefix,`team_${s}`,t))),n.length<=0)return[];const a=this.redisCacheConnector.client.pipeline();n.forEach((e=>{a.get(e)}));const o=await a.exec();return n.map(((e,n)=>({key:e.replace(`${this.key(this.redisCacheConnector.prefix,`team_${s}`,t)}:`,""),data:o[n][1]})))}async deleteAll(e,t){const s=await this.accountConnector.getCandidateTeam(e.candidate);let n=await this.fetchKeysByPrefix(this.key(this.redisCacheConnector.prefix,`team_${s}`,t));n=n.filter((e=>![this.key(this.redisCacheConnector.prefix,`team_${s}`,t)].includes(e))),await this.redisCacheConnector.client.del(n)}async getResourceACL(e,t){return this.redisCacheConnector.getResourceACL(e,t)}async fetchKeysByPrefix(e){let t="0";const s=[];do{const n=await this.redisCacheConnector.client.scan(t,"MATCH",`${e}*`,"COUNT",1e4);t=n[0],s.push(...n[1])}while("0"!==t);return s}static NamespaceAccessControl(e,t,s){const n=s.value;return s.value=async function(...e){let[t,s,a]=e;const o=void 0===a,r=await this.accountConnector.getCandidateTeam(t.candidate),i=o?s:`${s}:${a}`,l=this.key(this.redisCacheConnector.prefix,`team_${r}`,i);if((await this.getAccessTicket(l,t)).access!==rs.Granted)throw new is("Access Denied");return n.apply(this,e)},s}static Validate(e,s,n){const a=n.value;return n.value=async function(...e){let[s,n,o]=e;const r=t.object().keys({namespace:t.string().min(1).required(),key:t.string().min(1).required()}).validate({namespace:n,key:o});if(r.error)throw new Error(`Validation Error: ${r.error.message}`);return a.apply(this,e)},n}};hu([yu.Validate,yu.NamespaceAccessControl],yu.prototype,"get"),hu([yu.Validate,yu.NamespaceAccessControl],yu.prototype,"set"),hu([yu.Validate,yu.NamespaceAccessControl],yu.prototype,"delete"),hu([yu.Validate,yu.NamespaceAccessControl],yu.prototype,"exists"),hu([yu.NamespaceAccessControl],yu.prototype,"list"),hu([yu.NamespaceAccessControl],yu.prototype,"deleteAll");let fu=yu;var bu=Object.defineProperty,wu=Object.getOwnPropertyDescriptor,Iu=(e,t,s,n)=>{for(var a,o=wu(t,s),r=e.length-1;r>=0;r--)(a=e[r])&&(o=a(t,s,o)||o);return o&&bu(t,s,o),o},ku=(e,t,s)=>((e,t,s)=>t in e?bu(e,t,{enumerable:!0,configurable:!0,writable:!0,value:s}):e[t]=s)(e,"symbol"!=typeof t?t+"":t,s);const Au=class extends du{constructor(e){super(e),this._settings=e,ku(this,"name","RAM"),ku(this,"storage",new Map),ku(this,"namespaces",new Set),ku(this,"accountConnector"),ku(this,"cacheConnector"),this.accountConnector=Ts.getAccountConnector(),this.cacheConnector=Ts.getCacheConnector("RAM")}key(...e){return e.join(":")}mdKey(...e){return e.join(":")}async get(e,t,s){const n=await this.accountConnector.getCandidateTeam(e.candidate),a=this.key(`team_${n}`,t,s);return this.storage.get(a)||null}async set(e,t,s,n){const a=await this.accountConnector.getCandidateTeam(e.candidate),o=this.key(`team_${a}`,t,s);this.storage.set(o,n);const r=this.key(`team_${a}`,t);this.namespaces.has(r)||(this.namespaces.add(r),this.storage.set(r,""))}async delete(e,t,s){const n=await this.accountConnector.getCandidateTeam(e.candidate),a=this.key(`team_${n}`,t,s);this.storage.delete(a)}async exists(e,t,s){const n=await this.accountConnector.getCandidateTeam(e.candidate),a=this.key(`team_${n}`,t,s);return this.storage.has(a)}async list(e,t){const s=await this.accountConnector.getCandidateTeam(e.candidate),n=this.key(`team_${s}`,t),a=[];for(const[e,t]of this.storage.entries())if(e.startsWith(n+":")){const s=e.substring(n.length+1);a.push({key:s,data:t})}return a}async deleteAll(e,t){const s=await this.accountConnector.getCandidateTeam(e.candidate),n=this.key(`team_${s}`,t),a=[];for(const e of this.storage.keys())e.startsWith(n+":")&&a.push(e);for(const e of a)this.storage.delete(e)}async getResourceACL(e,t){return this.cacheConnector.getResourceACL(e,t)}getKeysByPrefix(e){const t=[];for(const s of this.storage.keys())s.startsWith(e)&&t.push(s);return t}clearAll(){this.storage.clear(),this.namespaces.clear()}getStats(){return{totalKeys:this.storage.size,totalNamespaces:this.namespaces.size}}static NamespaceAccessControl(e,t,s){const n=s.value;return s.value=async function(...e){let[t,s,a]=e;const o=void 0===a,r=await this.accountConnector.getCandidateTeam(t.candidate),i=o?s:`${s}:${a}`,l=this.key(`team_${r}`,i);if((await this.getAccessTicket(l,t)).access!==rs.Granted)throw new is("Access Denied");return n.apply(this,e)},s}static Validate(e,s,n){const a=n.value;return n.value=async function(...e){let[s,n,o]=e;const r=t.object().keys({namespace:t.string().min(1).required(),key:t.string().min(1).required()}).validate({namespace:n,key:o});if(r.error)throw new Error(`Validation Error: ${r.error.message}`);return a.apply(this,e)},n}};Iu([Au.Validate,Au.NamespaceAccessControl],Au.prototype,"get"),Iu([Au.Validate,Au.NamespaceAccessControl],Au.prototype,"set"),Iu([Au.Validate,Au.NamespaceAccessControl],Au.prototype,"delete"),Iu([Au.Validate,Au.NamespaceAccessControl],Au.prototype,"exists"),Iu([Au.NamespaceAccessControl],Au.prototype,"list"),Iu([Au.NamespaceAccessControl],Au.prototype,"deleteAll");let vu=Au;class xu extends Ls{register(){Ts.register(Xe.NKV,"Redis",fu),Ts.register(Xe.NKV,"RAM",vu)}}class _u extends bs{}var Tu=Object.defineProperty,Lu=(e,t,s)=>((e,t,s)=>t in e?Tu(e,t,{enumerable:!0,configurable:!0,writable:!0,value:s}):e[t]=s)(e,"symbol"!=typeof t?t+"":t,s);class Cu extends _u{constructor(e){super(e),this._settings=e,Lu(this,"router"),Lu(this,"baseUrl"),this.name="ExpressRouter",this.router=e.router,this.baseUrl=e.baseUrl}get(e,...t){return this.router.get(e,...t),this}post(e,...t){return this.router.post(e,...t),this}put(e,...t){return this.router.put(e,...t),this}delete(e,...t){return this.router.delete(e,...t),this}useFn(...e){return this.router.use(...e),this}use(e,...t){return this.router.use(e,...t),this}getRouter(){return this.router}}var Su=Object.defineProperty,Pu=(e,t,s)=>((e,t,s)=>t in e?Su(e,t,{enumerable:!0,configurable:!0,writable:!0,value:s}):e[t]=s)(e,t+"",s);const Mu=Wt("NullRouter");class Ru extends _u{constructor(e){super(e),this._settings=e,Pu(this,"baseUrl"),this.baseUrl="http://nullrouter.local"}get(e,...t){return Mu.debug(`Ignored operation:NullRouter.get: ${e}`),this}post(e,...t){return Mu.debug(`Ignored operation:NullRouter.post: ${e}`),this}put(e,...t){return Mu.debug(`Ignored operation:NullRouter.put: ${e}`),this}delete(e,...t){return Mu.debug(`Ignored operation:NullRouter.delete: ${e}`),this}useFn(...e){return Mu.debug("Ignored operation:NullRouter.useFn"),this}use(e,...t){return this}}class Ou extends Ls{register(){Ts.register(Xe.Router,"ExpressRouter",Cu),Ts.register(Xe.Router,"NullRouter",Ru)}}class Du extends Sn{requester(e){return{get:async t=>this.get(e.readRequest,t),set:async(t,s)=>this.set(e.writeRequest,t,s),delete:async t=>this.delete(e.writeRequest,t),exists:async t=>this.exists(e.readRequest,t)}}}var qu=Object.defineProperty,Eu=Object.getOwnPropertyDescriptor,Nu=(e,t,s,n)=>{for(var a,o=Eu(t,s),r=e.length-1;r>=0;r--)(a=e[r])&&(o=a(t,s,o)||o);return o&&qu(t,s,o),o},$u=(e,t,s)=>((e,t,s)=>t in e?qu(e,t,{enumerable:!0,configurable:!0,writable:!0,value:s}):e[t]=s)(e,"symbol"!=typeof t?t+"":t,s);const Gu=Wt("SecretManagerManagedVault");class ju extends Du{constructor(e){super(e),this._settings=e,$u(this,"name","SecretManagerManagedVault"),$u(this,"scope","smyth-managed-vault"),$u(this,"secretsManager"),this.secretsManager=new pe({region:e.region,...e.awsAccessKeyId&&e.awsSecretAccessKey?{accessKeyId:e.awsAccessKeyId,secretAccessKey:e.awsSecretAccessKey}:{}})}async get(e,t){const s=await this.getSecretByName(t);return s?.SecretString}async set(e,t,s){const n=await this.getSecretByName(t);n?await this.secretsManager.send(new ye({SecretId:n.ARN,SecretString:s})):await this.secretsManager.send(new fe({Name:`smyth/${h()}`,SecretString:JSON.stringify({[t]:s}),Tags:[{Key:this.scope,Value:"true"}]}))}async delete(e,t){const s=await this.getSecretByName(t);s&&await this.secretsManager.send(new be({SecretId:s.ARN}))}async exists(e,t){return!!await this.get(e,t)}async getResourceACL(e,t){const s=Ts.getAccountConnector(),n=await s.getCandidateTeam(t),a=new Ln;return a.addAccess(ts.Team,n,es.Owner).addAccess(ts.Team,n,es.Read).addAccess(ts.Team,n,es.Write),a}async getSecretByName(e){try{const s=[];let n;do{const e=await this.secretsManager.send(new he({NextToken:n,Filters:[{Key:"tag-key",Values:[this.scope]}]}));if(e.SecretList)for(const t of e.SecretList)t.Name&&s.push({ARN:t.ARN,Name:t.Name,CreatedDate:t.CreatedDate});n=e.NextToken}while(n);const a=[],o=[];for(const e of s)o.push(t(e,this.secretsManager));const r=await Promise.all(o);for(const e of r)a.push(e);return a.find((t=>t.Name===e))}catch(e){Gu.error(e)}async function t(e,t){let s=(await t.send(new ge({SecretId:e.ARN}))).SecretString,n=e.Name;if(s)try{let e=JSON.parse(s);1===Object.keys(e).length&&(n=Object.keys(e)[0],s=e[n])}catch(e){}return{Name:n,ARN:e.ARN,CreatedDate:e.CreatedDate,SecretId:e.Name,SecretString:s}}}}Nu([Sn.AccessControl],ju.prototype,"get"),Nu([Sn.AccessControl],ju.prototype,"set"),Nu([Sn.AccessControl],ju.prototype,"delete"),Nu([Sn.AccessControl],ju.prototype,"exists");var Uu=Object.defineProperty,Bu=Object.getOwnPropertyDescriptor,Fu=(e,t,s,n)=>{for(var a,o=Bu(t,s),r=e.length-1;r>=0;r--)(a=e[r])&&(o=a(t,s,o)||o);return o&&Uu(t,s,o),o},Vu=(e,t,s)=>((e,t,s)=>t in e?Uu(e,t,{enumerable:!0,configurable:!0,writable:!0,value:s}):e[t]=s)(e,t+"",s);const zu=Wt("NullManagedVault");class Ju extends Du{constructor(e){super(e),this._settings=e,Vu(this,"name","NullManagedVault")}async get(e,t){zu.debug(`Ignored operation:NullManagedVault.get: ${t}`)}async set(e,t,s){zu.debug(`Ignored operation:NullManagedVault.set: ${t} = ${s}`)}async delete(e,t){zu.debug(`Ignored operation:NullManagedVault.delete: ${t}`)}async exists(e,t){return zu.debug(`Ignored operation:NullManagedVault.exists: ${t}`),!1}async getResourceACL(e,t){const s=Ts.getAccountConnector();await s.getCandidateTeam(t);const n=new Ln;return n.addAccess(t.role,t.id,es.Read),n}}Fu([Sn.AccessControl],Ju.prototype,"get"),Fu([Sn.AccessControl],Ju.prototype,"set"),Fu([Sn.AccessControl],Ju.prototype,"delete"),Fu([Sn.AccessControl],Ju.prototype,"exists");class Ku extends Ls{register(){Ts.register(Xe.ManagedVault,"SecretManagerManagedVault",ju),Ts.register(Xe.ManagedVault,"NullManagedVault",Ju)}}class Wu extends Sn{requester(e){if("agent"!==e.role)throw new Error("Only agents can use Log connector");return{log:async(t,s)=>await this.log(e.writeRequest,t,s),logTask:async(t,s)=>{await this.logTask(e.writeRequest,t,s)}}}}var Qu=Object.defineProperty,Hu=(e,t,s)=>((e,t,s)=>t in e?Qu(e,t,{enumerable:!0,configurable:!0,writable:!0,value:s}):e[t]=s)(e,"symbol"!=typeof t?t+"":t,s);const Xu=Wt("SmythLog");class Yu extends Wu{constructor(){super(...arguments),Hu(this,"id"),Hu(this,"name")}getResourceACL(e,t){return Promise.resolve(new Ln)}log(e,t,s){return Xu.debug(`Log for agent ${e.candidate.id}: ${"string"==typeof t?t:JSON.stringify(t)}`),Promise.resolve()}logTask(e,t,s){return Xu.debug(`${t} Task(s) Consumed by agent ${e.candidate.id}: ${s?"Using Test Domain":"Using Production Domain"}`),Promise.resolve()}}Wt("LogService");class Zu extends Ls{register(){Ts.register(Xe.Log,"ConsoleLog",Yu)}}class ed extends Sn{requester(e){return{register:async(t,s)=>await this.register(e.readRequest,t,s),get:async t=>await this.get(e.readRequest,t),getAll:async()=>await this.getAll(e.readRequest)}}}var td=Object.defineProperty,sd=Object.getOwnPropertyDescriptor,nd=(e,t,s,n)=>{for(var a,o=sd(t,s),r=e.length-1;r>=0;r--)(a=e[r])&&(o=a(t,s,o)||o);return o&&td(t,s,o),o},ad=(e,t,s)=>((e,t,s)=>t in e?td(e,t,{enumerable:!0,configurable:!0,writable:!0,value:s}):e[t]=s)(e,"symbol"!=typeof t?t+"":t,s);const od=Wt("LocalComponentConnector");class rd extends ed{constructor(){super(),ad(this,"name","LocalComponentConnector"),ad(this,"components",{}),this.init()}async init(){for(const e in ti)this.components[e]=ti[e];od.debug("Registering Components :",Object.keys(this.components).join(", "))}async register(e,t,s){this.components[t]=s}async get(e,t){return this.components[t]}async getAll(e){return this.components}async getResourceACL(e,t){const s=Ts.getAccountConnector(),n=await s.getCandidateTeam(t),a=new Ln;return a.addAccess(ts.Team,n,es.Read).addAccess(t.role,t.id,es.Read),a}}nd([Sn.AccessControl],rd.prototype,"register"),nd([Sn.AccessControl],rd.prototype,"get"),nd([Sn.AccessControl],rd.prototype,"getAll");class id extends Ls{register(){Ts.register(Xe.Component,"LocalComponent",rd)}}const ld={Echo:{llm:"Echo",provider:"Echo"},"deepseek-v2.5":{llm:"DeepSeek",label:"DeepSeek Chat",modelId:"deepseek-chat",provider:"DeepSeek",features:["text","image"],tags:["Personal"],tokens:0,completionTokens:0,enabled:!1,keyOptions:{tokens:128e3,completionTokens:8192,enabled:!0},baseURL:"https://api.deepseek.com/beta",credentials:"vault"},"deepseek-chat":{llm:"DeepSeek",baseURL:"https://api.deepseek.com/beta",tokens:128e3,completionTokens:8192,enabled:!1,keyOptions:{tokens:128e3,completionTokens:8192},credentials:"vault"},"gpt-4o-mini":{llm:"OpenAI",alias:"gpt-4o-mini-2024-07-18",components:["PromptGenerator","LLMAssistant","Classifier","VisionLLM","AgentPlugin","Chatbot","GPTPlugin","GenAILLM"],label:"GPT 4o Mini",modelId:"gpt-4o-mini-2024-07-18",provider:"OpenAI",features:["text","tools","image","search"],tags:["Personal"],tokens:0,completionTokens:0,enabled:!1,keyOptions:{tokens:128e3,completionTokens:16383,searchContextTokens:128e3,enabled:!0},credentials:"vault"},"gpt-4.1-nano":{llm:"OpenAI",label:"GPT 4.1 Nano",modelId:"gpt-4.1-nano",provider:"OpenAI",features:["text","tools","image"],tags:["New","Personal"],tokens:0,completionTokens:0,enabled:!1,keyOptions:{tokens:1047576,completionTokens:32768,enabled:!0},credentials:"vault"},"gpt-4.1-mini":{llm:"OpenAI",label:"GPT 4.1 Mini",modelId:"gpt-4.1-mini",provider:"OpenAI",features:["text","tools","image","search"],tags:["New","Personal"],tokens:0,completionTokens:0,enabled:!1,keyOptions:{tokens:1047576,completionTokens:32768,searchContextTokens:128e3,enabled:!0},credentials:"vault"},"gpt-4.1":{llm:"OpenAI",label:"GPT 4.1",modelId:"gpt-4.1",provider:"OpenAI",features:["text","tools","image","search"],tags:["New","Personal"],tokens:0,completionTokens:0,enabled:!1,keyOptions:{tokens:1047576,completionTokens:32768,searchContextTokens:128e3,enabled:!0},credentials:"vault"},"gpt-4o-mini-2024-07-18":{llm:"OpenAI",tokens:2048,completionTokens:2048,enabled:!1,keyOptions:{tokens:128e3,completionTokens:16383,enabled:!0},credentials:"vault"},"gpt-4.5-preview":{llm:"OpenAI",label:"GPT 4.5 Preview",modelId:"gpt-4.5-preview",provider:"OpenAI",features:["text","tools","image"],tags:["Personal","Deprecated"],tokens:0,completionTokens:0,enabled:!1,keyOptions:{tokens:128e3,completionTokens:16384,enabled:!0},credentials:"vault"},"gpt-4o":{llm:"OpenAI",alias:"gpt-4o-2024-08-06",components:["PromptGenerator","LLMAssistant","Classifier","VisionLLM","AgentPlugin","Chatbot","GPTPlugin","GenAILLM"],label:"GPT 4o",modelId:"gpt-4o-2024-08-06",provider:"OpenAI",features:["text","tools","image","search","document"],tags:["Personal"],tokens:0,completionTokens:0,enabled:!1,keyOptions:{tokens:128e3,completionTokens:16384,searchContextTokens:128e3,enabled:!0},credentials:"vault"},"gpt-4o-2024-08-06":{llm:"OpenAI",tokens:2048,completionTokens:2048,enabled:!1,keyOptions:{tokens:128e3,completionTokens:16384,enabled:!0},credentials:"vault"},"o4-mini":{llm:"OpenAI",label:"GPT o4 mini",modelId:"o4-mini-2025-04-16",provider:"OpenAI",features:["text","reasoning"],tags:["New","Personal"],tokens:0,completionTokens:0,enabled:!1,keyOptions:{tokens:2e5,completionTokens:1e5,enabled:!0},credentials:"vault"},o3:{llm:"OpenAI",label:"GPT o3",modelId:"o3-2025-04-16",provider:"OpenAI",features:["text","reasoning"],tags:["Personal"],tokens:0,completionTokens:0,enabled:!1,keyOptions:{tokens:2e5,completionTokens:1e5,enabled:!0},credentials:"vault"},"o3-mini":{llm:"OpenAI",alias:"o3-mini-2025-01-31",components:["PromptGenerator","GenAILLM"],label:"GPT o3 mini",modelId:"o3-mini-2025-01-31",provider:"OpenAI",features:["text","reasoning"],tags:["Personal"],tokens:0,completionTokens:0,enabled:!1,keyOptions:{tokens:2e5,completionTokens:1e5,enabled:!0},hidden:!0,credentials:"vault"},"o3-mini-2025-01-31":{llm:"OpenAI",tokens:2048,completionTokens:2048,enabled:!1,keyOptions:{tokens:2e5,completionTokens:1e5,enabled:!0},credentials:"vault"},o1:{llm:"OpenAI",alias:"o1-2024-12-17",components:["PromptGenerator","GenAILLM"],label:"GPT o1",modelId:"o1-2024-12-17",provider:"OpenAI",features:["text","reasoning"],tags:["Personal"],tokens:0,completionTokens:0,enabled:!1,keyOptions:{tokens:2e5,completionTokens:1e5,enabled:!0},credentials:"vault"},"o1-2024-12-17":{llm:"OpenAI",tokens:2048,completionTokens:2048,enabled:!1,keyOptions:{tokens:2e5,completionTokens:1e5,enabled:!0},credentials:"vault"},"o1-mini":{llm:"OpenAI",alias:"o1-mini-2024-09-12",components:["PromptGenerator","GenAILLM"],label:"GPT o1 mini",modelId:"o1-mini-2024-09-12",provider:"OpenAI",features:["text"],tags:["Personal"],tokens:0,completionTokens:0,enabled:!1,keyOptions:{tokens:128e3,completionTokens:65536,enabled:!0},credentials:"vault"},"o1-mini-2024-09-12":{llm:"OpenAI",tokens:2048,completionTokens:2048,enabled:!1,keyOptions:{tokens:128e3,completionTokens:65536,enabled:!0},credentials:"vault"},"o1-preview":{llm:"OpenAI",alias:"o1-preview-2024-09-12",components:["PromptGenerator","GenAILLM"],label:"GPT o1 Preview",modelId:"o1-preview-2024-09-12",provider:"OpenAI",features:["text"],tags:["Personal"],tokens:0,completionTokens:0,enabled:!1,keyOptions:{tokens:128e3,completionTokens:32768,enabled:!0},credentials:"vault"},"o1-preview-2024-09-12":{llm:"OpenAI",tokens:2048,completionTokens:2048,enabled:!1,keyOptions:{tokens:128e3,completionTokens:32768,enabled:!0},credentials:"vault"},"gpt-4-turbo-latest":{llm:"OpenAI",alias:"gpt-4-turbo-2024-04-09",components:["PromptGenerator","LLMAssistant","Classifier"],label:"GPT 4 Turbo Latest",modelId:"gpt-4-turbo-2024-04-09",provider:"OpenAI",features:["text","tools"],tags:["Personal","legacy"],tokens:0,completionTokens:0,enabled:!1,keyOptions:{tokens:128e3,completionTokens:4096,enabled:!0},hidden:!0},"gpt-4-turbo":{llm:"OpenAI",alias:"gpt-4-turbo-2024-04-09",components:["PromptGenerator","LLMAssistant","VisionLLM","GPTPlugin","AgentPlugin","Chatbot"],label:"GPT 4 Turbo",modelId:"gpt-4-turbo-2024-04-09",provider:"OpenAI",features:["text","tools","image"],tags:["Personal","legacy"],tokens:0,completionTokens:0,enabled:!1,keyOptions:{tokens:128e3,completionTokens:4096,enabled:!0},hidden:!0},"gpt-4-turbo-2024-04-09":{llm:"OpenAI",tokens:2048,completionTokens:2048,enabled:!1,keyOptions:{tokens:128e3,completionTokens:4096,enabled:!0},credentials:"vault"},"gpt-4-latest":{llm:"OpenAI",alias:"gpt-4-0613",components:["PromptGenerator","LLMAssistant"],label:"GPT 4 Latest",modelId:"gpt-4-0613",provider:"OpenAI",features:["text","tools"],tags:["Personal","legacy"],tokens:0,completionTokens:0,enabled:!1,keyOptions:{tokens:8192,completionTokens:8192,enabled:!0},hidden:!0},"gpt-4":{llm:"OpenAI",components:["PromptGenerator","LLMAssistant","Classifier","GPTPlugin","AgentPlugin","Chatbot"],label:"GPT 4",modelId:"gpt-4o-2024-08-06",provider:"OpenAI",features:["text","tools"],tags:["Personal","deprecated"],tokens:0,completionTokens:0,enabled:!1,keyOptions:{tokens:8192,completionTokens:8192,enabled:!0},hidden:!0},"gpt-4-0613":{llm:"OpenAI",tokens:2048,completionTokens:2048,enabled:!1,hidden:!0,keyOptions:{tokens:8192,completionTokens:8192,enabled:!0},credentials:"vault"},"gpt-3.5-turbo-latest":{llm:"OpenAI",alias:"gpt-3.5-turbo-0125",components:["PromptGenerator","LLMAssistant","Classifier","GPTPlugin","AgentPlugin","Chatbot"],label:"GPT 3.5 Turbo Latest",modelId:"gpt-3.5-turbo-0125",provider:"OpenAI",features:["text","tools"],tags:["Personal","legacy"],tokens:0,completionTokens:0,enabled:!1,keyOptions:{tokens:16385,completionTokens:4096,enabled:!0},hidden:!0},"gpt-3.5-turbo":{llm:"OpenAI",alias:"gpt-3.5-turbo-0125",components:["PromptGenerator","LLMAssistant","Classifier","GPTPlugin","AgentPlugin","Chatbot"],label:"GPT 3.5 Turbo",modelId:"gpt-3.5-turbo-0125",provider:"OpenAI",features:["text","tools"],tags:["Personal","legacy"],tokens:0,completionTokens:0,enabled:!1,keyOptions:{tokens:16385,completionTokens:4096,enabled:!0},hidden:!0},"gpt-3.5-turbo-0125":{llm:"OpenAI",tokens:2048,completionTokens:2048,enabled:!1,keyOptions:{tokens:16385,completionTokens:4096,enabled:!0},credentials:"vault"},"text-embedding-ada-002":{label:"OpenAI Embeddings Ada 002",modelId:"text-embedding-ada-002",provider:"OpenAI",features:["embeddings"],tokens:0,completionTokens:0,enabled:!1,credentials:["internal","vault"]},"text-embedding-3-large":{label:"OpenAI Embeddings 3 Large",modelId:"text-embedding-3-large",provider:"OpenAI",features:["embeddings"],tokens:0,completionTokens:0,enabled:!1,credentials:["internal","vault"]},"claude-4-opus":{label:"Claude 4 Opus",modelId:"claude-opus-4-20250514",provider:"Anthropic",features:["text","image","tools","reasoning"],tags:["New","Personal"],tokens:0,completionTokens:0,enabled:!1,keyOptions:{tokens:2e5,completionTokens:32e3,maxReasoningTokens:32e3,enabled:!0},credentials:"internal"},"claude-4-sonnet":{label:"Claude 4 Sonnet",modelId:"claude-sonnet-4-20250514",provider:"Anthropic",features:["text","image","tools","reasoning"],tags:["New","Personal"],tokens:0,completionTokens:0,enabled:!1,keyOptions:{tokens:2e5,completionTokens:64e3,maxReasoningTokens:32e3,enabled:!0},credentials:"vault"},"claude-3.7-sonnet":{llm:"Anthropic",alias:"claude-3-7-sonnet-20250219",components:["PromptGenerator","LLMAssistant","Classifier","VisionLLM","AgentPlugin","Chatbot","GenAILLM"],label:"Claude 3.7 Sonnet",modelId:"claude-3-7-sonnet-20250219",provider:"Anthropic",features:["text","tools","image","reasoning"],tags:["Personal"],tokens:0,completionTokens:0,enabled:!1,keyOptions:{tokens:2e5,completionTokens:8192,maxReasoningTokens:16384,enabled:!0},credentials:"vault"},"claude-3.7-sonnet-thinking":{llm:"Anthropic",alias:"claude-3-7-sonnet-20250219",components:["PromptGenerator","LLMAssistant","Classifier","VisionLLM","AgentPlugin","Chatbot","GenAILLM"],label:"Claude 3.7 Sonnet Thinking",modelId:"claude-3-7-sonnet-20250219",provider:"Anthropic",features:["text","tools","image","reasoning"],tags:["Personal"],tokens:0,completionTokens:0,enabled:!1,keyOptions:{tokens:2e5,completionTokens:16384,maxReasoningTokens:16384,enabled:!0},hidden:!0,credentials:"vault"},"claude-3.5-haiku":{llm:"Anthropic",alias:"claude-3-5-haiku-latest",components:["PromptGenerator","LLMAssistant","Classifier","AgentPlugin","Chatbot","GenAILLM"],label:"Claude 3.5 Haiku",modelId:"claude-3-5-haiku-latest",provider:"Anthropic",features:["text","tools"],tags:["Personal"],tokens:0,completionTokens:0,enabled:!1,keyOptions:{tokens:2e5,completionTokens:8192,enabled:!0},credentials:"vault"},"claude-3-5-haiku-latest":{llm:"Anthropic",tokens:2048,completionTokens:2048,enabled:!1,keyOptions:{tokens:2e5,completionTokens:8192,enabled:!0},credentials:"vault"},"claude-3-5-sonnet-latest":{llm:"Anthropic",components:["PromptGenerator","LLMAssistant","Classifier","VisionLLM","AgentPlugin","Chatbot","GenAILLM"],label:"Claude 3.5 Sonnet Latest",modelId:"claude-3-5-sonnet-latest",provider:"Anthropic",features:["text","tools","image"],tags:["Personal"],tokens:0,completionTokens:0,enabled:!1,keyOptions:{tokens:2e5,completionTokens:8192,enabled:!0},credentials:"vault"},"claude-3.5-sonnet":{llm:"Anthropic",alias:"claude-3-5-sonnet-20240620",components:["PromptGenerator","LLMAssistant","Classifier","VisionLLM","AgentPlugin","Chatbot","GenAILLM"],label:"Claude 3.5 Sonnet Stable",modelId:"claude-3-5-sonnet-20240620",provider:"Anthropic",features:["text","tools","image"],tags:["Personal"],tokens:0,completionTokens:0,enabled:!1,keyOptions:{tokens:2e5,completionTokens:8192,enabled:!0},credentials:"vault"},"claude-3-5-sonnet-20240620":{llm:"Anthropic",tokens:2048,completionTokens:2048,enabled:!1,keyOptions:{tokens:2e5,completionTokens:8192,enabled:!0},credentials:"vault"},"claude-3-opus":{llm:"Anthropic",alias:"claude-3-opus-20240229",components:["PromptGenerator","LLMAssistant","Classifier","VisionLLM","AgentPlugin","Chatbot","GenAILLM"],label:"Claude 3 Opus",modelId:"claude-3-opus-20240229",provider:"Anthropic",features:["text","tools","image"],tags:["Personal"],tokens:0,completionTokens:0,enabled:!1,keyOptions:{tokens:2e5,completionTokens:4096,enabled:!0},credentials:"vault"},"claude-3-opus-20240229":{llm:"Anthropic",tokens:2048,completionTokens:2048,enabled:!1,keyOptions:{tokens:2e5,completionTokens:4096,enabled:!0},credentials:"vault"},"claude-3-sonnet":{llm:"Anthropic",alias:"claude-3-sonnet-20240229",components:["PromptGenerator","LLMAssistant","Classifier","VisionLLM","AgentPlugin","Chatbot"],label:"Claude 3 Sonnet",modelId:"claude-3-sonnet-20240229",provider:"Anthropic",features:["text","tools","image"],tags:["Personal","deprecated"],tokens:0,completionTokens:0,enabled:!1,keyOptions:{tokens:2e5,completionTokens:4096,enabled:!0},hidden:!0,credentials:"vault"},"claude-3-sonnet-20240229":{llm:"Anthropic",tokens:2048,completionTokens:2048,enabled:!1,keyOptions:{tokens:2e5,completionTokens:4096,enabled:!0},credentials:"vault"},"claude-3-haiku":{llm:"Anthropic",alias:"claude-3-haiku-20240307",components:["PromptGenerator","LLMAssistant","Classifier","VisionLLM","AgentPlugin","Chatbot"],label:"Claude 3 Haiku",modelId:"claude-3-haiku-20240307",provider:"Anthropic",features:["text","tools","image"],tags:["Personal","legacy"],tokens:0,completionTokens:0,enabled:!1,keyOptions:{tokens:2e5,completionTokens:4096,enabled:!0},hidden:!0,credentials:"vault"},"claude-3-haiku-20240307":{llm:"Anthropic",tokens:2048,completionTokens:2048,enabled:!1,keyOptions:{tokens:2e5,completionTokens:4096,enabled:!0},credentials:"vault"},"claude-2.1":{llm:"Anthropic",components:["PromptGenerator","LLMAssistant","Classifier"],label:"Claude 2.1",modelId:"claude-2.1",provider:"Anthropic",features:["text","image"],tags:["Personal","legacy"],tokens:0,completionTokens:0,enabled:!1,keyOptions:{tokens:2e5,completionTokens:4096,enabled:!0},hidden:!0},"claude-instant-1.2":{llm:"Anthropic",components:["PromptGenerator","LLMAssistant","Classifier"],label:"Claude Instant 1.2",modelId:"claude-instant-1.2",provider:"Anthropic",features:["text","image"],tags:["Personal","legacy"],tokens:0,completionTokens:0,enabled:!1,keyOptions:{tokens:1e5,completionTokens:4096,enabled:!0},hidden:!0,credentials:"vault"},"gemini-2.5-flash":{llm:"GoogleAI",label:"Gemini 2.5 Flash Preview",modelId:"gemini-2.5-flash-preview-04-17",provider:"GoogleAI",features:["text","image","audio","video","document"],tags:["New","Personal"],tokens:0,completionTokens:0,enabled:!1,keyOptions:{tokens:1048576,completionTokens:65536,enabled:!0},credentials:"vault"},"gemini-2.0-flash":{llm:"GoogleAI",components:["PromptGenerator","LLMAssistant","VisionLLM","MultimodalLLM","GenAILLM"],label:"Gemini 2.0 Flash",modelId:"gemini-2.0-flash",provider:"GoogleAI",features:["text","image","audio","video","document"],tags:["Personal"],tokens:0,completionTokens:0,enabled:!1,keyOptions:{tokens:1048576,completionTokens:8192,enabled:!0},hidden:!0,credentials:"vault"},"gemini-2.0-flash-lite":{llm:"GoogleAI",label:"Gemini 2.0 Flash Lite",modelId:"gemini-2.0-flash-lite",provider:"GoogleAI",features:["text","image","audio","video","document"],tags:["Personal"],tokens:0,completionTokens:0,enabled:!1,keyOptions:{tokens:1048576,completionTokens:8192,enabled:!0},hidden:!0,credentials:"vault"},"gemini-2.5-pro":{llm:"GoogleAI",components:["PromptGenerator","LLMAssistant","VisionLLM","MultimodalLLM","GenAILLM"],label:"Gemini 2.5 Pro Preview",modelId:"gemini-2.5-pro-preview-03-25",provider:"GoogleAI",features:["text","image","audio","video","document"],tags:["Personal"],tokens:0,completionTokens:0,enabled:!1,keyOptions:{tokens:1048576,completionTokens:65536,enabled:!0},credentials:"vault"},"gemini-2.5-pro-exp":{llm:"GoogleAI",components:["PromptGenerator","LLMAssistant","VisionLLM","MultimodalLLM","GenAILLM"],label:"Gemini 2.5 Pro Experimental",modelId:"gemini-2.5-pro-exp-03-25",provider:"GoogleAI",features:["text","image","audio","video","document"],tags:["New","Personal"],tokens:0,completionTokens:0,enabled:!1,keyOptions:{tokens:1048576,completionTokens:65536,enabled:!0},credentials:"vault"},"gemini-1.5-pro-exp-0801":{llm:"GoogleAI",components:["PromptGenerator","LLMAssistant","VisionLLM","MultimodalLLM","GenAILLM"],label:"Gemini 1.5 Pro Experimental",modelId:"gemini-1.5-pro-exp-0801",provider:"GoogleAI",features:["text","image","audio","video","document"],tags:["Personal","deprecated"],tokens:0,completionTokens:0,enabled:!1,keyOptions:{tokens:2097152,completionTokens:8192,enabled:!0},hidden:!0,credentials:"vault"},"gemini-1.5-pro-latest-stable":{llm:"GoogleAI",alias:"gemini-1.5-pro",components:["PromptGenerator","LLMAssistant","VisionLLM","MultimodalLLM","GenAILLM"],label:"Gemini 1.5 Pro Latest Stable",modelId:"gemini-1.5-pro",provider:"GoogleAI",features:["text","image","audio","video","document"],tags:["Personal","deprecated"],tokens:0,completionTokens:0,enabled:!1,keyOptions:{tokens:2097152,completionTokens:8192,enabled:!0},credentials:"vault"},"gemini-1.5-pro-latest":{llm:"GoogleAI",components:["PromptGenerator","LLMAssistant","VisionLLM","MultimodalLLM"],label:"Gemini 1.5 Pro",modelId:"gemini-1.5-pro",provider:"GoogleAI",tags:["Personal","deprecated"],tokens:0,completionTokens:0,enabled:!1,keyOptions:{tokens:2097152,completionTokens:8192,enabled:!0},hidden:!0,credentials:"vault"},"gemini-1.5-pro-stable":{llm:"GoogleAI",alias:"gemini-1.5-pro-001",components:["PromptGenerator","LLMAssistant","VisionLLM","MultimodalLLM","GenAILLM"],label:"Gemini 1.5 Pro Stable",modelId:"gemini-1.5-pro",provider:"GoogleAI",features:["text","image","audio","video","document"],tags:["Personal","deprecated"],tokens:0,completionTokens:0,enabled:!1,keyOptions:{tokens:2097152,completionTokens:8192,enabled:!0},credentials:"vault"},"gemini-1.5-pro":{llm:"GoogleAI",tokens:2048,completionTokens:2048,enabled:!1,keyOptions:{tokens:2097152,completionTokens:8192,enabled:!0},credentials:"vault"},"gemini-1.5-pro-001":{llm:"GoogleAI",tokens:2048,completionTokens:2048,enabled:!1,keyOptions:{tokens:2097152,completionTokens:8192,enabled:!0},credentials:"vault"},"gemini-1.5-flash-latest":{llm:"GoogleAI",components:["PromptGenerator","LLMAssistant","VisionLLM","MultimodalLLM"],label:"Gemini 1.5 Flash Latest",modelId:"gemini-1.5-flash-latest",provider:"GoogleAI",features:["text","image","audio","video","document"],tags:["Personal","deprecated"],tokens:0,completionTokens:0,enabled:!1,keyOptions:{tokens:1048576,completionTokens:8192,enabled:!0},hidden:!0,credentials:"vault"},"gemini-1.5-flash-latest-stable":{llm:"GoogleAI",alias:"gemini-1.5-flash",components:["PromptGenerator","LLMAssistant","VisionLLM","MultimodalLLM"],label:"Gemini 1.5 Flash Latest Stable",modelId:"gemini-1.5-flash",provider:"GoogleAI",features:["text","image","audio","video","document"],tags:["Personal","deprecated"],tokens:0,completionTokens:0,enabled:!1,keyOptions:{tokens:1048576,completionTokens:8192,enabled:!0},hidden:!0,credentials:"vault"},"gemini-1.5-flash-stable":{llm:"GoogleAI",alias:"gemini-1.5-flash-001",components:["PromptGenerator","LLMAssistant","VisionLLM","MultimodalLLM","GenAILLM"],label:"Gemini 1.5 Flash Stable",modelId:"gemini-1.5-flash-001",provider:"GoogleAI",features:["text","image","audio","video","document"],tags:["Personal","deprecated"],tokens:0,completionTokens:0,enabled:!1,keyOptions:{tokens:1048576,completionTokens:8192,enabled:!0},credentials:"vault"},"gemini-1.5-flash":{llm:"GoogleAI",tokens:2048,completionTokens:2048,enabled:!1,keyOptions:{tokens:1048576,completionTokens:8192,enabled:!0},credentials:"vault"},"gemini-1.5-flash-001":{llm:"GoogleAI",tokens:2048,completionTokens:2048,enabled:!1,keyOptions:{tokens:1048576,completionTokens:8192,enabled:!0},credentials:"vault"},"gemini-1.0-pro-latest":{llm:"GoogleAI",components:["PromptGenerator","LLMAssistant"],label:"Gemini 1.0 Pro Latest",modelId:"gemini-1.0-pro-latest",provider:"GoogleAI",features:["text"],tags:["Personal","legacy"],tokens:0,completionTokens:0,enabled:!1,keyOptions:{tokens:30720,completionTokens:8192,enabled:!0},hidden:!0,credentials:"vault"},"gemini-1.0-pro-latest-stable":{llm:"GoogleAI",alias:"gemini-1.0-pro",components:["PromptGenerator","LLMAssistant"],label:"Gemini 1.0 Pro Latest Stable",modelId:"gemini-1.0-pro",provider:"GoogleAI",features:["text"],tags:["Personal","legacy"],tokens:0,completionTokens:0,enabled:!1,keyOptions:{tokens:30720,completionTokens:8192,enabled:!0},hidden:!0,credentials:"vault"},"gemini-1.0-pro-stable":{llm:"GoogleAI",alias:"gemini-1.0-pro-001",components:["PromptGenerator","LLMAssistant"],label:"Gemini 1.0 Pro Stable",modelId:"gemini-1.0-pro-001",provider:"GoogleAI",features:["text"],tags:["Personal","legacy"],tokens:0,completionTokens:0,enabled:!1,keyOptions:{tokens:30720,completionTokens:8192,enabled:!0},hidden:!0,credentials:"vault"},"gemini-1.0-pro":{llm:"GoogleAI",tokens:2048,completionTokens:2048,enabled:!1,keyOptions:{tokens:30720,completionTokens:8192,enabled:!0},credentials:"vault"},"gemini-1.0-pro-001":{llm:"GoogleAI",tokens:2048,completionTokens:2048,enabled:!1,keyOptions:{tokens:30720,completionTokens:8192,enabled:!0},credentials:"vault"},"gemini-pro-vision":{llm:"GoogleAI",components:["VisionLLM"],label:"Gemini Pro Vision",modelId:"gemini-pro-vision",provider:"GoogleAI",features:["image"],tags:["Personal","legacy"],tokens:0,completionTokens:0,enabled:!1,keyOptions:{tokens:12288,completionTokens:4096,enabled:!0},hidden:!0,credentials:"vault"},"llama-3.3-70b":{llm:"Groq",components:["PromptGenerator","LLMAssistant","GenAILLM"],label:"Meta - Llama 3.3 70B",modelId:"llama-3.3-70b-versatile",provider:"Groq",features:["text"],tags:["Personal","Groq"],tokens:0,completionTokens:0,enabled:!1,keyOptions:{tokens:128e3,completionTokens:32768,enabled:!0},credentials:"vault"},"groq-llama3-70b":{llm:"Groq",alias:"llama3-70b-8192",components:["PromptGenerator","LLMAssistant","GenAILLM"],label:"Meta - Llama 3 70B",modelId:"llama3-70b-8192",provider:"Groq",features:["text"],tags:["Personal","Groq"],tokens:0,completionTokens:0,enabled:!1,keyOptions:{tokens:8192,completionTokens:8192,enabled:!0},credentials:"vault"},"llama3-70b-8192":{llm:"Groq",tokens:2048,completionTokens:2048,enabled:!1,keyOptions:{tokens:8192,completionTokens:8192,enabled:!0},credentials:"vault"},"groq-llama-3.1-8b-instant":{llm:"Groq",alias:"llama-3.1-8b-instant",components:["PromptGenerator","LLMAssistant","GenAILLM"],label:"Meta - Llama 3.1 8B",modelId:"llama-3.1-8b-instant",provider:"Groq",features:["text"],tags:["Personal","Groq"],tokens:0,completionTokens:0,enabled:!1,keyOptions:{tokens:128e3,completionTokens:8192,enabled:!0},credentials:"vault"},"llama-3.1-8b-instant":{llm:"Groq",tokens:8e3,completionTokens:8e3,enabled:!1,keyOptions:{tokens:131072,completionTokens:8192,enabled:!0},credentials:"vault"},"llama-guard-3-8b":{llm:"Groq",components:["PromptGenerator","LLMAssistant","GenAILLM"],label:"Meta - Llama Guard 3 8B",modelId:"llama-guard-3-8b",provider:"Groq",features:["text"],tags:["Personal","Groq"],tokens:0,completionTokens:0,enabled:!1,keyOptions:{tokens:8192,completionTokens:8192,enabled:!0},credentials:"vault"},"groq-llama3-8b":{llm:"Groq",alias:"llama3-8b-8192",components:["PromptGenerator","LLMAssistant","GenAILLM"],label:"Meta - Llama 3 8B",modelId:"llama3-8b-8192",provider:"Groq",features:["text"],tags:["Personal","Groq"],tokens:0,completionTokens:0,enabled:!1,keyOptions:{tokens:8192,completionTokens:8192,enabled:!0},credentials:"vault"},"llama3-8b-8192":{llm:"Groq",tokens:2048,completionTokens:2048,enabled:!1,keyOptions:{tokens:8192,completionTokens:8192,enabled:!0},credentials:"vault"},"groq-gemma2-9b":{llm:"Groq",alias:"gemma2-9b-it",components:["PromptGenerator","LLMAssistant","GenAILLM"],label:"Google - Gemma 2 9B",modelId:"gemma2-9b-it",provider:"Groq",features:["text"],tags:["Personal","Groq"],tokens:0,completionTokens:0,enabled:!1,keyOptions:{tokens:8192,completionTokens:8192,enabled:!0},credentials:"vault"},"gemma2-9b-it":{llm:"Groq",tokens:2048,completionTokens:2048,enabled:!1,keyOptions:{tokens:8192,completionTokens:8192,enabled:!0},credentials:"vault"},"groq-mixtral-8x7b":{llm:"Groq",alias:"mixtral-8x7b-32768",components:["PromptGenerator","LLMAssistant","GenAILLM"],label:"Mistral - Mixtral 8x7b",modelId:"mixtral-8x7b-32768",provider:"Groq",features:["text"],tags:["Personal","Groq"],tokens:0,completionTokens:0,enabled:!1,keyOptions:{tokens:32768,completionTokens:32768,enabled:!0},credentials:"vault"},"mixtral-8x7b-32768":{llm:"Groq",tokens:2048,completionTokens:2048,enabled:!1,keyOptions:{tokens:32768,completionTokens:32768,enabled:!0},credentials:"vault"},"qwen-qwq-32b":{llm:"Groq",label:"Qwen - QWQ 32b Preview",modelId:"qwen-qwq-32b",provider:"Groq",features:["text"],tags:["Personal","Groq"],tokens:0,completionTokens:0,enabled:!1,keyOptions:{tokens:128e3,completionTokens:16384,enabled:!0},credentials:"vault"},"mistral-saba-24b":{llm:"Groq",label:"Mistral - Saba 24b Preview",modelId:"mistral-saba-24b",provider:"Groq",features:["text"],tags:["Personal","Groq"],tokens:0,completionTokens:0,enabled:!1,keyOptions:{tokens:128e3,completionTokens:16384,enabled:!0},credentials:"vault"},"qwen-2.5-coder-32b":{llm:"Groq",label:"Qwen - 2.5 Coder 32b Preview",modelId:"qwen-2.5-coder-32b",provider:"Groq",features:["text"],tags:["Personal","Groq"],tokens:0,completionTokens:0,enabled:!1,keyOptions:{tokens:128e3,completionTokens:16384,enabled:!0},credentials:"vault"},"qwen-2.5-32b":{llm:"Groq",label:"Qwen - 2.5 32b Preview",modelId:"qwen-2.5-32b",provider:"Groq",features:["text"],tags:["Personal","Groq"],tokens:0,completionTokens:0,enabled:!1,keyOptions:{tokens:128e3,completionTokens:16384,enabled:!0},credentials:"vault"},"deepseek-r1-distill-qwen-32b":{llm:"Groq",label:"DeepSeek - R1 Distill Qwen 32b Preview",modelId:"deepseek-r1-distill-qwen-32b",provider:"Groq",features:["text"],tags:["Personal","Groq"],tokens:0,completionTokens:0,enabled:!1,keyOptions:{tokens:128e3,completionTokens:16384,enabled:!0},credentials:"vault"},"deepseek-r1-distill-llama-70b":{llm:"Groq",label:"DeepSeek - R1 Distill Llama 70b Preview",modelId:"deepseek-r1-distill-llama-70b",provider:"Groq",features:["text"],tags:["Personal","Groq"],tokens:0,completionTokens:0,enabled:!1,keyOptions:{tokens:128e3,completionTokens:8192,enabled:!0},credentials:"vault"},"meta-llama/llama-4-scout-17b-16e-instruct":{llm:"Groq",label:"Meta - Llama 4 Scout 17B 16E Instruct",modelId:"meta-llama/llama-4-scout-17b-16e-instruct",provider:"Groq",features:["text"],tags:["New","Personal","Groq"],tokens:0,completionTokens:0,enabled:!1,keyOptions:{tokens:131072,completionTokens:8192,enabled:!0},credentials:"vault"},"llama-3.3-70b-specdec":{llm:"Groq",label:"Meta - Llama 3.3 70B SpecDec Preview",modelId:"llama-3.3-70b-specdec",provider:"Groq",features:["text"],tags:["Personal","Groq"],tokens:0,completionTokens:0,enabled:!1,keyOptions:{tokens:8192,completionTokens:8192,enabled:!0},credentials:"vault"},"llama-3.2-1b-preview":{llm:"Groq",components:["PromptGenerator","LLMAssistant","GenAILLM"],label:"Meta - Llama 3.2 1B Preview",modelId:"llama-3.2-1b-preview",provider:"Groq",features:["text"],tags:["Personal","Groq"],tokens:0,completionTokens:0,enabled:!1,keyOptions:{tokens:128e3,completionTokens:8192,enabled:!0},credentials:"vault"},"llama-3.2-3b-preview":{llm:"Groq",components:["PromptGenerator","LLMAssistant","GenAILLM"],label:"Meta - Llama 3.2 3B Preview",modelId:"llama-3.2-3b-preview",provider:"Groq",features:["text"],tags:["Personal","Groq"],tokens:0,completionTokens:0,enabled:!1,keyOptions:{tokens:128e3,completionTokens:8192,enabled:!0},credentials:"vault"},"llama-3.2-11b-vision-preview":{llm:"Groq",components:["PromptGenerator","LLMAssistant","VisionLLM","GenAILLM"],label:"Meta - Llama 3.2 11B Vision Preview",modelId:"llama-3.2-11b-vision-preview",provider:"Groq",features:["text","image"],tags:["Personal","Groq"],tokens:0,completionTokens:0,enabled:!1,keyOptions:{tokens:128e3,completionTokens:8192,enabled:!0},hidden:!0,credentials:"vault"},"llama-3.2-90b-vision-preview":{llm:"Groq",label:"Meta - Llama 3.2 90b Vision Preview",modelId:"llama-3.2-90b-vision-preview",provider:"Groq",features:["text","image"],tags:["Personal","Groq"],tokens:0,completionTokens:0,enabled:!1,keyOptions:{tokens:128e3,completionTokens:8192,enabled:!0},hidden:!0,credentials:"vault"},"deepseek-ai/DeepSeek-R1-Distill-Qwen-14B":{llm:"TogetherAI",label:"DeepSeek - R1 Distill Qwen 14B",modelId:"deepseek-ai/DeepSeek-R1-Distill-Qwen-14B",provider:"TogetherAI",features:["text"],tags:["New","Personal","TogetherAI"],tokens:0,completionTokens:0,enabled:!1,keyOptions:{tokens:131072,completionTokens:32768,enabled:!0},baseURL:"https://api.together.xyz/v1",credentials:"vault"},"deepseek-ai/DeepSeek-R1-Distill-Qwen-1.5B":{llm:"TogetherAI",label:"DeepSeek - R1 Distill Qwen 1.5B",modelId:"deepseek-ai/DeepSeek-R1-Distill-Qwen-1.5B",provider:"TogetherAI",features:["text"],tags:["New","Personal","TogetherAI"],tokens:0,completionTokens:0,enabled:!1,keyOptions:{tokens:131072,completionTokens:32768,enabled:!0},baseURL:"https://api.together.xyz/v1",credentials:"vault"},"deepseek-ai/DeepSeek-R1-Distill-Llama-70B":{llm:"TogetherAI",label:"DeepSeek - R1 Distill Llama 70B",modelId:"deepseek-ai/DeepSeek-R1-Distill-Llama-70B",provider:"TogetherAI",features:["text"],tags:["New","Personal","TogetherAI"],tokens:0,completionTokens:0,enabled:!1,keyOptions:{tokens:131072,completionTokens:32768,enabled:!0},baseURL:"https://api.together.xyz/v1",credentials:"vault"},"deepseek-ai/DeepSeek-R1":{llm:"TogetherAI",label:"DeepSeek - R1",modelId:"deepseek-ai/DeepSeek-R1",provider:"TogetherAI",features:["text"],tags:["Personal","TogetherAI"],tokens:0,completionTokens:0,enabled:!1,keyOptions:{tokens:128e3,completionTokens:32768,enabled:!0},baseURL:"https://api.together.xyz/v1",credentials:"vault"},"deepseek-ai/DeepSeek-V3":{llm:"TogetherAI",label:"DeepSeek - V3",modelId:"deepseek-ai/DeepSeek-V3",provider:"TogetherAI",features:["text"],tags:["Personal","TogetherAI"],tokens:0,completionTokens:0,enabled:!1,keyOptions:{tokens:131072,completionTokens:8192,enabled:!0},baseURL:"https://api.together.xyz/v1",credentials:"vault"},"deepseek-ai/deepseek-llm-67b-chat":{llm:"TogetherAI",components:["PromptGenerator","LLMAssistant","GenAILLM"],label:"DeepSeek - Llama 67B Chat",modelId:"deepseek-ai/deepseek-llm-67b-chat",provider:"TogetherAI",features:["text"],tags:["Personal","TogetherAI"],tokens:0,completionTokens:0,enabled:!1,keyOptions:{tokens:4096,completionTokens:4096,enabled:!0},baseURL:"https://api.together.xyz/v1",credentials:"vault"},"meta-llama/Llama-4-Maverick-17B-128E-Instruct-FP8":{llm:"TogetherAI",label:"Meta - Llama 4 Maverick (17Bx128E)",modelId:"meta-llama/Llama-4-Maverick-17B-128E-Instruct-FP8",provider:"TogetherAI",features:["text","tools","image"],tags:["New","Personal","TogetherAI"],tokens:0,completionTokens:0,enabled:!1,keyOptions:{tokens:524288,completionTokens:524288,enabled:!0},baseURL:"https://api.together.xyz/v1",credentials:"vault"},"meta-llama/Llama-4-Scout-17B-16E-Instruct":{llm:"TogetherAI",label:"Meta - Llama 4 Scout (17Bx16E)",modelId:"meta-llama/Llama-4-Scout-17B-16E-Instruct",provider:"TogetherAI",features:["text","tools","image"],tags:["New","Personal","TogetherAI"],tokens:0,completionTokens:0,enabled:!1,keyOptions:{tokens:327680,completionTokens:327680,enabled:!0},baseURL:"https://api.together.xyz/v1",credentials:"vault"},"meta-llama/Llama-3.3-70B-Instruct-Turbo":{llm:"TogetherAI",label:"Meta - Llama 3.3 70B Instruct Turbo",modelId:"meta-llama/Llama-3.3-70B-Instruct-Turbo",provider:"TogetherAI",features:["text","tools"],tags:["Personal","TogetherAI"],tokens:0,completionTokens:0,enabled:!1,keyOptions:{tokens:131072,completionTokens:131072,enabled:!0},baseURL:"https://api.together.xyz/v1",credentials:"vault"},"meta-llama/Meta-Llama-3.1-8B-Instruct-Turbo":{llm:"TogetherAI",components:["LLMAssistant","PromptGenerator","GenAILLM"],label:"Meta - Llama 3.1 8B Instruct Turbo",modelId:"meta-llama/Meta-Llama-3.1-8B-Instruct-Turbo",provider:"TogetherAI",features:["text","tools"],tags:["Personal","TogetherAI"],tokens:0,completionTokens:0,enabled:!1,keyOptions:{tokens:131072,completionTokens:131072,enabled:!0},baseURL:"https://api.together.xyz/v1",credentials:"vault"},"meta-llama/Meta-Llama-3.1-70B-Instruct-Turbo":{llm:"TogetherAI",components:["LLMAssistant","PromptGenerator","GenAILLM"],label:"Meta - Llama 3.1 70B Instruct Turbo",modelId:"meta-llama/Meta-Llama-3.1-70B-Instruct-Turbo",provider:"TogetherAI",features:["text","tools"],tags:["Personal","TogetherAI"],tokens:0,completionTokens:0,enabled:!1,keyOptions:{tokens:131072,completionTokens:131072,enabled:!0},baseURL:"https://api.together.xyz/v1",credentials:"vault"},"meta-llama/Meta-Llama-3.1-405B-Instruct-Turbo":{llm:"TogetherAI",components:["LLMAssistant","PromptGenerator","GenAILLM"],label:"Meta - Llama 3.1 405B Instruct Turbo",modelId:"meta-llama/Meta-Llama-3.1-405B-Instruct-Turbo",provider:"TogetherAI",features:["text","tools"],tags:["Personal","TogetherAI"],tokens:0,completionTokens:0,enabled:!1,keyOptions:{tokens:130815,completionTokens:130815,enabled:!0},baseURL:"https://api.together.xyz/v1",credentials:"vault"},"meta-llama/Meta-Llama-3-8B-Instruct-Turbo":{llm:"TogetherAI",components:["LLMAssistant","PromptGenerator","GenAILLM"],label:"Meta - Llama 3 8B Instruct Turbo",modelId:"meta-llama/Meta-Llama-3-8B-Instruct-Turbo",provider:"TogetherAI",features:["text"],tags:["Personal","TogetherAI"],tokens:0,completionTokens:0,enabled:!1,keyOptions:{tokens:8192,completionTokens:8192,enabled:!0},baseURL:"https://api.together.xyz/v1",credentials:"vault"},"meta-llama/Meta-Llama-3-70B-Instruct-Turbo":{llm:"TogetherAI",components:["LLMAssistant","PromptGenerator","GenAILLM"],label:"Meta - Llama 3 70B Instruct Turbo",modelId:"meta-llama/Meta-Llama-3-70B-Instruct-Turbo",provider:"TogetherAI",features:["text"],tags:["Personal","TogetherAI"],tokens:0,completionTokens:0,enabled:!1,keyOptions:{tokens:8192,completionTokens:8192,enabled:!0},baseURL:"https://api.together.xyz/v1",credentials:"vault"},"meta-llama/Llama-3.2-3B-Instruct-Turbo":{llm:"TogetherAI",label:"Meta - Llama 3.2 3B Instruct Turbo",modelId:"meta-llama/Llama-3.2-3B-Instruct-Turbo",provider:"TogetherAI",features:["text"],tags:["Personal","TogetherAI"],tokens:0,completionTokens:0,enabled:!1,keyOptions:{tokens:131072,completionTokens:32768,enabled:!0},baseURL:"https://api.together.xyz/v1",credentials:"vault"},"meta-llama/Meta-Llama-3-8B-Instruct-Lite":{llm:"TogetherAI",components:["LLMAssistant","PromptGenerator","GenAILLM"],label:"Meta - Llama 3 8B Instruct Lite",modelId:"meta-llama/Meta-Llama-3-8B-Instruct-Lite",provider:"TogetherAI",features:["text"],tags:["Personal","TogetherAI"],tokens:0,completionTokens:0,enabled:!1,keyOptions:{tokens:8192,completionTokens:8192,enabled:!0},baseURL:"https://api.together.xyz/v1",credentials:"vault"},"meta-llama/Meta-Llama-3-70B-Instruct-Lite":{llm:"TogetherAI",components:["LLMAssistant","PromptGenerator","GenAILLM"],label:"Meta - Llama 3 70B Instruct Lite",modelId:"meta-llama/Meta-Llama-3-70B-Instruct-Lite",provider:"TogetherAI",features:["text"],tags:["Personal","TogetherAI"],tokens:0,completionTokens:0,enabled:!1,keyOptions:{tokens:8192,completionTokens:8192,enabled:!0},baseURL:"https://api.together.xyz/v1",credentials:"vault"},"meta-llama/Llama-3-8b-chat-hf":{llm:"TogetherAI",components:["PromptGenerator","LLMAssistant","GenAILLM"],label:"Meta - Llama 3 8B Chat",modelId:"meta-llama/Llama-3-8b-chat-hf",provider:"TogetherAI",features:["text"],tags:["Personal","TogetherAI"],tokens:0,completionTokens:0,enabled:!1,keyOptions:{tokens:8192,completionTokens:8192,enabled:!0},baseURL:"https://api.together.xyz/v1",credentials:"vault"},"meta-llama/Llama-3-70b-chat-hf":{llm:"TogetherAI",components:["PromptGenerator","LLMAssistant","GenAILLM"],label:"Meta - Llama 3 70B Chat",modelId:"meta-llama/Llama-3-70b-chat-hf",provider:"TogetherAI",features:["text"],tags:["Personal","TogetherAI"],tokens:0,completionTokens:0,enabled:!1,keyOptions:{tokens:8192,completionTokens:8192,enabled:!0},baseURL:"https://api.together.xyz/v1",credentials:"vault"},"meta-llama/Llama-2-13b-chat-hf":{llm:"TogetherAI",components:["LLMAssistant"],label:"Meta - Llama 2 13B Chat",modelId:"meta-llama/Llama-2-13b-chat-hf",provider:"TogetherAI",features:["text"],tags:["Personal","TogetherAI"],tokens:0,completionTokens:0,enabled:!1,keyOptions:{tokens:4096,completionTokens:4096,enabled:!0},baseURL:"https://api.together.xyz/v1",credentials:"vault"},"meta-llama/Llama-Vision-Free":{llm:"TogetherAI",components:["LLMAssistant","PromptGenerator","VisionLLM","GenAILLM"],label:"Meta - Llama Vision Free",modelId:"meta-llama/Llama-Vision-Free",provider:"TogetherAI",features:["text","image"],tags:["Personal","TogetherAI"],tokens:0,completionTokens:0,enabled:!1,keyOptions:{tokens:131072,completionTokens:131072,enabled:!0},baseURL:"https://api.together.xyz/v1",credentials:"vault"},"meta-llama/Llama-3.2-11B-Vision-Instruct-Turbo":{llm:"TogetherAI",components:["LLMAssistant","PromptGenerator","VisionLLM","GenAILLM"],label:"Meta - Llama 3.2 11B Vision Instruct Turbo",modelId:"meta-llama/Llama-3.2-11B-Vision-Instruct-Turbo",provider:"TogetherAI",features:["text","image"],tags:["Personal","TogetherAI"],tokens:0,completionTokens:0,enabled:!1,keyOptions:{tokens:131072,completionTokens:131072,enabled:!0},baseURL:"https://api.together.xyz/v1",credentials:"vault"},"meta-llama/Llama-3.2-90B-Vision-Instruct-Turbo":{llm:"TogetherAI",components:["LLMAssistant","PromptGenerator","VisionLLM","GenAILLM"],label:"Meta - Llama 3.2 90B Vision Instruct Turbo",modelId:"meta-llama/Llama-3.2-90B-Vision-Instruct-Turbo",provider:"TogetherAI",features:["text","image"],tags:["Personal","TogetherAI"],tokens:0,completionTokens:0,enabled:!1,keyOptions:{tokens:131072,completionTokens:131072,enabled:!0},baseURL:"https://api.together.xyz/v1",credentials:"vault"},"google/gemma-2-27b-it":{llm:"TogetherAI",components:["PromptGenerator","LLMAssistant","GenAILLM"],label:"Google - Gemma 2 27B",modelId:"google/gemma-2-27b-it",provider:"TogetherAI",features:["text"],tags:["Personal","TogetherAI"],tokens:0,completionTokens:0,enabled:!1,keyOptions:{tokens:8192,completionTokens:8192,enabled:!0},baseURL:"https://api.together.xyz/v1",credentials:"vault"},"google/gemma-2-9b-it":{llm:"TogetherAI",components:["PromptGenerator","LLMAssistant","GenAILLM"],label:"Google - Gemma 2 9B",modelId:"google/gemma-2-9b-it",provider:"TogetherAI",features:["text"],tags:["Personal","TogetherAI"],tokens:0,completionTokens:0,enabled:!1,keyOptions:{tokens:8192,completionTokens:8192,enabled:!0},baseURL:"https://api.together.xyz/v1",credentials:"vault"},"google/gemma-2b-it":{llm:"TogetherAI",components:["PromptGenerator","LLMAssistant","GenAILLM"],label:"Google - Gemma 2 2B",modelId:"google/gemma-2b-it",provider:"TogetherAI",features:["text"],tags:["Personal","TogetherAI"],tokens:0,completionTokens:0,enabled:!1,keyOptions:{tokens:8192,completionTokens:8192,enabled:!0},baseURL:"https://api.together.xyz/v1",credentials:"vault"},"mistralai/Mistral-7B-Instruct-v0.3":{llm:"TogetherAI",components:["PromptGenerator","LLMAssistant","Classifier","GenAILLM"],label:"Mistral - 7B Instruct v0.3",modelId:"mistralai/Mistral-7B-Instruct-v0.3",provider:"TogetherAI",features:["text"],tags:["Personal","TogetherAI"],tokens:0,completionTokens:0,enabled:!1,keyOptions:{tokens:32768,completionTokens:32768,enabled:!0},baseURL:"https://api.together.xyz/v1",credentials:"vault"},"mistralai/Mistral-7B-Instruct-v0.2":{llm:"TogetherAI",components:["PromptGenerator","LLMAssistant","GenAILLM"],label:"Mistral - 7B Instruct v0.2",modelId:"mistralai/Mistral-7B-Instruct-v0.2",provider:"TogetherAI",features:["text"],tags:["Personal","TogetherAI"],tokens:0,completionTokens:0,enabled:!1,keyOptions:{tokens:32768,completionTokens:32768,enabled:!0},baseURL:"https://api.together.xyz/v1",credentials:"vault"},"mistralai/Mistral-7B-Instruct-v0.1":{llm:"TogetherAI",components:["PromptGenerator","LLMAssistant","GenAILLM"],label:"Mistral - 7B Instruct v0.1",modelId:"mistralai/Mistral-7B-Instruct-v0.1",provider:"TogetherAI",features:["text","tools"],tags:["Personal","TogetherAI"],tokens:0,completionTokens:0,enabled:!1,keyOptions:{tokens:8192,completionTokens:8192,enabled:!0},baseURL:"https://api.together.xyz/v1",credentials:"vault"},"mistralai/Mixtral-8x7B-Instruct-v0.1":{llm:"TogetherAI",components:["PromptGenerator","LLMAssistant","Classifier","GenAILLM"],label:"Mistral - 8x7B Instruct v0.1",modelId:"mistralai/Mixtral-8x7B-Instruct-v0.1",provider:"TogetherAI",features:["text","tools"],tags:["Personal","TogetherAI"],tokens:0,completionTokens:0,enabled:!1,keyOptions:{tokens:32768,completionTokens:32768,enabled:!0},baseURL:"https://api.together.xyz/v1",credentials:"vault"},"mistralai/Mixtral-8x22B-Instruct-v0.1":{llm:"TogetherAI",components:["PromptGenerator","LLMAssistant","GenAILLM"],label:"Mistral - 8x22B Instruct v0.1",modelId:"mistralai/Mixtral-8x22B-Instruct-v0.1",provider:"TogetherAI",features:["text"],tags:["Personal","TogetherAI"],tokens:0,completionTokens:0,enabled:!1,keyOptions:{tokens:65536,completionTokens:65536,enabled:!0},baseURL:"https://api.together.xyz/v1",credentials:"vault"},"Qwen/Qwen2.5-Coder-32B-Instruct":{llm:"TogetherAI",label:"Qwen - 2.5 Coder 32B",modelId:"Qwen/Qwen2.5-Coder-32B-Instruct",provider:"TogetherAI",features:["text"],tags:["New","Personal","TogetherAI"],tokens:0,completionTokens:0,enabled:!1,keyOptions:{tokens:32768,completionTokens:32768,enabled:!0},baseURL:"https://api.together.xyz/v1",credentials:"vault"},"Qwen/QwQ-32B-Preview":{llm:"TogetherAI",label:"Qwen - QwQ 32B Preview",modelId:"Qwen/QwQ-32B-Preview",provider:"TogetherAI",features:["text"],tags:["New","Personal","TogetherAI"],tokens:0,completionTokens:0,enabled:!1,keyOptions:{tokens:32768,completionTokens:32768,enabled:!0},baseURL:"https://api.together.xyz/v1",credentials:"vault"},"Qwen/Qwen2.5-7B-Instruct-Turbo":{llm:"TogetherAI",label:"Qwen - 2.5 7B Instruct Turbo",modelId:"Qwen/Qwen2.5-7B-Instruct-Turbo",provider:"TogetherAI",features:["text","tools"],tags:["New","Personal","TogetherAI"],tokens:0,completionTokens:0,enabled:!1,keyOptions:{tokens:32768,completionTokens:32768,enabled:!0},baseURL:"https://api.together.xyz/v1",credentials:"vault"},"Qwen/Qwen2.5-72B-Instruct-Turbo":{llm:"TogetherAI",label:"Qwen - 2.5 72B Instruct Turbo",modelId:"Qwen/Qwen2.5-72B-Instruct-Turbo",provider:"TogetherAI",features:["text","tools"],tags:["New","Personal","TogetherAI"],tokens:0,completionTokens:0,enabled:!1,keyOptions:{tokens:32768,completionTokens:32768,enabled:!0},baseURL:"https://api.together.xyz/v1",credentials:"vault"},"Qwen/Qwen2-72B-Instruct":{llm:"TogetherAI",label:"Qwen - 2 72B Instruct",modelId:"Qwen/Qwen2-72B-Instruct",provider:"TogetherAI",features:["text"],tags:["New","Personal","TogetherAI"],tokens:0,completionTokens:0,enabled:!1,keyOptions:{tokens:32768,completionTokens:32768,enabled:!0},baseURL:"https://api.together.xyz/v1",credentials:"vault"},"Qwen/Qwen2-VL-72B-Instruct":{llm:"TogetherAI",label:"Qwen - 2 VL 72B Instruct",modelId:"Qwen/Qwen2-VL-72B-Instruct",provider:"TogetherAI",features:["text"],tags:["New","Personal","TogetherAI"],tokens:0,completionTokens:0,enabled:!1,keyOptions:{tokens:32768,completionTokens:32768,enabled:!0},baseURL:"https://api.together.xyz/v1",credentials:"vault"},"nvidia/Llama-3.1-Nemotron-70B-Instruct-HF":{llm:"TogetherAI",label:"Nvidia - Llama 3.1 Nemotron 70B",modelId:"nvidia/Llama-3.1-Nemotron-70B-Instruct-HF",provider:"TogetherAI",features:["text"],tags:["New","Personal","TogetherAI"],tokens:0,completionTokens:0,enabled:!1,keyOptions:{tokens:32768,completionTokens:32768,enabled:!0},baseURL:"https://api.together.xyz/v1",credentials:"vault"},"microsoft/WizardLM-2-8x22B":{llm:"TogetherAI",components:["PromptGenerator","LLMAssistant","GenAILLM"],label:"Microsoft - WizardLM 2 8x22B",modelId:"microsoft/WizardLM-2-8x22B",provider:"TogetherAI",features:["text"],tags:["Personal","TogetherAI"],tokens:0,completionTokens:0,enabled:!1,keyOptions:{tokens:65536,completionTokens:65536,enabled:!0},baseURL:"https://api.together.xyz/v1",credentials:"vault"},"databricks/dbrx-instruct":{llm:"TogetherAI",components:["PromptGenerator","LLMAssistant","GenAILLM"],label:"Databricks - DBRX Instruct",modelId:"databricks/dbrx-instruct",provider:"TogetherAI",features:["text"],tags:["Personal","TogetherAI"],tokens:0,completionTokens:0,enabled:!1,keyOptions:{tokens:32768,completionTokens:32768,enabled:!0},baseURL:"https://api.together.xyz/v1",credentials:"vault"},"NousResearch/Nous-Hermes-2-Mixtral-8x7B-DPO":{llm:"TogetherAI",components:["PromptGenerator","LLMAssistant","GenAILLM"],label:"NousResearch - Hermes 2 Mixtral 8x7B DPO",modelId:"NousResearch/Nous-Hermes-2-Mixtral-8x7B-DPO",provider:"TogetherAI",features:["text"],tags:["Personal","TogetherAI"],tokens:0,completionTokens:0,enabled:!1,keyOptions:{tokens:32768,completionTokens:32768,enabled:!0},baseURL:"https://api.together.xyz/v1",credentials:"vault"},"upstage/SOLAR-10.7B-Instruct-v1.0":{llm:"TogetherAI",components:["PromptGenerator","LLMAssistant","GenAILLM"],label:"Upstage - SOLAR 10.7B Instruct v1.0",modelId:"upstage/SOLAR-10.7B-Instruct-v1.0",provider:"TogetherAI",features:["text"],tags:["Personal","TogetherAI"],tokens:0,completionTokens:0,enabled:!1,keyOptions:{tokens:4096,completionTokens:4096,enabled:!0},baseURL:"https://api.together.xyz/v1",credentials:"vault"},"Gryphe/MythoMax-L2-13b":{llm:"TogetherAI",components:["PromptGenerator","LLMAssistant","GenAILLM"],label:"Gryphe - MythoMax L2 13B",modelId:"Gryphe/MythoMax-L2-13b",provider:"TogetherAI",features:["text"],tags:["Personal","TogetherAI"],tokens:0,completionTokens:0,enabled:!1,keyOptions:{tokens:4096,completionTokens:4096,enabled:!0},baseURL:"https://api.together.xyz/v1",credentials:"vault"},"smythos/gpt-image-1":{label:"GPT Image 1",modelId:"gpt-image-1",provider:"OpenAI",features:["image-generation"],tags:["New","SmythOS"],enabled:!0,credentials:"internal"},"gpt-image-1":{label:"GPT Image 1",modelId:"gpt-image-1",provider:"OpenAI",features:["image-generation"],tags:["New","Personal"],enabled:!1,keyOptions:{enabled:!0},credentials:"vault"},"dall-e-3":{label:"DALL·E 3",modelId:"dall-e-3",provider:"OpenAI",features:["image-generation"],tags:["Deprecated"],enabled:!0,credentials:"vault"},"dall-e-2":{label:"DALL·E 2",modelId:"dall-e-2",provider:"OpenAI",features:["image-generation"],tags:["Deprecated"],enabled:!0,credentials:"vault"},"smythos/flux.1-schnell":{label:"FLUX Schnell",modelId:"runware:100@1",provider:"Runware",features:["image-generation","text-to-image","image-to-image"],tags:["SmythOS","1.0"],enabled:!0,credentials:"internal"},"smythos/flux.1-dev":{label:"FLUX Dev",modelId:"runware:101@1",provider:"Runware",features:["image-generation","text-to-image","image-to-image"],tags:["SmythOS","1.0"],enabled:!0,credentials:"internal"},"smythos/face_yolov8n":{label:"Face YOLOv8n",modelId:"runware:35@1",provider:"Runware",features:["image-inpainting"],tags:["SmythOS","Full face detection"],enabled:!0,credentials:"internal"},"smythos/face_yolov8s":{label:"Face YOLOv8s",modelId:"runware:35@2",provider:"Runware",features:["image-inpainting"],tags:["SmythOS","Full face detection"],enabled:!0,credentials:"internal"},"smythos/mediapipe_face_full":{label:"MediaPipe Face Full",modelId:"runware:35@6",provider:"Runware",features:["image-inpainting"],tags:["SmythOS","Full face detection"],enabled:!0,credentials:"internal"},"smythos/mediapipe_face_short":{label:"MediaPipe Face Short",modelId:"runware:35@7",provider:"Runware",features:["image-inpainting"],tags:["SmythOS","Full face detection"],enabled:!0,credentials:"internal"},"smythos/mediapipe_face_mesh":{label:"MediaPipe Face Mesh",modelId:"runware:35@8",provider:"Runware",features:["image-inpainting"],tags:["SmythOS","Full face detection"],enabled:!0,credentials:"internal"},"smythos/mediapipe_face_mesh_eyes_only":{label:"MediaPipe Face Mesh Eyes Only",modelId:"runware:35@9",provider:"Runware",features:["image-inpainting"],tags:["SmythOS","Facial features"],enabled:!0,credentials:"internal"},"smythos/eyes_mesh_mediapipe":{label:"Eyes Mesh MediaPipe",modelId:"runware:35@15",provider:"Runware",features:["image-inpainting"],tags:["SmythOS","Facial features"],enabled:!0,credentials:"internal"},"smythos/nose_mesh_mediapipe":{label:"Nose Mesh MediaPipe",modelId:"runware:35@13",provider:"Runware",features:["image-inpainting"],tags:["SmythOS","Facial features"],enabled:!0,credentials:"internal"},"smythos/lips_mesh_mediapipe":{label:"Lips Mesh MediaPipe",modelId:"runware:35@14",provider:"Runware",features:["image-inpainting"],tags:["SmythOS","Facial features"],enabled:!0,credentials:"internal"},"smythos/eyes_lips_mesh":{label:"Eyes & Lips Mesh",modelId:"runware:35@10",provider:"Runware",features:["image-inpainting"],tags:["SmythOS","Facial features"],enabled:!0,credentials:"internal"},"smythos/nose_eyes_mesh":{label:"Nose & Eyes Mesh",modelId:"runware:35@11",provider:"Runware",features:["image-inpainting"],tags:["SmythOS","Facial features"],enabled:!0,credentials:"internal"},"smythos/nose_lips_mesh":{label:"Nose & Lips Mesh",modelId:"runware:35@12",provider:"Runware",features:["image-inpainting"],tags:["SmythOS","Facial features"],enabled:!0},"smythos/hand_yolov8n":{label:"Hand YOLOv8n",modelId:"runware:35@3",provider:"Runware",features:["image-inpainting"],tags:["SmythOS","Other body parts"],enabled:!0},"smythos/person_yolov8n-seg":{label:"Person YOLOv8n-seg",modelId:"runware:35@4",provider:"Runware",features:["image-inpainting"],tags:["SmythOS","Other body parts"],enabled:!0},"smythos/person_yolov8s-seg":{label:"Person YOLOv8s-seg",modelId:"runware:35@5",provider:"Runware",features:["image-inpainting"],tags:["SmythOS","Other body parts"],enabled:!0,credentials:"internal"},"flux.1-schnell":{label:"FLUX.1 (Schnell)",modelId:"runware:100@1",provider:"Runware",features:["image-generation"],tags:["SmythOS"],enabled:!1,credentials:"vault"},"flux.1-dev":{label:"FLUX.1 (Dev)",modelId:"runware:101@1",provider:"Runware",features:["image-generation"],tags:["SmythOS"],enabled:!1,credentials:"vault"},grok:{llm:"xAI",label:"Grok",modelId:"grok-2-latest",provider:"xAI",features:["text","tools"],tags:["Personal","xAI"],tokens:0,completionTokens:0,enabled:!1,keyOptions:{tokens:131072,completionTokens:8192,enabled:!0},baseURL:"https://api.x.ai/v1",credentials:"vault"},"grok-2-vision":{llm:"xAI",label:"Grok Vision",modelId:"grok-2-vision-latest",provider:"xAI",features:["image"],tags:["New","Personal","xAI"],tokens:0,completionTokens:0,enabled:!1,hidden:!0,keyOptions:{tokens:32768,completionTokens:32768,enabled:!0},baseURL:"https://api.x.ai/v1",credentials:"vault"}},cd={"ai21.jamba-1-5-mini-v1:0":{llm:"Bedrock",label:"AI21 Labs - Jamba 1.5 Mini",tokens:256e3,completionTokens:4096,supportsSystemPrompt:!0,supportsStreamingToolUse:!1,components:["PromptGenerator","LLMAssistant","AgentPlugin","GenAILLM"],tags:["new"]},"ai21.jamba-1-5-large-v1:0":{llm:"Bedrock",label:"AI21 Labs - Jamba 1.5 Large",tokens:256e3,completionTokens:4096,supportsSystemPrompt:!0,supportsStreamingToolUse:!1,components:["PromptGenerator","LLMAssistant","AgentPlugin","GenAILLM"],tags:["new"]},"ai21.jamba-instruct-v1:0":{llm:"Bedrock",label:"AI21 Labs - Jamba-Instruct",tokens:256e3,completionTokens:4096,supportsSystemPrompt:!0,supportsStreamingToolUse:!1,components:["PromptGenerator","LLMAssistant","GenAILLM"]},"ai21.j2-ultra-v1":{llm:"Bedrock",label:"AI21 Labs - Jurassic-2 Ultra",tokens:8191,completionTokens:8191,supportsSystemPrompt:!1,supportsStreamingToolUse:!1,components:["PromptGenerator","GenAILLM"]},"ai21.j2-mid-v1":{llm:"Bedrock",label:"AI21 Labs - Jurassic-2 Mid",tokens:8191,completionTokens:8191,supportsSystemPrompt:!1,supportsStreamingToolUse:!1,components:["PromptGenerator","GenAILLM"]},"amazon.titan-text-premier-v1:0":{llm:"Bedrock",label:"Amazon - Titan Text Premier",tokens:32e3,completionTokens:3e3,supportsSystemPrompt:!1,supportsStreamingToolUse:!1,components:["PromptGenerator","GenAILLM"]},"amazon.titan-text-express-v1":{llm:"Bedrock",label:"Amazon - Titan Text G1 - Express",tokens:8192,completionTokens:4096,supportsSystemPrompt:!1,supportsStreamingToolUse:!1,components:["PromptGenerator","GenAILLM"]},"amazon.titan-text-lite-v1":{llm:"Bedrock",label:"Amazon - Titan Text G1 - Lite",tokens:4096,completionTokens:4096,supportsSystemPrompt:!1,supportsStreamingToolUse:!1,components:["PromptGenerator","GenAILLM"]},"us.anthropic.claude-3-5-haiku-20241022-v1:0":{llm:"Bedrock",label:"Anthropic - Claude 3.5 Haiku",tokens:2e5,completionTokens:8192,supportsSystemPrompt:!0,supportsStreamingToolUse:!0,components:["PromptGenerator","LLMAssistant","AgentPlugin","Chatbot"],tags:["v1:0","new"]},"us.anthropic.claude-3-5-sonnet-20241022-v2:0":{llm:"Bedrock",label:"Anthropic - Claude 3.5 Sonnet",tokens:2e5,completionTokens:8192,supportsSystemPrompt:!0,supportsStreamingToolUse:!0,components:["PromptGenerator","LLMAssistant","AgentPlugin","Chatbot"],tags:["v2:0","new"]},"anthropic.claude-3-5-sonnet-20240620-v1:0":{llm:"Bedrock",label:"Anthropic - Claude 3.5 Sonnet",tokens:2e5,completionTokens:8192,supportsSystemPrompt:!0,supportsStreamingToolUse:!0,components:["PromptGenerator","LLMAssistant","AgentPlugin","Chatbot"],tags:["v1:0"]},"anthropic.claude-3-sonnet-20240229-v1:0":{llm:"Bedrock",label:"Anthropic - Claude 3 Sonnet",tokens:2e5,completionTokens:4096,supportsSystemPrompt:!0,supportsStreamingToolUse:!0,components:["PromptGenerator","LLMAssistant","AgentPlugin","Chatbot"],tags:["v1:0"]},"anthropic.claude-3-haiku-20240307-v1:0":{llm:"Bedrock",label:"Anthropic - Claude 3 Haiku",tokens:2e5,completionTokens:4096,supportsSystemPrompt:!0,supportsStreamingToolUse:!0,components:["PromptGenerator","LLMAssistant","AgentPlugin","Chatbot"],tags:["v1:0"]},"anthropic.claude-3-opus-20240229-v1:0":{llm:"Bedrock",label:"Anthropic - Claude 3 Opus",tokens:2e5,completionTokens:4096,supportsSystemPrompt:!0,supportsStreamingToolUse:!0,components:["PromptGenerator","LLMAssistant","AgentPlugin","Chatbot"],tags:["v1:0"]},"anthropic.claude-v2:1":{llm:"Bedrock",label:"Anthropic - Claude 2.1",tokens:2e5,completionTokens:4096,supportsSystemPrompt:!0,supportsStreamingToolUse:!1,components:["PromptGenerator","LLMAssistant","GenAILLM"],tags:["v2:1"]},"anthropic.claude-v2":{llm:"Bedrock",label:"Anthropic - Claude 2.0",tokens:1e5,completionTokens:4096,supportsSystemPrompt:!0,supportsStreamingToolUse:!1,components:["PromptGenerator","LLMAssistant","GenAILLM"]},"anthropic.claude-instant-v1":{llm:"Bedrock",label:"Anthropic - Claude Instant",tokens:1e5,completionTokens:4096,supportsSystemPrompt:!0,supportsStreamingToolUse:!1,components:["PromptGenerator","LLMAssistant","GenAILLM"]},"cohere.command-r-plus-v1:0":{llm:"Bedrock",label:"Cohere - Command R+",tokens:128e3,completionTokens:4e3,supportsSystemPrompt:!0,supportsStreamingToolUse:!0,components:["PromptGenerator","LLMAssistant","AgentPlugin","Chatbot"]},"cohere.command-r-v1:0":{llm:"Bedrock",label:"Cohere - Command R",tokens:128e3,completionTokens:4e3,supportsSystemPrompt:!0,supportsStreamingToolUse:!0,components:["PromptGenerator","LLMAssistant","AgentPlugin","Chatbot"]},"cohere.command-text-v14":{llm:"Bedrock",label:"Cohere - Command",tokens:4e3,completionTokens:4e3,supportsSystemPrompt:!1,supportsStreamingToolUse:!1,components:["PromptGenerator","GenAILLM"]},"cohere.command-light-text-v14":{llm:"Bedrock",label:"Cohere - Command Light",tokens:4e3,completionTokens:4e3,supportsSystemPrompt:!1,supportsStreamingToolUse:!1,components:["PromptGenerator","GenAILLM"]},"us.meta.llama3-2-1b-instruct-v1:0":{llm:"Bedrock",label:"Meta - Llama 3.2 1B Instruct",tokens:2e5,completionTokens:2048,supportsSystemPrompt:!0,supportsStreamingToolUse:!1,components:["PromptGenerator","LLMAssistant","GenAILLM"],tags:["new"]},"us.meta.llama3-2-3b-instruct-v1:0":{llm:"Bedrock",label:"Meta - Llama 3.2 3B Instruct",tokens:2e5,completionTokens:2048,supportsSystemPrompt:!0,supportsStreamingToolUse:!1,components:["PromptGenerator","LLMAssistant","GenAILLM"],tags:["new"]},"meta.llama3-8b-instruct-v1:0":{llm:"Bedrock",label:"Meta - Llama 3 8B Instruct",tokens:8192,completionTokens:2048,supportsSystemPrompt:!0,supportsStreamingToolUse:!1,components:["PromptGenerator","LLMAssistant","GenAILLM"]},"meta.llama3-70b-instruct-v1:0":{llm:"Bedrock",label:"Meta - Llama 3 70B Instruct",tokens:8192,completionTokens:2048,supportsSystemPrompt:!0,supportsStreamingToolUse:!1,components:["PromptGenerator","LLMAssistant","GenAILLM"]},"mistral.mistral-7b-instruct-v0:2":{llm:"Bedrock",label:"Mistral AI - Mistral 7B Instruct",tokens:32e3,completionTokens:8192,supportsSystemPrompt:!1,supportsStreamingToolUse:!1,components:["PromptGenerator","GenAILLM"]},"mistral.mixtral-8x7b-instruct-v0:1":{llm:"Bedrock",label:"Mistral AI - Mixtral 8X7B Instruct",tokens:32e3,completionTokens:4096,supportsSystemPrompt:!1,supportsStreamingToolUse:!1,components:["PromptGenerator","GenAILLM"]},"mistral.mistral-large-2402-v1:0":{llm:"Bedrock",label:"Mistral AI - Mistral Large",tokens:32e3,completionTokens:8192,supportsSystemPrompt:!0,supportsStreamingToolUse:!1,components:["PromptGenerator","LLMAssistant","GenAILLM"]},"mistral.mistral-small-2402-v1:0":{llm:"Bedrock",label:"Mistral AI - Mistral Small",tokens:32e3,completionTokens:8192,supportsSystemPrompt:!0,supportsStreamingToolUse:!1,components:["PromptGenerator","LLMAssistant","GenAILLM"]},"gemini-1.5-flash":{llm:"VertexAI",label:"Gemini 1.5 Flash",supportsSystemPrompt:!0,tokens:1048576,completionTokens:8192,components:["PromptGenerator","LLMAssistant","GenAILLM"]},"gemini-1.5-pro":{llm:"VertexAI",label:"Gemini 1.5 Pro",supportsSystemPrompt:!0,tokens:2097152,completionTokens:8192,components:["PromptGenerator","LLMAssistant","GenAILLM"]},"gemini-1.0-pro":{llm:"VertexAI",label:"Gemini 1.0 Pro",supportsSystemPrompt:!0,tokens:32760,completionTokens:8192,components:["PromptGenerator","LLMAssistant","GenAILLM"]},"claude-3-5-haiku":{llm:"VertexAI",label:"Claude 3.5 Haiku",supportsSystemPrompt:!0,tokens:2e5,completionTokens:8192,tags:["new"],components:["PromptGenerator","LLMAssistant","GenAILLM"]},"claude-3-5-sonnet-v2":{llm:"VertexAI",label:"Claude 3.5 Sonnet",supportsSystemPrompt:!0,tokens:2e5,completionTokens:8192,tags:["v2","new"],components:["PromptGenerator","LLMAssistant","GenAILLM"]},"claude-3-5-sonnet":{llm:"VertexAI",label:"Claude 3.5 Sonnet",supportsSystemPrompt:!0,tokens:2e5,completionTokens:8192,tags:["v1"],components:["PromptGenerator","LLMAssistant","GenAILLM"]},"claude-3-sonnet":{llm:"VertexAI",label:"Claude 3 Sonnet",supportsSystemPrompt:!0,tokens:2e5,completionTokens:4096,components:["PromptGenerator","LLMAssistant","GenAILLM"]},"claude-3-opus":{llm:"VertexAI",label:"Claude 3 Opus",supportsSystemPrompt:!0,tokens:2e5,completionTokens:4096,components:["PromptGenerator","LLMAssistant","GenAILLM"]},"claude-3-haiku":{llm:"VertexAI",label:"Claude 3 Haiku",supportsSystemPrompt:!0,tokens:2e5,completionTokens:4096,components:["PromptGenerator","LLMAssistant","GenAILLM"]},gemma2:{llm:"VertexAI",label:"Gemma 2",supportsSystemPrompt:!0,tokens:8192,completionTokens:4096,components:["PromptGenerator","LLMAssistant","GenAILLM"]},gemma:{llm:"VertexAI",label:"Gemma",supportsSystemPrompt:!0,tokens:8192,completionTokens:4096,components:["PromptGenerator","LLMAssistant","GenAILLM"]},codegemma:{llm:"VertexAI",label:"CodeGemma",supportsSystemPrompt:!0,tokens:8192,completionTokens:4096,components:["PromptGenerator","LLMAssistant","GenAILLM"]},"llama3-405b-instruct-maas":{llm:"VertexAI",label:"Llama 3.1 API Service",supportsSystemPrompt:!0,tokens:4096,completionTokens:4096,components:["PromptGenerator","LLMAssistant","GenAILLM"]},llama3_1:{llm:"VertexAI",label:"Llama 3.1",supportsSystemPrompt:!0,tokens:4096,completionTokens:4096,components:["PromptGenerator","LLMAssistant","GenAILLM"]},"llama-guard":{llm:"VertexAI",label:"Llama Guard",supportsSystemPrompt:!0,tokens:8192,completionTokens:4096,components:["PromptGenerator","LLMAssistant","GenAILLM"]},llama3:{llm:"VertexAI",label:"Llama 3",supportsSystemPrompt:!0,tokens:8192,completionTokens:4096,components:["PromptGenerator","LLMAssistant","GenAILLM"]},llama2:{llm:"VertexAI",label:"Llama 2",value:"llama2",supportsSystemPrompt:!0,tokens:4096,completionTokens:4096,components:["PromptGenerator","LLMAssistant","GenAILLM"]},"mistral-large":{llm:"VertexAI",label:"Mistral Large (2407)",supportsSystemPrompt:!0,tokens:128e3,completionTokens:8192,components:["PromptGenerator","LLMAssistant","GenAILLM"]},"mistral-nemo":{llm:"VertexAI",label:"Mistral Nemo",supportsSystemPrompt:!0,tokens:128e3,completionTokens:8192,components:["PromptGenerator","LLMAssistant","GenAILLM"]},codestral:{llm:"VertexAI",label:"Codestral",supportsSystemPrompt:!0,tokens:32e3,completionTokens:4096,components:["PromptGenerator","LLMAssistant","GenAILLM"]},mixtral:{llm:"VertexAI",label:"Mixtral",supportsSystemPrompt:!0,tokens:32e3,completionTokens:4096,components:["PromptGenerator","LLMAssistant","GenAILLM"]},"chat-bison":{llm:"VertexAI",label:"PaLM 2 Chat Bison",supportsSystemPrompt:!0,tokens:4096,completionTokens:2048,components:["PromptGenerator","LLMAssistant","GenAILLM"]},"text-bison":{llm:"VertexAI",label:"PaLM 2 Text Bison",supportsSystemPrompt:!0,tokens:32768,completionTokens:2048,components:["PromptGenerator","LLMAssistant","GenAILLM"]},phi3:{llm:"VertexAI",label:"Phi-3",supportsSystemPrompt:!0,tokens:128e3,completionTokens:8192,components:["PromptGenerator","LLMAssistant","GenAILLM"]},qwen2:{llm:"VertexAI",label:"Qwen2",supportsSystemPrompt:!0,tokens:131072,completionTokens:8192,components:["PromptGenerator","LLMAssistant","GenAILLM"]},mammut:{llm:"VertexAI",label:"MaMMUT",supportsSystemPrompt:!0,tokens:4096,completionTokens:2048,components:["PromptGenerator","LLMAssistant","GenAILLM"]},"lmsys-vicuna-7b":{llm:"VertexAI",label:"Vicuna",supportsSystemPrompt:!0,tokens:4096,completionTokens:2048,components:["PromptGenerator","LLMAssistant","GenAILLM"]},"bio-gpt":{llm:"VertexAI",label:"BioGPT",supportsSystemPrompt:!1,tokens:4096,completionTokens:4096,components:["PromptGenerator","GenAILLM"]},"microsoft-biomedclip":{llm:"VertexAI",label:"BiomedCLIP",supportsSystemPrompt:!1,tokens:4096,completionTokens:4096,components:["PromptGenerator","GenAILLM"]},mistral:{llm:"VertexAI",label:"Mistral Self-host (7B & Nemo)",supportsSystemPrompt:!1,tokens:4096,completionTokens:4096,components:["PromptGenerator","GenAILLM"]},nllb:{llm:"VertexAI",label:"NLLB",supportsSystemPrompt:!1,tokens:4096,completionTokens:4096,components:["PromptGenerator","GenAILLM"]},"codellama-7b-hf":{llm:"VertexAI",label:"Code Llama",supportsSystemPrompt:!1,tokens:4096,completionTokens:4096,components:["PromptGenerator","GenAILLM"]},"palmyra-med":{llm:"VertexAI",label:"Palmyra Med (Writer)",supportsSystemPrompt:!1,tokens:4096,completionTokens:4096,components:["PromptGenerator","GenAILLM"]},"llama-2-quantized":{llm:"VertexAI",label:"Llama 2 (Quantized)",supportsSystemPrompt:!1,tokens:4096,completionTokens:4096,components:["PromptGenerator","GenAILLM"]},"bert-base-uncased":{llm:"VertexAI",label:"BERT (PEFT)",supportsSystemPrompt:!1,tokens:4096,completionTokens:4096,components:["PromptGenerator","GenAILLM"]},"falcon-instruct-7b-peft":{llm:"VertexAI",label:"Falcon-instruct (PEFT)",supportsSystemPrompt:!1,tokens:4096,completionTokens:4096,components:["PromptGenerator","GenAILLM"]},openllama:{llm:"VertexAI",label:"OpenLLaMA (PEFT)",supportsSystemPrompt:!1,tokens:4096,completionTokens:4096,components:["PromptGenerator","GenAILLM"]},"roberta-large":{llm:"VertexAI",label:"RoBERTa-large (PEFT)",supportsSystemPrompt:!1,tokens:4096,completionTokens:4096,components:["PromptGenerator","GenAILLM"]},"xlm-roberta-large":{llm:"VertexAI",label:"XLM-RoBERTa-large (PEFT)",supportsSystemPrompt:!1,tokens:4096,completionTokens:4096,components:["PromptGenerator","GenAILLM"]},"bart-large-cnn":{llm:"VertexAI",label:"Bart-large-cnn",supportsSystemPrompt:!1,tokens:4096,completionTokens:4096,components:["PromptGenerator","GenAILLM"]},"dolly-v2":{llm:"VertexAI",label:"Dolly-v2",supportsSystemPrompt:!1,tokens:4096,completionTokens:4096,components:["PromptGenerator","GenAILLM"]},imagetext:{llm:"VertexAI",label:"Imagen for Captioning & VQA",supportsSystemPrompt:!1,tokens:4096,completionTokens:4096,components:["PromptGenerator","GenAILLM"]},"codechat-bison":{llm:"VertexAI",label:"Codey for Code Chat",supportsSystemPrompt:!1,tokens:4096,completionTokens:4096,components:["PromptGenerator","GenAILLM"]},"code-bison":{llm:"VertexAI",label:"Codey for Code Generation",supportsSystemPrompt:!1,tokens:4096,completionTokens:4096,components:["PromptGenerator","GenAILLM"]},"code-gecko":{llm:"VertexAI",label:"Codey for Code Completion",supportsSystemPrompt:!1,tokens:4096,completionTokens:4096,components:["PromptGenerator","GenAILLM"]},"text-unicorn":{llm:"VertexAI",label:"PaLM 2 Text Unicorn",supportsSystemPrompt:!1,tokens:4096,completionTokens:4096,components:["PromptGenerator","GenAILLM"]},"textembedding-gecko":{llm:"VertexAI",label:"Embeddings for Text",supportsSystemPrompt:!1,tokens:4096,completionTokens:4096,components:["PromptGenerator","GenAILLM"]},"t5-flan":{llm:"VertexAI",label:"T5-FLAN",supportsSystemPrompt:!1,tokens:4096,completionTokens:4096,components:["PromptGenerator","GenAILLM"]},"t5-1.1":{llm:"VertexAI",label:"T5-1.1",supportsSystemPrompt:!1,tokens:4096,completionTokens:4096,components:["PromptGenerator","GenAILLM"]},"blip2-opt-2.7-b":{llm:"VertexAI",label:"BLIP2",supportsSystemPrompt:!1,tokens:4096,completionTokens:4096,components:["PromptGenerator","GenAILLM"]},"instruct-pix2pix":{llm:"VertexAI",label:"InstructPix2Pix",supportsSystemPrompt:!1,tokens:4096,completionTokens:4096,components:["PromptGenerator","GenAILLM"]},"bert-base":{llm:"VertexAI",label:"BERT",supportsSystemPrompt:!1,tokens:4096,completionTokens:4096,components:["PromptGenerator","GenAILLM"]},"mediapipe-mobile-bert-classifier":{llm:"VertexAI",label:"MobileBERT Classifier (MediaPipe)",supportsSystemPrompt:!1,tokens:4096,completionTokens:4096,components:["PromptGenerator","GenAILLM"]},"mediapipe-average-word-embedding-classifier":{llm:"VertexAI",label:"Average Word Embedding Classifier (MediaPipe)",supportsSystemPrompt:!1,tokens:4096,completionTokens:4096,components:["PromptGenerator","GenAILLM"]},pic2word:{llm:"VertexAI",label:"Pic2Word Composed Image Retrieval",supportsSystemPrompt:!1,tokens:4096,completionTokens:4096,components:["PromptGenerator","GenAILLM"]},"text-translation":{llm:"VertexAI",label:"Text Translation",supportsSystemPrompt:!1,tokens:4096,completionTokens:4096,components:["PromptGenerator","GenAILLM"]},"language-v1-moderate-text":{llm:"VertexAI",label:"Text Moderation",supportsSystemPrompt:!1,tokens:4096,completionTokens:4096,components:["PromptGenerator","GenAILLM"]},"language-v1-analyze-syntax":{llm:"VertexAI",label:"Syntax analysis",supportsSystemPrompt:!1,tokens:4096,completionTokens:4096,components:["PromptGenerator","GenAILLM"]},"language-v1-analyze-entity-sentiment":{llm:"VertexAI",label:"Entity sentiment analysis",supportsSystemPrompt:!1,tokens:4096,completionTokens:4096,components:["PromptGenerator","GenAILLM"]},"language-v1-analyze-sentiment":{llm:"VertexAI",label:"Sentiment analysis",supportsSystemPrompt:!1,tokens:4096,completionTokens:4096,components:["PromptGenerator","GenAILLM"]},"language-v1-classify-text-v1":{llm:"VertexAI",label:"Content classification",supportsSystemPrompt:!1,tokens:4096,completionTokens:4096,components:["PromptGenerator","GenAILLM"]},"pt-test":{llm:"VertexAI",label:"Entity analysis",supportsSystemPrompt:!1,tokens:4096,completionTokens:4096,components:["PromptGenerator","GenAILLM"]}};
4
+ //! ***IMPORTANT***
5
+ //! ***IMPORTANT***
6
+ var ud=Object.defineProperty;const dd=class e extends Sn{requester(t){const s=`ModelsProviderConnector:${t.toString()}`;if(e.localCache.has(s))return e.localCache.get(s,36e5);let n=null,a=null;const o=async()=>{if(!n)try{const e=await this.getModels(t.readRequest);a=await this.getCustomModels(t),n={...e,...a}}catch(e){return null}return n};o();const r={getModels:async()=>await o(),addModels:async e=>await this.addModels(t.readRequest,e),getModelInfo:async(e,s=!1)=>{const n="string"==typeof e?await o():{};return await this.getModelInfo(t.readRequest,n,e,s)},getModelId:async e=>{const s="string"==typeof e?await o():{};return this.getModelId(t.readRequest,s,e)},getProvider:async e=>{const s="string"==typeof e?await o():{};return this.getProvider(t.readRequest,s,e)},isStandardLLM:async e=>{const s="string"==typeof e?await o():{};return!(await this.getModelInfo(t.readRequest,s,e)).isCustomLLM},adjustMaxCompletionTokens:async(e,s,n=!1)=>{const a="string"==typeof e?await o():{},r=await this.getModelInfo(t.readRequest,a,e,n);return Math.min(s||512,r?.completionTokens||r?.tokens||s||512)},getMaxContextTokens:async(e,s=!1)=>{const n="string"==typeof e?await o():{},a=await this.getModelInfo(t.readRequest,n,e,s);return a?.tokens||1024},getMaxCompletionTokens:async(e,s=!1)=>{const n="string"==typeof e?await o():{},a=await this.getModelInfo(t.readRequest,n,e,s);return a?.completionTokens||a?.tokens||512},validateTokensLimit:async({model:e,promptTokens:s,completionTokens:n,hasAPIKey:a})=>{const r="string"==typeof e?await o():{},i=await this.getModelInfo(t.readRequest,r,e,a),l=i?.tokens,c=s+n;if(c>l)throw new Error(a?`This models' maximum content length is ${l} tokens. (This is the sum of your prompt with all variables and the maximum output tokens you've set in Advanced Settings) However, you requested approx ${c} tokens (${s} in the prompt, ${n} in the output). Please reduce the length of either the input prompt or the Maximum output tokens.`:`Input exceeds max tokens limit of ${l}. Please add your API key and select Personal tagged models to unlock full length.`)}};return e.localCache.set(s,r,36e5),r}async getModelInfo(e,t,s,n=!1){if("object"==typeof s&&s.modelId)return s;const a=await this.getModelId(e,t,s),o=t?.[s]?.alias,r=t?.[o],i=t?.[s],l=r&&n?r?.keyOptions:null,c=i?.keyOptions||l;return{...r,...i,...l,...c,modelId:a}}async getModelId(e,t,s){if("object"==typeof s&&s.modelId)return s.modelId;const n=t?.[s]?.modelId||s,a=t?.[s]?.alias;if(a){return t?.[a]?.modelId||a||s}return n}async getProvider(e,t,s){if("object"==typeof s&&s.provider)return s.provider;const n=await this.getModelId(e,t,s);return t?.[n]?.provider||t?.[s]?.provider||t?.[n]?.llm||t?.[s]?.llm}async getCustomModels(e){const t={};try{const s=Ts.getAccountConnector(),n=await s.requester(e).getTeam(),a=await s.team(n).getTeamSetting("custom-llm"),o=JSON.parse(a||"{}");for(const[e,s]of Object.entries(o)){const n=s.settings.foundationModel,a=s.settings.customModel,o=cd[n]?.supportsSystemPrompt||s.settings.supportsSystemPrompt,r=cd[n]||{};let i=null;switch(s.provider){case zn.Bedrock:i=Fn.BedrockVault;break;case zn.VertexAI:i=Fn.VertexAIVault;break;default:i=Fn.Internal}t[s.name]={label:s.name,modelId:a||n,provider:s.provider,features:s.features?.map((e=>{switch(e){case"text-completion":return"text";case"tool-use":return"tools";default:return e}})),tags:Array.isArray(s?.tags)?["Enterprise",...s?.tags]:["Enterprise"],tokens:r?.tokens??1e5,completionTokens:r?.completionTokens??4096,enabled:!0,id:e,name:s.name,alias:n,llm:s.provider,components:r?.components??[],isCustomLLM:!0,supportsSystemPrompt:o,settings:s.settings,credentials:i}}return t}catch(e){return{}}}};var md,pd,hd;md=dd,pd="localCache",hd=new Yt,((e,t,s)=>{t in e?ud(e,t,{enumerable:!0,configurable:!0,writable:!0,value:s}):e[t]=s})(md,pd+"",hd);let gd=dd;var yd=Object.defineProperty,fd=Object.getOwnPropertyDescriptor,bd=(e,t,s,n)=>{for(var a,o=fd(t,s),r=e.length-1;r>=0;r--)(a=e[r])&&(o=a(t,s,o)||o);return o&&yd(t,s,o),o},wd=(e,t,s)=>((e,t,s)=>t in e?yd(e,t,{enumerable:!0,configurable:!0,writable:!0,value:s}):e[t]=s)(e,"symbol"!=typeof t?t+"":t,s);const Id=Wt("SmythModelsProvider"),kd=class e extends gd{constructor(e){super(e),this._settings=e,wd(this,"name","SmythModelsProvider"),wd(this,"models"),this.models=JSON.parse(JSON.stringify(ld)),"string"==typeof this._settings.models?this.initDirWatcher(this._settings.models):"object"==typeof this._settings.models?("merge"===this._settings.mode?this.models={...this.models,...this._settings.models}:this.models=this._settings.models,this.started=!0):this.started=!0}async start(){super.start()}async addModels(e,t){await this.ready();const s=await this.getValidModels(t)||{};Object.keys(s).length>0&&(this.models={...this.models,...s})}async getModels(e){return await this.ready(),this.models}async getResourceACL(e,t){Ts.getAccountConnector();const s=new Ln;return s.addAccess(t.role,t.id,es.Read),s}async reindexModels(t){try{Id.debug(`Reindexing models from directory: ${t}`);const s=await this.scanDirectoryForModels(t);"merge"===this._settings?.mode?this.models={...this.models,...s}:this.models=s,e.localCache.clear(),Id.debug(`Successfully reindexed models. Total models: ${Object.keys(this.models).length}`)}catch(e){Id.error(`Error reindexing models from directory "${t}":`,e)}}async scanDirectoryForModels(e){const t={};try{const s=await _e.readdir(e,{withFileTypes:!0});for(const n of s){const s=f.join(e,n.name);if(n.isDirectory()){const e=await this.scanDirectoryForModels(s);Object.assign(t,e)}else if(n.isFile()&&n.name.endsWith(".json")){const e=await _e.readFile(s,"utf-8"),n=JSON.parse(e),a=await this.getValidModels(n);Object.assign(t,a)}}}catch(t){Id.warn(`Error scanning directory "${e}":`,t)}return t}async getValidModels(e){const t={};try{if(e.modelId)this.isValidSingleModel(e)?(t[e.modelId]=e,Id.debug(`Loaded model: ${e.modelId}`)):Id.warn("Invalid model format",e);else if("object"!=typeof e||Array.isArray(e))Id.warn("Invalid format (not a model or object of models)");else for(const[s,n]of Object.entries(e))try{this.isValidSingleModel(n)?(t[s]=n,Id.debug(`Loaded model: ${s}`)):Id.warn(`Invalid model format for model "${s}"`)}catch(e){Id.warn(`Error processing model "${s}":`,e)}}catch(e){Id.warn("Error loading model:",e)}return t}isValidSingleModel(e){return e&&"object"==typeof e&&"string"==typeof e.modelId&&(void 0===e.provider||"string"==typeof e.provider)}isValidModel(e){return this.isValidSingleModel(e)}async initDirWatcher(e){if(!(await _e.stat(e)).isDirectory())return void Id.warn(`Directory "${e}" does not exist`);const t=at(this.reindexModels.bind(this,e),1e3,{leading:!1,maxWait:5e3});xe.watch(e,{ignored:/(^|[\/\\])\../,persistent:!0,ignoreInitial:!0,awaitWriteFinish:{stabilityThreshold:2e3,pollInterval:100}}).on("add",(e=>{Id.debug(`File ${e} has been added`),t()})).on("change",(e=>{Id.debug(`File ${e} has been changed`),t()})).on("unlink",(e=>{Id.debug(`File ${e} has been removed`),t()})).on("ready",(()=>{Id.debug(`Watcher ready. Performing initial scan of ${e}`),this.reindexModels(e)}))}};bd([Sn.AccessControl],kd.prototype,"addModels"),bd([Sn.AccessControl],kd.prototype,"getModels");let Ad=kd;class vd extends Ls{register(){Ts.register(Xe.ModelsProvider,"SmythModelsProvider",Ad)}}class xd extends Sn{requester(e){return{prepare:async(t,s)=>await this.prepare(e.readRequest,t,s),deploy:async(t,s,n)=>await this.deploy(e.writeRequest,t,s,n),execute:async(t,s)=>await this.execute(e.readRequest,t,s),executeDeployment:async(t,s)=>await this.executeDeployment(e.readRequest,t,s),listDeployments:async()=>await this.listDeployments(e.readRequest),getDeployment:async t=>await this.getDeployment(e.readRequest,t),deleteDeployment:async t=>{await this.deleteDeployment(e.writeRequest,t)}}}}var _d=Object.defineProperty,Td=(e,t,s)=>((e,t,s)=>t in e?_d(e,t,{enumerable:!0,configurable:!0,writable:!0,value:s}):e[t]=s)(e,t+"",s);class Ld extends xd{constructor(){super(...arguments),Td(this,"name","AWSLambdaCode")}async prepare(e,t,s){return{prepared:!0,errors:[],warnings:[]}}async deploy(e,t,s,n){return{id:t,runtime:n.runtime,createdAt:new Date,status:"deploying"}}async execute(e,t,s){return{output:{},executionTime:0,success:!0}}async executeDeployment(e,t,s){return{output:{},executionTime:0,success:!0}}async listDeployments(e){return[]}async getDeployment(e,t){return null}async deleteDeployment(e,t){}async getResourceACL(e,t){const s=new Ln;return s.addAccess(t.role,t.id,es.Read),s}}class Cd extends Ls{register(){Ts.register(Xe.Code,"AWSLambda",Ld)}}const Sd=Wt("Boot");let Pd=!1;function Md(){if(Pd)return void Sd.warn("SRE already booted");Pd=!0,Sd.debug("SRE Boot sequence started");const e={};e.NKV=new xu,e.Account=new hc,e.Vault=new sc,e.ManagedVault=new Ku,e.Cache=new El,e.Storage=new wi,e.ModelsProvider=new vd,e.LLM=new dl,e.AgentData=new Mc,e.CLI=new uu,e.VectorDB=new ru,e.Router=new Ou,e.Log=new Zu,e.Component=new id,e.Code=new Cd,ws.on("SRE:Initialized",(()=>{Sd.debug("SRE Initialized");for(let t in e)e[t].init();ws.emit("SRE:Booted",e),Sd.debug("SRE Boot sequence completed")}))}var Rd=Object.defineProperty,Od=(e,t,s)=>((e,t,s)=>t in e?Rd(e,t,{enumerable:!0,configurable:!0,writable:!0,value:s}):e[t]=s)(e,"symbol"!=typeof t?t+"":t,s);const Dd=Wt("SRE"),qd=class e{constructor(){Od(this,"started",!1),Od(this,"_smythDir"),Od(this,"_readyPromise"),Od(this,"_readyResolve"),Od(this,"defaultConfig",{Vault:{Connector:"JSONFileVault"},Account:{Connector:"DummyAccount"},Cache:{Connector:"RAM"},Storage:{Connector:"LocalStorage"},Code:{Connector:"DummyConnector"},NKV:{Connector:"RAM"},VectorDB:{Connector:"RAMVec"},ModelsProvider:{Connector:"SmythModelsProvider"},AgentData:{Connector:"NullAgentData"},Component:{Connector:"LocalComponent"},ManagedVault:{Connector:"NullManagedVault"},Log:{Connector:"ConsoleLog"},Router:{Connector:"NullRouter"}}),Od(this,"_initializing",!1),Od(this,"_initialized",!1),Od(this,"_stopping",!1),this.started=!0,this._readyPromise=new Promise((e=>{this._readyResolve=e}))}get smythDir(){return this._smythDir}static get Instance(){return e.instance||(e.instance=new e),e.instance}get initializing(){return this._initializing}init(t){if(t&&"{}"!==JSON.stringify(t)||(this._smythDir=function(){const e=f.resolve(process.cwd(),".smyth");if(I.existsSync(e))return e;const t=process.argv[1],s=f.dirname(f.resolve(t));if(t){const e=f.resolve(s,".smyth");if(I.existsSync(e))return e}let n=Gd();if(n){const e=f.resolve(n,".smyth");if(I.existsSync(e))return e}if(n=Gd(s),n){const e=f.resolve(n,".smyth");if(I.existsSync(e))return e}const a=f.resolve(b.homedir(),".smyth");if(I.existsSync(a))return a;return e}(),Dd.info(".smyth directory found in:",this._smythDir)),this._initializing)return void console.warn("You tried to initialize SRE while it is already initializing ... skipping");if(this._initialized)throw new Error("SRE already initialized");this._initializing=!0,ws.on("SRE:Booted",(()=>{this._readyResolve(!0)})),Md();const s=this.autoConf(t);for(let e in s)for(let t of s[e])Ts.init(e,t.Connector,t.Id,t.Settings,t.Default);return this._initialized=!0,ws.emit("SRE:Initialized"),e.Instance}autoConf(e={}){const t=JSON.parse(JSON.stringify(this.defaultConfig)),s=Object.keys({...t,...e}),n={};for(let a of s){n[a]=[];let s=e[a]||t[a];Array.isArray(s)||(s=[s]);let o=!1;for(let e of s)e.Connector?(e.Default&&(o&&Dd.warn(`Entry ${a} has more than one default Connector ... only the first one will be used`),o=!0),n[a].push(e)):Dd.warn(`Missing Connector Name in ${a} entry ... it will be ignored`);!o&&n[a].length>0&&(n[a][0].Default=!0)}return n}ready(){return this._readyPromise}async _stop(){this._stopping||(this._stopping=!0,Dd.info("Sending Shutdown Signals To All Subsystems..."),await Ts._stop(),e.instance=void 0,this.started=!1)}};Od(qd,"instance");let Ed=qd;const Nd=Ed.Instance;let $d=!1;function Gd(e=process.cwd()){let t=e;for(;t!==f.dirname(t);){const e=f.resolve(t,"package.json");if(I.existsSync(e))return t;t=f.dirname(t)}return null}async function jd(e){if(Ed.Instance.started&&!$d&&($d=!0,Dd.info(`Caught ${e} ... Attempting graceful shutdown`),Ed.Instance))try{await Ed.Instance._stop()}catch(e){Dd.error("Shutdown error:",e)}}["SIGINT","SIGTERM"].forEach((e=>{process.on(e,(async()=>{await jd(e),process.exit(0)}))})),process.on("beforeExit",(e=>{jd("beforeExit")})),process.on("exit",(e=>{Dd.info("Goodbye!")}));class Ud{static agent(e){return`smyth:agent:${e}`}}var Bd=Object.defineProperty,Fd=Object.getOwnPropertyDescriptor,Vd=(e,t,s,n)=>{for(var a,o=Fd(t,s),r=e.length-1;r>=0;r--)(a=e[r])&&(o=a(t,s,o)||o);return o&&Bd(t,s,o),o},zd=(e,t,s)=>((e,t,s)=>t in e?Bd(e,t,{enumerable:!0,configurable:!0,writable:!0,value:s}):e[t]=s)(e,t+"",s);Wt("HashicorpVault");class Jd extends Nl{constructor(e){super(e),this._settings=e,zd(this,"name","HashicorpVault")}async get(e,t){return null}async exists(e,t){return!1}async listKeys(e){return[]}async getResourceACL(e,t){const s=Ts.getAccountConnector(),n=await s.getCandidateTeam(t),a=new Ln;return a.addAccess(ts.Team,n,es.Owner).addAccess(ts.Team,n,es.Read).addAccess(ts.Team,n,es.Write),a}}Vd([Sn.AccessControl],Jd.prototype,"get"),Vd([Sn.AccessControl],Jd.prototype,"exists"),Vd([Sn.AccessControl],Jd.prototype,"listKeys");export{Ln as ACL,is as ACLAccessDeniedError,Cr as APICall,$a as APIEndpoint,Kn as APIKeySource,Ua as APIOutput,uc as AWSAccount,Ld as AWSLambdaCode,ps as AccessCandidate,us as AccessRequest,nc as AccountConnector,hc as AccountService,un as Agent,wc as AgentDataConnector,Mc as AgentDataService,Bs as AgentLogger,Ma as AgentPlugin,vn as AgentProcess,hn as AgentRequest,tn as AgentRuntime,on as AgentSSE,In as AgentSettings,Hi as AnthropicConnector,Qa as Async,Za as Await,He as BUILT_IN_MODEL_PREFIX,Nc as BaseEmbedding,sl as BedrockConnector,Bn as BinaryInput,Vn as BuiltinLLMProviders,xc as CLIAgentDataConnector,cu as CLIConnector,uu as CLIService,Je as COMP_NAMES,Mn as CacheConnector,El as CacheService,so as Classifier,xd as CodeConnector,Cd as CodeService,Ca as Component,ed as ComponentConnector,oo as ComponentHost,ti as ComponentInstances,id as ComponentService,bs as Connector,Ts as ConnectorService,Ls as ConnectorServiceProvider,Yu as ConsoleLog,ya as Conversation,Ue as DEFAULT_MAX_TOKENS_FOR_LLM,Qe as DEFAULT_SMYTHOS_LLM_PROVIDERS_SETTINGS,Zt as DEFAULT_TEAM_ID,mo as DataSourceCleaner,lo as DataSourceIndexer,yo as DataSourceLookup,ic as DummyAccount,Qt as DummyConnector,Pe as EMBODIMENT_TYPES,Re as ERR_MSG_INVALID_BINARY,Me as ERR_MSG_INVALID_IMAGE_SOURCE,De as ERR_MSG_MAX_ARRAY_SIZE,Oe as ERR_MSG_MAX_DEPTH,qe as ERR_MSG_MAX_OBJECT_SIZE,Mi as EchoConnector,Bc as EmbeddingsFactory,fn as EmbodimentSettings,Cu as ExpressRouter,fo as FEncDec,bo as FHash,To as FSign,Lo as FSleep,Co as FTimestamp,ko as FileStore,xo as ForEach,Va as ForkedAgent,Do as GPTPlugin,Mo as GenAILLM,Ji as GoogleAIConnector,Zi as GroqConnector,Jd as HashicorpVault,ia as HookService,Go as HuggingFace,Jo as ImageGenerator,jo as ImageSettingsConfig,qn as JSONContent,Dn as JSONContentHelper,pc as JSONFileAccount,Fl as JSONFileVault,Mr as JSONFilter,Ke as JSON_RESPONSE_INSTRUCTION,zr as LLMAssistant,Qs as LLMCache,Ci as LLMConnector,na as LLMContext,Ri as LLMHelper,Zn as LLMInference,dl as LLMService,Li as LLMStream,ns as LevelMap,Lc as LocalAgentDataConnector,Yt as LocalCache,rd as LocalComponentConnector,bi as LocalStorage,Sl as LocalStorageCache,Wu as LogConnector,Vt as LogHelper,Zu as LogService,Wt as Logger,Rr as LogicAND,Nr as LogicAtLeast,jr as LogicAtMost,Or as LogicOR,Dr as LogicXOR,$e as MAX_ARRAY_SIZE,Ee as MAX_DEPTH,je as MAX_FILE_COUNT,Ge as MAX_FILE_SIZE,Ne as MAX_OBJECT_SIZE,ei as MCPClient,Du as ManagedVaultConnector,Ku as ManagedVaultService,Ms as Match,eu as MilvusVectorDB,gd as ModelsProviderConnector,vd as ModelsProviderService,du as NKVConnector,vu as NKVRAM,fu as NKVRedis,xu as NKVService,Pc as NullAgentData,Ju as NullManagedVault,Ru as NullRouter,tc as NullVault,sn as OSResourceMonitor,ji as OpenAIConnector,jc as OpenAIEmbeds,oa as OpenAPIParser,ul as PerplexityConnector,Wc as PineconeVectorDB,Xo as PromptGenerator,ql as RAMCache,ou as RAMVectorDB,Se as REQUEST_CONTENT_TYPES,Ce as REQUEST_METHODS,fl as RedisCache,os as ReverseLevelMap,as as ReverseRoleMap,ss as RoleMap,_u as RouterConnector,Ou as RouterService,Js as RuntimeContext,vl as S3Cache,mi as S3Storage,Be as S3_DAILY_PURGE_LIFECYCLE_TAG,Ve as S3_MONTHLY_PURGE_LIFECYCLE_TAG,Fe as S3_WEEKLY_PURGE_LIFECYCLE_TAG,Nd as SRE,We as SUPPORTED_MIME_TYPES_MAP,Wr as ScrapflyWebScrape,ju as SecretManagerManagedVault,Ql as SecretsManager,Sn as SecureConnector,Gn as SmythFS,Ad as SmythModelsProvider,Ed as SmythRuntime,Ud as SmythURI,Pn as StorageConnector,wi as StorageService,ws as SystemEvents,es as TAccessLevel,rs as TAccessResult,ts as TAccessRole,Xe as TConnectorService,Fn as TLLMCredentials,Wn as TLLMEvent,Jn as TLLMMessageRole,zn as TLLMProvider,ze as TOOL_USE_DEFAULT_MODEL,Rs as TPLProcessor,Xr as TavilyWebSearch,Es as TemplateString,Os as TemplateStringHelper,Nl as VaultConnector,Cs as VaultHelper,sc as VaultService,Dc as VectorDBConnector,ru as VectorDBService,il as VertexAIConnector,Md as boot,vr as buildOAuth1Header,ri as checkAndInstallLifecycleRules,cd as customModels,tr as destroyPublicUrls,qs as escapeJsonField,Ds as escapeString,Ar as extractAdditionalParamsForOAuth1,ni as generateExpiryMetadata,si as generateLifecycleRules,Uo as getCredentials,Ii as getLLMCredentials,ai as getNonExistingRules,_r as handleOAuthHeaders,la as hook,ca as hookAsync,ua as hookAsyncWithContext,fa as inputErrMsg,Qn as isAgent,ld as models,hr as parseArrayBufferResponse,sr as parseData,Yo as parseHeaders,cr as parseProxy,er as parseSmythFsUrl,Zo as parseUrl,Ia as performTypeInference,xr as retrieveOAuthTokens,oi as ttlToExpiryDays,Te as version};
7
+ //# sourceMappingURL=index.js.map