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.
161 lines
3.2 KiB
Protocol Buffer
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;
|
|
}
|