import { getLoadedChannelPluginForRead } from "../../channels/plugins/registry-loaded-read.js"; import type { ChannelDirectoryEntryKind, ChannelId } from "../../channels/plugins/types.public.js"; import type { OpenClawConfig } from "../../config/types.openclaw.js"; import { getActivePluginChannelRegistryVersion } from "../../plugins/runtime.js"; import {
normalizeOptionalLowercaseString,
normalizeOptionalString,
} from "../../shared/string-coerce.js";
export function normalizeChannelTargetInput(raw: string): string { return raw.trim();
}
type TargetNormalizer = ((raw: string) => string | undefined) | undefined;
type TargetNormalizerCacheEntry = {
version: number;
normalizer: TargetNormalizer;
};
const targetNormalizerCacheByChannelId = new Map<string, TargetNormalizerCacheEntry>();
function resetTargetNormalizerCacheForTests(): void {
targetNormalizerCacheByChannelId.clear();
}
export const __testing = {
resetTargetNormalizerCacheForTests,
} as const;
function hashSignature(value: string): string {
let hash = 5381; for (let i = 0; i < value.length; i += 1) {
hash = ((hash << 5) + hash) ^ value.charCodeAt(i);
} return (hash >>> 0).toString(36);
}
Messung V0.5 in Prozent
¤ Die Informationen auf dieser Webseite wurden
nach bestem Wissen sorgfältig zusammengestellt. Es wird jedoch weder Vollständigkeit, noch Richtigkeit,
noch Qualität der bereit gestellten Informationen zugesichert.0.12Bemerkung:
(vorverarbeitet am 2026-09-28)
¤
Die Informationen auf dieser Webseite wurden
nach bestem Wissen sorgfältig zusammengestellt. Es wird jedoch weder Vollständigkeit, noch Richtigkeit,
noch Qualität der bereit gestellten Informationen zugesichert.
Bemerkung:
Die farbliche Syntaxdarstellung und die Messung sind noch experimentell.