Add Camino edge materialization protocol

This commit is contained in:
Timothy J. Aveni
2026-07-15 07:52:07 -07:00
parent ea153c3cd7
commit cd35e03b2d
6 changed files with 155 additions and 20 deletions
+12
View File
@@ -14,6 +14,7 @@ service CaminoService {
rpc SetField(SetFieldRequest) returns (SetFieldResponse); rpc SetField(SetFieldRequest) returns (SetFieldResponse);
rpc AddEdge(AddEdgeRequest) returns (AddEdgeResponse); rpc AddEdge(AddEdgeRequest) returns (AddEdgeResponse);
rpc ListEdges(ListEdgesRequest) returns (ListEdgesResponse); rpc ListEdges(ListEdgesRequest) returns (ListEdgesResponse);
rpc ResolveEdge(ResolveEdgeRequest) returns (ResolveEdgeResponse);
rpc RemoveEdge(RemoveEdgeRequest) returns (RemoveEdgeResponse); rpc RemoveEdge(RemoveEdgeRequest) returns (RemoveEdgeResponse);
rpc ListOps(ListOpsRequest) returns (ListOpsResponse); rpc ListOps(ListOpsRequest) returns (ListOpsResponse);
rpc WatchObject(WatchObjectRequest) returns (stream WatchObjectEvent); rpc WatchObject(WatchObjectRequest) returns (stream WatchObjectEvent);
@@ -145,6 +146,17 @@ message ListEdgesResponse {
repeated CaminoEdge edges = 1; repeated CaminoEdge edges = 1;
} }
message ResolveEdgeRequest {
string object_id = 1;
string projection = 2;
}
message ResolveEdgeResponse {
repeated CaminoEdge edges = 1;
CaminoObject materialized_object = 2;
bool created = 3;
}
message RemoveEdgeRequest { message RemoveEdgeRequest {
string edge_id = 1; string edge_id = 1;
} }
+6
View File
@@ -73,6 +73,12 @@ message EdgeEndpointOptions {
string projection = 3; string projection = 3;
Cardinality cardinality = 4; Cardinality cardinality = 4;
bool indexed = 5; bool indexed = 5;
EdgeMaterializationOptions materialize = 6;
}
message EdgeMaterializationOptions {
SymbolRef class = 1;
string connect_projection = 2;
} }
message MethodOptions { message MethodOptions {
+6
View File
@@ -169,6 +169,12 @@ message EdgeEndpointSchema {
string projection = 3; string projection = 3;
Cardinality cardinality = 4; Cardinality cardinality = 4;
bool indexed = 5; bool indexed = 5;
EdgeMaterialization materialize = 6;
}
message EdgeMaterialization {
SymbolRef class = 1;
string connect_projection = 2;
} }
message MethodSchema { message MethodSchema {
File diff suppressed because one or more lines are too long
+30 -3
View File
@@ -16,7 +16,7 @@ import type { Message } from "@bufbuild/protobuf";
* Describes the file camino/options.proto. * Describes the file camino/options.proto.
*/ */
export const file_camino_options: GenFile = /*@__PURE__*/ export const file_camino_options: GenFile = /*@__PURE__*/
fileDesc("ChRjYW1pbm8vb3B0aW9ucy5wcm90bxIGY2FtaW5vIj4KDENsYXNzT3B0aW9ucxIPCgd2ZXJzaW9uGAEgASgNEh0KAmlkGAIgASgLMhEuY2FtaW5vLlN5bWJvbFJlZiJCChBJbnRlcmZhY2VPcHRpb25zEg8KB3ZlcnNpb24YASABKA0SHQoCaWQYAiABKAsyES5jYW1pbm8uU3ltYm9sUmVmImQKEUltcGxlbWVudHNPcHRpb25zEiQKCWludGVyZmFjZRgBIAEoCzIRLmNhbWluby5TeW1ib2xSZWYSKQoMdHlwZV9iaW5kaW5nGAIgAygLMhMuY2FtaW5vLlR5cGVCaW5kaW5nIjsKEkNvbnN0cnVjdG9yT3B0aW9ucxIlCghmdW5jdGlvbhgBIAEoCzITLnF1aXhvcy5GdW5jdGlvblJlZiLOAgoLRWRnZU9wdGlvbnMSHQoCaWQYASABKAsyES5jYW1pbm8uU3ltYm9sUmVmEiEKBnRhcmdldBgCIAEoCzIRLmNhbWluby5TeW1ib2xSZWYSKAoLY2FyZGluYWxpdHkYAyABKA4yEy5jYW1pbm8uQ2FyZGluYWxpdHkSDwoHaW52ZXJzZRgEIAEoCRIyCg10aGlzX2VuZHBvaW50GAUgASgLMhsuY2FtaW5vLkVkZ2VFbmRwb2ludE9wdGlvbnMSMwoOb3RoZXJfZW5kcG9pbnQYBiABKAsyGy5jYW1pbm8uRWRnZUVuZHBvaW50T3B0aW9ucxIeCgN0YWcYByADKAsyES5jYW1pbm8uU3ltYm9sUmVmEiUKCmltcGxlbWVudHMYCCADKAsyES5jYW1pbm8uU3ltYm9sUmVmEhIKCnVuZGlyZWN0ZWQYCSABKAgirAEKE0VkZ2VFbmRwb2ludE9wdGlvbnMSIAoFY2xhc3MYASABKAsyES5jYW1pbm8uU3ltYm9sUmVmEiQKCWludGVyZmFjZRgCIAEoCzIRLmNhbWluby5TeW1ib2xSZWYSEgoKcHJvamVjdGlvbhgDIAEoCRIoCgtjYXJkaW5hbGl0eRgEIAEoDjITLmNhbWluby5DYXJkaW5hbGl0eRIPCgdpbmRleGVkGAUgASgIIkQKDU1ldGhvZE9wdGlvbnMSDAoEbmFtZRgBIAEoCRIlCghmdW5jdGlvbhgCIAEoCzITLnF1aXhvcy5GdW5jdGlvblJlZiJjChBNaWdyYXRpb25PcHRpb25zEhQKDGZyb21fdmVyc2lvbhgBIAEoDRISCgp0b192ZXJzaW9uGAIgASgNEiUKCGZ1bmN0aW9uGAMgASgLMhMucXVpeG9zLkZ1bmN0aW9uUmVmOkkKEHNjaGVtYV9uYW1lc3BhY2USHC5nb29nbGUucHJvdG9idWYuRmlsZU9wdGlvbnMYuI4DIAEoCVIPc2NoZW1hTmFtZXNwYWNlOkUKDnNjaGVtYV92ZXJzaW9uEhwuZ29vZ2xlLnByb3RvYnVmLkZpbGVPcHRpb25zGLmOAyABKAlSDXNjaGVtYVZlcnNpb246TQoFY2xhc3MSHy5nb29nbGUucHJvdG9idWYuTWVzc2FnZU9wdGlvbnMYwo4DIAEoCzIULmNhbWluby5DbGFzc09wdGlvbnNSBWNsYXNzOlAKBm1ldGhvZBIfLmdvb2dsZS5wcm90b2J1Zi5NZXNzYWdlT3B0aW9ucxjDjgMgAygLMhUuY2FtaW5vLk1ldGhvZE9wdGlvbnNSBm1ldGhvZDpZCgltaWdyYXRpb24SHy5nb29nbGUucHJvdG9idWYuTWVzc2FnZU9wdGlvbnMYxI4DIAMoCzIYLmNhbWluby5NaWdyYXRpb25PcHRpb25zUgltaWdyYXRpb246WQoJaW50ZXJmYWNlEh8uZ29vZ2xlLnByb3RvYnVmLk1lc3NhZ2VPcHRpb25zGMWOAyABKAsyGC5jYW1pbm8uSW50ZXJmYWNlT3B0aW9uc1IJaW50ZXJmYWNlOlwKCmltcGxlbWVudHMSHy5nb29nbGUucHJvdG9idWYuTWVzc2FnZU9wdGlvbnMYxo4DIAMoCzIZLmNhbWluby5JbXBsZW1lbnRzT3B0aW9uc1IKaW1wbGVtZW50czpfCgtjb25zdHJ1Y3RvchIfLmdvb2dsZS5wcm90b2J1Zi5NZXNzYWdlT3B0aW9ucxjHjgMgASgLMhouY2FtaW5vLkNvbnN0cnVjdG9yT3B0aW9uc1ILY29uc3RydWN0b3I6VQoIY29uZmxpY3QSHS5nb29nbGUucHJvdG9idWYuRmllbGRPcHRpb25zGMyOAyABKA4yGC5jYW1pbm8uQ29uZmxpY3RTdHJhdGVneVIIY29uZmxpY3Q6SAoEZWRnZRIdLmdvb2dsZS5wcm90b2J1Zi5GaWVsZE9wdGlvbnMYzY4DIAEoCzITLmNhbWluby5FZGdlT3B0aW9uc1IEZWRnZTpaCg1maWVsZF9zdG9yYWdlEh0uZ29vZ2xlLnByb3RvYnVmLkZpZWxkT3B0aW9ucxjOjgMgASgLMhQuY2FtaW5vLkZpZWxkU3RvcmFnZVIMZmllbGRTdG9yYWdlOk4KCWZpZWxkX29wcxIdLmdvb2dsZS5wcm90b2J1Zi5GaWVsZE9wdGlvbnMYz44DIAEoCzIQLmNhbWluby5GaWVsZE9wc1IIZmllbGRPcHM6aAoPaW50ZXJmYWNlX2ZpZWxkEh0uZ29vZ2xlLnByb3RvYnVmLkZpZWxkT3B0aW9ucxjQjgMgASgLMh4uY2FtaW5vLkludGVyZmFjZUZpZWxkQ29udHJhY3RSDmludGVyZmFjZUZpZWxkOkQKDWRpc3BsYXlfbGFiZWwSHS5nb29nbGUucHJvdG9idWYuRmllbGRPcHRpb25zGNGOAyABKAhSDGRpc3BsYXlMYWJlbDpJCgRpbXBsEh4uZ29vZ2xlLnByb3RvYnVmLk1ldGhvZE9wdGlvbnMY1o4DIAEoCzITLnF1aXhvcy5GdW5jdGlvblJlZlIEaW1wbGIGcHJvdG8z", [file_google_protobuf_descriptor, file_camino_schema, file_quixos_refs]); fileDesc("ChRjYW1pbm8vb3B0aW9ucy5wcm90bxIGY2FtaW5vIj4KDENsYXNzT3B0aW9ucxIPCgd2ZXJzaW9uGAEgASgNEh0KAmlkGAIgASgLMhEuY2FtaW5vLlN5bWJvbFJlZiJCChBJbnRlcmZhY2VPcHRpb25zEg8KB3ZlcnNpb24YASABKA0SHQoCaWQYAiABKAsyES5jYW1pbm8uU3ltYm9sUmVmImQKEUltcGxlbWVudHNPcHRpb25zEiQKCWludGVyZmFjZRgBIAEoCzIRLmNhbWluby5TeW1ib2xSZWYSKQoMdHlwZV9iaW5kaW5nGAIgAygLMhMuY2FtaW5vLlR5cGVCaW5kaW5nIjsKEkNvbnN0cnVjdG9yT3B0aW9ucxIlCghmdW5jdGlvbhgBIAEoCzITLnF1aXhvcy5GdW5jdGlvblJlZiLOAgoLRWRnZU9wdGlvbnMSHQoCaWQYASABKAsyES5jYW1pbm8uU3ltYm9sUmVmEiEKBnRhcmdldBgCIAEoCzIRLmNhbWluby5TeW1ib2xSZWYSKAoLY2FyZGluYWxpdHkYAyABKA4yEy5jYW1pbm8uQ2FyZGluYWxpdHkSDwoHaW52ZXJzZRgEIAEoCRIyCg10aGlzX2VuZHBvaW50GAUgASgLMhsuY2FtaW5vLkVkZ2VFbmRwb2ludE9wdGlvbnMSMwoOb3RoZXJfZW5kcG9pbnQYBiABKAsyGy5jYW1pbm8uRWRnZUVuZHBvaW50T3B0aW9ucxIeCgN0YWcYByADKAsyES5jYW1pbm8uU3ltYm9sUmVmEiUKCmltcGxlbWVudHMYCCADKAsyES5jYW1pbm8uU3ltYm9sUmVmEhIKCnVuZGlyZWN0ZWQYCSABKAgi5QEKE0VkZ2VFbmRwb2ludE9wdGlvbnMSIAoFY2xhc3MYASABKAsyES5jYW1pbm8uU3ltYm9sUmVmEiQKCWludGVyZmFjZRgCIAEoCzIRLmNhbWluby5TeW1ib2xSZWYSEgoKcHJvamVjdGlvbhgDIAEoCRIoCgtjYXJkaW5hbGl0eRgEIAEoDjITLmNhbWluby5DYXJkaW5hbGl0eRIPCgdpbmRleGVkGAUgASgIEjcKC21hdGVyaWFsaXplGAYgASgLMiIuY2FtaW5vLkVkZ2VNYXRlcmlhbGl6YXRpb25PcHRpb25zIloKGkVkZ2VNYXRlcmlhbGl6YXRpb25PcHRpb25zEiAKBWNsYXNzGAEgASgLMhEuY2FtaW5vLlN5bWJvbFJlZhIaChJjb25uZWN0X3Byb2plY3Rpb24YAiABKAkiRAoNTWV0aG9kT3B0aW9ucxIMCgRuYW1lGAEgASgJEiUKCGZ1bmN0aW9uGAIgASgLMhMucXVpeG9zLkZ1bmN0aW9uUmVmImMKEE1pZ3JhdGlvbk9wdGlvbnMSFAoMZnJvbV92ZXJzaW9uGAEgASgNEhIKCnRvX3ZlcnNpb24YAiABKA0SJQoIZnVuY3Rpb24YAyABKAsyEy5xdWl4b3MuRnVuY3Rpb25SZWY6SQoQc2NoZW1hX25hbWVzcGFjZRIcLmdvb2dsZS5wcm90b2J1Zi5GaWxlT3B0aW9ucxi4jgMgASgJUg9zY2hlbWFOYW1lc3BhY2U6RQoOc2NoZW1hX3ZlcnNpb24SHC5nb29nbGUucHJvdG9idWYuRmlsZU9wdGlvbnMYuY4DIAEoCVINc2NoZW1hVmVyc2lvbjpNCgVjbGFzcxIfLmdvb2dsZS5wcm90b2J1Zi5NZXNzYWdlT3B0aW9ucxjCjgMgASgLMhQuY2FtaW5vLkNsYXNzT3B0aW9uc1IFY2xhc3M6UAoGbWV0aG9kEh8uZ29vZ2xlLnByb3RvYnVmLk1lc3NhZ2VPcHRpb25zGMOOAyADKAsyFS5jYW1pbm8uTWV0aG9kT3B0aW9uc1IGbWV0aG9kOlkKCW1pZ3JhdGlvbhIfLmdvb2dsZS5wcm90b2J1Zi5NZXNzYWdlT3B0aW9ucxjEjgMgAygLMhguY2FtaW5vLk1pZ3JhdGlvbk9wdGlvbnNSCW1pZ3JhdGlvbjpZCglpbnRlcmZhY2USHy5nb29nbGUucHJvdG9idWYuTWVzc2FnZU9wdGlvbnMYxY4DIAEoCzIYLmNhbWluby5JbnRlcmZhY2VPcHRpb25zUglpbnRlcmZhY2U6XAoKaW1wbGVtZW50cxIfLmdvb2dsZS5wcm90b2J1Zi5NZXNzYWdlT3B0aW9ucxjGjgMgAygLMhkuY2FtaW5vLkltcGxlbWVudHNPcHRpb25zUgppbXBsZW1lbnRzOl8KC2NvbnN0cnVjdG9yEh8uZ29vZ2xlLnByb3RvYnVmLk1lc3NhZ2VPcHRpb25zGMeOAyABKAsyGi5jYW1pbm8uQ29uc3RydWN0b3JPcHRpb25zUgtjb25zdHJ1Y3RvcjpVCghjb25mbGljdBIdLmdvb2dsZS5wcm90b2J1Zi5GaWVsZE9wdGlvbnMYzI4DIAEoDjIYLmNhbWluby5Db25mbGljdFN0cmF0ZWd5Ughjb25mbGljdDpICgRlZGdlEh0uZ29vZ2xlLnByb3RvYnVmLkZpZWxkT3B0aW9ucxjNjgMgASgLMhMuY2FtaW5vLkVkZ2VPcHRpb25zUgRlZGdlOloKDWZpZWxkX3N0b3JhZ2USHS5nb29nbGUucHJvdG9idWYuRmllbGRPcHRpb25zGM6OAyABKAsyFC5jYW1pbm8uRmllbGRTdG9yYWdlUgxmaWVsZFN0b3JhZ2U6TgoJZmllbGRfb3BzEh0uZ29vZ2xlLnByb3RvYnVmLkZpZWxkT3B0aW9ucxjPjgMgASgLMhAuY2FtaW5vLkZpZWxkT3BzUghmaWVsZE9wczpoCg9pbnRlcmZhY2VfZmllbGQSHS5nb29nbGUucHJvdG9idWYuRmllbGRPcHRpb25zGNCOAyABKAsyHi5jYW1pbm8uSW50ZXJmYWNlRmllbGRDb250cmFjdFIOaW50ZXJmYWNlRmllbGQ6RAoNZGlzcGxheV9sYWJlbBIdLmdvb2dsZS5wcm90b2J1Zi5GaWVsZE9wdGlvbnMY0Y4DIAEoCFIMZGlzcGxheUxhYmVsOkkKBGltcGwSHi5nb29nbGUucHJvdG9idWYuTWV0aG9kT3B0aW9ucxjWjgMgASgLMhMucXVpeG9zLkZ1bmN0aW9uUmVmUgRpbXBsYgZwcm90bzM", [file_google_protobuf_descriptor, file_camino_schema, file_quixos_refs]);
/** /**
* @generated from message camino.ClassOptions * @generated from message camino.ClassOptions
@@ -192,6 +192,11 @@ export type EdgeEndpointOptions = Message<"camino.EdgeEndpointOptions"> & {
* @generated from field: bool indexed = 5; * @generated from field: bool indexed = 5;
*/ */
indexed: boolean; indexed: boolean;
/**
* @generated from field: camino.EdgeMaterializationOptions materialize = 6;
*/
materialize?: EdgeMaterializationOptions | undefined;
}; };
/** /**
@@ -201,6 +206,28 @@ export type EdgeEndpointOptions = Message<"camino.EdgeEndpointOptions"> & {
export const EdgeEndpointOptionsSchema: GenMessage<EdgeEndpointOptions> = /*@__PURE__*/ export const EdgeEndpointOptionsSchema: GenMessage<EdgeEndpointOptions> = /*@__PURE__*/
messageDesc(file_camino_options, 5); messageDesc(file_camino_options, 5);
/**
* @generated from message camino.EdgeMaterializationOptions
*/
export type EdgeMaterializationOptions = Message<"camino.EdgeMaterializationOptions"> & {
/**
* @generated from field: camino.SymbolRef class = 1;
*/
class?: SymbolRef | undefined;
/**
* @generated from field: string connect_projection = 2;
*/
connectProjection: string;
};
/**
* Describes the message camino.EdgeMaterializationOptions.
* Use `create(EdgeMaterializationOptionsSchema)` to create a new message.
*/
export const EdgeMaterializationOptionsSchema: GenMessage<EdgeMaterializationOptions> = /*@__PURE__*/
messageDesc(file_camino_options, 6);
/** /**
* @generated from message camino.MethodOptions * @generated from message camino.MethodOptions
*/ */
@@ -221,7 +248,7 @@ export type MethodOptions = Message<"camino.MethodOptions"> & {
* Use `create(MethodOptionsSchema)` to create a new message. * Use `create(MethodOptionsSchema)` to create a new message.
*/ */
export const MethodOptionsSchema: GenMessage<MethodOptions> = /*@__PURE__*/ export const MethodOptionsSchema: GenMessage<MethodOptions> = /*@__PURE__*/
messageDesc(file_camino_options, 6); messageDesc(file_camino_options, 7);
/** /**
* @generated from message camino.MigrationOptions * @generated from message camino.MigrationOptions
@@ -248,7 +275,7 @@ export type MigrationOptions = Message<"camino.MigrationOptions"> & {
* Use `create(MigrationOptionsSchema)` to create a new message. * Use `create(MigrationOptionsSchema)` to create a new message.
*/ */
export const MigrationOptionsSchema: GenMessage<MigrationOptions> = /*@__PURE__*/ export const MigrationOptionsSchema: GenMessage<MigrationOptions> = /*@__PURE__*/
messageDesc(file_camino_options, 7); messageDesc(file_camino_options, 8);
/** /**
* @generated from extension: string schema_namespace = 51000; * @generated from extension: string schema_namespace = 51000;
File diff suppressed because one or more lines are too long