use schemars::JsonSchema;
use serde::Deserialize;
#[derive(Deserialize, JsonSchema)]
pub struct CodeQueryParams {
pub name_contains: Option<String>,
pub kind: Option<String>,
pub language: Option<String>,
#[serde(default = "default_limit")]
pub limit: u32,
}
#[derive(Deserialize, JsonSchema)]
pub struct CodeSearchParams {
pub query: String,
pub kind: Option<String>,
pub language: Option<String>,
#[serde(default = "default_search_limit")]
pub limit: u32,
#[serde(default)]
pub include_tests: bool,
#[serde(default)]
pub tests_only: bool,
pub exclude: Option<String>,
pub paths: Option<String>,
pub scope: Option<String>,
}
fn default_search_limit() -> u32 {
20
}
#[derive(Deserialize, JsonSchema)]
pub struct ReferencesParams {
pub name: String,
pub path: Option<String>,
#[serde(default = "default_references_limit")]
pub limit: u32,
pub globs: Option<String>,
}
fn default_references_limit() -> u32 {
500
}
#[derive(Deserialize, JsonSchema)]
pub struct ConclusionsListParams {
pub class: Option<String>,
pub symbol: Option<String>,
}
#[derive(Deserialize, JsonSchema)]
pub struct ConclusionsExportParams {
pub out: Option<String>,
}
#[derive(Deserialize, JsonSchema)]
pub struct ConclusionsImportParams {
#[serde(rename = "in")]
pub in_dir: Option<String>,
}
#[derive(Deserialize, JsonSchema)]
pub struct RecipeClassifyTestMigrationParams {
pub query: String,
#[serde(default = "default_recipe_limit")]
pub limit: u32,
}
fn default_recipe_limit() -> u32 {
50
}
#[derive(Deserialize, JsonSchema)]
pub struct ThinkSpeculateParams {
pub qname: String,
pub confidence: f64,
pub summary: String,
pub body: Option<String>,
}
#[derive(Deserialize, JsonSchema)]
pub struct ThinkModelParams {
pub name: String,
pub symbols: String,
pub summary: String,
}
#[derive(Deserialize, JsonSchema)]
pub struct ThinkFailedParams {
pub qname: String,
pub tried: String,
pub because: String,
}
#[derive(Deserialize, JsonSchema)]
pub struct ThinkQuestionParams {
pub qname: String,
pub question: String,
}
#[derive(Deserialize, JsonSchema)]
pub struct ThinkListParams {
pub kind: Option<String>,
pub symbol: Option<String>,
}
#[derive(Deserialize, JsonSchema)]
pub struct InvestigateParams {
pub query: String,
#[serde(default = "default_investigate_depth")]
pub depth: u32,
pub kind: Option<String>,
pub language: Option<String>,
#[serde(default)]
pub include_tests: bool,
pub intent: Option<String>,
pub exclude: Option<String>,
pub paths: Option<String>,
pub scope: Option<String>,
}
fn default_investigate_depth() -> u32 {
10
}
fn default_impact_depth() -> u32 {
3
}
fn default_git_depth() -> u32 {
20
}
fn default_checklist_depth() -> u32 {
10
}
fn default_test_depth() -> u32 {
2
}
fn default_prepare_depth() -> u32 {
10
}
fn default_prepare_git_depth() -> u32 {
10
}
#[derive(Deserialize, JsonSchema)]
pub struct PrepareChangeParams {
pub description: String,
#[serde(default = "default_prepare_depth")]
pub depth: u32,
pub kind: Option<String>,
pub language: Option<String>,
#[serde(default)]
pub include_tests: bool,
pub intent: Option<String>,
#[serde(default = "default_test_depth")]
pub test_depth: u32,
#[serde(default = "default_prepare_git_depth")]
pub git_depth: u32,
pub exclude: Option<String>,
pub paths: Option<String>,
pub scope: Option<String>,
pub task_context: Option<String>,
}
#[derive(Deserialize, JsonSchema)]
pub struct ChecklistParams {
pub query: String,
#[serde(default = "default_checklist_depth")]
pub depth: u32,
pub kind: Option<String>,
pub language: Option<String>,
#[serde(default)]
pub include_tests: bool,
pub intent: Option<String>,
#[serde(default = "default_test_depth")]
pub test_depth: u32,
pub exclude: Option<String>,
pub paths: Option<String>,
pub scope: Option<String>,
}
#[derive(Deserialize, JsonSchema)]
pub struct ImpactParams {
pub qname: String,
#[serde(default = "default_impact_depth")]
pub depth: u32,
#[serde(default = "default_git_depth")]
pub git_depth: u32,
}
#[derive(Deserialize, JsonSchema)]
pub struct HelpParams {
#[serde(default)]
pub topic: Option<String>,
}
#[derive(Deserialize, JsonSchema)]
pub struct ArchitectureParams {
#[serde(default = "default_arch_top")]
pub top: usize,
}
fn default_arch_top() -> usize {
12
}
#[derive(Deserialize, JsonSchema)]
pub struct DeadCodeParams {
#[serde(default = "default_dead_limit")]
pub limit: usize,
#[serde(default)]
pub include_tests: bool,
}
fn default_dead_limit() -> usize {
50
}
#[derive(Deserialize, JsonSchema)]
pub struct SinceParams {
pub sha: String,
#[serde(default = "default_impact_depth")]
pub depth: u32,
#[serde(default = "default_since_git_depth")]
pub git_depth: u32,
}
fn default_since_git_depth() -> u32 {
10
}
#[derive(Deserialize, JsonSchema)]
pub struct InvariantAddParams {
pub qname: String,
pub summary: String,
#[serde(default = "default_author_id")]
pub author_id: String,
}
#[derive(Deserialize, JsonSchema)]
pub struct InvariantListParams {
pub qname: Option<String>,
}
#[derive(Deserialize, JsonSchema)]
pub struct FeedbackMarkParams {
pub query: String,
pub qname: String,
pub verdict: String,
pub note: Option<String>,
#[serde(default = "default_author_id")]
pub author_id: String,
pub covered_by: Option<String>,
pub ttl_days: Option<i64>,
}
#[derive(Deserialize, JsonSchema)]
pub struct FeedbackListParams {
pub qname: Option<String>,
}
#[derive(Deserialize, JsonSchema)]
pub struct FeedbackWithdrawParams {
pub entry_id: String,
pub by: Option<String>,
pub reason: Option<String>,
}
#[derive(Deserialize, JsonSchema)]
pub struct FeedbackPromoteParams {
pub qname: String,
pub concept: String,
#[serde(default = "default_author_id")]
pub author_id: String,
}
#[derive(Deserialize, JsonSchema)]
pub struct CodeReadParams {
pub qname: String,
}
#[derive(Deserialize, JsonSchema)]
pub struct EffectsOfParams {
pub qname: String,
}
#[derive(Deserialize, JsonSchema)]
pub struct CallersOfParams {
pub qname: String,
}
#[derive(Deserialize, JsonSchema)]
pub struct CalleesOfParams {
pub qname: String,
}
#[derive(Deserialize, JsonSchema)]
pub struct LedgerGetParams {
pub qname: String,
#[serde(default)]
pub include_superseded: bool,
}
#[derive(Deserialize, JsonSchema)]
pub struct LedgerFindParams {
pub kind: Option<String>,
pub tag: Option<String>,
pub author_id: Option<String>,
#[serde(default = "default_limit")]
pub limit: u32,
}
#[derive(Deserialize, JsonSchema)]
pub struct LedgerAppendParams {
pub qname: String,
pub kind: String,
pub summary: String,
pub body: Option<String>,
pub tags: Option<Vec<String>>,
#[serde(default = "default_author_kind")]
pub author_kind: String,
#[serde(default = "default_author_id")]
pub author_id: String,
pub role: Option<String>,
pub command: Option<String>,
}
#[derive(Deserialize, JsonSchema)]
pub struct LedgerApproveParams {
pub entry_id: String,
pub approver: String,
#[serde(default = "default_approver_kind_mcp")]
pub approver_kind: String,
#[serde(default)]
pub message: Option<String>,
}
#[derive(Deserialize, JsonSchema)]
pub struct LedgerRejectParams {
pub entry_id: String,
pub reviewer: String,
#[serde(default = "default_approver_kind_mcp")]
pub reviewer_kind: String,
pub reason: String,
}
#[derive(Deserialize, JsonSchema)]
pub struct LedgerWithdrawParams {
pub entry_id: String,
pub author_id: String,
}
#[derive(Deserialize, JsonSchema)]
pub struct LedgerSupersedeParams {
pub qname: String,
pub supersedes: Vec<String>,
pub kind: String,
pub summary: String,
#[serde(default)]
pub body: Option<String>,
#[serde(default = "default_author_kind")]
pub author_kind: String,
#[serde(default = "default_author_id")]
pub author_id: String,
}
fn default_approver_kind_mcp() -> String {
"human".to_string()
}
#[derive(Deserialize, JsonSchema)]
pub struct TracesOfParams {
pub qname: String,
#[serde(default)]
pub limit: Option<usize>,
}
#[derive(Deserialize, JsonSchema)]
pub struct ReindexParams {
pub path: String,
}
#[derive(Deserialize, JsonSchema)]
pub struct SyncParams {
#[serde(default)]
pub dir: Option<String>,
#[serde(default)]
pub prune: bool,
}
#[derive(Deserialize, JsonSchema)]
pub struct TestSummaryParams {
pub output: String,
}
#[derive(Deserialize, JsonSchema)]
pub struct MapParams {
#[serde(default)]
pub dry_run: bool,
}
#[derive(Deserialize, JsonSchema)]
pub struct LedgerRebindParams {
pub from_symbol_id: String,
pub to_qname: String,
#[serde(default = "default_author_id")]
pub agent_id: String,
}
#[derive(Deserialize, JsonSchema)]
pub struct AuditTailParams {
#[serde(default)]
pub event_type: Option<String>,
#[serde(default)]
pub since: Option<String>,
#[serde(default)]
pub actor: Option<String>,
#[serde(default)]
pub outcome: Option<String>,
#[serde(default)]
pub limit: Option<u32>,
}
#[derive(Deserialize, JsonSchema)]
pub struct EffectDeclareParams {
pub qname: String,
pub declared: Vec<serde_json::Value>,
#[serde(default = "default_author_id")]
pub author_id: String,
}
fn default_limit() -> u32 {
50
}
fn default_author_kind() -> String {
"agent".to_string()
}
fn default_author_id() -> String {
"asd-mcp".to_string()
}
#[derive(Deserialize, JsonSchema)]
pub struct ScratchWriteParams {
pub content: String,
#[serde(default)]
pub symbol: Option<String>,
#[serde(default)]
pub workflow: Option<String>,
#[serde(default)]
pub ttl_hours: Option<i64>,
#[serde(default)]
pub tags: Option<Vec<String>>,
#[serde(default)]
pub planning: Option<bool>,
}
#[derive(Deserialize, JsonSchema)]
pub struct ScratchListParams {
#[serde(default)]
pub symbol: Option<String>,
#[serde(default)]
pub workflow: Option<String>,
#[serde(default)]
pub session: Option<String>,
#[serde(default)]
pub status: Option<String>,
#[serde(default = "default_limit")]
pub limit: u32,
}
#[derive(Deserialize, JsonSchema)]
pub struct ScratchReadParams {
pub scratch_id: String,
}
#[derive(Deserialize, JsonSchema)]
pub struct ScratchUpdateParams {
pub scratch_id: String,
pub content: String,
}
#[derive(Deserialize, JsonSchema)]
pub struct ScratchDiscardParams {
pub scratch_id: String,
}
#[derive(Deserialize, JsonSchema)]
pub struct ScratchPromoteParams {
pub scratch_id: String,
pub kind: String,
#[serde(default)]
pub qname: Option<String>,
#[serde(default)]
pub summary: Option<String>,
}
#[derive(Deserialize, JsonSchema)]
pub struct ScratchCleanParams {
pub older_than_hours: u32,
#[serde(default = "default_scratch_clean_statuses")]
pub statuses: String,
#[serde(default)]
pub dry_run: bool,
}
fn default_scratch_clean_statuses() -> String {
"discarded,promoted".to_string()
}
#[derive(Deserialize, JsonSchema)]
pub struct SearchParams {
pub query: String,
pub kind: Option<String>,
pub language: Option<String>,
#[serde(default = "default_search_limit")]
pub limit: u32,
#[serde(default)]
pub include_tests: bool,
pub intent: Option<String>,
pub scope: Option<String>,
pub paths: Option<String>,
pub exclude: Option<String>,
#[serde(default)]
pub symbols_only: bool,
#[serde(default = "default_agent_budget")]
pub agent_budget: u32,
}
fn default_agent_budget() -> u32 {
8000
}
#[derive(Deserialize, JsonSchema)]
pub struct ContextForParams {
pub qnames: String,
pub budget_tokens: Option<u32>,
#[serde(default)]
pub include_body: bool,
}
#[derive(Deserialize, JsonSchema)]
pub struct TaskCloseParams {
pub proof: Option<String>,
pub symbols: Option<String>,
#[serde(default)]
pub validated: bool,
pub validation_note: Option<String>,
pub evidence: Option<String>,
pub plan: Option<String>,
pub task: Option<String>,
#[serde(default = "default_task_close_author")]
pub author: String,
}
fn default_task_close_author() -> String {
"asd-task-close".to_string()
}
#[derive(Deserialize, JsonSchema)]
pub struct VerifyEffectsParams {
pub qname: String,
#[serde(default)]
pub write: bool,
}
#[derive(Deserialize, JsonSchema)]
pub struct StatusParams {
#[serde(default)]
pub show_dirty: bool,
}
#[derive(Deserialize, JsonSchema)]
pub struct ScorecardParams {
pub scope: Option<String>,
pub paths: Option<String>,
pub drill_down: Option<String>,
#[serde(default = "default_scorecard_limit")]
pub limit: u32,
}
fn default_scorecard_limit() -> u32 {
10
}
#[derive(Deserialize, JsonSchema)]
pub struct AnnotateCommitParams {
pub sha: Option<String>,
#[serde(default)]
pub write: bool,
pub author: Option<String>,
pub task_description: Option<String>,
pub ctx_task: Option<String>,
pub ctx_plan: Option<String>,
}