Files
clawgo/pkg/agent/context_engine.go

56 lines
1.3 KiB
Go

package agent
import "github.com/YspCoder/clawgo/pkg/providers"
// ContextBuildRequest defines inputs for building a provider message window.
type ContextBuildRequest struct {
History []providers.Message
Summary string
CurrentMessage string
Media []string
Channel string
ChatID string
ResponseLanguage string
MemoryNamespace string
}
// ContextEngine allows swapping context-assembly behavior without touching AgentLoop flow.
type ContextEngine interface {
BuildMessages(req ContextBuildRequest) []providers.Message
SkillsInfo() map[string]interface{}
}
type defaultContextEngine struct {
builder *ContextBuilder
}
func NewDefaultContextEngine(builder *ContextBuilder) ContextEngine {
if builder == nil {
return nil
}
return &defaultContextEngine{builder: builder}
}
func (e *defaultContextEngine) BuildMessages(req ContextBuildRequest) []providers.Message {
if e == nil || e.builder == nil {
return nil
}
return e.builder.BuildMessagesWithMemoryNamespace(
req.History,
req.Summary,
req.CurrentMessage,
req.Media,
req.Channel,
req.ChatID,
req.ResponseLanguage,
req.MemoryNamespace,
)
}
func (e *defaultContextEngine) SkillsInfo() map[string]interface{} {
if e == nil || e.builder == nil {
return map[string]interface{}{}
}
return e.builder.GetSkillsInfo()
}