yao/tai/hostexec/pb/hostexec.proto
Max d16086ff51 refactor: remove x-grpc-upstream, benchmark CI job, and harden sandbox v2
- Remove x-grpc-upstream metadata from gateway forwarding; use SetUpstream
- Remove YAO_GRPC_TAI / YAO_GRPC_UPSTREAM env vars from sandbox containers
- Delete benchmark-sandbox-v2 CI job (run benchmarks locally)
- Simplify sandbox-v2 CI to tai SDK + workspace tests only
- Add HostExec support to sandbox v2 box interface
- Add K8s semaphore and cleanup mutex for test stability
- Update design docs to reflect new architecture

Made-with: Cursor
2026-03-07 21:41:48 +08:00

46 lines
1.4 KiB
Protocol Buffer

syntax = "proto3";
package hostexec;
option go_package = "github.com/yaoapp/yao/tai/hostexec/pb";
// HostExec provides remote command execution on the Tai host machine.
// High privilege — enabled only when --host-exec flag is set.
service HostExec {
// Exec runs a command and returns the result when it completes.
rpc Exec(ExecRequest) returns (ExecResponse);
// ExecStream runs a command and streams stdout/stderr in real time.
rpc ExecStream(ExecRequest) returns (stream ExecOutput);
}
message ExecRequest {
string command = 1;
repeated string args = 2;
string working_dir = 3;
map<string, string> env = 4;
bytes stdin = 5;
int64 timeout_ms = 6;
int64 max_output_bytes = 7; // max stdout+stderr size (0 = default 10MB), truncate if exceeded
}
message ExecResponse {
int32 exit_code = 1;
bytes stdout = 2;
bytes stderr = 3;
int64 duration_ms = 4;
string error = 5; // non-empty if Tai failed to execute (not the command's error)
bool truncated = 6; // true if stdout+stderr exceeded max_output_bytes and was truncated
}
message ExecOutput {
enum Stream {
STDOUT = 0;
STDERR = 1;
}
Stream stream = 1;
bytes data = 2;
// Only set in the final message (exit_code is meaningful).
bool done = 3;
int32 exit_code = 4;
string error = 5;
}