MCPcopy Create free account
hub / github.com/coder/agentapi / EmitMessages

Method EmitMessages

lib/httpapi/events.go:165–193  ·  view source on GitHub ↗

EmitMessages assumes that only the last message can change or new messages can be added. If a new message is injected between existing messages (identified by Id), the behavior is undefined.

(newMessages []st.ConversationMessage)

Source from the content-addressed store, hash-verified

163// EmitMessages assumes that only the last message can change or new messages can be added.
164// If a new message is injected between existing messages (identified by Id), the behavior is undefined.
165func (e *EventEmitter) EmitMessages(newMessages []st.ConversationMessage) {
166 e.mu.Lock()
167 defer e.mu.Unlock()
168
169 maxLength := max(len(e.messages), len(newMessages))
170 for i := range maxLength {
171 var oldMsg st.ConversationMessage
172 var newMsg st.ConversationMessage
173 if i < len(e.messages) {
174 oldMsg = e.messages[i]
175 }
176 if i < len(newMessages) {
177 newMsg = newMessages[i]
178 }
179 if oldMsg != newMsg {
180 if i >= len(newMessages) {
181 continue
182 }
183 e.notifyChannels(EventTypeMessageUpdate, MessageUpdateBody{
184 Id: newMessages[i].Id,
185 Role: newMessages[i].Role,
186 Message: newMessages[i].Message,
187 Time: newMessages[i].Time,
188 })
189 }
190 }
191
192 e.messages = newMessages
193}
194
195func (e *EventEmitter) EmitStatus(newStatus st.ConversationStatus) {
196 e.mu.Lock()

Callers 1

TestEventEmitterFunction · 0.95

Calls 1

notifyChannelsMethod · 0.95

Tested by 1

TestEventEmitterFunction · 0.76