- libs/rpc/admin: tonic-prost generated server + client wrappers - apps/adminrpc: standalone binary with all 8 admin RPC methods - Redis Pub/Sub JSON-RPC code removed from admin module - libs/agent: add React agent loop for ReAct pattern - proto/admin.proto: updated with list_workspace_sessions, is_user_online
249 lines
7.2 KiB
Protocol Buffer
249 lines
7.2 KiB
Protocol Buffer
syntax = "proto3";
|
|
|
|
package admin;
|
|
|
|
import "google/protobuf/timestamp.proto";
|
|
|
|
// ---------------------------------------------------------------------------
|
|
// Session entities
|
|
// ---------------------------------------------------------------------------
|
|
|
|
message UserSession {
|
|
string session_id = 1;
|
|
string user_id = 2;
|
|
string workspace_id = 3;
|
|
optional string ip_address = 4;
|
|
optional string user_agent = 5;
|
|
google.protobuf.Timestamp connected_at = 6;
|
|
google.protobuf.Timestamp last_heartbeat = 7;
|
|
}
|
|
|
|
message SessionInfo {
|
|
string user_id = 1;
|
|
uint32 session_count = 2;
|
|
repeated string workspaces = 3;
|
|
optional UserSession latest_session = 4;
|
|
}
|
|
|
|
enum OnlineStatus {
|
|
ONLINE_STATUS_UNSPECIFIED = 0;
|
|
ONLINE_STATUS_ONLINE = 1;
|
|
ONLINE_STATUS_IDLE = 2;
|
|
ONLINE_STATUS_OFFLINE = 3;
|
|
}
|
|
|
|
// ---------------------------------------------------------------------------
|
|
// Requests & Responses
|
|
// ---------------------------------------------------------------------------
|
|
|
|
message ListWorkspaceSessionsRequest {
|
|
string workspace_id = 1;
|
|
}
|
|
message ListWorkspaceSessionsResponse {
|
|
repeated UserSession sessions = 1;
|
|
}
|
|
|
|
message ListUserSessionsRequest {
|
|
string user_id = 1;
|
|
}
|
|
message ListUserSessionsResponse {
|
|
repeated UserSession sessions = 1;
|
|
}
|
|
|
|
message KickUserFromWorkspaceRequest {
|
|
string user_id = 1;
|
|
string workspace_id = 2;
|
|
}
|
|
message KickUserFromWorkspaceResponse {
|
|
uint32 kicked_count = 1;
|
|
}
|
|
|
|
message KickUserRequest {
|
|
string user_id = 1;
|
|
}
|
|
message KickUserResponse {
|
|
uint32 kicked_count = 1;
|
|
}
|
|
|
|
message GetUserStatusRequest {
|
|
string user_id = 1;
|
|
}
|
|
message GetUserStatusResponse {
|
|
OnlineStatus status = 1;
|
|
}
|
|
|
|
message GetUserInfoRequest {
|
|
string user_id = 1;
|
|
}
|
|
message GetUserInfoResponse {
|
|
optional SessionInfo info = 1;
|
|
}
|
|
|
|
message GetWorkspaceOnlineUsersRequest {
|
|
string workspace_id = 1;
|
|
}
|
|
message GetWorkspaceOnlineUsersResponse {
|
|
repeated string user_ids = 1;
|
|
}
|
|
|
|
message IsUserOnlineRequest {
|
|
string user_id = 1;
|
|
}
|
|
message IsUserOnlineResponse {
|
|
bool online = 1;
|
|
}
|
|
|
|
// ---------------------------------------------------------------------------
|
|
// Metrics
|
|
// ---------------------------------------------------------------------------
|
|
|
|
message GetMetricsRequest {
|
|
string instance_filter = 1; // filter by instance_id substring
|
|
uint32 limit = 2; // max snapshots per instance (default 100)
|
|
}
|
|
message GetMetricsResponse {
|
|
repeated InstanceMetrics instances = 1;
|
|
}
|
|
|
|
message InstanceMetrics {
|
|
string instance_id = 1;
|
|
int64 timestamp_secs = 2;
|
|
// HTTP metrics, key = metric name, value = JSON value
|
|
map<string, string> http = 3;
|
|
// Room/room metrics
|
|
map<string, string> room = 4;
|
|
}
|
|
|
|
message ExportMetricsCsvRequest {
|
|
string instance_filter = 1;
|
|
}
|
|
message ExportMetricsCsvResponse {
|
|
string csv = 1;
|
|
}
|
|
|
|
// ---------------------------------------------------------------------------
|
|
// AI Model Sync
|
|
// ---------------------------------------------------------------------------
|
|
|
|
message SyncModelsRequest {}
|
|
message SyncModelsResponse {
|
|
string body_json = 1; // Serialized SyncModelsResponse JSON
|
|
}
|
|
|
|
// ---------------------------------------------------------------------------
|
|
// Billing Alert Check
|
|
// ---------------------------------------------------------------------------
|
|
|
|
message CheckAlertsRequest {}
|
|
message CheckAlertsResponse {
|
|
string body_json = 1; // Serialized CheckAlertsResponse JSON
|
|
}
|
|
|
|
// ---------------------------------------------------------------------------
|
|
// AI Provider CRUD
|
|
// ---------------------------------------------------------------------------
|
|
|
|
message CreateProviderRequest {
|
|
string body_json = 1; // Serialized AdminCreateProvider JSON
|
|
}
|
|
message UpdateProviderRequest {
|
|
string id = 1;
|
|
string body_json = 2; // Serialized AdminUpdateProvider JSON
|
|
}
|
|
message DeleteProviderRequest {
|
|
string id = 1;
|
|
}
|
|
message ProviderResponse {
|
|
string body_json = 1; // Serialized response JSON
|
|
}
|
|
|
|
// ---------------------------------------------------------------------------
|
|
// AI Model CRUD
|
|
// ---------------------------------------------------------------------------
|
|
|
|
message CreateModelRequest {
|
|
string body_json = 1; // Serialized AdminCreateModel JSON
|
|
}
|
|
message UpdateModelRequest {
|
|
string id = 1;
|
|
string body_json = 2; // Serialized AdminUpdateModel JSON
|
|
}
|
|
message DeleteModelRequest {
|
|
string id = 1;
|
|
}
|
|
message ModelResponse {
|
|
string body_json = 1;
|
|
}
|
|
|
|
// ---------------------------------------------------------------------------
|
|
// AI Version CRUD
|
|
// ---------------------------------------------------------------------------
|
|
|
|
message CreateVersionRequest {
|
|
string body_json = 1; // Serialized AdminCreateVersion JSON
|
|
}
|
|
message UpdateVersionRequest {
|
|
string id = 1;
|
|
string body_json = 2; // Serialized AdminUpdateVersion JSON
|
|
}
|
|
message DeleteVersionRequest {
|
|
string id = 1;
|
|
}
|
|
message VersionResponse {
|
|
string body_json = 1;
|
|
}
|
|
|
|
// ---------------------------------------------------------------------------
|
|
// AI Pricing Update
|
|
// ---------------------------------------------------------------------------
|
|
|
|
message UpdatePricingRequest {
|
|
string id = 1;
|
|
string body_json = 2; // Serialized AdminUpdatePricing JSON
|
|
}
|
|
message PricingResponse {
|
|
string body_json = 1;
|
|
}
|
|
|
|
// ---------------------------------------------------------------------------
|
|
// Generic delete response
|
|
// ---------------------------------------------------------------------------
|
|
|
|
message DeleteResponse {
|
|
bool deleted = 1;
|
|
}
|
|
|
|
// ---------------------------------------------------------------------------
|
|
// Service
|
|
// ---------------------------------------------------------------------------
|
|
|
|
service SessionAdmin {
|
|
rpc ListWorkspaceSessions(ListWorkspaceSessionsRequest) returns (ListWorkspaceSessionsResponse);
|
|
rpc ListUserSessions(ListUserSessionsRequest) returns (ListUserSessionsResponse);
|
|
rpc KickUserFromWorkspace(KickUserFromWorkspaceRequest) returns (KickUserFromWorkspaceResponse);
|
|
rpc KickUser(KickUserRequest) returns (KickUserResponse);
|
|
rpc GetUserStatus(GetUserStatusRequest) returns (GetUserStatusResponse);
|
|
rpc GetUserInfo(GetUserInfoRequest) returns (GetUserInfoResponse);
|
|
rpc GetWorkspaceOnlineUsers(GetWorkspaceOnlineUsersRequest) returns (GetWorkspaceOnlineUsersResponse);
|
|
rpc IsUserOnline(IsUserOnlineRequest) returns (IsUserOnlineResponse);
|
|
rpc GetMetrics(GetMetricsRequest) returns (GetMetricsResponse);
|
|
rpc ExportMetricsCsv(ExportMetricsCsvRequest) returns (ExportMetricsCsvResponse);
|
|
// AI
|
|
rpc SyncModels(SyncModelsRequest) returns (SyncModelsResponse);
|
|
rpc CheckAlerts(CheckAlertsRequest) returns (CheckAlertsResponse);
|
|
// AI Provider
|
|
rpc CreateProvider(CreateProviderRequest) returns (ProviderResponse);
|
|
rpc UpdateProvider(UpdateProviderRequest) returns (ProviderResponse);
|
|
rpc DeleteProvider(DeleteProviderRequest) returns (DeleteResponse);
|
|
// AI Model
|
|
rpc CreateModel(CreateModelRequest) returns (ModelResponse);
|
|
rpc UpdateModel(UpdateModelRequest) returns (ModelResponse);
|
|
rpc DeleteModel(DeleteModelRequest) returns (DeleteResponse);
|
|
// AI Version
|
|
rpc CreateVersion(CreateVersionRequest) returns (VersionResponse);
|
|
rpc UpdateVersion(UpdateVersionRequest) returns (VersionResponse);
|
|
rpc DeleteVersion(DeleteVersionRequest) returns (DeleteResponse);
|
|
// AI Pricing
|
|
rpc UpdatePricing(UpdatePricingRequest) returns (PricingResponse);
|
|
}
|