@@ -42,23 +42,16 @@ pub fn task_handler(attr: TokenStream, input: TokenStream) -> syn::Result<TokenS
4242 . into_iter( )
4343 . map( |task_id| {
4444 let timestamp = rmcp:: task_manager:: current_timestamp( ) ;
45- rmcp:: model:: Task {
45+ rmcp:: model:: Task :: new (
4646 task_id,
47- status: rmcp:: model:: TaskStatus :: Working ,
48- status_message: None ,
49- created_at: timestamp. clone( ) ,
50- last_updated_at: timestamp,
51- ttl: None ,
52- poll_interval: None ,
53- }
47+ rmcp:: model:: TaskStatus :: Working ,
48+ timestamp. clone( ) ,
49+ timestamp,
50+ )
5451 } )
5552 . collect:: <Vec <_>>( ) ;
5653
57- Ok ( rmcp:: model:: ListTasksResult {
58- tasks,
59- next_cursor: None ,
60- total: Some ( total) ,
61- } )
54+ Ok ( rmcp:: model:: ListTasksResult :: new( tasks) )
6255 }
6356 } ;
6457 item_impl. items . push ( syn:: parse2 :: < ImplItem > ( list_fn) ?) ;
@@ -106,17 +99,14 @@ pub fn task_handler(attr: TokenStream, input: TokenStream) -> syn::Result<TokenS
10699 ) ) ?;
107100
108101 let timestamp = current_timestamp( ) ;
109- let task = rmcp:: model:: Task {
102+ let task = rmcp:: model:: Task :: new (
110103 task_id,
111- status: rmcp:: model:: TaskStatus :: Working ,
112- status_message: Some ( "Task accepted" . to_string( ) ) ,
113- created_at: timestamp. clone( ) ,
114- last_updated_at: timestamp,
115- ttl: None ,
116- poll_interval: None ,
117- } ;
104+ rmcp:: model:: TaskStatus :: Working ,
105+ timestamp. clone( ) ,
106+ timestamp,
107+ ) . with_status_message( "Task accepted" ) ;
118108
119- Ok ( rmcp:: model:: CreateTaskResult { task } )
109+ Ok ( rmcp:: model:: CreateTaskResult :: new ( task) )
120110 }
121111 } ;
122112 item_impl. items . push ( syn:: parse2 :: < ImplItem > ( enqueue_fn) ?) ;
@@ -151,31 +141,28 @@ pub fn task_handler(attr: TokenStream, input: TokenStream) -> syn::Result<TokenS
151141 Err ( _) => rmcp:: model:: TaskStatus :: Failed ,
152142 } ;
153143 let timestamp = current_timestamp( ) ;
154- let task = rmcp:: model:: Task {
144+ let mut task = rmcp:: model:: Task :: new (
155145 task_id,
156146 status,
157- status_message : None ,
158- created_at : timestamp. clone ( ) ,
159- last_updated_at : timestamp ,
160- ttl: completed_result. descriptor. ttl,
161- poll_interval : None ,
162- } ;
147+ timestamp . clone ( ) ,
148+ timestamp,
149+ ) ;
150+ if let Some ( ttl) = completed_result. descriptor. ttl {
151+ task = task . with_ttl ( ttl ) ;
152+ }
163153 return Ok ( rmcp:: model:: GetTaskResult { meta: None , task } ) ;
164154 }
165155
166156 // If not completed, check running
167157 let running = processor. list_running( ) ;
168158 if running. into_iter( ) . any( |id| id == task_id) {
169159 let timestamp = current_timestamp( ) ;
170- let task = rmcp:: model:: Task {
160+ let task = rmcp:: model:: Task :: new (
171161 task_id,
172- status: rmcp:: model:: TaskStatus :: Working ,
173- status_message: None ,
174- created_at: timestamp. clone( ) ,
175- last_updated_at: timestamp,
176- ttl: None ,
177- poll_interval: None ,
178- } ;
162+ rmcp:: model:: TaskStatus :: Working ,
163+ timestamp. clone( ) ,
164+ timestamp,
165+ ) ;
179166 return Ok ( rmcp:: model:: GetTaskResult { meta: None , task } ) ;
180167 }
181168
@@ -207,7 +194,7 @@ pub fn task_handler(attr: TokenStream, input: TokenStream) -> syn::Result<TokenS
207194 match & tool. result {
208195 Ok ( call_tool) => {
209196 let value = :: serde_json:: to_value( call_tool) . unwrap_or( :: serde_json:: Value :: Null ) ;
210- return Ok ( rmcp:: model:: GetTaskPayloadResult ( value) ) ;
197+ return Ok ( rmcp:: model:: GetTaskPayloadResult :: new ( value) ) ;
211198 }
212199 Err ( err) => return Err ( McpError :: internal_error(
213200 format!( "task failed: {}" , err) ,
@@ -254,15 +241,12 @@ pub fn task_handler(attr: TokenStream, input: TokenStream) -> syn::Result<TokenS
254241
255242 if processor. cancel_task( & task_id) {
256243 let timestamp = current_timestamp( ) ;
257- let task = rmcp:: model:: Task {
244+ let task = rmcp:: model:: Task :: new (
258245 task_id,
259- status: rmcp:: model:: TaskStatus :: Cancelled ,
260- status_message: None ,
261- created_at: timestamp. clone( ) ,
262- last_updated_at: timestamp,
263- ttl: None ,
264- poll_interval: None ,
265- } ;
246+ rmcp:: model:: TaskStatus :: Cancelled ,
247+ timestamp. clone( ) ,
248+ timestamp,
249+ ) ;
266250 return Ok ( rmcp:: model:: CancelTaskResult { meta: None , task } ) ;
267251 }
268252
0 commit comments