agentic-qe 1.3.5 → 1.3.6
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/.claude/agents/qe-code-complexity.md +291 -0
- package/.claude/settings.json +2 -2
- package/CHANGELOG.md +37 -0
- package/README.md +27 -2
- package/dist/agents/BaseAgent.d.ts +6 -2
- package/dist/agents/BaseAgent.d.ts.map +1 -1
- package/dist/agents/BaseAgent.js +62 -51
- package/dist/agents/BaseAgent.js.map +1 -1
- package/dist/agents/CodeComplexityAnalyzerAgent.d.ts +139 -0
- package/dist/agents/CodeComplexityAnalyzerAgent.d.ts.map +1 -0
- package/dist/agents/CodeComplexityAnalyzerAgent.js +403 -0
- package/dist/agents/CodeComplexityAnalyzerAgent.js.map +1 -0
- package/dist/agents/FleetCommanderAgent.js +2 -2
- package/dist/agents/FleetCommanderAgent.js.map +1 -1
- package/dist/agents/QualityGateAgent.d.ts +5 -5
- package/dist/agents/QualityGateAgent.d.ts.map +1 -1
- package/dist/agents/QualityGateAgent.js +33 -19
- package/dist/agents/QualityGateAgent.js.map +1 -1
- package/dist/agents/TestDataArchitectAgent.d.ts +9 -0
- package/dist/agents/TestDataArchitectAgent.d.ts.map +1 -1
- package/dist/agents/TestDataArchitectAgent.js +96 -2
- package/dist/agents/TestDataArchitectAgent.js.map +1 -1
- package/dist/agents/TestGeneratorAgent.d.ts +23 -1
- package/dist/agents/TestGeneratorAgent.d.ts.map +1 -1
- package/dist/agents/TestGeneratorAgent.js +279 -54
- package/dist/agents/TestGeneratorAgent.js.map +1 -1
- package/dist/agents/coordination/AgentCoordinator.d.ts +98 -0
- package/dist/agents/coordination/AgentCoordinator.d.ts.map +1 -0
- package/dist/agents/coordination/AgentCoordinator.js +196 -0
- package/dist/agents/coordination/AgentCoordinator.js.map +1 -0
- package/dist/agents/lifecycle/AgentLifecycleManager.d.ts +107 -0
- package/dist/agents/lifecycle/AgentLifecycleManager.d.ts.map +1 -0
- package/dist/agents/lifecycle/AgentLifecycleManager.js +220 -0
- package/dist/agents/lifecycle/AgentLifecycleManager.js.map +1 -0
- package/dist/agents/memory/AgentMemoryService.d.ts +173 -0
- package/dist/agents/memory/AgentMemoryService.d.ts.map +1 -0
- package/dist/agents/memory/AgentMemoryService.js +297 -0
- package/dist/agents/memory/AgentMemoryService.js.map +1 -0
- package/dist/cli/commands/init.d.ts.map +1 -1
- package/dist/cli/commands/init.js +45 -3
- package/dist/cli/commands/init.js.map +1 -1
- package/dist/cli/commands/skills/index.d.ts +4 -0
- package/dist/cli/commands/skills/index.d.ts.map +1 -1
- package/dist/cli/commands/skills/index.js +8 -2
- package/dist/cli/commands/skills/index.js.map +1 -1
- package/dist/core/memory/SwarmMemoryManager.d.ts +2 -1
- package/dist/core/memory/SwarmMemoryManager.d.ts.map +1 -1
- package/dist/core/memory/SwarmMemoryManager.js +4 -1
- package/dist/core/memory/SwarmMemoryManager.js.map +1 -1
- package/dist/core/memory/dao/AccessControlDAO.d.ts +66 -0
- package/dist/core/memory/dao/AccessControlDAO.d.ts.map +1 -0
- package/dist/core/memory/dao/AccessControlDAO.js +140 -0
- package/dist/core/memory/dao/AccessControlDAO.js.map +1 -0
- package/dist/core/memory/dao/BaseDAO.d.ts +34 -0
- package/dist/core/memory/dao/BaseDAO.d.ts.map +1 -0
- package/dist/core/memory/dao/BaseDAO.js +34 -0
- package/dist/core/memory/dao/BaseDAO.js.map +1 -0
- package/dist/core/memory/dao/BlackboardDAO.d.ts +90 -0
- package/dist/core/memory/dao/BlackboardDAO.d.ts.map +1 -0
- package/dist/core/memory/dao/BlackboardDAO.js +223 -0
- package/dist/core/memory/dao/BlackboardDAO.js.map +1 -0
- package/dist/core/memory/dao/EventDAO.d.ts +83 -0
- package/dist/core/memory/dao/EventDAO.d.ts.map +1 -0
- package/dist/core/memory/dao/EventDAO.js +177 -0
- package/dist/core/memory/dao/EventDAO.js.map +1 -0
- package/dist/core/memory/dao/MemoryEntryDAO.d.ts +57 -0
- package/dist/core/memory/dao/MemoryEntryDAO.d.ts.map +1 -0
- package/dist/core/memory/dao/MemoryEntryDAO.js +159 -0
- package/dist/core/memory/dao/MemoryEntryDAO.js.map +1 -0
- package/dist/core/memory/dao/WorkflowDAO.d.ts +85 -0
- package/dist/core/memory/dao/WorkflowDAO.d.ts.map +1 -0
- package/dist/core/memory/dao/WorkflowDAO.js +182 -0
- package/dist/core/memory/dao/WorkflowDAO.js.map +1 -0
- package/dist/core/memory/services/AccessControlService.d.ts +123 -0
- package/dist/core/memory/services/AccessControlService.d.ts.map +1 -0
- package/dist/core/memory/services/AccessControlService.js +249 -0
- package/dist/core/memory/services/AccessControlService.js.map +1 -0
- package/dist/core/memory/services/MemoryStoreService.d.ts +69 -0
- package/dist/core/memory/services/MemoryStoreService.d.ts.map +1 -0
- package/dist/core/memory/services/MemoryStoreService.js +214 -0
- package/dist/core/memory/services/MemoryStoreService.js.map +1 -0
- package/dist/mcp/handlers/base-handler.d.ts.map +1 -1
- package/dist/mcp/handlers/base-handler.js +4 -1
- package/dist/mcp/handlers/base-handler.js.map +1 -1
- package/dist/mcp/handlers/prediction/regression-risk-analyze.d.ts +11 -1
- package/dist/mcp/handlers/prediction/regression-risk-analyze.d.ts.map +1 -1
- package/dist/mcp/handlers/prediction/regression-risk-analyze.js +63 -8
- package/dist/mcp/handlers/prediction/regression-risk-analyze.js.map +1 -1
- package/dist/mcp/handlers/quality-analyze.d.ts +7 -1
- package/dist/mcp/handlers/quality-analyze.d.ts.map +1 -1
- package/dist/mcp/handlers/quality-analyze.js +18 -1
- package/dist/mcp/handlers/quality-analyze.js.map +1 -1
- package/dist/mcp/handlers/test-generate.d.ts.map +1 -1
- package/dist/mcp/handlers/test-generate.js +24 -8
- package/dist/mcp/handlers/test-generate.js.map +1 -1
- package/dist/mcp/services/AgentRegistry.d.ts +5 -0
- package/dist/mcp/services/AgentRegistry.d.ts.map +1 -1
- package/dist/mcp/services/AgentRegistry.js +19 -0
- package/dist/mcp/services/AgentRegistry.js.map +1 -1
- package/dist/utils/__mocks__/Database.d.ts +64 -0
- package/dist/utils/__mocks__/Database.d.ts.map +1 -0
- package/dist/utils/__mocks__/Database.js +134 -0
- package/dist/utils/__mocks__/Database.js.map +1 -0
- package/package.json +5 -1
|
@@ -0,0 +1,98 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* AgentCoordinator - Handles inter-agent coordination and communication
|
|
3
|
+
*
|
|
4
|
+
* Responsibilities:
|
|
5
|
+
* - Event emission and handling
|
|
6
|
+
* - Message broadcasting to other agents
|
|
7
|
+
* - Status reporting to coordination system
|
|
8
|
+
* - Event handler registration and lifecycle
|
|
9
|
+
*
|
|
10
|
+
* Part of BaseAgent refactoring (Phase 2)
|
|
11
|
+
* Reduces BaseAgent complexity by ~200 LOC
|
|
12
|
+
*/
|
|
13
|
+
import { EventEmitter } from 'events';
|
|
14
|
+
import { AgentId, EventHandler, MemoryStore } from '../../types';
|
|
15
|
+
export interface AgentCoordinatorConfig {
|
|
16
|
+
agentId: AgentId;
|
|
17
|
+
eventBus: EventEmitter;
|
|
18
|
+
memoryStore?: MemoryStore;
|
|
19
|
+
}
|
|
20
|
+
export declare class AgentCoordinator {
|
|
21
|
+
private readonly agentId;
|
|
22
|
+
private readonly eventBus;
|
|
23
|
+
private readonly memoryStore?;
|
|
24
|
+
private readonly eventHandlers;
|
|
25
|
+
constructor(config: AgentCoordinatorConfig);
|
|
26
|
+
/**
|
|
27
|
+
* Register an event handler for a specific event type
|
|
28
|
+
* @param handler Event handler configuration
|
|
29
|
+
*/
|
|
30
|
+
registerEventHandler<T = any>(handler: EventHandler<T>): void;
|
|
31
|
+
/**
|
|
32
|
+
* Unregister an event handler
|
|
33
|
+
* @param eventType Event type to unregister
|
|
34
|
+
* @param handler Handler function to remove
|
|
35
|
+
*/
|
|
36
|
+
unregisterEventHandler(eventType: string, handler: Function): void;
|
|
37
|
+
/**
|
|
38
|
+
* Emit an event to the event bus
|
|
39
|
+
* @param type Event type
|
|
40
|
+
* @param data Event payload
|
|
41
|
+
* @param priority Event priority
|
|
42
|
+
*/
|
|
43
|
+
emitEvent(type: string, data: any, priority?: 'low' | 'medium' | 'high' | 'critical'): void;
|
|
44
|
+
/**
|
|
45
|
+
* Broadcast message to other agents
|
|
46
|
+
* @param type Message type
|
|
47
|
+
* @param payload Message payload
|
|
48
|
+
* @param priority Message priority
|
|
49
|
+
*/
|
|
50
|
+
broadcastMessage(type: string, payload: any, priority?: 'low' | 'medium' | 'high' | 'critical'): Promise<void>;
|
|
51
|
+
/**
|
|
52
|
+
* Send direct message to specific agent
|
|
53
|
+
* @param toAgentId Target agent ID
|
|
54
|
+
* @param type Message type
|
|
55
|
+
* @param payload Message payload
|
|
56
|
+
* @param priority Message priority
|
|
57
|
+
*/
|
|
58
|
+
sendMessage(toAgentId: AgentId, type: string, payload: any, priority?: 'low' | 'medium' | 'high' | 'critical'): Promise<void>;
|
|
59
|
+
/**
|
|
60
|
+
* Report agent status to coordination system
|
|
61
|
+
* @param status Status information to report
|
|
62
|
+
*/
|
|
63
|
+
reportStatus(status: string, metrics?: any): Promise<void>;
|
|
64
|
+
/**
|
|
65
|
+
* Clean up all event handlers
|
|
66
|
+
* Should be called during agent termination
|
|
67
|
+
*/
|
|
68
|
+
cleanup(): void;
|
|
69
|
+
/**
|
|
70
|
+
* Get registered event types
|
|
71
|
+
*/
|
|
72
|
+
getRegisteredEventTypes(): string[];
|
|
73
|
+
/**
|
|
74
|
+
* Get handler count for specific event type
|
|
75
|
+
*/
|
|
76
|
+
getHandlerCount(eventType: string): number;
|
|
77
|
+
/**
|
|
78
|
+
* Get total handler count
|
|
79
|
+
*/
|
|
80
|
+
getTotalHandlerCount(): number;
|
|
81
|
+
/**
|
|
82
|
+
* Get event handlers map (for backward compatibility)
|
|
83
|
+
*/
|
|
84
|
+
getEventHandlers(): Map<string, EventHandler[]>;
|
|
85
|
+
/**
|
|
86
|
+
* Clear all event handlers
|
|
87
|
+
*/
|
|
88
|
+
clearAllHandlers(): void;
|
|
89
|
+
/**
|
|
90
|
+
* Generate unique event ID
|
|
91
|
+
*/
|
|
92
|
+
private generateEventId;
|
|
93
|
+
/**
|
|
94
|
+
* Generate unique message ID
|
|
95
|
+
*/
|
|
96
|
+
private generateMessageId;
|
|
97
|
+
}
|
|
98
|
+
//# sourceMappingURL=AgentCoordinator.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"AgentCoordinator.d.ts","sourceRoot":"","sources":["../../../src/agents/coordination/AgentCoordinator.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;GAWG;AAEH,OAAO,EAAE,YAAY,EAAE,MAAM,QAAQ,CAAC;AAEtC,OAAO,EACL,OAAO,EAEP,YAAY,EAIZ,WAAW,EACZ,MAAM,aAAa,CAAC;AAErB,MAAM,WAAW,sBAAsB;IACrC,OAAO,EAAE,OAAO,CAAC;IACjB,QAAQ,EAAE,YAAY,CAAC;IACvB,WAAW,CAAC,EAAE,WAAW,CAAC;CAC3B;AAED,qBAAa,gBAAgB;IAC3B,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAU;IAClC,OAAO,CAAC,QAAQ,CAAC,QAAQ,CAAe;IACxC,OAAO,CAAC,QAAQ,CAAC,WAAW,CAAC,CAAc;IAC3C,OAAO,CAAC,QAAQ,CAAC,aAAa,CAA0C;gBAE5D,MAAM,EAAE,sBAAsB;IAM1C;;;OAGG;IACI,oBAAoB,CAAC,CAAC,GAAG,GAAG,EAAE,OAAO,EAAE,YAAY,CAAC,CAAC,CAAC,GAAG,IAAI;IASpE;;;;OAIG;IACI,sBAAsB,CAAC,SAAS,EAAE,MAAM,EAAE,OAAO,EAAE,QAAQ,GAAG,IAAI;IAezE;;;;;OAKG;IACI,SAAS,CACd,IAAI,EAAE,MAAM,EACZ,IAAI,EAAE,GAAG,EACT,QAAQ,GAAE,KAAK,GAAG,QAAQ,GAAG,MAAM,GAAG,UAAqB,GAC1D,IAAI;IAcP;;;;;OAKG;IACU,gBAAgB,CAC3B,IAAI,EAAE,MAAM,EACZ,OAAO,EAAE,GAAG,EACZ,QAAQ,GAAE,KAAK,GAAG,QAAQ,GAAG,MAAM,GAAG,UAAqB,GAC1D,OAAO,CAAC,IAAI,CAAC;IAchB;;;;;;OAMG;IACU,WAAW,CACtB,SAAS,EAAE,OAAO,EAClB,IAAI,EAAE,MAAM,EACZ,OAAO,EAAE,GAAG,EACZ,QAAQ,GAAE,KAAK,GAAG,QAAQ,GAAG,MAAM,GAAG,UAAqB,GAC1D,OAAO,CAAC,IAAI,CAAC;IAchB;;;OAGG;IACU,YAAY,CAAC,MAAM,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,GAAG,GAAG,OAAO,CAAC,IAAI,CAAC;IA0BvE;;;OAGG;IACI,OAAO,IAAI,IAAI;IAStB;;OAEG;IACI,uBAAuB,IAAI,MAAM,EAAE;IAI1C;;OAEG;IACI,eAAe,CAAC,SAAS,EAAE,MAAM,GAAG,MAAM;IAIjD;;OAEG;IACI,oBAAoB,IAAI,MAAM;IAQrC;;OAEG;IACI,gBAAgB,IAAI,GAAG,CAAC,MAAM,EAAE,YAAY,EAAE,CAAC;IAItD;;OAEG;IACI,gBAAgB,IAAI,IAAI;IAI/B;;OAEG;IACH,OAAO,CAAC,eAAe;IAIvB;;OAEG;IACH,OAAO,CAAC,iBAAiB;CAG1B"}
|
|
@@ -0,0 +1,196 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
/**
|
|
3
|
+
* AgentCoordinator - Handles inter-agent coordination and communication
|
|
4
|
+
*
|
|
5
|
+
* Responsibilities:
|
|
6
|
+
* - Event emission and handling
|
|
7
|
+
* - Message broadcasting to other agents
|
|
8
|
+
* - Status reporting to coordination system
|
|
9
|
+
* - Event handler registration and lifecycle
|
|
10
|
+
*
|
|
11
|
+
* Part of BaseAgent refactoring (Phase 2)
|
|
12
|
+
* Reduces BaseAgent complexity by ~200 LOC
|
|
13
|
+
*/
|
|
14
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
15
|
+
exports.AgentCoordinator = void 0;
|
|
16
|
+
const SecureRandom_js_1 = require("../../utils/SecureRandom.js");
|
|
17
|
+
class AgentCoordinator {
|
|
18
|
+
constructor(config) {
|
|
19
|
+
this.eventHandlers = new Map();
|
|
20
|
+
this.agentId = config.agentId;
|
|
21
|
+
this.eventBus = config.eventBus;
|
|
22
|
+
this.memoryStore = config.memoryStore;
|
|
23
|
+
}
|
|
24
|
+
/**
|
|
25
|
+
* Register an event handler for a specific event type
|
|
26
|
+
* @param handler Event handler configuration
|
|
27
|
+
*/
|
|
28
|
+
registerEventHandler(handler) {
|
|
29
|
+
const handlers = this.eventHandlers.get(handler.eventType) || [];
|
|
30
|
+
handlers.push(handler);
|
|
31
|
+
this.eventHandlers.set(handler.eventType, handlers);
|
|
32
|
+
// Register with event bus
|
|
33
|
+
this.eventBus.on(handler.eventType, handler.handler);
|
|
34
|
+
}
|
|
35
|
+
/**
|
|
36
|
+
* Unregister an event handler
|
|
37
|
+
* @param eventType Event type to unregister
|
|
38
|
+
* @param handler Handler function to remove
|
|
39
|
+
*/
|
|
40
|
+
unregisterEventHandler(eventType, handler) {
|
|
41
|
+
const handlers = this.eventHandlers.get(eventType);
|
|
42
|
+
if (!handlers)
|
|
43
|
+
return;
|
|
44
|
+
const index = handlers.findIndex(h => h.handler === handler);
|
|
45
|
+
if (index !== -1) {
|
|
46
|
+
handlers.splice(index, 1);
|
|
47
|
+
this.eventBus.off(eventType, handler);
|
|
48
|
+
}
|
|
49
|
+
if (handlers.length === 0) {
|
|
50
|
+
this.eventHandlers.delete(eventType);
|
|
51
|
+
}
|
|
52
|
+
}
|
|
53
|
+
/**
|
|
54
|
+
* Emit an event to the event bus
|
|
55
|
+
* @param type Event type
|
|
56
|
+
* @param data Event payload
|
|
57
|
+
* @param priority Event priority
|
|
58
|
+
*/
|
|
59
|
+
emitEvent(type, data, priority = 'medium') {
|
|
60
|
+
const event = {
|
|
61
|
+
id: this.generateEventId(),
|
|
62
|
+
type,
|
|
63
|
+
source: this.agentId,
|
|
64
|
+
data,
|
|
65
|
+
timestamp: new Date(),
|
|
66
|
+
priority,
|
|
67
|
+
scope: 'global'
|
|
68
|
+
};
|
|
69
|
+
this.eventBus.emit(type, event);
|
|
70
|
+
}
|
|
71
|
+
/**
|
|
72
|
+
* Broadcast message to other agents
|
|
73
|
+
* @param type Message type
|
|
74
|
+
* @param payload Message payload
|
|
75
|
+
* @param priority Message priority
|
|
76
|
+
*/
|
|
77
|
+
async broadcastMessage(type, payload, priority = 'medium') {
|
|
78
|
+
const message = {
|
|
79
|
+
id: this.generateMessageId(),
|
|
80
|
+
from: this.agentId,
|
|
81
|
+
to: { id: 'broadcast', type: 'all', created: new Date() },
|
|
82
|
+
type: type,
|
|
83
|
+
payload,
|
|
84
|
+
timestamp: new Date(),
|
|
85
|
+
priority
|
|
86
|
+
};
|
|
87
|
+
this.eventBus.emit('agent.message', message);
|
|
88
|
+
}
|
|
89
|
+
/**
|
|
90
|
+
* Send direct message to specific agent
|
|
91
|
+
* @param toAgentId Target agent ID
|
|
92
|
+
* @param type Message type
|
|
93
|
+
* @param payload Message payload
|
|
94
|
+
* @param priority Message priority
|
|
95
|
+
*/
|
|
96
|
+
async sendMessage(toAgentId, type, payload, priority = 'medium') {
|
|
97
|
+
const message = {
|
|
98
|
+
id: this.generateMessageId(),
|
|
99
|
+
from: this.agentId,
|
|
100
|
+
to: toAgentId,
|
|
101
|
+
type: type,
|
|
102
|
+
payload,
|
|
103
|
+
timestamp: new Date(),
|
|
104
|
+
priority
|
|
105
|
+
};
|
|
106
|
+
this.eventBus.emit(`agent.message.${toAgentId.id}`, message);
|
|
107
|
+
}
|
|
108
|
+
/**
|
|
109
|
+
* Report agent status to coordination system
|
|
110
|
+
* @param status Status information to report
|
|
111
|
+
*/
|
|
112
|
+
async reportStatus(status, metrics) {
|
|
113
|
+
if (!this.memoryStore) {
|
|
114
|
+
console.warn(`[${this.agentId.id}] Cannot report status: memory store not available`);
|
|
115
|
+
return;
|
|
116
|
+
}
|
|
117
|
+
try {
|
|
118
|
+
const sharedKey = `shared:${this.agentId.type}:status`;
|
|
119
|
+
await this.memoryStore.store(sharedKey, {
|
|
120
|
+
agentId: this.agentId.id,
|
|
121
|
+
status,
|
|
122
|
+
metrics,
|
|
123
|
+
timestamp: new Date()
|
|
124
|
+
});
|
|
125
|
+
// Also emit event
|
|
126
|
+
this.emitEvent('agent.status.updated', {
|
|
127
|
+
agentId: this.agentId,
|
|
128
|
+
status,
|
|
129
|
+
metrics
|
|
130
|
+
});
|
|
131
|
+
}
|
|
132
|
+
catch (error) {
|
|
133
|
+
console.warn(`[${this.agentId.id}] Failed to report status:`, error);
|
|
134
|
+
}
|
|
135
|
+
}
|
|
136
|
+
/**
|
|
137
|
+
* Clean up all event handlers
|
|
138
|
+
* Should be called during agent termination
|
|
139
|
+
*/
|
|
140
|
+
cleanup() {
|
|
141
|
+
for (const [eventType, handlers] of this.eventHandlers.entries()) {
|
|
142
|
+
for (const handler of handlers) {
|
|
143
|
+
this.eventBus.off(eventType, handler.handler);
|
|
144
|
+
}
|
|
145
|
+
}
|
|
146
|
+
this.eventHandlers.clear();
|
|
147
|
+
}
|
|
148
|
+
/**
|
|
149
|
+
* Get registered event types
|
|
150
|
+
*/
|
|
151
|
+
getRegisteredEventTypes() {
|
|
152
|
+
return Array.from(this.eventHandlers.keys());
|
|
153
|
+
}
|
|
154
|
+
/**
|
|
155
|
+
* Get handler count for specific event type
|
|
156
|
+
*/
|
|
157
|
+
getHandlerCount(eventType) {
|
|
158
|
+
return this.eventHandlers.get(eventType)?.length || 0;
|
|
159
|
+
}
|
|
160
|
+
/**
|
|
161
|
+
* Get total handler count
|
|
162
|
+
*/
|
|
163
|
+
getTotalHandlerCount() {
|
|
164
|
+
let count = 0;
|
|
165
|
+
for (const handlers of this.eventHandlers.values()) {
|
|
166
|
+
count += handlers.length;
|
|
167
|
+
}
|
|
168
|
+
return count;
|
|
169
|
+
}
|
|
170
|
+
/**
|
|
171
|
+
* Get event handlers map (for backward compatibility)
|
|
172
|
+
*/
|
|
173
|
+
getEventHandlers() {
|
|
174
|
+
return this.eventHandlers;
|
|
175
|
+
}
|
|
176
|
+
/**
|
|
177
|
+
* Clear all event handlers
|
|
178
|
+
*/
|
|
179
|
+
clearAllHandlers() {
|
|
180
|
+
this.cleanup();
|
|
181
|
+
}
|
|
182
|
+
/**
|
|
183
|
+
* Generate unique event ID
|
|
184
|
+
*/
|
|
185
|
+
generateEventId() {
|
|
186
|
+
return `event-${Date.now()}-${SecureRandom_js_1.SecureRandom.generateId(5)}`;
|
|
187
|
+
}
|
|
188
|
+
/**
|
|
189
|
+
* Generate unique message ID
|
|
190
|
+
*/
|
|
191
|
+
generateMessageId() {
|
|
192
|
+
return `msg-${Date.now()}-${SecureRandom_js_1.SecureRandom.generateId(5)}`;
|
|
193
|
+
}
|
|
194
|
+
}
|
|
195
|
+
exports.AgentCoordinator = AgentCoordinator;
|
|
196
|
+
//# sourceMappingURL=AgentCoordinator.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"AgentCoordinator.js","sourceRoot":"","sources":["../../../src/agents/coordination/AgentCoordinator.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,107 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* AgentLifecycleManager - Manages agent lifecycle state transitions
|
|
3
|
+
*
|
|
4
|
+
* Responsibilities:
|
|
5
|
+
* - Status management (INITIALIZING, ACTIVE, IDLE, TERMINATING, TERMINATED, ERROR)
|
|
6
|
+
* - Lifecycle state transitions with validation
|
|
7
|
+
* - Hook coordination during lifecycle events
|
|
8
|
+
* - State transition auditing
|
|
9
|
+
*
|
|
10
|
+
* Part of BaseAgent refactoring (Phase 1)
|
|
11
|
+
* Reduces BaseAgent complexity by ~150 LOC
|
|
12
|
+
*/
|
|
13
|
+
import { AgentStatus, AgentId } from '../../types';
|
|
14
|
+
export interface LifecycleHooks {
|
|
15
|
+
onPreInitialization?: () => Promise<void>;
|
|
16
|
+
onPostInitialization?: () => Promise<void>;
|
|
17
|
+
onPreTermination?: () => Promise<void>;
|
|
18
|
+
onPostTermination?: () => Promise<void>;
|
|
19
|
+
}
|
|
20
|
+
export interface StateTransition {
|
|
21
|
+
from: AgentStatus;
|
|
22
|
+
to: AgentStatus;
|
|
23
|
+
timestamp: Date;
|
|
24
|
+
reason?: string;
|
|
25
|
+
}
|
|
26
|
+
export declare class AgentLifecycleManager {
|
|
27
|
+
private status;
|
|
28
|
+
private readonly agentId;
|
|
29
|
+
private readonly transitionHistory;
|
|
30
|
+
private readonly validTransitions;
|
|
31
|
+
constructor(agentId: AgentId);
|
|
32
|
+
/**
|
|
33
|
+
* Initialize the agent lifecycle
|
|
34
|
+
* @param hooks Optional lifecycle hooks to execute
|
|
35
|
+
*/
|
|
36
|
+
initialize(hooks?: LifecycleHooks): Promise<void>;
|
|
37
|
+
/**
|
|
38
|
+
* Terminate the agent lifecycle
|
|
39
|
+
* @param hooks Optional lifecycle hooks to execute
|
|
40
|
+
*/
|
|
41
|
+
terminate(hooks?: LifecycleHooks): Promise<void>;
|
|
42
|
+
/**
|
|
43
|
+
* Get current agent status
|
|
44
|
+
*/
|
|
45
|
+
getStatus(): AgentStatus;
|
|
46
|
+
/**
|
|
47
|
+
* Check if agent is in a specific status
|
|
48
|
+
*/
|
|
49
|
+
isInStatus(status: AgentStatus): boolean;
|
|
50
|
+
/**
|
|
51
|
+
* Check if agent is active and can accept tasks
|
|
52
|
+
*/
|
|
53
|
+
canAcceptTasks(): boolean;
|
|
54
|
+
/**
|
|
55
|
+
* Mark agent as active (processing task)
|
|
56
|
+
*/
|
|
57
|
+
markActive(): void;
|
|
58
|
+
/**
|
|
59
|
+
* Mark agent as idle (ready for next task)
|
|
60
|
+
*/
|
|
61
|
+
markIdle(): void;
|
|
62
|
+
/**
|
|
63
|
+
* Mark agent as errored
|
|
64
|
+
*/
|
|
65
|
+
markError(reason: string): void;
|
|
66
|
+
/**
|
|
67
|
+
* Get transition history
|
|
68
|
+
*/
|
|
69
|
+
getTransitionHistory(): StateTransition[];
|
|
70
|
+
/**
|
|
71
|
+
* Get time in current status
|
|
72
|
+
*/
|
|
73
|
+
getTimeInCurrentStatus(): number;
|
|
74
|
+
/**
|
|
75
|
+
* Validate if a state transition is allowed
|
|
76
|
+
* @throws Error if transition is invalid
|
|
77
|
+
*/
|
|
78
|
+
validateTransition(from: AgentStatus, to: AgentStatus): void;
|
|
79
|
+
/**
|
|
80
|
+
* Internal method to perform state transition
|
|
81
|
+
*/
|
|
82
|
+
private transitionTo;
|
|
83
|
+
/**
|
|
84
|
+
* Build valid state transition map
|
|
85
|
+
* Defines the finite state machine for agent lifecycle
|
|
86
|
+
*/
|
|
87
|
+
private buildTransitionMap;
|
|
88
|
+
/**
|
|
89
|
+
* Get status statistics
|
|
90
|
+
*/
|
|
91
|
+
getStatusStatistics(): {
|
|
92
|
+
currentStatus: AgentStatus;
|
|
93
|
+
totalTransitions: number;
|
|
94
|
+
timeInCurrentStatus: number;
|
|
95
|
+
statusBreakdown: Map<AgentStatus, number>;
|
|
96
|
+
};
|
|
97
|
+
/**
|
|
98
|
+
* Set agent status directly (for backward compatibility)
|
|
99
|
+
* @deprecated Use transitionTo() or specific methods like markActive() instead
|
|
100
|
+
*/
|
|
101
|
+
setStatus(newStatus: AgentStatus): void;
|
|
102
|
+
/**
|
|
103
|
+
* Check if agent is terminating
|
|
104
|
+
*/
|
|
105
|
+
isTerminating(): boolean;
|
|
106
|
+
}
|
|
107
|
+
//# sourceMappingURL=AgentLifecycleManager.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"AgentLifecycleManager.d.ts","sourceRoot":"","sources":["../../../src/agents/lifecycle/AgentLifecycleManager.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;GAWG;AAEH,OAAO,EAAE,WAAW,EAAE,OAAO,EAAE,MAAM,aAAa,CAAC;AAEnD,MAAM,WAAW,cAAc;IAC7B,mBAAmB,CAAC,EAAE,MAAM,OAAO,CAAC,IAAI,CAAC,CAAC;IAC1C,oBAAoB,CAAC,EAAE,MAAM,OAAO,CAAC,IAAI,CAAC,CAAC;IAC3C,gBAAgB,CAAC,EAAE,MAAM,OAAO,CAAC,IAAI,CAAC,CAAC;IACvC,iBAAiB,CAAC,EAAE,MAAM,OAAO,CAAC,IAAI,CAAC,CAAC;CACzC;AAED,MAAM,WAAW,eAAe;IAC9B,IAAI,EAAE,WAAW,CAAC;IAClB,EAAE,EAAE,WAAW,CAAC;IAChB,SAAS,EAAE,IAAI,CAAC;IAChB,MAAM,CAAC,EAAE,MAAM,CAAC;CACjB;AAED,qBAAa,qBAAqB;IAChC,OAAO,CAAC,MAAM,CAAyC;IACvD,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAU;IAClC,OAAO,CAAC,QAAQ,CAAC,iBAAiB,CAAyB;IAC3D,OAAO,CAAC,QAAQ,CAAC,gBAAgB,CAAqC;gBAE1D,OAAO,EAAE,OAAO;IAK5B;;;OAGG;IACU,UAAU,CAAC,KAAK,CAAC,EAAE,cAAc,GAAG,OAAO,CAAC,IAAI,CAAC;IAuB9D;;;OAGG;IACU,SAAS,CAAC,KAAK,CAAC,EAAE,cAAc,GAAG,OAAO,CAAC,IAAI,CAAC;IA0B7D;;OAEG;IACI,SAAS,IAAI,WAAW;IAI/B;;OAEG;IACI,UAAU,CAAC,MAAM,EAAE,WAAW,GAAG,OAAO;IAI/C;;OAEG;IACI,cAAc,IAAI,OAAO;IAIhC;;OAEG;IACI,UAAU,IAAI,IAAI;IAKzB;;OAEG;IACI,QAAQ,IAAI,IAAI;IAKvB;;OAEG;IACI,SAAS,CAAC,MAAM,EAAE,MAAM,GAAG,IAAI;IAItC;;OAEG;IACI,oBAAoB,IAAI,eAAe,EAAE;IAIhD;;OAEG;IACI,sBAAsB,IAAI,MAAM;IAMvC;;;OAGG;IACI,kBAAkB,CAAC,IAAI,EAAE,WAAW,EAAE,EAAE,EAAE,WAAW,GAAG,IAAI;IAcnE;;OAEG;IACH,OAAO,CAAC,YAAY;IAYpB;;;OAGG;IACH,OAAO,CAAC,kBAAkB;IAuC1B;;OAEG;IACI,mBAAmB,IAAI;QAC5B,aAAa,EAAE,WAAW,CAAC;QAC3B,gBAAgB,EAAE,MAAM,CAAC;QACzB,mBAAmB,EAAE,MAAM,CAAC;QAC5B,eAAe,EAAE,GAAG,CAAC,WAAW,EAAE,MAAM,CAAC,CAAC;KAC3C;IAkBD;;;OAGG;IACI,SAAS,CAAC,SAAS,EAAE,WAAW,GAAG,IAAI;IAI9C;;OAEG;IACI,aAAa,IAAI,OAAO;CAGhC"}
|
|
@@ -0,0 +1,220 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
/**
|
|
3
|
+
* AgentLifecycleManager - Manages agent lifecycle state transitions
|
|
4
|
+
*
|
|
5
|
+
* Responsibilities:
|
|
6
|
+
* - Status management (INITIALIZING, ACTIVE, IDLE, TERMINATING, TERMINATED, ERROR)
|
|
7
|
+
* - Lifecycle state transitions with validation
|
|
8
|
+
* - Hook coordination during lifecycle events
|
|
9
|
+
* - State transition auditing
|
|
10
|
+
*
|
|
11
|
+
* Part of BaseAgent refactoring (Phase 1)
|
|
12
|
+
* Reduces BaseAgent complexity by ~150 LOC
|
|
13
|
+
*/
|
|
14
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
15
|
+
exports.AgentLifecycleManager = void 0;
|
|
16
|
+
const types_1 = require("../../types");
|
|
17
|
+
class AgentLifecycleManager {
|
|
18
|
+
constructor(agentId) {
|
|
19
|
+
this.status = types_1.AgentStatus.INITIALIZING;
|
|
20
|
+
this.transitionHistory = [];
|
|
21
|
+
this.agentId = agentId;
|
|
22
|
+
this.validTransitions = this.buildTransitionMap();
|
|
23
|
+
}
|
|
24
|
+
/**
|
|
25
|
+
* Initialize the agent lifecycle
|
|
26
|
+
* @param hooks Optional lifecycle hooks to execute
|
|
27
|
+
*/
|
|
28
|
+
async initialize(hooks) {
|
|
29
|
+
this.validateTransition(this.status, types_1.AgentStatus.INITIALIZING);
|
|
30
|
+
try {
|
|
31
|
+
// Execute pre-initialization hook
|
|
32
|
+
if (hooks?.onPreInitialization) {
|
|
33
|
+
await hooks.onPreInitialization();
|
|
34
|
+
}
|
|
35
|
+
// Transition to ACTIVE
|
|
36
|
+
this.transitionTo(types_1.AgentStatus.ACTIVE, 'Initialization complete');
|
|
37
|
+
// Execute post-initialization hook
|
|
38
|
+
if (hooks?.onPostInitialization) {
|
|
39
|
+
await hooks.onPostInitialization();
|
|
40
|
+
}
|
|
41
|
+
}
|
|
42
|
+
catch (error) {
|
|
43
|
+
this.transitionTo(types_1.AgentStatus.ERROR, `Initialization failed: ${error}`);
|
|
44
|
+
throw error;
|
|
45
|
+
}
|
|
46
|
+
}
|
|
47
|
+
/**
|
|
48
|
+
* Terminate the agent lifecycle
|
|
49
|
+
* @param hooks Optional lifecycle hooks to execute
|
|
50
|
+
*/
|
|
51
|
+
async terminate(hooks) {
|
|
52
|
+
this.validateTransition(this.status, types_1.AgentStatus.TERMINATING);
|
|
53
|
+
try {
|
|
54
|
+
// Transition to TERMINATING
|
|
55
|
+
this.transitionTo(types_1.AgentStatus.TERMINATING, 'Termination initiated');
|
|
56
|
+
// Execute pre-termination hook
|
|
57
|
+
if (hooks?.onPreTermination) {
|
|
58
|
+
await hooks.onPreTermination();
|
|
59
|
+
}
|
|
60
|
+
// Transition to TERMINATED
|
|
61
|
+
this.transitionTo(types_1.AgentStatus.TERMINATED, 'Termination complete');
|
|
62
|
+
// Execute post-termination hook
|
|
63
|
+
if (hooks?.onPostTermination) {
|
|
64
|
+
await hooks.onPostTermination();
|
|
65
|
+
}
|
|
66
|
+
}
|
|
67
|
+
catch (error) {
|
|
68
|
+
this.transitionTo(types_1.AgentStatus.ERROR, `Termination failed: ${error}`);
|
|
69
|
+
throw error;
|
|
70
|
+
}
|
|
71
|
+
}
|
|
72
|
+
/**
|
|
73
|
+
* Get current agent status
|
|
74
|
+
*/
|
|
75
|
+
getStatus() {
|
|
76
|
+
return this.status;
|
|
77
|
+
}
|
|
78
|
+
/**
|
|
79
|
+
* Check if agent is in a specific status
|
|
80
|
+
*/
|
|
81
|
+
isInStatus(status) {
|
|
82
|
+
return this.status === status;
|
|
83
|
+
}
|
|
84
|
+
/**
|
|
85
|
+
* Check if agent is active and can accept tasks
|
|
86
|
+
*/
|
|
87
|
+
canAcceptTasks() {
|
|
88
|
+
return this.status === types_1.AgentStatus.ACTIVE || this.status === types_1.AgentStatus.IDLE;
|
|
89
|
+
}
|
|
90
|
+
/**
|
|
91
|
+
* Mark agent as active (processing task)
|
|
92
|
+
*/
|
|
93
|
+
markActive() {
|
|
94
|
+
this.validateTransition(this.status, types_1.AgentStatus.ACTIVE);
|
|
95
|
+
this.transitionTo(types_1.AgentStatus.ACTIVE, 'Task execution started');
|
|
96
|
+
}
|
|
97
|
+
/**
|
|
98
|
+
* Mark agent as idle (ready for next task)
|
|
99
|
+
*/
|
|
100
|
+
markIdle() {
|
|
101
|
+
this.validateTransition(this.status, types_1.AgentStatus.IDLE);
|
|
102
|
+
this.transitionTo(types_1.AgentStatus.IDLE, 'Task execution completed');
|
|
103
|
+
}
|
|
104
|
+
/**
|
|
105
|
+
* Mark agent as errored
|
|
106
|
+
*/
|
|
107
|
+
markError(reason) {
|
|
108
|
+
this.transitionTo(types_1.AgentStatus.ERROR, reason);
|
|
109
|
+
}
|
|
110
|
+
/**
|
|
111
|
+
* Get transition history
|
|
112
|
+
*/
|
|
113
|
+
getTransitionHistory() {
|
|
114
|
+
return [...this.transitionHistory];
|
|
115
|
+
}
|
|
116
|
+
/**
|
|
117
|
+
* Get time in current status
|
|
118
|
+
*/
|
|
119
|
+
getTimeInCurrentStatus() {
|
|
120
|
+
const lastTransition = this.transitionHistory[this.transitionHistory.length - 1];
|
|
121
|
+
if (!lastTransition)
|
|
122
|
+
return 0;
|
|
123
|
+
return Date.now() - lastTransition.timestamp.getTime();
|
|
124
|
+
}
|
|
125
|
+
/**
|
|
126
|
+
* Validate if a state transition is allowed
|
|
127
|
+
* @throws Error if transition is invalid
|
|
128
|
+
*/
|
|
129
|
+
validateTransition(from, to) {
|
|
130
|
+
// Allow same-state transitions
|
|
131
|
+
if (from === to)
|
|
132
|
+
return;
|
|
133
|
+
// Check if transition is valid
|
|
134
|
+
const validNextStates = this.validTransitions.get(from);
|
|
135
|
+
if (!validNextStates || !validNextStates.has(to)) {
|
|
136
|
+
throw new Error(`Invalid lifecycle transition for agent ${this.agentId.id}: ` +
|
|
137
|
+
`Cannot transition from ${from} to ${to}`);
|
|
138
|
+
}
|
|
139
|
+
}
|
|
140
|
+
/**
|
|
141
|
+
* Internal method to perform state transition
|
|
142
|
+
*/
|
|
143
|
+
transitionTo(newStatus, reason) {
|
|
144
|
+
const transition = {
|
|
145
|
+
from: this.status,
|
|
146
|
+
to: newStatus,
|
|
147
|
+
timestamp: new Date(),
|
|
148
|
+
reason
|
|
149
|
+
};
|
|
150
|
+
this.status = newStatus;
|
|
151
|
+
this.transitionHistory.push(transition);
|
|
152
|
+
}
|
|
153
|
+
/**
|
|
154
|
+
* Build valid state transition map
|
|
155
|
+
* Defines the finite state machine for agent lifecycle
|
|
156
|
+
*/
|
|
157
|
+
buildTransitionMap() {
|
|
158
|
+
return new Map([
|
|
159
|
+
// INITIALIZING can transition to ACTIVE or ERROR
|
|
160
|
+
[types_1.AgentStatus.INITIALIZING, new Set([
|
|
161
|
+
types_1.AgentStatus.ACTIVE,
|
|
162
|
+
types_1.AgentStatus.ERROR
|
|
163
|
+
])],
|
|
164
|
+
// ACTIVE can transition to IDLE, TERMINATING, or ERROR
|
|
165
|
+
[types_1.AgentStatus.ACTIVE, new Set([
|
|
166
|
+
types_1.AgentStatus.IDLE,
|
|
167
|
+
types_1.AgentStatus.TERMINATING,
|
|
168
|
+
types_1.AgentStatus.ERROR,
|
|
169
|
+
types_1.AgentStatus.ACTIVE // Allow re-entry for task processing
|
|
170
|
+
])],
|
|
171
|
+
// IDLE can transition to ACTIVE, TERMINATING, or ERROR
|
|
172
|
+
[types_1.AgentStatus.IDLE, new Set([
|
|
173
|
+
types_1.AgentStatus.ACTIVE,
|
|
174
|
+
types_1.AgentStatus.TERMINATING,
|
|
175
|
+
types_1.AgentStatus.ERROR
|
|
176
|
+
])],
|
|
177
|
+
// TERMINATING can transition to TERMINATED or ERROR
|
|
178
|
+
[types_1.AgentStatus.TERMINATING, new Set([
|
|
179
|
+
types_1.AgentStatus.TERMINATED,
|
|
180
|
+
types_1.AgentStatus.ERROR
|
|
181
|
+
])],
|
|
182
|
+
// TERMINATED is a final state
|
|
183
|
+
[types_1.AgentStatus.TERMINATED, new Set()],
|
|
184
|
+
// ERROR can transition to TERMINATING (for cleanup)
|
|
185
|
+
[types_1.AgentStatus.ERROR, new Set([
|
|
186
|
+
types_1.AgentStatus.TERMINATING
|
|
187
|
+
])]
|
|
188
|
+
]);
|
|
189
|
+
}
|
|
190
|
+
/**
|
|
191
|
+
* Get status statistics
|
|
192
|
+
*/
|
|
193
|
+
getStatusStatistics() {
|
|
194
|
+
const statusBreakdown = new Map();
|
|
195
|
+
for (const transition of this.transitionHistory) {
|
|
196
|
+
statusBreakdown.set(transition.to, (statusBreakdown.get(transition.to) || 0) + 1);
|
|
197
|
+
}
|
|
198
|
+
return {
|
|
199
|
+
currentStatus: this.status,
|
|
200
|
+
totalTransitions: this.transitionHistory.length,
|
|
201
|
+
timeInCurrentStatus: this.getTimeInCurrentStatus(),
|
|
202
|
+
statusBreakdown
|
|
203
|
+
};
|
|
204
|
+
}
|
|
205
|
+
/**
|
|
206
|
+
* Set agent status directly (for backward compatibility)
|
|
207
|
+
* @deprecated Use transitionTo() or specific methods like markActive() instead
|
|
208
|
+
*/
|
|
209
|
+
setStatus(newStatus) {
|
|
210
|
+
this.status = newStatus;
|
|
211
|
+
}
|
|
212
|
+
/**
|
|
213
|
+
* Check if agent is terminating
|
|
214
|
+
*/
|
|
215
|
+
isTerminating() {
|
|
216
|
+
return this.status === types_1.AgentStatus.TERMINATING || this.status === types_1.AgentStatus.TERMINATED;
|
|
217
|
+
}
|
|
218
|
+
}
|
|
219
|
+
exports.AgentLifecycleManager = AgentLifecycleManager;
|
|
220
|
+
//# sourceMappingURL=AgentLifecycleManager.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"AgentLifecycleManager.js","sourceRoot":"","sources":["../../../src/agents/lifecycle/AgentLifecycleManager.ts"],"names":[],"mappings":"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"}
|