use std::ffi::{c_char, c_void};
#[repr(C)]
pub struct FfiLuaVmPoolConfig {
pub min_size: usize,
pub max_size: usize,
pub idle_ttl_secs: u64,
}
#[repr(C)]
pub struct FfiToolCacheConfig {
pub max_entries: usize,
pub default_ttl_secs: u64,
pub max_ttl_secs: u64,
}
#[repr(C)]
pub struct FfiBorrowedBuffer {
pub ptr: *const u8,
pub len: usize,
}
#[repr(C)]
pub struct FfiOwnedBuffer {
pub ptr: *mut u8,
pub len: usize,
}
#[repr(C)]
pub struct FfiLuaRuntimeHostOptions {
pub temp_dir: *const c_char,
pub resources_dir: *const c_char,
pub lua_packages_dir: *const c_char,
pub host_provided_tool_root: *const c_char,
pub host_provided_lua_root: *const c_char,
pub host_provided_ffi_root: *const c_char,
pub system_lua_lib_dir: *const c_char,
pub download_cache_root: *const c_char,
pub dependency_dir_name: *const c_char,
pub state_dir_name: *const c_char,
pub database_dir_name: *const c_char,
pub skill_config_file_path: *const c_char,
pub allow_network_download: u8,
pub github_base_url: *const c_char,
pub github_api_base_url: *const c_char,
pub sqlite_library_path: *const c_char,
pub sqlite_provider_mode: i32,
pub sqlite_callback_mode: i32,
pub lancedb_library_path: *const c_char,
pub lancedb_provider_mode: i32,
pub lancedb_callback_mode: i32,
pub space_controller_endpoint: *const c_char,
pub space_controller_auto_spawn: u8,
pub space_controller_executable_path: *const c_char,
pub space_controller_process_mode: i32,
pub cache_config: *const FfiToolCacheConfig,
pub runlua_pool_config: *const FfiLuaVmPoolConfig,
pub reserved_entry_names: *const *const c_char,
pub reserved_entry_names_len: usize,
pub ignored_skill_ids: *const *const c_char,
pub ignored_skill_ids_len: usize,
pub enable_skill_management_bridge: u8,
pub default_text_encoding: *const c_char,
pub disable_managed_io_compat: u8,
}
pub type FfiJsonProviderCallback = unsafe extern "C" fn(
request_json: FfiBorrowedBuffer,
user_data: *mut c_void,
response_out: *mut FfiOwnedBuffer,
error_out: *mut FfiOwnedBuffer,
) -> i32;
pub type FfiSqliteProviderCallback = unsafe extern "C" fn(
request: *const FfiSqliteProviderRequest,
user_data: *mut c_void,
response_json_out: *mut FfiOwnedBuffer,
error_out: *mut FfiOwnedBuffer,
) -> i32;
pub type FfiLanceDbProviderCallback = unsafe extern "C" fn(
request: *const FfiLanceDbProviderRequest,
user_data: *mut c_void,
meta_json_out: *mut FfiOwnedBuffer,
data_out: *mut FfiOwnedBuffer,
error_out: *mut FfiOwnedBuffer,
) -> i32;
#[repr(C)]
pub struct FfiLuaEngineOptions {
pub pool: FfiLuaVmPoolConfig,
pub host: FfiLuaRuntimeHostOptions,
}
#[repr(C)]
pub struct FfiRuntimeSkillRoot {
pub name: *const c_char,
pub skills_dir: *const c_char,
}
#[repr(C)]
pub struct FfiLuaInvocationContext {
pub request_context_json: FfiBorrowedBuffer,
pub client_budget_json: FfiBorrowedBuffer,
pub tool_config_json: FfiBorrowedBuffer,
}
#[repr(C)]
pub struct FfiSkillInstallRequest {
pub skill_id: *const c_char,
pub source: *const c_char,
pub source_type: i32,
}
#[repr(C)]
pub struct FfiSkillUninstallOptions {
pub remove_sqlite: u8,
pub remove_lancedb: u8,
}
#[repr(C)]
pub struct FfiRuntimeDatabaseBindingContext {
pub space_label: *const c_char,
pub skill_id: *const c_char,
pub binding_tag: *const c_char,
pub root_name: *const c_char,
pub space_root: *const c_char,
pub skill_dir: *const c_char,
pub skill_dir_name: *const c_char,
pub database_kind: i32,
pub default_database_path: *const c_char,
}
#[repr(C)]
pub struct FfiSqliteProviderRequest {
pub action: i32,
pub binding: FfiRuntimeDatabaseBindingContext,
pub input_json: FfiBorrowedBuffer,
}
#[repr(C)]
pub struct FfiLanceDbProviderRequest {
pub action: i32,
pub binding: FfiRuntimeDatabaseBindingContext,
pub input_json: FfiBorrowedBuffer,
}
#[repr(C)]
pub struct FfiStringArray {
pub items: *mut FfiOwnedBuffer,
pub len: usize,
}
#[repr(C)]
pub struct FfiRuntimeEntryParameterDescriptor {
pub name: FfiOwnedBuffer,
pub param_type: FfiOwnedBuffer,
pub description: FfiOwnedBuffer,
pub required: u8,
}
#[repr(C)]
pub struct FfiRuntimeEntryDescriptor {
pub canonical_name: FfiOwnedBuffer,
pub skill_id: FfiOwnedBuffer,
pub local_name: FfiOwnedBuffer,
pub root_name: FfiOwnedBuffer,
pub skill_dir: FfiOwnedBuffer,
pub description: FfiOwnedBuffer,
pub parameters: *mut FfiRuntimeEntryParameterDescriptor,
pub parameters_len: usize,
}
#[repr(C)]
pub struct FfiRuntimeEntryDescriptorList {
pub items: *mut FfiRuntimeEntryDescriptor,
pub len: usize,
}
#[repr(C)]
pub struct FfiRuntimeHelpNodeDescriptor {
pub flow_name: FfiOwnedBuffer,
pub description: FfiOwnedBuffer,
pub related_entries: *mut FfiOwnedBuffer,
pub related_entries_len: usize,
pub is_main: u8,
}
#[repr(C)]
pub struct FfiRuntimeSkillHelpDescriptor {
pub skill_id: FfiOwnedBuffer,
pub skill_name: FfiOwnedBuffer,
pub skill_version: FfiOwnedBuffer,
pub root_name: FfiOwnedBuffer,
pub skill_dir: FfiOwnedBuffer,
pub main: FfiRuntimeHelpNodeDescriptor,
pub flows: *mut FfiRuntimeHelpNodeDescriptor,
pub flows_len: usize,
}
#[repr(C)]
pub struct FfiRuntimeSkillHelpDescriptorList {
pub items: *mut FfiRuntimeSkillHelpDescriptor,
pub len: usize,
}
#[repr(C)]
pub struct FfiRuntimeHelpDetail {
pub skill_id: FfiOwnedBuffer,
pub skill_name: FfiOwnedBuffer,
pub skill_version: FfiOwnedBuffer,
pub root_name: FfiOwnedBuffer,
pub skill_dir: FfiOwnedBuffer,
pub flow_name: FfiOwnedBuffer,
pub description: FfiOwnedBuffer,
pub related_entries: *mut FfiOwnedBuffer,
pub related_entries_len: usize,
pub is_main: u8,
pub content_type: FfiOwnedBuffer,
pub content: FfiOwnedBuffer,
}
#[repr(C)]
pub struct FfiRuntimeHostResult {
pub kind: FfiOwnedBuffer,
pub payload_json: FfiOwnedBuffer,
pub payload_bytes: usize,
}
#[repr(C)]
pub struct FfiRuntimeInvocationResult {
pub content: FfiOwnedBuffer,
pub overflow_mode: i32,
pub template_hint: FfiOwnedBuffer,
pub content_bytes: usize,
pub content_lines: usize,
pub host_result: *mut FfiRuntimeHostResult,
}
#[repr(C)]
pub struct FfiSkillApplyResult {
pub skill_id: FfiOwnedBuffer,
pub status: FfiOwnedBuffer,
pub message: FfiOwnedBuffer,
pub version: FfiOwnedBuffer,
pub source_type: i32,
pub source_locator: FfiOwnedBuffer,
}
#[repr(C)]
pub struct FfiSkillUninstallResult {
pub skill_id: FfiOwnedBuffer,
pub skill_removed: u8,
pub sqlite_removed: u8,
pub lancedb_removed: u8,
pub sqlite_retained: u8,
pub lancedb_retained: u8,
pub message: FfiOwnedBuffer,
}