mirror of
https://github.com/openclaw/openclaw.git
synced 2026-04-22 14:41:34 +00:00
46 lines
1.4 KiB
TypeScript
46 lines
1.4 KiB
TypeScript
import { resolveAccountEntry } from "../routing/account-lookup.js";
|
|
import { normalizeAccountId } from "../routing/session-key.js";
|
|
import type { OpenClawConfig } from "./config.js";
|
|
import type { ContextVisibilityMode } from "./types.base.js";
|
|
|
|
type ChannelContextVisibilityConfig = {
|
|
contextVisibility?: ContextVisibilityMode;
|
|
accounts?: Record<string, { contextVisibility?: ContextVisibilityMode }>;
|
|
};
|
|
|
|
export type ContextVisibilityDefaultsConfig = {
|
|
channels?: {
|
|
defaults?: {
|
|
contextVisibility?: ContextVisibilityMode;
|
|
};
|
|
};
|
|
};
|
|
|
|
export function resolveDefaultContextVisibility(
|
|
cfg: ContextVisibilityDefaultsConfig,
|
|
): ContextVisibilityMode | undefined {
|
|
return cfg.channels?.defaults?.contextVisibility;
|
|
}
|
|
|
|
export function resolveChannelContextVisibilityMode(params: {
|
|
cfg: OpenClawConfig;
|
|
channel: string;
|
|
accountId?: string | null;
|
|
configuredContextVisibility?: ContextVisibilityMode;
|
|
}): ContextVisibilityMode {
|
|
if (params.configuredContextVisibility) {
|
|
return params.configuredContextVisibility;
|
|
}
|
|
const channelConfig = params.cfg.channels?.[params.channel] as
|
|
| ChannelContextVisibilityConfig
|
|
| undefined;
|
|
const accountId = normalizeAccountId(params.accountId);
|
|
const accountMode = resolveAccountEntry(channelConfig?.accounts, accountId)?.contextVisibility;
|
|
return (
|
|
accountMode ??
|
|
channelConfig?.contextVisibility ??
|
|
resolveDefaultContextVisibility(params.cfg) ??
|
|
"all"
|
|
);
|
|
}
|