Spaces:
Running
Running
| import { type ChannelId, getChannelPlugin } from "../../channels/plugins/index.js"; | |
| import { formatCliCommand } from "../../cli/command-format.js"; | |
| import { type OpenClawConfig, readConfigFileSnapshot } from "../../config/config.js"; | |
| import { DEFAULT_ACCOUNT_ID } from "../../routing/session-key.js"; | |
| import { defaultRuntime, type RuntimeEnv } from "../../runtime.js"; | |
| export type ChatChannel = ChannelId; | |
| export async function requireValidConfig( | |
| runtime: RuntimeEnv = defaultRuntime, | |
| ): Promise<OpenClawConfig | null> { | |
| const snapshot = await readConfigFileSnapshot(); | |
| if (snapshot.exists && !snapshot.valid) { | |
| const issues = | |
| snapshot.issues.length > 0 | |
| ? snapshot.issues.map((issue) => `- ${issue.path}: ${issue.message}`).join("\n") | |
| : "Unknown validation issue."; | |
| runtime.error(`Config invalid:\n${issues}`); | |
| runtime.error(`Fix the config or run ${formatCliCommand("openclaw doctor")}.`); | |
| runtime.exit(1); | |
| return null; | |
| } | |
| return snapshot.config; | |
| } | |
| export function formatAccountLabel(params: { accountId: string; name?: string }) { | |
| const base = params.accountId || DEFAULT_ACCOUNT_ID; | |
| if (params.name?.trim()) { | |
| return `${base} (${params.name.trim()})`; | |
| } | |
| return base; | |
| } | |
| export const channelLabel = (channel: ChatChannel) => { | |
| const plugin = getChannelPlugin(channel); | |
| return plugin?.meta.label ?? channel; | |
| }; | |
| export function formatChannelAccountLabel(params: { | |
| channel: ChatChannel; | |
| accountId: string; | |
| name?: string; | |
| channelStyle?: (value: string) => string; | |
| accountStyle?: (value: string) => string; | |
| }): string { | |
| const channelText = channelLabel(params.channel); | |
| const accountText = formatAccountLabel({ | |
| accountId: params.accountId, | |
| name: params.name, | |
| }); | |
| const styledChannel = params.channelStyle ? params.channelStyle(channelText) : channelText; | |
| const styledAccount = params.accountStyle ? params.accountStyle(accountText) : accountText; | |
| return `${styledChannel} ${styledAccount}`; | |
| } | |
| export function shouldUseWizard(params?: { hasFlags?: boolean }) { | |
| return params?.hasFlags === false; | |
| } | |