/** * @factory/collaboration — the realtime collaboration bridge (phase-07, * TASK-0091…0095 client side). * * Public surface (the granular subpath exports in `package.json` re-export * the same modules; this barrel is the convenient entry): * * - {@link ./codec} — the block tree ↔ Yjs doc codec (round-trip + * two-codecs-agree property tested; the wire `BlockOperation[]` * diff, minimal patches). * - {@link ./mapping} — the yXml node mapping derived from * `@factory/shared`'s `BLOCK_CONTENT_SCHEMAS` (the structural gate: * a new block type must extend the shared schema or the round-trip * test fails). * - {@link ./provider} — the WebSocket client provider (the * TASK-0091 R3 frame protocol, reconnect state machine). * - {@link ./offline} — y-indexeddb persistence wiring (1 s autosave, * deterministic doc name). * - {@link ./awareness} — the presence/awareness state machine * (deterministic colors, stale-cursor validity, prune). * - {@link ./outbox} — the non-editor mutation queue (per-resource * FIFO, idempotency keys, backoff, failed list, GC, cap). * * The package is tiptap/React-free by design: the canvas (`apps/web`) * implements {@link YjsDocBinding} with y-prosemirror and owns the * awareness frame DECODING (y-protocols `applyAwarenessUpdate`), feeding * decoded per-peer state into the provider's awareness store. */ export * from "./codec.js"; export * from "./mapping.js"; export * from "./provider.js"; export * from "./offline.js"; export * from "./awareness.js"; export * from "./outbox.js"; export * from "./types.js";