This commit is contained in:
2026-06-09 21:19:30 +08:00
parent 8b41ff9360
commit 0484e79978
66 changed files with 4043 additions and 533 deletions
+53 -24
View File
@@ -1,22 +1,26 @@
package acp
import (
"encoding/json"
"time"
"github.com/google/uuid"
)
// AgentKindAdminDTO 是 admin 视图的完整字段。EnvKeys 仅返回 key 列表(不返回值)。
type AgentKindAdminDTO struct {
ID uuid.UUID `json:"id"`
Name string `json:"name"`
DisplayName string `json:"display_name"`
Description string `json:"description"`
BinaryPath string `json:"binary_path"`
Args []string `json:"args"`
EnvKeys []string `json:"env_keys"`
Enabled bool `json:"enabled"`
CreatedBy uuid.UUID `json:"created_by"`
CreatedAt string `json:"created_at"`
UpdatedAt string `json:"updated_at"`
ID uuid.UUID `json:"id"`
Name string `json:"name"`
DisplayName string `json:"display_name"`
Description string `json:"description"`
BinaryPath string `json:"binary_path"`
Args []string `json:"args"`
EnvKeys []string `json:"env_keys"`
Enabled bool `json:"enabled"`
ToolAllowlist []string `json:"tool_allowlist"`
CreatedBy uuid.UUID `json:"created_by"`
CreatedAt string `json:"created_at"`
UpdatedAt string `json:"updated_at"`
}
// AgentKindPublicDTO 是普通用户视图,不暴露 binary_path / args / env_keys。
@@ -29,22 +33,47 @@ type AgentKindPublicDTO struct {
// CreateAgentKindReq / UpdateAgentKindReq 是 HTTP 请求体。
type CreateAgentKindReq struct {
Name string `json:"name"`
DisplayName string `json:"display_name"`
Description string `json:"description"`
BinaryPath string `json:"binary_path"`
Args []string `json:"args"`
Env map[string]string `json:"env"`
Enabled *bool `json:"enabled"`
Name string `json:"name"`
DisplayName string `json:"display_name"`
Description string `json:"description"`
BinaryPath string `json:"binary_path"`
Args []string `json:"args"`
Env map[string]string `json:"env"`
Enabled *bool `json:"enabled"`
ToolAllowlist []string `json:"tool_allowlist"`
}
type UpdateAgentKindReq struct {
DisplayName *string `json:"display_name,omitempty"`
Description *string `json:"description,omitempty"`
BinaryPath *string `json:"binary_path,omitempty"`
Args []string `json:"args,omitempty"`
Env map[string]string `json:"env,omitempty"`
Enabled *bool `json:"enabled,omitempty"`
DisplayName *string `json:"display_name,omitempty"`
Description *string `json:"description,omitempty"`
BinaryPath *string `json:"binary_path,omitempty"`
Args []string `json:"args,omitempty"`
Env map[string]string `json:"env,omitempty"`
Enabled *bool `json:"enabled,omitempty"`
ToolAllowlist []string `json:"tool_allowlist,omitempty"`
}
// PermissionRequestDTO 是权限请求的对外视图。
type PermissionRequestDTO struct {
ID string `json:"id"`
SessionID string `json:"session_id"`
ToolName string `json:"tool_name"`
ToolCall json.RawMessage `json:"tool_call"`
Options json.RawMessage `json:"options"`
Status string `json:"status"`
CreatedAt string `json:"created_at"`
}
func permissionRequestToDTO(p *PermissionRequest) PermissionRequestDTO {
return PermissionRequestDTO{
ID: p.ID.String(),
SessionID: p.SessionID.String(),
ToolName: p.ToolName,
ToolCall: json.RawMessage(p.ToolCall),
Options: json.RawMessage(p.Options),
Status: string(p.Status),
CreatedAt: p.CreatedAt.Format(time.RFC3339),
}
}
// CreateSessionReq is the request body for POST /api/v1/acp/sessions.