mirror of
https://github.com/YspCoder/clawgo.git
synced 2026-05-04 15:27:29 +08:00
feat(runtime): add process watch patterns, unified backup/import, pluggable context engine, token usage, and codex device login
This commit is contained in:
48
pkg/agent/context_engine_test.go
Normal file
48
pkg/agent/context_engine_test.go
Normal file
@@ -0,0 +1,48 @@
|
||||
package agent
|
||||
|
||||
import (
|
||||
"testing"
|
||||
|
||||
"github.com/YspCoder/clawgo/pkg/bus"
|
||||
"github.com/YspCoder/clawgo/pkg/providers"
|
||||
"github.com/YspCoder/clawgo/pkg/session"
|
||||
)
|
||||
|
||||
type testContextEngine struct {
|
||||
lastReq ContextBuildRequest
|
||||
messages []providers.Message
|
||||
}
|
||||
|
||||
func (e *testContextEngine) BuildMessages(req ContextBuildRequest) []providers.Message {
|
||||
e.lastReq = req
|
||||
return append([]providers.Message(nil), e.messages...)
|
||||
}
|
||||
|
||||
func (e *testContextEngine) SkillsInfo() map[string]interface{} {
|
||||
return map[string]interface{}{"total": 0}
|
||||
}
|
||||
|
||||
func TestAgentLoopUsesPluggableContextEngine(t *testing.T) {
|
||||
t.Parallel()
|
||||
|
||||
engine := &testContextEngine{
|
||||
messages: []providers.Message{{Role: "system", Content: "from-test-engine"}},
|
||||
}
|
||||
loop := &AgentLoop{
|
||||
sessions: session.NewSessionManager(""),
|
||||
contextEngine: engine,
|
||||
}
|
||||
msg := bus.InboundMessage{
|
||||
Channel: "cli",
|
||||
ChatID: "direct",
|
||||
SessionKey: "main",
|
||||
Content: "hello",
|
||||
}
|
||||
messages, _ := loop.prepareUserMessageContext(msg, "main")
|
||||
if len(messages) != 1 || messages[0].Content != "from-test-engine" {
|
||||
t.Fatalf("expected custom engine output, got %#v", messages)
|
||||
}
|
||||
if engine.lastReq.CurrentMessage != "hello" || engine.lastReq.Channel != "cli" {
|
||||
t.Fatalf("unexpected context request: %#v", engine.lastReq)
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user