import type { ChannelCapabilities, ChannelId, ChannelOutboundAdapter, ChannelPlugin, } from "../channels/plugins/types.js"; import type { PluginRegistry } from "../plugins/registry.js"; type TestChannelRegistration = { pluginId: string; plugin: unknown; source: string; }; export const createTestRegistry = (channels: TestChannelRegistration[] = []): PluginRegistry => ({ plugins: [], tools: [], hooks: [], typedHooks: [], channels: channels as unknown as PluginRegistry["channels"], providers: [], gatewayHandlers: {}, httpHandlers: [], httpRoutes: [], cliRegistrars: [], services: [], commands: [], diagnostics: [], }); export const createChannelTestPluginBase = (params: { id: ChannelId; label?: string; docsPath?: string; capabilities?: ChannelCapabilities; config?: Partial; }): Pick => ({ id: params.id, meta: { id: params.id, label: params.label ?? String(params.id), selectionLabel: params.label ?? String(params.id), docsPath: params.docsPath ?? `/channels/${params.id}`, blurb: "test stub.", }, capabilities: params.capabilities ?? { chatTypes: ["direct"] }, config: { listAccountIds: () => ["default"], resolveAccount: () => ({}), ...params.config, }, }); export const createOutboundTestPlugin = (params: { id: ChannelId; outbound: ChannelOutboundAdapter; label?: string; docsPath?: string; capabilities?: ChannelCapabilities; }): ChannelPlugin => ({ ...createChannelTestPluginBase({ id: params.id, label: params.label, docsPath: params.docsPath, capabilities: params.capabilities, config: { listAccountIds: () => [] }, }), outbound: params.outbound, });