import { beforeEach, describe, expect, it } from "vitest" ;
import { setActivePluginRegistry } from "../../plugins/runtime.js" ;
import { createSessionConversationTestRegistry } from "../../test-utils/session-conversation-registry.js" ;
import { resolveAnnounceTargetFromKey } from "./sessions-send-helpers.js" ;
describe("resolveAnnounceTargetFromKey" , () => {
beforeEach(() => {
setActivePluginRegistry(createSessionConversationTestRegistry());
});
it("lets plugins own session-derived target shapes" , () => {
expect(resolveAnnounceTargetFromKey("agent:main:discord:group:dev" )).toEqual({
channel: "discord" ,
to: "channel:dev" ,
threadId: undefined,
});
expect(resolveAnnounceTargetFromKey("agent:main:slack:group:C123" )).toEqual({
channel: "slack" ,
to: "channel:C123" ,
threadId: undefined,
});
});
it("keeps generic topic extraction and plugin normalization for other channels" , () => {
expect(resolveAnnounceTargetFromKey("agent:main:telegram:group:-100123:topic:99" )).toEqual({
channel: "telegram" ,
to: "-100123" ,
threadId: "99" ,
});
});
it("preserves decimal thread ids for Slack-style session keys" , () => {
expect(
resolveAnnounceTargetFromKey("agent:main:slack:channel:general:thread:1699999999.0001" ),
).toEqual({
channel: "slack" ,
to: "channel:general" ,
threadId: "1699999999.0001" ,
});
});
it("preserves colon-delimited matrix ids for channel and thread targets" , () => {
expect(
resolveAnnounceTargetFromKey(
"agent:main:matrix:channel:!room:example.org:thread:$AbC123:example.org" ,
),
).toEqual({
channel: "matrix" ,
to: "channel:!room:example.org" ,
threadId: "$AbC123:example.org" ,
});
});
it("preserves feishu conversation ids that embed :topic: in the base id" , () => {
expect(
resolveAnnounceTargetFromKey(
"agent:main:feishu:group:oc_group_chat:topic:om_topic_root:sender:ou_topic_user" ,
),
).toEqual({
channel: "feishu" ,
to: "oc_group_chat:topic:om_topic_root:sender:ou_topic_user" ,
threadId: undefined,
});
});
});
Messung V0.5 in Prozent C=95 H=86 G=90
¤ Dauer der Verarbeitung: 0.10 Sekunden
(vorverarbeitet am 2026-06-05)
¤
*© Formatika GbR, Deutschland