mirror of
https://github.com/sipeed/picoclaw.git
synced 2026-06-12 18:08:54 +00:00
33 lines
943 B
Go
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
|
|
}
|