syntax = "proto3"; package quixos.orch; import "camino/api.proto"; import "camino/schema.proto"; import "quixos/package.proto"; import "quixos/refs.proto"; import "quixos/runtime.proto"; service OrchestratorRuntime { rpc ExecuteQuery(camino.QueryRequest) returns (camino.QueryResponse); rpc WatchQuery(camino.QueryRequest) returns (stream QueryEvent); rpc TryConform(TryConformRequest) returns (TryConformResponse); rpc InvokeCapability(InvokeCapabilityRequest) returns (InvokeCapabilityResponse); rpc EditCapabilityField(EditCapabilityFieldRequest) returns (InvokeCapabilityResponse); rpc InvokeClassCapability(InvokeClassCapabilityRequest) returns (InvokeCapabilityResponse); rpc WatchCapability(WatchCapabilityRequest) returns (stream WatchCapabilityEvent); rpc ConstructObject(ConstructObjectRequest) returns (ConstructObjectResponse); rpc ResolveOrConstructRelatedObject(ResolveOrConstructRelatedObjectRequest) returns (ResolveOrConstructRelatedObjectResponse); rpc GetWorkspace(GetWorkspaceRequest) returns (GetWorkspaceResponse); rpc ListPackageDescriptors(ListPackageDescriptorsRequest) returns (ListPackageDescriptorsResponse); rpc ListPackageRuntimes(ListPackageRuntimesRequest) returns (ListPackageRuntimesResponse); rpc ListActivations(ListActivationsRequest) returns (ListActivationsResponse); rpc CloseActivation(CloseActivationRequest) returns (CloseActivationResponse); } message QueryEvent { string run_id = 1; uint64 sequence = 2; string kind = 3; camino.QueryResponse snapshot = 4; repeated camino.QueryPathPart path = 5; camino.Value value = 6; string error = 7; } // Exact closed interface lookup; no policy selection or competing conformances. message TryConformRequest { string object_id = 1; string interface_revision_id = 2; } message TryConformResponse { // Absent only when this object lacks a known contract. Other failures are errors. quixos.ConformanceWitness conformance = 1; } message ConstructObjectRequest { string atom_id = 1; map input = 2; } message ConstructObjectResponse { camino.CaminoObject object = 1; } message ResolveOrConstructRelatedObjectRequest { string object_id = 1; string interface_revision_id = 2; string member_id = 3; } message ResolveOrConstructRelatedObjectResponse { camino.CaminoObject object = 1; bool constructed = 2; } message InvokeCapabilityRequest { quixos.CapabilityRef capability = 1; string object_id = 2; map input = 3; // Identifies one logical client mutation across the capability and Camino // layers so a live-value controller can recognize its own confirmation. string client_mutation_id = 4; } message InvokeClassCapabilityRequest { string conformance_id = 1; string operation_id = 2; map input = 3; } message InvokeCapabilityResponse { string invocation_id = 1; Activation activation = 2; bool ok = 3; camino.Value result = 4; string error = 5; repeated quixos.runtime.DerivedDependency dependencies = 6; FieldEditing field_editing = 7; } // Resolved from the checked native getter/setter binding, not Value.source. message FieldEditing { string getter_operation_id = 1; string setter_operation_id = 2; string document_type = 3; string binding_digest = 4; } message EditCapabilityFieldRequest { // The public getter; setter must belong to the same value member. quixos.CapabilityRef capability = 1; string object_id = 2; string setter_operation_id = 3; string binding_digest = 4; camino.CrdtValue update = 5; string client_mutation_id = 6; } message WatchCapabilityRequest { quixos.CapabilityRef capability = 1; string object_id = 2; map input = 3; } message WatchCapabilityEvent { string invocation_id = 1; Activation activation = 2; string watch_id = 3; camino.Value value = 4; repeated quixos.runtime.DerivedDependency dependencies = 5; string error = 6; bool initial = 7; FieldEditing field_editing = 8; } message GetWorkspaceRequest { // Revision polling must not download the entire interface graph. bool include_interface_contracts = 1; bool include_query_contracts = 2; } message GetWorkspaceResponse { string workspace_id = 1; string workspace_revision_id = 2; string source_root_commit = 3; // Checked constructors whose wire input can be empty. The create panel uses // class factory conformances instead of this constructor inventory. repeated string empty_input_constructible_atom_ids = 4; repeated CapabilityInputContract capability_inputs = 5; repeated ConstructorInputContract constructor_inputs = 6; // Exact closed interface contracts used by checked presentation consumers. string interfaces_json = 7; repeated ClassCapability class_capabilities = 8; repeated QueryDescription queries = 9; uint32 active_query_executions = 10; } message QueryDescription { string id = 1; string name = 2; string package_revision_id = 3; string document = 4; string schema = 5; repeated string source_files = 6; string effects_json = 7; camino.InstalledQuery plan = 8; } message ClassCapability { string conformance_id = 1; string atom_id = 2; string interface_revision_id = 3; string definition_id = 4; string operation_id = 5; string input_type_json = 6; string output_type_json = 7; } message CapabilityInputContract { string interface_revision_id = 1; string operation_id = 2; string type_json = 3; } message ConstructorInputContract { string atom_id = 1; string type_json = 2; } message ListActivationsRequest {} message ListPackageDescriptorsRequest {} message ListPackageDescriptorsResponse { repeated quixos.PackageDescriptor descriptors = 1; } message ListPackageRuntimesRequest {} message ListPackageRuntimesResponse { repeated PackageRuntimeStatus runtimes = 1; } message ListActivationsResponse { repeated Activation activations = 1; } message CloseActivationRequest { string activation_id = 1; string reason = 2; } message CloseActivationResponse { Activation activation = 1; } message Activation { string activation_id = 1; quixos.PackageExportRef export = 2; string object_id = 3; string state = 4; uint32 demand = 5; string opened_at = 6; string last_used_at = 7; string idle_deadline_at = 8; string closed_at = 9; string close_reason = 10; } message PackageRuntimeStatus { string runtime_key = 1; string package_revision_id = 2; string source_repository = 3; string source_commit = 4; string build_target = 5; string server_path = 6; uint32 pid = 7; string state = 8; string started_at = 9; string last_handshake_at = 10; string runtime_protocol_version = 11; uint32 advertised_export_count = 12; }