Files
cli/sunbeam-proto/proto/code.proto
Sienna Meridian Satterwhite 04f10d2794 feat: sunbeam reindex-code CLI verb + ReindexCode proto
Proto: ReindexCode RPC with org/repo/branch filters.
CLI: sunbeam reindex-code [--org studio] [--repo owner/name] [--endpoint ...]
Calls Sol's gRPC ReindexCode endpoint, prints indexed symbol count.
2026-03-24 09:38:02 +00:00

161 lines
3.2 KiB
Protocol Buffer

syntax = "proto3";
package sunbeam.code.v1;
// Sol's coding agent service. Bidirectional streaming between
// the `sunbeam code` TUI client and Sol's server-side agent loop.
service CodeAgent {
rpc Session(stream ClientMessage) returns (stream ServerMessage);
rpc ReindexCode(ReindexCodeRequest) returns (ReindexCodeResponse);
}
message ReindexCodeRequest {
string org = 1; // optional: filter to an org (empty = all)
string repo = 2; // optional: specific repo (empty = all)
string branch = 3; // optional: specific branch (empty = default)
}
message ReindexCodeResponse {
uint32 repos_indexed = 1;
uint32 symbols_indexed = 2;
string error = 3; // empty on success
}
// ── Client → Sol ───────────────────────────────────────────────
message ClientMessage {
oneof payload {
StartSession start = 1;
UserInput input = 2;
ToolResult tool_result = 3;
ToolApproval approval = 4;
EndSession end = 5;
IndexSymbols index_symbols = 6;
}
}
message IndexSymbols {
string project_name = 1;
string branch = 2;
repeated SymbolEntry symbols = 3;
}
message SymbolEntry {
string file_path = 1;
string name = 2;
string kind = 3;
string signature = 4;
string docstring = 5;
int32 start_line = 6;
int32 end_line = 7;
string language = 8;
string content = 9;
}
message StartSession {
string project_path = 1;
string prompt_md = 2;
string config_toml = 3;
string git_branch = 4;
string git_status = 5;
repeated string file_tree = 6;
string model = 7;
repeated ToolDef client_tools = 8;
}
message UserInput {
string text = 1;
}
message ToolResult {
string call_id = 1;
string result = 2;
bool is_error = 3;
}
message ToolApproval {
string call_id = 1;
bool approved = 2;
}
message EndSession {}
// ── Sol → Client ───────────────────────────────────────────────
message ServerMessage {
oneof payload {
SessionReady ready = 1;
TextDelta delta = 2;
TextDone done = 3;
ToolCall tool_call = 4;
ApprovalNeeded approval = 5;
Status status = 6;
SessionEnd end = 7;
Error error = 8;
}
}
message SessionReady {
string session_id = 1;
string room_id = 2;
string model = 3;
bool resumed = 4;
repeated HistoryEntry history = 5;
}
message HistoryEntry {
string role = 1; // "user" or "assistant"
string content = 2;
}
message TextDelta {
string text = 1;
}
message TextDone {
string full_text = 1;
uint32 input_tokens = 2;
uint32 output_tokens = 3;
}
message ToolCall {
string call_id = 1;
string name = 2;
string args_json = 3;
bool is_local = 4;
bool needs_approval = 5;
}
message ApprovalNeeded {
string call_id = 1;
string name = 2;
string args_json = 3;
string summary = 4;
}
message Status {
string message = 1;
StatusKind kind = 2;
}
enum StatusKind {
INFO = 0;
TOOL_RUNNING = 1;
TOOL_DONE = 2;
THINKING = 3;
}
message SessionEnd {
string summary = 1;
}
message Error {
string message = 1;
bool fatal = 2;
}
message ToolDef {
string name = 1;
string description = 2;
string schema_json = 3;
}