Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
15 changes: 0 additions & 15 deletions message/content.go
Original file line number Diff line number Diff line change
Expand Up @@ -7,7 +7,6 @@
"cmp"
"encoding/base64"
"encoding/json"
"errors"
"fmt"
"maps"
"reflect"
Expand Down Expand Up @@ -341,7 +340,6 @@

Arguments string
CallID string
Error string `json:",omitempty"`
Name string
InformationalOnly bool

Expand All @@ -368,9 +366,6 @@
InformationalOnly: t.InformationalOnly,
Type: t.kind(),
}
if t.Error != nil {
tmp.Error = t.Error.Error()
}
return json.Marshal(tmp)
}

Expand All @@ -384,9 +379,6 @@
t.CallID = tmp.CallID
t.Name = tmp.Name
t.InformationalOnly = tmp.InformationalOnly
if tmp.Error != "" {
t.Error = errors.New(tmp.Error)
}
return nil
}

Expand All @@ -403,8 +395,7 @@
ContentHeader

CallID string
Error string `json:",omitempty"`
Result any `json:",omitempty"`

Check failure on line 398 in message/content.go

View workflow job for this annotation

GitHub Actions / lint

File is not properly formatted (gofumpt)

Type contentKind
}
Expand All @@ -425,9 +416,6 @@
Result: t.Result,
Type: t.kind(),
}
if t.Error != nil {
tmp.Error = t.Error.Error()
}
return json.Marshal(tmp)
}

Expand All @@ -439,9 +427,6 @@
t.ContentHeader = tmp.ContentHeader
t.CallID = tmp.CallID
t.Result = tmp.Result
if tmp.Error != "" {
t.Error = errors.New(tmp.Error)
}
return nil
}

Expand Down
56 changes: 55 additions & 1 deletion message/content_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -118,7 +118,6 @@ func TestContentEncoding_Roundtrip(t *testing.T) {
&message.FunctionResultContent{
CallID: "call-123",
Result: map[string]any{"key": "value"},
Error: errors.New("sample error"),
},
&message.URIContent{
URI: "https://example.com/resource",
Expand Down Expand Up @@ -223,6 +222,61 @@ func TestContentEncoding_Roundtrip(t *testing.T) {
}
}

func TestFunctionCallContent_ErrorNotSerialized(t *testing.T) {
content := &message.FunctionCallContent{
CallID: "call-1",
Name: "doThing",
Arguments: `{"a":1}`,
Error: errors.New("mapping failed"),
}
data, err := json.Marshal(content)
if err != nil {
t.Fatal(err)
}
var raw map[string]any
if err := json.Unmarshal(data, &raw); err != nil {
t.Fatal(err)
}
if _, ok := raw["Error"]; ok {
t.Fatalf("Error must not be serialized, got %s", data)
}

var decoded message.FunctionCallContent
if err := json.Unmarshal(data, &decoded); err != nil {
t.Fatal(err)
}
if decoded.Error != nil {
t.Fatalf("Error must be nil after unmarshal, got %v", decoded.Error)
}
}

func TestFunctionResultContent_ErrorNotSerialized(t *testing.T) {
content := &message.FunctionResultContent{
CallID: "call-1",
Result: "ok",
Error: errors.New("function failed"),
}
data, err := json.Marshal(content)
if err != nil {
t.Fatal(err)
}
var raw map[string]any
if err := json.Unmarshal(data, &raw); err != nil {
t.Fatal(err)
}
if _, ok := raw["Error"]; ok {
t.Fatalf("Error must not be serialized, got %s", data)
}

var decoded message.FunctionResultContent
if err := json.Unmarshal(data, &decoded); err != nil {
t.Fatal(err)
}
if decoded.Error != nil {
t.Fatalf("Error must be nil after unmarshal, got %v", decoded.Error)
}
}

func TestContentEncoding_PreservesAdditionalProperties(t *testing.T) {
original := &message.TextContent{
ContentHeader: message.ContentHeader{
Expand Down
Loading