use rmcp::schemars::JsonSchema;
use serde::{Deserialize, Serialize};
#[derive(Debug, Deserialize, Serialize, JsonSchema)]
pub struct StoreMemoryParams {
#[schemars(
description = "The information to remember. Write as a clear, self-contained fact."
)]
pub text: String,
#[schemars(
description = "Optional structured labels like {\"topic\": \"auth\", \"type\": \"decision\"}."
)]
pub metadata: Option<serde_json::Value>,
}
#[derive(Debug, Deserialize, Serialize, JsonSchema)]
pub struct SearchMemoriesParams {
#[schemars(description = "What to look for in natural language.")]
pub query: String,
#[schemars(description = "Maximum number of results to return (default: 5).")]
pub limit: Option<usize>,
#[schemars(description = "Filter by memory types (e.g., fact, preference, procedure).")]
pub memory_types: Option<Vec<String>>,
#[schemars(description = "Filter by statuses (e.g., active, candidate).")]
pub statuses: Option<Vec<String>>,
}
#[derive(Debug, Deserialize, Serialize, JsonSchema)]
pub struct ListMemoriesParams {
#[schemars(description = "Maximum number of memories to list (default: 10).")]
pub limit: Option<usize>,
#[schemars(description = "Filter by memory types (e.g., fact, preference, procedure).")]
pub memory_types: Option<Vec<String>>,
#[schemars(description = "Filter by statuses (e.g., active, candidate).")]
pub statuses: Option<Vec<String>>,
}
#[derive(Debug, Serialize)]
pub struct SuccessResponse {
pub id: String,
pub status: String,
}
#[derive(Debug, Serialize)]
pub struct ConflictMemory {
pub id: String,
pub content: String,
pub similarity: f64,
}