ant: improve encapsulation
- Replace string literals with package constants for message roles and content types.
- Create UserStringMessage helper function to simplify user message creation
- Replace manual Content creation with ant.StringContent()
Co-Authored-By: sketch <hello@sketch.dev>
diff --git a/loop/agent_user_cancel_test.go b/loop/agent_user_cancel_test.go
index f79e73e..e55ba17 100644
--- a/loop/agent_user_cancel_test.go
+++ b/loop/agent_user_cancel_test.go
@@ -21,12 +21,7 @@
inbox: make(chan string, 1),
outbox: make(chan AgentMessage, 1),
}
- userMsg := ant.Message{
- Role: "user",
- Content: []ant.Content{
- {Type: "text", Text: "hi"},
- },
- }
+ userMsg := ant.UserStringMessage("hi")
userMsgResponse := &ant.MessageResponse{}
mockConvo.ExpectCall("SendMessage", userMsg).Return(userMsgResponse, nil)
@@ -55,9 +50,9 @@
outbox: make(chan AgentMessage, 1),
}
userMsg := ant.Message{
- Role: "user",
+ Role: ant.MessageRoleUser,
Content: []ant.Content{
- {Type: "text", Text: "hi"},
+ {Type: ant.ContentTypeText, Text: "hi"},
},
}
userMsgResponse := &ant.MessageResponse{
@@ -86,7 +81,7 @@
},
}
toolUseResultsMsg := ant.Message{
- Role: "user",
+ Role: ant.MessageRoleUser,
Content: toolUseContents,
}
toolUseResponse := &ant.MessageResponse{
@@ -132,12 +127,7 @@
inbox: make(chan string, 1),
outbox: make(chan AgentMessage, 10), // don't let anything block on outbox.
}
- userMsg := ant.Message{
- Role: "user",
- Content: []ant.Content{
- {Type: "text", Text: "hi"},
- },
- }
+ userMsg := ant.UserStringMessage("hi")
userMsgResponse := &ant.MessageResponse{
StopReason: ant.StopReasonToolUse,
Content: []ant.Content{
@@ -153,12 +143,7 @@
OutputTokens: 200,
},
}
- toolUseResultsMsg := ant.Message{
- Role: "user",
- Content: []ant.Content{
- {Type: "text", Text: cancelToolUseMessage},
- },
- }
+ toolUseResultsMsg := ant.UserStringMessage(cancelToolUseMessage)
toolUseResponse := &ant.MessageResponse{
StopReason: ant.StopReasonEndTurn,
Content: []ant.Content{
@@ -223,9 +208,9 @@
outbox: make(chan AgentMessage, 10), // don't let anything block on outbox.
}
userMsg := ant.Message{
- Role: "user",
+ Role: ant.MessageRoleUser,
Content: []ant.Content{
- {Type: "text", Text: "hi"},
+ {Type: ant.ContentTypeText, Text: "hi"},
},
}
userMsgResponse := &ant.MessageResponse{
@@ -244,9 +229,9 @@
},
}
toolUseResultsMsg := ant.Message{
- Role: "user",
+ Role: ant.MessageRoleUser,
Content: []ant.Content{
- {Type: "text", Text: cancelToolUseMessage},
+ {Type: ant.ContentTypeText, Text: cancelToolUseMessage},
},
}
toolUseResultResponse := &ant.MessageResponse{
@@ -263,9 +248,9 @@
},
}
userFollowUpMsg := ant.Message{
- Role: "user",
+ Role: ant.MessageRoleUser,
Content: []ant.Content{
- {Type: "text", Text: "that was the wrong thing to do"},
+ {Type: ant.ContentTypeText, Text: "that was the wrong thing to do"},
},
}
userFollowUpResponse := &ant.MessageResponse{
@@ -339,12 +324,7 @@
// Define test message
// This simulates something that would result in claude responding with tool_use responses.
- userMsg := ant.Message{
- Role: "user",
- Content: []ant.Content{
- {Type: "text", Text: "use test_tool for something"},
- },
- }
+ userMsg := ant.UserStringMessage("use test_tool for something")
// Mock initial response with tool use
userMsgResponse := &ant.MessageResponse{
StopReason: ant.StopReasonToolUse,
@@ -370,11 +350,8 @@
},
}
canceledToolUseMsg := ant.Message{
- Role: "user",
- Content: append(canceledToolUseContents, ant.Content{
- Type: ant.ContentTypeText,
- Text: cancelToolUseMessage,
- }),
+ Role: ant.MessageRoleUser,
+ Content: append(canceledToolUseContents, ant.StringContent(cancelToolUseMessage)),
}
// Set up expected behaviors
waitForSendMessage := make(chan any)