Skip to main content

codex_extension_api/capabilities/
events.rs

1use codex_protocol::protocol::Event;
2
3/// Host-provided fire-and-forget sink for extension-generated events.
4///
5/// Extensions construct protocol events with the correlation id appropriate for
6/// the callback they are handling, then leave persistence, ordering, transport
7/// fanout, and logging decisions to the host.
8pub trait ExtensionEventSink: Send + Sync {
9    /// Queue one protocol event for host-owned delivery.
10    fn emit(&self, event: Event);
11}
12
13/// Event sink used when the host does not expose extension event emission.
14#[derive(Debug, Default, Clone, Copy)]
15pub struct NoopExtensionEventSink;
16
17impl ExtensionEventSink for NoopExtensionEventSink {
18    fn emit(&self, _event: Event) {}
19}