Download packages/coding-agent/src/core/event-bus.ts from SaylorTwift/pi: direct link, hf CLI and curl.
- Browser
- Download file 795 Bytes
-
https://huggingface.co/SaylorTwift/pi/resolve/main/packages/coding-agent/src/core/event-bus.ts
- Command line
-
hf download hf://SaylorTwift/pi/packages/coding-agent/src/core/event-bus.ts
-
curl -L -o event-bus.ts https://huggingface.co/SaylorTwift/pi/resolve/main/packages/coding-agent/src/core/event-bus.ts
795 Bytes
| import { EventEmitter } from "node:events"; | |
| export interface EventBus { | |
| emit(channel: string, data: unknown): void; | |
| on(channel: string, handler: (data: unknown) => void): () => void; | |
| } | |
| export interface EventBusController extends EventBus { | |
| clear(): void; | |
| } | |
| export function createEventBus(): EventBusController { | |
| const emitter = new EventEmitter(); | |
| return { | |
| emit: (channel, data) => { | |
| emitter.emit(channel, data); | |
| }, | |
| on: (channel, handler) => { | |
| const safeHandler = async (data: unknown) => { | |
| try { | |
| await handler(data); | |
| } catch (err) { | |
| console.error(`Event handler error (${channel}):`, err); | |
| } | |
| }; | |
| emitter.on(channel, safeHandler); | |
| return () => emitter.off(channel, safeHandler); | |
| }, | |
| clear: () => { | |
| emitter.removeAllListeners(); | |
| }, | |
| }; | |
| } | |