syntax = "proto3";
package agent.v1;
import "google/protobuf/timestamp.proto";
// Unique provider identifier.
message ProviderId {
string value = 1;
}
// Model name.
message ModelName {
string value = 1;
}
// Token usage accounting.
message TokenUsage {
uint64 input_tokens = 1;
uint64 output_tokens = 2;
uint64 total_tokens = 3;
}
// Tool specification.
message ToolSpec {
string name = 1;
string description = 2;
string parameters_schema = 3; // JSON
}
// Tool call from an assistant message.
message ToolCall {
string id = 1;
string name = 2;
string arguments = 3; // JSON
}
// Finish reason for generation.
enum FinishReason {
FINISH_REASON_UNSPECIFIED = 0;
FINISH_REASON_STOP = 1;
FINISH_REASON_TOOL_CALLS = 2;
FINISH_REASON_LENGTH = 3;
FINISH_REASON_CONTENT_FILTER = 4;
FINISH_REASON_ERROR = 5;
FINISH_REASON_UNKNOWN = 6;
}
// Pagination parameters.
message Pagination {
uint32 limit = 1;
uint32 offset = 2;
}
// Text content part.
message TextContent {
string text = 1;
}
// JSON content part.
message JsonContent {
string json = 1;
}
// Image content part.
message ImageContent {
string url = 1;
string mime_type = 2;
}
// Content part within a message.
message ContentPart {
oneof content {
TextContent text = 1;
JsonContent json = 2;
ImageContent image = 3;
}
}
// Message record.
message Message {
string id = 1;
string session_id = 2;
string role = 3; // system, user, assistant, tool
repeated ContentPart content = 4;
repeated ToolCall tool_calls = 5;
string tool_call_id = 6;
string tool_name = 7;
google.protobuf.Timestamp created_at = 8;
}
// Run status enum.
enum RunStatus {
RUN_STATUS_UNSPECIFIED = 0;
RUN_STATUS_PENDING = 1;
RUN_STATUS_SESSION_LOADED = 2;
RUN_STATUS_BUILDING_CONTEXT = 3;
RUN_STATUS_CALLING_MODEL = 4;
RUN_STATUS_WAITING_FOR_TOOLS = 5;
RUN_STATUS_PERSISTING = 6;
RUN_STATUS_COMPLETED = 7;
RUN_STATUS_FAILED = 8;
RUN_STATUS_CANCELLED = 9;
}