never executed always true always false
1 module PureClaw.Agent.Context
2 ( -- * Context type (constructor intentionally NOT exported)
3 Context
4 -- * Construction
5 , emptyContext
6 -- * Operations
7 , addMessage
8 , contextMessages
9 , contextSystemPrompt
10 ) where
11
12 import Data.Text (Text)
13
14 import PureClaw.Providers.Class
15
16 -- | Conversation context. Maintains message history and an optional
17 -- system prompt. Constructor is not exported — use 'emptyContext'.
18 data Context = Context
19 { _ctx_systemPrompt :: Maybe Text
20 , _ctx_messages :: [Message] -- oldest first
21 }
22 deriving stock (Show, Eq)
23
24 -- | Create an empty context with an optional system prompt.
25 emptyContext :: Maybe Text -> Context
26 emptyContext sys = Context sys []
27
28 -- | Append a message to the conversation history.
29 addMessage :: Message -> Context -> Context
30 addMessage msg ctx = ctx { _ctx_messages = _ctx_messages ctx ++ [msg] }
31
32 -- | Get all messages in chronological order.
33 contextMessages :: Context -> [Message]
34 contextMessages = _ctx_messages
35
36 -- | Get the system prompt, if any.
37 contextSystemPrompt :: Context -> Maybe Text
38 contextSystemPrompt = _ctx_systemPrompt