syntax = "proto3";

package agent;

option go_package = "./proto;agent";

// Agent is the RPC interface for an AI agent.
service Agent {
	rpc Chat(ChatRequest) returns (ChatResponse) {}
	rpc StreamChat(ChatRequest) returns (stream ChatResponse) {}
}

message ChatRequest {
	string message = 1;

	// parent_id correlates this chat with the workflow or agent run that dispatched it.
	string parent_id = 2;
}

message ChatResponse {
	string reply = 1;
	string agent = 2;
	repeated ToolCall tool_calls = 3;

	// run_id correlates this chat response with tool calls, traces, and run history.
	string run_id = 4;
	// parent_id is set when this response belongs to a delegated sub-agent run.
	string parent_id = 5;
}

message ToolCall {
	string id = 1;
	string name = 2;
	string input = 3;
	string result = 4;
}
