返回 DeepSeek-Reasonix
message_identity.go
根目录 / internal / event / message_identity.go
1 package event
2
3 // WithMessageIdentity associates an attempt's output with the message that
4 // will be committed to the local transcript. It never modifies provider data.
5 func WithMessageIdentity(inner Sink, messageID, attemptID string) Sink {
6 return &messageIdentitySink{AuditForwarder: AuditForwarder{Inner: inner}, messageID: messageID, attemptID: attemptID}
7 }
8
9 type messageIdentitySink struct {
10 AuditForwarder
11 messageID, attemptID string
12 }
13
14 var _ OptionalSinkCapabilities = (*messageIdentitySink)(nil)
15 var _ CheckedSink = (*messageIdentitySink)(nil)
16
17 func (s *messageIdentitySink) stamp(e Event) Event {
18 switch e.Kind {
19 case Text, Reasoning, Message, ToolDispatch, ToolResult:
20 if e.MessageID == "" {
21 e.MessageID = s.messageID
22 }
23 if e.AttemptID == "" {
24 e.AttemptID = s.attemptID
25 }
26 }
27 return e
28 }
29
30 func (s *messageIdentitySink) Emit(e Event) { s.Inner.Emit(s.stamp(e)) }
31 func (s *messageIdentitySink) EmitChecked(e Event) error { return EmitChecked(s.Inner, s.stamp(e)) }
32
32 lines GO