返回 DeepSeek-Reasonix
turn_ledger_transcript.go
根目录 / internal / control / turn_ledger_transcript.go
1 package control
2
3 import (
4 "log/slog"
5 "slices"
6
7 "reasonix/internal/agent"
8 "reasonix/internal/provider"
9 "reasonix/internal/turnevent"
10 )
11
12 func (c *Controller) updateTurnLedgerTranscript(ledger *turnevent.Ledger) *provider.ReadCompletion {
13 if c.executor != nil && c.executor.Session() != nil {
14 session := c.executor.Session()
15 messages, _, rewrite := session.DisplayBaseline()
16 ledger.SetTranscriptRewriteEpoch(rewrite)
17 digest, digestErr := session.ContentDigest()
18 if digestErr != nil {
19 slog.Warn("controller: compute terminal transcript digest", "err", digestErr)
20 } else {
21 ledger.SetTranscriptSnapshot(int64(session.TranscriptVersion()), digest)
22 }
23 if ref, ok := session.Head(); ok {
24 ledger.SetTranscriptHead(ref.HeadID, session.LeafID())
25 } else {
26 ledger.SetTranscriptHead("", "")
27 }
28 for _, message := range slices.Backward(messages) {
29 if message.ReadCompletion != nil {
30 return message.ReadCompletion
31 }
32 if agent.IsUserAuthoredTurnMessage(message) {
33 break
34 }
35 }
36 }
37 return nil
38 }
39
39 lines GO