mirror of
https://github.com/moltbot/moltbot.git
synced 2026-04-23 14:45:46 +00:00
33 lines
1.2 KiB
TypeScript
33 lines
1.2 KiB
TypeScript
import type { OpenClawConfig } from "../../config/config.js";
|
|
import type { ReplyToMode } from "../../config/types.base.js";
|
|
import type { ChannelThreadingAdapter } from "./types.core.js";
|
|
|
|
type ReplyToModeResolver = NonNullable<ChannelThreadingAdapter["resolveReplyToMode"]>;
|
|
|
|
export function createStaticReplyToModeResolver(mode: ReplyToMode): ReplyToModeResolver {
|
|
return () => mode;
|
|
}
|
|
|
|
export function createTopLevelChannelReplyToModeResolver(channelId: string): ReplyToModeResolver {
|
|
return ({ cfg }) => {
|
|
const channelConfig = (
|
|
cfg.channels as Record<string, { replyToMode?: ReplyToMode }> | undefined
|
|
)?.[channelId];
|
|
return channelConfig?.replyToMode ?? "off";
|
|
};
|
|
}
|
|
|
|
export function createScopedAccountReplyToModeResolver<TAccount>(params: {
|
|
resolveAccount: (cfg: OpenClawConfig, accountId?: string | null) => TAccount;
|
|
resolveReplyToMode: (
|
|
account: TAccount,
|
|
chatType?: string | null,
|
|
) => ReplyToMode | null | undefined;
|
|
fallback?: ReplyToMode;
|
|
}): ReplyToModeResolver {
|
|
return ({ cfg, accountId, chatType }) =>
|
|
params.resolveReplyToMode(params.resolveAccount(cfg, accountId), chatType) ??
|
|
params.fallback ??
|
|
"off";
|
|
}
|