66 lines
2.0 KiB
TypeScript
66 lines
2.0 KiB
TypeScript
import {
|
|
buildAgentMainSessionKey,
|
|
DEFAULT_AGENT_ID,
|
|
normalizeAgentId,
|
|
normalizeMainKey,
|
|
resolveAgentIdFromSessionKey,
|
|
} from "../../routing/session-key.js";
|
|
import { loadConfig } from "../config.js";
|
|
import type { SessionScope } from "./types.js";
|
|
|
|
export function resolveMainSessionKey(cfg?: {
|
|
session?: { scope?: SessionScope; mainKey?: string };
|
|
agents?: { list?: Array<{ id?: string; default?: boolean }> };
|
|
}): string {
|
|
if (cfg?.session?.scope === "global") return "global";
|
|
const agents = cfg?.agents?.list ?? [];
|
|
const defaultAgentId =
|
|
agents.find((agent) => agent?.default)?.id ??
|
|
agents[0]?.id ??
|
|
DEFAULT_AGENT_ID;
|
|
const agentId = normalizeAgentId(defaultAgentId);
|
|
const mainKey = normalizeMainKey(cfg?.session?.mainKey);
|
|
return buildAgentMainSessionKey({ agentId, mainKey });
|
|
}
|
|
|
|
export function resolveMainSessionKeyFromConfig(): string {
|
|
return resolveMainSessionKey(loadConfig());
|
|
}
|
|
|
|
export { resolveAgentIdFromSessionKey };
|
|
|
|
export function resolveAgentMainSessionKey(params: {
|
|
cfg?: { session?: { mainKey?: string } };
|
|
agentId: string;
|
|
}): string {
|
|
const mainKey = normalizeMainKey(params.cfg?.session?.mainKey);
|
|
return buildAgentMainSessionKey({ agentId: params.agentId, mainKey });
|
|
}
|
|
|
|
export function canonicalizeMainSessionAlias(params: {
|
|
cfg?: { session?: { scope?: SessionScope; mainKey?: string } };
|
|
agentId: string;
|
|
sessionKey: string;
|
|
}): string {
|
|
const raw = params.sessionKey.trim();
|
|
if (!raw) return raw;
|
|
|
|
const agentId = normalizeAgentId(params.agentId);
|
|
const mainKey = normalizeMainKey(params.cfg?.session?.mainKey);
|
|
const agentMainSessionKey = buildAgentMainSessionKey({ agentId, mainKey });
|
|
const agentMainAliasKey = buildAgentMainSessionKey({
|
|
agentId,
|
|
mainKey: "main",
|
|
});
|
|
|
|
const isMainAlias =
|
|
raw === "main" ||
|
|
raw === mainKey ||
|
|
raw === agentMainSessionKey ||
|
|
raw === agentMainAliasKey;
|
|
|
|
if (params.cfg?.session?.scope === "global" && isMainAlias) return "global";
|
|
if (isMainAlias) return agentMainSessionKey;
|
|
return raw;
|
|
}
|