# halkyon_content What seals and opens a person's synced content, in pure Dart (Halkyon's ADR 0044, D49), so that Learn's agent, which runs without Flutter, seals and opens rows as the apps do. The apps take it through halkyon_app, which exports `halkyon_content.dart`, and rich text through halkyon_editor, which exports `rich_text.dart`. | Library | What it holds | |---|---| | `halkyon_content.dart` | The envelope every synced row is sealed in (`PayloadEnvelope` on a `ContentCipher`, `SodiumContentCipher`; ADR 0019), a file sealed alike (`SealedFile`, HLKF); the account's unlocked keys (`UnlockedAccountKeys`) and new ones for an account without a password (`newAccountKeys`, an agent's); shared spaces through the module (`SharedSpaceGateway`) and their keys, sealed to each member and held to the public keys first seen (`SharedKeys`, `KeyPins`, ADR 0044, D3, D18, D20); people's files on the device and the module's store (`FileCache`, `DirectoryFileCache`, `FileServerGateway`; ADR 0043) | | `rich_text.dart` | `RichContent`, the editor's document JSON, and the names of its blocks (`content_blocks.dart`), which halkyon_editor edits and shows | | `testing.dart` | Fakes: `FakeContentCipher`, `FakeSharedKeysGateway`, `FakeSharedSpaceGateway`, `MemoryKeyPinStore`, `FakeFileServerGateway`, `MemoryFileCache` | `sodium`'s build hook compiles libsodium, so every machine that builds or tests it needs a C compiler and `make` (as for halkyon_keys). Licensed under the AGPL-3.0, as the apps.