import type { ChannelOnboardingAdapter } from "./onboarding-types.js"; import type { ChannelAuthAdapter, ChannelCommandAdapter, ChannelConfigAdapter, ChannelDirectoryAdapter, ChannelResolverAdapter, ChannelElevatedAdapter, ChannelGatewayAdapter, ChannelGroupAdapter, ChannelHeartbeatAdapter, ChannelOutboundAdapter, ChannelPairingAdapter, ChannelSecurityAdapter, ChannelSetupAdapter, ChannelStatusAdapter, } from "./types.adapters.js"; import type { ChannelAgentTool, ChannelAgentToolFactory, ChannelCapabilities, ChannelId, ChannelAgentPromptAdapter, ChannelMentionAdapter, ChannelMessageActionAdapter, ChannelMessagingAdapter, ChannelMeta, ChannelStreamingAdapter, ChannelThreadingAdapter, } from "./types.core.js"; // Channel docking: implement this contract in src/channels/plugins/.ts. export type ChannelConfigUiHint = { label?: string; help?: string; tags?: string[]; advanced?: boolean; sensitive?: boolean; placeholder?: string; itemTemplate?: unknown; }; export type ChannelConfigSchema = { schema: Record; uiHints?: Record; }; // oxlint-disable-next-line typescript/no-explicit-any export type ChannelPlugin = { id: ChannelId; meta: ChannelMeta; capabilities: ChannelCapabilities; defaults?: { queue?: { debounceMs?: number; }; }; reload?: { configPrefixes: string[]; noopPrefixes?: string[] }; // CLI onboarding wizard hooks for this channel. onboarding?: ChannelOnboardingAdapter; config: ChannelConfigAdapter; configSchema?: ChannelConfigSchema; setup?: ChannelSetupAdapter; pairing?: ChannelPairingAdapter; security?: ChannelSecurityAdapter; groups?: ChannelGroupAdapter; mentions?: ChannelMentionAdapter; outbound?: ChannelOutboundAdapter; status?: ChannelStatusAdapter; gatewayMethods?: string[]; gateway?: ChannelGatewayAdapter; auth?: ChannelAuthAdapter; elevated?: ChannelElevatedAdapter; commands?: ChannelCommandAdapter; streaming?: ChannelStreamingAdapter; threading?: ChannelThreadingAdapter; messaging?: ChannelMessagingAdapter; agentPrompt?: ChannelAgentPromptAdapter; directory?: ChannelDirectoryAdapter; resolver?: ChannelResolverAdapter; actions?: ChannelMessageActionAdapter; heartbeat?: ChannelHeartbeatAdapter; // Channel-owned agent tools (login flows, etc.). agentTools?: ChannelAgentToolFactory | ChannelAgentTool[]; };