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