* Returns a map of channelType -> agentId from bindings. * Account-scoped bindings are preferred; channel-wide bindings serve as fallback. * Multiple agents can own the same channel type (different accounts).
(bindings: unknown)
| 251 | * Multiple agents can own the same channel type (different accounts). |
| 252 | */ |
| 253 | function getChannelBindingMap(bindings: unknown): { |
| 254 | channelToAgent: Map<string, string>; |
| 255 | accountToAgent: Map<string, string>; |
| 256 | } { |
| 257 | const channelToAgent = new Map<string, string>(); |
| 258 | const accountToAgent = new Map<string, string>(); |
| 259 | if (!Array.isArray(bindings)) return { channelToAgent, accountToAgent }; |
| 260 | |
| 261 | for (const binding of bindings) { |
| 262 | if (!isChannelBinding(binding)) continue; |
| 263 | const agentId = normalizeAgentIdForBinding(binding.agentId!); |
| 264 | const channel = binding.match?.channel; |
| 265 | if (!agentId || !channel) continue; |
| 266 | |
| 267 | const accountId = binding.match?.accountId; |
| 268 | if (accountId) { |
| 269 | accountToAgent.set(`${channel}:${accountId}`, agentId); |
| 270 | } else { |
| 271 | channelToAgent.set(channel, agentId); |
| 272 | } |
| 273 | } |
| 274 | |
| 275 | return { channelToAgent, accountToAgent }; |
| 276 | } |
| 277 | |
| 278 | function upsertBindingsForChannel( |
| 279 | bindings: unknown, |
no test coverage detected