openclaw
Version:
Multi-channel AI gateway with extensible messaging integrations
59 lines (58 loc) • 2.53 kB
JavaScript
import { l as normalizeStringEntries } from "./string-normalization-WNUDCpXX.js";
import { n as normalizeAccountId } from "./account-id-Df9e41E6.js";
import { t as resolveAccountEntry } from "./account-lookup-DL1YTqjF.js";
import "./string-coerce-runtime-CEGJWkQ_.js";
import { t as createPluginRuntimeStore } from "./runtime-store-uAKGMqTs.js";
import "./account-resolution-DBB0e3KP.js";
//#region extensions/line/src/group-keys.ts
function resolveLineGroupLookupIds(groupId) {
const normalized = groupId?.trim();
if (!normalized) return [];
if (normalized.startsWith("group:") || normalized.startsWith("room:")) {
const rawId = normalized.split(":").slice(1).join(":");
return rawId ? [rawId, normalized] : [normalized];
}
return [
normalized,
`group:${normalized}`,
`room:${normalized}`
];
}
function resolveLineGroupConfigEntry(groups, params) {
if (!groups) return;
for (const candidate of resolveLineGroupLookupIds(params.groupId)) {
const hit = groups[candidate];
if (hit) return hit;
}
for (const candidate of resolveLineGroupLookupIds(params.roomId)) {
const hit = groups[candidate];
if (hit) return hit;
}
return groups["*"];
}
function resolveLineGroupsConfig(cfg, accountId) {
const lineConfig = cfg.channels?.line;
if (!lineConfig) return;
const normalizedAccountId = normalizeAccountId(accountId);
return resolveAccountEntry(lineConfig.accounts, normalizedAccountId)?.groups ?? lineConfig.groups;
}
function resolveExactLineGroupConfigKey(params) {
const groups = resolveLineGroupsConfig(params.cfg, params.accountId);
if (!groups) return;
return resolveLineGroupLookupIds(params.groupId).find((candidate) => Object.hasOwn(groups, candidate));
}
//#endregion
//#region extensions/line/src/runtime.ts
const { setRuntime: setLineRuntime, clearRuntime: clearLineRuntime, getRuntime: getLineRuntime } = createPluginRuntimeStore({
pluginId: "line",
errorMessage: "LINE runtime not initialized - plugin not registered"
});
//#endregion
//#region extensions/line/src/quick-reply-fallback.ts
function buildLineQuickReplyFallbackText(labels) {
const normalized = normalizeStringEntries(labels ?? []).slice(0, 13);
if (normalized.length === 0) return "Choose an option.";
return `Options:\n${normalized.map((label) => `- ${label}`).join("\n")}`;
}
//#endregion
export { resolveLineGroupConfigEntry as a, resolveExactLineGroupConfigKey as i, getLineRuntime as n, resolveLineGroupLookupIds as o, setLineRuntime as r, resolveLineGroupsConfig as s, buildLineQuickReplyFallbackText as t };