loop: make multiplechoice tool calls end the turn
Co-Authored-By: sketch <hello@sketch.dev>
Change-ID: s8d507faf9c095824sk
diff --git a/loop/agent_test.go b/loop/agent_test.go
index ce44352..31e9664 100644
--- a/loop/agent_test.go
+++ b/loop/agent_test.go
@@ -256,7 +256,7 @@
type MockConvoInterface struct {
sendMessageFunc func(message llm.Message) (*llm.Response, error)
sendUserTextMessageFunc func(s string, otherContents ...llm.Content) (*llm.Response, error)
- toolResultContentsFunc func(ctx context.Context, resp *llm.Response) ([]llm.Content, error)
+ toolResultContentsFunc func(ctx context.Context, resp *llm.Response) ([]llm.Content, bool, error)
toolResultCancelContentsFunc func(resp *llm.Response) ([]llm.Content, error)
cancelToolUseFunc func(toolUseID string, cause error) error
cumulativeUsageFunc func() conversation.CumulativeUsage
@@ -280,11 +280,11 @@
return nil, nil
}
-func (m *MockConvoInterface) ToolResultContents(ctx context.Context, resp *llm.Response) ([]llm.Content, error) {
+func (m *MockConvoInterface) ToolResultContents(ctx context.Context, resp *llm.Response) ([]llm.Content, bool, error) {
if m.toolResultContentsFunc != nil {
return m.toolResultContentsFunc(ctx, resp)
}
- return nil, nil
+ return nil, false, nil
}
func (m *MockConvoInterface) ToolResultCancelContents(resp *llm.Response) ([]llm.Content, error) {
@@ -469,7 +469,7 @@
// mockConvoInterface is a mock implementation of ConvoInterface for testing
type mockConvoInterface struct {
SendMessageFunc func(message llm.Message) (*llm.Response, error)
- ToolResultContentsFunc func(ctx context.Context, resp *llm.Response) ([]llm.Content, error)
+ ToolResultContentsFunc func(ctx context.Context, resp *llm.Response) ([]llm.Content, bool, error)
}
func (c *mockConvoInterface) GetID() string {
@@ -501,11 +501,11 @@
return m.SendMessage(llm.UserStringMessage(s))
}
-func (m *mockConvoInterface) ToolResultContents(ctx context.Context, resp *llm.Response) ([]llm.Content, error) {
+func (m *mockConvoInterface) ToolResultContents(ctx context.Context, resp *llm.Response) ([]llm.Content, bool, error) {
if m.ToolResultContentsFunc != nil {
return m.ToolResultContentsFunc(ctx, resp)
}
- return []llm.Content{}, nil
+ return []llm.Content{}, false, nil
}
func (m *mockConvoInterface) ToolResultCancelContents(resp *llm.Response) ([]llm.Content, error) {
@@ -640,8 +640,8 @@
}
// Tool result content handler
- mockConvo.ToolResultContentsFunc = func(ctx context.Context, resp *llm.Response) ([]llm.Content, error) {
- return []llm.Content{llm.StringContent("Tool executed successfully")}, nil
+ mockConvo.ToolResultContentsFunc = func(ctx context.Context, resp *llm.Response) ([]llm.Content, bool, error) {
+ return []llm.Content{llm.StringContent("Tool executed successfully")}, false, nil
}
// Track state transitions