diff --git a/pkg/agent/loop.go b/pkg/agent/loop.go index cd4276155..458ee8b43 100644 --- a/pkg/agent/loop.go +++ b/pkg/agent/loop.go @@ -622,8 +622,9 @@ func (al *AgentLoop) runLLMIteration(ctx context.Context, messages []providers.M for _, tc := range response.ToolCalls { argumentsJSON, _ := json.Marshal(tc.Arguments) assistantMsg.ToolCalls = append(assistantMsg.ToolCalls, providers.ToolCall{ - ID: tc.ID, - Type: "function", + ID: tc.ID, + Type: "function", + ExtraContent: tc.ExtraContent, Function: &providers.FunctionCall{ Name: tc.Name, Arguments: string(argumentsJSON), diff --git a/pkg/providers/http_provider.go b/pkg/providers/http_provider.go index 4cf2c6db2..ae38c3762 100644 --- a/pkg/providers/http_provider.go +++ b/pkg/providers/http_provider.go @@ -129,8 +129,13 @@ func (p *HTTPProvider) parseResponse(body []byte) (*LLMResponse, error) { Message struct { Content string `json:"content"` ToolCalls []struct { - ID string `json:"id"` - Type string `json:"type"` + ID string `json:"id"` + Type string `json:"type"` + ExtraContent struct { + Google struct { + ThoughtSignature string `json:"thought_signature,omitempty"` + } `json:"google,omitempty"` + } `json:"extra_content,omitempty"` Function *struct { Name string `json:"name"` Arguments string `json:"arguments"` @@ -179,7 +184,12 @@ func (p *HTTPProvider) parseResponse(body []byte) (*LLMResponse, error) { } toolCalls = append(toolCalls, ToolCall{ - ID: tc.ID, + ID: tc.ID, + ExtraContent: ExtraContent{ + Google: GoogleExtraContent{ + ThoughtSignature: tc.ExtraContent.Google.ThoughtSignature, + }, + }, Name: name, Arguments: arguments, }) diff --git a/pkg/providers/types.go b/pkg/providers/types.go index 88b62e975..ab8dae7c8 100644 --- a/pkg/providers/types.go +++ b/pkg/providers/types.go @@ -1,13 +1,24 @@ package providers -import "context" +import ( + "context" +) type ToolCall struct { - ID string `json:"id"` - Type string `json:"type,omitempty"` - Function *FunctionCall `json:"function,omitempty"` - Name string `json:"name,omitempty"` - Arguments map[string]interface{} `json:"arguments,omitempty"` + ID string `json:"id"` + Type string `json:"type,omitempty"` + ExtraContent ExtraContent `json:"extra_content,omitempty"` + Function *FunctionCall `json:"function,omitempty"` + Name string `json:"name,omitempty"` + Arguments map[string]interface{} `json:"arguments,omitempty"` +} + +type ExtraContent struct { + Google GoogleExtraContent `json:"google,omitempty"` +} + +type GoogleExtraContent struct { + ThoughtSignature string `json:"thought_signature,omitempty"` } type FunctionCall struct { diff --git a/pkg/tools/types.go b/pkg/tools/types.go index f8205b8bd..747f91eb2 100644 --- a/pkg/tools/types.go +++ b/pkg/tools/types.go @@ -10,11 +10,20 @@ type Message struct { } type ToolCall struct { - ID string `json:"id"` - Type string `json:"type"` - Function *FunctionCall `json:"function,omitempty"` - Name string `json:"name,omitempty"` - Arguments map[string]interface{} `json:"arguments,omitempty"` + ID string `json:"id"` + Type string `json:"type"` + ExtraContent ExtraContent `json:"extra_content,omitempty"` + Function *FunctionCall `json:"function,omitempty"` + Name string `json:"name,omitempty"` + Arguments map[string]interface{} `json:"arguments,omitempty"` +} + +type ExtraContent struct { + Google GoogleExtraContent `json:"google,omitempty"` +} + +type GoogleExtraContent struct { + ThoughtSignature string `json:"thought_signature,omitempty"` } type FunctionCall struct {