Files
openclaw/src/plugins/session-catalog-active.ts
T
Peter Steinberger 7e8afba703 feat(plugins): mirror local coding sessions to a remote Beam receiver (#114735)
* feat(plugins): mirror local coding sessions to a remote Beam receiver

* fix(plugins): satisfy static gates for the Beam mirror seam

* fix(plugins): import the config type from the narrow contracts subpath

* fix(plugins): require catalog consent and loopback-only plaintext for the Beam mirror
2026-07-27 17:31:34 -04:00

29 lines
996 B
TypeScript

import { getActivePluginSessionExtensionRegistry } from "./runtime.js";
import type { SessionCatalogProvider } from "./session-catalog.js";
export type ActiveSessionCatalog = {
pluginId: string;
id: string;
label: string;
list: SessionCatalogProvider["list"];
read: SessionCatalogProvider["read"];
};
/**
* Read-only list/read facade over the active registered session catalogs.
* Deliberately excludes continue/archive/terminal so consumers cannot gain
* session control through this seam; mutation stays on the gateway RPCs.
*/
export function listActiveSessionCatalogs(): ActiveSessionCatalog[] {
const registrations = getActivePluginSessionExtensionRegistry()?.sessionCatalogs ?? [];
return registrations
.map(({ pluginId, provider }) => ({
pluginId,
id: provider.id,
label: provider.label,
list: provider.list.bind(provider),
read: provider.read.bind(provider),
}))
.toSorted((left, right) => left.id.localeCompare(right.id));
}