Files
clawdbot/src/infra/agent-events.ts
2025-12-09 00:59:56 +01:00

31 lines
670 B
TypeScript

export type AgentEventPayload = {
runId: string;
seq: number;
stream: "job" | "tool" | string;
ts: number;
data: Record<string, unknown>;
};
let seq = 0;
const listeners = new Set<(evt: AgentEventPayload) => void>();
export function emitAgentEvent(event: Omit<AgentEventPayload, "seq" | "ts">) {
const enriched: AgentEventPayload = {
...event,
seq: ++seq,
ts: Date.now(),
};
for (const listener of listeners) {
try {
listener(enriched);
} catch {
/* ignore */
}
}
}
export function onAgentEvent(listener: (evt: AgentEventPayload) => void) {
listeners.add(listener);
return () => listeners.delete(listener);
}