File size: 1,002 Bytes
fc93158
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
import Foundation

enum SessionKey {
    static func normalizeMainKey(_ raw: String?) -> String {
        let trimmed = (raw ?? "").trimmingCharacters(in: .whitespacesAndNewlines)
        return trimmed.isEmpty ? "main" : trimmed
    }

    static func makeAgentSessionKey(agentId: String, baseKey: String) -> String {
        let trimmedAgent = agentId.trimmingCharacters(in: .whitespacesAndNewlines)
        let trimmedBase = baseKey.trimmingCharacters(in: .whitespacesAndNewlines)
        if trimmedAgent.isEmpty { return trimmedBase.isEmpty ? "main" : trimmedBase }
        let normalizedBase = trimmedBase.isEmpty ? "main" : trimmedBase
        return "agent:\(trimmedAgent):\(normalizedBase)"
    }

    static func isCanonicalMainSessionKey(_ value: String?) -> Bool {
        let trimmed = (value ?? "").trimmingCharacters(in: .whitespacesAndNewlines)
        if trimmed.isEmpty { return false }
        if trimmed == "global" { return true }
        return trimmed.hasPrefix("agent:")
    }
}