import { CURSOR_EXECUTOR_CHANNEL, isChannelAllowedByCursorPolicy, isCursorFeatureEnabled, isIntentAllowedByWechatCursorPolicy, isUserAllowedByWechatCursorPolicy, } from './wechat-cursor-executor-admin-config.mjs'; import { CURSOR_CHANNEL_FEATURES } from './cursor-channel-features.mjs'; export { CURSOR_EXECUTOR_CHANNEL, CURSOR_CHANNEL_FEATURES }; export function resolveCursorChannelEligible({ user = null, userId = null, channel = '', intentKind = '', policy = null, } = {}) { if (!policy?.enabled) return false; const subject = user ?? { userId }; if (!isUserAllowedByWechatCursorPolicy(subject, policy)) return false; if (!isChannelAllowedByCursorPolicy(channel, policy)) return false; const normalizedChannel = String(channel ?? '').trim().toLowerCase(); if (normalizedChannel === CURSOR_EXECUTOR_CHANNEL.WECHAT_MP) { if (!isIntentAllowedByWechatCursorPolicy(intentKind, policy)) return false; } return true; } export function resolveCursorChatBridgeEligible({ user = null, userId = null, policy = null, env = process.env, } = {}) { if (!policy?.enabled) return false; const subject = user ?? { userId }; if (!isUserAllowedByWechatCursorPolicy(subject, policy)) return false; if (!isCursorFeatureEnabled(policy, CURSOR_CHANNEL_FEATURES.CHAT_BRIDGE)) return false; const bridgeEnvEnabled = String(env?.MEMIND_CURSOR_CHAT_BRIDGE_ENABLED ?? '').trim(); if (!['1', 'true', 'yes', 'on'].includes(bridgeEnvEnabled.toLowerCase())) return false; return true; } export function resolveCursorScheduledTaskEligible({ user = null, userId = null, policy = null, } = {}) { if (!policy?.enabled) return false; const subject = user ?? { userId }; if (!isUserAllowedByWechatCursorPolicy(subject, policy)) return false; return isCursorFeatureEnabled(policy, CURSOR_CHANNEL_FEATURES.SCHEDULED_TASKS); } export function resolveWechatCursorExecutorEligible({ user = null, userId = null, intentKind = '', policy = null, } = {}) { return resolveCursorChannelEligible({ user, userId, channel: CURSOR_EXECUTOR_CHANNEL.WECHAT_MP, intentKind, policy, }); }