Files
moltbot/src/plugins/plugin-scope.ts
Vincent Koc 6a189eec0b fix(plugins): centralize explicit plugin scope handling (#65298)
* fix(plugins): centralize explicit plugin scope handling

* fix(plugins): preserve explicit empty web scopes

* fix(plugins): preserve runtime web provider scopes without config

* fix(plugins): preserve web provider runtime filtering

* fix(plugins): preserve scoped web runtime fallback

* fix(plugins): harden plugin scope normalization
2026-04-12 16:16:37 +01:00

35 lines
937 B
TypeScript

export type PluginIdScope = readonly string[] | undefined;
export function normalizePluginIdScope(ids?: readonly unknown[]): string[] | undefined {
if (ids === undefined) {
return undefined;
}
return Array.from(
new Set(
ids
.filter((id): id is string => typeof id === "string")
.map((id) => id.trim())
.filter(Boolean),
),
).toSorted();
}
export function hasExplicitPluginIdScope(ids?: readonly string[]): boolean {
return ids !== undefined;
}
export function hasNonEmptyPluginIdScope(ids?: readonly string[]): boolean {
return ids !== undefined && ids.length > 0;
}
export function createPluginIdScopeSet(ids?: readonly string[]): ReadonlySet<string> | null {
if (ids === undefined) {
return null;
}
return new Set(ids);
}
export function serializePluginIdScope(ids?: readonly string[]): string {
return ids === undefined ? "__unscoped__" : JSON.stringify(ids);
}