guildhouse-proto/runner/v1/service.proto
Tyler King 2720a631b8 Initial: Guildhouse protobuf definitions
14 proto files across 5 gRPC service domains:
- quartermaster/v1 (6): governance, registry, notary, credentials, capabilities, pipelines
- bascule/v1 (4): session, command, gateway, ceremony
- workspace/v1 (1): workspace management
- runner/v1 (2): pipeline execution
- schematic/v1 (1): composite meta-artifacts

Consumed as a git submodule by guildhouse-platform (Rust) and guildhouse-dashboard (Python).

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-02-26 10:29:06 -05:00

100 lines
2.4 KiB
Protocol Buffer

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<string, string> 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;
}