//! 应用设置 KV API — IPC invoke 封装(localStorage → SQLite 迁移目标) //! //! 后端 4 个 command 读写 `app_settings` 表,value 在 SQLite 里永远是 JSON 字符串。 //! 本层只做透传(不解析 JSON),JSON.parse / JSON.stringify 由 store 层负责。 import { invoke } from '@tauri-apps/api/core' export const settingsApi = { /** 取单个 key 的原始值(JSON 字符串),不存在返回 null */ get(key: string): Promise { return invoke('settings_get', { key }) }, /** 写 key/value(`INSERT OR REPLACE`),成功返回 true */ set(key: string, value: string): Promise { return invoke('settings_set', { key, value }) }, /** 获取 DevFlow 数据目录路径(运行期确定,跨平台) */ getDataDir(): Promise { return invoke('get_data_dir') }, /** 获取应用版本信息(编译期注入:version/build_time/git_hash) */ getVersion(): Promise<{ version: string; build_time: string; git_hash: string }> { return invoke<{ version: string; build_time: string; git_hash: string }>('app_get_version') }, /** B2 检查更新:拉远端 latest.json,返回是否有新版(网络失败抛错,不谎报已是最新) */ checkUpdate(): Promise<{ has_update: boolean version: string | null notes: string | null date: string | null current_version: string }> { return invoke('app_check_update') }, /** B2 读自动检查偏好 */ getUpdatePrefs(): Promise<{ auto_check: boolean interval_minutes: number last_check: string notified_version: string }> { return invoke('app_update_get_prefs') }, /** B2 写自动检查偏好 */ setUpdatePrefs(autoCheck: boolean, intervalMinutes: number): Promise { return invoke('app_update_set_prefs', { autoCheck, intervalMinutes }) }, /** B2 记录一次检查时间戳(节流用) */ markUpdateChecked(timestamp: string): Promise { return invoke('app_update_mark_checked', { timestamp }) }, /** B2 记录已提示版本号(同版本只提示一次) */ markUpdateNotified(version: string): Promise { return invoke('app_update_mark_notified', { version }) }, /** B3 下载并安装更新(进度经 app-update-progress 事件流;成功即自动重启) */ downloadAndInstallUpdate(): Promise { return invoke('app_download_install_update') }, /** 取全部 key/value(启动时一次性拉回恢复偏好) */ getAll(): Promise> { return invoke>('settings_get_all') }, /** 删除单个 key,成功返回 true */ delete(key: string): Promise { return invoke('settings_delete', { key }) }, /** 设置多 ReAct Plan 执行开关 */ setPlanExecution(enabled: boolean): Promise { return invoke('set_plan_execution', { enabled }) }, /** 读取多 ReAct Plan 执行开关 */ getPlanExecution(): Promise { return invoke('is_plan_execution_enabled') }, }