external atom Document id "async:document"; import interface DocumentData; import interface Summarizer; package ControllerRuntime id "async:controller-runtime" revision "async:controller-runtime@1" { function echo id "async:controller:echo" : string -> string execution snapshot targets [server]; operation refresh id "async:controller:refresh" : record { operationId: string; } -> string mode call execution remote receiver atom Document requires { interface document id "async:controller:document" : DocumentData using [content.get, summary.set]; interface provider id "async:controller:provider" : Summarizer using [summarize.call]; }; operation finish id "async:controller:finish" : record { operationId: string; summary: record { text: string; basedOn: string; }; } -> unit mode call execution transaction targets [server] receiver atom Document requires { state job id "async:finish:job" : optional [read, write]; state summary id "async:finish:summary" : record { text: string; basedOn: string; } [write]; }; operation runPending id "async:controller:run-pending" : optional -> unit mode call execution remote receiver atom Document requires { interface document id "async:pending:document" : DocumentData using [content.get, recordSummary.call]; interface provider id "async:pending:provider" : Summarizer using [summarize.call]; }; }