chunk-your-tools 2.0.3

MCP tool schema decomposition and recomposition
Documentation
//! Runtime configuration FFI exports.

use crate::ffi::error::{CHUNK_YOUR_TOOLS_ERR_NULL_PTR, clear_error, set_error};
use crate::ffi::json_util::{c_str_to_str, run_ffi, write_string_result};
use crate::runtime_config::{self, RuntimeConfig};
use std::os::raw::{c_char, c_int};

#[unsafe(no_mangle)]
pub unsafe extern "C" fn chunk_your_tools_configure_runtime_defaults(
    decomposed_score: f64,
    enum_score: f64,
    rerank_score: f64,
    empty_optional_fallback_k: usize,
    default_system_policy: *const c_char,
    default_mcp_policy: *const c_char,
) -> c_int {
    run_ffi(|| {
        runtime_config::configure(RuntimeConfig {
            decomposed_score,
            enum_score,
            rerank_score,
            empty_optional_fallback_k,
            default_system_policy: unsafe {
                c_str_to_str(default_system_policy, "default_system_policy")?
            }
            .to_string(),
            default_mcp_policy: unsafe { c_str_to_str(default_mcp_policy, "default_mcp_policy")? }
                .to_string(),
        });
        clear_error();
        Ok(())
    })
}

#[unsafe(no_mangle)]
pub unsafe extern "C" fn chunk_your_tools_runtime_decomposed_score() -> f64 {
    runtime_config::decomposed_score()
}

#[unsafe(no_mangle)]
pub unsafe extern "C" fn chunk_your_tools_runtime_enum_score() -> f64 {
    runtime_config::enum_score()
}

#[unsafe(no_mangle)]
pub unsafe extern "C" fn chunk_your_tools_runtime_rerank_score() -> f64 {
    runtime_config::rerank_score()
}

#[unsafe(no_mangle)]
pub unsafe extern "C" fn chunk_your_tools_runtime_empty_optional_fallback_k() -> usize {
    runtime_config::empty_optional_fallback_k()
}

#[unsafe(no_mangle)]
pub unsafe extern "C" fn chunk_your_tools_runtime_default_system_policy(
    out: *mut *mut c_char,
) -> c_int {
    run_ffi(|| {
        if out.is_null() {
            set_error("null pointer: out");
            return Err(CHUNK_YOUR_TOOLS_ERR_NULL_PTR);
        }
        unsafe {
            write_string_result(&runtime_config::default_system_policy(), out)?;
        }
        Ok(())
    })
}

#[unsafe(no_mangle)]
pub unsafe extern "C" fn chunk_your_tools_runtime_default_mcp_policy(
    out: *mut *mut c_char,
) -> c_int {
    run_ffi(|| {
        if out.is_null() {
            set_error("null pointer: out");
            return Err(CHUNK_YOUR_TOOLS_ERR_NULL_PTR);
        }
        unsafe {
            write_string_result(&runtime_config::default_mcp_policy(), out)?;
        }
        Ok(())
    })
}