1
1
use crate :: types:: message:: Message ;
2
2
use serde:: { Deserialize , Serialize } ;
3
3
use crate :: JsonValue ;
4
- use crate :: types:: ids:: ToolCallId ;
4
+ use crate :: types:: ids:: { MessageId , RunId , ToolCallId , ThreadId } ;
5
5
6
6
/// Event types for AG-UI protocol
7
7
#[ derive( Debug , Clone , Copy , PartialEq , Eq , Serialize , Deserialize ) ]
@@ -50,7 +50,7 @@ pub struct TextMessageStartEvent {
50
50
#[ serde( flatten) ]
51
51
pub base : BaseEvent ,
52
52
#[ serde( rename = "messageId" ) ]
53
- pub message_id : String ,
53
+ pub message_id : MessageId ,
54
54
pub role : String , // "assistant"
55
55
}
56
56
@@ -60,7 +60,7 @@ pub struct TextMessageContentEvent {
60
60
#[ serde( flatten) ]
61
61
pub base : BaseEvent ,
62
62
#[ serde( rename = "messageId" ) ]
63
- pub message_id : String ,
63
+ pub message_id : MessageId ,
64
64
pub delta : String ,
65
65
}
66
66
@@ -70,7 +70,7 @@ pub struct TextMessageEndEvent {
70
70
#[ serde( flatten) ]
71
71
pub base : BaseEvent ,
72
72
#[ serde( rename = "messageId" ) ]
73
- pub message_id : String ,
73
+ pub message_id : MessageId ,
74
74
}
75
75
76
76
/// Text message chunk event (optional fields)
@@ -79,7 +79,7 @@ pub struct TextMessageChunkEvent {
79
79
#[ serde( flatten) ]
80
80
pub base : BaseEvent ,
81
81
#[ serde( rename = "messageId" , skip_serializing_if = "Option::is_none" ) ]
82
- pub message_id : Option < String > ,
82
+ pub message_id : Option < MessageId > ,
83
83
#[ serde( skip_serializing_if = "Option::is_none" ) ]
84
84
pub role : Option < String > ,
85
85
#[ serde( skip_serializing_if = "Option::is_none" ) ]
@@ -118,7 +118,7 @@ pub struct ToolCallStartEvent {
118
118
#[ serde( rename = "toolCallName" ) ]
119
119
pub tool_call_name : String ,
120
120
#[ serde( rename = "parentMessageId" , skip_serializing_if = "Option::is_none" ) ]
121
- pub parent_message_id : Option < String > ,
121
+ pub parent_message_id : Option < MessageId > ,
122
122
}
123
123
124
124
/// Tool call arguments event
@@ -146,7 +146,7 @@ pub struct ToolCallResultEvent {
146
146
#[ serde( flatten) ]
147
147
pub base : BaseEvent ,
148
148
#[ serde( rename = "messageId" ) ]
149
- pub message_id : String ,
149
+ pub message_id : MessageId ,
150
150
#[ serde( rename = "toolCallId" ) ]
151
151
pub tool_call_id : ToolCallId ,
152
152
pub content : String ,
@@ -164,7 +164,7 @@ pub struct ToolCallChunkEvent {
164
164
#[ serde( rename = "toolCallName" , skip_serializing_if = "Option::is_none" ) ]
165
165
pub tool_call_name : Option < String > ,
166
166
#[ serde( rename = "parentMessageId" , skip_serializing_if = "Option::is_none" ) ]
167
- pub parent_message_id : Option < String > ,
167
+ pub parent_message_id : Option < MessageId > ,
168
168
#[ serde( skip_serializing_if = "Option::is_none" ) ]
169
169
pub delta : Option < String > ,
170
170
}
@@ -234,9 +234,9 @@ pub struct RunStartedEvent {
234
234
#[ serde( flatten) ]
235
235
pub base : BaseEvent ,
236
236
#[ serde( rename = "threadId" ) ]
237
- pub thread_id : String ,
237
+ pub thread_id : ThreadId ,
238
238
#[ serde( rename = "runId" ) ]
239
- pub run_id : String ,
239
+ pub run_id : RunId ,
240
240
}
241
241
242
242
/// Run finished event
@@ -245,9 +245,9 @@ pub struct RunFinishedEvent {
245
245
#[ serde( flatten) ]
246
246
pub base : BaseEvent ,
247
247
#[ serde( rename = "threadId" ) ]
248
- pub thread_id : String ,
248
+ pub thread_id : ThreadId ,
249
249
#[ serde( rename = "runId" ) ]
250
- pub run_id : String ,
250
+ pub run_id : RunId ,
251
251
#[ serde( skip_serializing_if = "Option::is_none" ) ]
252
252
pub result : Option < JsonValue > ,
253
253
}
@@ -393,14 +393,14 @@ impl TextMessageContentEvent {
393
393
394
394
/// Builder pattern for creating events
395
395
impl TextMessageStartEvent {
396
- pub fn new ( message_id : String ) -> Self {
396
+ pub fn new ( message_id : impl Into < MessageId > ) -> Self {
397
397
Self {
398
398
base : BaseEvent {
399
399
event_type : EventType :: TextMessageStart ,
400
400
timestamp : None ,
401
401
raw_event : None ,
402
402
} ,
403
- message_id,
403
+ message_id : message_id . into ( ) ,
404
404
role : "assistant" . to_string ( ) ,
405
405
}
406
406
}
@@ -417,14 +417,14 @@ impl TextMessageStartEvent {
417
417
}
418
418
419
419
impl TextMessageContentEvent {
420
- pub fn new ( message_id : String , delta : String ) -> Result < Self , EventValidationError > {
420
+ pub fn new ( message_id : impl Into < MessageId > , delta : String ) -> Result < Self , EventValidationError > {
421
421
let event = Self {
422
422
base : BaseEvent {
423
423
event_type : EventType :: TextMessageContent ,
424
424
timestamp : None ,
425
425
raw_event : None ,
426
426
} ,
427
- message_id,
427
+ message_id : message_id . into ( ) ,
428
428
delta,
429
429
} ;
430
430
event. validate ( ) ?;
0 commit comments