mirror of
https://github.com/sipeed/picoclaw.git
synced 2026-06-12 18:08:54 +00:00
b3a7b7ad64
* feat: add agent self-evolution * fix ci * delete unused doc * fix lint * fix evolution review issues
77 lines
2.2 KiB
Go
77 lines
2.2 KiB
Go
package agent
|
|
|
|
import (
|
|
"context"
|
|
"testing"
|
|
"time"
|
|
|
|
"github.com/sipeed/picoclaw/pkg/bus"
|
|
"github.com/sipeed/picoclaw/pkg/config"
|
|
runtimeevents "github.com/sipeed/picoclaw/pkg/events"
|
|
)
|
|
|
|
func TestSubscribeEventsFiltersRuntimeBusToLegacyAgentEvents(t *testing.T) {
|
|
cfg := &config.Config{
|
|
Agents: config.AgentsConfig{
|
|
Defaults: config.AgentDefaults{
|
|
Workspace: t.TempDir(),
|
|
ModelName: "test-model",
|
|
MaxTokens: 4096,
|
|
MaxToolIterations: 3,
|
|
},
|
|
},
|
|
}
|
|
al := NewAgentLoop(cfg, bus.NewMessageBus(), &simpleMockProvider{response: "ok"})
|
|
defer al.Close()
|
|
|
|
sub := al.SubscribeEvents(4)
|
|
defer al.UnsubscribeEvents(sub.ID)
|
|
|
|
al.RuntimeEventBus().Publish(context.Background(), runtimeevents.Event{
|
|
Kind: runtimeevents.KindGatewayReady,
|
|
Source: runtimeevents.Source{Component: "gateway"},
|
|
})
|
|
select {
|
|
case evt := <-sub.C:
|
|
t.Fatalf("legacy subscriber received non-agent runtime event: %s", evt.Kind)
|
|
case <-time.After(50 * time.Millisecond):
|
|
}
|
|
|
|
al.RuntimeEventBus().Publish(context.Background(), runtimeevents.Event{
|
|
Kind: runtimeevents.KindAgentTurnStart,
|
|
Source: runtimeevents.Source{Component: "agent", Name: "main"},
|
|
Scope: runtimeevents.Scope{
|
|
AgentID: "main",
|
|
TurnID: "turn-1",
|
|
SessionKey: "session-1",
|
|
Channel: "telegram",
|
|
Account: "bot-1",
|
|
ChatID: "chat-1",
|
|
ChatType: "private",
|
|
TopicID: "topic-1",
|
|
SpaceID: "space-1",
|
|
SpaceType: "dm",
|
|
SenderID: "sender-1",
|
|
MessageID: "message-1",
|
|
},
|
|
Payload: TurnStartPayload{UserMessage: "hello"},
|
|
})
|
|
|
|
evt := waitForEvent(t, sub.C, 2*time.Second, nil)
|
|
if evt.Kind != EventKindTurnStart {
|
|
t.Fatalf("event kind = %q, want %q", evt.Kind, EventKindTurnStart)
|
|
}
|
|
if evt.Context == nil || evt.Context.Inbound == nil {
|
|
t.Fatalf("expected legacy event inbound context, got %#v", evt.Context)
|
|
}
|
|
if got := evt.Context.Inbound.Channel; got != "telegram" {
|
|
t.Fatalf("inbound channel = %q, want telegram", got)
|
|
}
|
|
if got := evt.Context.Inbound.ChatID; got != "chat-1" {
|
|
t.Fatalf("inbound chat_id = %q, want chat-1", got)
|
|
}
|
|
if got := evt.Context.Inbound.MessageID; got != "message-1" {
|
|
t.Fatalf("inbound message_id = %q, want message-1", got)
|
|
}
|
|
}
|