/** * @module channels/dock * * Channel "docking" layer that provides per-channel capabilities, adapters, * and config resolvers without importing heavy plugin implementations. * Shared code (reply flow, command auth, sandbox explain) should depend on * this module rather than `channels/plugins/*` to avoid eager loading. * * Key export: {@link ChannelDock} type and the dock lookup functions */ import type { SKYKOIConfig } from "../config/config.js"; import type { ChannelCapabilities, ChannelCommandAdapter, ChannelElevatedAdapter, ChannelGroupAdapter, ChannelId, ChannelKoiPromptAdapter, ChannelMentionAdapter, ChannelThreadingAdapter } from "./plugins/types.js"; export type ChannelDock = { id: ChannelId; capabilities: ChannelCapabilities; commands?: ChannelCommandAdapter; outbound?: { textChunkLimit?: number; }; streaming?: ChannelDockStreaming; elevated?: ChannelElevatedAdapter; config?: { resolveAllowFrom?: (params: { cfg: SKYKOIConfig; accountId?: string | null; }) => Array | undefined; formatAllowFrom?: (params: { cfg: SKYKOIConfig; accountId?: string | null; allowFrom: Array; }) => string[]; }; groups?: ChannelGroupAdapter; mentions?: ChannelMentionAdapter; threading?: ChannelThreadingAdapter; koiPrompt?: ChannelKoiPromptAdapter; }; type ChannelDockStreaming = { blockStreamingCoalesceDefaults?: { minChars?: number; idleMs?: number; }; }; export declare function listChannelDocks(): ChannelDock[]; export declare function getChannelDock(id: ChannelId): ChannelDock | undefined; export {};