@smythos/sre 1.7.11 → 1.7.15
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 +48 -48
- package/dist/index.js.map +1 -1
- package/dist/types/Components/APICall/OAuth.helper.d.ts +1 -1
- package/dist/types/Core/ConnectorsService.d.ts +3 -1
- package/dist/types/Core/HookService.d.ts +18 -0
- package/dist/types/helpers/Conversation.helper.d.ts +3 -0
- package/dist/types/index.d.ts +7 -3
- package/dist/types/subsystems/ObservabilityManager/Log.service/LogConnector.d.ts +3 -1
- package/dist/types/subsystems/ObservabilityManager/Log.service/connectors/ConsoleLog.class.d.ts +1 -0
- package/dist/types/subsystems/ObservabilityManager/Log.service/connectors/OTel/OTel.class.d.ts +59 -0
- package/dist/types/subsystems/ObservabilityManager/Log.service/connectors/OTel/OTelContextRegistry.d.ts +16 -0
- package/dist/types/subsystems/ObservabilityManager/Telemetry.service/TelemetryConnector.d.ts +13 -0
- package/dist/types/subsystems/ObservabilityManager/Telemetry.service/connectors/OTel/OTel.class.d.ts +59 -0
- package/dist/types/subsystems/ObservabilityManager/Telemetry.service/connectors/OTel/OTelContextRegistry.d.ts +16 -0
- package/dist/types/subsystems/ObservabilityManager/Telemetry.service/index.d.ts +4 -0
- package/dist/types/types/LLM.types.d.ts +3 -1
- package/dist/types/types/SRE.types.d.ts +5 -2
- package/package.json +9 -1
- package/src/Components/APICall/OAuth.helper.ts +24 -25
- package/src/Components/APICall/mimeTypeCategories.ts +16 -1
- package/src/Components/Component.class.ts +3 -1
- package/src/Core/ConnectorsService.ts +5 -1
- package/src/Core/HookService.ts +104 -12
- package/src/Core/boot.ts +3 -1
- package/src/helpers/Conversation.helper.ts +42 -15
- package/src/index.ts +212 -208
- package/src/index.ts.bak +212 -208
- package/src/subsystems/AgentManager/Agent.class.ts +9 -8
- package/src/subsystems/AgentManager/AgentRuntime.class.ts +4 -4
- package/src/subsystems/AgentManager/OSResourceMonitor.ts +69 -8
- package/src/subsystems/LLMManager/LLM.service/connectors/Echo.class.ts +1 -1
- package/src/subsystems/{IO → ObservabilityManager}/Log.service/LogConnector.ts +6 -1
- package/src/subsystems/{IO → ObservabilityManager}/Log.service/connectors/ConsoleLog.class.ts +6 -3
- package/src/subsystems/{IO → ObservabilityManager}/Log.service/index.ts +1 -2
- package/src/subsystems/ObservabilityManager/Telemetry.service/TelemetryConnector.ts +23 -0
- package/src/subsystems/ObservabilityManager/Telemetry.service/connectors/OTel/OTel.class.ts +759 -0
- package/src/subsystems/ObservabilityManager/Telemetry.service/connectors/OTel/OTelContextRegistry.ts +35 -0
- package/src/subsystems/ObservabilityManager/Telemetry.service/index.ts +12 -0
- package/src/types/LLM.types.ts +2 -0
- package/src/types/SRE.types.ts +4 -1
|
@@ -1,12 +1,34 @@
|
|
|
1
1
|
import os from 'os';
|
|
2
2
|
import process from 'process';
|
|
3
3
|
|
|
4
|
-
|
|
4
|
+
// Store previous CPU times for delta calculation
|
|
5
|
+
let previousCpuTimes: { user: number; nice: number; sys: number; idle: number; irq: number } | null = null;
|
|
6
|
+
|
|
7
|
+
const monitorData: any = {
|
|
5
8
|
mem: getMemoryUsage(),
|
|
6
|
-
//processMemory: getProcessMemoryUsage(),
|
|
7
9
|
cpu: getCpuUsage(),
|
|
10
|
+
//processMemory: getProcessMemoryUsage(),
|
|
8
11
|
//processCpu: getProcessCpuUsage(),
|
|
9
12
|
};
|
|
13
|
+
|
|
14
|
+
const itv = setInterval(() => {
|
|
15
|
+
monitorData.mem = getMemoryUsage();
|
|
16
|
+
monitorData.cpu = getCpuUsage();
|
|
17
|
+
//monitorData.processMemory = getProcessMemoryUsage();
|
|
18
|
+
//monitorData.processCpu = getProcessCpuUsage();
|
|
19
|
+
}, 5000);
|
|
20
|
+
|
|
21
|
+
itv.unref();
|
|
22
|
+
|
|
23
|
+
const OSResourceMonitor: any = {
|
|
24
|
+
get mem() {
|
|
25
|
+
return monitorData.mem;
|
|
26
|
+
},
|
|
27
|
+
get cpu() {
|
|
28
|
+
return monitorData.cpu;
|
|
29
|
+
},
|
|
30
|
+
};
|
|
31
|
+
|
|
10
32
|
export { OSResourceMonitor };
|
|
11
33
|
|
|
12
34
|
function getCpuUsage() {
|
|
@@ -16,8 +38,8 @@ function getCpuUsage() {
|
|
|
16
38
|
let sys = 0;
|
|
17
39
|
let idle = 0;
|
|
18
40
|
let irq = 0;
|
|
19
|
-
let total = 0;
|
|
20
41
|
|
|
42
|
+
// Sum up times across all CPU cores
|
|
21
43
|
for (let cpu of cpus) {
|
|
22
44
|
user += cpu.times.user;
|
|
23
45
|
nice += cpu.times.nice;
|
|
@@ -26,13 +48,52 @@ function getCpuUsage() {
|
|
|
26
48
|
irq += cpu.times.irq;
|
|
27
49
|
}
|
|
28
50
|
|
|
29
|
-
|
|
51
|
+
const currentTimes = { user, nice, sys, idle, irq };
|
|
52
|
+
|
|
53
|
+
// If this is the first measurement, store it and return zero load
|
|
54
|
+
if (!previousCpuTimes) {
|
|
55
|
+
previousCpuTimes = currentTimes;
|
|
56
|
+
return {
|
|
57
|
+
user: 0,
|
|
58
|
+
sys: 0,
|
|
59
|
+
idle: 100,
|
|
60
|
+
load: 0,
|
|
61
|
+
};
|
|
62
|
+
}
|
|
63
|
+
|
|
64
|
+
// Calculate deltas since last measurement
|
|
65
|
+
const userDelta = currentTimes.user - previousCpuTimes.user;
|
|
66
|
+
const niceDelta = currentTimes.nice - previousCpuTimes.nice;
|
|
67
|
+
const sysDelta = currentTimes.sys - previousCpuTimes.sys;
|
|
68
|
+
const idleDelta = currentTimes.idle - previousCpuTimes.idle;
|
|
69
|
+
const irqDelta = currentTimes.irq - previousCpuTimes.irq;
|
|
70
|
+
|
|
71
|
+
const totalDelta = userDelta + niceDelta + sysDelta + idleDelta + irqDelta;
|
|
72
|
+
|
|
73
|
+
// Store current times for next calculation
|
|
74
|
+
previousCpuTimes = currentTimes;
|
|
75
|
+
|
|
76
|
+
// Avoid division by zero
|
|
77
|
+
if (totalDelta === 0) {
|
|
78
|
+
return {
|
|
79
|
+
user: 0,
|
|
80
|
+
sys: 0,
|
|
81
|
+
idle: 100,
|
|
82
|
+
load: 0,
|
|
83
|
+
};
|
|
84
|
+
}
|
|
85
|
+
|
|
86
|
+
// Calculate percentages based on delta (actual usage since last check)
|
|
87
|
+
const userPercent = (userDelta / totalDelta) * 100;
|
|
88
|
+
const sysPercent = (sysDelta / totalDelta) * 100;
|
|
89
|
+
const idlePercent = (idleDelta / totalDelta) * 100;
|
|
90
|
+
const loadPercent = 100 - idlePercent;
|
|
30
91
|
|
|
31
92
|
return {
|
|
32
|
-
user: (
|
|
33
|
-
sys: (
|
|
34
|
-
idle: (
|
|
35
|
-
load:
|
|
93
|
+
user: Math.round(userPercent * 100) / 100, // Round to 2 decimals
|
|
94
|
+
sys: Math.round(sysPercent * 100) / 100,
|
|
95
|
+
idle: Math.round(idlePercent * 100) / 100,
|
|
96
|
+
load: Math.round(loadPercent * 100) / 100,
|
|
36
97
|
};
|
|
37
98
|
}
|
|
38
99
|
|
|
@@ -49,7 +49,7 @@ export class EchoConnector extends LLMConnector {
|
|
|
49
49
|
|
|
50
50
|
for (let i = 0; i < chunks.length; i++) {
|
|
51
51
|
// Simulate network delay
|
|
52
|
-
await delay(
|
|
52
|
+
await delay(3);
|
|
53
53
|
|
|
54
54
|
const isLastChunk = i === chunks.length - 1;
|
|
55
55
|
// Add space between chunks except for the last one to avoid trailing space in file URLs
|
|
@@ -12,7 +12,10 @@ export interface ILogRequest {
|
|
|
12
12
|
|
|
13
13
|
export abstract class LogConnector extends SecureConnector {
|
|
14
14
|
public abstract id: string;
|
|
15
|
-
|
|
15
|
+
|
|
16
|
+
constructor() {
|
|
17
|
+
super();
|
|
18
|
+
}
|
|
16
19
|
|
|
17
20
|
public requester(candidate: AccessCandidate): ILogRequest {
|
|
18
21
|
if (candidate.role !== 'agent') throw new Error('Only agents can use Log connector');
|
|
@@ -27,6 +30,8 @@ export abstract class LogConnector extends SecureConnector {
|
|
|
27
30
|
};
|
|
28
31
|
}
|
|
29
32
|
|
|
33
|
+
public abstract getResourceACL(resourceId: string, candidate: IAccessCandidate): Promise<ACL>;
|
|
30
34
|
protected abstract log(acRequest: AccessRequest, logData: AgentCallLog, callId?: string): Promise<any>;
|
|
31
35
|
protected abstract logTask(acRequest: AccessRequest, tasks: number, isUsingTestDomain: boolean): Promise<void>;
|
|
36
|
+
protected abstract setupHooks(): Promise<void>;
|
|
32
37
|
}
|
package/src/subsystems/{IO → ObservabilityManager}/Log.service/connectors/ConsoleLog.class.ts
RENAMED
|
@@ -5,7 +5,7 @@ import { IAccessCandidate } from '@sre/types/ACL.types';
|
|
|
5
5
|
import { LogConnector } from '../LogConnector';
|
|
6
6
|
import { AgentCallLog } from '@sre/types/AgentLogger.types';
|
|
7
7
|
|
|
8
|
-
const
|
|
8
|
+
const logger = Logger('SmythLog');
|
|
9
9
|
|
|
10
10
|
export class ConsoleLog extends LogConnector {
|
|
11
11
|
public name: string = 'ConsoleLog';
|
|
@@ -14,15 +14,18 @@ export class ConsoleLog extends LogConnector {
|
|
|
14
14
|
return Promise.resolve(new ACL());
|
|
15
15
|
}
|
|
16
16
|
protected log(acRequest: AccessRequest, logData: AgentCallLog, callId?: string): Promise<any> {
|
|
17
|
-
|
|
17
|
+
logger.debug(`Log for agent ${acRequest.candidate.id}: ${typeof logData === 'string' ? logData : JSON.stringify(logData)}`);
|
|
18
18
|
|
|
19
19
|
return Promise.resolve();
|
|
20
20
|
}
|
|
21
21
|
protected logTask(acRequest: AccessRequest, tasks: number, isUsingTestDomain: boolean): Promise<void> {
|
|
22
|
-
|
|
22
|
+
logger.debug(
|
|
23
23
|
`${tasks} Task(s) Consumed by agent ${acRequest.candidate.id}: ${isUsingTestDomain ? 'Using Test Domain' : 'Using Production Domain'}`
|
|
24
24
|
);
|
|
25
25
|
|
|
26
26
|
return Promise.resolve();
|
|
27
27
|
}
|
|
28
|
+
protected setupHooks(): Promise<void> {
|
|
29
|
+
return Promise.resolve();
|
|
30
|
+
}
|
|
28
31
|
}
|
|
@@ -1,10 +1,9 @@
|
|
|
1
1
|
import { ConnectorService, ConnectorServiceProvider } from '@sre/Core/ConnectorsService';
|
|
2
2
|
import { TConnectorService } from '@sre/types/SRE.types';
|
|
3
|
-
import { Logger } from '@sre/helpers/Log.helper';
|
|
4
3
|
|
|
5
4
|
import { ConsoleLog } from './connectors/ConsoleLog.class';
|
|
6
5
|
|
|
7
|
-
const console = Logger('LogService');
|
|
6
|
+
//const console = Logger('LogService');
|
|
8
7
|
|
|
9
8
|
export class LogService extends ConnectorServiceProvider {
|
|
10
9
|
public register() {
|
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
import { SecureConnector } from '@sre/Security/SecureConnector.class';
|
|
2
|
+
import { IAccessCandidate } from '@sre/types/ACL.types';
|
|
3
|
+
import { ACL } from '@sre/Security/AccessControl/ACL.class';
|
|
4
|
+
import { AccessCandidate } from '@sre/Security/AccessControl/AccessCandidate.class';
|
|
5
|
+
import { AccessRequest } from '@sre/Security/AccessControl/AccessRequest.class';
|
|
6
|
+
import { AgentCallLog } from '@sre/types/AgentLogger.types';
|
|
7
|
+
|
|
8
|
+
export interface ITelemetryRequest {}
|
|
9
|
+
|
|
10
|
+
export abstract class TelemetryConnector extends SecureConnector {
|
|
11
|
+
public abstract id: string;
|
|
12
|
+
|
|
13
|
+
constructor() {
|
|
14
|
+
super();
|
|
15
|
+
}
|
|
16
|
+
|
|
17
|
+
public requester(candidate: AccessCandidate): ITelemetryRequest {
|
|
18
|
+
return {};
|
|
19
|
+
}
|
|
20
|
+
|
|
21
|
+
public abstract getResourceACL(resourceId: string, candidate: IAccessCandidate): Promise<ACL>;
|
|
22
|
+
protected abstract setupHooks(): Promise<void>;
|
|
23
|
+
}
|