refactor: unify target resolver metadata

This commit is contained in:
Peter Steinberger
2026-01-17 07:14:06 +00:00
parent 8c9e32c4a3
commit cf0ea6c756
12 changed files with 295 additions and 231 deletions

View File

@@ -16,8 +16,9 @@ export function normalizeTargetForProvider(provider: string, raw?: string): stri
export function buildTargetResolverSignature(channel: ChannelId): string {
const plugin = getChannelPlugin(channel);
const hint = plugin?.messaging?.targetHint ?? "";
const looksLike = plugin?.messaging?.looksLikeTargetId;
const resolver = plugin?.messaging?.targetResolver;
const hint = resolver?.hint ?? "";
const looksLike = resolver?.looksLikeId;
const source = looksLike ? looksLike.toString() : "";
return hashSignature(`${hint}|${source}`);
}

View File

@@ -172,7 +172,7 @@ function looksLikeTargetId(params: {
const raw = params.raw.trim();
if (!raw) return false;
const plugin = getChannelPlugin(params.channel);
const lookup = plugin?.messaging?.looksLikeTargetId;
const lookup = plugin?.messaging?.targetResolver?.looksLikeId;
if (lookup) return lookup(raw, params.normalized);
if (/^(channel|group|user):/i.test(raw)) return true;
if (/^[@#]/.test(raw)) return true;
@@ -285,7 +285,7 @@ export async function resolveMessagingTarget(params: {
}
const plugin = getChannelPlugin(params.channel);
const providerLabel = plugin?.meta?.label ?? params.channel;
const hint = plugin?.messaging?.targetHint;
const hint = plugin?.messaging?.targetResolver?.hint;
const kind = detectTargetKind(raw, params.preferredKind);
const normalized = normalizeTargetForProvider(params.channel, raw) ?? raw;
if (looksLikeTargetId({ channel: params.channel, raw, normalized })) {

View File

@@ -146,7 +146,7 @@ export function resolveOutboundTarget(params: {
if (trimmed) {
return { ok: true, to: trimmed };
}
const hint = plugin.messaging?.targetHint;
const hint = plugin.messaging?.targetResolver?.hint;
return {
ok: false,
error: missingTargetError(plugin.meta.label ?? params.channel, hint),