mirror of
https://github.com/sipeed/picoclaw.git
synced 2026-06-12 18:08:54 +00:00
refactor(routing): move session allocation out of router
This commit is contained in:
@@ -0,0 +1,43 @@
|
||||
package session
|
||||
|
||||
import (
|
||||
"strings"
|
||||
|
||||
"github.com/sipeed/picoclaw/pkg/routing"
|
||||
)
|
||||
|
||||
// Allocation contains the concrete session keys selected for a routed turn.
|
||||
// The current implementation intentionally preserves the legacy session-key
|
||||
// layout while moving key construction out of the router.
|
||||
type Allocation struct {
|
||||
SessionKey string
|
||||
MainSessionKey string
|
||||
}
|
||||
|
||||
// AllocationInput contains the routing result and peer context needed to
|
||||
// derive the session keys for a turn.
|
||||
type AllocationInput struct {
|
||||
AgentID string
|
||||
Channel string
|
||||
AccountID string
|
||||
Peer *routing.RoutePeer
|
||||
SessionPolicy routing.SessionPolicy
|
||||
}
|
||||
|
||||
// AllocateRouteSession maps a route decision onto the current legacy
|
||||
// agent-scoped session-key format.
|
||||
func AllocateRouteSession(input AllocationInput) Allocation {
|
||||
sessionKey := strings.ToLower(routing.BuildAgentPeerSessionKey(routing.SessionKeyParams{
|
||||
AgentID: input.AgentID,
|
||||
Channel: input.Channel,
|
||||
AccountID: input.AccountID,
|
||||
Peer: input.Peer,
|
||||
DMScope: input.SessionPolicy.DMScope,
|
||||
IdentityLinks: input.SessionPolicy.IdentityLinks,
|
||||
}))
|
||||
mainSessionKey := strings.ToLower(routing.BuildAgentMainSessionKey(input.AgentID))
|
||||
return Allocation{
|
||||
SessionKey: sessionKey,
|
||||
MainSessionKey: mainSessionKey,
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user