@just-every/ensemble
Version:
LLM provider abstraction layer with unified streaming interface
53 lines • 1.5 kB
JavaScript
import { exportAgent } from './agent.js';
class EventControllerImpl {
eventHandler = null;
setEventHandler(handler) {
this.eventHandler = handler;
if (handler) {
console.log('[EventController] Event handler set');
}
else {
console.log('[EventController] Event handler cleared');
}
}
getEventHandler() {
return this.eventHandler;
}
hasEventHandler() {
return this.eventHandler !== null;
}
async emit(event) {
if (this.eventHandler) {
try {
await Promise.resolve(this.eventHandler(event));
}
catch (error) {
console.error('[EventController] Error in event handler:', error);
}
}
}
}
let eventControllerInstance = null;
export function getEventController() {
if (!eventControllerInstance) {
eventControllerInstance = new EventControllerImpl();
}
return eventControllerInstance;
}
export function setEventHandler(handler) {
getEventController().setEventHandler(handler);
}
export async function emitEvent(event, agent, model) {
let eventToEmit = event;
if (agent) {
eventToEmit = {
...event,
agent: exportAgent(agent, model),
};
}
return getEventController().emit(eventToEmit);
}
export function hasEventHandler() {
return getEventController().hasEventHandler();
}
//# sourceMappingURL=event_controller.js.map