package agentrouter

import (
	"context"
)

// Resolver 定义一级路由器能力。
type Resolver interface {
	Resolve(ctx context.Context, req *AgentRequest) (*RoutingDecision, error)
}

// SkillHandler 是某个 skill 的统一执行入口。
type SkillHandler func(ctx context.Context, req *AgentRequest) (*AgentResponse, error)

// AgentRequest 是 Agent 路由层可见的最小请求结构。
//
// 设计目的：
// 1. 让 router 层只依赖自己真正关心的字段；
// 2. 避免把整份 agentmodel 结构在迁移早期层层透传；
// 3. 后续若总入口还要追加别的字段，只需要在入口层做一次映射。
type AgentRequest struct {
	UserID         int
	ConversationID string
	UserMessage    string
	ModelName      string
	Extra          map[string]any
}

// AgentResponse 是路由分发器对 skill handler 的统一响应外壳。
type AgentResponse struct {
	Action Action
	Reply  string
	Meta   map[string]any
}
