v1

package
v0.2.0 Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: Mar 14, 2026 License: MIT Imports: 19 Imported by: 0

Documentation

Index

Constants

View Source
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

func FormatTime(t time.Time) string

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.

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL