Skip to content

Commit e3c69ea

Browse files
authored
Merge pull request #1109 from rumpl/fix-history
Put user messages to the history
2 parents 1422d70 + b9dd947 commit e3c69ea

3 files changed

Lines changed: 60 additions & 4 deletions

File tree

pkg/history/history.go

Lines changed: 25 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -14,10 +14,31 @@ type History struct {
1414
current int
1515
}
1616

17-
func New() (*History, error) {
18-
homeDir, err := os.UserHomeDir()
19-
if err != nil {
20-
return nil, err
17+
type options struct {
18+
homeDir string
19+
}
20+
21+
type Opt func(*options)
22+
23+
func WithBaseDir(dir string) Opt {
24+
return func(o *options) {
25+
o.homeDir = dir
26+
}
27+
}
28+
29+
func New(opts ...Opt) (*History, error) {
30+
o := &options{}
31+
for _, opt := range opts {
32+
opt(o)
33+
}
34+
35+
homeDir := o.homeDir
36+
if homeDir == "" {
37+
var err error
38+
homeDir, err = os.UserHomeDir()
39+
if err != nil {
40+
return nil, err
41+
}
2142
}
2243

2344
h := &History{

pkg/tui/page/chat/chat.go

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -646,6 +646,8 @@ func (p *chatPage) processMessage(msg editor.SendMsg) tea.Cmd {
646646
p.msgCancel()
647647
}
648648

649+
_ = p.history.Add(msg.Content)
650+
649651
var ctx context.Context
650652
ctx, p.msgCancel = context.WithCancel(context.Background())
651653

pkg/tui/page/chat/chat_test.go

Lines changed: 33 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,33 @@
1+
package chat
2+
3+
import (
4+
"testing"
5+
6+
"github.com/stretchr/testify/assert"
7+
"github.com/stretchr/testify/require"
8+
9+
"github.com/docker/cagent/pkg/history"
10+
"github.com/docker/cagent/pkg/tui/components/editor"
11+
)
12+
13+
func TestProcessMessage_AddsToHistory(t *testing.T) {
14+
t.Parallel()
15+
16+
homeDir := t.TempDir()
17+
hist, err := history.New(history.WithBaseDir(homeDir))
18+
require.NoError(t, err)
19+
20+
p := &chatPage{
21+
history: hist,
22+
}
23+
24+
p.processMessage(editor.SendMsg{Content: "/new"})
25+
p.processMessage(editor.SendMsg{Content: "/compact"})
26+
p.processMessage(editor.SendMsg{Content: "/copy"})
27+
28+
assert.Equal(t, []string{"/new", "/compact", "/copy"}, hist.Messages)
29+
30+
hist2, err := history.New(history.WithBaseDir(homeDir))
31+
require.NoError(t, err)
32+
assert.Equal(t, []string{"/new", "/compact", "/copy"}, hist2.Messages)
33+
}

0 commit comments

Comments
 (0)