From d99fe966f3b5e748e9968681257ff5f354e0d1a0 Mon Sep 17 00:00:00 2001 From: Quixos Template Publisher Date: Sat, 1 Jan 2000 00:00:00 +0000 Subject: [PATCH] Export template source from 099bb9f5d64bce50b20b6cb51d5333f009b8d418:quixos-instance/workspaces/todo --- .gitignore | 2 + .quixos-template-source.json | 4 + locks/interfaces.lock | 58 +++++++++ locks/packages.lock | 22 ++++ quixos.lock | 8 ++ workspace.qx | 227 +++++++++++++++++++++++++++++++++++ 6 files changed, 321 insertions(+) create mode 100644 .gitignore create mode 100644 .quixos-template-source.json create mode 100644 locks/interfaces.lock create mode 100644 locks/packages.lock create mode 100644 quixos.lock create mode 100644 workspace.qx diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..73cc1df --- /dev/null +++ b/.gitignore @@ -0,0 +1,2 @@ +# Authoring journals, resolver checkouts, and provisional reports are not source. +/.quixos/ diff --git a/.quixos-template-source.json b/.quixos-template-source.json new file mode 100644 index 0000000..b612fc3 --- /dev/null +++ b/.quixos-template-source.json @@ -0,0 +1,4 @@ +{ + "monorepoCommit": "099bb9f5d64bce50b20b6cb51d5333f009b8d418", + "sourcePath": "quixos-instance/workspaces/todo" +} diff --git a/locks/interfaces.lock b/locks/interfaces.lock new file mode 100644 index 0000000..4f0980b --- /dev/null +++ b/locks/interfaces.lock @@ -0,0 +1,58 @@ +quixos-lock fragment version 1 { + interface Named source { + repository "https://repos.quixos.org/quixos-todo/interface-named.git"; + commit "0000000000000000000000000000000000000010"; + } + interface TaskData source { + repository "https://repos.quixos.org/quixos-todo/interface-task-data.git"; + commit "0000000000000000000000000000000000000011"; + } + interface ProjectTasks source { + repository "https://repos.quixos.org/quixos-todo/interface-project-tasks.git"; + commit "0000000000000000000000000000000000000012"; + } + interface ProjectActions source { + repository "https://repos.quixos.org/quixos-todo/interface-project-actions.git"; + commit "0000000000000000000000000000000000000013"; + } + interface TaskActions source { + repository "https://repos.quixos.org/quixos-todo/interface-task-actions.git"; + commit "0000000000000000000000000000000000000014"; + } + interface DisplayLabel source { + repository "https://repos.quixos.org/quixos-todo/interface-display-label.git"; + commit "0000000000000000000000000000000000000015"; + } + interface TaskCount source { + repository "https://repos.quixos.org/quixos-todo/interface-task-count.git"; + commit "0000000000000000000000000000000000000016"; + } + interface WebStudioCreateable source { + repository "https://repos.quixos.org/org-quixos-web-studio/interface-createable.git"; + commit "0000000000000000000000000000000000000017"; + } + interface WebStudioReactComponent source { + repository "https://repos.quixos.org/org-quixos-web-studio/interface-react-component.git"; + commit "0000000000000000000000000000000000000018"; + } + interface WebStudioHasReactComponent source { + repository "https://repos.quixos.org/org-quixos-web-studio/interface-has-react-component.git"; + commit "0000000000000000000000000000000000000019"; + } + interface WebStudioCanvas source { + repository "https://repos.quixos.org/org-quixos-web-studio/interface-canvas.git"; + commit "0000000000000000000000000000000000000024"; + } + interface WebStudioCanvasPlacement source { + repository "https://repos.quixos.org/org-quixos-web-studio/interface-canvas-placement.git"; + commit "0000000000000000000000000000000000000025"; + } + interface WebStudioPlaceable source { + repository "https://repos.quixos.org/org-quixos-web-studio/interface-placeable.git"; + commit "0000000000000000000000000000000000000026"; + } + interface WebStudioSearchable source { + repository "https://repos.quixos.org/org-quixos-web-studio/interface-searchable.git"; + commit "0000000000000000000000000000000000000027"; + } +} diff --git a/locks/packages.lock b/locks/packages.lock new file mode 100644 index 0000000..ef0b723 --- /dev/null +++ b/locks/packages.lock @@ -0,0 +1,22 @@ +quixos-lock fragment version 1 { + package TodoRuntime source { + repository "https://repos.quixos.org/quixos-todo/package-todo-runtime.git"; + commit "0000000000000000000000000000000000000020"; + } + package ProjectRuntime source { + repository "https://repos.quixos.org/quixos-todo/package-project-runtime.git"; + commit "0000000000000000000000000000000000000021"; + } + package ProjectReactRuntime source { + repository "https://repos.quixos.org/quixos-todo/package-project-react-runtime.git"; + commit "0000000000000000000000000000000000000022"; + } + package TodoReactRuntime source { + repository "https://repos.quixos.org/quixos-todo/package-todo-react-runtime.git"; + commit "0000000000000000000000000000000000000023"; + } + package WebStudioCanvasRuntime source { + repository "https://repos.quixos.org/org-quixos-web-studio/package-canvas-runtime.git"; + commit "0000000000000000000000000000000000000028"; + } +} diff --git a/quixos.lock b/quixos.lock new file mode 100644 index 0000000..9579338 --- /dev/null +++ b/quixos.lock @@ -0,0 +1,8 @@ +quixos-lock version 1 { + quixos source { + repository "https://gitea-external.egads.tutti.syntaxblitz.net/quixos/quixos.git"; + commit "099bb9f5d64bce50b20b6cb51d5333f009b8d418"; + } + import "locks/interfaces.lock"; + import "locks/packages.lock"; +} diff --git a/workspace.qx b/workspace.qx new file mode 100644 index 0000000..5e07106 --- /dev/null +++ b/workspace.qx @@ -0,0 +1,227 @@ +workspace Todo id "workspace:todo" revision "workspace:todo@capabilities-v1" commit "0000000000000000000000000000000000000001" { + atom Project id "atom:project" doc "A named collection of tasks."; + atom Task id "atom:task" doc "A unit of work."; + atom ProjectReactComponent id "atom:project-react-component" doc "A persisted Web Studio presentation of a Project."; + atom TaskReactComponent id "atom:task-react-component" doc "A persisted Web Studio presentation of a Task."; + atom WebStudioCanvas id "atom:org.quixos.web-studio:canvas" doc "A spatial Web Studio surface."; + atom WebStudioCanvasPlacement id "atom:org.quixos.web-studio:canvas-placement" doc "One presentation of an object on a Web Studio canvas."; + + import interface Named; + import interface TaskData; + import interface ProjectTasks; + import interface ProjectActions; + import interface TaskActions; + import interface DisplayLabel; + import interface TaskCount; + import interface WebStudioCreateable; + import interface WebStudioReactComponent; + import interface WebStudioHasReactComponent; + import interface WebStudioCanvas; + import interface WebStudioCanvasPlacement; + import interface WebStudioPlaceable; + import interface WebStudioSearchable; + + import package TodoRuntime; + import package ProjectRuntime; + import package ProjectReactRuntime; + import package TodoReactRuntime; + import package WebStudioCanvasRuntime; + + + conform WebStudioCanvas as WebStudioCanvas id "conformance:todo:WebStudioCanvas:WebStudioCanvas" { + private state WebStudioCanvasName id "slot:org.quixos.web-studio.canvas:name" on WebStudioCanvas : string policy optimistic-register default "Hearth"; + + bind name.get to state WebStudioCanvasName.read; + bind name.set to state WebStudioCanvasName.write; + bind placements.resolve to edge WebStudioCanvasPlacementEdge.placements.resolve; + } + conform WebStudioCanvasPlacement as WebStudioCanvasPlacement id "conformance:todo:WebStudioCanvasPlacement:WebStudioCanvasPlacement" { + private state WebStudioPlacementPosition id "slot:org.quixos.web-studio.canvas-placement:position" on WebStudioCanvasPlacement : message "org.quixos.web-studio.CanvasPosition" policy optimistic-register default {"x":0,"y":0}; + private state WebStudioPlacementSize id "slot:org.quixos.web-studio.canvas-placement:size" on WebStudioCanvasPlacement : message "org.quixos.web-studio.CanvasSize" policy optimistic-register default {"width":420,"height":320}; + private state WebStudioPlacementZ id "slot:org.quixos.web-studio.canvas-placement:z" on WebStudioCanvasPlacement : int32 policy optimistic-register default 0; + private edge WebStudioCanvasPlacementEdge id "edge:org.quixos.web-studio:canvas-placements" { + atom WebStudioCanvasPlacement projection canvas id "projection:org.quixos.web-studio.canvas-placement:canvas" exactly-one; + interface WebStudioCanvas projection placements id "projection:org.quixos.web-studio.canvas:placements" many-unique ordered public-traversal; + } + private edge WebStudioPlacementSubjectEdge id "edge:org.quixos.web-studio:placement-subject" { + atom WebStudioCanvasPlacement projection subject id "projection:org.quixos.web-studio.canvas-placement:subject" exactly-one; + interface WebStudioPlaceable projection placements id "projection:org.quixos.web-studio.placeable:placements" many-unique ordered public-traversal; + } + + bind position.get to state WebStudioPlacementPosition.read; + bind position.set to state WebStudioPlacementPosition.write; + bind size.get to state WebStudioPlacementSize.read; + bind size.set to state WebStudioPlacementSize.write; + bind z.get to state WebStudioPlacementZ.read; + bind z.set to state WebStudioPlacementZ.write; + bind subject.resolve to edge WebStudioPlacementSubjectEdge.subject.resolve; + bind subject.connect to edge WebStudioPlacementSubjectEdge.subject.connect; + bind subject.disconnect to edge WebStudioPlacementSubjectEdge.subject.disconnect; + bind canvas.resolve to edge WebStudioCanvasPlacementEdge.canvas.resolve; + bind canvas.connect to edge WebStudioCanvasPlacementEdge.canvas.connect; + bind canvas.disconnect to edge WebStudioCanvasPlacementEdge.canvas.disconnect; + } + + conform Project as WebStudioCreateable id "conformance:todo:Project:WebStudioCreateable" { +} + conform Project as WebStudioPlaceable id "conformance:todo:Project:WebStudioPlaceable" { + + bind placements.resolve to edge WebStudioPlacementSubjectEdge.placements.resolve; + } + conform Project as WebStudioSearchable id "conformance:todo:Project:WebStudioSearchable" { + + bind document.get to package ProjectRuntime.searchDocumentGet with { + named to interface Named; + tasks to interface ProjectTasks; + }; + bind document.watch-start to package ProjectRuntime.searchDocumentWatch with { + named to interface Named; + tasks to interface ProjectTasks; + }; + bind document.watch-stop to package ProjectRuntime.searchDocumentWatchStop; + } + conform Project as WebStudioHasReactComponent id "conformance:todo:Project:WebStudioHasReactComponent" { + private edge ProjectComponentEdge id "edge:project:web-studio-component" { + atom ProjectReactComponent projection subject id "projection:project-component:subject" exactly-one public-traversal; + atom Project projection component id "projection:project:component" optional-one; + } + + bind component.resolve to edge ProjectComponentEdge.component.resolve; + materialize component if absent using constructor ProjectReactComponent via edge ProjectComponentEdge.subject; + } + conform Project as Named id "conformance:todo:Project:Named" { + private state ProjectName id "slot:project:name" on Project : string policy optimistic-register default "Untitled project"; + + bind name.get to state ProjectName.read; + bind name.set to state ProjectName.write; + } + conform Project as ProjectTasks id "conformance:todo:Project:ProjectTasks" { + private edge ProjectTaskEdge id "edge:project:tasks" { + atom Project projection tasks id "projection:project:tasks" many-unique ordered; + atom Task projection project id "projection:task:project" optional-one; + } + + bind tasks.resolve to edge ProjectTaskEdge.tasks.resolve; + bind tasks.connect to edge ProjectTaskEdge.tasks.connect; + bind tasks.disconnect to edge ProjectTaskEdge.tasks.disconnect; + } + conform Project as ProjectActions id "conformance:todo:Project:ProjectActions" { + + bind addTask.call to package ProjectRuntime.addTask with { + tasks to interface ProjectTasks; + task to constructor Task; + }; + } + conform Project as TaskCount id "conformance:todo:Project:TaskCount" { + + bind count.get to package ProjectRuntime.taskCountGet with { + tasks to interface ProjectTasks; + }; + bind count.watch-start to package ProjectRuntime.taskCountWatch with { + tasks to interface ProjectTasks; + }; + bind count.watch-stop to package ProjectRuntime.taskCountWatchStop; + } + conform ProjectReactComponent as WebStudioReactComponent id "conformance:todo:ProjectReactComponent:WebStudioReactComponent" { + + bind source.get to package ProjectReactRuntime.sourceGet; + bind props.get to package ProjectReactRuntime.propsGet with { + named to interface Named via edge ProjectComponentEdge.subject; + tasks to interface ProjectTasks via edge ProjectComponentEdge.subject; + }; + bind props.watch-start to package ProjectReactRuntime.propsWatch with { + named to interface Named via edge ProjectComponentEdge.subject; + tasks to interface ProjectTasks via edge ProjectComponentEdge.subject; + }; + bind props.watch-stop to package ProjectReactRuntime.propsWatchStop; + } + + conform Task as WebStudioHasReactComponent id "conformance:todo:Task:WebStudioHasReactComponent" { + private edge TaskComponentEdge id "edge:task:web-studio-component" { + atom TaskReactComponent projection subject id "projection:task-component:subject" exactly-one public-traversal; + atom Task projection component id "projection:task:component" optional-one; + } + + bind component.resolve to edge TaskComponentEdge.component.resolve; + materialize component if absent using constructor TaskReactComponent via edge TaskComponentEdge.subject; + } + conform Task as WebStudioPlaceable id "conformance:todo:Task:WebStudioPlaceable" { + + bind placements.resolve to edge WebStudioPlacementSubjectEdge.placements.resolve; + } + conform Task as WebStudioSearchable id "conformance:todo:Task:WebStudioSearchable" { + + bind document.get to package TodoRuntime.searchDocumentGet with { + data to interface TaskData; + }; + bind document.watch-start to package TodoRuntime.searchDocumentWatch with { + data to interface TaskData; + }; + bind document.watch-stop to package TodoRuntime.searchDocumentWatchStop; + } + conform Task as TaskData id "conformance:todo:Task:TaskData" { + private state TaskTitle id "slot:task:title" on Task : string policy optimistic-register default "Untitled task"; + private state TaskStatus id "slot:task:status" on Task : string policy optimistic-register default "OPEN"; + private state TaskPriority id "slot:task:priority" on Task : string policy optimistic-register default "NORMAL"; + private state TaskNotes id "slot:task:notes" on Task : string policy crdt(string) default ""; + private state TaskDueDate id "slot:task:due-date" on Task : string policy optimistic-register default ""; + private state TaskEnergy id "slot:task:energy" on Task : string policy optimistic-register default "MEDIUM"; + + bind title.get to state TaskTitle.read; + bind title.set to state TaskTitle.write; + bind status.get to state TaskStatus.read; + bind status.set to state TaskStatus.write; + bind priority.get to state TaskPriority.read; + bind priority.set to state TaskPriority.write; + bind notes.get to state TaskNotes.read; + bind notes.set to state TaskNotes.write; + bind dueDate.get to state TaskDueDate.read; + bind dueDate.set to state TaskDueDate.write; + bind energy.get to state TaskEnergy.read; + bind energy.set to state TaskEnergy.write; + } + conform Task as TaskActions id "conformance:todo:Task:TaskActions" { + + bind complete.call to package TodoRuntime.complete with { + data to interface TaskData; + }; + bind reopen.call to package TodoRuntime.reopen with { + data to interface TaskData; + }; + bind archive.call to package TodoRuntime.archive with { + data to interface TaskData; + }; + } + conform Task as DisplayLabel id "conformance:todo:Task:DisplayLabel" { + + bind label.get to package TodoRuntime.displayLabelGet with { + data to interface TaskData; + }; + bind label.watch-start to package TodoRuntime.displayLabelWatch with { + data to interface TaskData; + }; + bind label.watch-stop to package TodoRuntime.displayLabelWatchStop; + } + conform TaskReactComponent as WebStudioReactComponent id "conformance:todo:TaskReactComponent:WebStudioReactComponent" { + + bind source.get to package TodoReactRuntime.sourceGet; + bind props.get to package TodoReactRuntime.propsGet with { + data to interface TaskData via edge TaskComponentEdge.subject; + }; + bind props.watch-start to package TodoReactRuntime.propsWatch with { + data to interface TaskData via edge TaskComponentEdge.subject; + }; + bind props.watch-stop to package TodoReactRuntime.propsWatchStop; + } + + constructor Project to ProjectRuntime.createProject; + constructor Task to TodoRuntime.createTask with { + data to interface TaskData; + }; + constructor ProjectReactComponent to ProjectReactRuntime.createComponent; + constructor TaskReactComponent to TodoReactRuntime.createComponent; + constructor WebStudioCanvas to WebStudioCanvasRuntime.createCanvas; + constructor WebStudioCanvasPlacement to WebStudioCanvasRuntime.createPlacement with { + placement to interface WebStudioCanvasPlacement; + }; +}