mirror of
https://github.com/harivansh-afk/clanker-agent.git
synced 2026-04-16 07:04:26 +00:00
- Copy all pi-mono source into apps/companion-os/ - Update Dockerfile to COPY pre-built binary instead of downloading from GitHub Releases - Update deploy-staging.yml to build pi from source (bun compile) before Docker build - Add apps/companion-os/** to path triggers - No more cross-repo dispatch needed Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
33 lines
853 B
TypeScript
33 lines
853 B
TypeScript
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();
|
|
},
|
|
};
|
|
}
|