OwnMessages extracts this session's direct messages, excluding system messages and WITHOUT recursing into sub-sessions. This is the set of messages that actually enters this session's prompt (GetMessages skips sub-session items), so token accounting that drives compaction must use it: counting sub-s
()
| 645 | // use it: counting sub-session content would attribute phantom tokens |
| 646 | // to the parent and compact a conversation that isn't actually large. |
| 647 | func (s *Session) OwnMessages() []Message { |
| 648 | items := s.snapshotItems() |
| 649 | |
| 650 | var messages []Message |
| 651 | for _, item := range items { |
| 652 | if item.IsMessage() && item.Message.Message.Role != chat.MessageRoleSystem { |
| 653 | messages = append(messages, *item.Message) |
| 654 | } |
| 655 | } |
| 656 | return messages |
| 657 | } |
| 658 | |
| 659 | func (s *Session) GetLastAssistantMessageContent() string { |
| 660 | return s.getLastMessageContentByRole(chat.MessageRoleAssistant) |