Parent
Part of #739
Context
Event handlers currently use a class-based interface:
interface EventHandlerInterface {
handle(event: EventInterface | NotificationInterface, register: Register): Promise<void>
}
And are stored as class instances in config:
eventHandlers: Record<EventName, Array<EventHandlerInterface>>
Proposed Changes
- Create
eventHandler() DSL function in packages/core/src/dsl/event-handler.ts
- Update
EventHandlerMetadata to use handler functions
- Update event dispatching to call handler functions directly
- Reimplement
@EventHandler decorator as wrapper
Design Considerations
- Event handlers are linked to specific event types
- Multiple handlers can react to the same event
- Handlers receive a Register to emit further events (event chaining)
- The interface currently stores instances, not classes — the migration is straightforward
Acceptance Criteria
Parent
Part of #739
Context
Event handlers currently use a class-based interface:
And are stored as class instances in config:
Proposed Changes
eventHandler()DSL function inpackages/core/src/dsl/event-handler.tsEventHandlerMetadatato use handler functions@EventHandlerdecorator as wrapperDesign Considerations
Acceptance Criteria
eventHandler()DSL function created