import { describe, expect, it } from "vitest"; import { resolveNativeCommandSessionTargets } from "./native-command-session-targets.js"; describe("resolveNativeCommandSessionTargets", () => { it("uses the bound session for both targets when present", () => { expect( resolveNativeCommandSessionTargets({ agentId: "codex", sessionPrefix: "discord:slash", userId: "user-1", targetSessionKey: "agent:codex:discord:channel:chan-1", boundSessionKey: "agent:codex:acp:binding:discord:default:seed", }), ).toEqual({ sessionKey: "agent:codex:acp:binding:discord:default:seed", commandTargetSessionKey: "agent:codex:acp:binding:discord:default:seed", }); }); it("falls back to the routed session target when unbound", () => { expect( resolveNativeCommandSessionTargets({ agentId: "qwen", sessionPrefix: "telegram:slash", userId: "user-1", targetSessionKey: "agent:qwen:telegram:direct:user-1", }), ).toEqual({ sessionKey: "agent:qwen:telegram:slash:user-1", commandTargetSessionKey: "agent:qwen:telegram:direct:user-1", }); }); it("supports lowercase session keys for providers that already normalize", () => { expect( resolveNativeCommandSessionTargets({ agentId: "Qwen", sessionPrefix: "Slack:Slash", userId: "U123", targetSessionKey: "agent:qwen:slack:channel:c1", lowercaseSessionKey: true, }), ).toEqual({ sessionKey: "agent:qwen:slack:slash:u123", commandTargetSessionKey: "agent:qwen:slack:channel:c1", }); }); });