返回 DeepSeek-Reasonix
session_display_notice.go
根目录 / internal / control / session_display_notice.go
1 package control
2
3 import (
4 "encoding/json"
5 "reasonix/internal/event"
6 "reasonix/internal/session"
7 "reasonix/internal/transcript"
8 )
9
10 func mcpDisplayNoticeEvents(e event.Event) ([]session.Event, error) {
11 var out []session.Event
12 if e.Code != event.NoticeCodeMCPToolsList || e.MessageID == "" {
13 return nil, nil
14 }
15 var buffer transcript.Buffer
16 buffer.Apply(e)
17 for _, row := range buffer.Messages() {
18 data, err := json.Marshal(row)
19 if err != nil {
20 return nil, err
21 }
22 var display map[string]any
23 if err = json.Unmarshal(data, &display); err != nil {
24 return nil, err
25 }
26 display["id"] = e.MessageID
27 payload, err := json.Marshal(map[string]any{"type": "display-notice-v1", "displayRecord": display})
28 if err != nil {
29 return nil, err
30 }
31 out = append(out, session.Event{Kind: "diagnostic", Optional: true, Payload: payload})
32 }
33
34 return out, nil
35 }
36
36 lines GO