项目文件夹

文件
wehub-resource-sync 98e40dac97
CLI Smoke Test / smoke-test-linux (20) (push) Has been cancelled
CLI Smoke Test / smoke-test-linux (24) (push) Has been cancelled
CLI Smoke Test / smoke-test-windows (20) (push) Has been cancelled
CLI Smoke Test / smoke-test-windows (24) (push) Has been cancelled
Expo App TypeScript typecheck / typecheck (push) Has been cancelled
chore: import upstream snapshot with attribution
2026-07-13 12:40:49 +08:00

37 行
1.3 KiB
TypeScript

import type { Session } from './storageTypes';
import type { Settings } from './settings';
import { getAgentDefaultOverride } from './agentDefaults';
import type { PermissionModeKey } from '@/components/PermissionModeSelector';
export type MessageModeMeta = {
permissionMode?: PermissionModeKey;
model?: string | null;
effort?: string | null;
};
export function resolveMessageModeMeta(
session: Pick<Session, 'permissionMode' | 'modelMode' | 'metadata' | 'effortLevel'>,
settings?: Pick<Settings, 'agentDefaultOverrides'>,
): MessageModeMeta {
const agentOverrides = getAgentDefaultOverride(settings?.agentDefaultOverrides, session.metadata?.flavor);
const meta: MessageModeMeta = {};
if (session.permissionMode !== null && session.permissionMode !== undefined) {
meta.permissionMode = session.permissionMode;
} else if (agentOverrides.permissionMode !== undefined) {
meta.permissionMode = agentOverrides.permissionMode;
}
const modelMode = session.modelMode ?? agentOverrides.modelMode;
if (modelMode !== undefined) {
meta.model = modelMode === 'default' ? null : modelMode;
}
const effort = session.effortLevel ?? agentOverrides.effortLevel;
if (effort !== undefined) {
meta.effort = effort;
}
return meta;
}