Files
openclaw/src/agents/tools/sessions-send-helpers.test.ts
2026-03-27 23:22:17 -05:00

111 lines
3.4 KiB
TypeScript

import { beforeEach, describe, expect, it } from "vitest";
import { setActivePluginRegistry } from "../../plugins/runtime.js";
import { createTestRegistry } from "../../test-utils/channel-plugins.js";
import { resolveAnnounceTargetFromKey } from "./sessions-send-helpers.js";
describe("resolveAnnounceTargetFromKey", () => {
beforeEach(() => {
setActivePluginRegistry(
createTestRegistry([
{
pluginId: "discord",
source: "test",
plugin: {
id: "discord",
meta: {
id: "discord",
label: "Discord",
selectionLabel: "Discord",
docsPath: "/channels/discord",
blurb: "Discord test stub.",
},
capabilities: { chatTypes: ["direct", "channel", "thread"] },
messaging: {
resolveSessionTarget: ({ id }: { id: string }) => `channel:${id}`,
},
config: {
listAccountIds: () => ["default"],
resolveAccount: () => ({}),
},
},
},
{
pluginId: "slack",
source: "test",
plugin: {
id: "slack",
meta: {
id: "slack",
label: "Slack",
selectionLabel: "Slack",
docsPath: "/channels/slack",
blurb: "Slack test stub.",
},
capabilities: { chatTypes: ["direct", "channel", "thread"] },
messaging: {
resolveSessionTarget: ({ id }: { id: string }) => `channel:${id}`,
},
config: {
listAccountIds: () => ["default"],
resolveAccount: () => ({}),
},
},
},
{
pluginId: "telegram",
source: "test",
plugin: {
id: "telegram",
meta: {
id: "telegram",
label: "Telegram",
selectionLabel: "Telegram",
docsPath: "/channels/telegram",
blurb: "Telegram test stub.",
},
capabilities: { chatTypes: ["direct", "group", "thread"] },
messaging: {
normalizeTarget: (raw: string) => raw.replace(/^group:/, ""),
},
config: {
listAccountIds: () => ["default"],
resolveAccount: () => ({}),
},
},
},
]),
);
});
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",
});
});
});