// Shared record definitions, repeated explicitly in independently locked resources. external atom Document id "atom:reader:document"; external atom Highlight id "atom:reader:highlight"; external atom Comment id "atom:reader:comment"; type SourceRange = record { sourceRevision: string; start: int32; end: int32; }; type CommentContent = record { text: string; tags: list; }; type DocumentSeed = record { sourceRevision: string; content: string; }; interface DocumentFactory id "interface:reader:document-factory" revision "interface:reader:document-factory@1" { static operation create id "document:create" : DocumentSeed -> atom-ref { call id "document:create:call" execution transaction targets [browser, server]; } }