@smythos/sre 1.5.45 → 1.5.50
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.
- package/CHANGELOG +98 -90
- package/LICENSE +18 -18
- package/README.md +135 -135
- package/dist/bundle-analysis-lazy.html +4949 -0
- package/dist/bundle-analysis.html +4949 -0
- package/dist/index.js +6 -6
- package/dist/index.js.map +1 -1
- package/dist/types/Components/MCPClient.class.d.ts +1 -0
- package/dist/types/subsystems/LLMManager/LLM.service/connectors/openai/OpenAIConnector.class.d.ts +1 -6
- package/dist/types/subsystems/LLMManager/LLM.service/connectors/openai/apiInterfaces/constants.d.ts +2 -2
- package/dist/types/utils/package-manager.utils.d.ts +26 -0
- package/package.json +1 -1
- package/src/Components/APICall/APICall.class.ts +156 -156
- package/src/Components/APICall/AccessTokenManager.ts +130 -130
- package/src/Components/APICall/ArrayBufferResponse.helper.ts +58 -58
- package/src/Components/APICall/OAuth.helper.ts +294 -294
- package/src/Components/APICall/mimeTypeCategories.ts +46 -46
- package/src/Components/APICall/parseData.ts +167 -167
- package/src/Components/APICall/parseHeaders.ts +41 -41
- package/src/Components/APICall/parseProxy.ts +68 -68
- package/src/Components/APICall/parseUrl.ts +91 -91
- package/src/Components/APIEndpoint.class.ts +234 -234
- package/src/Components/APIOutput.class.ts +58 -58
- package/src/Components/AgentPlugin.class.ts +102 -102
- package/src/Components/Async.class.ts +155 -155
- package/src/Components/Await.class.ts +90 -90
- package/src/Components/Classifier.class.ts +158 -158
- package/src/Components/Component.class.ts +132 -132
- package/src/Components/ComponentHost.class.ts +38 -38
- package/src/Components/DataSourceCleaner.class.ts +92 -92
- package/src/Components/DataSourceIndexer.class.ts +181 -181
- package/src/Components/DataSourceLookup.class.ts +161 -161
- package/src/Components/ECMASandbox.class.ts +71 -71
- package/src/Components/FEncDec.class.ts +29 -29
- package/src/Components/FHash.class.ts +33 -33
- package/src/Components/FSign.class.ts +80 -80
- package/src/Components/FSleep.class.ts +25 -25
- package/src/Components/FTimestamp.class.ts +25 -25
- package/src/Components/FileStore.class.ts +78 -78
- package/src/Components/ForEach.class.ts +97 -97
- package/src/Components/GPTPlugin.class.ts +70 -70
- package/src/Components/GenAILLM.class.ts +586 -586
- package/src/Components/HuggingFace.class.ts +314 -314
- package/src/Components/Image/imageSettings.config.ts +70 -70
- package/src/Components/ImageGenerator.class.ts +502 -502
- package/src/Components/JSONFilter.class.ts +54 -54
- package/src/Components/LLMAssistant.class.ts +213 -213
- package/src/Components/LogicAND.class.ts +28 -28
- package/src/Components/LogicAtLeast.class.ts +85 -85
- package/src/Components/LogicAtMost.class.ts +86 -86
- package/src/Components/LogicOR.class.ts +29 -29
- package/src/Components/LogicXOR.class.ts +34 -34
- package/src/Components/MCPClient.class.ts +138 -112
- package/src/Components/MemoryDeleteKeyVal.class.ts +70 -70
- package/src/Components/MemoryReadKeyVal.class.ts +66 -66
- package/src/Components/MemoryWriteKeyVal.class.ts +62 -62
- package/src/Components/MemoryWriteObject.class.ts +97 -97
- package/src/Components/MultimodalLLM.class.ts +128 -128
- package/src/Components/OpenAPI.class.ts +72 -72
- package/src/Components/PromptGenerator.class.ts +122 -122
- package/src/Components/ScrapflyWebScrape.class.ts +159 -159
- package/src/Components/ServerlessCode.class.ts +123 -123
- package/src/Components/TavilyWebSearch.class.ts +98 -98
- package/src/Components/VisionLLM.class.ts +104 -104
- package/src/Components/ZapierAction.class.ts +127 -127
- package/src/Components/index.ts +97 -97
- package/src/Core/AgentProcess.helper.ts +240 -240
- package/src/Core/Connector.class.ts +123 -123
- package/src/Core/ConnectorsService.ts +197 -197
- package/src/Core/DummyConnector.ts +49 -49
- package/src/Core/HookService.ts +105 -105
- package/src/Core/SmythRuntime.class.ts +235 -235
- package/src/Core/SystemEvents.ts +16 -16
- package/src/Core/boot.ts +56 -56
- package/src/config.ts +15 -15
- package/src/constants.ts +126 -126
- package/src/data/hugging-face.params.json +579 -579
- package/src/helpers/AWSLambdaCode.helper.ts +587 -587
- package/src/helpers/BinaryInput.helper.ts +331 -331
- package/src/helpers/Conversation.helper.ts +1119 -1119
- package/src/helpers/ECMASandbox.helper.ts +54 -54
- package/src/helpers/JsonContent.helper.ts +97 -97
- package/src/helpers/LocalCache.helper.ts +97 -97
- package/src/helpers/Log.helper.ts +274 -274
- package/src/helpers/OpenApiParser.helper.ts +150 -150
- package/src/helpers/S3Cache.helper.ts +147 -147
- package/src/helpers/SmythURI.helper.ts +5 -5
- package/src/helpers/Sysconfig.helper.ts +77 -77
- package/src/helpers/TemplateString.helper.ts +243 -243
- package/src/helpers/TypeChecker.helper.ts +329 -329
- package/src/index.ts +3 -3
- package/src/index.ts.bak +3 -3
- package/src/subsystems/AgentManager/Agent.class.ts +1114 -1114
- package/src/subsystems/AgentManager/Agent.helper.ts +3 -3
- package/src/subsystems/AgentManager/AgentData.service/AgentDataConnector.ts +230 -230
- package/src/subsystems/AgentManager/AgentData.service/connectors/CLIAgentDataConnector.class.ts +66 -66
- package/src/subsystems/AgentManager/AgentData.service/connectors/LocalAgentDataConnector.class.ts +142 -142
- package/src/subsystems/AgentManager/AgentData.service/connectors/NullAgentData.class.ts +39 -39
- package/src/subsystems/AgentManager/AgentData.service/index.ts +18 -18
- package/src/subsystems/AgentManager/AgentLogger.class.ts +297 -297
- package/src/subsystems/AgentManager/AgentRequest.class.ts +51 -51
- package/src/subsystems/AgentManager/AgentRuntime.class.ts +559 -559
- package/src/subsystems/AgentManager/AgentSSE.class.ts +101 -101
- package/src/subsystems/AgentManager/AgentSettings.class.ts +52 -52
- package/src/subsystems/AgentManager/Component.service/ComponentConnector.ts +32 -32
- package/src/subsystems/AgentManager/Component.service/connectors/LocalComponentConnector.class.ts +60 -60
- package/src/subsystems/AgentManager/Component.service/index.ts +11 -11
- package/src/subsystems/AgentManager/EmbodimentSettings.class.ts +47 -47
- package/src/subsystems/AgentManager/ForkedAgent.class.ts +154 -154
- package/src/subsystems/AgentManager/OSResourceMonitor.ts +77 -77
- package/src/subsystems/ComputeManager/Code.service/CodeConnector.ts +98 -98
- package/src/subsystems/ComputeManager/Code.service/connectors/AWSLambdaCode.class.ts +172 -172
- package/src/subsystems/ComputeManager/Code.service/connectors/ECMASandbox.class.ts +131 -131
- package/src/subsystems/ComputeManager/Code.service/index.ts +13 -13
- package/src/subsystems/IO/CLI.service/CLIConnector.ts +47 -47
- package/src/subsystems/IO/CLI.service/index.ts +9 -9
- package/src/subsystems/IO/Log.service/LogConnector.ts +32 -32
- package/src/subsystems/IO/Log.service/connectors/ConsoleLog.class.ts +28 -28
- package/src/subsystems/IO/Log.service/index.ts +13 -13
- package/src/subsystems/IO/NKV.service/NKVConnector.ts +43 -43
- package/src/subsystems/IO/NKV.service/connectors/NKVLocalStorage.class.ts +234 -234
- package/src/subsystems/IO/NKV.service/connectors/NKVRAM.class.ts +204 -204
- package/src/subsystems/IO/NKV.service/connectors/NKVRedis.class.ts +182 -182
- package/src/subsystems/IO/NKV.service/index.ts +14 -14
- package/src/subsystems/IO/Router.service/RouterConnector.ts +21 -21
- package/src/subsystems/IO/Router.service/connectors/ExpressRouter.class.ts +48 -48
- package/src/subsystems/IO/Router.service/connectors/NullRouter.class.ts +40 -40
- package/src/subsystems/IO/Router.service/index.ts +11 -11
- package/src/subsystems/IO/Storage.service/SmythFS.class.ts +489 -489
- package/src/subsystems/IO/Storage.service/StorageConnector.ts +66 -66
- package/src/subsystems/IO/Storage.service/connectors/LocalStorage.class.ts +327 -327
- package/src/subsystems/IO/Storage.service/connectors/S3Storage.class.ts +482 -482
- package/src/subsystems/IO/Storage.service/index.ts +13 -13
- package/src/subsystems/IO/VectorDB.service/VectorDBConnector.ts +108 -108
- package/src/subsystems/IO/VectorDB.service/connectors/MilvusVectorDB.class.ts +454 -454
- package/src/subsystems/IO/VectorDB.service/connectors/PineconeVectorDB.class.ts +384 -384
- package/src/subsystems/IO/VectorDB.service/connectors/RAMVecrtorDB.class.ts +421 -421
- package/src/subsystems/IO/VectorDB.service/embed/BaseEmbedding.ts +107 -107
- package/src/subsystems/IO/VectorDB.service/embed/OpenAIEmbedding.ts +109 -109
- package/src/subsystems/IO/VectorDB.service/embed/index.ts +21 -21
- package/src/subsystems/IO/VectorDB.service/index.ts +14 -14
- package/src/subsystems/LLMManager/LLM.helper.ts +251 -251
- package/src/subsystems/LLMManager/LLM.inference.ts +339 -339
- package/src/subsystems/LLMManager/LLM.service/LLMConnector.ts +489 -489
- package/src/subsystems/LLMManager/LLM.service/LLMCredentials.helper.ts +171 -171
- package/src/subsystems/LLMManager/LLM.service/connectors/Anthropic.class.ts +659 -659
- package/src/subsystems/LLMManager/LLM.service/connectors/Bedrock.class.ts +400 -400
- package/src/subsystems/LLMManager/LLM.service/connectors/Echo.class.ts +77 -77
- package/src/subsystems/LLMManager/LLM.service/connectors/GoogleAI.class.ts +757 -757
- package/src/subsystems/LLMManager/LLM.service/connectors/Groq.class.ts +304 -304
- package/src/subsystems/LLMManager/LLM.service/connectors/Perplexity.class.ts +250 -250
- package/src/subsystems/LLMManager/LLM.service/connectors/VertexAI.class.ts +423 -423
- package/src/subsystems/LLMManager/LLM.service/connectors/openai/OpenAIConnector.class.ts +488 -488
- package/src/subsystems/LLMManager/LLM.service/connectors/openai/apiInterfaces/ChatCompletionsApiInterface.ts +524 -528
- package/src/subsystems/LLMManager/LLM.service/connectors/openai/apiInterfaces/OpenAIApiInterface.ts +100 -100
- package/src/subsystems/LLMManager/LLM.service/connectors/openai/apiInterfaces/OpenAIApiInterfaceFactory.ts +81 -81
- package/src/subsystems/LLMManager/LLM.service/connectors/openai/apiInterfaces/ResponsesApiInterface.ts +1145 -1168
- package/src/subsystems/LLMManager/LLM.service/connectors/openai/apiInterfaces/constants.ts +13 -13
- package/src/subsystems/LLMManager/LLM.service/connectors/openai/apiInterfaces/index.ts +4 -4
- package/src/subsystems/LLMManager/LLM.service/connectors/openai/apiInterfaces/utils.ts +11 -11
- package/src/subsystems/LLMManager/LLM.service/connectors/openai/types.ts +32 -32
- package/src/subsystems/LLMManager/LLM.service/connectors/xAI.class.ts +471 -471
- package/src/subsystems/LLMManager/LLM.service/index.ts +44 -44
- package/src/subsystems/LLMManager/ModelsProvider.service/ModelsProviderConnector.ts +300 -300
- package/src/subsystems/LLMManager/ModelsProvider.service/connectors/JSONModelsProvider.class.ts +252 -252
- package/src/subsystems/LLMManager/ModelsProvider.service/index.ts +11 -11
- package/src/subsystems/LLMManager/custom-models.ts +854 -854
- package/src/subsystems/LLMManager/models.ts +2540 -2540
- package/src/subsystems/LLMManager/paramMappings.ts +69 -69
- package/src/subsystems/MemoryManager/Cache.service/CacheConnector.ts +86 -86
- package/src/subsystems/MemoryManager/Cache.service/connectors/LocalStorageCache.class.ts +297 -297
- package/src/subsystems/MemoryManager/Cache.service/connectors/RAMCache.class.ts +201 -201
- package/src/subsystems/MemoryManager/Cache.service/connectors/RedisCache.class.ts +252 -252
- package/src/subsystems/MemoryManager/Cache.service/connectors/S3Cache.class.ts +373 -373
- package/src/subsystems/MemoryManager/Cache.service/index.ts +15 -15
- package/src/subsystems/MemoryManager/LLMCache.ts +72 -72
- package/src/subsystems/MemoryManager/LLMContext.ts +124 -124
- package/src/subsystems/MemoryManager/LLMMemory.service/LLMMemoryConnector.ts +26 -26
- package/src/subsystems/MemoryManager/RuntimeContext.ts +266 -266
- package/src/subsystems/Security/AccessControl/ACL.class.ts +208 -208
- package/src/subsystems/Security/AccessControl/AccessCandidate.class.ts +82 -82
- package/src/subsystems/Security/AccessControl/AccessRequest.class.ts +52 -52
- package/src/subsystems/Security/Account.service/AccountConnector.ts +44 -44
- package/src/subsystems/Security/Account.service/connectors/AWSAccount.class.ts +76 -76
- package/src/subsystems/Security/Account.service/connectors/DummyAccount.class.ts +130 -130
- package/src/subsystems/Security/Account.service/connectors/JSONFileAccount.class.ts +159 -159
- package/src/subsystems/Security/Account.service/index.ts +14 -14
- package/src/subsystems/Security/Credentials.helper.ts +62 -62
- package/src/subsystems/Security/ManagedVault.service/ManagedVaultConnector.ts +38 -38
- package/src/subsystems/Security/ManagedVault.service/connectors/NullManagedVault.class.ts +53 -53
- package/src/subsystems/Security/ManagedVault.service/connectors/SecretManagerManagedVault.ts +154 -154
- package/src/subsystems/Security/ManagedVault.service/index.ts +12 -12
- package/src/subsystems/Security/SecureConnector.class.ts +110 -110
- package/src/subsystems/Security/Vault.service/Vault.helper.ts +30 -30
- package/src/subsystems/Security/Vault.service/VaultConnector.ts +29 -29
- package/src/subsystems/Security/Vault.service/connectors/HashicorpVault.class.ts +46 -46
- package/src/subsystems/Security/Vault.service/connectors/JSONFileVault.class.ts +221 -221
- package/src/subsystems/Security/Vault.service/connectors/NullVault.class.ts +54 -54
- package/src/subsystems/Security/Vault.service/connectors/SecretsManager.class.ts +140 -140
- package/src/subsystems/Security/Vault.service/index.ts +12 -12
- package/src/types/ACL.types.ts +104 -104
- package/src/types/AWS.types.ts +10 -10
- package/src/types/Agent.types.ts +61 -61
- package/src/types/AgentLogger.types.ts +17 -17
- package/src/types/Cache.types.ts +1 -1
- package/src/types/Common.types.ts +2 -2
- package/src/types/LLM.types.ts +496 -496
- package/src/types/Redis.types.ts +8 -8
- package/src/types/SRE.types.ts +64 -64
- package/src/types/Security.types.ts +14 -14
- package/src/types/Storage.types.ts +5 -5
- package/src/types/VectorDB.types.ts +86 -86
- package/src/utils/base64.utils.ts +275 -275
- package/src/utils/cli.utils.ts +68 -68
- package/src/utils/data.utils.ts +322 -322
- package/src/utils/date-time.utils.ts +22 -22
- package/src/utils/general.utils.ts +238 -238
- package/src/utils/index.ts +12 -12
- package/src/utils/lazy-client.ts +261 -261
- package/src/utils/numbers.utils.ts +13 -13
- package/src/utils/oauth.utils.ts +35 -35
- package/src/utils/string.utils.ts +414 -414
- package/src/utils/url.utils.ts +19 -19
- package/src/utils/validation.utils.ts +74 -74
- package/dist/types/subsystems/LLMManager/ModelsProvider.service/connectors/SmythModelsProvider.class.d.ts +0 -39
|
@@ -1,127 +1,127 @@
|
|
|
1
|
-
import axios from 'axios';
|
|
2
|
-
import { Component } from './Component.class';
|
|
3
|
-
import { IAgent as Agent } from '@sre/types/Agent.types';
|
|
4
|
-
import Joi from 'joi';
|
|
5
|
-
import { TemplateStringHelper } from '@sre/helpers/TemplateString.helper';
|
|
6
|
-
import { isSmythFileObject } from '../utils';
|
|
7
|
-
import { SmythFS } from '@sre/IO/Storage.service/SmythFS.class';
|
|
8
|
-
import { AccessCandidate } from '@sre/Security/AccessControl/AccessCandidate.class';
|
|
9
|
-
|
|
10
|
-
function validateAndParseJson(value, helpers) {
|
|
11
|
-
let parsedJson: any = null;
|
|
12
|
-
|
|
13
|
-
// Try parsing the JSON string
|
|
14
|
-
try {
|
|
15
|
-
parsedJson = JSON.parse(value);
|
|
16
|
-
} catch (error) {
|
|
17
|
-
// If parsing fails, return an error
|
|
18
|
-
return helpers.error('string.invalidJson', { value });
|
|
19
|
-
}
|
|
20
|
-
|
|
21
|
-
// Check if the result is an object
|
|
22
|
-
if (typeof parsedJson !== 'object' || parsedJson === null) {
|
|
23
|
-
return helpers.error('string.notJsonObject', { value });
|
|
24
|
-
}
|
|
25
|
-
|
|
26
|
-
// Check for empty keys
|
|
27
|
-
for (const key in parsedJson) {
|
|
28
|
-
if (key.trim() === '') {
|
|
29
|
-
return helpers.error('object.emptyKey', { value });
|
|
30
|
-
}
|
|
31
|
-
}
|
|
32
|
-
|
|
33
|
-
// Return the parsed JSON if all validations pass
|
|
34
|
-
return parsedJson;
|
|
35
|
-
}
|
|
36
|
-
|
|
37
|
-
export class ZapierAction extends Component {
|
|
38
|
-
protected configSchema = Joi.object({
|
|
39
|
-
actionName: Joi.string().max(100).required(),
|
|
40
|
-
actionId: Joi.string().max(100).required(),
|
|
41
|
-
logoUrl: Joi.string().max(500).allow(''),
|
|
42
|
-
apiKey: Joi.string().max(350).required(),
|
|
43
|
-
params: Joi.string().custom(validateAndParseJson, 'custom JSON validation').allow(''),
|
|
44
|
-
});
|
|
45
|
-
constructor() {
|
|
46
|
-
super();
|
|
47
|
-
}
|
|
48
|
-
|
|
49
|
-
init() {}
|
|
50
|
-
|
|
51
|
-
async process(input, config, agent: Agent) {
|
|
52
|
-
await super.process(input, config, agent);
|
|
53
|
-
|
|
54
|
-
const logger = this.createComponentLogger(agent, config);
|
|
55
|
-
|
|
56
|
-
logger.debug(`=== Zapier Action Log ===`);
|
|
57
|
-
|
|
58
|
-
const teamId = agent?.teamId;
|
|
59
|
-
// const apiKey = await parseKey(config?.data?.apiKey, teamId);
|
|
60
|
-
const apiKey = await TemplateStringHelper.create(config?.data?.apiKey).parseTeamKeysAsync(teamId).asyncResult;
|
|
61
|
-
|
|
62
|
-
if (!apiKey) {
|
|
63
|
-
return { _error: 'You are not authorized to run the Zapier Action!', _debug: logger.output };
|
|
64
|
-
}
|
|
65
|
-
|
|
66
|
-
const actionId = config?.data?.actionId;
|
|
67
|
-
|
|
68
|
-
if (!actionId) {
|
|
69
|
-
return { _error: 'Zapier Action ID is required!', _debug: logger.output };
|
|
70
|
-
}
|
|
71
|
-
|
|
72
|
-
if (!Object.keys(input || {})?.length) {
|
|
73
|
-
return { _error: 'Give a plain english description of exact action you want to do!', _debug: logger.output };
|
|
74
|
-
}
|
|
75
|
-
|
|
76
|
-
let _input = {};
|
|
77
|
-
let _pubUrlsCreated: string[] = [];
|
|
78
|
-
|
|
79
|
-
for (const [key, value] of Object.entries(input)) {
|
|
80
|
-
if (isSmythFileObject(value)) {
|
|
81
|
-
// _input[key] = (value as SmythFileObject)?.url;
|
|
82
|
-
const pubUrl = await SmythFS.Instance.genTempUrl((value as any)?.url, AccessCandidate.agent(agent.id));
|
|
83
|
-
_pubUrlsCreated.push(pubUrl);
|
|
84
|
-
_input[key] = pubUrl;
|
|
85
|
-
} else {
|
|
86
|
-
_input[key] = value;
|
|
87
|
-
}
|
|
88
|
-
}
|
|
89
|
-
|
|
90
|
-
try {
|
|
91
|
-
const url = `https://actions.zapier.com/api/v1/exposed/${actionId}/execute/?api_key=${apiKey}`;
|
|
92
|
-
const res = await axios.post(url, { ..._input });
|
|
93
|
-
|
|
94
|
-
logger.debug(`Output:\n`, res?.data);
|
|
95
|
-
|
|
96
|
-
Promise.all(_pubUrlsCreated.map((url) => SmythFS.Instance.destroyTempUrl(url)))
|
|
97
|
-
.then(() => {
|
|
98
|
-
console.log('Cleaned up all temp urls');
|
|
99
|
-
})
|
|
100
|
-
.catch((e) => {
|
|
101
|
-
console.log('Error cleaning up temp urls', e);
|
|
102
|
-
});
|
|
103
|
-
|
|
104
|
-
return { Output: res?.data, _debug: logger.output };
|
|
105
|
-
} catch (error: any) {
|
|
106
|
-
console.log('Error Running Zapier Action: \n', error);
|
|
107
|
-
|
|
108
|
-
// Sometimes 'error?.response?.data' is an empty Object then we need to use 'error?.message'
|
|
109
|
-
let message = Object.keys(error?.response?.data || {})?.length ? error?.response?.data : error?.message;
|
|
110
|
-
|
|
111
|
-
if (typeof message === 'object') message = JSON.stringify(message);
|
|
112
|
-
|
|
113
|
-
logger.error(`Error running Zapier Action!`, message);
|
|
114
|
-
logger.error('Error Inputs ', input);
|
|
115
|
-
|
|
116
|
-
Promise.all(_pubUrlsCreated.map((url) => SmythFS.Instance.destroyTempUrl(url)))
|
|
117
|
-
.then(() => {
|
|
118
|
-
console.log('Cleaned up all temp urls');
|
|
119
|
-
})
|
|
120
|
-
.catch((e) => {
|
|
121
|
-
console.log('Error cleaning up temp urls', e);
|
|
122
|
-
});
|
|
123
|
-
|
|
124
|
-
return { _error: `Zapier Error: ${message}`, _debug: logger.output };
|
|
125
|
-
}
|
|
126
|
-
}
|
|
127
|
-
}
|
|
1
|
+
import axios from 'axios';
|
|
2
|
+
import { Component } from './Component.class';
|
|
3
|
+
import { IAgent as Agent } from '@sre/types/Agent.types';
|
|
4
|
+
import Joi from 'joi';
|
|
5
|
+
import { TemplateStringHelper } from '@sre/helpers/TemplateString.helper';
|
|
6
|
+
import { isSmythFileObject } from '../utils';
|
|
7
|
+
import { SmythFS } from '@sre/IO/Storage.service/SmythFS.class';
|
|
8
|
+
import { AccessCandidate } from '@sre/Security/AccessControl/AccessCandidate.class';
|
|
9
|
+
|
|
10
|
+
function validateAndParseJson(value, helpers) {
|
|
11
|
+
let parsedJson: any = null;
|
|
12
|
+
|
|
13
|
+
// Try parsing the JSON string
|
|
14
|
+
try {
|
|
15
|
+
parsedJson = JSON.parse(value);
|
|
16
|
+
} catch (error) {
|
|
17
|
+
// If parsing fails, return an error
|
|
18
|
+
return helpers.error('string.invalidJson', { value });
|
|
19
|
+
}
|
|
20
|
+
|
|
21
|
+
// Check if the result is an object
|
|
22
|
+
if (typeof parsedJson !== 'object' || parsedJson === null) {
|
|
23
|
+
return helpers.error('string.notJsonObject', { value });
|
|
24
|
+
}
|
|
25
|
+
|
|
26
|
+
// Check for empty keys
|
|
27
|
+
for (const key in parsedJson) {
|
|
28
|
+
if (key.trim() === '') {
|
|
29
|
+
return helpers.error('object.emptyKey', { value });
|
|
30
|
+
}
|
|
31
|
+
}
|
|
32
|
+
|
|
33
|
+
// Return the parsed JSON if all validations pass
|
|
34
|
+
return parsedJson;
|
|
35
|
+
}
|
|
36
|
+
|
|
37
|
+
export class ZapierAction extends Component {
|
|
38
|
+
protected configSchema = Joi.object({
|
|
39
|
+
actionName: Joi.string().max(100).required(),
|
|
40
|
+
actionId: Joi.string().max(100).required(),
|
|
41
|
+
logoUrl: Joi.string().max(500).allow(''),
|
|
42
|
+
apiKey: Joi.string().max(350).required(),
|
|
43
|
+
params: Joi.string().custom(validateAndParseJson, 'custom JSON validation').allow(''),
|
|
44
|
+
});
|
|
45
|
+
constructor() {
|
|
46
|
+
super();
|
|
47
|
+
}
|
|
48
|
+
|
|
49
|
+
init() {}
|
|
50
|
+
|
|
51
|
+
async process(input, config, agent: Agent) {
|
|
52
|
+
await super.process(input, config, agent);
|
|
53
|
+
|
|
54
|
+
const logger = this.createComponentLogger(agent, config);
|
|
55
|
+
|
|
56
|
+
logger.debug(`=== Zapier Action Log ===`);
|
|
57
|
+
|
|
58
|
+
const teamId = agent?.teamId;
|
|
59
|
+
// const apiKey = await parseKey(config?.data?.apiKey, teamId);
|
|
60
|
+
const apiKey = await TemplateStringHelper.create(config?.data?.apiKey).parseTeamKeysAsync(teamId).asyncResult;
|
|
61
|
+
|
|
62
|
+
if (!apiKey) {
|
|
63
|
+
return { _error: 'You are not authorized to run the Zapier Action!', _debug: logger.output };
|
|
64
|
+
}
|
|
65
|
+
|
|
66
|
+
const actionId = config?.data?.actionId;
|
|
67
|
+
|
|
68
|
+
if (!actionId) {
|
|
69
|
+
return { _error: 'Zapier Action ID is required!', _debug: logger.output };
|
|
70
|
+
}
|
|
71
|
+
|
|
72
|
+
if (!Object.keys(input || {})?.length) {
|
|
73
|
+
return { _error: 'Give a plain english description of exact action you want to do!', _debug: logger.output };
|
|
74
|
+
}
|
|
75
|
+
|
|
76
|
+
let _input = {};
|
|
77
|
+
let _pubUrlsCreated: string[] = [];
|
|
78
|
+
|
|
79
|
+
for (const [key, value] of Object.entries(input)) {
|
|
80
|
+
if (isSmythFileObject(value)) {
|
|
81
|
+
// _input[key] = (value as SmythFileObject)?.url;
|
|
82
|
+
const pubUrl = await SmythFS.Instance.genTempUrl((value as any)?.url, AccessCandidate.agent(agent.id));
|
|
83
|
+
_pubUrlsCreated.push(pubUrl);
|
|
84
|
+
_input[key] = pubUrl;
|
|
85
|
+
} else {
|
|
86
|
+
_input[key] = value;
|
|
87
|
+
}
|
|
88
|
+
}
|
|
89
|
+
|
|
90
|
+
try {
|
|
91
|
+
const url = `https://actions.zapier.com/api/v1/exposed/${actionId}/execute/?api_key=${apiKey}`;
|
|
92
|
+
const res = await axios.post(url, { ..._input });
|
|
93
|
+
|
|
94
|
+
logger.debug(`Output:\n`, res?.data);
|
|
95
|
+
|
|
96
|
+
Promise.all(_pubUrlsCreated.map((url) => SmythFS.Instance.destroyTempUrl(url)))
|
|
97
|
+
.then(() => {
|
|
98
|
+
console.log('Cleaned up all temp urls');
|
|
99
|
+
})
|
|
100
|
+
.catch((e) => {
|
|
101
|
+
console.log('Error cleaning up temp urls', e);
|
|
102
|
+
});
|
|
103
|
+
|
|
104
|
+
return { Output: res?.data, _debug: logger.output };
|
|
105
|
+
} catch (error: any) {
|
|
106
|
+
console.log('Error Running Zapier Action: \n', error);
|
|
107
|
+
|
|
108
|
+
// Sometimes 'error?.response?.data' is an empty Object then we need to use 'error?.message'
|
|
109
|
+
let message = Object.keys(error?.response?.data || {})?.length ? error?.response?.data : error?.message;
|
|
110
|
+
|
|
111
|
+
if (typeof message === 'object') message = JSON.stringify(message);
|
|
112
|
+
|
|
113
|
+
logger.error(`Error running Zapier Action!`, message);
|
|
114
|
+
logger.error('Error Inputs ', input);
|
|
115
|
+
|
|
116
|
+
Promise.all(_pubUrlsCreated.map((url) => SmythFS.Instance.destroyTempUrl(url)))
|
|
117
|
+
.then(() => {
|
|
118
|
+
console.log('Cleaned up all temp urls');
|
|
119
|
+
})
|
|
120
|
+
.catch((e) => {
|
|
121
|
+
console.log('Error cleaning up temp urls', e);
|
|
122
|
+
});
|
|
123
|
+
|
|
124
|
+
return { _error: `Zapier Error: ${message}`, _debug: logger.output };
|
|
125
|
+
}
|
|
126
|
+
}
|
|
127
|
+
}
|
package/src/Components/index.ts
CHANGED
|
@@ -1,97 +1,97 @@
|
|
|
1
|
-
import { Component } from './Component.class';
|
|
2
|
-
import { APIEndpoint } from './APIEndpoint.class';
|
|
3
|
-
import { APIOutput } from './APIOutput.class';
|
|
4
|
-
import { PromptGenerator } from './PromptGenerator.class';
|
|
5
|
-
import { APICall } from './APICall/APICall.class';
|
|
6
|
-
import { VisionLLM } from './VisionLLM.class';
|
|
7
|
-
import { FSleep } from './FSleep.class';
|
|
8
|
-
import { FHash } from './FHash.class';
|
|
9
|
-
import { FEncDec } from './FEncDec.class';
|
|
10
|
-
import { FTimestamp } from './FTimestamp.class';
|
|
11
|
-
import { DataSourceLookup } from './DataSourceLookup.class';
|
|
12
|
-
import { DataSourceIndexer } from './DataSourceIndexer.class';
|
|
13
|
-
import { DataSourceCleaner } from './DataSourceCleaner.class';
|
|
14
|
-
import { JSONFilter } from './JSONFilter.class';
|
|
15
|
-
import { LogicAND } from './LogicAND.class';
|
|
16
|
-
import { LogicOR } from './LogicOR.class';
|
|
17
|
-
import { LogicXOR } from './LogicXOR.class';
|
|
18
|
-
import { LogicAtLeast } from './LogicAtLeast.class';
|
|
19
|
-
import { LogicAtMost } from './LogicAtMost.class';
|
|
20
|
-
import { AgentPlugin } from './AgentPlugin.class';
|
|
21
|
-
import { LLMAssistant } from './LLMAssistant.class';
|
|
22
|
-
import { Async } from './Async.class';
|
|
23
|
-
import { Await } from './Await.class';
|
|
24
|
-
import { ForEach } from './ForEach.class';
|
|
25
|
-
import { HuggingFace } from './HuggingFace.class';
|
|
26
|
-
import { ZapierAction } from './ZapierAction.class';
|
|
27
|
-
import { GPTPlugin } from './GPTPlugin.class';
|
|
28
|
-
import { Classifier } from './Classifier.class';
|
|
29
|
-
import { FSign } from './FSign.class';
|
|
30
|
-
import { MultimodalLLM } from './MultimodalLLM.class';
|
|
31
|
-
import { GenAILLM } from './GenAILLM.class';
|
|
32
|
-
import { FileStore } from './FileStore.class';
|
|
33
|
-
import { ScrapflyWebScrape } from './ScrapflyWebScrape.class';
|
|
34
|
-
import { TavilyWebSearch } from './TavilyWebSearch.class';
|
|
35
|
-
import { ComponentHost } from './ComponentHost.class';
|
|
36
|
-
import { ServerlessCode } from './ServerlessCode.class';
|
|
37
|
-
import { ImageGenerator } from './ImageGenerator.class'; // Legacy
|
|
38
|
-
import { MCPClient } from './MCPClient.class';
|
|
39
|
-
import { OpenAPI } from './OpenAPI.class';
|
|
40
|
-
import { ECMASandbox } from './ECMASandbox.class';
|
|
41
|
-
import { MemoryWriteKeyVal } from './MemoryWriteKeyVal.class';
|
|
42
|
-
import { MemoryReadKeyVal } from './MemoryReadKeyVal.class';
|
|
43
|
-
import { MemoryDeleteKeyVal } from './MemoryDeleteKeyVal.class';
|
|
44
|
-
import { MemoryWriteObject } from './MemoryWriteObject.class';
|
|
45
|
-
|
|
46
|
-
const components = {
|
|
47
|
-
Component: new Component(),
|
|
48
|
-
Note: new Component(), //this is a fake component
|
|
49
|
-
APIEndpoint: new APIEndpoint(),
|
|
50
|
-
APIOutput: new APIOutput(),
|
|
51
|
-
PromptGenerator: new PromptGenerator(),
|
|
52
|
-
LLMPrompt: new PromptGenerator(),
|
|
53
|
-
APICall: new APICall(),
|
|
54
|
-
VisionLLM: new VisionLLM(),
|
|
55
|
-
FSleep: new FSleep(),
|
|
56
|
-
FHash: new FHash(),
|
|
57
|
-
FEncDec: new FEncDec(),
|
|
58
|
-
FSign: new FSign(),
|
|
59
|
-
FTimestamp: new FTimestamp(),
|
|
60
|
-
DataSourceLookup: new DataSourceLookup(),
|
|
61
|
-
DataSourceIndexer: new DataSourceIndexer(),
|
|
62
|
-
DataSourceCleaner: new DataSourceCleaner(),
|
|
63
|
-
JSONFilter: new JSONFilter(),
|
|
64
|
-
LogicAND: new LogicAND(),
|
|
65
|
-
LogicOR: new LogicOR(),
|
|
66
|
-
LogicXOR: new LogicXOR(),
|
|
67
|
-
LogicAtLeast: new LogicAtLeast(),
|
|
68
|
-
LogicAtMost: new LogicAtMost(),
|
|
69
|
-
AgentPlugin: new AgentPlugin(),
|
|
70
|
-
LLMAssistant: new LLMAssistant(),
|
|
71
|
-
Async: new Async(),
|
|
72
|
-
Await: new Await(),
|
|
73
|
-
ForEach: new ForEach(),
|
|
74
|
-
HuggingFace: new HuggingFace(),
|
|
75
|
-
ZapierAction: new ZapierAction(),
|
|
76
|
-
GPTPlugin: new GPTPlugin(),
|
|
77
|
-
Classifier: new Classifier(),
|
|
78
|
-
MultimodalLLM: new MultimodalLLM(),
|
|
79
|
-
GenAILLM: new GenAILLM(),
|
|
80
|
-
FileStore: new FileStore(),
|
|
81
|
-
WebSearch: new TavilyWebSearch(),
|
|
82
|
-
WebScrape: new ScrapflyWebScrape(),
|
|
83
|
-
TavilyWebSearch: new TavilyWebSearch(),
|
|
84
|
-
ScrapflyWebScrape: new ScrapflyWebScrape(),
|
|
85
|
-
ComponentHost: new ComponentHost(),
|
|
86
|
-
ServerlessCode: new ServerlessCode(),
|
|
87
|
-
ImageGenerator: new ImageGenerator(),
|
|
88
|
-
MCPClient: new MCPClient(),
|
|
89
|
-
OpenAPI: new OpenAPI(),
|
|
90
|
-
ECMASandbox: new ECMASandbox(),
|
|
91
|
-
MemoryWriteKeyVal: new MemoryWriteKeyVal(),
|
|
92
|
-
MemoryReadKeyVal: new MemoryReadKeyVal(),
|
|
93
|
-
MemoryDeleteKeyVal: new MemoryDeleteKeyVal(),
|
|
94
|
-
MemoryWriteObject: new MemoryWriteObject(),
|
|
95
|
-
};
|
|
96
|
-
|
|
97
|
-
export const ComponentInstances = components;
|
|
1
|
+
import { Component } from './Component.class';
|
|
2
|
+
import { APIEndpoint } from './APIEndpoint.class';
|
|
3
|
+
import { APIOutput } from './APIOutput.class';
|
|
4
|
+
import { PromptGenerator } from './PromptGenerator.class';
|
|
5
|
+
import { APICall } from './APICall/APICall.class';
|
|
6
|
+
import { VisionLLM } from './VisionLLM.class';
|
|
7
|
+
import { FSleep } from './FSleep.class';
|
|
8
|
+
import { FHash } from './FHash.class';
|
|
9
|
+
import { FEncDec } from './FEncDec.class';
|
|
10
|
+
import { FTimestamp } from './FTimestamp.class';
|
|
11
|
+
import { DataSourceLookup } from './DataSourceLookup.class';
|
|
12
|
+
import { DataSourceIndexer } from './DataSourceIndexer.class';
|
|
13
|
+
import { DataSourceCleaner } from './DataSourceCleaner.class';
|
|
14
|
+
import { JSONFilter } from './JSONFilter.class';
|
|
15
|
+
import { LogicAND } from './LogicAND.class';
|
|
16
|
+
import { LogicOR } from './LogicOR.class';
|
|
17
|
+
import { LogicXOR } from './LogicXOR.class';
|
|
18
|
+
import { LogicAtLeast } from './LogicAtLeast.class';
|
|
19
|
+
import { LogicAtMost } from './LogicAtMost.class';
|
|
20
|
+
import { AgentPlugin } from './AgentPlugin.class';
|
|
21
|
+
import { LLMAssistant } from './LLMAssistant.class';
|
|
22
|
+
import { Async } from './Async.class';
|
|
23
|
+
import { Await } from './Await.class';
|
|
24
|
+
import { ForEach } from './ForEach.class';
|
|
25
|
+
import { HuggingFace } from './HuggingFace.class';
|
|
26
|
+
import { ZapierAction } from './ZapierAction.class';
|
|
27
|
+
import { GPTPlugin } from './GPTPlugin.class';
|
|
28
|
+
import { Classifier } from './Classifier.class';
|
|
29
|
+
import { FSign } from './FSign.class';
|
|
30
|
+
import { MultimodalLLM } from './MultimodalLLM.class';
|
|
31
|
+
import { GenAILLM } from './GenAILLM.class';
|
|
32
|
+
import { FileStore } from './FileStore.class';
|
|
33
|
+
import { ScrapflyWebScrape } from './ScrapflyWebScrape.class';
|
|
34
|
+
import { TavilyWebSearch } from './TavilyWebSearch.class';
|
|
35
|
+
import { ComponentHost } from './ComponentHost.class';
|
|
36
|
+
import { ServerlessCode } from './ServerlessCode.class';
|
|
37
|
+
import { ImageGenerator } from './ImageGenerator.class'; // Legacy
|
|
38
|
+
import { MCPClient } from './MCPClient.class';
|
|
39
|
+
import { OpenAPI } from './OpenAPI.class';
|
|
40
|
+
import { ECMASandbox } from './ECMASandbox.class';
|
|
41
|
+
import { MemoryWriteKeyVal } from './MemoryWriteKeyVal.class';
|
|
42
|
+
import { MemoryReadKeyVal } from './MemoryReadKeyVal.class';
|
|
43
|
+
import { MemoryDeleteKeyVal } from './MemoryDeleteKeyVal.class';
|
|
44
|
+
import { MemoryWriteObject } from './MemoryWriteObject.class';
|
|
45
|
+
|
|
46
|
+
const components = {
|
|
47
|
+
Component: new Component(),
|
|
48
|
+
Note: new Component(), //this is a fake component
|
|
49
|
+
APIEndpoint: new APIEndpoint(),
|
|
50
|
+
APIOutput: new APIOutput(),
|
|
51
|
+
PromptGenerator: new PromptGenerator(),
|
|
52
|
+
LLMPrompt: new PromptGenerator(),
|
|
53
|
+
APICall: new APICall(),
|
|
54
|
+
VisionLLM: new VisionLLM(),
|
|
55
|
+
FSleep: new FSleep(),
|
|
56
|
+
FHash: new FHash(),
|
|
57
|
+
FEncDec: new FEncDec(),
|
|
58
|
+
FSign: new FSign(),
|
|
59
|
+
FTimestamp: new FTimestamp(),
|
|
60
|
+
DataSourceLookup: new DataSourceLookup(),
|
|
61
|
+
DataSourceIndexer: new DataSourceIndexer(),
|
|
62
|
+
DataSourceCleaner: new DataSourceCleaner(),
|
|
63
|
+
JSONFilter: new JSONFilter(),
|
|
64
|
+
LogicAND: new LogicAND(),
|
|
65
|
+
LogicOR: new LogicOR(),
|
|
66
|
+
LogicXOR: new LogicXOR(),
|
|
67
|
+
LogicAtLeast: new LogicAtLeast(),
|
|
68
|
+
LogicAtMost: new LogicAtMost(),
|
|
69
|
+
AgentPlugin: new AgentPlugin(),
|
|
70
|
+
LLMAssistant: new LLMAssistant(),
|
|
71
|
+
Async: new Async(),
|
|
72
|
+
Await: new Await(),
|
|
73
|
+
ForEach: new ForEach(),
|
|
74
|
+
HuggingFace: new HuggingFace(),
|
|
75
|
+
ZapierAction: new ZapierAction(),
|
|
76
|
+
GPTPlugin: new GPTPlugin(),
|
|
77
|
+
Classifier: new Classifier(),
|
|
78
|
+
MultimodalLLM: new MultimodalLLM(),
|
|
79
|
+
GenAILLM: new GenAILLM(),
|
|
80
|
+
FileStore: new FileStore(),
|
|
81
|
+
WebSearch: new TavilyWebSearch(),
|
|
82
|
+
WebScrape: new ScrapflyWebScrape(),
|
|
83
|
+
TavilyWebSearch: new TavilyWebSearch(),
|
|
84
|
+
ScrapflyWebScrape: new ScrapflyWebScrape(),
|
|
85
|
+
ComponentHost: new ComponentHost(),
|
|
86
|
+
ServerlessCode: new ServerlessCode(),
|
|
87
|
+
ImageGenerator: new ImageGenerator(),
|
|
88
|
+
MCPClient: new MCPClient(),
|
|
89
|
+
OpenAPI: new OpenAPI(),
|
|
90
|
+
ECMASandbox: new ECMASandbox(),
|
|
91
|
+
MemoryWriteKeyVal: new MemoryWriteKeyVal(),
|
|
92
|
+
MemoryReadKeyVal: new MemoryReadKeyVal(),
|
|
93
|
+
MemoryDeleteKeyVal: new MemoryDeleteKeyVal(),
|
|
94
|
+
MemoryWriteObject: new MemoryWriteObject(),
|
|
95
|
+
};
|
|
96
|
+
|
|
97
|
+
export const ComponentInstances = components;
|