syntax = "proto3"; package runner.v1; import "runner/v1/runner.proto"; import "google/protobuf/timestamp.proto"; service RunnerService { rpc TriggerRun (TriggerRunRequest) returns (TriggerRunResponse); rpc GetRunStatus (GetRunStatusRequest) returns (GetRunStatusResponse); rpc StreamLogs (StreamLogsRequest) returns (stream LogEntry); rpc CancelRun (CancelRunRequest) returns (CancelRunResponse); rpc ListRuns (ListRunsRequest) returns (ListRunsResponse); rpc GetPipelineSpec (GetPipelineSpecRequest) returns (GetPipelineSpecResponse); rpc GetRunAttestation (GetRunAttestationRequest) returns (GetRunAttestationResponse); } message TriggerRunRequest { string pipeline_name = 1; string commit_hash = 2; TriggerType trigger_type = 3; string requested_by = 4; map parameters = 5; // Branch name (for inbound sync triggers, e.g. "inbound/github-origin/pull/42/head") string branch = 6; // Name of the inbound remote that triggered this run (empty for non-inbound triggers) string inbound_remote = 7; } message TriggerRunResponse { string run_id = 1; RunPhase phase = 2; string message = 3; bool deduplicated = 4; string dedup_run_id = 5; } message GetRunStatusRequest { string run_id = 1; } message GetRunStatusResponse { PipelineResult result = 1; } message StreamLogsRequest { string run_id = 1; string step_name = 2; bool follow = 3; uint64 since_sequence = 4; } message CancelRunRequest { string run_id = 1; string reason = 2; } message CancelRunResponse { bool success = 1; string message = 2; } message ListRunsRequest { string pipeline_name = 1; RunPhase phase_filter = 2; TriggerType trigger_filter = 3; uint32 limit = 4; string commit_hash = 5; } message ListRunsResponse { repeated PipelineRunSummary runs = 1; } message GetPipelineSpecRequest { string commit_hash = 1; string pipeline_name = 2; } message GetPipelineSpecResponse { string pipeline_yaml = 1; string commit_hash = 2; bytes pipeline_hash = 3; } message GetRunAttestationRequest { string run_id = 1; } message GetRunAttestationResponse { string run_id = 1; bytes result_hash = 2; string anchor_id = 3; bytes merkle_root = 4; int32 leaf_index = 5; string runner_svid = 6; string commit_hash = 7; string pipeline_name = 8; string status = 9; google.protobuf.Timestamp notarized_at = 10; }