import interface PresentationMount; import interface WebStudioDisplayTarget; import interface WebStudioDisplayDirectory; import interface WebStudioPresentable; external atom DisplayTarget id "atom:org.quixos.web-studio:display-target"; type Assignment = record {subject:interface-ref;presentation:string;presentationMount:optional>;}; type Observed = record {generation:uint32;sequence:uint32;status:string;error:string;}; type DisplayState = record {label:string;generation:uint32;presentation:optional;observed:optional;}; package WebStudioDisplayRuntime id "package:org.quixos.web-studio:display-runtime" revision "package:org.quixos.web-studio:display-runtime@1" { operation enroll id "displays:enroll" : record {nonce:string;label:string;} -> interface-ref mode call execution transaction targets [server] receiver any requires { edge enrolled id "enrolled" : many-unique interface WebStudioDisplayTarget [resolve,connect]; interface existing id "existing" : WebStudioDisplayTarget using [nonce.get] from input; creation target id "target" : DisplayTarget input record {nonce:string;initial:DisplayState;}; }; operation assign id "displays:assign" : optional -> uint32 mode call execution transaction targets [server] receiver any requires { state data id "data" : DisplayState [read,write]; edge mount id "mount" : optional-one interface PresentationMount [resolve,connect,disconnect]; edge selected id "selected" : optional-one interface WebStudioPresentable [resolve,connect,disconnect]; interface subject id "subject" : WebStudioPresentable using [canPresent.call] from input; }; operation acknowledge id "displays:acknowledge" : Observed -> bool mode call execution transaction targets [server] receiver any requires {state data id "data" : DisplayState [read,write];}; query Inputs id "displays:inputs" root WebStudioDisplayTarget document "queries/inputs.graphql" operation "Inputs" {replica;} query View id "displays:view" root WebStudioDisplayTarget document "queries/view.graphql" operation "View" {local from Inputs;watch;} query ListInputs id "displays:list-inputs" root workspace WebStudioDisplayTarget document "queries/list-inputs.graphql" operation "ListInputs" {replica;} query List id "displays:list" root workspace WebStudioDisplayTarget document "queries/list.graphql" operation "List" {local from ListInputs;watch;} }