Skip to content

Commit c81ceff

Browse files
committed
ID convenience methods
1 parent 3e59e81 commit c81ceff

File tree

5 files changed

+38
-37
lines changed

5 files changed

+38
-37
lines changed

rust-sdk/crates/ag-ui-core/src/event.rs

Lines changed: 16 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
use crate::types::message::Message;
22
use serde::{Deserialize, Serialize};
33
use crate::JsonValue;
4-
use crate::types::ids::ToolCallId;
4+
use crate::types::ids::{MessageId, RunId, ToolCallId, ThreadId};
55

66
/// Event types for AG-UI protocol
77
#[derive(Debug, Clone, Copy, PartialEq, Eq, Serialize, Deserialize)]
@@ -50,7 +50,7 @@ pub struct TextMessageStartEvent {
5050
#[serde(flatten)]
5151
pub base: BaseEvent,
5252
#[serde(rename = "messageId")]
53-
pub message_id: String,
53+
pub message_id: MessageId,
5454
pub role: String, // "assistant"
5555
}
5656

@@ -60,7 +60,7 @@ pub struct TextMessageContentEvent {
6060
#[serde(flatten)]
6161
pub base: BaseEvent,
6262
#[serde(rename = "messageId")]
63-
pub message_id: String,
63+
pub message_id: MessageId,
6464
pub delta: String,
6565
}
6666

@@ -70,7 +70,7 @@ pub struct TextMessageEndEvent {
7070
#[serde(flatten)]
7171
pub base: BaseEvent,
7272
#[serde(rename = "messageId")]
73-
pub message_id: String,
73+
pub message_id: MessageId,
7474
}
7575

7676
/// Text message chunk event (optional fields)
@@ -79,7 +79,7 @@ pub struct TextMessageChunkEvent {
7979
#[serde(flatten)]
8080
pub base: BaseEvent,
8181
#[serde(rename = "messageId", skip_serializing_if = "Option::is_none")]
82-
pub message_id: Option<String>,
82+
pub message_id: Option<MessageId>,
8383
#[serde(skip_serializing_if = "Option::is_none")]
8484
pub role: Option<String>,
8585
#[serde(skip_serializing_if = "Option::is_none")]
@@ -118,7 +118,7 @@ pub struct ToolCallStartEvent {
118118
#[serde(rename = "toolCallName")]
119119
pub tool_call_name: String,
120120
#[serde(rename = "parentMessageId", skip_serializing_if = "Option::is_none")]
121-
pub parent_message_id: Option<String>,
121+
pub parent_message_id: Option<MessageId>,
122122
}
123123

124124
/// Tool call arguments event
@@ -146,7 +146,7 @@ pub struct ToolCallResultEvent {
146146
#[serde(flatten)]
147147
pub base: BaseEvent,
148148
#[serde(rename = "messageId")]
149-
pub message_id: String,
149+
pub message_id: MessageId,
150150
#[serde(rename = "toolCallId")]
151151
pub tool_call_id: ToolCallId,
152152
pub content: String,
@@ -164,7 +164,7 @@ pub struct ToolCallChunkEvent {
164164
#[serde(rename = "toolCallName", skip_serializing_if = "Option::is_none")]
165165
pub tool_call_name: Option<String>,
166166
#[serde(rename = "parentMessageId", skip_serializing_if = "Option::is_none")]
167-
pub parent_message_id: Option<String>,
167+
pub parent_message_id: Option<MessageId>,
168168
#[serde(skip_serializing_if = "Option::is_none")]
169169
pub delta: Option<String>,
170170
}
@@ -234,9 +234,9 @@ pub struct RunStartedEvent {
234234
#[serde(flatten)]
235235
pub base: BaseEvent,
236236
#[serde(rename = "threadId")]
237-
pub thread_id: String,
237+
pub thread_id: ThreadId,
238238
#[serde(rename = "runId")]
239-
pub run_id: String,
239+
pub run_id: RunId,
240240
}
241241

242242
/// Run finished event
@@ -245,9 +245,9 @@ pub struct RunFinishedEvent {
245245
#[serde(flatten)]
246246
pub base: BaseEvent,
247247
#[serde(rename = "threadId")]
248-
pub thread_id: String,
248+
pub thread_id: ThreadId,
249249
#[serde(rename = "runId")]
250-
pub run_id: String,
250+
pub run_id: RunId,
251251
#[serde(skip_serializing_if = "Option::is_none")]
252252
pub result: Option<JsonValue>,
253253
}
@@ -393,14 +393,14 @@ impl TextMessageContentEvent {
393393

394394
/// Builder pattern for creating events
395395
impl TextMessageStartEvent {
396-
pub fn new(message_id: String) -> Self {
396+
pub fn new(message_id: impl Into<MessageId>) -> Self {
397397
Self {
398398
base: BaseEvent {
399399
event_type: EventType::TextMessageStart,
400400
timestamp: None,
401401
raw_event: None,
402402
},
403-
message_id,
403+
message_id: message_id.into(),
404404
role: "assistant".to_string(),
405405
}
406406
}
@@ -417,14 +417,14 @@ impl TextMessageStartEvent {
417417
}
418418

419419
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> {
421421
let event = Self {
422422
base: BaseEvent {
423423
event_type: EventType::TextMessageContent,
424424
timestamp: None,
425425
raw_event: None,
426426
},
427-
message_id,
427+
message_id: message_id.into(),
428428
delta,
429429
};
430430
event.validate()?;

rust-sdk/crates/ag-ui-core/src/types/input.rs

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -22,17 +22,17 @@ pub struct RunAgentInput<StateT = JsonValue, FwdPropsT = JsonValue> {
2222

2323
impl<StateT, FwdPropsT> RunAgentInput<StateT, FwdPropsT> {
2424
pub fn new(
25-
thread_id: ThreadId,
26-
run_id: RunId,
25+
thread_id: impl Into<ThreadId>,
26+
run_id: impl Into<RunId>,
2727
state: StateT,
2828
messages: Vec<Message>,
2929
tools: Vec<Tool>,
3030
context: Vec<Context>,
3131
forwarded_props: FwdPropsT,
3232
) -> Self {
3333
Self {
34-
thread_id,
35-
run_id,
34+
thread_id: thread_id.into(),
35+
run_id: run_id.into(),
3636
state,
3737
messages,
3838
tools,

rust-sdk/crates/ag-ui-core/src/types/message.rs

Lines changed: 11 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -38,9 +38,9 @@ pub struct DeveloperMessage {
3838
}
3939

4040
impl DeveloperMessage {
41-
pub fn new(id: MessageId, content: String) -> Self {
41+
pub fn new(id: impl Into<MessageId>, content: String) -> Self {
4242
Self {
43-
id,
43+
id: id.into(),
4444
role: Role::Developer,
4545
content,
4646
name: None,
@@ -63,9 +63,9 @@ pub struct SystemMessage {
6363
}
6464

6565
impl SystemMessage {
66-
pub fn new(id: MessageId, content: String) -> Self {
66+
pub fn new(id: impl Into<MessageId>, content: String) -> Self {
6767
Self {
68-
id,
68+
id: id.into(),
6969
role: Role::System,
7070
content,
7171
name: None,
@@ -91,9 +91,9 @@ pub struct AssistantMessage {
9191
}
9292

9393
impl AssistantMessage {
94-
pub fn new(id: MessageId) -> Self {
94+
pub fn new(id: impl Into<MessageId>) -> Self {
9595
Self {
96-
id,
96+
id: id.into(),
9797
role: Role::Assistant,
9898
content: None,
9999
name: None,
@@ -127,9 +127,9 @@ pub struct UserMessage {
127127
}
128128

129129
impl UserMessage {
130-
pub fn new(id: MessageId, content: String) -> Self {
130+
pub fn new(id: impl Into<MessageId>, content: String) -> Self {
131131
Self {
132-
id,
132+
id: id.into(),
133133
role: Role::User,
134134
content,
135135
name: None,
@@ -154,12 +154,12 @@ pub struct ToolMessage {
154154
}
155155

156156
impl ToolMessage {
157-
pub fn new(id: MessageId, content: String, tool_call_id: ToolCallId) -> Self {
157+
pub fn new(id: impl Into<MessageId>, content: String, tool_call_id: impl Into<ToolCallId>) -> Self {
158158
Self {
159-
id,
159+
id: id.into(),
160160
content,
161161
role: Role::Tool,
162-
tool_call_id,
162+
tool_call_id: tool_call_id.into(),
163163
error: None,
164164
}
165165
}

rust-sdk/crates/ag-ui-core/src/types/tool.rs

Lines changed: 4 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,18 +1,19 @@
11
use crate::types::message::FunctionCall;
22
use serde::{Deserialize, Serialize};
3+
use crate::types::ids::ToolCallId;
34

45
#[derive(Debug, Clone, PartialEq, Serialize, Deserialize)]
56
pub struct ToolCall {
6-
pub id: String,
7+
pub id: ToolCallId,
78
#[serde(rename = "type")]
89
pub call_type: String, // Always "function"
910
pub function: FunctionCall,
1011
}
1112

1213
impl ToolCall {
13-
pub fn new(id: String, function: FunctionCall) -> Self {
14+
pub fn new(id: impl Into<ToolCallId>, function: FunctionCall) -> Self {
1415
Self {
15-
id,
16+
id: id.into(),
1617
call_type: "function".to_string(),
1718
function,
1819
}

rust-sdk/crates/ag-ui-core/tests/unit.rs

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -66,7 +66,7 @@ mod tests {
6666
arguments: "{}".to_string(),
6767
};
6868

69-
let tool_call = ToolCall::new("call_123".to_string(), function_call);
69+
let tool_call = ToolCall::new(Uuid::new_v4(), function_call);
7070
assert_eq!(tool_call.call_type, "function");
7171
}
7272

@@ -139,8 +139,8 @@ mod tests {
139139

140140
// If this compiles, it's okay
141141
let _input = RunAgentInput::new(
142-
Uuid::new_v4().into(),
143-
Uuid::new_v4().into(),
142+
Uuid::new_v4(),
143+
Uuid::new_v4(),
144144
json!({}),
145145
vec![],
146146
vec![],

0 commit comments

Comments
 (0)