@hazeljs/agent 0.2.0-beta.1
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/IMPLEMENTATION_SUMMARY.md +400 -0
- package/PERSISTENCE.md +201 -0
- package/PRISMA_INTEGRATION.md +499 -0
- package/PRODUCTION_READINESS.md +264 -0
- package/QUICKSTART.md +135 -0
- package/README.md +427 -0
- package/STATE_VS_MEMORY.md +243 -0
- package/dist/agent.module.d.ts +42 -0
- package/dist/agent.module.d.ts.map +1 -0
- package/dist/agent.module.js +90 -0
- package/dist/agent.module.js.map +1 -0
- package/dist/context/agent.context.d.ts +27 -0
- package/dist/context/agent.context.d.ts.map +1 -0
- package/dist/context/agent.context.js +98 -0
- package/dist/context/agent.context.js.map +1 -0
- package/dist/decorators/agent.decorator.d.ts +21 -0
- package/dist/decorators/agent.decorator.d.ts.map +1 -0
- package/dist/decorators/agent.decorator.js +38 -0
- package/dist/decorators/agent.decorator.js.map +1 -0
- package/dist/decorators/tool.decorator.d.ts +23 -0
- package/dist/decorators/tool.decorator.d.ts.map +1 -0
- package/dist/decorators/tool.decorator.js +61 -0
- package/dist/decorators/tool.decorator.js.map +1 -0
- package/dist/events/event.emitter.d.ts +45 -0
- package/dist/events/event.emitter.d.ts.map +1 -0
- package/dist/events/event.emitter.js +96 -0
- package/dist/events/event.emitter.js.map +1 -0
- package/dist/executor/agent.executor.d.ts +57 -0
- package/dist/executor/agent.executor.d.ts.map +1 -0
- package/dist/executor/agent.executor.js +303 -0
- package/dist/executor/agent.executor.js.map +1 -0
- package/dist/executor/tool.executor.d.ts +53 -0
- package/dist/executor/tool.executor.d.ts.map +1 -0
- package/dist/executor/tool.executor.js +234 -0
- package/dist/executor/tool.executor.js.map +1 -0
- package/dist/index.d.ts +30 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +46 -0
- package/dist/index.js.map +1 -0
- package/dist/registry/agent.registry.d.ts +49 -0
- package/dist/registry/agent.registry.d.ts.map +1 -0
- package/dist/registry/agent.registry.js +90 -0
- package/dist/registry/agent.registry.js.map +1 -0
- package/dist/registry/tool.registry.d.ts +54 -0
- package/dist/registry/tool.registry.d.ts.map +1 -0
- package/dist/registry/tool.registry.js +153 -0
- package/dist/registry/tool.registry.js.map +1 -0
- package/dist/runtime/agent.runtime.d.ts +155 -0
- package/dist/runtime/agent.runtime.d.ts.map +1 -0
- package/dist/runtime/agent.runtime.extensions.d.ts +49 -0
- package/dist/runtime/agent.runtime.extensions.d.ts.map +1 -0
- package/dist/runtime/agent.runtime.extensions.js +93 -0
- package/dist/runtime/agent.runtime.extensions.js.map +1 -0
- package/dist/runtime/agent.runtime.js +347 -0
- package/dist/runtime/agent.runtime.js.map +1 -0
- package/dist/state/agent-state.interface.d.ts +63 -0
- package/dist/state/agent-state.interface.d.ts.map +1 -0
- package/dist/state/agent-state.interface.js +7 -0
- package/dist/state/agent-state.interface.js.map +1 -0
- package/dist/state/agent.state.d.ts +67 -0
- package/dist/state/agent.state.d.ts.map +1 -0
- package/dist/state/agent.state.js +172 -0
- package/dist/state/agent.state.js.map +1 -0
- package/dist/state/database-state.manager.d.ts +63 -0
- package/dist/state/database-state.manager.d.ts.map +1 -0
- package/dist/state/database-state.manager.js +282 -0
- package/dist/state/database-state.manager.js.map +1 -0
- package/dist/state/redis-state.manager.d.ts +81 -0
- package/dist/state/redis-state.manager.d.ts.map +1 -0
- package/dist/state/redis-state.manager.js +253 -0
- package/dist/state/redis-state.manager.js.map +1 -0
- package/dist/types/agent.types.d.ts +151 -0
- package/dist/types/agent.types.d.ts.map +1 -0
- package/dist/types/agent.types.js +32 -0
- package/dist/types/agent.types.js.map +1 -0
- package/dist/types/event.types.d.ts +123 -0
- package/dist/types/event.types.d.ts.map +1 -0
- package/dist/types/event.types.js +30 -0
- package/dist/types/event.types.js.map +1 -0
- package/dist/types/llm.types.d.ts +66 -0
- package/dist/types/llm.types.d.ts.map +1 -0
- package/dist/types/llm.types.js +7 -0
- package/dist/types/llm.types.js.map +1 -0
- package/dist/types/rag.types.d.ts +40 -0
- package/dist/types/rag.types.d.ts.map +1 -0
- package/dist/types/rag.types.js +7 -0
- package/dist/types/rag.types.js.map +1 -0
- package/dist/types/tool.types.d.ts +118 -0
- package/dist/types/tool.types.d.ts.map +1 -0
- package/dist/types/tool.types.js +19 -0
- package/dist/types/tool.types.js.map +1 -0
- package/dist/utils/circuit-breaker.d.ts +69 -0
- package/dist/utils/circuit-breaker.d.ts.map +1 -0
- package/dist/utils/circuit-breaker.js +156 -0
- package/dist/utils/circuit-breaker.js.map +1 -0
- package/dist/utils/health-check.d.ts +71 -0
- package/dist/utils/health-check.d.ts.map +1 -0
- package/dist/utils/health-check.js +156 -0
- package/dist/utils/health-check.js.map +1 -0
- package/dist/utils/logger.d.ts +53 -0
- package/dist/utils/logger.d.ts.map +1 -0
- package/dist/utils/logger.js +133 -0
- package/dist/utils/logger.js.map +1 -0
- package/dist/utils/metrics.d.ts +90 -0
- package/dist/utils/metrics.d.ts.map +1 -0
- package/dist/utils/metrics.js +186 -0
- package/dist/utils/metrics.js.map +1 -0
- package/dist/utils/rate-limiter.d.ts +44 -0
- package/dist/utils/rate-limiter.d.ts.map +1 -0
- package/dist/utils/rate-limiter.js +82 -0
- package/dist/utils/rate-limiter.js.map +1 -0
- package/dist/utils/retry.d.ts +42 -0
- package/dist/utils/retry.d.ts.map +1 -0
- package/dist/utils/retry.js +103 -0
- package/dist/utils/retry.js.map +1 -0
- package/package.json +58 -0
- package/prisma-schema.example.prisma +76 -0
|
@@ -0,0 +1,93 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
/**
|
|
3
|
+
* Agent Runtime Extensions
|
|
4
|
+
* Additional methods for health checks, metrics, and monitoring
|
|
5
|
+
*/
|
|
6
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
7
|
+
exports.AgentRuntimeExtensions = void 0;
|
|
8
|
+
/**
|
|
9
|
+
* Extended methods for AgentRuntime
|
|
10
|
+
*/
|
|
11
|
+
class AgentRuntimeExtensions {
|
|
12
|
+
/**
|
|
13
|
+
* Get health check status
|
|
14
|
+
*/
|
|
15
|
+
static async getHealthCheck(runtime) {
|
|
16
|
+
// eslint-disable-next-line @typescript-eslint/no-explicit-any
|
|
17
|
+
const healthChecker = runtime.healthChecker;
|
|
18
|
+
// eslint-disable-next-line @typescript-eslint/no-explicit-any
|
|
19
|
+
const metrics = runtime.metrics;
|
|
20
|
+
// eslint-disable-next-line @typescript-eslint/no-explicit-any
|
|
21
|
+
const config = runtime.config;
|
|
22
|
+
const metricsData = metrics
|
|
23
|
+
? {
|
|
24
|
+
totalExecutions: metrics.getMetrics().executions.total,
|
|
25
|
+
successRate: metrics.getMetrics().executions.successRate,
|
|
26
|
+
averageLatency: metrics.getMetrics().performance.averageDuration,
|
|
27
|
+
}
|
|
28
|
+
: undefined;
|
|
29
|
+
return healthChecker.check(config.llmProvider, config.ragService, metricsData);
|
|
30
|
+
}
|
|
31
|
+
/**
|
|
32
|
+
* Get metrics summary
|
|
33
|
+
*/
|
|
34
|
+
static getMetrics(runtime) {
|
|
35
|
+
// eslint-disable-next-line @typescript-eslint/no-explicit-any
|
|
36
|
+
const metrics = runtime.metrics;
|
|
37
|
+
return metrics ? metrics.getMetrics() : null;
|
|
38
|
+
}
|
|
39
|
+
/**
|
|
40
|
+
* Get metrics summary as string
|
|
41
|
+
*/
|
|
42
|
+
static getMetricsSummary(runtime) {
|
|
43
|
+
// eslint-disable-next-line @typescript-eslint/no-explicit-any
|
|
44
|
+
const metrics = runtime.metrics;
|
|
45
|
+
return metrics ? metrics.getSummary() : 'Metrics not enabled';
|
|
46
|
+
}
|
|
47
|
+
/**
|
|
48
|
+
* Reset metrics
|
|
49
|
+
*/
|
|
50
|
+
static resetMetrics(runtime) {
|
|
51
|
+
// eslint-disable-next-line @typescript-eslint/no-explicit-any
|
|
52
|
+
const metrics = runtime.metrics;
|
|
53
|
+
if (metrics) {
|
|
54
|
+
metrics.reset();
|
|
55
|
+
}
|
|
56
|
+
}
|
|
57
|
+
/**
|
|
58
|
+
* Get rate limiter status
|
|
59
|
+
*/
|
|
60
|
+
static getRateLimiterStatus(runtime) {
|
|
61
|
+
// eslint-disable-next-line @typescript-eslint/no-explicit-any
|
|
62
|
+
const rateLimiter = runtime.rateLimiter;
|
|
63
|
+
return {
|
|
64
|
+
enabled: !!rateLimiter,
|
|
65
|
+
availableTokens: rateLimiter?.getAvailableTokens(),
|
|
66
|
+
};
|
|
67
|
+
}
|
|
68
|
+
/**
|
|
69
|
+
* Get circuit breaker status
|
|
70
|
+
*/
|
|
71
|
+
static getCircuitBreakerStatus(runtime) {
|
|
72
|
+
// eslint-disable-next-line @typescript-eslint/no-explicit-any
|
|
73
|
+
const circuitBreaker = runtime.circuitBreaker;
|
|
74
|
+
return {
|
|
75
|
+
enabled: !!circuitBreaker,
|
|
76
|
+
state: circuitBreaker?.getState(),
|
|
77
|
+
failureCount: circuitBreaker?.getFailureCount(),
|
|
78
|
+
successCount: circuitBreaker?.getSuccessCount(),
|
|
79
|
+
};
|
|
80
|
+
}
|
|
81
|
+
/**
|
|
82
|
+
* Reset circuit breaker
|
|
83
|
+
*/
|
|
84
|
+
static resetCircuitBreaker(runtime) {
|
|
85
|
+
// eslint-disable-next-line @typescript-eslint/no-explicit-any
|
|
86
|
+
const circuitBreaker = runtime.circuitBreaker;
|
|
87
|
+
if (circuitBreaker) {
|
|
88
|
+
circuitBreaker.reset();
|
|
89
|
+
}
|
|
90
|
+
}
|
|
91
|
+
}
|
|
92
|
+
exports.AgentRuntimeExtensions = AgentRuntimeExtensions;
|
|
93
|
+
//# sourceMappingURL=agent.runtime.extensions.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"agent.runtime.extensions.js","sourceRoot":"","sources":["../../src/runtime/agent.runtime.extensions.ts"],"names":[],"mappings":";AAAA;;;GAGG;;;AAMH;;GAEG;AACH,MAAa,sBAAsB;IACjC;;OAEG;IACH,MAAM,CAAC,KAAK,CAAC,cAAc,CAAC,OAAqB;QAC/C,8DAA8D;QAC9D,MAAM,aAAa,GAAI,OAAe,CAAC,aAAa,CAAC;QACrD,8DAA8D;QAC9D,MAAM,OAAO,GAAI,OAAe,CAAC,OAAO,CAAC;QACzC,8DAA8D;QAC9D,MAAM,MAAM,GAAI,OAAe,CAAC,MAAM,CAAC;QAEvC,MAAM,WAAW,GAAG,OAAO;YACzB,CAAC,CAAC;gBACE,eAAe,EAAE,OAAO,CAAC,UAAU,EAAE,CAAC,UAAU,CAAC,KAAK;gBACtD,WAAW,EAAE,OAAO,CAAC,UAAU,EAAE,CAAC,UAAU,CAAC,WAAW;gBACxD,cAAc,EAAE,OAAO,CAAC,UAAU,EAAE,CAAC,WAAW,CAAC,eAAe;aACjE;YACH,CAAC,CAAC,SAAS,CAAC;QAEd,OAAO,aAAa,CAAC,KAAK,CAAC,MAAM,CAAC,WAAW,EAAE,MAAM,CAAC,UAAU,EAAE,WAAW,CAAC,CAAC;IACjF,CAAC;IAED;;OAEG;IACH,MAAM,CAAC,UAAU,CAAC,OAAqB;QACrC,8DAA8D;QAC9D,MAAM,OAAO,GAAI,OAAe,CAAC,OAAO,CAAC;QACzC,OAAO,OAAO,CAAC,CAAC,CAAC,OAAO,CAAC,UAAU,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC;IAC/C,CAAC;IAED;;OAEG;IACH,MAAM,CAAC,iBAAiB,CAAC,OAAqB;QAC5C,8DAA8D;QAC9D,MAAM,OAAO,GAAI,OAAe,CAAC,OAAO,CAAC;QACzC,OAAO,OAAO,CAAC,CAAC,CAAC,OAAO,CAAC,UAAU,EAAE,CAAC,CAAC,CAAC,qBAAqB,CAAC;IAChE,CAAC;IAED;;OAEG;IACH,MAAM,CAAC,YAAY,CAAC,OAAqB;QACvC,8DAA8D;QAC9D,MAAM,OAAO,GAAI,OAAe,CAAC,OAAO,CAAC;QACzC,IAAI,OAAO,EAAE,CAAC;YACZ,OAAO,CAAC,KAAK,EAAE,CAAC;QAClB,CAAC;IACH,CAAC;IAED;;OAEG;IACH,MAAM,CAAC,oBAAoB,CAAC,OAAqB;QAI/C,8DAA8D;QAC9D,MAAM,WAAW,GAAI,OAAe,CAAC,WAAW,CAAC;QACjD,OAAO;YACL,OAAO,EAAE,CAAC,CAAC,WAAW;YACtB,eAAe,EAAE,WAAW,EAAE,kBAAkB,EAAE;SACnD,CAAC;IACJ,CAAC;IAED;;OAEG;IACH,MAAM,CAAC,uBAAuB,CAAC,OAAqB;QAMlD,8DAA8D;QAC9D,MAAM,cAAc,GAAI,OAAe,CAAC,cAAc,CAAC;QACvD,OAAO;YACL,OAAO,EAAE,CAAC,CAAC,cAAc;YACzB,KAAK,EAAE,cAAc,EAAE,QAAQ,EAAE;YACjC,YAAY,EAAE,cAAc,EAAE,eAAe,EAAE;YAC/C,YAAY,EAAE,cAAc,EAAE,eAAe,EAAE;SAChD,CAAC;IACJ,CAAC;IAED;;OAEG;IACH,MAAM,CAAC,mBAAmB,CAAC,OAAqB;QAC9C,8DAA8D;QAC9D,MAAM,cAAc,GAAI,OAAe,CAAC,cAAc,CAAC;QACvD,IAAI,cAAc,EAAE,CAAC;YACnB,cAAc,CAAC,KAAK,EAAE,CAAC;QACzB,CAAC;IACH,CAAC;CACF;AAhGD,wDAgGC"}
|
|
@@ -0,0 +1,347 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
/**
|
|
3
|
+
* Agent Runtime
|
|
4
|
+
* Main runtime for managing agent lifecycle and execution
|
|
5
|
+
*/
|
|
6
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
7
|
+
exports.AgentRuntime = void 0;
|
|
8
|
+
const agent_registry_1 = require("../registry/agent.registry");
|
|
9
|
+
const tool_registry_1 = require("../registry/tool.registry");
|
|
10
|
+
const agent_state_1 = require("../state/agent.state");
|
|
11
|
+
const agent_context_1 = require("../context/agent.context");
|
|
12
|
+
const agent_executor_1 = require("../executor/agent.executor");
|
|
13
|
+
const tool_executor_1 = require("../executor/tool.executor");
|
|
14
|
+
const event_emitter_1 = require("../events/event.emitter");
|
|
15
|
+
const agent_types_1 = require("../types/agent.types");
|
|
16
|
+
const rate_limiter_1 = require("../utils/rate-limiter");
|
|
17
|
+
const metrics_1 = require("../utils/metrics");
|
|
18
|
+
const logger_1 = require("../utils/logger");
|
|
19
|
+
const retry_1 = require("../utils/retry");
|
|
20
|
+
const circuit_breaker_1 = require("../utils/circuit-breaker");
|
|
21
|
+
const health_check_1 = require("../utils/health-check");
|
|
22
|
+
/**
|
|
23
|
+
* Agent Runtime
|
|
24
|
+
* Central runtime for agent execution and lifecycle management
|
|
25
|
+
*/
|
|
26
|
+
class AgentRuntime {
|
|
27
|
+
constructor(config = {}) {
|
|
28
|
+
this.config = {
|
|
29
|
+
defaultMaxSteps: 10,
|
|
30
|
+
defaultTimeout: 300000,
|
|
31
|
+
enableObservability: true,
|
|
32
|
+
enableMetrics: true,
|
|
33
|
+
enableRetry: true,
|
|
34
|
+
enableCircuitBreaker: true,
|
|
35
|
+
logLevel: logger_1.LogLevel.INFO,
|
|
36
|
+
...config,
|
|
37
|
+
};
|
|
38
|
+
// Initialize logger
|
|
39
|
+
this.logger = new logger_1.Logger({ level: this.config.logLevel });
|
|
40
|
+
// Initialize rate limiter if configured
|
|
41
|
+
if (this.config.rateLimitPerMinute) {
|
|
42
|
+
this.rateLimiter = new rate_limiter_1.RateLimiter({
|
|
43
|
+
tokensPerMinute: this.config.rateLimitPerMinute,
|
|
44
|
+
});
|
|
45
|
+
this.logger.info('Rate limiter initialized', {
|
|
46
|
+
tokensPerMinute: this.config.rateLimitPerMinute,
|
|
47
|
+
});
|
|
48
|
+
}
|
|
49
|
+
// Initialize metrics collector if enabled
|
|
50
|
+
if (this.config.enableMetrics) {
|
|
51
|
+
this.metrics = new metrics_1.MetricsCollector();
|
|
52
|
+
this.logger.info('Metrics collector initialized');
|
|
53
|
+
}
|
|
54
|
+
// Initialize retry handler if enabled
|
|
55
|
+
if (this.config.enableRetry) {
|
|
56
|
+
this.retryHandler = new retry_1.RetryHandler({
|
|
57
|
+
maxRetries: 3,
|
|
58
|
+
initialDelayMs: 1000,
|
|
59
|
+
onRetry: (attempt, error) => {
|
|
60
|
+
this.logger.warn('Retrying operation', {
|
|
61
|
+
attempt,
|
|
62
|
+
error: error.message,
|
|
63
|
+
});
|
|
64
|
+
},
|
|
65
|
+
});
|
|
66
|
+
}
|
|
67
|
+
// Initialize circuit breaker if enabled
|
|
68
|
+
if (this.config.enableCircuitBreaker) {
|
|
69
|
+
this.circuitBreaker = new circuit_breaker_1.CircuitBreaker({
|
|
70
|
+
failureThreshold: 5,
|
|
71
|
+
successThreshold: 2,
|
|
72
|
+
resetTimeout: 30000,
|
|
73
|
+
onStateChange: (state) => {
|
|
74
|
+
this.logger.warn('Circuit breaker state changed', { state });
|
|
75
|
+
},
|
|
76
|
+
});
|
|
77
|
+
}
|
|
78
|
+
// Initialize health checker
|
|
79
|
+
this.healthChecker = new health_check_1.HealthChecker();
|
|
80
|
+
this.agentRegistry = new agent_registry_1.AgentRegistry();
|
|
81
|
+
this.toolRegistry = new tool_registry_1.ToolRegistry();
|
|
82
|
+
this.stateManager = config.stateManager || new agent_state_1.AgentStateManager();
|
|
83
|
+
this.contextBuilder = new agent_context_1.AgentContextBuilder(config.memoryManager);
|
|
84
|
+
this.eventEmitter = new event_emitter_1.AgentEventEmitter();
|
|
85
|
+
this.toolExecutor = new tool_executor_1.ToolExecutor((type, data) => {
|
|
86
|
+
this.eventEmitter.emit(type, '', '', data);
|
|
87
|
+
});
|
|
88
|
+
this.agentExecutor = new agent_executor_1.AgentExecutor(this.stateManager, this.contextBuilder, this.toolExecutor, this.toolRegistry, config.llmProvider, (type, executionId, data) => {
|
|
89
|
+
this.eventEmitter.emit(type, '', executionId, data);
|
|
90
|
+
});
|
|
91
|
+
this.logger.info('Agent runtime initialized', {
|
|
92
|
+
enableMetrics: this.config.enableMetrics,
|
|
93
|
+
enableRetry: this.config.enableRetry,
|
|
94
|
+
enableCircuitBreaker: this.config.enableCircuitBreaker,
|
|
95
|
+
});
|
|
96
|
+
}
|
|
97
|
+
/**
|
|
98
|
+
* Register an agent class
|
|
99
|
+
*/
|
|
100
|
+
registerAgent(agentClass) {
|
|
101
|
+
this.agentRegistry.register(agentClass);
|
|
102
|
+
}
|
|
103
|
+
/**
|
|
104
|
+
* Register an agent instance
|
|
105
|
+
*/
|
|
106
|
+
registerAgentInstance(agentName, instance) {
|
|
107
|
+
this.agentRegistry.registerInstance(agentName, instance);
|
|
108
|
+
this.toolRegistry.registerAgentTools(agentName, instance);
|
|
109
|
+
}
|
|
110
|
+
/**
|
|
111
|
+
* Execute an agent
|
|
112
|
+
*/
|
|
113
|
+
async execute(agentName, input, options = {}) {
|
|
114
|
+
// Check rate limit
|
|
115
|
+
if (this.rateLimiter) {
|
|
116
|
+
const allowed = await this.rateLimiter.waitForToken(5000);
|
|
117
|
+
if (!allowed) {
|
|
118
|
+
this.logger.error('Rate limit exceeded', undefined, { agentName });
|
|
119
|
+
throw new Error('Rate limit exceeded - too many requests');
|
|
120
|
+
}
|
|
121
|
+
}
|
|
122
|
+
const startTime = Date.now();
|
|
123
|
+
let success = false;
|
|
124
|
+
try {
|
|
125
|
+
this.logger.info('Starting agent execution', {
|
|
126
|
+
agentName,
|
|
127
|
+
sessionId: options.sessionId,
|
|
128
|
+
userId: options.userId,
|
|
129
|
+
});
|
|
130
|
+
// Execute with retry and circuit breaker
|
|
131
|
+
const result = await this.executeWithProtection(agentName, input, options);
|
|
132
|
+
success = result.state === agent_types_1.AgentState.COMPLETED;
|
|
133
|
+
const duration = Date.now() - startTime;
|
|
134
|
+
// Record metrics
|
|
135
|
+
if (this.metrics) {
|
|
136
|
+
this.metrics.recordExecution(success, duration);
|
|
137
|
+
}
|
|
138
|
+
this.logger.info('Agent execution completed', {
|
|
139
|
+
agentName,
|
|
140
|
+
executionId: result.executionId,
|
|
141
|
+
state: result.state,
|
|
142
|
+
duration,
|
|
143
|
+
});
|
|
144
|
+
return result;
|
|
145
|
+
}
|
|
146
|
+
catch (error) {
|
|
147
|
+
const duration = Date.now() - startTime;
|
|
148
|
+
if (this.metrics) {
|
|
149
|
+
this.metrics.recordExecution(false, duration);
|
|
150
|
+
}
|
|
151
|
+
this.logger.error('Agent execution failed', error, {
|
|
152
|
+
agentName,
|
|
153
|
+
duration,
|
|
154
|
+
});
|
|
155
|
+
throw error;
|
|
156
|
+
}
|
|
157
|
+
}
|
|
158
|
+
/**
|
|
159
|
+
* Execute with retry and circuit breaker protection
|
|
160
|
+
*/
|
|
161
|
+
async executeWithProtection(agentName, input, options) {
|
|
162
|
+
const executeFn = async () => {
|
|
163
|
+
const agent = this.agentRegistry.getAgent(agentName);
|
|
164
|
+
if (!agent) {
|
|
165
|
+
throw new Error(`Agent ${agentName} not found`);
|
|
166
|
+
}
|
|
167
|
+
const sessionId = options.sessionId || this.generateSessionId();
|
|
168
|
+
const maxSteps = options.maxSteps || this.config.defaultMaxSteps || 10;
|
|
169
|
+
const contextResult = this.stateManager.createContext(agentName, sessionId, input, options.userId, {
|
|
170
|
+
...options.metadata,
|
|
171
|
+
systemPrompt: agent.systemPrompt,
|
|
172
|
+
agentDescription: agent.description,
|
|
173
|
+
});
|
|
174
|
+
const context = contextResult instanceof Promise ? await contextResult : contextResult;
|
|
175
|
+
if (options.enableMemory !== false && this.config.memoryManager) {
|
|
176
|
+
await this.contextBuilder.buildWithMemory(context);
|
|
177
|
+
}
|
|
178
|
+
if (options.enableRAG !== false && this.config.ragService) {
|
|
179
|
+
await this.contextBuilder.buildWithRAG(context, this.config.ragService, agent.ragTopK || 5);
|
|
180
|
+
}
|
|
181
|
+
if (options.initialContext) {
|
|
182
|
+
Object.assign(context.memory.workingMemory, options.initialContext);
|
|
183
|
+
}
|
|
184
|
+
const result = await this.agentExecutor.execute(context, maxSteps);
|
|
185
|
+
if (this.config.memoryManager) {
|
|
186
|
+
await this.contextBuilder.persistToMemory(context);
|
|
187
|
+
}
|
|
188
|
+
return result;
|
|
189
|
+
};
|
|
190
|
+
// Apply circuit breaker if enabled
|
|
191
|
+
if (this.circuitBreaker) {
|
|
192
|
+
const circuitBreakerFn = () => this.circuitBreaker.execute(executeFn);
|
|
193
|
+
// Apply retry if enabled
|
|
194
|
+
if (this.retryHandler) {
|
|
195
|
+
return this.retryHandler.execute(circuitBreakerFn);
|
|
196
|
+
}
|
|
197
|
+
return circuitBreakerFn();
|
|
198
|
+
}
|
|
199
|
+
// Apply retry only if circuit breaker is disabled
|
|
200
|
+
if (this.retryHandler) {
|
|
201
|
+
return this.retryHandler.execute(executeFn);
|
|
202
|
+
}
|
|
203
|
+
return executeFn();
|
|
204
|
+
}
|
|
205
|
+
/**
|
|
206
|
+
* Resume a paused execution
|
|
207
|
+
*/
|
|
208
|
+
async resume(executionId, input) {
|
|
209
|
+
return this.agentExecutor.resume(executionId, input);
|
|
210
|
+
}
|
|
211
|
+
/**
|
|
212
|
+
* Get execution context
|
|
213
|
+
*/
|
|
214
|
+
async getContext(executionId) {
|
|
215
|
+
const result = this.stateManager.getContext(executionId);
|
|
216
|
+
return result instanceof Promise ? await result : result;
|
|
217
|
+
}
|
|
218
|
+
/**
|
|
219
|
+
* Subscribe to agent events
|
|
220
|
+
*/
|
|
221
|
+
on(type, handler) {
|
|
222
|
+
this.eventEmitter.on(type, handler);
|
|
223
|
+
}
|
|
224
|
+
/**
|
|
225
|
+
* Subscribe to all agent events
|
|
226
|
+
*/
|
|
227
|
+
onAny(handler) {
|
|
228
|
+
this.eventEmitter.onAny(handler);
|
|
229
|
+
}
|
|
230
|
+
/**
|
|
231
|
+
* Unsubscribe from events
|
|
232
|
+
*/
|
|
233
|
+
off(type, handler) {
|
|
234
|
+
this.eventEmitter.off(type, handler);
|
|
235
|
+
}
|
|
236
|
+
/**
|
|
237
|
+
* Get all registered agents
|
|
238
|
+
*/
|
|
239
|
+
getAgents() {
|
|
240
|
+
return this.agentRegistry.getAllAgents().map((a) => a.name);
|
|
241
|
+
}
|
|
242
|
+
/**
|
|
243
|
+
* Get agent metadata
|
|
244
|
+
*/
|
|
245
|
+
getAgentMetadata(agentName) {
|
|
246
|
+
return this.agentRegistry.getAgent(agentName);
|
|
247
|
+
}
|
|
248
|
+
/**
|
|
249
|
+
* Get health check status
|
|
250
|
+
*/
|
|
251
|
+
async healthCheck() {
|
|
252
|
+
const metricsData = this.metrics
|
|
253
|
+
? {
|
|
254
|
+
totalExecutions: this.metrics.getMetrics().executions.total,
|
|
255
|
+
successRate: this.metrics.getMetrics().executions.successRate,
|
|
256
|
+
averageLatency: this.metrics.getMetrics().performance.averageDuration,
|
|
257
|
+
}
|
|
258
|
+
: undefined;
|
|
259
|
+
return this.healthChecker.check(this.config.llmProvider, this.config.ragService, metricsData);
|
|
260
|
+
}
|
|
261
|
+
/**
|
|
262
|
+
* Get metrics
|
|
263
|
+
*/
|
|
264
|
+
getMetrics() {
|
|
265
|
+
return this.metrics?.getMetrics();
|
|
266
|
+
}
|
|
267
|
+
/**
|
|
268
|
+
* Get metrics summary
|
|
269
|
+
*/
|
|
270
|
+
getMetricsSummary() {
|
|
271
|
+
return this.metrics?.getSummary() || 'Metrics not enabled';
|
|
272
|
+
}
|
|
273
|
+
/**
|
|
274
|
+
* Reset metrics
|
|
275
|
+
*/
|
|
276
|
+
resetMetrics() {
|
|
277
|
+
this.metrics?.reset();
|
|
278
|
+
}
|
|
279
|
+
/**
|
|
280
|
+
* Get rate limiter status
|
|
281
|
+
*/
|
|
282
|
+
getRateLimiterStatus() {
|
|
283
|
+
return {
|
|
284
|
+
enabled: !!this.rateLimiter,
|
|
285
|
+
availableTokens: this.rateLimiter?.getAvailableTokens(),
|
|
286
|
+
};
|
|
287
|
+
}
|
|
288
|
+
/**
|
|
289
|
+
* Get circuit breaker status
|
|
290
|
+
*/
|
|
291
|
+
getCircuitBreakerStatus() {
|
|
292
|
+
return {
|
|
293
|
+
enabled: !!this.circuitBreaker,
|
|
294
|
+
state: this.circuitBreaker?.getState(),
|
|
295
|
+
failureCount: this.circuitBreaker?.getFailureCount(),
|
|
296
|
+
successCount: this.circuitBreaker?.getSuccessCount(),
|
|
297
|
+
};
|
|
298
|
+
}
|
|
299
|
+
/**
|
|
300
|
+
* Reset circuit breaker
|
|
301
|
+
*/
|
|
302
|
+
resetCircuitBreaker() {
|
|
303
|
+
this.circuitBreaker?.reset();
|
|
304
|
+
}
|
|
305
|
+
/**
|
|
306
|
+
* Get agent tools
|
|
307
|
+
*/
|
|
308
|
+
getAgentTools(agentName) {
|
|
309
|
+
return this.toolRegistry.getAgentTools(agentName);
|
|
310
|
+
}
|
|
311
|
+
/**
|
|
312
|
+
* Approve a tool execution
|
|
313
|
+
*/
|
|
314
|
+
approveToolExecution(requestId, approvedBy) {
|
|
315
|
+
this.toolExecutor.approveExecution(requestId, approvedBy);
|
|
316
|
+
}
|
|
317
|
+
/**
|
|
318
|
+
* Reject a tool execution
|
|
319
|
+
*/
|
|
320
|
+
rejectToolExecution(requestId) {
|
|
321
|
+
this.toolExecutor.rejectExecution(requestId);
|
|
322
|
+
}
|
|
323
|
+
/**
|
|
324
|
+
* Get pending tool approvals
|
|
325
|
+
*/
|
|
326
|
+
getPendingApprovals() {
|
|
327
|
+
return this.toolExecutor.getPendingApprovals();
|
|
328
|
+
}
|
|
329
|
+
/**
|
|
330
|
+
* Shutdown the runtime
|
|
331
|
+
*/
|
|
332
|
+
async shutdown() {
|
|
333
|
+
const clearResult = this.stateManager.clear();
|
|
334
|
+
if (clearResult instanceof Promise) {
|
|
335
|
+
await clearResult;
|
|
336
|
+
}
|
|
337
|
+
this.eventEmitter.clear();
|
|
338
|
+
}
|
|
339
|
+
/**
|
|
340
|
+
* Generate a session ID
|
|
341
|
+
*/
|
|
342
|
+
generateSessionId() {
|
|
343
|
+
return `session_${Date.now()}_${Math.random().toString(36).substr(2, 9)}`;
|
|
344
|
+
}
|
|
345
|
+
}
|
|
346
|
+
exports.AgentRuntime = AgentRuntime;
|
|
347
|
+
//# sourceMappingURL=agent.runtime.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"agent.runtime.js","sourceRoot":"","sources":["../../src/runtime/agent.runtime.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,63 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Agent State Manager Interface
|
|
3
|
+
* Defines the contract for state persistence backends
|
|
4
|
+
*/
|
|
5
|
+
import { AgentContext, AgentState, AgentStep } from '../types/agent.types';
|
|
6
|
+
/**
|
|
7
|
+
* Interface for agent state management backends
|
|
8
|
+
*/
|
|
9
|
+
export interface IAgentStateManager {
|
|
10
|
+
/**
|
|
11
|
+
* Create a new agent execution context
|
|
12
|
+
*/
|
|
13
|
+
createContext(agentId: string, sessionId: string, input: string, userId?: string, metadata?: Record<string, unknown>): Promise<AgentContext> | AgentContext;
|
|
14
|
+
/**
|
|
15
|
+
* Get execution context
|
|
16
|
+
*/
|
|
17
|
+
getContext(executionId: string): Promise<AgentContext | undefined> | AgentContext | undefined;
|
|
18
|
+
/**
|
|
19
|
+
* Update agent state
|
|
20
|
+
*/
|
|
21
|
+
updateState(executionId: string, newState: AgentState): Promise<void> | void;
|
|
22
|
+
/**
|
|
23
|
+
* Add a step to the execution
|
|
24
|
+
*/
|
|
25
|
+
addStep(executionId: string, step: AgentStep): Promise<void> | void;
|
|
26
|
+
/**
|
|
27
|
+
* Update the last step
|
|
28
|
+
*/
|
|
29
|
+
updateLastStep(executionId: string, updates: Partial<AgentStep>): Promise<void> | void;
|
|
30
|
+
/**
|
|
31
|
+
* Add message to conversation history
|
|
32
|
+
*/
|
|
33
|
+
addMessage(executionId: string, role: 'user' | 'assistant' | 'system' | 'tool', content: string): Promise<void> | void;
|
|
34
|
+
/**
|
|
35
|
+
* Set working memory value
|
|
36
|
+
*/
|
|
37
|
+
setWorkingMemory(executionId: string, key: string, value: unknown): Promise<void> | void;
|
|
38
|
+
/**
|
|
39
|
+
* Get working memory value
|
|
40
|
+
*/
|
|
41
|
+
getWorkingMemory(executionId: string, key: string): Promise<unknown> | unknown;
|
|
42
|
+
/**
|
|
43
|
+
* Add RAG context
|
|
44
|
+
*/
|
|
45
|
+
addRAGContext(executionId: string, contexts: string[]): Promise<void> | void;
|
|
46
|
+
/**
|
|
47
|
+
* Check if execution can continue
|
|
48
|
+
*/
|
|
49
|
+
canContinue(executionId: string, maxSteps: number): Promise<boolean> | boolean;
|
|
50
|
+
/**
|
|
51
|
+
* Delete execution context
|
|
52
|
+
*/
|
|
53
|
+
deleteContext(executionId: string): Promise<void> | void;
|
|
54
|
+
/**
|
|
55
|
+
* Clear all contexts
|
|
56
|
+
*/
|
|
57
|
+
clear(): Promise<void> | void;
|
|
58
|
+
/**
|
|
59
|
+
* Get all contexts for a session
|
|
60
|
+
*/
|
|
61
|
+
getSessionContexts(sessionId: string): Promise<AgentContext[]> | AgentContext[];
|
|
62
|
+
}
|
|
63
|
+
//# sourceMappingURL=agent-state.interface.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"agent-state.interface.d.ts","sourceRoot":"","sources":["../../src/state/agent-state.interface.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,EAAE,YAAY,EAAE,UAAU,EAAE,SAAS,EAAE,MAAM,sBAAsB,CAAC;AAE3E;;GAEG;AACH,MAAM,WAAW,kBAAkB;IACjC;;OAEG;IACH,aAAa,CACX,OAAO,EAAE,MAAM,EACf,SAAS,EAAE,MAAM,EACjB,KAAK,EAAE,MAAM,EACb,MAAM,CAAC,EAAE,MAAM,EACf,QAAQ,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GACjC,OAAO,CAAC,YAAY,CAAC,GAAG,YAAY,CAAC;IAExC;;OAEG;IACH,UAAU,CAAC,WAAW,EAAE,MAAM,GAAG,OAAO,CAAC,YAAY,GAAG,SAAS,CAAC,GAAG,YAAY,GAAG,SAAS,CAAC;IAE9F;;OAEG;IACH,WAAW,CAAC,WAAW,EAAE,MAAM,EAAE,QAAQ,EAAE,UAAU,GAAG,OAAO,CAAC,IAAI,CAAC,GAAG,IAAI,CAAC;IAE7E;;OAEG;IACH,OAAO,CAAC,WAAW,EAAE,MAAM,EAAE,IAAI,EAAE,SAAS,GAAG,OAAO,CAAC,IAAI,CAAC,GAAG,IAAI,CAAC;IAEpE;;OAEG;IACH,cAAc,CAAC,WAAW,EAAE,MAAM,EAAE,OAAO,EAAE,OAAO,CAAC,SAAS,CAAC,GAAG,OAAO,CAAC,IAAI,CAAC,GAAG,IAAI,CAAC;IAEvF;;OAEG;IACH,UAAU,CACR,WAAW,EAAE,MAAM,EACnB,IAAI,EAAE,MAAM,GAAG,WAAW,GAAG,QAAQ,GAAG,MAAM,EAC9C,OAAO,EAAE,MAAM,GACd,OAAO,CAAC,IAAI,CAAC,GAAG,IAAI,CAAC;IAExB;;OAEG;IACH,gBAAgB,CAAC,WAAW,EAAE,MAAM,EAAE,GAAG,EAAE,MAAM,EAAE,KAAK,EAAE,OAAO,GAAG,OAAO,CAAC,IAAI,CAAC,GAAG,IAAI,CAAC;IAEzF;;OAEG;IACH,gBAAgB,CAAC,WAAW,EAAE,MAAM,EAAE,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC,GAAG,OAAO,CAAC;IAE/E;;OAEG;IACH,aAAa,CAAC,WAAW,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,EAAE,GAAG,OAAO,CAAC,IAAI,CAAC,GAAG,IAAI,CAAC;IAE7E;;OAEG;IACH,WAAW,CAAC,WAAW,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC,GAAG,OAAO,CAAC;IAE/E;;OAEG;IACH,aAAa,CAAC,WAAW,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,GAAG,IAAI,CAAC;IAEzD;;OAEG;IACH,KAAK,IAAI,OAAO,CAAC,IAAI,CAAC,GAAG,IAAI,CAAC;IAE9B;;OAEG;IACH,kBAAkB,CAAC,SAAS,EAAE,MAAM,GAAG,OAAO,CAAC,YAAY,EAAE,CAAC,GAAG,YAAY,EAAE,CAAC;CACjF"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"agent-state.interface.js","sourceRoot":"","sources":["../../src/state/agent-state.interface.ts"],"names":[],"mappings":";AAAA;;;GAGG"}
|
|
@@ -0,0 +1,67 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Agent State Management
|
|
3
|
+
* Manages agent execution state and persistence
|
|
4
|
+
*/
|
|
5
|
+
import { AgentContext, AgentState, AgentStep } from '../types/agent.types';
|
|
6
|
+
import { IAgentStateManager } from './agent-state.interface';
|
|
7
|
+
/**
|
|
8
|
+
* Agent State Manager
|
|
9
|
+
* In-memory implementation - default state manager
|
|
10
|
+
* Handles state transitions and persistence
|
|
11
|
+
*/
|
|
12
|
+
export declare class AgentStateManager implements IAgentStateManager {
|
|
13
|
+
private contexts;
|
|
14
|
+
/**
|
|
15
|
+
* Create a new agent execution context
|
|
16
|
+
*/
|
|
17
|
+
createContext(agentId: string, sessionId: string, input: string, userId?: string, metadata?: Record<string, unknown>): AgentContext;
|
|
18
|
+
/**
|
|
19
|
+
* Get execution context
|
|
20
|
+
*/
|
|
21
|
+
getContext(executionId: string): AgentContext | undefined;
|
|
22
|
+
/**
|
|
23
|
+
* Update agent state
|
|
24
|
+
*/
|
|
25
|
+
updateState(executionId: string, newState: AgentState): void;
|
|
26
|
+
/**
|
|
27
|
+
* Add a step to the execution
|
|
28
|
+
*/
|
|
29
|
+
addStep(executionId: string, step: AgentStep): void;
|
|
30
|
+
/**
|
|
31
|
+
* Update the last step
|
|
32
|
+
*/
|
|
33
|
+
updateLastStep(executionId: string, updates: Partial<AgentStep>): void;
|
|
34
|
+
/**
|
|
35
|
+
* Add message to conversation history
|
|
36
|
+
*/
|
|
37
|
+
addMessage(executionId: string, role: 'user' | 'assistant' | 'system' | 'tool', content: string): void;
|
|
38
|
+
/**
|
|
39
|
+
* Set working memory value
|
|
40
|
+
*/
|
|
41
|
+
setWorkingMemory(executionId: string, key: string, value: unknown): void;
|
|
42
|
+
/**
|
|
43
|
+
* Get working memory value
|
|
44
|
+
*/
|
|
45
|
+
getWorkingMemory(executionId: string, key: string): unknown;
|
|
46
|
+
/**
|
|
47
|
+
* Add RAG context
|
|
48
|
+
*/
|
|
49
|
+
addRAGContext(executionId: string, contexts: string[]): void;
|
|
50
|
+
/**
|
|
51
|
+
* Check if execution can continue
|
|
52
|
+
*/
|
|
53
|
+
canContinue(executionId: string, maxSteps: number): boolean;
|
|
54
|
+
/**
|
|
55
|
+
* Delete execution context
|
|
56
|
+
*/
|
|
57
|
+
deleteContext(executionId: string): void;
|
|
58
|
+
/**
|
|
59
|
+
* Clear all contexts
|
|
60
|
+
*/
|
|
61
|
+
clear(): void;
|
|
62
|
+
/**
|
|
63
|
+
* Get all contexts for a session
|
|
64
|
+
*/
|
|
65
|
+
getSessionContexts(sessionId: string): AgentContext[];
|
|
66
|
+
}
|
|
67
|
+
//# sourceMappingURL=agent.state.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"agent.state.d.ts","sourceRoot":"","sources":["../../src/state/agent.state.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,EAAE,YAAY,EAAE,UAAU,EAAE,SAAS,EAAE,MAAM,sBAAsB,CAAC;AAC3E,OAAO,EAAE,kBAAkB,EAAE,MAAM,yBAAyB,CAAC;AAG7D;;;;GAIG;AACH,qBAAa,iBAAkB,YAAW,kBAAkB;IAC1D,OAAO,CAAC,QAAQ,CAAwC;IAExD;;OAEG;IACH,aAAa,CACX,OAAO,EAAE,MAAM,EACf,SAAS,EAAE,MAAM,EACjB,KAAK,EAAE,MAAM,EACb,MAAM,CAAC,EAAE,MAAM,EACf,QAAQ,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GACjC,YAAY;IA2Bf;;OAEG;IACH,UAAU,CAAC,WAAW,EAAE,MAAM,GAAG,YAAY,GAAG,SAAS;IAIzD;;OAEG;IACH,WAAW,CAAC,WAAW,EAAE,MAAM,EAAE,QAAQ,EAAE,UAAU,GAAG,IAAI;IAU5D;;OAEG;IACH,OAAO,CAAC,WAAW,EAAE,MAAM,EAAE,IAAI,EAAE,SAAS,GAAG,IAAI;IAUnD;;OAEG;IACH,cAAc,CAAC,WAAW,EAAE,MAAM,EAAE,OAAO,EAAE,OAAO,CAAC,SAAS,CAAC,GAAG,IAAI;IAetE;;OAEG;IACH,UAAU,CACR,WAAW,EAAE,MAAM,EACnB,IAAI,EAAE,MAAM,GAAG,WAAW,GAAG,QAAQ,GAAG,MAAM,EAC9C,OAAO,EAAE,MAAM,GACd,IAAI;IAcP;;OAEG;IACH,gBAAgB,CAAC,WAAW,EAAE,MAAM,EAAE,GAAG,EAAE,MAAM,EAAE,KAAK,EAAE,OAAO,GAAG,IAAI;IAUxE;;OAEG;IACH,gBAAgB,CAAC,WAAW,EAAE,MAAM,EAAE,GAAG,EAAE,MAAM,GAAG,OAAO;IAS3D;;OAEG;IACH,aAAa,CAAC,WAAW,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,EAAE,GAAG,IAAI;IAU5D;;OAEG;IACH,WAAW,CAAC,WAAW,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,GAAG,OAAO;IAiB3D;;OAEG;IACH,aAAa,CAAC,WAAW,EAAE,MAAM,GAAG,IAAI;IAIxC;;OAEG;IACH,KAAK,IAAI,IAAI;IAIb;;OAEG;IACH,kBAAkB,CAAC,SAAS,EAAE,MAAM,GAAG,YAAY,EAAE;CAGtD"}
|