From 843c9199e6b22ba3f436df7299ebcc84bba616db 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 1227e3672a5a24b7331567fc3f431e422e1513c1:quixos-instance/workspaces/todo --- .gitignore | 2 + .quixos-template-source.json | 4 + locks/interfaces.lock | 70 +++++++++ locks/packages.lock | 22 +++ quixos.lock | 8 + workspace.qx | 277 +++++++++++++++++++++++++++++++++++ 6 files changed, 383 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..5e92e71 --- /dev/null +++ b/.quixos-template-source.json @@ -0,0 +1,4 @@ +{ + "monorepoCommit": "1227e3672a5a24b7331567fc3f431e422e1513c1", + "sourcePath": "quixos-instance/workspaces/todo" +} diff --git a/locks/interfaces.lock b/locks/interfaces.lock new file mode 100644 index 0000000..af9d9da --- /dev/null +++ b/locks/interfaces.lock @@ -0,0 +1,70 @@ +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 WebStudioFactory source { + repository "https://repos.quixos.org/org-quixos-web-studio/interface-factory.git"; + commit "0000000000000000000000000000000000000017"; + } + interface WebStudioReactComponent source { + repository "https://repos.quixos.org/org-quixos-web-studio/interface-react-component.git"; + commit "0000000000000000000000000000000000000018"; + } + interface WebStudioReactSource source { + repository "https://repos.quixos.org/org-quixos-web-studio/interface-react-source.git"; + commit "0000000000000000000000000000000000000029"; + } + 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"; + } + interface TagData source { + repository "https://repos.quixos.org/quixos-todo/interface-tag-data.git"; + commit "0000000000000000000000000000000000000030"; + } + interface CompletionData source { + repository "https://repos.quixos.org/quixos-todo/interface-completion-data.git"; + commit "0000000000000000000000000000000000000031"; + } +} 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..d6c825b --- /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 "1227e3672a5a24b7331567fc3f431e422e1513c1"; + } + import "locks/interfaces.lock"; + import "locks/packages.lock"; +} diff --git a/workspace.qx b/workspace.qx new file mode 100644 index 0000000..dc98091 --- /dev/null +++ b/workspace.qx @@ -0,0 +1,277 @@ +workspace Todo id "workspace:todo" revision "workspace:todo@capabilities-v1" commit "0000000000000000000000000000000000000001" { + atom Project id "atom:project" doc "A named collection of tasks."; + atom Tag id "atom:tag" doc "A shared task label with a name and color."; + atom Completion id "atom:completion" doc "One recorded completion of a task."; + 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 TagData; + import interface CompletionData; + import interface ProjectTasks; + import interface ProjectActions; + import interface TaskActions; + import interface DisplayLabel; + import interface TaskCount; + import interface WebStudioFactory; + import interface WebStudioReactSource; + 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 WebStudioFactory id "conformance:todo:Project:WebStudioFactory" { + bind create.call to package ProjectRuntime.newProject with { project to constructor Project; }; + } + 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 to state ProjectName; + } + conform Project as ProjectTasks id "conformance:todo:Project:ProjectTasks" { + private edge ProjectTags id "edge:project:tags" { + atom Project projection tags id "projection:project:tags" many-unique; + atom Tag projection catalogs id "projection:tag:catalogs" many-unique; + } + bind tags.resolve to edge ProjectTags.tags.resolve; + bind tags.connect to edge ProjectTags.tags.connect; + bind tags.disconnect to edge ProjectTags.tags.disconnect; + bind tags.watch-start to edge ProjectTags.tags.watch-start; + bind tags.watch-stop to edge ProjectTags.tags.watch-stop; + 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; + bind tasks.watch-start to edge ProjectTaskEdge.tasks.watch-start; + bind tasks.watch-stop to edge ProjectTaskEdge.tasks.watch-stop; + } + conform Project as ProjectActions id "conformance:todo:Project:ProjectActions" { + + bind addTag.call to package ProjectRuntime.addTag with { catalog to interface ProjectTasks; tag to constructor Tag; }; + 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 WebStudioReactSource id "conformance:todo:ProjectReactComponent:WebStudioReactSource" { + bind source.get to package ProjectReactRuntime.sourceGet; + } + conform ProjectReactComponent as WebStudioReactComponent; tasks: interface-ref;}> id "conformance:todo:ProjectReactComponent:WebStudioReactComponent" { + 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 EstimatedHours id "slot:task:estimated-hours" on Task : double policy optimistic-register default 0; + private state RepeatDays id "slot:task:repeat-days" on Task : int32 policy optimistic-register default 0; + private edge TaskTags id "edge:task:tags" { + atom Task projection tags id "projection:task:tags" many-unique; + atom Tag projection tasks id "projection:tag:tasks" many-unique; + } + private edge TaskCompletions id "edge:task:completions" { + atom Task projection completions id "projection:task:completions" many-unique; + atom Completion projection task id "projection:completion:task" optional-one; + } + bind estimatedHours to state EstimatedHours; + bind repeatDays to state RepeatDays; + bind tags.resolve to edge TaskTags.tags.resolve; + bind tags.connect to edge TaskTags.tags.connect; + bind tags.disconnect to edge TaskTags.tags.disconnect; + bind tags.watch-start to edge TaskTags.tags.watch-start; + bind tags.watch-stop to edge TaskTags.tags.watch-stop; + bind completions.resolve to edge TaskCompletions.completions.resolve; + bind completions.connect to edge TaskCompletions.completions.connect; + bind completions.disconnect to edge TaskCompletions.completions.disconnect; + bind completions.watch-start to edge TaskCompletions.completions.watch-start; + bind completions.watch-stop to edge TaskCompletions.completions.watch-stop; + 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 to state TaskTitle; + bind status to state TaskStatus; + bind priority to state TaskPriority; + bind notes to state TaskNotes; + bind dueDate to state TaskDueDate; + bind energy to state TaskEnergy; + } + conform Task as TaskActions id "conformance:todo:Task:TaskActions" { + + bind complete.call to package TodoRuntime.complete with { + completion to constructor Completion; + 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 WebStudioReactSource id "conformance:todo:TaskReactComponent:WebStudioReactSource" { + bind source.get to package TodoReactRuntime.sourceGet; + } + conform TaskReactComponent as WebStudioReactComponent;}> id "conformance:todo:TaskReactComponent:WebStudioReactComponent" { + 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; + } + + conform Tag as TagData id "conformance:tag:data" { + private state Tagname id "slot:tag:name" on Tag : string policy optimistic-register default "New tag"; + bind name to state Tagname; + private state Tagcolor id "slot:tag:color" on Tag : string policy optimistic-register default "#557a68"; + bind color to state Tagcolor; + } + conform Completion as CompletionData id "conformance:completion:data" { + private state CompletioncompletedAt id "slot:completion:completedAt" on Completion : double policy optimistic-register default 0; + bind completedAt to state CompletioncompletedAt; + private state CompletionscheduledDate id "slot:completion:scheduledDate" on Completion : string policy optimistic-register default ""; + bind scheduledDate to state CompletionscheduledDate; + } + constructor Tag to ProjectRuntime.createTag with { data to interface TagData; }; + constructor Completion to TodoRuntime.createCompletion with { data to interface CompletionData; }; + 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; + }; +}