{"version":3,"file":"EventEmitter.mjs","names":[],"sources":["../../src/agent/EventEmitter.ts"],"sourcesContent":["import type { EventEmitter as NativeEventEmitter } from 'events'\nimport { fromEventPattern, Subject } from 'rxjs'\nimport { takeUntil } from 'rxjs/operators'\nimport { InjectionSymbols } from '../constants'\nimport { inject, injectable } from '../plugins'\nimport type { AgentDependencies } from './AgentDependencies'\nimport type { AgentContext } from './context'\nimport type { BaseEvent } from './Events'\n\ntype EmitEvent<T extends BaseEvent> = Omit<T, 'metadata'>\n\n@injectable()\nexport class EventEmitter {\n  private eventEmitter: NativeEventEmitter\n  private stop$: Subject<boolean>\n\n  public constructor(\n    @inject(InjectionSymbols.AgentDependencies) agentDependencies: AgentDependencies,\n    @inject(InjectionSymbols.Stop$) stop$: Subject<boolean>\n  ) {\n    this.eventEmitter = new agentDependencies.EventEmitterClass()\n    this.stop$ = stop$\n  }\n\n  // agentContext is currently not used, but already making required as it will be used soon\n  public emit<T extends BaseEvent>(agentContext: AgentContext, data: EmitEvent<T>) {\n    this.eventEmitter.emit(data.type, {\n      ...data,\n      metadata: {\n        contextCorrelationId: agentContext.contextCorrelationId,\n      },\n    })\n  }\n\n  public on<T extends BaseEvent>(event: T['type'], listener: (data: T) => void | Promise<void>) {\n    this.eventEmitter.on(event, listener)\n  }\n\n  public off<T extends BaseEvent>(event: T['type'], listener: (data: T) => void | Promise<void>) {\n    this.eventEmitter.off(event, listener)\n  }\n\n  public observable<T extends BaseEvent>(event: T['type']) {\n    return fromEventPattern<T>(\n      (handler) => this.on(event, handler),\n      (handler) => this.off(event, handler)\n    ).pipe(takeUntil(this.stop$))\n  }\n}\n"],"mappings":";;;;;;;;;;;;AAYO,yBAAM,aAAa;CAIxB,AAAO,YACL,AAA4C,mBAC5C,AAAgC,OAChC;AACA,OAAK,eAAe,IAAI,kBAAkB,mBAAmB;AAC7D,OAAK,QAAQ;;CAIf,AAAO,KAA0B,cAA4B,MAAoB;AAC/E,OAAK,aAAa,KAAK,KAAK,MAAM;GAChC,GAAG;GACH,UAAU,EACR,sBAAsB,aAAa,sBACpC;GACF,CAAC;;CAGJ,AAAO,GAAwB,OAAkB,UAA6C;AAC5F,OAAK,aAAa,GAAG,OAAO,SAAS;;CAGvC,AAAO,IAAyB,OAAkB,UAA6C;AAC7F,OAAK,aAAa,IAAI,OAAO,SAAS;;CAGxC,AAAO,WAAgC,OAAkB;AACvD,SAAO,kBACJ,YAAY,KAAK,GAAG,OAAO,QAAQ,GACnC,YAAY,KAAK,IAAI,OAAO,QAAQ,CACtC,CAAC,KAAK,UAAU,KAAK,MAAM,CAAC;;;;CAnChC,YAAY;oBAMR,OAAO,iBAAiB,kBAAkB;oBAC1C,OAAO,iBAAiB,MAAM"}