chore: add #[non_exhaustive] and mutation methods to improve compatibility (#715)
* chore: add #[non_exhaustive] to reduce backwards-incompatible changes going forward * fix: remove ProtocolVersion import * fix: add a few more with_ mutator methods --------- Co-authored-by: Alex Hancock <alexhancock@block.xyz>
This commit is contained in:
parent
79834b6211
commit
f63718d202
1 changed files with 1568 additions and 1110 deletions
|
|
@ -42,23 +42,16 @@ pub fn task_handler(attr: TokenStream, input: TokenStream) -> syn::Result<TokenS
|
|||
.into_iter()
|
||||
.map(|task_id| {
|
||||
let timestamp = rmcp::task_manager::current_timestamp();
|
||||
rmcp::model::Task {
|
||||
rmcp::model::Task::new(
|
||||
task_id,
|
||||
status: rmcp::model::TaskStatus::Working,
|
||||
status_message: None,
|
||||
created_at: timestamp.clone(),
|
||||
last_updated_at: timestamp,
|
||||
ttl: None,
|
||||
poll_interval: None,
|
||||
}
|
||||
rmcp::model::TaskStatus::Working,
|
||||
timestamp.clone(),
|
||||
timestamp,
|
||||
)
|
||||
})
|
||||
.collect::<Vec<_>>();
|
||||
|
||||
Ok(rmcp::model::ListTasksResult {
|
||||
tasks,
|
||||
next_cursor: None,
|
||||
total: Some(total),
|
||||
})
|
||||
Ok(rmcp::model::ListTasksResult::new(tasks))
|
||||
}
|
||||
};
|
||||
item_impl.items.push(syn::parse2::<ImplItem>(list_fn)?);
|
||||
|
|
@ -106,17 +99,14 @@ pub fn task_handler(attr: TokenStream, input: TokenStream) -> syn::Result<TokenS
|
|||
))?;
|
||||
|
||||
let timestamp = current_timestamp();
|
||||
let task = rmcp::model::Task {
|
||||
let task = rmcp::model::Task::new(
|
||||
task_id,
|
||||
status: rmcp::model::TaskStatus::Working,
|
||||
status_message: Some("Task accepted".to_string()),
|
||||
created_at: timestamp.clone(),
|
||||
last_updated_at: timestamp,
|
||||
ttl: None,
|
||||
poll_interval: None,
|
||||
};
|
||||
rmcp::model::TaskStatus::Working,
|
||||
timestamp.clone(),
|
||||
timestamp,
|
||||
).with_status_message("Task accepted");
|
||||
|
||||
Ok(rmcp::model::CreateTaskResult { task })
|
||||
Ok(rmcp::model::CreateTaskResult::new(task))
|
||||
}
|
||||
};
|
||||
item_impl.items.push(syn::parse2::<ImplItem>(enqueue_fn)?);
|
||||
|
|
@ -151,15 +141,15 @@ pub fn task_handler(attr: TokenStream, input: TokenStream) -> syn::Result<TokenS
|
|||
Err(_) => rmcp::model::TaskStatus::Failed,
|
||||
};
|
||||
let timestamp = current_timestamp();
|
||||
let task = rmcp::model::Task {
|
||||
let mut task = rmcp::model::Task::new(
|
||||
task_id,
|
||||
status,
|
||||
status_message: None,
|
||||
created_at: timestamp.clone(),
|
||||
last_updated_at: timestamp,
|
||||
ttl: completed_result.descriptor.ttl,
|
||||
poll_interval: None,
|
||||
};
|
||||
timestamp.clone(),
|
||||
timestamp,
|
||||
);
|
||||
if let Some(ttl) = completed_result.descriptor.ttl {
|
||||
task = task.with_ttl(ttl);
|
||||
}
|
||||
return Ok(rmcp::model::GetTaskResult { meta: None, task });
|
||||
}
|
||||
|
||||
|
|
@ -167,15 +157,12 @@ pub fn task_handler(attr: TokenStream, input: TokenStream) -> syn::Result<TokenS
|
|||
let running = processor.list_running();
|
||||
if running.into_iter().any(|id| id == task_id) {
|
||||
let timestamp = current_timestamp();
|
||||
let task = rmcp::model::Task {
|
||||
let task = rmcp::model::Task::new(
|
||||
task_id,
|
||||
status: rmcp::model::TaskStatus::Working,
|
||||
status_message: None,
|
||||
created_at: timestamp.clone(),
|
||||
last_updated_at: timestamp,
|
||||
ttl: None,
|
||||
poll_interval: None,
|
||||
};
|
||||
rmcp::model::TaskStatus::Working,
|
||||
timestamp.clone(),
|
||||
timestamp,
|
||||
);
|
||||
return Ok(rmcp::model::GetTaskResult { meta: None, task });
|
||||
}
|
||||
|
||||
|
|
@ -207,7 +194,7 @@ pub fn task_handler(attr: TokenStream, input: TokenStream) -> syn::Result<TokenS
|
|||
match &tool.result {
|
||||
Ok(call_tool) => {
|
||||
let value = ::serde_json::to_value(call_tool).unwrap_or(::serde_json::Value::Null);
|
||||
return Ok(rmcp::model::GetTaskPayloadResult(value));
|
||||
return Ok(rmcp::model::GetTaskPayloadResult::new(value));
|
||||
}
|
||||
Err(err) => return Err(McpError::internal_error(
|
||||
format!("task failed: {}", err),
|
||||
|
|
@ -254,15 +241,12 @@ pub fn task_handler(attr: TokenStream, input: TokenStream) -> syn::Result<TokenS
|
|||
|
||||
if processor.cancel_task(&task_id) {
|
||||
let timestamp = current_timestamp();
|
||||
let task = rmcp::model::Task {
|
||||
let task = rmcp::model::Task::new(
|
||||
task_id,
|
||||
status: rmcp::model::TaskStatus::Cancelled,
|
||||
status_message: None,
|
||||
created_at: timestamp.clone(),
|
||||
last_updated_at: timestamp,
|
||||
ttl: None,
|
||||
poll_interval: None,
|
||||
};
|
||||
rmcp::model::TaskStatus::Cancelled,
|
||||
timestamp.clone(),
|
||||
timestamp,
|
||||
);
|
||||
return Ok(rmcp::model::CancelTaskResult { meta: None, task });
|
||||
}
|
||||
|
||||
|
|
|
|||
Loading…
Reference in a new issue