syntax = "proto3";
package walrus.ext;
// ── Walrus Extension Protocol ───────────────────────────────────
message ExtRequest {
oneof msg {
ExtHello hello = 1;
ExtRegisterTools register_tools = 2;
ExtToolCall tool_call = 3;
ExtServiceQuery service_query = 4;
ExtShutdown shutdown = 5;
ExtConfigure configure = 6;
ExtGetSchema get_schema = 11;
}
}
message ExtHello {
string version = 1;
}
message ExtRegisterTools {}
message ExtShutdown {}
message ExtConfigure {
string config = 1;
}
message ExtConfigured {}
message ExtToolCall {
string name = 1;
string args = 2;
string agent = 3;
optional uint64 task_id = 4;
}
message ExtServiceQuery {
string query = 1;
}
// Request the extension's config JSON Schema.
message ExtGetSchema {}
message ExtResponse {
oneof msg {
ExtReady ready = 1;
ExtToolSchemas tool_schemas = 2;
ExtToolResult tool_result = 3;
ExtServiceQueryResult service_query_result = 4;
ExtError error = 5;
ExtConfigured configured = 6;
ExtSchemaResult schema_result = 10;
}
}
message ExtReady {
string version = 1;
string service = 2;
repeated Capability capabilities = 3;
}
message Capability {
oneof cap {
ToolsList tools = 1;
QueryCap query = 2;
}
}
message ToolsList {
repeated string names = 1;
}
message QueryCap {}
message ToolDef {
string name = 1;
string description = 2;
bytes parameters = 3;
bool strict = 4;
}
message ExtToolSchemas {
repeated ToolDef tools = 1;
}
message ExtToolResult {
string result = 1;
}
message ExtServiceQueryResult {
string result = 1;
}
message ExtError {
string message = 1;
}
// Config schema response from an extension.
message ExtSchemaResult {
string schema = 1;
}