Skip to content

Common types

Shared messages and enums from commons.proto, used across the services.

Runner, Connection, and ActionCard are also defined there, but no PULSE service method takes or returns them.

message User {
  string id = 1;
  string email = 2;
  string display_name = 3;
  string avatar_url = 4;
  string role = 5; // "admin", "editor", "viewer"
  google.protobuf.Timestamp created_at = 6;
  google.protobuf.Timestamp updated_at = 7;
}

message PaginationRequest {
  int32 page = 1;
  int32 page_size = 2;
  string order_by = 3;   // e.g. "created_at desc"
  string filter = 4;     // free-form filter expression
}

message PaginationResponse {
  int32 total_count = 1;
  int32 page = 2;
  int32 page_size = 3;
  int32 total_pages = 4;
}

enum Channel {
  CHANNEL_UNSPECIFIED = 0;
  CHANNEL_LINKEDIN = 1;
  CHANNEL_INSTAGRAM = 2;
  CHANNEL_TIKTOK = 3;
  CHANNEL_BLOG = 4;
  CHANNEL_EMAIL = 5;
  CHANNEL_TWITTER = 6;
  CHANNEL_YOUTUBE = 7;
  CHANNEL_FACEBOOK = 8;
  CHANNEL_WHITEPAPER = 9;
  CHANNEL_BOOK_OUTLINE = 10;
  CHANNEL_WEBINAR = 11;
  CHANNEL_COURSE = 12;
  CHANNEL_PODCAST = 13;
}

enum ContentStatus {
  CONTENT_STATUS_UNSPECIFIED = 0;
  CONTENT_STATUS_DRAFT = 1;
  CONTENT_STATUS_PENDING_REVIEW = 2;
  CONTENT_STATUS_APPROVED = 3;
  CONTENT_STATUS_REJECTED = 4;
  CONTENT_STATUS_PUBLISHED = 5;
  CONTENT_STATUS_ARCHIVED = 6;
}

enum CampaignStatus {
  CAMPAIGN_STATUS_UNSPECIFIED = 0;
  CAMPAIGN_STATUS_DRAFT = 1;
  CAMPAIGN_STATUS_ACTIVE = 2;
  CAMPAIGN_STATUS_PAUSED = 3;
  CAMPAIGN_STATUS_COMPLETED = 4;
  CAMPAIGN_STATUS_ARCHIVED = 5;
}

enum TaskStatus {
  TASK_STATUS_UNSPECIFIED = 0;
  TASK_STATUS_TODO = 1;
  TASK_STATUS_IN_PROGRESS = 2;
  TASK_STATUS_DONE = 3;
  TASK_STATUS_SKIPPED = 4;
  TASK_STATUS_BLOCKED = 5;
}

enum IntegrationStatus {
  INTEGRATION_STATUS_UNSPECIFIED = 0;
  INTEGRATION_STATUS_DISCONNECTED = 1;
  INTEGRATION_STATUS_CONNECTED = 2;
  INTEGRATION_STATUS_ERROR = 3;
  INTEGRATION_STATUS_PENDING = 4;
}

message StreamChunk {
  string text = 1;
  bool is_final = 2;
  string section = 3;      // semantic section marker (e.g. "positioning", "swot", "prescription")
  float progress = 4;      // 0.0 - 1.0
  map<string, string> metadata = 5;
  repeated string agent_tasks = 6;
}

message DateRange {
  google.protobuf.Timestamp start = 1;
  google.protobuf.Timestamp end = 2;
}

message KeyValue {
  string key = 1;
  string value = 2;
}

message MetricPoint {
  google.protobuf.Timestamp timestamp = 1;
  double value = 2;
  string label = 3;
}

The judgement types

Judgement and JudgementSet come from runink/ui/judgement/v1/judgement.proto in org-runink/ui, vendored into grpc/api/proto-vendor/. See The judging ladder.