1use napi::bindgen_prelude::*;
4use napi_derive::napi;
5use std::path::PathBuf;
6
7use openclaw_core::config::Config;
8
9use crate::error::OpenClawError;
10
11#[napi]
15pub fn load_config(path: String) -> Result<String> {
16 let config = Config::load(&PathBuf::from(&path))
17 .map_err(|e| OpenClawError::config_error(format!("Config load error: {e}")))?;
18
19 serde_json::to_string_pretty(&config)
20 .map_err(|e| OpenClawError::config_error(format!("Serialization error: {e}")).into())
21}
22
23#[napi]
27pub fn load_default_config() -> Result<String> {
28 let config = Config::load_default()
29 .map_err(|e| OpenClawError::config_error(format!("Config load error: {e}")))?;
30
31 serde_json::to_string_pretty(&config)
32 .map_err(|e| OpenClawError::config_error(format!("Serialization error: {e}")).into())
33}
34
35#[napi]
39#[must_use]
40pub fn validate_config(path: String) -> String {
41 match Config::load(&PathBuf::from(&path)) {
42 Ok(_) => serde_json::json!({"valid": true, "errors": []}).to_string(),
43 Err(e) => serde_json::json!({"valid": false, "errors": [e.to_string()]}).to_string(),
44 }
45}