Build workspace agent, capability graph, and versioned cutovers
This commit is contained in:
+12
-30
@@ -2,34 +2,10 @@ workspace WebStudioFixture id "workspace:web-studio-fixture" revision "workspace
|
||||
atom Project id "atom:project";
|
||||
atom ProjectComponent id "atom:project-component";
|
||||
|
||||
interface ReactComponent id "interface:org.quixos.web-studio.react-component" revision "interface:org.quixos.web-studio.react-component@1" source {
|
||||
repository "https://repos.quixos.org/org-quixos-web-studio/interface-react-component.git";
|
||||
commit "2222222222222222222222222222222222222222";
|
||||
} {
|
||||
value props id "member:org.quixos.web-studio.react-component:props" : string {
|
||||
get id "operation:org.quixos.web-studio.react-component:props:get";
|
||||
}
|
||||
}
|
||||
|
||||
interface HasReactComponent id "interface:org.quixos.web-studio.has-react-component" revision "interface:org.quixos.web-studio.has-react-component@1" source {
|
||||
repository "https://repos.quixos.org/org-quixos-web-studio/interface-has-react-component.git";
|
||||
commit "3333333333333333333333333333333333333333";
|
||||
} {
|
||||
relation component id "member:org.quixos.web-studio.has-react-component:component" : optional-one interface ReactComponent {
|
||||
resolve id "operation:org.quixos.web-studio.has-react-component:component:resolve";
|
||||
}
|
||||
}
|
||||
|
||||
package ComponentRuntime id "package:component-runtime" revision "package:component-runtime@1" source {
|
||||
repository "https://repos.quixos.org/quixos-test/package-component-runtime.git";
|
||||
commit "4444444444444444444444444444444444444444";
|
||||
} {
|
||||
constructor createComponent id "export:component-runtime:create-component" constructs ProjectComponent : atom-ref<Project>;
|
||||
operation propsGet id "export:component-runtime:props-get" : unit -> string mode call receiver atom ProjectComponent requires {
|
||||
edge subject id "port:component:subject" : exactly-one atom Project [resolve];
|
||||
state projectName id "port:component:project-name" : string [read];
|
||||
};
|
||||
}
|
||||
import interface Named;
|
||||
import interface ReactComponent;
|
||||
import interface HasReactComponent;
|
||||
import package ComponentRuntime;
|
||||
|
||||
shared state ProjectName id "slot:project:name" on Project : string
|
||||
policy optimistic-register default "Untitled project";
|
||||
@@ -38,14 +14,20 @@ workspace WebStudioFixture id "workspace:web-studio-fixture" revision "workspace
|
||||
atom Project projection component id "projection:project:component" optional-one;
|
||||
}
|
||||
|
||||
conform Project as Named {
|
||||
bind name.get to state ProjectName.read;
|
||||
bind name.set to state ProjectName.write;
|
||||
bind name.watch-start to state ProjectName.watch-start;
|
||||
bind name.watch-stop to state ProjectName.watch-stop;
|
||||
}
|
||||
|
||||
conform Project as HasReactComponent {
|
||||
bind component.resolve to edge ProjectComponentEdge.component.resolve;
|
||||
materialize component if absent using constructor ProjectComponent via edge ProjectComponentEdge.subject;
|
||||
}
|
||||
conform ProjectComponent as ReactComponent {
|
||||
bind props.get to package ComponentRuntime.propsGet with {
|
||||
subject to edge ProjectComponentEdge.subject;
|
||||
projectName to state ProjectName via edge ProjectComponentEdge.subject;
|
||||
project to interface Named via edge ProjectComponentEdge.subject;
|
||||
};
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user