import type { AgentBinding, AgentsConfig } from "./types.agents.js"; import type { AuthConfig } from "./types.auth.js"; import type { LoggingConfig, SessionConfig, WebConfig } from "./types.base.js"; import type { BrowserConfig } from "./types.browser.js"; import type { ChannelsConfig } from "./types.channels.js"; import type { CronConfig } from "./types.cron.js"; import type { BridgeConfig, CanvasHostConfig, DiscoveryConfig, GatewayConfig, TalkConfig, } from "./types.gateway.js"; import type { HooksConfig } from "./types.hooks.js"; import type { AudioConfig, BroadcastConfig, CommandsConfig, MessagesConfig, } from "./types.messages.js"; import type { ModelsConfig } from "./types.models.js"; import type { PluginsConfig } from "./types.plugins.js"; import type { SkillsConfig } from "./types.skills.js"; import type { ToolsConfig } from "./types.tools.js"; export type ClawdbotConfig = { auth?: AuthConfig; env?: { /** Opt-in: import missing secrets from a login shell environment (exec `$SHELL -l -c 'env -0'`). */ shellEnv?: { enabled?: boolean; /** Timeout for the login shell exec (ms). Default: 15000. */ timeoutMs?: number; }; /** Inline env vars to apply when not already present in the process env. */ vars?: Record; /** Sugar: allow env vars directly under env (string values only). */ [key: string]: | string | Record | { enabled?: boolean; timeoutMs?: number } | undefined; }; wizard?: { lastRunAt?: string; lastRunVersion?: string; lastRunCommit?: string; lastRunCommand?: string; lastRunMode?: "local" | "remote"; }; logging?: LoggingConfig; browser?: BrowserConfig; ui?: { /** Accent color for Clawdbot UI chrome (hex). */ seamColor?: string; }; skills?: SkillsConfig; plugins?: PluginsConfig; models?: ModelsConfig; agents?: AgentsConfig; tools?: ToolsConfig; bindings?: AgentBinding[]; broadcast?: BroadcastConfig; audio?: AudioConfig; messages?: MessagesConfig; commands?: CommandsConfig; session?: SessionConfig; web?: WebConfig; channels?: ChannelsConfig; cron?: CronConfig; hooks?: HooksConfig; bridge?: BridgeConfig; discovery?: DiscoveryConfig; canvasHost?: CanvasHostConfig; talk?: TalkConfig; gateway?: GatewayConfig; }; export type ConfigValidationIssue = { path: string; message: string; }; export type LegacyConfigIssue = { path: string; message: string; }; export type ConfigFileSnapshot = { path: string; exists: boolean; raw: string | null; parsed: unknown; valid: boolean; config: ClawdbotConfig; hash?: string; issues: ConfigValidationIssue[]; legacyIssues: LegacyConfigIssue[]; };