@smythos/sre 1.5.53 → 1.5.54
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 -98
- 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 +3 -3
- package/dist/index.js.map +1 -1
- package/dist/types/subsystems/LLMManager/LLM.service/connectors/openai/OpenAIConnector.class.d.ts +1 -6
- package/dist/types/utils/package-manager.utils.d.ts +26 -0
- package/package.json +1 -1
- package/src/Components/APICall/APICall.class.ts +157 -157
- package/src/Components/APICall/AccessTokenManager.ts +166 -166
- package/src/Components/APICall/ArrayBufferResponse.helper.ts +58 -58
- package/src/Components/APICall/OAuth.helper.ts +447 -447
- 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 -138
- 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 +590 -590
- 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 +301 -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 -524
- 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 -1145
- 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,181 +1,181 @@
|
|
|
1
|
-
import { IAgent as Agent } from '@sre/types/Agent.types';
|
|
2
|
-
import { Component } from './Component.class';
|
|
3
|
-
import Joi from 'joi';
|
|
4
|
-
import { validateCharacterSet } from '@sre/utils/validation.utils';
|
|
5
|
-
import { TemplateString } from '@sre/helpers/TemplateString.helper';
|
|
6
|
-
import { isUrl, detectURLSourceType } from '../utils';
|
|
7
|
-
import { SmythFS } from '@sre/IO/Storage.service/SmythFS.class';
|
|
8
|
-
import { ConnectorService } from '@sre/Core/ConnectorsService';
|
|
9
|
-
|
|
10
|
-
import { AccessCandidate } from '@sre/Security/AccessControl/AccessCandidate.class';
|
|
11
|
-
|
|
12
|
-
export class DataSourceIndexer extends Component {
|
|
13
|
-
private MAX_ALLOWED_URLS_PER_INPUT = 20;
|
|
14
|
-
protected configSchema = Joi.object({
|
|
15
|
-
namespace: Joi.string().max(50).allow(''),
|
|
16
|
-
id: Joi.string().custom(validateCharacterSet, 'id custom validation').allow('').label('source identifier'),
|
|
17
|
-
name: Joi.string().max(50).allow('').label('label'),
|
|
18
|
-
metadata: Joi.string().allow(null).allow('').max(10000).label('metadata'),
|
|
19
|
-
});
|
|
20
|
-
constructor() {
|
|
21
|
-
super();
|
|
22
|
-
}
|
|
23
|
-
init() {}
|
|
24
|
-
async process(input, config, agent: Agent) {
|
|
25
|
-
await super.process(input, config, agent);
|
|
26
|
-
const teamId = agent.teamId;
|
|
27
|
-
const agentId = agent.id;
|
|
28
|
-
let debugOutput = agent.agentRuntime?.debug ? '== Source Indexer Log ==\n' : null;
|
|
29
|
-
|
|
30
|
-
try {
|
|
31
|
-
const _config = {
|
|
32
|
-
...config.data,
|
|
33
|
-
name: TemplateString(config.data.name).parse(input).result,
|
|
34
|
-
id: TemplateString(config.data.id).parse(input).result,
|
|
35
|
-
metadata: TemplateString(config.data.metadata).parse(input).result,
|
|
36
|
-
};
|
|
37
|
-
|
|
38
|
-
const outputs = {};
|
|
39
|
-
for (let con of config.outputs) {
|
|
40
|
-
if (con.default) continue;
|
|
41
|
-
outputs[con.name] = con?.description ? `<${con?.description}>` : '';
|
|
42
|
-
}
|
|
43
|
-
|
|
44
|
-
const namespaceId = _config.namespace.split('_').slice(1).join('_') || _config.namespace;
|
|
45
|
-
debugOutput += `[Selected namespace id] \n${namespaceId}\n\n`;
|
|
46
|
-
|
|
47
|
-
const vectorDbConnector =
|
|
48
|
-
// (await vectorDBHelper.getTeamConnector(teamId)) ||
|
|
49
|
-
ConnectorService.getVectorDBConnector();
|
|
50
|
-
const nsExists = await vectorDbConnector.requester(AccessCandidate.team(teamId)).namespaceExists(namespaceId);
|
|
51
|
-
|
|
52
|
-
if (!nsExists) {
|
|
53
|
-
const newNs = await vectorDbConnector.requester(AccessCandidate.team(teamId)).createNamespace(namespaceId);
|
|
54
|
-
debugOutput += `[Created namespace] \n${newNs}\n\n`;
|
|
55
|
-
}
|
|
56
|
-
|
|
57
|
-
const inputSchema = this.validateInput(input);
|
|
58
|
-
if (inputSchema.error) {
|
|
59
|
-
throw new Error(`Input validation error: ${inputSchema.error}\n EXITING...`);
|
|
60
|
-
}
|
|
61
|
-
|
|
62
|
-
const providedId = _config.id;
|
|
63
|
-
// const isAutoId = _config.isAutoId;
|
|
64
|
-
const idRegex = /^[a-zA-Z0-9\-\_\.]+$/;
|
|
65
|
-
|
|
66
|
-
if (!providedId) {
|
|
67
|
-
// Assign a new ID if it's set to auto-generate or not provided
|
|
68
|
-
// _config.id = crypto.randomBytes(16).toString('hex');
|
|
69
|
-
throw new Error(`Id is required`);
|
|
70
|
-
} else if (!idRegex.test(providedId)) {
|
|
71
|
-
// Validate the provided ID if it's not auto-generated
|
|
72
|
-
throw new Error(`Invalid id. Accepted characters: 'a-z', 'A-Z', '0-9', '-', '_', '.'`);
|
|
73
|
-
}
|
|
74
|
-
|
|
75
|
-
// check if the datasource already exists with the same id
|
|
76
|
-
// await this.checkForRecordDuplicate(dsId, token);
|
|
77
|
-
|
|
78
|
-
let indexRes: any = null;
|
|
79
|
-
let parsedUrlArray: string[] | null = null;
|
|
80
|
-
|
|
81
|
-
//! DISABLE URL ARRAY PARSING FOR NOW UNTIL WE HAVE A GOOD WAY TO HANDLE BULK INDEXING
|
|
82
|
-
// if ((parsedUrlArray = parseUrlArray(inputSchema.value.Source))) {
|
|
83
|
-
// debugOutput += `STEP: Parsing input as url array\n\n`;
|
|
84
|
-
// if (parsedUrlArray.length > this.MAX_ALLOWED_URLS_PER_INPUT) {
|
|
85
|
-
// throw new Error(`Too many urls in input. Max allowed: ${this.MAX_ALLOWED_URLS_PER_INPUT}`);
|
|
86
|
-
// }
|
|
87
|
-
|
|
88
|
-
// for (let url of parsedUrlArray) {
|
|
89
|
-
// indexRes = await this.addDSFromUrl({
|
|
90
|
-
// teamId,
|
|
91
|
-
// namespaceId,
|
|
92
|
-
// dsId, // WILL OVERRIDE EACH OTHER
|
|
93
|
-
// type: detectURLSourceType(url),
|
|
94
|
-
// url,
|
|
95
|
-
// name: _config.name || 'Untitled',
|
|
96
|
-
// });
|
|
97
|
-
|
|
98
|
-
// debugOutput += `STEP: Created datasource for url: ${url}\n\n`;
|
|
99
|
-
// }
|
|
100
|
-
// } else
|
|
101
|
-
|
|
102
|
-
const dsId = DataSourceIndexer.genDsId(providedId, teamId, namespaceId);
|
|
103
|
-
|
|
104
|
-
if (isUrl(inputSchema.value.Source)) {
|
|
105
|
-
debugOutput += `STEP: Parsing input as url\n\n`;
|
|
106
|
-
throw new Error('URLs are not supported yet');
|
|
107
|
-
// indexRes = await this.addDSFromUrl({
|
|
108
|
-
// teamId,
|
|
109
|
-
// namespaceId,
|
|
110
|
-
// dsId,
|
|
111
|
-
// type: detectURLSourceType(inputSchema.value.Source),
|
|
112
|
-
// url: inputSchema.value.Source,
|
|
113
|
-
// name: _config.name || 'Untitled',
|
|
114
|
-
// metadata: _config.metadata || null,
|
|
115
|
-
// });
|
|
116
|
-
} else {
|
|
117
|
-
debugOutput += `STEP: Parsing input as text\n\n`;
|
|
118
|
-
indexRes = await this.addDSFromText({
|
|
119
|
-
teamId,
|
|
120
|
-
namespaceId: namespaceId,
|
|
121
|
-
text: inputSchema.value.Source,
|
|
122
|
-
name: _config.name || 'Untitled',
|
|
123
|
-
metadata: _config.metadata || null,
|
|
124
|
-
sourceId: dsId,
|
|
125
|
-
});
|
|
126
|
-
}
|
|
127
|
-
|
|
128
|
-
debugOutput += `Created datasource successfully\n\n`;
|
|
129
|
-
|
|
130
|
-
return {
|
|
131
|
-
_debug: debugOutput,
|
|
132
|
-
Success: {
|
|
133
|
-
result: indexRes?.data?.dataSource || true,
|
|
134
|
-
id: _config.id,
|
|
135
|
-
},
|
|
136
|
-
// _error,
|
|
137
|
-
};
|
|
138
|
-
} catch (err: any) {
|
|
139
|
-
debugOutput += `Error: ${err?.message || "Couldn't index data source"}\n\n`;
|
|
140
|
-
return {
|
|
141
|
-
_debug: debugOutput,
|
|
142
|
-
_error: err?.message || "Couldn't index data source",
|
|
143
|
-
};
|
|
144
|
-
}
|
|
145
|
-
}
|
|
146
|
-
|
|
147
|
-
validateInput(input: any) {
|
|
148
|
-
return Joi.object({
|
|
149
|
-
Source: Joi.any().required(),
|
|
150
|
-
})
|
|
151
|
-
.unknown(true)
|
|
152
|
-
.validate(input);
|
|
153
|
-
}
|
|
154
|
-
|
|
155
|
-
private async addDSFromText({ teamId, sourceId, namespaceId, text, name, metadata }) {
|
|
156
|
-
let vectorDbConnector = ConnectorService.getVectorDBConnector();
|
|
157
|
-
// const isOnCustomStorage = await vectorDBHelper.isNamespaceOnCustomStorage(teamId, namespaceId);
|
|
158
|
-
// if (isOnCustomStorage) {
|
|
159
|
-
// const customTeamConnector = await vectorDBHelper.getTeamConnector(teamId);
|
|
160
|
-
// if (customTeamConnector) {
|
|
161
|
-
// vectorDbConnector = customTeamConnector;
|
|
162
|
-
// }
|
|
163
|
-
// }
|
|
164
|
-
const id = await vectorDbConnector.requester(AccessCandidate.team(teamId)).createDatasource(namespaceId, {
|
|
165
|
-
text,
|
|
166
|
-
metadata,
|
|
167
|
-
id: sourceId,
|
|
168
|
-
label: name,
|
|
169
|
-
});
|
|
170
|
-
|
|
171
|
-
return id;
|
|
172
|
-
}
|
|
173
|
-
|
|
174
|
-
public static genDsId(providedId: string, teamId: string, namespaceId: string) {
|
|
175
|
-
return `${teamId}::${namespaceId}::${providedId}`;
|
|
176
|
-
}
|
|
177
|
-
|
|
178
|
-
private async addDSFromUrl({ teamId, namespaceId, dsId, type, url, name, metadata }) {
|
|
179
|
-
throw new Error('URLs are not supported yet');
|
|
180
|
-
}
|
|
181
|
-
}
|
|
1
|
+
import { IAgent as Agent } from '@sre/types/Agent.types';
|
|
2
|
+
import { Component } from './Component.class';
|
|
3
|
+
import Joi from 'joi';
|
|
4
|
+
import { validateCharacterSet } from '@sre/utils/validation.utils';
|
|
5
|
+
import { TemplateString } from '@sre/helpers/TemplateString.helper';
|
|
6
|
+
import { isUrl, detectURLSourceType } from '../utils';
|
|
7
|
+
import { SmythFS } from '@sre/IO/Storage.service/SmythFS.class';
|
|
8
|
+
import { ConnectorService } from '@sre/Core/ConnectorsService';
|
|
9
|
+
|
|
10
|
+
import { AccessCandidate } from '@sre/Security/AccessControl/AccessCandidate.class';
|
|
11
|
+
|
|
12
|
+
export class DataSourceIndexer extends Component {
|
|
13
|
+
private MAX_ALLOWED_URLS_PER_INPUT = 20;
|
|
14
|
+
protected configSchema = Joi.object({
|
|
15
|
+
namespace: Joi.string().max(50).allow(''),
|
|
16
|
+
id: Joi.string().custom(validateCharacterSet, 'id custom validation').allow('').label('source identifier'),
|
|
17
|
+
name: Joi.string().max(50).allow('').label('label'),
|
|
18
|
+
metadata: Joi.string().allow(null).allow('').max(10000).label('metadata'),
|
|
19
|
+
});
|
|
20
|
+
constructor() {
|
|
21
|
+
super();
|
|
22
|
+
}
|
|
23
|
+
init() {}
|
|
24
|
+
async process(input, config, agent: Agent) {
|
|
25
|
+
await super.process(input, config, agent);
|
|
26
|
+
const teamId = agent.teamId;
|
|
27
|
+
const agentId = agent.id;
|
|
28
|
+
let debugOutput = agent.agentRuntime?.debug ? '== Source Indexer Log ==\n' : null;
|
|
29
|
+
|
|
30
|
+
try {
|
|
31
|
+
const _config = {
|
|
32
|
+
...config.data,
|
|
33
|
+
name: TemplateString(config.data.name).parse(input).result,
|
|
34
|
+
id: TemplateString(config.data.id).parse(input).result,
|
|
35
|
+
metadata: TemplateString(config.data.metadata).parse(input).result,
|
|
36
|
+
};
|
|
37
|
+
|
|
38
|
+
const outputs = {};
|
|
39
|
+
for (let con of config.outputs) {
|
|
40
|
+
if (con.default) continue;
|
|
41
|
+
outputs[con.name] = con?.description ? `<${con?.description}>` : '';
|
|
42
|
+
}
|
|
43
|
+
|
|
44
|
+
const namespaceId = _config.namespace.split('_').slice(1).join('_') || _config.namespace;
|
|
45
|
+
debugOutput += `[Selected namespace id] \n${namespaceId}\n\n`;
|
|
46
|
+
|
|
47
|
+
const vectorDbConnector =
|
|
48
|
+
// (await vectorDBHelper.getTeamConnector(teamId)) ||
|
|
49
|
+
ConnectorService.getVectorDBConnector();
|
|
50
|
+
const nsExists = await vectorDbConnector.requester(AccessCandidate.team(teamId)).namespaceExists(namespaceId);
|
|
51
|
+
|
|
52
|
+
if (!nsExists) {
|
|
53
|
+
const newNs = await vectorDbConnector.requester(AccessCandidate.team(teamId)).createNamespace(namespaceId);
|
|
54
|
+
debugOutput += `[Created namespace] \n${newNs}\n\n`;
|
|
55
|
+
}
|
|
56
|
+
|
|
57
|
+
const inputSchema = this.validateInput(input);
|
|
58
|
+
if (inputSchema.error) {
|
|
59
|
+
throw new Error(`Input validation error: ${inputSchema.error}\n EXITING...`);
|
|
60
|
+
}
|
|
61
|
+
|
|
62
|
+
const providedId = _config.id;
|
|
63
|
+
// const isAutoId = _config.isAutoId;
|
|
64
|
+
const idRegex = /^[a-zA-Z0-9\-\_\.]+$/;
|
|
65
|
+
|
|
66
|
+
if (!providedId) {
|
|
67
|
+
// Assign a new ID if it's set to auto-generate or not provided
|
|
68
|
+
// _config.id = crypto.randomBytes(16).toString('hex');
|
|
69
|
+
throw new Error(`Id is required`);
|
|
70
|
+
} else if (!idRegex.test(providedId)) {
|
|
71
|
+
// Validate the provided ID if it's not auto-generated
|
|
72
|
+
throw new Error(`Invalid id. Accepted characters: 'a-z', 'A-Z', '0-9', '-', '_', '.'`);
|
|
73
|
+
}
|
|
74
|
+
|
|
75
|
+
// check if the datasource already exists with the same id
|
|
76
|
+
// await this.checkForRecordDuplicate(dsId, token);
|
|
77
|
+
|
|
78
|
+
let indexRes: any = null;
|
|
79
|
+
let parsedUrlArray: string[] | null = null;
|
|
80
|
+
|
|
81
|
+
//! DISABLE URL ARRAY PARSING FOR NOW UNTIL WE HAVE A GOOD WAY TO HANDLE BULK INDEXING
|
|
82
|
+
// if ((parsedUrlArray = parseUrlArray(inputSchema.value.Source))) {
|
|
83
|
+
// debugOutput += `STEP: Parsing input as url array\n\n`;
|
|
84
|
+
// if (parsedUrlArray.length > this.MAX_ALLOWED_URLS_PER_INPUT) {
|
|
85
|
+
// throw new Error(`Too many urls in input. Max allowed: ${this.MAX_ALLOWED_URLS_PER_INPUT}`);
|
|
86
|
+
// }
|
|
87
|
+
|
|
88
|
+
// for (let url of parsedUrlArray) {
|
|
89
|
+
// indexRes = await this.addDSFromUrl({
|
|
90
|
+
// teamId,
|
|
91
|
+
// namespaceId,
|
|
92
|
+
// dsId, // WILL OVERRIDE EACH OTHER
|
|
93
|
+
// type: detectURLSourceType(url),
|
|
94
|
+
// url,
|
|
95
|
+
// name: _config.name || 'Untitled',
|
|
96
|
+
// });
|
|
97
|
+
|
|
98
|
+
// debugOutput += `STEP: Created datasource for url: ${url}\n\n`;
|
|
99
|
+
// }
|
|
100
|
+
// } else
|
|
101
|
+
|
|
102
|
+
const dsId = DataSourceIndexer.genDsId(providedId, teamId, namespaceId);
|
|
103
|
+
|
|
104
|
+
if (isUrl(inputSchema.value.Source)) {
|
|
105
|
+
debugOutput += `STEP: Parsing input as url\n\n`;
|
|
106
|
+
throw new Error('URLs are not supported yet');
|
|
107
|
+
// indexRes = await this.addDSFromUrl({
|
|
108
|
+
// teamId,
|
|
109
|
+
// namespaceId,
|
|
110
|
+
// dsId,
|
|
111
|
+
// type: detectURLSourceType(inputSchema.value.Source),
|
|
112
|
+
// url: inputSchema.value.Source,
|
|
113
|
+
// name: _config.name || 'Untitled',
|
|
114
|
+
// metadata: _config.metadata || null,
|
|
115
|
+
// });
|
|
116
|
+
} else {
|
|
117
|
+
debugOutput += `STEP: Parsing input as text\n\n`;
|
|
118
|
+
indexRes = await this.addDSFromText({
|
|
119
|
+
teamId,
|
|
120
|
+
namespaceId: namespaceId,
|
|
121
|
+
text: inputSchema.value.Source,
|
|
122
|
+
name: _config.name || 'Untitled',
|
|
123
|
+
metadata: _config.metadata || null,
|
|
124
|
+
sourceId: dsId,
|
|
125
|
+
});
|
|
126
|
+
}
|
|
127
|
+
|
|
128
|
+
debugOutput += `Created datasource successfully\n\n`;
|
|
129
|
+
|
|
130
|
+
return {
|
|
131
|
+
_debug: debugOutput,
|
|
132
|
+
Success: {
|
|
133
|
+
result: indexRes?.data?.dataSource || true,
|
|
134
|
+
id: _config.id,
|
|
135
|
+
},
|
|
136
|
+
// _error,
|
|
137
|
+
};
|
|
138
|
+
} catch (err: any) {
|
|
139
|
+
debugOutput += `Error: ${err?.message || "Couldn't index data source"}\n\n`;
|
|
140
|
+
return {
|
|
141
|
+
_debug: debugOutput,
|
|
142
|
+
_error: err?.message || "Couldn't index data source",
|
|
143
|
+
};
|
|
144
|
+
}
|
|
145
|
+
}
|
|
146
|
+
|
|
147
|
+
validateInput(input: any) {
|
|
148
|
+
return Joi.object({
|
|
149
|
+
Source: Joi.any().required(),
|
|
150
|
+
})
|
|
151
|
+
.unknown(true)
|
|
152
|
+
.validate(input);
|
|
153
|
+
}
|
|
154
|
+
|
|
155
|
+
private async addDSFromText({ teamId, sourceId, namespaceId, text, name, metadata }) {
|
|
156
|
+
let vectorDbConnector = ConnectorService.getVectorDBConnector();
|
|
157
|
+
// const isOnCustomStorage = await vectorDBHelper.isNamespaceOnCustomStorage(teamId, namespaceId);
|
|
158
|
+
// if (isOnCustomStorage) {
|
|
159
|
+
// const customTeamConnector = await vectorDBHelper.getTeamConnector(teamId);
|
|
160
|
+
// if (customTeamConnector) {
|
|
161
|
+
// vectorDbConnector = customTeamConnector;
|
|
162
|
+
// }
|
|
163
|
+
// }
|
|
164
|
+
const id = await vectorDbConnector.requester(AccessCandidate.team(teamId)).createDatasource(namespaceId, {
|
|
165
|
+
text,
|
|
166
|
+
metadata,
|
|
167
|
+
id: sourceId,
|
|
168
|
+
label: name,
|
|
169
|
+
});
|
|
170
|
+
|
|
171
|
+
return id;
|
|
172
|
+
}
|
|
173
|
+
|
|
174
|
+
public static genDsId(providedId: string, teamId: string, namespaceId: string) {
|
|
175
|
+
return `${teamId}::${namespaceId}::${providedId}`;
|
|
176
|
+
}
|
|
177
|
+
|
|
178
|
+
private async addDSFromUrl({ teamId, namespaceId, dsId, type, url, name, metadata }) {
|
|
179
|
+
throw new Error('URLs are not supported yet');
|
|
180
|
+
}
|
|
181
|
+
}
|