mirror of
https://github.com/openclaw/openclaw.git
synced 2026-04-13 02:01:16 +00:00
80 lines
2.7 KiB
TypeScript
80 lines
2.7 KiB
TypeScript
import type { ContextVisibilityMode, GroupPolicy } from "./types.base.js";
|
|
|
|
export type ChannelHeartbeatVisibilityConfig = {
|
|
/** Show HEARTBEAT_OK acknowledgments in chat (default: false). */
|
|
showOk?: boolean;
|
|
/** Show heartbeat alerts with actual content (default: true). */
|
|
showAlerts?: boolean;
|
|
/** Emit indicator events for UI status display (default: true). */
|
|
useIndicator?: boolean;
|
|
};
|
|
|
|
export type ChannelHealthMonitorConfig = {
|
|
/**
|
|
* Enable channel-health-monitor restarts for this channel or account.
|
|
* Inherits the global gateway setting when omitted.
|
|
*/
|
|
enabled?: boolean;
|
|
};
|
|
|
|
export type ChannelDefaultsConfig = {
|
|
groupPolicy?: GroupPolicy;
|
|
contextVisibility?: ContextVisibilityMode;
|
|
/** Default heartbeat visibility for all channels. */
|
|
heartbeat?: ChannelHeartbeatVisibilityConfig;
|
|
};
|
|
|
|
export type ChannelModelByChannelConfig = Record<string, Record<string, string>>;
|
|
|
|
export type ExtensionNestedPolicyConfig = {
|
|
policy?: string;
|
|
allowFrom?: Array<string | number> | ReadonlyArray<string | number>;
|
|
[key: string]: unknown;
|
|
};
|
|
|
|
/**
|
|
* Base type for extension channel config sections.
|
|
* Extensions can use this as a starting point for their channel config.
|
|
*/
|
|
export type ExtensionChannelConfig = {
|
|
enabled?: boolean;
|
|
allowFrom?: Array<string | number> | ReadonlyArray<string | number>;
|
|
/** Default delivery target for CLI --deliver when no explicit --reply-to is provided. */
|
|
defaultTo?: string | number;
|
|
/** Optional default account id when multiple accounts are configured. */
|
|
defaultAccount?: string;
|
|
dmPolicy?: string;
|
|
groupPolicy?: GroupPolicy;
|
|
contextVisibility?: ContextVisibilityMode;
|
|
healthMonitor?: ChannelHealthMonitorConfig;
|
|
dm?: ExtensionNestedPolicyConfig;
|
|
network?: Record<string, unknown>;
|
|
groups?: Record<string, unknown>;
|
|
rooms?: Record<string, unknown>;
|
|
mediaMaxMb?: number;
|
|
callbackBaseUrl?: string;
|
|
interactions?: { callbackBaseUrl?: string; [key: string]: unknown };
|
|
execApprovals?: Record<string, unknown>;
|
|
threadBindings?: {
|
|
enabled?: boolean;
|
|
spawnAcpSessions?: boolean;
|
|
spawnSubagentSessions?: boolean;
|
|
};
|
|
spawnSubagentSessions?: boolean;
|
|
dangerouslyAllowPrivateNetwork?: boolean;
|
|
accounts?: Record<string, unknown>;
|
|
[key: string]: unknown;
|
|
};
|
|
|
|
export interface ChannelsConfig {
|
|
defaults?: ChannelDefaultsConfig;
|
|
/** Map provider -> channel id -> model override. */
|
|
modelByChannel?: ChannelModelByChannelConfig;
|
|
/**
|
|
* Channel sections are plugin-owned and keyed by arbitrary channel ids.
|
|
* Keep the lookup permissive so augmented channel configs remain ergonomic at call sites.
|
|
*/
|
|
// eslint-disable-next-line @typescript-eslint/no-explicit-any
|
|
[key: string]: any;
|
|
}
|