@smythos/sre 1.5.50 → 1.5.52
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/index.js +3 -3
- package/dist/index.js.map +1 -1
- package/dist/types/Components/APICall/AccessTokenManager.d.ts +3 -2
- package/dist/types/Components/APICall/OAuth.helper.d.ts +3 -2
- package/dist/types/subsystems/LLMManager/LLM.service/connectors/openai/OpenAIConnector.class.d.ts +6 -1
- package/dist/types/subsystems/LLMManager/ModelsProvider.service/connectors/SmythModelsProvider.class.d.ts +39 -0
- package/package.json +1 -1
- package/src/Components/APICall/APICall.class.ts +156 -156
- package/src/Components/APICall/AccessTokenManager.ts +166 -130
- package/src/Components/APICall/ArrayBufferResponse.helper.ts +58 -58
- package/src/Components/APICall/OAuth.helper.ts +446 -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 -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 -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 -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/bundle-analysis-lazy.html +0 -4949
- package/dist/bundle-analysis.html +0 -4949
- package/dist/types/utils/package-manager.utils.d.ts +0 -26
|
@@ -1,101 +1,101 @@
|
|
|
1
|
-
import { Agent } from './Agent.class';
|
|
2
|
-
|
|
3
|
-
export class AgentSSE {
|
|
4
|
-
private connections: Map<string, any> = new Map();
|
|
5
|
-
|
|
6
|
-
/**
|
|
7
|
-
* Creates a new AgentSSE instance
|
|
8
|
-
* @param agent - The agent instance this SSE belongs to
|
|
9
|
-
*/
|
|
10
|
-
constructor(private agent: Agent) {}
|
|
11
|
-
|
|
12
|
-
/**
|
|
13
|
-
* Updates or adds a response object with the given monitor ID
|
|
14
|
-
* Maintains backward compatibility by also setting the res property
|
|
15
|
-
* @param res - The response object to add or update
|
|
16
|
-
* @param monitorId - The monitor ID associated with this connection
|
|
17
|
-
* @returns The connection ID that was created or updated
|
|
18
|
-
*/
|
|
19
|
-
public add(res: any, monitorId: string) {
|
|
20
|
-
// Store the connection
|
|
21
|
-
this.connections.set(monitorId, res);
|
|
22
|
-
}
|
|
23
|
-
|
|
24
|
-
public [Symbol.iterator](): IterableIterator<[string, any]> {
|
|
25
|
-
return this.connections.entries();
|
|
26
|
-
}
|
|
27
|
-
|
|
28
|
-
/**
|
|
29
|
-
* Sends an event to all connected clients
|
|
30
|
-
* @param _type - The event type
|
|
31
|
-
* @param _data - The event data
|
|
32
|
-
*/
|
|
33
|
-
public async send(_type: string, _data: any): Promise<void> {
|
|
34
|
-
if (!_type || !_data) return;
|
|
35
|
-
|
|
36
|
-
// Format the data once
|
|
37
|
-
const data = typeof _data === 'string' ? _data : JSON.stringify(_data);
|
|
38
|
-
const message = `event: ${_type}\ndata: ${data}\n\n`;
|
|
39
|
-
|
|
40
|
-
// Send to all connections
|
|
41
|
-
for (const [id, connection] of this.connections.entries()) {
|
|
42
|
-
try {
|
|
43
|
-
if (connection && !connection.finished) {
|
|
44
|
-
connection.write(message);
|
|
45
|
-
} else {
|
|
46
|
-
// Remove closed connections
|
|
47
|
-
this.connections.delete(id);
|
|
48
|
-
}
|
|
49
|
-
} catch (error) {
|
|
50
|
-
// Handle errors (connection might be closed)
|
|
51
|
-
console.error(`Error sending SSE to connection ${id}:`, error);
|
|
52
|
-
this.connections.delete(id);
|
|
53
|
-
}
|
|
54
|
-
}
|
|
55
|
-
}
|
|
56
|
-
|
|
57
|
-
/**
|
|
58
|
-
* Removes a specific connection
|
|
59
|
-
* @param connectionId - The ID of the connection to remove
|
|
60
|
-
* @returns True if the connection was found and removed, false otherwise
|
|
61
|
-
*/
|
|
62
|
-
public remove(connectionId: string): boolean {
|
|
63
|
-
const connection = this.connections.get(connectionId);
|
|
64
|
-
if (connection) {
|
|
65
|
-
try {
|
|
66
|
-
if (connection && !connection.finished) {
|
|
67
|
-
connection.end();
|
|
68
|
-
}
|
|
69
|
-
} catch (error) {
|
|
70
|
-
console.error(`Error closing connection ${connectionId}:`, error);
|
|
71
|
-
}
|
|
72
|
-
return this.connections.delete(connectionId);
|
|
73
|
-
}
|
|
74
|
-
return false;
|
|
75
|
-
}
|
|
76
|
-
|
|
77
|
-
/**
|
|
78
|
-
* Closes all connections
|
|
79
|
-
*/
|
|
80
|
-
public async close(): Promise<void> {
|
|
81
|
-
for (const [id, connection] of this.connections.entries()) {
|
|
82
|
-
try {
|
|
83
|
-
if (connection && !connection.finished) {
|
|
84
|
-
connection.end();
|
|
85
|
-
console.log('Delibertly shutting down sse connection with id: ', id);
|
|
86
|
-
}
|
|
87
|
-
} catch (error) {
|
|
88
|
-
console.error(`Error closing connection ${id}:`, error);
|
|
89
|
-
}
|
|
90
|
-
}
|
|
91
|
-
this.connections.clear();
|
|
92
|
-
}
|
|
93
|
-
|
|
94
|
-
/**
|
|
95
|
-
* Gets the number of active connections
|
|
96
|
-
* @returns The number of active connections
|
|
97
|
-
*/
|
|
98
|
-
public getConnectionCount(): number {
|
|
99
|
-
return this.connections.size;
|
|
100
|
-
}
|
|
101
|
-
}
|
|
1
|
+
import { Agent } from './Agent.class';
|
|
2
|
+
|
|
3
|
+
export class AgentSSE {
|
|
4
|
+
private connections: Map<string, any> = new Map();
|
|
5
|
+
|
|
6
|
+
/**
|
|
7
|
+
* Creates a new AgentSSE instance
|
|
8
|
+
* @param agent - The agent instance this SSE belongs to
|
|
9
|
+
*/
|
|
10
|
+
constructor(private agent: Agent) {}
|
|
11
|
+
|
|
12
|
+
/**
|
|
13
|
+
* Updates or adds a response object with the given monitor ID
|
|
14
|
+
* Maintains backward compatibility by also setting the res property
|
|
15
|
+
* @param res - The response object to add or update
|
|
16
|
+
* @param monitorId - The monitor ID associated with this connection
|
|
17
|
+
* @returns The connection ID that was created or updated
|
|
18
|
+
*/
|
|
19
|
+
public add(res: any, monitorId: string) {
|
|
20
|
+
// Store the connection
|
|
21
|
+
this.connections.set(monitorId, res);
|
|
22
|
+
}
|
|
23
|
+
|
|
24
|
+
public [Symbol.iterator](): IterableIterator<[string, any]> {
|
|
25
|
+
return this.connections.entries();
|
|
26
|
+
}
|
|
27
|
+
|
|
28
|
+
/**
|
|
29
|
+
* Sends an event to all connected clients
|
|
30
|
+
* @param _type - The event type
|
|
31
|
+
* @param _data - The event data
|
|
32
|
+
*/
|
|
33
|
+
public async send(_type: string, _data: any): Promise<void> {
|
|
34
|
+
if (!_type || !_data) return;
|
|
35
|
+
|
|
36
|
+
// Format the data once
|
|
37
|
+
const data = typeof _data === 'string' ? _data : JSON.stringify(_data);
|
|
38
|
+
const message = `event: ${_type}\ndata: ${data}\n\n`;
|
|
39
|
+
|
|
40
|
+
// Send to all connections
|
|
41
|
+
for (const [id, connection] of this.connections.entries()) {
|
|
42
|
+
try {
|
|
43
|
+
if (connection && !connection.finished) {
|
|
44
|
+
connection.write(message);
|
|
45
|
+
} else {
|
|
46
|
+
// Remove closed connections
|
|
47
|
+
this.connections.delete(id);
|
|
48
|
+
}
|
|
49
|
+
} catch (error) {
|
|
50
|
+
// Handle errors (connection might be closed)
|
|
51
|
+
console.error(`Error sending SSE to connection ${id}:`, error);
|
|
52
|
+
this.connections.delete(id);
|
|
53
|
+
}
|
|
54
|
+
}
|
|
55
|
+
}
|
|
56
|
+
|
|
57
|
+
/**
|
|
58
|
+
* Removes a specific connection
|
|
59
|
+
* @param connectionId - The ID of the connection to remove
|
|
60
|
+
* @returns True if the connection was found and removed, false otherwise
|
|
61
|
+
*/
|
|
62
|
+
public remove(connectionId: string): boolean {
|
|
63
|
+
const connection = this.connections.get(connectionId);
|
|
64
|
+
if (connection) {
|
|
65
|
+
try {
|
|
66
|
+
if (connection && !connection.finished) {
|
|
67
|
+
connection.end();
|
|
68
|
+
}
|
|
69
|
+
} catch (error) {
|
|
70
|
+
console.error(`Error closing connection ${connectionId}:`, error);
|
|
71
|
+
}
|
|
72
|
+
return this.connections.delete(connectionId);
|
|
73
|
+
}
|
|
74
|
+
return false;
|
|
75
|
+
}
|
|
76
|
+
|
|
77
|
+
/**
|
|
78
|
+
* Closes all connections
|
|
79
|
+
*/
|
|
80
|
+
public async close(): Promise<void> {
|
|
81
|
+
for (const [id, connection] of this.connections.entries()) {
|
|
82
|
+
try {
|
|
83
|
+
if (connection && !connection.finished) {
|
|
84
|
+
connection.end();
|
|
85
|
+
console.log('Delibertly shutting down sse connection with id: ', id);
|
|
86
|
+
}
|
|
87
|
+
} catch (error) {
|
|
88
|
+
console.error(`Error closing connection ${id}:`, error);
|
|
89
|
+
}
|
|
90
|
+
}
|
|
91
|
+
this.connections.clear();
|
|
92
|
+
}
|
|
93
|
+
|
|
94
|
+
/**
|
|
95
|
+
* Gets the number of active connections
|
|
96
|
+
* @returns The number of active connections
|
|
97
|
+
*/
|
|
98
|
+
public getConnectionCount(): number {
|
|
99
|
+
return this.connections.size;
|
|
100
|
+
}
|
|
101
|
+
}
|
|
@@ -1,52 +1,52 @@
|
|
|
1
|
-
import { ConnectorService } from '@sre/Core/ConnectorsService';
|
|
2
|
-
import { EmbodimentSettings } from './EmbodimentSettings.class';
|
|
3
|
-
|
|
4
|
-
import { Logger } from '@sre/helpers/Log.helper';
|
|
5
|
-
const console = Logger('AgentSettings');
|
|
6
|
-
|
|
7
|
-
export class AgentSettings {
|
|
8
|
-
private _settings: any;
|
|
9
|
-
public embodiments?: EmbodimentSettings;
|
|
10
|
-
private _ready = false;
|
|
11
|
-
|
|
12
|
-
constructor(agentId?) {
|
|
13
|
-
if (agentId) {
|
|
14
|
-
this.init(agentId);
|
|
15
|
-
}
|
|
16
|
-
}
|
|
17
|
-
|
|
18
|
-
async init(agentId) {
|
|
19
|
-
// Set embodiments before _settings allow us to use it immediately; otherwise, we need to wait both AgentSettings instance and EmbodimentSettings instance to be ready
|
|
20
|
-
this.embodiments = new EmbodimentSettings(agentId);
|
|
21
|
-
|
|
22
|
-
const agentDataConnector = ConnectorService.getAgentDataConnector();
|
|
23
|
-
this._settings = (await agentDataConnector.getAgentSettings(agentId).catch((e) => {})) || {};
|
|
24
|
-
this._ready = true;
|
|
25
|
-
}
|
|
26
|
-
|
|
27
|
-
public ready(maxWait = 10000) {
|
|
28
|
-
return new Promise((resolve, reject) => {
|
|
29
|
-
const interval = setInterval(() => {
|
|
30
|
-
if (this._ready) {
|
|
31
|
-
clearInterval(interval);
|
|
32
|
-
resolve(true);
|
|
33
|
-
}
|
|
34
|
-
maxWait -= 100;
|
|
35
|
-
}, 100);
|
|
36
|
-
|
|
37
|
-
setTimeout(() => {
|
|
38
|
-
clearInterval(interval);
|
|
39
|
-
reject(false);
|
|
40
|
-
}, maxWait);
|
|
41
|
-
});
|
|
42
|
-
}
|
|
43
|
-
public get(key: string) {
|
|
44
|
-
return this._settings?.[key] || '';
|
|
45
|
-
}
|
|
46
|
-
public set(key: string, value: any) {
|
|
47
|
-
this._settings[key] = value;
|
|
48
|
-
}
|
|
49
|
-
public has(key: string) {
|
|
50
|
-
return this._settings[key];
|
|
51
|
-
}
|
|
52
|
-
}
|
|
1
|
+
import { ConnectorService } from '@sre/Core/ConnectorsService';
|
|
2
|
+
import { EmbodimentSettings } from './EmbodimentSettings.class';
|
|
3
|
+
|
|
4
|
+
import { Logger } from '@sre/helpers/Log.helper';
|
|
5
|
+
const console = Logger('AgentSettings');
|
|
6
|
+
|
|
7
|
+
export class AgentSettings {
|
|
8
|
+
private _settings: any;
|
|
9
|
+
public embodiments?: EmbodimentSettings;
|
|
10
|
+
private _ready = false;
|
|
11
|
+
|
|
12
|
+
constructor(agentId?) {
|
|
13
|
+
if (agentId) {
|
|
14
|
+
this.init(agentId);
|
|
15
|
+
}
|
|
16
|
+
}
|
|
17
|
+
|
|
18
|
+
async init(agentId) {
|
|
19
|
+
// Set embodiments before _settings allow us to use it immediately; otherwise, we need to wait both AgentSettings instance and EmbodimentSettings instance to be ready
|
|
20
|
+
this.embodiments = new EmbodimentSettings(agentId);
|
|
21
|
+
|
|
22
|
+
const agentDataConnector = ConnectorService.getAgentDataConnector();
|
|
23
|
+
this._settings = (await agentDataConnector.getAgentSettings(agentId).catch((e) => {})) || {};
|
|
24
|
+
this._ready = true;
|
|
25
|
+
}
|
|
26
|
+
|
|
27
|
+
public ready(maxWait = 10000) {
|
|
28
|
+
return new Promise((resolve, reject) => {
|
|
29
|
+
const interval = setInterval(() => {
|
|
30
|
+
if (this._ready) {
|
|
31
|
+
clearInterval(interval);
|
|
32
|
+
resolve(true);
|
|
33
|
+
}
|
|
34
|
+
maxWait -= 100;
|
|
35
|
+
}, 100);
|
|
36
|
+
|
|
37
|
+
setTimeout(() => {
|
|
38
|
+
clearInterval(interval);
|
|
39
|
+
reject(false);
|
|
40
|
+
}, maxWait);
|
|
41
|
+
});
|
|
42
|
+
}
|
|
43
|
+
public get(key: string) {
|
|
44
|
+
return this._settings?.[key] || '';
|
|
45
|
+
}
|
|
46
|
+
public set(key: string, value: any) {
|
|
47
|
+
this._settings[key] = value;
|
|
48
|
+
}
|
|
49
|
+
public has(key: string) {
|
|
50
|
+
return this._settings[key];
|
|
51
|
+
}
|
|
52
|
+
}
|
|
@@ -1,32 +1,32 @@
|
|
|
1
|
-
import { ACL } from '@sre/Security/AccessControl/ACL.class';
|
|
2
|
-
import { AccessCandidate } from '@sre/Security/AccessControl/AccessCandidate.class';
|
|
3
|
-
import { SecureConnector } from '@sre/Security/SecureConnector.class';
|
|
4
|
-
import { IAccessCandidate, IACL } from '@sre/types/ACL.types';
|
|
5
|
-
import { AccessRequest } from '@sre/Security/AccessControl/AccessRequest.class';
|
|
6
|
-
|
|
7
|
-
export interface IComponentRequest {
|
|
8
|
-
register(componentName: string, componentInstance: any): Promise<void>;
|
|
9
|
-
get(componentName: string): Promise<any>;
|
|
10
|
-
getAll(): Promise<any>;
|
|
11
|
-
}
|
|
12
|
-
|
|
13
|
-
export abstract class ComponentConnector extends SecureConnector {
|
|
14
|
-
public abstract getResourceACL(resourceId: string, candidate: IAccessCandidate): Promise<ACL>;
|
|
15
|
-
protected abstract register(acRequest: AccessRequest, componentName: string, componentInstance: any): Promise<void>;
|
|
16
|
-
protected abstract get(acRequest: AccessRequest, componentName: string): Promise<any>;
|
|
17
|
-
protected abstract getAll(acRequest: AccessRequest): Promise<any>;
|
|
18
|
-
|
|
19
|
-
public requester(candidate: AccessCandidate): IComponentRequest {
|
|
20
|
-
return {
|
|
21
|
-
register: async (componentName: string, componentInstance: any) => {
|
|
22
|
-
return await this.register(candidate.readRequest, componentName, componentInstance);
|
|
23
|
-
},
|
|
24
|
-
get: async (componentName: string) => {
|
|
25
|
-
return await this.get(candidate.readRequest, componentName);
|
|
26
|
-
},
|
|
27
|
-
getAll: async () => {
|
|
28
|
-
return await this.getAll(candidate.readRequest);
|
|
29
|
-
},
|
|
30
|
-
} as IComponentRequest;
|
|
31
|
-
}
|
|
32
|
-
}
|
|
1
|
+
import { ACL } from '@sre/Security/AccessControl/ACL.class';
|
|
2
|
+
import { AccessCandidate } from '@sre/Security/AccessControl/AccessCandidate.class';
|
|
3
|
+
import { SecureConnector } from '@sre/Security/SecureConnector.class';
|
|
4
|
+
import { IAccessCandidate, IACL } from '@sre/types/ACL.types';
|
|
5
|
+
import { AccessRequest } from '@sre/Security/AccessControl/AccessRequest.class';
|
|
6
|
+
|
|
7
|
+
export interface IComponentRequest {
|
|
8
|
+
register(componentName: string, componentInstance: any): Promise<void>;
|
|
9
|
+
get(componentName: string): Promise<any>;
|
|
10
|
+
getAll(): Promise<any>;
|
|
11
|
+
}
|
|
12
|
+
|
|
13
|
+
export abstract class ComponentConnector extends SecureConnector {
|
|
14
|
+
public abstract getResourceACL(resourceId: string, candidate: IAccessCandidate): Promise<ACL>;
|
|
15
|
+
protected abstract register(acRequest: AccessRequest, componentName: string, componentInstance: any): Promise<void>;
|
|
16
|
+
protected abstract get(acRequest: AccessRequest, componentName: string): Promise<any>;
|
|
17
|
+
protected abstract getAll(acRequest: AccessRequest): Promise<any>;
|
|
18
|
+
|
|
19
|
+
public requester(candidate: AccessCandidate): IComponentRequest {
|
|
20
|
+
return {
|
|
21
|
+
register: async (componentName: string, componentInstance: any) => {
|
|
22
|
+
return await this.register(candidate.readRequest, componentName, componentInstance);
|
|
23
|
+
},
|
|
24
|
+
get: async (componentName: string) => {
|
|
25
|
+
return await this.get(candidate.readRequest, componentName);
|
|
26
|
+
},
|
|
27
|
+
getAll: async () => {
|
|
28
|
+
return await this.getAll(candidate.readRequest);
|
|
29
|
+
},
|
|
30
|
+
} as IComponentRequest;
|
|
31
|
+
}
|
|
32
|
+
}
|
package/src/subsystems/AgentManager/Component.service/connectors/LocalComponentConnector.class.ts
CHANGED
|
@@ -1,60 +1,60 @@
|
|
|
1
|
-
import { ConnectorService } from '@sre/Core/ConnectorsService';
|
|
2
|
-
import { Logger } from '@sre/helpers/Log.helper';
|
|
3
|
-
|
|
4
|
-
import { AccessRequest } from '@sre/Security/AccessControl/AccessRequest.class';
|
|
5
|
-
import { ACL } from '@sre/Security/AccessControl/ACL.class';
|
|
6
|
-
import { SecureConnector } from '@sre/Security/SecureConnector.class';
|
|
7
|
-
import { IAccessCandidate, TAccessLevel, TAccessRole } from '@sre/types/ACL.types';
|
|
8
|
-
|
|
9
|
-
import { ComponentConnector } from '../ComponentConnector';
|
|
10
|
-
import { ComponentInstances } from '@sre/Components/index';
|
|
11
|
-
|
|
12
|
-
const console = Logger('LocalComponentConnector');
|
|
13
|
-
|
|
14
|
-
//TODO : future : Candidate specific components access : we can rely on the ACL to isolate the components per user/agent/team
|
|
15
|
-
export class LocalComponentConnector extends ComponentConnector {
|
|
16
|
-
public name: string = 'LocalComponentConnector';
|
|
17
|
-
private components: any = {};
|
|
18
|
-
|
|
19
|
-
constructor() {
|
|
20
|
-
super();
|
|
21
|
-
|
|
22
|
-
this.init();
|
|
23
|
-
}
|
|
24
|
-
|
|
25
|
-
async init() {
|
|
26
|
-
for (const component in ComponentInstances) {
|
|
27
|
-
this.components[component] = ComponentInstances[component];
|
|
28
|
-
}
|
|
29
|
-
console.debug('Registering Components :', Object.keys(this.components).join(', '));
|
|
30
|
-
}
|
|
31
|
-
|
|
32
|
-
@SecureConnector.AccessControl
|
|
33
|
-
protected async register(acRequest: AccessRequest, componentName: string, componentInstance: any) {
|
|
34
|
-
this.components[componentName] = componentInstance;
|
|
35
|
-
}
|
|
36
|
-
|
|
37
|
-
@SecureConnector.AccessControl
|
|
38
|
-
protected async get(acRequest: AccessRequest, componentName: string) {
|
|
39
|
-
return this.components[componentName];
|
|
40
|
-
}
|
|
41
|
-
|
|
42
|
-
@SecureConnector.AccessControl
|
|
43
|
-
protected async getAll(acRequest: AccessRequest) {
|
|
44
|
-
return this.components;
|
|
45
|
-
}
|
|
46
|
-
|
|
47
|
-
public async getResourceACL(resourceId: string, candidate: IAccessCandidate) {
|
|
48
|
-
const accountConnector = ConnectorService.getAccountConnector();
|
|
49
|
-
|
|
50
|
-
//const teamId = await accountConnector.getCandidateTeam(candidate);
|
|
51
|
-
|
|
52
|
-
const acl = new ACL();
|
|
53
|
-
|
|
54
|
-
acl.addAccess(candidate.role, candidate.id, TAccessLevel.Read);
|
|
55
|
-
//Grant read access by default
|
|
56
|
-
//acl.addAccess(TAccessRole.Team, teamId, TAccessLevel.Read).addAccess(candidate.role, candidate.id, TAccessLevel.Read);
|
|
57
|
-
|
|
58
|
-
return acl;
|
|
59
|
-
}
|
|
60
|
-
}
|
|
1
|
+
import { ConnectorService } from '@sre/Core/ConnectorsService';
|
|
2
|
+
import { Logger } from '@sre/helpers/Log.helper';
|
|
3
|
+
|
|
4
|
+
import { AccessRequest } from '@sre/Security/AccessControl/AccessRequest.class';
|
|
5
|
+
import { ACL } from '@sre/Security/AccessControl/ACL.class';
|
|
6
|
+
import { SecureConnector } from '@sre/Security/SecureConnector.class';
|
|
7
|
+
import { IAccessCandidate, TAccessLevel, TAccessRole } from '@sre/types/ACL.types';
|
|
8
|
+
|
|
9
|
+
import { ComponentConnector } from '../ComponentConnector';
|
|
10
|
+
import { ComponentInstances } from '@sre/Components/index';
|
|
11
|
+
|
|
12
|
+
const console = Logger('LocalComponentConnector');
|
|
13
|
+
|
|
14
|
+
//TODO : future : Candidate specific components access : we can rely on the ACL to isolate the components per user/agent/team
|
|
15
|
+
export class LocalComponentConnector extends ComponentConnector {
|
|
16
|
+
public name: string = 'LocalComponentConnector';
|
|
17
|
+
private components: any = {};
|
|
18
|
+
|
|
19
|
+
constructor() {
|
|
20
|
+
super();
|
|
21
|
+
|
|
22
|
+
this.init();
|
|
23
|
+
}
|
|
24
|
+
|
|
25
|
+
async init() {
|
|
26
|
+
for (const component in ComponentInstances) {
|
|
27
|
+
this.components[component] = ComponentInstances[component];
|
|
28
|
+
}
|
|
29
|
+
console.debug('Registering Components :', Object.keys(this.components).join(', '));
|
|
30
|
+
}
|
|
31
|
+
|
|
32
|
+
@SecureConnector.AccessControl
|
|
33
|
+
protected async register(acRequest: AccessRequest, componentName: string, componentInstance: any) {
|
|
34
|
+
this.components[componentName] = componentInstance;
|
|
35
|
+
}
|
|
36
|
+
|
|
37
|
+
@SecureConnector.AccessControl
|
|
38
|
+
protected async get(acRequest: AccessRequest, componentName: string) {
|
|
39
|
+
return this.components[componentName];
|
|
40
|
+
}
|
|
41
|
+
|
|
42
|
+
@SecureConnector.AccessControl
|
|
43
|
+
protected async getAll(acRequest: AccessRequest) {
|
|
44
|
+
return this.components;
|
|
45
|
+
}
|
|
46
|
+
|
|
47
|
+
public async getResourceACL(resourceId: string, candidate: IAccessCandidate) {
|
|
48
|
+
const accountConnector = ConnectorService.getAccountConnector();
|
|
49
|
+
|
|
50
|
+
//const teamId = await accountConnector.getCandidateTeam(candidate);
|
|
51
|
+
|
|
52
|
+
const acl = new ACL();
|
|
53
|
+
|
|
54
|
+
acl.addAccess(candidate.role, candidate.id, TAccessLevel.Read);
|
|
55
|
+
//Grant read access by default
|
|
56
|
+
//acl.addAccess(TAccessRole.Team, teamId, TAccessLevel.Read).addAccess(candidate.role, candidate.id, TAccessLevel.Read);
|
|
57
|
+
|
|
58
|
+
return acl;
|
|
59
|
+
}
|
|
60
|
+
}
|
|
@@ -1,11 +1,11 @@
|
|
|
1
|
-
//==[ SRE: Component ]======================
|
|
2
|
-
|
|
3
|
-
import { ConnectorService, ConnectorServiceProvider } from '@sre/Core/ConnectorsService';
|
|
4
|
-
import { TConnectorService } from '@sre/types/SRE.types';
|
|
5
|
-
import { LocalComponentConnector } from './connectors/LocalComponentConnector.class';
|
|
6
|
-
|
|
7
|
-
export class ComponentService extends ConnectorServiceProvider {
|
|
8
|
-
public register() {
|
|
9
|
-
ConnectorService.register(TConnectorService.Component, 'LocalComponent', LocalComponentConnector);
|
|
10
|
-
}
|
|
11
|
-
}
|
|
1
|
+
//==[ SRE: Component ]======================
|
|
2
|
+
|
|
3
|
+
import { ConnectorService, ConnectorServiceProvider } from '@sre/Core/ConnectorsService';
|
|
4
|
+
import { TConnectorService } from '@sre/types/SRE.types';
|
|
5
|
+
import { LocalComponentConnector } from './connectors/LocalComponentConnector.class';
|
|
6
|
+
|
|
7
|
+
export class ComponentService extends ConnectorServiceProvider {
|
|
8
|
+
public register() {
|
|
9
|
+
ConnectorService.register(TConnectorService.Component, 'LocalComponent', LocalComponentConnector);
|
|
10
|
+
}
|
|
11
|
+
}
|
|
@@ -1,47 +1,47 @@
|
|
|
1
|
-
import { Logger } from '@sre/helpers/Log.helper';
|
|
2
|
-
import { ConnectorService } from '@sre/Core/ConnectorsService';
|
|
3
|
-
const console = Logger('EmbodimentSettings');
|
|
4
|
-
|
|
5
|
-
export class EmbodimentSettings {
|
|
6
|
-
private _embodiments: any;
|
|
7
|
-
private _ready = false;
|
|
8
|
-
|
|
9
|
-
constructor(agentId) {
|
|
10
|
-
this.init(agentId);
|
|
11
|
-
}
|
|
12
|
-
|
|
13
|
-
async init(agentId) {
|
|
14
|
-
const agentDataConnector = ConnectorService.getAgentDataConnector();
|
|
15
|
-
this._embodiments = await agentDataConnector.getAgentEmbodiments(agentId).catch((error) => []);
|
|
16
|
-
this._ready = true;
|
|
17
|
-
}
|
|
18
|
-
public ready(maxWait = 10000) {
|
|
19
|
-
return new Promise((resolve, reject) => {
|
|
20
|
-
const interval = setInterval(() => {
|
|
21
|
-
if (this._ready) {
|
|
22
|
-
clearInterval(interval);
|
|
23
|
-
resolve(true);
|
|
24
|
-
}
|
|
25
|
-
maxWait -= 100;
|
|
26
|
-
}, 100);
|
|
27
|
-
|
|
28
|
-
setTimeout(() => {
|
|
29
|
-
clearInterval(interval);
|
|
30
|
-
reject(false);
|
|
31
|
-
}, maxWait);
|
|
32
|
-
});
|
|
33
|
-
}
|
|
34
|
-
|
|
35
|
-
public get(embodimentType: string, key?: string) {
|
|
36
|
-
if (!this._embodiments) return undefined;
|
|
37
|
-
const _embodiment = this._embodiments.find((embodiment: any) => embodiment.type?.toLowerCase() === embodimentType.toLowerCase());
|
|
38
|
-
|
|
39
|
-
if (!_embodiment) {
|
|
40
|
-
//console.error(`Error: No ${embodimentType} embodiment found for agent`);
|
|
41
|
-
}
|
|
42
|
-
if (key) {
|
|
43
|
-
return _embodiment?.properties?.[key];
|
|
44
|
-
}
|
|
45
|
-
return _embodiment?.properties;
|
|
46
|
-
}
|
|
47
|
-
}
|
|
1
|
+
import { Logger } from '@sre/helpers/Log.helper';
|
|
2
|
+
import { ConnectorService } from '@sre/Core/ConnectorsService';
|
|
3
|
+
const console = Logger('EmbodimentSettings');
|
|
4
|
+
|
|
5
|
+
export class EmbodimentSettings {
|
|
6
|
+
private _embodiments: any;
|
|
7
|
+
private _ready = false;
|
|
8
|
+
|
|
9
|
+
constructor(agentId) {
|
|
10
|
+
this.init(agentId);
|
|
11
|
+
}
|
|
12
|
+
|
|
13
|
+
async init(agentId) {
|
|
14
|
+
const agentDataConnector = ConnectorService.getAgentDataConnector();
|
|
15
|
+
this._embodiments = await agentDataConnector.getAgentEmbodiments(agentId).catch((error) => []);
|
|
16
|
+
this._ready = true;
|
|
17
|
+
}
|
|
18
|
+
public ready(maxWait = 10000) {
|
|
19
|
+
return new Promise((resolve, reject) => {
|
|
20
|
+
const interval = setInterval(() => {
|
|
21
|
+
if (this._ready) {
|
|
22
|
+
clearInterval(interval);
|
|
23
|
+
resolve(true);
|
|
24
|
+
}
|
|
25
|
+
maxWait -= 100;
|
|
26
|
+
}, 100);
|
|
27
|
+
|
|
28
|
+
setTimeout(() => {
|
|
29
|
+
clearInterval(interval);
|
|
30
|
+
reject(false);
|
|
31
|
+
}, maxWait);
|
|
32
|
+
});
|
|
33
|
+
}
|
|
34
|
+
|
|
35
|
+
public get(embodimentType: string, key?: string) {
|
|
36
|
+
if (!this._embodiments) return undefined;
|
|
37
|
+
const _embodiment = this._embodiments.find((embodiment: any) => embodiment.type?.toLowerCase() === embodimentType.toLowerCase());
|
|
38
|
+
|
|
39
|
+
if (!_embodiment) {
|
|
40
|
+
//console.error(`Error: No ${embodimentType} embodiment found for agent`);
|
|
41
|
+
}
|
|
42
|
+
if (key) {
|
|
43
|
+
return _embodiment?.properties?.[key];
|
|
44
|
+
}
|
|
45
|
+
return _embodiment?.properties;
|
|
46
|
+
}
|
|
47
|
+
}
|