Files
quixos-protocol/test/fixtures/events/event-subscription.qx
T
Timothy J. Aveni 1e72713ae2 Implement durable typed journals, subscriptions, and Reader document connections
Add checked native journal/subscription bindings, managed-reference retention,
bounded history and backpressure, atomic delivery receipts, and fenced hosting.
Preserve source publication prediction and replica reconciliation; subscription
attachment, controls, and delivery remain authoritative in this initial version.

Connect independent manual/Gutenberg document producers to Reader bookshelves
through typed adapters. Add connection inspection, shared provider selection,
authoring documentation, and restart/rejection/fan-out integration coverage.

Verified compiler suite (287 passed, two existing skips), Nix runtime and
PostgreSQL qualification, five example assemblies, headless Reader integration,
Chromium Reader integration, resource pins, formatting, and lint.
No pinned workspace runtime was deployed.
2026-09-28 19:35:51 -07:00

19 lines
1.3 KiB
Plaintext

import interface EventStream;
import interface EventHandler;
type StartPosition = variant id "org.quixos.events:start@1" {
future id "events:start:future" : unit;
retained id "events:start:retained" : unit;
afterCursor id "events:start:after" : string;
};
interface EventSubscription<value Payload,value Parameters> id "interface:org.quixos.events:subscription" revision "interface:org.quixos.events:subscription@1" {
operation attach id "events:attach" : record {source:interface-ref<EventStream<Payload>>;handler:interface-ref<EventHandler<Payload,Parameters>>;parameters:Parameters;start:StartPosition;} -> unit {
call id "events:attach:call" execution transaction targets [server];
}
queryable value status id "events:status" : record {status:string;generation:uint64;cursor:uint64;failure:optional<record {publication:string;code:string;message:string;}>;} {
get id "events:status:get" execution snapshot targets [server];
}
operation pause id "events:pause" : unit -> unit {call id "events:pause:call" execution transaction targets [server];}
operation resume id "events:resume" : unit -> unit {call id "events:resume:call" execution transaction targets [server];}
operation retire id "events:retire" : unit -> unit {call id "events:retire:call" execution transaction targets [server];}
}