syntax = "proto3"; package quixos.runtime; import "camino/api.proto"; import "quixos/refs.proto"; service PackageRuntime { rpc Handshake(HandshakeRequest) returns (HandshakeResponse); rpc Invoke(InvokeRequest) returns (InvokeResponse); rpc Watch(WatchRequest) returns (stream WatchEvent); } message HandshakeRequest { string orch_protocol_version = 1; } message HandshakeResponse { string package_revision_id = 1; string runtime_protocol_version = 2; repeated string export_ids = 3; } message InvokeRequest { string invocation_id = 1; quixos.PackageExportRef export = 2; string object_id = 3; map input = 4; repeated quixos.InjectedDependency dependencies = 5; } message InvokeResponse { bool ok = 1; camino.Value result = 2; string error = 3; repeated DerivedDependency dependencies = 4; } message WatchRequest { string invocation_id = 1; quixos.PackageExportRef export = 2; string object_id = 3; map input = 4; repeated quixos.InjectedDependency dependencies = 5; } message DerivedDependency { string kind = 1; string object_id = 2; string attachment_id = 3; string projection_id = 4; } message WatchEvent { string watch_id = 1; camino.Value value = 2; repeated DerivedDependency dependencies = 3; string error = 4; bool initial = 5; }