import { inArray } from "drizzle-orm"; import { db } from "@/lib/db"; import { systemSettings } from "@/lib/db/schema"; import { CANVAS_AGENT_FEATURE_SETTING_KEYS, type CanvasAgentFeatureFlags, type CanvasAgentFeatureSettingsLike, getCanvasAgentFeatureFlags, } from "@/lib/canvas/agent-feature-flags"; type EnvLike = Record; export async function readCanvasAgentFeatureSettings(): Promise { const rows = await db .select({ key: systemSettings.key, value: systemSettings.value }) .from(systemSettings) .where(inArray(systemSettings.key, [...CANVAS_AGENT_FEATURE_SETTING_KEYS])); const settings: CanvasAgentFeatureSettingsLike = {}; rows.forEach((row) => { if ( CANVAS_AGENT_FEATURE_SETTING_KEYS.includes( row.key as (typeof CANVAS_AGENT_FEATURE_SETTING_KEYS)[number] ) ) { settings[row.key as keyof CanvasAgentFeatureSettingsLike] = row.value; } }); return settings; } export async function getCanvasAgentFeatureFlagsFromSystemSettings( env: EnvLike = process.env ): Promise { try { return getCanvasAgentFeatureFlags(env, await readCanvasAgentFeatureSettings()); } catch (error) { console.warn( "[CanvasAgentFeatureFlags] Failed to read SystemSettings, using env fallback:", error ); return getCanvasAgentFeatureFlags(env); } }