| import type { MsgContext } from "../../auto-reply/templating.js"; |
| import { |
| buildAgentMainSessionKey, |
| DEFAULT_AGENT_ID, |
| normalizeMainKey, |
| } from "../../routing/session-key.js"; |
| import { normalizeE164 } from "../../utils.js"; |
| import { normalizeExplicitSessionKey } from "./explicit-session-key-normalization.js"; |
| import { resolveGroupSessionKey } from "./group.js"; |
| import type { SessionScope } from "./types.js"; |
|
|
| |
| export function deriveSessionKey(scope: SessionScope, ctx: MsgContext) { |
| if (scope === "global") { |
| return "global"; |
| } |
| const resolvedGroup = resolveGroupSessionKey(ctx); |
| if (resolvedGroup) { |
| return resolvedGroup.key; |
| } |
| const from = ctx.From ? normalizeE164(ctx.From) : ""; |
| return from || "unknown"; |
| } |
|
|
| |
| |
| |
| |
| export function resolveSessionKey(scope: SessionScope, ctx: MsgContext, mainKey?: string) { |
| const explicit = ctx.SessionKey?.trim(); |
| if (explicit) { |
| return normalizeExplicitSessionKey(explicit, ctx); |
| } |
| const raw = deriveSessionKey(scope, ctx); |
| if (scope === "global") { |
| return raw; |
| } |
| const canonicalMainKey = normalizeMainKey(mainKey); |
| const canonical = buildAgentMainSessionKey({ |
| agentId: DEFAULT_AGENT_ID, |
| mainKey: canonicalMainKey, |
| }); |
| const isGroup = raw.includes(":group:") || raw.includes(":channel:"); |
| if (!isGroup) { |
| return canonical; |
| } |
| return `agent:${DEFAULT_AGENT_ID}:${raw}`; |
| } |
|
|