@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,15 +1,15 @@
|
|
|
1
|
-
//==[ SRE: Cache ]======================
|
|
2
|
-
import { ConnectorServiceProvider, ConnectorService } from '@sre/Core/ConnectorsService';
|
|
3
|
-
import { TConnectorService } from '@sre/types/SRE.types';
|
|
4
|
-
import { RedisCache } from './connectors/RedisCache.class';
|
|
5
|
-
import { S3Cache } from './connectors/S3Cache.class';
|
|
6
|
-
import { LocalStorageCache } from './connectors/LocalStorageCache.class';
|
|
7
|
-
import { RAMCache } from './connectors/RAMCache.class';
|
|
8
|
-
export class CacheService extends ConnectorServiceProvider {
|
|
9
|
-
public register() {
|
|
10
|
-
ConnectorService.register(TConnectorService.Cache, 'Redis', RedisCache);
|
|
11
|
-
ConnectorService.register(TConnectorService.Cache, 'S3', S3Cache);
|
|
12
|
-
ConnectorService.register(TConnectorService.Cache, 'LocalStorage', LocalStorageCache);
|
|
13
|
-
ConnectorService.register(TConnectorService.Cache, 'RAM', RAMCache);
|
|
14
|
-
}
|
|
15
|
-
}
|
|
1
|
+
//==[ SRE: Cache ]======================
|
|
2
|
+
import { ConnectorServiceProvider, ConnectorService } from '@sre/Core/ConnectorsService';
|
|
3
|
+
import { TConnectorService } from '@sre/types/SRE.types';
|
|
4
|
+
import { RedisCache } from './connectors/RedisCache.class';
|
|
5
|
+
import { S3Cache } from './connectors/S3Cache.class';
|
|
6
|
+
import { LocalStorageCache } from './connectors/LocalStorageCache.class';
|
|
7
|
+
import { RAMCache } from './connectors/RAMCache.class';
|
|
8
|
+
export class CacheService extends ConnectorServiceProvider {
|
|
9
|
+
public register() {
|
|
10
|
+
ConnectorService.register(TConnectorService.Cache, 'Redis', RedisCache);
|
|
11
|
+
ConnectorService.register(TConnectorService.Cache, 'S3', S3Cache);
|
|
12
|
+
ConnectorService.register(TConnectorService.Cache, 'LocalStorage', LocalStorageCache);
|
|
13
|
+
ConnectorService.register(TConnectorService.Cache, 'RAM', RAMCache);
|
|
14
|
+
}
|
|
15
|
+
}
|
|
@@ -1,72 +1,72 @@
|
|
|
1
|
-
import { ConnectorService } from '@sre/Core/ConnectorsService';
|
|
2
|
-
import { CacheConnector } from './Cache.service/CacheConnector';
|
|
3
|
-
import { AccessCandidate } from '@sre/Security/AccessControl/AccessCandidate.class';
|
|
4
|
-
import { uid } from '@sre/utils/index';
|
|
5
|
-
|
|
6
|
-
export type LLMCacheObject = {
|
|
7
|
-
ttl: number;
|
|
8
|
-
data: any;
|
|
9
|
-
};
|
|
10
|
-
|
|
11
|
-
export class LLMCache {
|
|
12
|
-
private _cacheConnector: CacheConnector;
|
|
13
|
-
private _cacheId: string;
|
|
14
|
-
private _ttl: number;
|
|
15
|
-
private _candidate: AccessCandidate;
|
|
16
|
-
|
|
17
|
-
public get id() {
|
|
18
|
-
return this._cacheId;
|
|
19
|
-
}
|
|
20
|
-
|
|
21
|
-
/**
|
|
22
|
-
* Creates a new LLMCache instace for a smythOS actor, the actor can be an agent, a user or a team
|
|
23
|
-
* This is mainly use with agent to maintain a cache of the current LLM context
|
|
24
|
-
*
|
|
25
|
-
* This class can be used to share llm contexts data accross multiple instances of an agent, or between a ConversationHelper and a remote agent
|
|
26
|
-
*
|
|
27
|
-
* @param candidate
|
|
28
|
-
* @param cacheId
|
|
29
|
-
* @param ttl
|
|
30
|
-
*/
|
|
31
|
-
constructor(candidate: AccessCandidate, cacheId?: string, ttl: number = 1 * 60 * 60) {
|
|
32
|
-
this._cacheConnector = ConnectorService.getCacheConnector();
|
|
33
|
-
this._cacheId = cacheId || 'llm_cache_' + uid();
|
|
34
|
-
this._ttl = ttl;
|
|
35
|
-
this._candidate = candidate;
|
|
36
|
-
}
|
|
37
|
-
|
|
38
|
-
async set(key: string, data: any) {
|
|
39
|
-
if (!this._cacheConnector.valid) return;
|
|
40
|
-
|
|
41
|
-
await this._cacheConnector
|
|
42
|
-
.requester(this._candidate)
|
|
43
|
-
.set(`${this._cacheId}:${key}`, typeof data === 'object' ? JSON.stringify(data) : data, null, null, this._ttl);
|
|
44
|
-
}
|
|
45
|
-
async get(key: string, format: 'json' | 'text' = 'json') {
|
|
46
|
-
if (!this._cacheConnector.valid) return;
|
|
47
|
-
|
|
48
|
-
const obj = await this._cacheConnector.requester(this._candidate).get(`${this._cacheId}:${key}`);
|
|
49
|
-
let result;
|
|
50
|
-
if (format === 'json') {
|
|
51
|
-
try {
|
|
52
|
-
result = JSON.parse(obj);
|
|
53
|
-
} catch (e) {
|
|
54
|
-
console.warn(`Invalid JSON data for key ${key}`);
|
|
55
|
-
result = null;
|
|
56
|
-
}
|
|
57
|
-
} else {
|
|
58
|
-
result = obj;
|
|
59
|
-
}
|
|
60
|
-
return result;
|
|
61
|
-
}
|
|
62
|
-
async delete(key: string) {
|
|
63
|
-
if (!this._cacheConnector.valid) return;
|
|
64
|
-
|
|
65
|
-
await this._cacheConnector.requester(this._candidate).delete(`${this._cacheId}:${key}`);
|
|
66
|
-
}
|
|
67
|
-
async clear() {
|
|
68
|
-
if (!this._cacheConnector.valid) return;
|
|
69
|
-
|
|
70
|
-
await this._cacheConnector.requester(this._candidate).delete(this._cacheId);
|
|
71
|
-
}
|
|
72
|
-
}
|
|
1
|
+
import { ConnectorService } from '@sre/Core/ConnectorsService';
|
|
2
|
+
import { CacheConnector } from './Cache.service/CacheConnector';
|
|
3
|
+
import { AccessCandidate } from '@sre/Security/AccessControl/AccessCandidate.class';
|
|
4
|
+
import { uid } from '@sre/utils/index';
|
|
5
|
+
|
|
6
|
+
export type LLMCacheObject = {
|
|
7
|
+
ttl: number;
|
|
8
|
+
data: any;
|
|
9
|
+
};
|
|
10
|
+
|
|
11
|
+
export class LLMCache {
|
|
12
|
+
private _cacheConnector: CacheConnector;
|
|
13
|
+
private _cacheId: string;
|
|
14
|
+
private _ttl: number;
|
|
15
|
+
private _candidate: AccessCandidate;
|
|
16
|
+
|
|
17
|
+
public get id() {
|
|
18
|
+
return this._cacheId;
|
|
19
|
+
}
|
|
20
|
+
|
|
21
|
+
/**
|
|
22
|
+
* Creates a new LLMCache instace for a smythOS actor, the actor can be an agent, a user or a team
|
|
23
|
+
* This is mainly use with agent to maintain a cache of the current LLM context
|
|
24
|
+
*
|
|
25
|
+
* This class can be used to share llm contexts data accross multiple instances of an agent, or between a ConversationHelper and a remote agent
|
|
26
|
+
*
|
|
27
|
+
* @param candidate
|
|
28
|
+
* @param cacheId
|
|
29
|
+
* @param ttl
|
|
30
|
+
*/
|
|
31
|
+
constructor(candidate: AccessCandidate, cacheId?: string, ttl: number = 1 * 60 * 60) {
|
|
32
|
+
this._cacheConnector = ConnectorService.getCacheConnector();
|
|
33
|
+
this._cacheId = cacheId || 'llm_cache_' + uid();
|
|
34
|
+
this._ttl = ttl;
|
|
35
|
+
this._candidate = candidate;
|
|
36
|
+
}
|
|
37
|
+
|
|
38
|
+
async set(key: string, data: any) {
|
|
39
|
+
if (!this._cacheConnector.valid) return;
|
|
40
|
+
|
|
41
|
+
await this._cacheConnector
|
|
42
|
+
.requester(this._candidate)
|
|
43
|
+
.set(`${this._cacheId}:${key}`, typeof data === 'object' ? JSON.stringify(data) : data, null, null, this._ttl);
|
|
44
|
+
}
|
|
45
|
+
async get(key: string, format: 'json' | 'text' = 'json') {
|
|
46
|
+
if (!this._cacheConnector.valid) return;
|
|
47
|
+
|
|
48
|
+
const obj = await this._cacheConnector.requester(this._candidate).get(`${this._cacheId}:${key}`);
|
|
49
|
+
let result;
|
|
50
|
+
if (format === 'json') {
|
|
51
|
+
try {
|
|
52
|
+
result = JSON.parse(obj);
|
|
53
|
+
} catch (e) {
|
|
54
|
+
console.warn(`Invalid JSON data for key ${key}`);
|
|
55
|
+
result = null;
|
|
56
|
+
}
|
|
57
|
+
} else {
|
|
58
|
+
result = obj;
|
|
59
|
+
}
|
|
60
|
+
return result;
|
|
61
|
+
}
|
|
62
|
+
async delete(key: string) {
|
|
63
|
+
if (!this._cacheConnector.valid) return;
|
|
64
|
+
|
|
65
|
+
await this._cacheConnector.requester(this._candidate).delete(`${this._cacheId}:${key}`);
|
|
66
|
+
}
|
|
67
|
+
async clear() {
|
|
68
|
+
if (!this._cacheConnector.valid) return;
|
|
69
|
+
|
|
70
|
+
await this._cacheConnector.requester(this._candidate).delete(this._cacheId);
|
|
71
|
+
}
|
|
72
|
+
}
|
|
@@ -1,124 +1,124 @@
|
|
|
1
|
-
import { encode, encodeChat } from 'gpt-tokenizer';
|
|
2
|
-
import { ChatMessage } from 'gpt-tokenizer/esm/GptEncoding';
|
|
3
|
-
import { ILLMContextStore } from '@sre/types/LLM.types';
|
|
4
|
-
import { LLMCache } from './LLMCache';
|
|
5
|
-
import { AccessCandidate } from '@sre/Security/AccessControl/AccessCandidate.class';
|
|
6
|
-
|
|
7
|
-
//content, name, role, tool_call_id, tool_calls, function_call
|
|
8
|
-
export class LLMContext {
|
|
9
|
-
private _systemPrompt: string = '';
|
|
10
|
-
private _llmContextStore: ILLMContextStore;
|
|
11
|
-
private _llmCache: LLMCache;
|
|
12
|
-
|
|
13
|
-
public get systemPrompt() {
|
|
14
|
-
return this._systemPrompt;
|
|
15
|
-
}
|
|
16
|
-
public set systemPrompt(systemPrompt) {
|
|
17
|
-
this._systemPrompt = systemPrompt;
|
|
18
|
-
this._llmCache?.set('systemPrompt', this.systemPrompt);
|
|
19
|
-
}
|
|
20
|
-
|
|
21
|
-
public get llmCache() {
|
|
22
|
-
return this._llmCache;
|
|
23
|
-
}
|
|
24
|
-
|
|
25
|
-
public contextLength: number;
|
|
26
|
-
|
|
27
|
-
private _messages: any[] = [];
|
|
28
|
-
public get messages() {
|
|
29
|
-
return this._messages;
|
|
30
|
-
}
|
|
31
|
-
|
|
32
|
-
public get model() {
|
|
33
|
-
return this.llmInference.model;
|
|
34
|
-
}
|
|
35
|
-
/**
|
|
36
|
-
*
|
|
37
|
-
* @param source a messages[] object, or smyth file system uri (smythfs://...)
|
|
38
|
-
*/
|
|
39
|
-
constructor(
|
|
40
|
-
private llmInference,
|
|
41
|
-
_systemPrompt: string = '',
|
|
42
|
-
llmContextStore?: ILLMContextStore,
|
|
43
|
-
) {
|
|
44
|
-
this._llmCache = new LLMCache(AccessCandidate.team(this.llmInference.teamId));
|
|
45
|
-
//this._systemPrompt = _systemPrompt;
|
|
46
|
-
this.systemPrompt = _systemPrompt;
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
if (llmContextStore) {
|
|
50
|
-
this._llmContextStore = llmContextStore;
|
|
51
|
-
this._llmContextStore.load().then((messages) => {
|
|
52
|
-
this._messages = messages;
|
|
53
|
-
this._llmCache.set('messages', this._messages);
|
|
54
|
-
});
|
|
55
|
-
}
|
|
56
|
-
}
|
|
57
|
-
|
|
58
|
-
private push(...message: any[]) {
|
|
59
|
-
this._messages.push(...message);
|
|
60
|
-
|
|
61
|
-
if (this._llmContextStore) {
|
|
62
|
-
this._llmContextStore.save(this._messages);
|
|
63
|
-
}
|
|
64
|
-
this._llmCache.set('messages', this._messages);
|
|
65
|
-
}
|
|
66
|
-
public addUserMessage(content: string, message_id: string, metadata?: any) {
|
|
67
|
-
//in the current implementation, we do not support forked conversations
|
|
68
|
-
//we always attatch to the last message in the queue
|
|
69
|
-
|
|
70
|
-
//TODO: implement forked conversations ==> might require updating the interfaces in order to support passing previous message_id explicitly
|
|
71
|
-
const lastMessage = this._messages[this._messages.length - 1];
|
|
72
|
-
|
|
73
|
-
if (lastMessage) {
|
|
74
|
-
if (!lastMessage.__smyth_data__?.next) {
|
|
75
|
-
lastMessage.__smyth_data__.next = [];
|
|
76
|
-
}
|
|
77
|
-
lastMessage.__smyth_data__.next.push(message_id);
|
|
78
|
-
}
|
|
79
|
-
|
|
80
|
-
const prev = lastMessage?.__smyth_data__?.message_id;
|
|
81
|
-
const next = [];
|
|
82
|
-
|
|
83
|
-
this.push({ role: 'user', content, __smyth_data__: { message_id, ...metadata, prev, next } });
|
|
84
|
-
}
|
|
85
|
-
public addAssistantMessage(content: string, message_id: string, metadata?: any) {
|
|
86
|
-
const lastMessage = this._messages[this._messages.length - 1];
|
|
87
|
-
|
|
88
|
-
if (lastMessage) {
|
|
89
|
-
if (!lastMessage.__smyth_data__?.next) {
|
|
90
|
-
lastMessage.__smyth_data__.next = [];
|
|
91
|
-
}
|
|
92
|
-
lastMessage.__smyth_data__.next.push(message_id);
|
|
93
|
-
}
|
|
94
|
-
|
|
95
|
-
const prev = lastMessage?.__smyth_data__?.message_id;
|
|
96
|
-
const next = [];
|
|
97
|
-
this.push({ role: 'assistant', content, __smyth_data__: { message_id, ...metadata, prev, next } });
|
|
98
|
-
}
|
|
99
|
-
public addToolMessage(messageBlock: any, toolsData: any, message_id: string, metadata?: any) {
|
|
100
|
-
const lastMessage = this._messages[this._messages.length - 1];
|
|
101
|
-
|
|
102
|
-
if (lastMessage) {
|
|
103
|
-
if (!lastMessage.__smyth_data__?.next) {
|
|
104
|
-
lastMessage.__smyth_data__.next = [];
|
|
105
|
-
}
|
|
106
|
-
lastMessage.__smyth_data__.next.push(message_id);
|
|
107
|
-
}
|
|
108
|
-
|
|
109
|
-
const prev = lastMessage?.__smyth_data__?.message_id;
|
|
110
|
-
const next = [];
|
|
111
|
-
this.push({ messageBlock, toolsData, __smyth_data__: { message_id, ...metadata, prev, next } });
|
|
112
|
-
}
|
|
113
|
-
|
|
114
|
-
public async getContextWindow(maxTokens: number, maxOutputTokens: number = 1024): Promise<any[]> {
|
|
115
|
-
const messages = JSON.parse(JSON.stringify(this._messages));
|
|
116
|
-
// if (messages[0]?.role === 'system') {
|
|
117
|
-
// messages[0].content = this.systemPrompt;
|
|
118
|
-
// } else {
|
|
119
|
-
// messages.unshift({ role: 'system', content: this.systemPrompt });
|
|
120
|
-
// }
|
|
121
|
-
|
|
122
|
-
return this.llmInference.getContextWindow(this.systemPrompt, messages, maxTokens, maxOutputTokens);
|
|
123
|
-
}
|
|
124
|
-
}
|
|
1
|
+
import { encode, encodeChat } from 'gpt-tokenizer';
|
|
2
|
+
import { ChatMessage } from 'gpt-tokenizer/esm/GptEncoding';
|
|
3
|
+
import { ILLMContextStore } from '@sre/types/LLM.types';
|
|
4
|
+
import { LLMCache } from './LLMCache';
|
|
5
|
+
import { AccessCandidate } from '@sre/Security/AccessControl/AccessCandidate.class';
|
|
6
|
+
|
|
7
|
+
//content, name, role, tool_call_id, tool_calls, function_call
|
|
8
|
+
export class LLMContext {
|
|
9
|
+
private _systemPrompt: string = '';
|
|
10
|
+
private _llmContextStore: ILLMContextStore;
|
|
11
|
+
private _llmCache: LLMCache;
|
|
12
|
+
|
|
13
|
+
public get systemPrompt() {
|
|
14
|
+
return this._systemPrompt;
|
|
15
|
+
}
|
|
16
|
+
public set systemPrompt(systemPrompt) {
|
|
17
|
+
this._systemPrompt = systemPrompt;
|
|
18
|
+
this._llmCache?.set('systemPrompt', this.systemPrompt);
|
|
19
|
+
}
|
|
20
|
+
|
|
21
|
+
public get llmCache() {
|
|
22
|
+
return this._llmCache;
|
|
23
|
+
}
|
|
24
|
+
|
|
25
|
+
public contextLength: number;
|
|
26
|
+
|
|
27
|
+
private _messages: any[] = [];
|
|
28
|
+
public get messages() {
|
|
29
|
+
return this._messages;
|
|
30
|
+
}
|
|
31
|
+
|
|
32
|
+
public get model() {
|
|
33
|
+
return this.llmInference.model;
|
|
34
|
+
}
|
|
35
|
+
/**
|
|
36
|
+
*
|
|
37
|
+
* @param source a messages[] object, or smyth file system uri (smythfs://...)
|
|
38
|
+
*/
|
|
39
|
+
constructor(
|
|
40
|
+
private llmInference,
|
|
41
|
+
_systemPrompt: string = '',
|
|
42
|
+
llmContextStore?: ILLMContextStore,
|
|
43
|
+
) {
|
|
44
|
+
this._llmCache = new LLMCache(AccessCandidate.team(this.llmInference.teamId));
|
|
45
|
+
//this._systemPrompt = _systemPrompt;
|
|
46
|
+
this.systemPrompt = _systemPrompt;
|
|
47
|
+
|
|
48
|
+
|
|
49
|
+
if (llmContextStore) {
|
|
50
|
+
this._llmContextStore = llmContextStore;
|
|
51
|
+
this._llmContextStore.load().then((messages) => {
|
|
52
|
+
this._messages = messages;
|
|
53
|
+
this._llmCache.set('messages', this._messages);
|
|
54
|
+
});
|
|
55
|
+
}
|
|
56
|
+
}
|
|
57
|
+
|
|
58
|
+
private push(...message: any[]) {
|
|
59
|
+
this._messages.push(...message);
|
|
60
|
+
|
|
61
|
+
if (this._llmContextStore) {
|
|
62
|
+
this._llmContextStore.save(this._messages);
|
|
63
|
+
}
|
|
64
|
+
this._llmCache.set('messages', this._messages);
|
|
65
|
+
}
|
|
66
|
+
public addUserMessage(content: string, message_id: string, metadata?: any) {
|
|
67
|
+
//in the current implementation, we do not support forked conversations
|
|
68
|
+
//we always attatch to the last message in the queue
|
|
69
|
+
|
|
70
|
+
//TODO: implement forked conversations ==> might require updating the interfaces in order to support passing previous message_id explicitly
|
|
71
|
+
const lastMessage = this._messages[this._messages.length - 1];
|
|
72
|
+
|
|
73
|
+
if (lastMessage) {
|
|
74
|
+
if (!lastMessage.__smyth_data__?.next) {
|
|
75
|
+
lastMessage.__smyth_data__.next = [];
|
|
76
|
+
}
|
|
77
|
+
lastMessage.__smyth_data__.next.push(message_id);
|
|
78
|
+
}
|
|
79
|
+
|
|
80
|
+
const prev = lastMessage?.__smyth_data__?.message_id;
|
|
81
|
+
const next = [];
|
|
82
|
+
|
|
83
|
+
this.push({ role: 'user', content, __smyth_data__: { message_id, ...metadata, prev, next } });
|
|
84
|
+
}
|
|
85
|
+
public addAssistantMessage(content: string, message_id: string, metadata?: any) {
|
|
86
|
+
const lastMessage = this._messages[this._messages.length - 1];
|
|
87
|
+
|
|
88
|
+
if (lastMessage) {
|
|
89
|
+
if (!lastMessage.__smyth_data__?.next) {
|
|
90
|
+
lastMessage.__smyth_data__.next = [];
|
|
91
|
+
}
|
|
92
|
+
lastMessage.__smyth_data__.next.push(message_id);
|
|
93
|
+
}
|
|
94
|
+
|
|
95
|
+
const prev = lastMessage?.__smyth_data__?.message_id;
|
|
96
|
+
const next = [];
|
|
97
|
+
this.push({ role: 'assistant', content, __smyth_data__: { message_id, ...metadata, prev, next } });
|
|
98
|
+
}
|
|
99
|
+
public addToolMessage(messageBlock: any, toolsData: any, message_id: string, metadata?: any) {
|
|
100
|
+
const lastMessage = this._messages[this._messages.length - 1];
|
|
101
|
+
|
|
102
|
+
if (lastMessage) {
|
|
103
|
+
if (!lastMessage.__smyth_data__?.next) {
|
|
104
|
+
lastMessage.__smyth_data__.next = [];
|
|
105
|
+
}
|
|
106
|
+
lastMessage.__smyth_data__.next.push(message_id);
|
|
107
|
+
}
|
|
108
|
+
|
|
109
|
+
const prev = lastMessage?.__smyth_data__?.message_id;
|
|
110
|
+
const next = [];
|
|
111
|
+
this.push({ messageBlock, toolsData, __smyth_data__: { message_id, ...metadata, prev, next } });
|
|
112
|
+
}
|
|
113
|
+
|
|
114
|
+
public async getContextWindow(maxTokens: number, maxOutputTokens: number = 1024): Promise<any[]> {
|
|
115
|
+
const messages = JSON.parse(JSON.stringify(this._messages));
|
|
116
|
+
// if (messages[0]?.role === 'system') {
|
|
117
|
+
// messages[0].content = this.systemPrompt;
|
|
118
|
+
// } else {
|
|
119
|
+
// messages.unshift({ role: 'system', content: this.systemPrompt });
|
|
120
|
+
// }
|
|
121
|
+
|
|
122
|
+
return this.llmInference.getContextWindow(this.systemPrompt, messages, maxTokens, maxOutputTokens);
|
|
123
|
+
}
|
|
124
|
+
}
|
|
@@ -1,26 +1,26 @@
|
|
|
1
|
-
import { AccessCandidate } from '@sre/Security/AccessControl/AccessCandidate.class';
|
|
2
|
-
import { AccessRequest } from '@sre/Security/AccessControl/AccessRequest.class';
|
|
3
|
-
import { ACL } from '@sre/Security/AccessControl/ACL.class';
|
|
4
|
-
import { SecureConnector } from '@sre/Security/SecureConnector.class';
|
|
5
|
-
import { IAccessCandidate } from '@sre/types/ACL.types';
|
|
6
|
-
|
|
7
|
-
export interface ILLMMemoryRequest {
|
|
8
|
-
load: (messages: any[]) => Promise<any>;
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
}
|
|
12
|
-
|
|
13
|
-
export abstract class LLMMemoryConnector extends SecureConnector {
|
|
14
|
-
public abstract getResourceACL(resourceId: string, candidate: IAccessCandidate): Promise<ACL>;
|
|
15
|
-
public requester(candidate: AccessCandidate): ILLMMemoryRequest {
|
|
16
|
-
return {
|
|
17
|
-
load: async (messages: any[]) => {
|
|
18
|
-
return await this.load(candidate.readRequest, messages);
|
|
19
|
-
},
|
|
20
|
-
};
|
|
21
|
-
}
|
|
22
|
-
|
|
23
|
-
abstract load(acRequest: AccessRequest, messages: any[]): Promise<any>;
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
}
|
|
1
|
+
import { AccessCandidate } from '@sre/Security/AccessControl/AccessCandidate.class';
|
|
2
|
+
import { AccessRequest } from '@sre/Security/AccessControl/AccessRequest.class';
|
|
3
|
+
import { ACL } from '@sre/Security/AccessControl/ACL.class';
|
|
4
|
+
import { SecureConnector } from '@sre/Security/SecureConnector.class';
|
|
5
|
+
import { IAccessCandidate } from '@sre/types/ACL.types';
|
|
6
|
+
|
|
7
|
+
export interface ILLMMemoryRequest {
|
|
8
|
+
load: (messages: any[]) => Promise<any>;
|
|
9
|
+
|
|
10
|
+
|
|
11
|
+
}
|
|
12
|
+
|
|
13
|
+
export abstract class LLMMemoryConnector extends SecureConnector {
|
|
14
|
+
public abstract getResourceACL(resourceId: string, candidate: IAccessCandidate): Promise<ACL>;
|
|
15
|
+
public requester(candidate: AccessCandidate): ILLMMemoryRequest {
|
|
16
|
+
return {
|
|
17
|
+
load: async (messages: any[]) => {
|
|
18
|
+
return await this.load(candidate.readRequest, messages);
|
|
19
|
+
},
|
|
20
|
+
};
|
|
21
|
+
}
|
|
22
|
+
|
|
23
|
+
abstract load(acRequest: AccessRequest, messages: any[]): Promise<any>;
|
|
24
|
+
|
|
25
|
+
|
|
26
|
+
}
|