// 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 CommentData id "interface:reader:comment-data" revision "interface:reader:comment-data@1" { queryable value content id "comment:content" : CommentContent { get id "comment:content:get" execution snapshot targets [browser, server]; edit id "comment:content:edit" execution transaction targets [browser, server]; } }