import type { OpenClawConfig } from "../config/types.js"; import type { PluginSlotsConfig } from "../config/types.plugins.js"; import type { PluginKind } from "./plugin-kind.types.js";
export type PluginSlotKey = keyof PluginSlotsConfig;
/** Normalize a kind field to an array for uniform iteration. */
export function normalizeKinds(kind?: PluginKind | PluginKind[]): PluginKind[] { if (!kind) { return [];
} return Array.isArray(kind) ? kind : [kind];
}
/** Check whether a plugin's kind field includes a specific kind. */
export function hasKind(kind: PluginKind | PluginKind[] | undefined, target: PluginKind): boolean { if (!kind) { returnfalse;
} return Array.isArray(kind) ? kind.includes(target) : kind === target;
}
/** Order-insensitive equality check for two kind values (string or array). */
export function kindsEqual(
a: PluginKind | PluginKind[] | undefined,
b: PluginKind | PluginKind[] | undefined,
): boolean { const aN = normalizeKinds(a).toSorted(); const bN = normalizeKinds(b).toSorted(); return aN.length === bN.length && aN.every((k, i) => k === bN[i]);
}
/** Return all slot keys that a plugin's kind field maps to. */
export function slotKeysForPluginKind(kind?: PluginKind | PluginKind[]): PluginSlotKey[] { return normalizeKinds(kind)
.map((k) => SLOT_BY_KIND[k])
.filter((k): k is PluginSlotKey => k != null);
}
export function defaultSlotIdForKey(slotKey: PluginSlotKey): string { return DEFAULT_SLOT_BY_KEY[slotKey];
}
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.