@smythos/sre 1.5.8 → 1.5.9
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/dist/index.js +116 -116
- package/dist/index.js.map +1 -1
- package/dist/types/index.d.ts +1 -1
- package/dist/types/subsystems/LLMManager/ModelsProvider.service/connectors/JSONModelsProvider.class.d.ts +39 -0
- package/package.json +1 -1
- package/src/Core/SmythRuntime.class.ts +1 -1
- package/src/index.ts +1 -1
- package/src/index.ts.bak +1 -1
- package/src/subsystems/LLMManager/ModelsProvider.service/connectors/{SmythModelsProvider.class.ts → JSONModelsProvider.class.ts} +31 -8
- package/src/subsystems/LLMManager/ModelsProvider.service/index.ts +2 -2
package/dist/types/index.d.ts
CHANGED
|
@@ -159,7 +159,7 @@ export * from './subsystems/LLMManager/LLM.service/connectors/Groq.class';
|
|
|
159
159
|
export * from './subsystems/LLMManager/LLM.service/connectors/OpenAI.class';
|
|
160
160
|
export * from './subsystems/LLMManager/LLM.service/connectors/Perplexity.class';
|
|
161
161
|
export * from './subsystems/LLMManager/LLM.service/connectors/VertexAI.class';
|
|
162
|
-
export * from './subsystems/LLMManager/ModelsProvider.service/connectors/
|
|
162
|
+
export * from './subsystems/LLMManager/ModelsProvider.service/connectors/JSONModelsProvider.class';
|
|
163
163
|
export * from './subsystems/MemoryManager/Cache.service/connectors/LocalStorageCache.class';
|
|
164
164
|
export * from './subsystems/MemoryManager/Cache.service/connectors/RAMCache.class';
|
|
165
165
|
export * from './subsystems/MemoryManager/Cache.service/connectors/RedisCache.class';
|
|
@@ -0,0 +1,39 @@
|
|
|
1
|
+
import { AccessRequest } from '@sre/Security/AccessControl/AccessRequest.class';
|
|
2
|
+
import { ModelsProviderConnector } from '../ModelsProviderConnector';
|
|
3
|
+
import { IAccessCandidate } from '@sre/types/ACL.types';
|
|
4
|
+
import { ACL } from '@sre/Security/AccessControl/ACL.class';
|
|
5
|
+
import { TLLMModelsList } from '@sre/types/LLM.types';
|
|
6
|
+
type SmythModelsProviderConfig = {
|
|
7
|
+
/**
|
|
8
|
+
* The models to be used.
|
|
9
|
+
*
|
|
10
|
+
* If a string is provided, it will be used as the directory name to load the models from.
|
|
11
|
+
* If a TLLMModelsList is provided, it will be used as the models to be used.
|
|
12
|
+
*
|
|
13
|
+
*/
|
|
14
|
+
models?: string | TLLMModelsList;
|
|
15
|
+
/**
|
|
16
|
+
* The mode to be used.
|
|
17
|
+
*
|
|
18
|
+
* If 'append' is used, the models will be appended to the existing models.
|
|
19
|
+
* If 'replace' is used, the existing models will be replaced with the new models.
|
|
20
|
+
*/
|
|
21
|
+
mode?: 'merge' | 'replace';
|
|
22
|
+
};
|
|
23
|
+
export declare class JSONModelsProvider extends ModelsProviderConnector {
|
|
24
|
+
protected _settings?: SmythModelsProviderConfig;
|
|
25
|
+
name: string;
|
|
26
|
+
private models;
|
|
27
|
+
constructor(_settings?: SmythModelsProviderConfig);
|
|
28
|
+
start(): Promise<void>;
|
|
29
|
+
addModels(acRequest: AccessRequest, models: TLLMModelsList): Promise<void>;
|
|
30
|
+
getModels(acRequest: AccessRequest): Promise<any>;
|
|
31
|
+
getResourceACL(resourceId: string, candidate: IAccessCandidate): Promise<ACL>;
|
|
32
|
+
private reindexModels;
|
|
33
|
+
private scanDirectoryForModels;
|
|
34
|
+
private getValidModels;
|
|
35
|
+
private isValidSingleModel;
|
|
36
|
+
private isValidModel;
|
|
37
|
+
private initDirWatcher;
|
|
38
|
+
}
|
|
39
|
+
export {};
|
package/package.json
CHANGED
package/src/index.ts
CHANGED
|
@@ -165,7 +165,7 @@ export * from './subsystems/LLMManager/LLM.service/connectors/Groq.class';
|
|
|
165
165
|
export * from './subsystems/LLMManager/LLM.service/connectors/OpenAI.class';
|
|
166
166
|
export * from './subsystems/LLMManager/LLM.service/connectors/Perplexity.class';
|
|
167
167
|
export * from './subsystems/LLMManager/LLM.service/connectors/VertexAI.class';
|
|
168
|
-
export * from './subsystems/LLMManager/ModelsProvider.service/connectors/
|
|
168
|
+
export * from './subsystems/LLMManager/ModelsProvider.service/connectors/JSONModelsProvider.class';
|
|
169
169
|
export * from './subsystems/MemoryManager/Cache.service/connectors/LocalStorageCache.class';
|
|
170
170
|
export * from './subsystems/MemoryManager/Cache.service/connectors/RAMCache.class';
|
|
171
171
|
export * from './subsystems/MemoryManager/Cache.service/connectors/RedisCache.class';
|
package/src/index.ts.bak
CHANGED
|
@@ -165,7 +165,7 @@ export * from './subsystems/LLMManager/LLM.service/connectors/Groq.class';
|
|
|
165
165
|
export * from './subsystems/LLMManager/LLM.service/connectors/OpenAI.class';
|
|
166
166
|
export * from './subsystems/LLMManager/LLM.service/connectors/Perplexity.class';
|
|
167
167
|
export * from './subsystems/LLMManager/LLM.service/connectors/VertexAI.class';
|
|
168
|
-
export * from './subsystems/LLMManager/ModelsProvider.service/connectors/
|
|
168
|
+
export * from './subsystems/LLMManager/ModelsProvider.service/connectors/JSONModelsProvider.class';
|
|
169
169
|
export * from './subsystems/MemoryManager/Cache.service/connectors/LocalStorageCache.class';
|
|
170
170
|
export * from './subsystems/MemoryManager/Cache.service/connectors/RAMCache.class';
|
|
171
171
|
export * from './subsystems/MemoryManager/Cache.service/connectors/RedisCache.class';
|
|
@@ -12,6 +12,7 @@ import { Logger } from '@sre/helpers/Log.helper';
|
|
|
12
12
|
import { debounce } from '@sre/utils/general.utils';
|
|
13
13
|
import chokidar from 'chokidar';
|
|
14
14
|
import fs from 'fs/promises';
|
|
15
|
+
import fsSync from 'fs';
|
|
15
16
|
import path from 'path';
|
|
16
17
|
|
|
17
18
|
const console = Logger('SmythModelsProvider');
|
|
@@ -35,8 +36,8 @@ type SmythModelsProviderConfig = {
|
|
|
35
36
|
mode?: 'merge' | 'replace';
|
|
36
37
|
};
|
|
37
38
|
|
|
38
|
-
export class
|
|
39
|
-
public name = '
|
|
39
|
+
export class JSONModelsProvider extends ModelsProviderConnector {
|
|
40
|
+
public name = 'JSONModelsProvider';
|
|
40
41
|
|
|
41
42
|
private models: TLLMModelsList;
|
|
42
43
|
|
|
@@ -99,7 +100,7 @@ export class SmythModelsProvider extends ModelsProviderConnector {
|
|
|
99
100
|
this.models = scannedModels;
|
|
100
101
|
}
|
|
101
102
|
|
|
102
|
-
|
|
103
|
+
JSONModelsProvider.localCache.clear();
|
|
103
104
|
|
|
104
105
|
console.debug(`Successfully reindexed models. Total models: ${Object.keys(this.models).length}`);
|
|
105
106
|
} catch (error) {
|
|
@@ -185,9 +186,30 @@ export class SmythModelsProvider extends ModelsProviderConnector {
|
|
|
185
186
|
return this.isValidSingleModel(data);
|
|
186
187
|
}
|
|
187
188
|
|
|
188
|
-
private
|
|
189
|
-
|
|
190
|
-
|
|
189
|
+
private initDirWatcher(dir) {
|
|
190
|
+
// Synchronous file system operations for initial setup
|
|
191
|
+
try {
|
|
192
|
+
const stats = fsSync.statSync(dir);
|
|
193
|
+
|
|
194
|
+
if (!stats.isDirectory()) {
|
|
195
|
+
//is it a file?
|
|
196
|
+
if (stats.isFile()) {
|
|
197
|
+
//load the file
|
|
198
|
+
const fileContent = fsSync.readFileSync(dir, 'utf-8');
|
|
199
|
+
const modelData = JSON.parse(fileContent);
|
|
200
|
+
|
|
201
|
+
if (this._settings?.mode === 'merge') this.models = { ...this.models, ...modelData };
|
|
202
|
+
else this.models = modelData;
|
|
203
|
+
|
|
204
|
+
this.started = true;
|
|
205
|
+
return;
|
|
206
|
+
}
|
|
207
|
+
|
|
208
|
+
console.warn(`Path "${dir}" is neither a file nor a directory`);
|
|
209
|
+
return;
|
|
210
|
+
}
|
|
211
|
+
} catch (error) {
|
|
212
|
+
console.warn(`Path "${dir}" does not exist or cannot be accessed:`, error.message);
|
|
191
213
|
return;
|
|
192
214
|
}
|
|
193
215
|
|
|
@@ -220,10 +242,11 @@ export class SmythModelsProvider extends ModelsProviderConnector {
|
|
|
220
242
|
console.debug(`File ${path} has been removed`);
|
|
221
243
|
debouncedReindex();
|
|
222
244
|
})
|
|
223
|
-
.on('ready', () => {
|
|
245
|
+
.on('ready', async () => {
|
|
224
246
|
console.debug(`Watcher ready. Performing initial scan of ${dir}`);
|
|
225
247
|
// Do initial scan once when watcher is ready
|
|
226
|
-
this.reindexModels(dir);
|
|
248
|
+
await this.reindexModels(dir);
|
|
249
|
+
this.started = true;
|
|
227
250
|
});
|
|
228
251
|
}
|
|
229
252
|
}
|
|
@@ -2,10 +2,10 @@
|
|
|
2
2
|
|
|
3
3
|
import { ConnectorService, ConnectorServiceProvider } from '@sre/Core/ConnectorsService';
|
|
4
4
|
import { TConnectorService } from '@sre/types/SRE.types';
|
|
5
|
-
import {
|
|
5
|
+
import { JSONModelsProvider } from './connectors/JSONModelsProvider.class';
|
|
6
6
|
|
|
7
7
|
export class ModelsProviderService extends ConnectorServiceProvider {
|
|
8
8
|
public register() {
|
|
9
|
-
ConnectorService.register(TConnectorService.ModelsProvider, '
|
|
9
|
+
ConnectorService.register(TConnectorService.ModelsProvider, 'JSONModelsProvider', JSONModelsProvider);
|
|
10
10
|
}
|
|
11
11
|
}
|