Files
picoclaw/pkg/session/scope.go
T

33 lines
943 B
Go

package session
// ScopeVersionV1 is the first structured session-scope schema version.
const ScopeVersionV1 = 1
// SessionScope describes the semantic session partition selected for a turn.
type SessionScope struct {
Version int `json:"version"`
AgentID string `json:"agent_id"`
Channel string `json:"channel"`
Account string `json:"account"`
Dimensions []string `json:"dimensions"`
Values map[string]string `json:"values"`
}
// CloneScope returns a deep copy of scope.
func CloneScope(scope *SessionScope) *SessionScope {
if scope == nil {
return nil
}
cloned := *scope
if len(scope.Dimensions) > 0 {
cloned.Dimensions = append([]string(nil), scope.Dimensions...)
}
if len(scope.Values) > 0 {
cloned.Values = make(map[string]string, len(scope.Values))
for key, value := range scope.Values {
cloned.Values[key] = value
}
}
return &cloned
}