@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,90 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
/**
|
|
3
|
+
* Agent Module
|
|
4
|
+
* HazelJS module for Agent Runtime
|
|
5
|
+
*/
|
|
6
|
+
var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
|
|
7
|
+
var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
|
|
8
|
+
if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
|
|
9
|
+
else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
|
|
10
|
+
return c > 3 && r && Object.defineProperty(target, key, r), r;
|
|
11
|
+
};
|
|
12
|
+
var __metadata = (this && this.__metadata) || function (k, v) {
|
|
13
|
+
if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(k, v);
|
|
14
|
+
};
|
|
15
|
+
var AgentModule_1;
|
|
16
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
17
|
+
exports.AgentModule = exports.AgentService = void 0;
|
|
18
|
+
const core_1 = require("@hazeljs/core");
|
|
19
|
+
const agent_runtime_1 = require("./runtime/agent.runtime");
|
|
20
|
+
/**
|
|
21
|
+
* Agent Service
|
|
22
|
+
* Injectable service for agent runtime
|
|
23
|
+
*/
|
|
24
|
+
let AgentService = class AgentService {
|
|
25
|
+
constructor(config = {}) {
|
|
26
|
+
const moduleOpts = AgentModule.getOptions();
|
|
27
|
+
const runtimeConfig = moduleOpts.runtime || config;
|
|
28
|
+
this.runtime = new agent_runtime_1.AgentRuntime(runtimeConfig);
|
|
29
|
+
// Register agents from module options
|
|
30
|
+
if (moduleOpts.agents) {
|
|
31
|
+
for (const agentClass of moduleOpts.agents) {
|
|
32
|
+
this.runtime.registerAgent(agentClass);
|
|
33
|
+
}
|
|
34
|
+
}
|
|
35
|
+
}
|
|
36
|
+
getRuntime() {
|
|
37
|
+
return this.runtime;
|
|
38
|
+
}
|
|
39
|
+
async execute(agentName, input, options) {
|
|
40
|
+
return this.runtime.execute(agentName, input, options);
|
|
41
|
+
}
|
|
42
|
+
async resume(executionId, input) {
|
|
43
|
+
return this.runtime.resume(executionId, input);
|
|
44
|
+
}
|
|
45
|
+
getContext(executionId) {
|
|
46
|
+
return this.runtime.getContext(executionId);
|
|
47
|
+
}
|
|
48
|
+
on(type, handler) {
|
|
49
|
+
return this.runtime.on(type, handler);
|
|
50
|
+
}
|
|
51
|
+
getAgents() {
|
|
52
|
+
return this.runtime.getAgents();
|
|
53
|
+
}
|
|
54
|
+
approveToolExecution(requestId, approvedBy) {
|
|
55
|
+
return this.runtime.approveToolExecution(requestId, approvedBy);
|
|
56
|
+
}
|
|
57
|
+
rejectToolExecution(requestId) {
|
|
58
|
+
return this.runtime.rejectToolExecution(requestId);
|
|
59
|
+
}
|
|
60
|
+
getPendingApprovals() {
|
|
61
|
+
return this.runtime.getPendingApprovals();
|
|
62
|
+
}
|
|
63
|
+
};
|
|
64
|
+
exports.AgentService = AgentService;
|
|
65
|
+
exports.AgentService = AgentService = __decorate([
|
|
66
|
+
(0, core_1.Injectable)(),
|
|
67
|
+
__metadata("design:paramtypes", [Object])
|
|
68
|
+
], AgentService);
|
|
69
|
+
/**
|
|
70
|
+
* Agent Module
|
|
71
|
+
* Uses static configuration pattern compatible with HazelJS DI
|
|
72
|
+
*/
|
|
73
|
+
let AgentModule = AgentModule_1 = class AgentModule {
|
|
74
|
+
static forRoot(options = {}) {
|
|
75
|
+
AgentModule_1.options = options;
|
|
76
|
+
return AgentModule_1;
|
|
77
|
+
}
|
|
78
|
+
static getOptions() {
|
|
79
|
+
return AgentModule_1.options;
|
|
80
|
+
}
|
|
81
|
+
};
|
|
82
|
+
exports.AgentModule = AgentModule;
|
|
83
|
+
AgentModule.options = {};
|
|
84
|
+
exports.AgentModule = AgentModule = AgentModule_1 = __decorate([
|
|
85
|
+
(0, core_1.HazelModule)({
|
|
86
|
+
providers: [AgentService],
|
|
87
|
+
exports: [AgentService],
|
|
88
|
+
})
|
|
89
|
+
], AgentModule);
|
|
90
|
+
//# sourceMappingURL=agent.module.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"agent.module.js","sourceRoot":"","sources":["../src/agent.module.ts"],"names":[],"mappings":";AAAA;;;GAGG;;;;;;;;;;;;;AAEH,wCAAwD;AACxD,2DAA2E;AAa3E;;;GAGG;AAEI,IAAM,YAAY,GAAlB,MAAM,YAAY;IAGvB,YAAY,SAA6B,EAAE;QACzC,MAAM,UAAU,GAAG,WAAW,CAAC,UAAU,EAAE,CAAC;QAC5C,MAAM,aAAa,GAAG,UAAU,CAAC,OAAO,IAAI,MAAM,CAAC;QACnD,IAAI,CAAC,OAAO,GAAG,IAAI,4BAAY,CAAC,aAAa,CAAC,CAAC;QAE/C,sCAAsC;QACtC,IAAI,UAAU,CAAC,MAAM,EAAE,CAAC;YACtB,KAAK,MAAM,UAAU,IAAI,UAAU,CAAC,MAAM,EAAE,CAAC;gBAC3C,IAAI,CAAC,OAAO,CAAC,aAAa,CAAC,UAAU,CAAC,CAAC;YACzC,CAAC;QACH,CAAC;IACH,CAAC;IAED,UAAU;QACR,OAAO,IAAI,CAAC,OAAO,CAAC;IACtB,CAAC;IAED,KAAK,CAAC,OAAO,CACX,SAAiB,EACjB,KAAa,EACb,OAAiC;QAEjC,OAAO,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,SAAS,EAAE,KAAK,EAAE,OAAO,CAAC,CAAC;IACzD,CAAC;IAED,KAAK,CAAC,MAAM,CAAC,WAAmB,EAAE,KAAc;QAC9C,OAAO,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,WAAW,EAAE,KAAK,CAAC,CAAC;IACjD,CAAC;IAED,UAAU,CAAC,WAAmB;QAC5B,OAAO,IAAI,CAAC,OAAO,CAAC,UAAU,CAAC,WAAW,CAAC,CAAC;IAC9C,CAAC;IAED,EAAE,CAAC,IAAoB,EAAE,OAAiC;QACxD,OAAO,IAAI,CAAC,OAAO,CAAC,EAAE,CAAC,IAAI,EAAE,OAAO,CAAC,CAAC;IACxC,CAAC;IAED,SAAS;QACP,OAAO,IAAI,CAAC,OAAO,CAAC,SAAS,EAAE,CAAC;IAClC,CAAC;IAED,oBAAoB,CAAC,SAAiB,EAAE,UAAkB;QACxD,OAAO,IAAI,CAAC,OAAO,CAAC,oBAAoB,CAAC,SAAS,EAAE,UAAU,CAAC,CAAC;IAClE,CAAC;IAED,mBAAmB,CAAC,SAAiB;QACnC,OAAO,IAAI,CAAC,OAAO,CAAC,mBAAmB,CAAC,SAAS,CAAC,CAAC;IACrD,CAAC;IAED,mBAAmB;QACjB,OAAO,IAAI,CAAC,OAAO,CAAC,mBAAmB,EAAE,CAAC;IAC5C,CAAC;CACF,CAAA;AAvDY,oCAAY;uBAAZ,YAAY;IADxB,IAAA,iBAAU,GAAE;;GACA,YAAY,CAuDxB;AAED;;;GAGG;AAKI,IAAM,WAAW,mBAAjB,MAAM,WAAW;IAGtB,MAAM,CAAC,OAAO,CAAC,UAA8B,EAAE;QAC7C,aAAW,CAAC,OAAO,GAAG,OAAO,CAAC;QAC9B,OAAO,aAAW,CAAC;IACrB,CAAC;IAED,MAAM,CAAC,UAAU;QACf,OAAO,aAAW,CAAC,OAAO,CAAC;IAC7B,CAAC;;AAVU,kCAAW;AACP,mBAAO,GAAuB,EAAE,AAAzB,CAA0B;sBADrC,WAAW;IAJvB,IAAA,kBAAW,EAAC;QACX,SAAS,EAAE,CAAC,YAAY,CAAC;QACzB,OAAO,EAAE,CAAC,YAAY,CAAC;KACxB,CAAC;GACW,WAAW,CAWvB"}
|
|
@@ -0,0 +1,27 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Agent Context Builder
|
|
3
|
+
* Builds execution context with memory and RAG integration
|
|
4
|
+
*/
|
|
5
|
+
import { AgentContext } from '../types/agent.types';
|
|
6
|
+
import { MemoryManager } from '@hazeljs/rag';
|
|
7
|
+
/**
|
|
8
|
+
* Agent Context Builder
|
|
9
|
+
* Prepares context for agent execution
|
|
10
|
+
*/
|
|
11
|
+
export declare class AgentContextBuilder {
|
|
12
|
+
private memoryManager?;
|
|
13
|
+
constructor(memoryManager?: MemoryManager | undefined);
|
|
14
|
+
/**
|
|
15
|
+
* Build context with memory
|
|
16
|
+
*/
|
|
17
|
+
buildWithMemory(context: AgentContext, maxHistory?: number): Promise<void>;
|
|
18
|
+
/**
|
|
19
|
+
* Build context with RAG
|
|
20
|
+
*/
|
|
21
|
+
buildWithRAG(context: AgentContext, ragService: any, topK?: number): Promise<void>;
|
|
22
|
+
/**
|
|
23
|
+
* Persist context to memory
|
|
24
|
+
*/
|
|
25
|
+
persistToMemory(context: AgentContext): Promise<void>;
|
|
26
|
+
}
|
|
27
|
+
//# sourceMappingURL=agent.context.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"agent.context.d.ts","sourceRoot":"","sources":["../../src/context/agent.context.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,EAAE,YAAY,EAAE,MAAM,sBAAsB,CAAC;AACpD,OAAO,EAAE,aAAa,EAAmB,MAAM,cAAc,CAAC;AAE9D;;;GAGG;AACH,qBAAa,mBAAmB;IAClB,OAAO,CAAC,aAAa,CAAC;gBAAd,aAAa,CAAC,EAAE,aAAa,YAAA;IAEjD;;OAEG;IACG,eAAe,CAAC,OAAO,EAAE,YAAY,EAAE,UAAU,GAAE,MAAW,GAAG,OAAO,CAAC,IAAI,CAAC;IA6BpF;;OAEG;IACG,YAAY,CAChB,OAAO,EAAE,YAAY,EAErB,UAAU,EAAE,GAAG,EACf,IAAI,GAAE,MAAU,GACf,OAAO,CAAC,IAAI,CAAC;IAchB;;OAEG;IACG,eAAe,CAAC,OAAO,EAAE,YAAY,GAAG,OAAO,CAAC,IAAI,CAAC;CAyC5D"}
|
|
@@ -0,0 +1,98 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
/**
|
|
3
|
+
* Agent Context Builder
|
|
4
|
+
* Builds execution context with memory and RAG integration
|
|
5
|
+
*/
|
|
6
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
7
|
+
exports.AgentContextBuilder = void 0;
|
|
8
|
+
/**
|
|
9
|
+
* Agent Context Builder
|
|
10
|
+
* Prepares context for agent execution
|
|
11
|
+
*/
|
|
12
|
+
class AgentContextBuilder {
|
|
13
|
+
constructor(memoryManager) {
|
|
14
|
+
this.memoryManager = memoryManager;
|
|
15
|
+
}
|
|
16
|
+
/**
|
|
17
|
+
* Build context with memory
|
|
18
|
+
*/
|
|
19
|
+
async buildWithMemory(context, maxHistory = 20) {
|
|
20
|
+
if (!this.memoryManager) {
|
|
21
|
+
return;
|
|
22
|
+
}
|
|
23
|
+
const history = await this.memoryManager.getConversationHistory(context.sessionId, maxHistory);
|
|
24
|
+
context.memory.conversationHistory = history.map((msg) => ({
|
|
25
|
+
role: msg.role,
|
|
26
|
+
content: msg.content,
|
|
27
|
+
timestamp: msg.timestamp || new Date(),
|
|
28
|
+
}));
|
|
29
|
+
const entities = await this.memoryManager.getAllEntities(context.sessionId);
|
|
30
|
+
context.memory.entities = entities.map((entity) => ({
|
|
31
|
+
name: entity.name,
|
|
32
|
+
type: entity.type,
|
|
33
|
+
attributes: entity.attributes,
|
|
34
|
+
}));
|
|
35
|
+
const workingMemoryKeys = ['current_task', 'user_preferences', 'session_state'];
|
|
36
|
+
for (const key of workingMemoryKeys) {
|
|
37
|
+
const value = await this.memoryManager.getContext(key, context.sessionId);
|
|
38
|
+
if (value !== null) {
|
|
39
|
+
context.memory.workingMemory[key] = value;
|
|
40
|
+
}
|
|
41
|
+
}
|
|
42
|
+
}
|
|
43
|
+
/**
|
|
44
|
+
* Build context with RAG
|
|
45
|
+
*/
|
|
46
|
+
async buildWithRAG(context,
|
|
47
|
+
// eslint-disable-next-line @typescript-eslint/no-explicit-any
|
|
48
|
+
ragService, topK = 5) {
|
|
49
|
+
if (!ragService) {
|
|
50
|
+
return;
|
|
51
|
+
}
|
|
52
|
+
try {
|
|
53
|
+
const results = await ragService.search(context.input, { topK });
|
|
54
|
+
// eslint-disable-next-line @typescript-eslint/no-explicit-any
|
|
55
|
+
context.ragContext = results.map((r) => r.content || r.text);
|
|
56
|
+
}
|
|
57
|
+
catch {
|
|
58
|
+
context.ragContext = [];
|
|
59
|
+
}
|
|
60
|
+
}
|
|
61
|
+
/**
|
|
62
|
+
* Persist context to memory
|
|
63
|
+
*/
|
|
64
|
+
async persistToMemory(context) {
|
|
65
|
+
if (!this.memoryManager) {
|
|
66
|
+
return;
|
|
67
|
+
}
|
|
68
|
+
for (const msg of context.memory.conversationHistory) {
|
|
69
|
+
await this.memoryManager.addMessage({
|
|
70
|
+
role: msg.role,
|
|
71
|
+
content: msg.content,
|
|
72
|
+
timestamp: msg.timestamp,
|
|
73
|
+
}, context.sessionId, context.userId);
|
|
74
|
+
}
|
|
75
|
+
for (const [key, value] of Object.entries(context.memory.workingMemory)) {
|
|
76
|
+
await this.memoryManager.setContext(key, value, context.sessionId);
|
|
77
|
+
}
|
|
78
|
+
for (const entity of context.memory.entities) {
|
|
79
|
+
const existingEntity = await this.memoryManager.getEntity(entity.name);
|
|
80
|
+
if (existingEntity) {
|
|
81
|
+
await this.memoryManager.updateEntity(entity.name, entity);
|
|
82
|
+
}
|
|
83
|
+
else {
|
|
84
|
+
await this.memoryManager.trackEntity({
|
|
85
|
+
name: entity.name,
|
|
86
|
+
type: entity.type,
|
|
87
|
+
attributes: entity.attributes,
|
|
88
|
+
relationships: [],
|
|
89
|
+
firstSeen: new Date(),
|
|
90
|
+
lastSeen: new Date(),
|
|
91
|
+
mentions: 1,
|
|
92
|
+
}, context.sessionId);
|
|
93
|
+
}
|
|
94
|
+
}
|
|
95
|
+
}
|
|
96
|
+
}
|
|
97
|
+
exports.AgentContextBuilder = AgentContextBuilder;
|
|
98
|
+
//# sourceMappingURL=agent.context.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"agent.context.js","sourceRoot":"","sources":["../../src/context/agent.context.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @Agent Decorator
|
|
3
|
+
* Marks a class as an Agent with configuration
|
|
4
|
+
*/
|
|
5
|
+
import 'reflect-metadata';
|
|
6
|
+
import { AgentConfig, AgentMetadata } from '../types/agent.types';
|
|
7
|
+
type NewableFunction = new (...args: unknown[]) => unknown;
|
|
8
|
+
/**
|
|
9
|
+
* Agent decorator - marks a class as an agent
|
|
10
|
+
*/
|
|
11
|
+
export declare function Agent(config: AgentConfig): ClassDecorator;
|
|
12
|
+
/**
|
|
13
|
+
* Get agent metadata from a class
|
|
14
|
+
*/
|
|
15
|
+
export declare function getAgentMetadata(target: NewableFunction): AgentMetadata | undefined;
|
|
16
|
+
/**
|
|
17
|
+
* Check if a class is an agent
|
|
18
|
+
*/
|
|
19
|
+
export declare function isAgent(target: NewableFunction): boolean;
|
|
20
|
+
export {};
|
|
21
|
+
//# sourceMappingURL=agent.decorator.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"agent.decorator.d.ts","sourceRoot":"","sources":["../../src/decorators/agent.decorator.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,kBAAkB,CAAC;AAC1B,OAAO,EAAE,WAAW,EAAE,aAAa,EAAE,MAAM,sBAAsB,CAAC;AAElE,KAAK,eAAe,GAAG,KAAK,GAAG,IAAI,EAAE,OAAO,EAAE,KAAK,OAAO,CAAC;AAI3D;;GAEG;AACH,wBAAgB,KAAK,CAAC,MAAM,EAAE,WAAW,GAAG,cAAc,CAWzD;AAED;;GAEG;AACH,wBAAgB,gBAAgB,CAAC,MAAM,EAAE,eAAe,GAAG,aAAa,GAAG,SAAS,CAEnF;AAED;;GAEG;AACH,wBAAgB,OAAO,CAAC,MAAM,EAAE,eAAe,GAAG,OAAO,CAExD"}
|
|
@@ -0,0 +1,38 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
/**
|
|
3
|
+
* @Agent Decorator
|
|
4
|
+
* Marks a class as an Agent with configuration
|
|
5
|
+
*/
|
|
6
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
7
|
+
exports.Agent = Agent;
|
|
8
|
+
exports.getAgentMetadata = getAgentMetadata;
|
|
9
|
+
exports.isAgent = isAgent;
|
|
10
|
+
require("reflect-metadata");
|
|
11
|
+
const AGENT_METADATA_KEY = Symbol('agent');
|
|
12
|
+
/**
|
|
13
|
+
* Agent decorator - marks a class as an agent
|
|
14
|
+
*/
|
|
15
|
+
function Agent(config) {
|
|
16
|
+
// eslint-disable-next-line @typescript-eslint/no-unsafe-function-type
|
|
17
|
+
return ((target) => {
|
|
18
|
+
const metadata = {
|
|
19
|
+
...config,
|
|
20
|
+
// eslint-disable-next-line @typescript-eslint/no-unsafe-function-type
|
|
21
|
+
target: target,
|
|
22
|
+
};
|
|
23
|
+
Reflect.defineMetadata(AGENT_METADATA_KEY, metadata, target);
|
|
24
|
+
});
|
|
25
|
+
}
|
|
26
|
+
/**
|
|
27
|
+
* Get agent metadata from a class
|
|
28
|
+
*/
|
|
29
|
+
function getAgentMetadata(target) {
|
|
30
|
+
return Reflect.getMetadata(AGENT_METADATA_KEY, target);
|
|
31
|
+
}
|
|
32
|
+
/**
|
|
33
|
+
* Check if a class is an agent
|
|
34
|
+
*/
|
|
35
|
+
function isAgent(target) {
|
|
36
|
+
return Reflect.hasMetadata(AGENT_METADATA_KEY, target);
|
|
37
|
+
}
|
|
38
|
+
//# sourceMappingURL=agent.decorator.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"agent.decorator.js","sourceRoot":"","sources":["../../src/decorators/agent.decorator.ts"],"names":[],"mappings":";AAAA;;;GAGG;;AAYH,sBAWC;AAKD,4CAEC;AAKD,0BAEC;AAnCD,4BAA0B;AAK1B,MAAM,kBAAkB,GAAG,MAAM,CAAC,OAAO,CAAC,CAAC;AAE3C;;GAEG;AACH,SAAgB,KAAK,CAAC,MAAmB;IACvC,sEAAsE;IACtE,OAAO,CAAC,CAAC,MAAgB,EAAE,EAAE;QAC3B,MAAM,QAAQ,GAAkB;YAC9B,GAAG,MAAM;YACT,sEAAsE;YACtE,MAAM,EAAE,MAAyB;SAClC,CAAC;QAEF,OAAO,CAAC,cAAc,CAAC,kBAAkB,EAAE,QAAQ,EAAE,MAAM,CAAC,CAAC;IAC/D,CAAC,CAAmB,CAAC;AACvB,CAAC;AAED;;GAEG;AACH,SAAgB,gBAAgB,CAAC,MAAuB;IACtD,OAAO,OAAO,CAAC,WAAW,CAAC,kBAAkB,EAAE,MAAM,CAAC,CAAC;AACzD,CAAC;AAED;;GAEG;AACH,SAAgB,OAAO,CAAC,MAAuB;IAC7C,OAAO,OAAO,CAAC,WAAW,CAAC,kBAAkB,EAAE,MAAM,CAAC,CAAC;AACzD,CAAC"}
|
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @Tool Decorator
|
|
3
|
+
* Marks a method as a tool that can be used by agents
|
|
4
|
+
*/
|
|
5
|
+
import 'reflect-metadata';
|
|
6
|
+
import { ToolConfig, ToolMetadata } from '../types/tool.types';
|
|
7
|
+
/**
|
|
8
|
+
* Tool decorator - marks a method as a tool
|
|
9
|
+
*/
|
|
10
|
+
export declare function Tool(config?: Partial<ToolConfig>): MethodDecorator;
|
|
11
|
+
/**
|
|
12
|
+
* Get tool metadata from a method
|
|
13
|
+
*/
|
|
14
|
+
export declare function getToolMetadata(target: object, propertyKey: string): ToolMetadata | undefined;
|
|
15
|
+
/**
|
|
16
|
+
* Get all tools from an agent class
|
|
17
|
+
*/
|
|
18
|
+
export declare function getAgentTools(agentClass: new (...args: unknown[]) => unknown): string[];
|
|
19
|
+
/**
|
|
20
|
+
* Check if a method is a tool
|
|
21
|
+
*/
|
|
22
|
+
export declare function isTool(target: object, propertyKey: string): boolean;
|
|
23
|
+
//# sourceMappingURL=tool.decorator.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"tool.decorator.d.ts","sourceRoot":"","sources":["../../src/decorators/tool.decorator.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,kBAAkB,CAAC;AAC1B,OAAO,EAAE,UAAU,EAAE,YAAY,EAAE,MAAM,qBAAqB,CAAC;AAK/D;;GAEG;AACH,wBAAgB,IAAI,CAAC,MAAM,CAAC,EAAE,OAAO,CAAC,UAAU,CAAC,GAAG,eAAe,CA6BlE;AAED;;GAEG;AACH,wBAAgB,eAAe,CAAC,MAAM,EAAE,MAAM,EAAE,WAAW,EAAE,MAAM,GAAG,YAAY,GAAG,SAAS,CAE7F;AAED;;GAEG;AACH,wBAAgB,aAAa,CAAC,UAAU,EAAE,KAAK,GAAG,IAAI,EAAE,OAAO,EAAE,KAAK,OAAO,GAAG,MAAM,EAAE,CAEvF;AAED;;GAEG;AACH,wBAAgB,MAAM,CAAC,MAAM,EAAE,MAAM,EAAE,WAAW,EAAE,MAAM,GAAG,OAAO,CAEnE"}
|
|
@@ -0,0 +1,61 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
/**
|
|
3
|
+
* @Tool Decorator
|
|
4
|
+
* Marks a method as a tool that can be used by agents
|
|
5
|
+
*/
|
|
6
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
7
|
+
exports.Tool = Tool;
|
|
8
|
+
exports.getToolMetadata = getToolMetadata;
|
|
9
|
+
exports.getAgentTools = getAgentTools;
|
|
10
|
+
exports.isTool = isTool;
|
|
11
|
+
require("reflect-metadata");
|
|
12
|
+
const TOOL_METADATA_KEY = Symbol('tool');
|
|
13
|
+
const TOOLS_LIST_KEY = Symbol('tools');
|
|
14
|
+
/**
|
|
15
|
+
* Tool decorator - marks a method as a tool
|
|
16
|
+
*/
|
|
17
|
+
function Tool(config) {
|
|
18
|
+
return (target, propertyKey, descriptor) => {
|
|
19
|
+
const methodName = String(propertyKey);
|
|
20
|
+
const metadata = {
|
|
21
|
+
name: config?.name || methodName,
|
|
22
|
+
description: config?.description || `Tool: ${methodName}`,
|
|
23
|
+
parameters: config?.parameters || [],
|
|
24
|
+
requiresApproval: config?.requiresApproval || false,
|
|
25
|
+
timeout: config?.timeout || 30000,
|
|
26
|
+
retries: config?.retries || 0,
|
|
27
|
+
policy: config?.policy,
|
|
28
|
+
metadata: config?.metadata,
|
|
29
|
+
target,
|
|
30
|
+
propertyKey: methodName,
|
|
31
|
+
method: descriptor.value,
|
|
32
|
+
agentClass: target.constructor,
|
|
33
|
+
};
|
|
34
|
+
Reflect.defineMetadata(TOOL_METADATA_KEY, metadata, target, propertyKey);
|
|
35
|
+
const existingTools = Reflect.getMetadata(TOOLS_LIST_KEY, target.constructor) || [];
|
|
36
|
+
if (!existingTools.includes(methodName)) {
|
|
37
|
+
existingTools.push(methodName);
|
|
38
|
+
Reflect.defineMetadata(TOOLS_LIST_KEY, existingTools, target.constructor);
|
|
39
|
+
}
|
|
40
|
+
return descriptor;
|
|
41
|
+
};
|
|
42
|
+
}
|
|
43
|
+
/**
|
|
44
|
+
* Get tool metadata from a method
|
|
45
|
+
*/
|
|
46
|
+
function getToolMetadata(target, propertyKey) {
|
|
47
|
+
return Reflect.getMetadata(TOOL_METADATA_KEY, target, propertyKey);
|
|
48
|
+
}
|
|
49
|
+
/**
|
|
50
|
+
* Get all tools from an agent class
|
|
51
|
+
*/
|
|
52
|
+
function getAgentTools(agentClass) {
|
|
53
|
+
return Reflect.getMetadata(TOOLS_LIST_KEY, agentClass) || [];
|
|
54
|
+
}
|
|
55
|
+
/**
|
|
56
|
+
* Check if a method is a tool
|
|
57
|
+
*/
|
|
58
|
+
function isTool(target, propertyKey) {
|
|
59
|
+
return Reflect.hasMetadata(TOOL_METADATA_KEY, target, propertyKey);
|
|
60
|
+
}
|
|
61
|
+
//# sourceMappingURL=tool.decorator.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"tool.decorator.js","sourceRoot":"","sources":["../../src/decorators/tool.decorator.ts"],"names":[],"mappings":";AAAA;;;GAGG;;AAWH,oBA6BC;AAKD,0CAEC;AAKD,sCAEC;AAKD,wBAEC;AA3DD,4BAA0B;AAG1B,MAAM,iBAAiB,GAAG,MAAM,CAAC,MAAM,CAAC,CAAC;AACzC,MAAM,cAAc,GAAG,MAAM,CAAC,OAAO,CAAC,CAAC;AAEvC;;GAEG;AACH,SAAgB,IAAI,CAAC,MAA4B;IAC/C,OAAO,CAAC,MAAc,EAAE,WAA4B,EAAE,UAA8B,EAAE,EAAE;QACtF,MAAM,UAAU,GAAG,MAAM,CAAC,WAAW,CAAC,CAAC;QAEvC,MAAM,QAAQ,GAAiB;YAC7B,IAAI,EAAE,MAAM,EAAE,IAAI,IAAI,UAAU;YAChC,WAAW,EAAE,MAAM,EAAE,WAAW,IAAI,SAAS,UAAU,EAAE;YACzD,UAAU,EAAE,MAAM,EAAE,UAAU,IAAI,EAAE;YACpC,gBAAgB,EAAE,MAAM,EAAE,gBAAgB,IAAI,KAAK;YACnD,OAAO,EAAE,MAAM,EAAE,OAAO,IAAI,KAAK;YACjC,OAAO,EAAE,MAAM,EAAE,OAAO,IAAI,CAAC;YAC7B,MAAM,EAAE,MAAM,EAAE,MAAM;YACtB,QAAQ,EAAE,MAAM,EAAE,QAAQ;YAC1B,MAAM;YACN,WAAW,EAAE,UAAU;YACvB,MAAM,EAAE,UAAU,CAAC,KAAK;YACxB,UAAU,EAAE,MAAM,CAAC,WAAkD;SACtE,CAAC;QAEF,OAAO,CAAC,cAAc,CAAC,iBAAiB,EAAE,QAAQ,EAAE,MAAM,EAAE,WAAW,CAAC,CAAC;QAEzE,MAAM,aAAa,GAAa,OAAO,CAAC,WAAW,CAAC,cAAc,EAAE,MAAM,CAAC,WAAW,CAAC,IAAI,EAAE,CAAC;QAC9F,IAAI,CAAC,aAAa,CAAC,QAAQ,CAAC,UAAU,CAAC,EAAE,CAAC;YACxC,aAAa,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;YAC/B,OAAO,CAAC,cAAc,CAAC,cAAc,EAAE,aAAa,EAAE,MAAM,CAAC,WAAW,CAAC,CAAC;QAC5E,CAAC;QAED,OAAO,UAAU,CAAC;IACpB,CAAC,CAAC;AACJ,CAAC;AAED;;GAEG;AACH,SAAgB,eAAe,CAAC,MAAc,EAAE,WAAmB;IACjE,OAAO,OAAO,CAAC,WAAW,CAAC,iBAAiB,EAAE,MAAM,EAAE,WAAW,CAAC,CAAC;AACrE,CAAC;AAED;;GAEG;AACH,SAAgB,aAAa,CAAC,UAA+C;IAC3E,OAAO,OAAO,CAAC,WAAW,CAAC,cAAc,EAAE,UAAU,CAAC,IAAI,EAAE,CAAC;AAC/D,CAAC;AAED;;GAEG;AACH,SAAgB,MAAM,CAAC,MAAc,EAAE,WAAmB;IACxD,OAAO,OAAO,CAAC,WAAW,CAAC,iBAAiB,EAAE,MAAM,EAAE,WAAW,CAAC,CAAC;AACrE,CAAC"}
|
|
@@ -0,0 +1,45 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Agent Event Emitter
|
|
3
|
+
* Handles event emission and subscription for agent runtime
|
|
4
|
+
*/
|
|
5
|
+
import { AgentEvent, AgentEventType } from '../types/event.types';
|
|
6
|
+
type EventHandler<T = unknown> = (event: AgentEvent<T>) => void | Promise<void>;
|
|
7
|
+
/**
|
|
8
|
+
* Agent Event Emitter
|
|
9
|
+
* Pub/sub system for agent runtime events
|
|
10
|
+
*/
|
|
11
|
+
export declare class AgentEventEmitter {
|
|
12
|
+
private handlers;
|
|
13
|
+
private wildcardHandlers;
|
|
14
|
+
private logger;
|
|
15
|
+
/**
|
|
16
|
+
* Subscribe to an event type
|
|
17
|
+
*/
|
|
18
|
+
on<T = unknown>(type: AgentEventType, handler: EventHandler<T>): void;
|
|
19
|
+
/**
|
|
20
|
+
* Subscribe to all events
|
|
21
|
+
*/
|
|
22
|
+
onAny(handler: EventHandler): void;
|
|
23
|
+
/**
|
|
24
|
+
* Unsubscribe from an event type
|
|
25
|
+
*/
|
|
26
|
+
off(type: AgentEventType, handler: EventHandler): void;
|
|
27
|
+
/**
|
|
28
|
+
* Unsubscribe from all events
|
|
29
|
+
*/
|
|
30
|
+
offAny(handler: EventHandler): void;
|
|
31
|
+
/**
|
|
32
|
+
* Emit an event
|
|
33
|
+
*/
|
|
34
|
+
emit<T = unknown>(type: AgentEventType, agentId: string, executionId: string, data: T, metadata?: Record<string, unknown>): Promise<void>;
|
|
35
|
+
/**
|
|
36
|
+
* Clear all handlers
|
|
37
|
+
*/
|
|
38
|
+
clear(): void;
|
|
39
|
+
/**
|
|
40
|
+
* Get handler count for an event type
|
|
41
|
+
*/
|
|
42
|
+
listenerCount(type: AgentEventType): number;
|
|
43
|
+
}
|
|
44
|
+
export {};
|
|
45
|
+
//# sourceMappingURL=event.emitter.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"event.emitter.d.ts","sourceRoot":"","sources":["../../src/events/event.emitter.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,EAAE,UAAU,EAAE,cAAc,EAAE,MAAM,sBAAsB,CAAC;AAGlE,KAAK,YAAY,CAAC,CAAC,GAAG,OAAO,IAAI,CAAC,KAAK,EAAE,UAAU,CAAC,CAAC,CAAC,KAAK,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;AAEhF;;;GAGG;AACH,qBAAa,iBAAiB;IAC5B,OAAO,CAAC,QAAQ,CAAqD;IACrE,OAAO,CAAC,gBAAgB,CAAgC;IACxD,OAAO,CAAC,MAAM,CAAwC;IAEtD;;OAEG;IACH,EAAE,CAAC,CAAC,GAAG,OAAO,EAAE,IAAI,EAAE,cAAc,EAAE,OAAO,EAAE,YAAY,CAAC,CAAC,CAAC,GAAG,IAAI;IAOrE;;OAEG;IACH,KAAK,CAAC,OAAO,EAAE,YAAY,GAAG,IAAI;IAIlC;;OAEG;IACH,GAAG,CAAC,IAAI,EAAE,cAAc,EAAE,OAAO,EAAE,YAAY,GAAG,IAAI;IAOtD;;OAEG;IACH,MAAM,CAAC,OAAO,EAAE,YAAY,GAAG,IAAI;IAInC;;OAEG;IACG,IAAI,CAAC,CAAC,GAAG,OAAO,EACpB,IAAI,EAAE,cAAc,EACpB,OAAO,EAAE,MAAM,EACf,WAAW,EAAE,MAAM,EACnB,IAAI,EAAE,CAAC,EACP,QAAQ,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GACjC,OAAO,CAAC,IAAI,CAAC;IAsChB;;OAEG;IACH,KAAK,IAAI,IAAI;IAKb;;OAEG;IACH,aAAa,CAAC,IAAI,EAAE,cAAc,GAAG,MAAM;CAG5C"}
|
|
@@ -0,0 +1,96 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
/**
|
|
3
|
+
* Agent Event Emitter
|
|
4
|
+
* Handles event emission and subscription for agent runtime
|
|
5
|
+
*/
|
|
6
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
7
|
+
exports.AgentEventEmitter = void 0;
|
|
8
|
+
const logger_1 = require("../utils/logger");
|
|
9
|
+
/**
|
|
10
|
+
* Agent Event Emitter
|
|
11
|
+
* Pub/sub system for agent runtime events
|
|
12
|
+
*/
|
|
13
|
+
class AgentEventEmitter {
|
|
14
|
+
constructor() {
|
|
15
|
+
this.handlers = new Map();
|
|
16
|
+
this.wildcardHandlers = new Set();
|
|
17
|
+
this.logger = new logger_1.Logger({ level: logger_1.LogLevel.WARN });
|
|
18
|
+
}
|
|
19
|
+
/**
|
|
20
|
+
* Subscribe to an event type
|
|
21
|
+
*/
|
|
22
|
+
on(type, handler) {
|
|
23
|
+
if (!this.handlers.has(type)) {
|
|
24
|
+
this.handlers.set(type, new Set());
|
|
25
|
+
}
|
|
26
|
+
this.handlers.get(type).add(handler);
|
|
27
|
+
}
|
|
28
|
+
/**
|
|
29
|
+
* Subscribe to all events
|
|
30
|
+
*/
|
|
31
|
+
onAny(handler) {
|
|
32
|
+
this.wildcardHandlers.add(handler);
|
|
33
|
+
}
|
|
34
|
+
/**
|
|
35
|
+
* Unsubscribe from an event type
|
|
36
|
+
*/
|
|
37
|
+
off(type, handler) {
|
|
38
|
+
const handlers = this.handlers.get(type);
|
|
39
|
+
if (handlers) {
|
|
40
|
+
handlers.delete(handler);
|
|
41
|
+
}
|
|
42
|
+
}
|
|
43
|
+
/**
|
|
44
|
+
* Unsubscribe from all events
|
|
45
|
+
*/
|
|
46
|
+
offAny(handler) {
|
|
47
|
+
this.wildcardHandlers.delete(handler);
|
|
48
|
+
}
|
|
49
|
+
/**
|
|
50
|
+
* Emit an event
|
|
51
|
+
*/
|
|
52
|
+
async emit(type, agentId, executionId, data, metadata) {
|
|
53
|
+
const event = {
|
|
54
|
+
type,
|
|
55
|
+
agentId,
|
|
56
|
+
executionId,
|
|
57
|
+
timestamp: new Date(),
|
|
58
|
+
data,
|
|
59
|
+
metadata,
|
|
60
|
+
};
|
|
61
|
+
const handlers = this.handlers.get(type);
|
|
62
|
+
if (handlers) {
|
|
63
|
+
for (const handler of handlers) {
|
|
64
|
+
try {
|
|
65
|
+
await handler(event);
|
|
66
|
+
}
|
|
67
|
+
catch (error) {
|
|
68
|
+
this.logger.error(`Error in event handler for ${type}`, error instanceof Error ? error : new Error(String(error)), { executionId });
|
|
69
|
+
}
|
|
70
|
+
}
|
|
71
|
+
}
|
|
72
|
+
for (const handler of this.wildcardHandlers) {
|
|
73
|
+
try {
|
|
74
|
+
await handler(event);
|
|
75
|
+
}
|
|
76
|
+
catch (error) {
|
|
77
|
+
this.logger.error(`Error in wildcard event handler for ${type}`, error instanceof Error ? error : new Error(String(error)), { executionId });
|
|
78
|
+
}
|
|
79
|
+
}
|
|
80
|
+
}
|
|
81
|
+
/**
|
|
82
|
+
* Clear all handlers
|
|
83
|
+
*/
|
|
84
|
+
clear() {
|
|
85
|
+
this.handlers.clear();
|
|
86
|
+
this.wildcardHandlers.clear();
|
|
87
|
+
}
|
|
88
|
+
/**
|
|
89
|
+
* Get handler count for an event type
|
|
90
|
+
*/
|
|
91
|
+
listenerCount(type) {
|
|
92
|
+
return this.handlers.get(type)?.size || 0;
|
|
93
|
+
}
|
|
94
|
+
}
|
|
95
|
+
exports.AgentEventEmitter = AgentEventEmitter;
|
|
96
|
+
//# sourceMappingURL=event.emitter.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"event.emitter.js","sourceRoot":"","sources":["../../src/events/event.emitter.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,57 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Agent Executor
|
|
3
|
+
* Core execution loop for agents
|
|
4
|
+
*/
|
|
5
|
+
import { AgentContext, AgentExecutionResult } from '../types/agent.types';
|
|
6
|
+
import { IAgentStateManager } from '../state/agent-state.interface';
|
|
7
|
+
import { AgentContextBuilder } from '../context/agent.context';
|
|
8
|
+
import { ToolExecutor } from './tool.executor';
|
|
9
|
+
import { ToolRegistry } from '../registry/tool.registry';
|
|
10
|
+
import { AgentEventType } from '../types/event.types';
|
|
11
|
+
import { LLMProvider } from '../types/llm.types';
|
|
12
|
+
/**
|
|
13
|
+
* Agent Executor
|
|
14
|
+
* Implements the core agent execution loop
|
|
15
|
+
*/
|
|
16
|
+
export declare class AgentExecutor {
|
|
17
|
+
private stateManager;
|
|
18
|
+
private contextBuilder;
|
|
19
|
+
private toolExecutor;
|
|
20
|
+
private toolRegistry;
|
|
21
|
+
private llmProvider?;
|
|
22
|
+
private eventEmitter?;
|
|
23
|
+
constructor(stateManager: IAgentStateManager, contextBuilder: AgentContextBuilder, toolExecutor: ToolExecutor, toolRegistry: ToolRegistry, llmProvider?: LLMProvider | undefined, eventEmitter?: ((type: AgentEventType, executionId: string, data: unknown) => void) | undefined);
|
|
24
|
+
/**
|
|
25
|
+
* Helper to handle both sync and async state manager calls
|
|
26
|
+
*/
|
|
27
|
+
private unwrap;
|
|
28
|
+
/**
|
|
29
|
+
* Execute agent with controlled loop
|
|
30
|
+
*/
|
|
31
|
+
execute(context: AgentContext, maxSteps?: number): Promise<AgentExecutionResult>;
|
|
32
|
+
/**
|
|
33
|
+
* Execute a single step
|
|
34
|
+
*/
|
|
35
|
+
private executeStep;
|
|
36
|
+
/**
|
|
37
|
+
* Decide next action using LLM
|
|
38
|
+
*/
|
|
39
|
+
private decideNextAction;
|
|
40
|
+
/**
|
|
41
|
+
* Execute a tool
|
|
42
|
+
*/
|
|
43
|
+
private executeTool;
|
|
44
|
+
/**
|
|
45
|
+
* Build prompt for LLM
|
|
46
|
+
*/
|
|
47
|
+
private buildPrompt;
|
|
48
|
+
/**
|
|
49
|
+
* Resume execution after pause
|
|
50
|
+
*/
|
|
51
|
+
resume(executionId: string, input?: string): Promise<AgentExecutionResult>;
|
|
52
|
+
/**
|
|
53
|
+
* Emit event
|
|
54
|
+
*/
|
|
55
|
+
private emitEvent;
|
|
56
|
+
}
|
|
57
|
+
//# sourceMappingURL=agent.executor.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"agent.executor.d.ts","sourceRoot":"","sources":["../../src/executor/agent.executor.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAGH,OAAO,EACL,YAAY,EAMZ,oBAAoB,EACrB,MAAM,sBAAsB,CAAC;AAC9B,OAAO,EAAE,kBAAkB,EAAE,MAAM,gCAAgC,CAAC;AACpE,OAAO,EAAE,mBAAmB,EAAE,MAAM,0BAA0B,CAAC;AAC/D,OAAO,EAAE,YAAY,EAAE,MAAM,iBAAiB,CAAC;AAC/C,OAAO,EAAE,YAAY,EAAE,MAAM,2BAA2B,CAAC;AACzD,OAAO,EAAE,cAAc,EAAE,MAAM,sBAAsB,CAAC;AACtD,OAAO,EAAE,WAAW,EAAE,MAAM,oBAAoB,CAAC;AAEjD;;;GAGG;AACH,qBAAa,aAAa;IAEtB,OAAO,CAAC,YAAY;IACpB,OAAO,CAAC,cAAc;IACtB,OAAO,CAAC,YAAY;IACpB,OAAO,CAAC,YAAY;IACpB,OAAO,CAAC,WAAW,CAAC;IACpB,OAAO,CAAC,YAAY,CAAC;gBALb,YAAY,EAAE,kBAAkB,EAChC,cAAc,EAAE,mBAAmB,EACnC,YAAY,EAAE,YAAY,EAC1B,YAAY,EAAE,YAAY,EAC1B,WAAW,CAAC,EAAE,WAAW,YAAA,EACzB,YAAY,CAAC,GAAE,CAAC,IAAI,EAAE,cAAc,EAAE,WAAW,EAAE,MAAM,EAAE,IAAI,EAAE,OAAO,KAAK,IAAI,aAAA;IAG3F;;OAEG;YACW,MAAM;IAIpB;;OAEG;IACG,OAAO,CAAC,OAAO,EAAE,YAAY,EAAE,QAAQ,GAAE,MAAW,GAAG,OAAO,CAAC,oBAAoB,CAAC;IA+F1F;;OAEG;YACW,WAAW;IAoFzB;;OAEG;YACW,gBAAgB;IA2C9B;;OAEG;YACW,WAAW;IAgDzB;;OAEG;IACH,OAAO,CAAC,WAAW;IAyBnB;;OAEG;IACG,MAAM,CAAC,WAAW,EAAE,MAAM,EAAE,KAAK,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,oBAAoB,CAAC;IAmBhF;;OAEG;IACH,OAAO,CAAC,SAAS;CAKlB"}
|