Introduce repository-backed capability workspaces
- define and validate the capability and resource-lock languages - provision workspace source repositories through Central Gitea - build package runtimes from pinned standalone sources - replace legacy schema compilation with workspace persistence plans - add stable optimistic registers and Automerge CRDT documents - modernize TypeScript/Nix package builds and runtime activation readiness
This commit is contained in:
+37
-190
@@ -2,215 +2,62 @@ syntax = "proto3";
|
||||
|
||||
package camino;
|
||||
|
||||
import "quixos/refs.proto";
|
||||
|
||||
message SymbolRef {
|
||||
string namespace = 1;
|
||||
string name = 2;
|
||||
string version = 3;
|
||||
string hash = 4;
|
||||
}
|
||||
|
||||
enum ConflictStrategy {
|
||||
CONFLICT_STRATEGY_UNSPECIFIED = 0;
|
||||
REPLACE = 1;
|
||||
PRESERVE_CONFLICTS = 2;
|
||||
CRDT = 3;
|
||||
}
|
||||
|
||||
enum Cardinality {
|
||||
CARDINALITY_UNSPECIFIED = 0;
|
||||
OPTIONAL_ONE = 1;
|
||||
EXACTLY_ONE = 2;
|
||||
MANY = 3;
|
||||
MANY_UNIQUE = 4;
|
||||
MANY_ORDERED = 5;
|
||||
MANY_UNIQUE_ORDERED = 6;
|
||||
}
|
||||
|
||||
enum DocRefStrength {
|
||||
DOC_REF_STRENGTH_UNSPECIFIED = 0;
|
||||
SOFT_REF = 1;
|
||||
PROJECTED_EDGE = 2;
|
||||
message AtomDefinition {
|
||||
string atom_id = 1;
|
||||
string display_name = 2;
|
||||
}
|
||||
|
||||
enum FieldStorageKind {
|
||||
FIELD_STORAGE_KIND_UNSPECIFIED = 0;
|
||||
STORED = 1;
|
||||
DERIVED = 2;
|
||||
LAZY = 3;
|
||||
EXTERNAL = 4;
|
||||
STATIC_FINAL = 5;
|
||||
message AtomConformance {
|
||||
string atom_id = 1;
|
||||
string interface_revision_id = 2;
|
||||
}
|
||||
|
||||
message Ref {
|
||||
string object_id = 1;
|
||||
message StateAttachment {
|
||||
string slot_id = 1;
|
||||
string attached_atom_id = 2;
|
||||
string display_name = 3;
|
||||
string value_type_json = 4;
|
||||
string storage_policy_json = 5;
|
||||
string default_value_json = 6;
|
||||
}
|
||||
|
||||
message CustomField {}
|
||||
|
||||
message WatchStartResult {
|
||||
string watch_id = 1;
|
||||
message EndpointConstraint {
|
||||
oneof kind {
|
||||
string atom_id = 1;
|
||||
string interface_revision_id = 2;
|
||||
}
|
||||
}
|
||||
|
||||
message WatchStopRequest {
|
||||
string watch_id = 1;
|
||||
}
|
||||
|
||||
message WatchStopResult {}
|
||||
|
||||
message CrdtText {
|
||||
bytes payload = 1;
|
||||
}
|
||||
|
||||
message CrdtRichText {
|
||||
bytes payload = 1;
|
||||
}
|
||||
|
||||
message CrdtJson {
|
||||
bytes payload = 1;
|
||||
}
|
||||
|
||||
message ClassSchema {
|
||||
SymbolRef id = 1;
|
||||
uint32 version = 2;
|
||||
repeated FieldSchema fields = 3;
|
||||
repeated EdgeSchema edges = 4;
|
||||
repeated MethodSchema methods = 5;
|
||||
repeated MigrationSpec migrations = 6;
|
||||
string source_file = 7;
|
||||
string proto_message = 8;
|
||||
repeated OperationServiceSchema operation_services = 9;
|
||||
repeated InterfaceImplementationSchema implements = 10;
|
||||
ConstructorSpec constructor = 11;
|
||||
}
|
||||
|
||||
message FieldSchema {
|
||||
string name = 1;
|
||||
uint32 tag = 2;
|
||||
TypeRef type = 3;
|
||||
ConflictStrategy conflict = 4;
|
||||
bool repeated = 5;
|
||||
bool optional = 6;
|
||||
FieldStorage storage = 7;
|
||||
FieldOps ops = 8;
|
||||
InterfaceFieldContract interface_contract = 9;
|
||||
bool is_display_label = 10;
|
||||
}
|
||||
|
||||
message FieldStorage {
|
||||
FieldStorageKind kind = 1;
|
||||
quixos.FunctionRef resolver = 2;
|
||||
bool cache = 3;
|
||||
}
|
||||
|
||||
message TypeRef {
|
||||
string proto_type = 1;
|
||||
SymbolRef symbol = 2;
|
||||
}
|
||||
|
||||
message TypeBinding {
|
||||
string name = 1;
|
||||
TypeRef type = 2;
|
||||
}
|
||||
|
||||
message InterfaceFieldContract {
|
||||
bool required = 1;
|
||||
bool readable = 2;
|
||||
bool writable = 3;
|
||||
bool watchable = 4;
|
||||
string type_param = 5;
|
||||
TypeRef type = 6;
|
||||
string ref_target_type_param = 7;
|
||||
Cardinality edge_cardinality = 8;
|
||||
}
|
||||
|
||||
message InterfaceImplementationSchema {
|
||||
SymbolRef interface = 1;
|
||||
repeated TypeBinding type_bindings = 2;
|
||||
}
|
||||
|
||||
message InterfaceSchema {
|
||||
SymbolRef id = 1;
|
||||
uint32 version = 2;
|
||||
repeated FieldSchema fields = 3;
|
||||
string source_file = 4;
|
||||
string proto_message = 5;
|
||||
repeated string type_parameters = 6;
|
||||
}
|
||||
|
||||
enum FieldImplementation {
|
||||
FIELD_IMPLEMENTATION_UNSPECIFIED = 0;
|
||||
SERVICE = 1;
|
||||
}
|
||||
|
||||
message FieldOps {
|
||||
FieldImplementation implementation = 1;
|
||||
string service = 2;
|
||||
}
|
||||
|
||||
message EdgeSchema {
|
||||
SymbolRef id = 1;
|
||||
// Legacy/source-side projection fields. Prefer from_endpoint/to_endpoint.
|
||||
string source_field = 2;
|
||||
SymbolRef from_class = 3;
|
||||
SymbolRef to_class = 4;
|
||||
Cardinality cardinality = 5;
|
||||
string inverse = 6;
|
||||
repeated FieldSchema fields = 7;
|
||||
EdgeEndpointSchema from_endpoint = 8;
|
||||
EdgeEndpointSchema to_endpoint = 9;
|
||||
SymbolRef declaring_class = 10;
|
||||
repeated SymbolRef tags = 11;
|
||||
repeated SymbolRef implements = 12;
|
||||
bool undirected = 13;
|
||||
}
|
||||
|
||||
message EdgeEndpointSchema {
|
||||
SymbolRef class = 1;
|
||||
SymbolRef interface = 2;
|
||||
string projection = 3;
|
||||
message EdgeEndpoint {
|
||||
string projection_id = 1;
|
||||
string display_name = 2;
|
||||
EndpointConstraint constraint = 3;
|
||||
Cardinality cardinality = 4;
|
||||
bool indexed = 5;
|
||||
EdgeMaterialization materialize = 6;
|
||||
bool ordered = 5;
|
||||
}
|
||||
|
||||
message EdgeMaterialization {
|
||||
SymbolRef class = 1;
|
||||
string connect_projection = 2;
|
||||
message EdgeAttachment {
|
||||
string edge_type_id = 1;
|
||||
string display_name = 2;
|
||||
EdgeEndpoint first = 3;
|
||||
EdgeEndpoint second = 4;
|
||||
}
|
||||
|
||||
message MethodSchema {
|
||||
string name = 1;
|
||||
quixos.FunctionRef function = 2;
|
||||
}
|
||||
|
||||
message MigrationSpec {
|
||||
uint32 from_version = 1;
|
||||
uint32 to_version = 2;
|
||||
quixos.FunctionRef function = 3;
|
||||
}
|
||||
|
||||
message ConstructorSpec {
|
||||
quixos.FunctionRef function = 1;
|
||||
}
|
||||
|
||||
message OperationSchema {
|
||||
string name = 1;
|
||||
TypeRef input_type = 2;
|
||||
TypeRef output_type = 3;
|
||||
quixos.FunctionRef function = 4;
|
||||
}
|
||||
|
||||
message OperationServiceSchema {
|
||||
string name = 1;
|
||||
string full_name = 2;
|
||||
repeated OperationSchema operations = 3;
|
||||
}
|
||||
|
||||
message DocRefDeclaration {
|
||||
string local_name = 1;
|
||||
SymbolRef type = 2;
|
||||
SymbolRef target_class = 3;
|
||||
DocRefStrength strength = 4;
|
||||
// Camino consumes this persistence-only projection of a checked workspace.
|
||||
// Interfaces, operation bindings, packages, and constructors stay in orch.
|
||||
message PersistencePlan {
|
||||
string workspace_id = 1;
|
||||
string workspace_revision_id = 2;
|
||||
repeated AtomDefinition atoms = 3;
|
||||
repeated AtomConformance conformances = 4;
|
||||
repeated StateAttachment states = 5;
|
||||
repeated EdgeAttachment edges = 6;
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user