-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathopencode_test.go
More file actions
112 lines (97 loc) · 3.47 KB
/
Copy pathopencode_test.go
File metadata and controls
112 lines (97 loc) · 3.47 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
package compact
import (
"testing"
"github.com/GrayCodeAI/trace/redact"
)
func TestCompact_OpenCodeFixture(t *testing.T) {
t.Parallel()
assertFixtureTransform(t, agentOpts("opencode"), "testdata/opencode_full.jsonl", "testdata/opencode_expected.jsonl")
}
func TestCompact_OpenCodeTokenUsage(t *testing.T) {
t.Parallel()
input := []byte(`{
"info":{"id":"ses-1","title":"test","version":"1.0"},
"messages":[
{
"info":{"id":"msg-u1","role":"user","time":{"created":1700000000000}},
"parts":[{"type":"text","text":"hello"}]
},
{
"info":{"id":"msg-a1","role":"assistant","time":{"created":1700000001000,"completed":1700000002000},
"tokens":{"total":500,"input":150,"output":90,"reasoning":0,"cache":{"read":100,"write":160}}},
"parts":[{"type":"text","text":"Hi there!"}]
}
]
}`)
expected := []string{
`{"v":1,"agent":"opencode","cli_version":"0.5.1","type":"user","ts":"2023-11-14T22:13:20Z","content":[{"text":"hello"}]}`,
`{"v":1,"agent":"opencode","cli_version":"0.5.1","type":"assistant","ts":"2023-11-14T22:13:21Z","id":"msg-a1","input_tokens":150,"output_tokens":90,"content":[{"type":"text","text":"Hi there!"}]}`,
}
result, err := Compact(redact.AlreadyRedacted(input), agentOpts("opencode"))
if err != nil {
t.Fatalf("unexpected error: %v", err)
}
assertJSONLines(t, result, expected)
}
func TestCompact_OpenCodeStartLine(t *testing.T) {
t.Parallel()
input := []byte(`{
"info":{"id":"ses-1","title":"test","version":"1.0"},
"messages":[
{
"info":{"id":"msg-u1","role":"user","time":{"created":1700000000000}},
"parts":[{"type":"text","text":"hello"}]
},
{
"info":{"id":"msg-a1","role":"assistant","time":{"created":1700000001000}},
"parts":[{"type":"text","text":"Hi there!"}]
},
{
"info":{"id":"msg-u2","role":"user","time":{"created":1700000002000}},
"parts":[{"type":"text","text":"bye"}]
}
]
}`)
t.Run("skip first message", func(t *testing.T) {
t.Parallel()
opts := MetadataFields{Agent: "opencode", CLIVersion: "0.5.1", StartLine: 1}
expected := []string{
`{"v":1,"agent":"opencode","cli_version":"0.5.1","type":"assistant","ts":"2023-11-14T22:13:21Z","id":"msg-a1","content":[{"type":"text","text":"Hi there!"}]}`,
`{"v":1,"agent":"opencode","cli_version":"0.5.1","type":"user","ts":"2023-11-14T22:13:22Z","content":[{"text":"bye"}]}`,
}
result, err := Compact(redact.AlreadyRedacted(input), opts)
if err != nil {
t.Fatalf("unexpected error: %v", err)
}
assertJSONLines(t, result, expected)
})
t.Run("skip all messages", func(t *testing.T) {
t.Parallel()
opts := MetadataFields{Agent: "opencode", CLIVersion: "0.5.1", StartLine: 100}
result, err := Compact(redact.AlreadyRedacted(input), opts)
if err != nil {
t.Fatalf("unexpected error: %v", err)
}
assertJSONLines(t, result, nil)
})
}
func TestCompact_OpenCodeNoTokensOmitsFields(t *testing.T) {
t.Parallel()
input := []byte(`{
"info":{"id":"ses-1","title":"test","version":"1.0"},
"messages":[
{
"info":{"id":"msg-a1","role":"assistant","time":{"created":1700000001000}},
"parts":[{"type":"text","text":"no tokens here"}]
}
]
}`)
expected := []string{
`{"v":1,"agent":"opencode","cli_version":"0.5.1","type":"assistant","ts":"2023-11-14T22:13:21Z","id":"msg-a1","content":[{"type":"text","text":"no tokens here"}]}`,
}
result, err := Compact(redact.AlreadyRedacted(input), agentOpts("opencode"))
if err != nil {
t.Fatalf("unexpected error: %v", err)
}
assertJSONLines(t, result, expected)
}