syntax = "proto3"; package camino; enum Cardinality { CARDINALITY_UNSPECIFIED = 0; OPTIONAL_ONE = 1; EXACTLY_ONE = 2; MANY = 3; MANY_UNIQUE = 4; } message AtomDefinition { string atom_id = 1; string display_name = 2; } message AtomConformance { string atom_id = 1; string interface_revision_id = 2; } 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 EndpointConstraint { oneof kind { string atom_id = 1; string interface_revision_id = 2; } } message EdgeEndpoint { string projection_id = 1; string display_name = 2; EndpointConstraint constraint = 3; Cardinality cardinality = 4; bool ordered = 5; } message EdgeAttachment { string edge_type_id = 1; string display_name = 2; EdgeEndpoint first = 3; EdgeEndpoint second = 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; }