返回 DeepSeek-Reasonix
history_display_notice.go
根目录 / internal / session / history_display_notice.go
1 package session
2
3 import (
4 "context"
5 "encoding/json"
6 "errors"
7 "reasonix/internal/provider"
8 "reasonix/internal/sessioncontent"
9 )
10
11 func indexDisplayNotice(ctx context.Context, content *sessioncontent.Store, state *historyBuildState, event Event) error {
12 payload := event.Payload
13 if event.PayloadRef != nil {
14 var err error
15 payload, err = resolveContentPayload(ctx, content, *event.PayloadRef)
16 if err != nil {
17 return err
18 }
19 }
20 var body struct {
21 Type string `json:"type"`
22 DisplayRecord json.RawMessage `json:"displayRecord"`
23 }
24 if len(payload) == 0 {
25 return nil
26 }
27 if err := json.Unmarshal(payload, &body); err != nil {
28 return err
29 }
30 if body.Type != "display-notice-v1" && body.Type != "session-maintenance-v1" {
31 return nil
32 }
33 var message provider.Message
34 if err := json.Unmarshal(body.DisplayRecord, &message); err != nil {
35 return err
36 }
37 validRole := body.Type == "display-notice-v1" && message.Role == "notice" || body.Type == "session-maintenance-v1" && message.Role == "compaction"
38 if !validRole || message.ID == "" {
39 return errors.New("invalid persisted display notice")
40 }
41 return indexOneMessageBody(ctx, content, state, message, event.Sequence, body.Type == "session-maintenance-v1", body.DisplayRecord)
42 }
43
43 lines GO