import interface TagData; external atom Tag id "atom:tag"; import interface Named; import interface ProjectTasks; external atom Project id "atom:project"; external atom Task id "atom:task"; package ProjectRuntime id "package:project-runtime" revision "package:project-runtime@1" { function newProject id "export:project-runtime:new-project" : unit -> atom-ref requires { constructor project id "port:project-runtime:new-project" : Project input unit; }; constructor createProject id "export:project-runtime:create-project" constructs Project : unit; operation addTask id "export:project-runtime:add-task" : string -> atom-ref mode call receiver atom Project requires { interface tasks id "port:project-runtime:tasks" : ProjectTasks; constructor task id "port:project-actions:task-constructor" : Task input string; }; operation taskCountGet id "export:project-runtime:task-count-get" : unit -> uint32 mode call receiver atom Project requires { interface tasks id "port:project-runtime:tasks" : ProjectTasks; }; operation taskCountWatch id "export:project-runtime:task-count-watch" : unit -> watch-handle mode watch-start emits uint32 receiver atom Project requires { interface tasks id "port:project-runtime:tasks" : ProjectTasks; }; operation taskCountWatchStop id "export:project-runtime:task-count-watch-stop" : watch-handle -> unit mode watch-stop receiver atom Project; operation searchDocumentGet id "export:project-runtime:search-document-get" : unit -> message "org.quixos.web-studio.SearchDocument" mode call receiver atom Project requires { interface named id "port:project-search:named" : Named; interface tasks id "port:project-search:tasks" : ProjectTasks; }; operation searchDocumentWatch id "export:project-runtime:search-document-watch" : unit -> watch-handle mode watch-start emits message "org.quixos.web-studio.SearchDocument" receiver atom Project requires { interface named id "port:project-search:named" : Named; interface tasks id "port:project-search:tasks" : ProjectTasks; }; operation searchDocumentWatchStop id "export:project-runtime:search-document-watch-stop" : watch-handle -> unit mode watch-stop receiver atom Project; constructor createTag id "create-tag" constructs Tag : string requires { interface data id "tag-data" : TagData; }; operation addTag id "add-tag" : string -> atom-ref mode call receiver atom Project requires { interface catalog id "catalog" : ProjectTasks; constructor tag id "tag-constructor" : Tag input string; }; }