Documentation
¶
Index ¶
- Constants
- func FormatTime(t time.Time) string
- type AgentHandler
- type AgentResponse
- type ChatCompletionChoice
- type ChatCompletionChunk
- type ChatCompletionChunkChoice
- type ChatCompletionRequest
- type ChatCompletionResponse
- type ChatCompletionUsage
- type ChatCompletionsHandler
- type ChatMessage
- type ChatMessageDelta
- type CreateAgentRequest
- type CreateTeamRequest
- type ModelHandler
- type ModelListResponse
- type ModelObject
- type ModelRefRequest
- type SendTeamMessageRequest
- type SessionHandler
- type SessionResponse
- type TeamHandler
- type TeamMemberResponse
- type TeamResponse
- type TeamTemplateMemberResponse
- type TeamTemplateResponse
- type ToolCallChunk
- type ToolCallFunction
Constants ¶
const ( // Common request errors (100xxx). ErrBind = 100001 ErrValidation = 100002 // Chat completions errors (1001xx). ErrMessagesEmpty = 100101 ErrNoUserMessage = 100102 ErrEnsureAgent = 100103 ErrAgentRun = 100104 ErrStreamRecv = 100105 ErrNonStreamResult = 100106 // Agent errors (1002xx). ErrAgentNotFound = 100201 ErrAgentCreate = 100202 ErrAgentList = 100203 ErrAgentDelete = 100204 // Session errors (1003xx). ErrSessionNotFound = 100301 ErrSessionList = 100302 ErrSessionDelete = 100303 // Model errors (1004xx). ErrModelList = 100401 // Team errors (1005xx). ErrTeamNotFound = 100501 ErrTeamCreate = 100502 ErrTeamDissolve = 100503 ErrTeamMessage = 100504 ErrTeamTemplateList = 100505 ErrTeamMemberNotFound = 100506 )
Variables ¶
This section is empty.
Functions ¶
func FormatTime ¶
FormatTime formats a time value for API responses.
Types ¶
type AgentHandler ¶
type AgentHandler struct {
// contains filtered or unexported fields
}
AgentHandler handles Agent CRUD REST API endpoints.
func NewAgentHandler ¶
func NewAgentHandler(svc service.AgentService) *AgentHandler
NewAgentHandler creates a new AgentHandler.
func (*AgentHandler) Create ¶
func (h *AgentHandler) Create(c *gin.Context)
Create handles POST /v1/agents.
func (*AgentHandler) Delete ¶
func (h *AgentHandler) Delete(c *gin.Context)
Delete handles DELETE /v1/agents/:id.
func (*AgentHandler) Get ¶
func (h *AgentHandler) Get(c *gin.Context)
Get handles GET /v1/agents/:id.
func (*AgentHandler) List ¶
func (h *AgentHandler) List(c *gin.Context)
List handles GET /v1/agents.
type AgentResponse ¶
type AgentResponse struct {
ID string `json:"id"`
Name string `json:"name"`
Description string `json:"description,omitempty"`
SystemPrompt string `json:"system_prompt"`
Tools []string `json:"tools,omitempty"`
MaxTurns int `json:"max_turns,omitempty"`
CreatedAt string `json:"created_at"`
UpdatedAt string `json:"updated_at"`
}
AgentResponse is the response for agent endpoints.
type ChatCompletionChoice ¶
type ChatCompletionChoice struct {
Index int `json:"index"`
Message *ChatMessage `json:"message,omitempty"`
FinishReason string `json:"finish_reason"`
}
ChatCompletionChoice is a single choice in the response.
type ChatCompletionChunk ¶
type ChatCompletionChunk struct {
ID string `json:"id"`
Object string `json:"object"`
Created int64 `json:"created"`
Model string `json:"model"`
Choices []ChatCompletionChunkChoice `json:"choices"`
Usage *ChatCompletionUsage `json:"usage,omitempty"`
}
ChatCompletionChunk is a single SSE chunk for streaming responses.
type ChatCompletionChunkChoice ¶
type ChatCompletionChunkChoice struct {
Index int `json:"index"`
Delta *ChatMessageDelta `json:"delta"`
FinishReason *string `json:"finish_reason"`
}
ChatCompletionChunkChoice is a single choice in a streaming chunk.
type ChatCompletionRequest ¶
type ChatCompletionRequest struct {
// Model can be "echoryn", "echoryn/<agent-id>", or "agent:<agent-id>".
Model string `json:"model"`
// Messages is the conversation history.
Messages []ChatMessage `json:"messages" binding:"required"`
// Stream controls whether the response is streamed via SSE.
Stream bool `json:"stream,omitempty"`
// User is used for session key isolation (optional).
User string `json:"user,omitempty"`
// Temperature controls sampling (optional, overrides agent default).
Temperature *float64 `json:"temperature,omitempty"`
// MaxTokens limits the output tokens (optional, overrides agent default).
MaxTokens *int `json:"max_tokens,omitempty"`
}
ChatCompletionRequest is the OpenAI-compatible request body for /v1/chat/completions.
type ChatCompletionResponse ¶
type ChatCompletionResponse struct {
ID string `json:"id"`
Object string `json:"object"`
Created int64 `json:"created"`
Model string `json:"model"`
Choices []ChatCompletionChoice `json:"choices"`
Usage *ChatCompletionUsage `json:"usage,omitempty"`
}
ChatCompletionResponse is the OpenAI-compatible non-streaming response.
type ChatCompletionUsage ¶
type ChatCompletionUsage struct {
PromptTokens int64 `json:"prompt_tokens"`
CompletionTokens int64 `json:"completion_tokens"`
TotalTokens int64 `json:"total_tokens"`
}
ChatCompletionUsage reports token usage.
type ChatCompletionsHandler ¶
type ChatCompletionsHandler struct {
// contains filtered or unexported fields
}
ChatCompletionsHandler handles POST /v1/chat/completions (OpenAI-compatible).
Modeled after OpenClaw's openai-http.ts:
- Resolves agent from model field (e.g., "echoryn/agent-id")
- Resolves session from X-Session-Key header or user field
- Maps messages to RunRequest
- Supports both stream=true (SSE) and stream=false (JSON)
func NewChatCompletionsHandler ¶
func NewChatCompletionsHandler(svc service.AgentService, llmManager llmService.ModelManager, defaultAgentID, defaultModel string) *ChatCompletionsHandler
NewChatCompletionsHandler creates a new ChatCompletionsHandler.
func (*ChatCompletionsHandler) Handle ¶
func (h *ChatCompletionsHandler) Handle(c *gin.Context)
Handle is the main entry point for POST /v1/chat/completions.
type ChatMessage ¶
type ChatMessage struct {
Role string `json:"role" binding:"required"`
Content string `json:"content"`
Name string `json:"name,omitempty"`
ToolCalls []ToolCallChunk `json:"tool_calls,omitempty"`
ToolCallID string `json:"tool_call_id,omitempty"`
}
ChatMessage is a single message in the OpenAI Chat Completions format.
type ChatMessageDelta ¶
type ChatMessageDelta struct {
Role string `json:"role,omitempty"`
Content string `json:"content,omitempty"`
ToolCalls []ToolCallChunk `json:"tool_calls,omitempty"`
}
ChatMessageDelta is the delta payload in streaming mode.
type CreateAgentRequest ¶
type CreateAgentRequest struct {
ID string `json:"id" binding:"required"`
Name string `json:"name" binding:"required"`
Description string `json:"description,omitempty"`
SystemPrompt string `json:"system_prompt"`
ModelRef *ModelRefRequest `json:"model_ref,omitempty"`
Tools []string `json:"tools,omitempty"`
MaxTurns int `json:"max_turns,omitempty"`
Temperature *float64 `json:"temperature,omitempty"`
MaxTokens *int `json:"max_tokens,omitempty"`
}
CreateAgentRequest is the request body for POST /v1/agents.
type CreateTeamRequest ¶ added in v0.2.0
type CreateTeamRequest struct {
// TemplateID creates a team from a template (mutually exclusive with Name).
TemplateID string `json:"template_id,omitempty"`
// Name is used for ad-hoc team creation (when TemplateID is empty).
Name string `json:"name,omitempty"`
// TaskDescription describes the task for the team.
TaskDescription string `json:"task_description" binding:"required"`
// Strategy is the coordination strategy (parallel, pipeline, debate, leader_directed).
Strategy string `json:"strategy,omitempty"`
}
CreateTeamRequest is the request body for POST /v1/teams.
type ModelHandler ¶
type ModelHandler struct {
// contains filtered or unexported fields
}
ModelHandler handles GET /v1/models (OpenAI-compatible).
Modeled after OpenClaw's openai-http.ts:
func NewModelHandler ¶
func NewModelHandler(manager llmService.ModelManager) *ModelHandler
NewModelHandler creates a new ModelHandler.
func (*ModelHandler) List ¶
func (h *ModelHandler) List(c *gin.Context)
List handles GET /v1/models (OpenAI-compatible).
type ModelListResponse ¶
type ModelListResponse struct {
Object string `json:"object"`
Data []ModelObject `json:"data"`
}
ModelListResponse is the response for GET /v1/models.
type ModelObject ¶
type ModelObject struct {
ID string `json:"id"`
Object string `json:"object"`
OwnedBy string `json:"owned_by"`
}
ModelObject is a single model in the OpenAI /v1/models response.
type ModelRefRequest ¶
type ModelRefRequest struct {
ProviderID string `json:"provider_id"`
ModelID string `json:"model_id"`
}
ModelRefRequest is a model reference in the API request.
type SendTeamMessageRequest ¶ added in v0.2.0
type SendTeamMessageRequest struct {
// Recipient is the member label or ID (for point-to-point messages).
Recipient string `json:"recipient,omitempty"`
// Content is the message text.
Content string `json:"content" binding:"required"`
// Broadcast sends the message to all team members.
Broadcast bool `json:"broadcast,omitempty"`
}
SendTeamMessageRequest is the request body for POST /v1/teams/:id/messages.
type SessionHandler ¶
type SessionHandler struct {
// contains filtered or unexported fields
}
SessionHandler handles Session management REST API endpoints.
func NewSessionHandler ¶
func NewSessionHandler(svc service.AgentService) *SessionHandler
NewSessionHandler creates a new SessionHandler.
func (*SessionHandler) Delete ¶
func (h *SessionHandler) Delete(c *gin.Context)
Delete handles DELETE /v1/sessions/:id.
func (*SessionHandler) Get ¶
func (h *SessionHandler) Get(c *gin.Context)
Get handles GET /v1/sessions/:id.
func (*SessionHandler) ListByAgent ¶
func (h *SessionHandler) ListByAgent(c *gin.Context)
ListByAgent handles GET /v1/agents/:id/sessions.
type SessionResponse ¶
type SessionResponse struct {
ID string `json:"id"`
AgentID string `json:"agent_id"`
MessageCount int `json:"message_count"`
CreatedAt string `json:"created_at"`
UpdatedAt string `json:"updated_at"`
}
SessionResponse is the response for session endpoints.
type TeamHandler ¶ added in v0.2.0
type TeamHandler struct {
// contains filtered or unexported fields
}
TeamHandler handles Team REST API endpoints.
func NewTeamHandler ¶ added in v0.2.0
func NewTeamHandler( orch team.TeamOrchestrator, tmplSvc team.TeamTemplateService, bus messagebus.MessageBus, ) *TeamHandler
NewTeamHandler creates a new TeamHandler.
func (*TeamHandler) CreateTeam ¶ added in v0.2.0
func (h *TeamHandler) CreateTeam(c *gin.Context)
CreateTeam handles POST /v1/teams.
func (*TeamHandler) DissolveTeam ¶ added in v0.2.0
func (h *TeamHandler) DissolveTeam(c *gin.Context)
DissolveTeam handles DELETE /v1/teams/:id.
func (*TeamHandler) GetTeam ¶ added in v0.2.0
func (h *TeamHandler) GetTeam(c *gin.Context)
GetTeam handles GET /v1/teams/:id.
func (*TeamHandler) ListTemplates ¶ added in v0.2.0
func (h *TeamHandler) ListTemplates(c *gin.Context)
ListTemplates handles GET /v1/teams/templates.
func (*TeamHandler) SendMessage ¶ added in v0.2.0
func (h *TeamHandler) SendMessage(c *gin.Context)
SendMessage handles POST /v1/teams/:id/messages.
type TeamMemberResponse ¶ added in v0.2.0
type TeamMemberResponse struct {
ID string `json:"id"`
SessionID string `json:"session_id"`
AgentID string `json:"agent_id,omitempty"`
Label string `json:"label"`
Role string `json:"role"`
Status string `json:"status"`
IsLeader bool `json:"is_leader,omitempty"`
NodeID string `json:"node_id,omitempty"`
Progress string `json:"progress,omitempty"`
}
TeamMemberResponse is a team member in the response.
type TeamResponse ¶ added in v0.2.0
type TeamResponse struct {
ID string `json:"id"`
Name string `json:"name"`
Strategy string `json:"strategy"`
Status string `json:"status"`
Members []TeamMemberResponse `json:"members"`
}
TeamResponse is the response for team endpoints.
type TeamTemplateMemberResponse ¶ added in v0.2.0
type TeamTemplateMemberResponse struct {
ID string `json:"id"`
Role string `json:"role"`
Label string `json:"label"`
IsLeader bool `json:"is_leader,omitempty"`
}
TeamTemplateMemberResponse is a member spec in a template response.
type TeamTemplateResponse ¶ added in v0.2.0
type TeamTemplateResponse struct {
ID string `json:"id"`
Name string `json:"name"`
Description string `json:"description,omitempty"`
DefaultStrategy string `json:"default_strategy"`
Members []TeamTemplateMemberResponse `json:"members"`
}
TeamTemplateResponse is the response for team template endpoints.
type ToolCallChunk ¶
type ToolCallChunk struct {
Index int `json:"index"`
ID string `json:"id,omitempty"`
Type string `json:"type,omitempty"`
Function ToolCallFunction `json:"function"`
}
ToolCallChunk represents a tool call in OpenAI format.
type ToolCallFunction ¶
type ToolCallFunction struct {
Name string `json:"name,omitempty"`
Arguments string `json:"arguments,omitempty"`
}
ToolCallFunction represents the function part of a tool call.