36 lines
993 B
TypeScript
36 lines
993 B
TypeScript
import { EventEmitter } from 'events';
|
|
|
|
/**
|
|
* AgentEvents: 시스템 전체의 이벤트를 관리하는 관찰자(Observer) 허브.
|
|
* 모듈 간 결합도를 낮추기 위해 직접 호출 대신 이벤트를 발행-구독합니다.
|
|
*/
|
|
export class AgentEvents extends EventEmitter {
|
|
private static instance: AgentEvents;
|
|
|
|
private constructor() {
|
|
super();
|
|
this.setMaxListeners(20);
|
|
}
|
|
|
|
public static getInstance(): AgentEvents {
|
|
if (!AgentEvents.instance) {
|
|
AgentEvents.instance = new AgentEvents();
|
|
}
|
|
return AgentEvents.instance;
|
|
}
|
|
}
|
|
|
|
/**
|
|
* 표준 이벤트 타입 정의
|
|
*/
|
|
export enum AgentEventTypes {
|
|
DATA_READY = 'data:ready',
|
|
TASK_STARTED = 'task:started',
|
|
TASK_COMPLETED = 'task:completed',
|
|
ERROR_OCCURRED = 'error:occurred',
|
|
TRANSACTION_COMMITTED = 'transaction:committed',
|
|
TRANSACTION_ROLLED_BACK = 'transaction:rolled_back'
|
|
}
|
|
|
|
export const agentEvents = AgentEvents.getInstance();
|