Files
Moltbot/src/utils/message-provider.ts
2026-01-09 23:00:36 +01:00

79 lines
2.1 KiB
TypeScript

export function normalizeMessageProvider(
raw?: string | null,
): string | undefined {
const normalized = raw?.trim().toLowerCase();
if (!normalized) return undefined;
if (normalized === "imsg") return "imessage";
if (normalized === "teams") return "msteams";
return normalized;
}
export const DELIVERABLE_MESSAGE_PROVIDERS = [
"whatsapp",
"telegram",
"discord",
"slack",
"signal",
"imessage",
"msteams",
] as const;
export type DeliverableMessageProvider =
(typeof DELIVERABLE_MESSAGE_PROVIDERS)[number];
export const INTERNAL_MESSAGE_PROVIDER = "webchat" as const;
export type InternalMessageProvider = typeof INTERNAL_MESSAGE_PROVIDER;
export type GatewayMessageProvider =
| DeliverableMessageProvider
| InternalMessageProvider;
export const GATEWAY_MESSAGE_PROVIDERS = [
...DELIVERABLE_MESSAGE_PROVIDERS,
"webchat",
] as const;
export const GATEWAY_AGENT_PROVIDER_ALIASES = ["imsg", "teams"] as const;
export type GatewayAgentProviderAlias =
(typeof GATEWAY_AGENT_PROVIDER_ALIASES)[number];
export type GatewayAgentProviderHint =
| GatewayMessageProvider
| "last"
| GatewayAgentProviderAlias;
export const GATEWAY_AGENT_PROVIDER_VALUES = [
...GATEWAY_MESSAGE_PROVIDERS,
"last",
...GATEWAY_AGENT_PROVIDER_ALIASES,
] as const;
export function isGatewayMessageProvider(
value: string,
): value is GatewayMessageProvider {
return (GATEWAY_MESSAGE_PROVIDERS as readonly string[]).includes(value);
}
export function isDeliverableMessageProvider(
value: string,
): value is DeliverableMessageProvider {
return (DELIVERABLE_MESSAGE_PROVIDERS as readonly string[]).includes(value);
}
export function resolveGatewayMessageProvider(
raw?: string | null,
): GatewayMessageProvider | undefined {
const normalized = normalizeMessageProvider(raw);
if (!normalized) return undefined;
return isGatewayMessageProvider(normalized) ? normalized : undefined;
}
export function resolveMessageProvider(
primary?: string | null,
fallback?: string | null,
): string | undefined {
return (
normalizeMessageProvider(primary) ?? normalizeMessageProvider(fallback)
);
}