loop: disable multiple choice tool in oneshot mode
This change disables the multiple choice tool when Sketch is running in one-shot mode.
It adds an OneShot flag to the AgentConfig struct and conditionally includes
the multiple choice tool based on this flag.
Co-Authored-By: sketch <hello@sketch.dev>
diff --git a/cmd/sketch/main.go b/cmd/sketch/main.go
index bf0d735..d12adbb 100644
--- a/cmd/sketch/main.go
+++ b/cmd/sketch/main.go
@@ -395,6 +395,7 @@
OutsideOS: flags.outsideOS,
OutsideWorkingDir: flags.outsideWorkingDir,
InDocker: true, // This is true when we're in container mode or simulating it in unsafe mode
+ OneShot: flags.oneShot,
}
agent := loop.NewAgent(agentConfig)
diff --git a/loop/agent.go b/loop/agent.go
index b5de370..0f08d36 100644
--- a/loop/agent.go
+++ b/loop/agent.go
@@ -696,6 +696,7 @@
ClientGOARCH string
InDocker bool
UseAnthropicEdit bool
+ OneShot bool
// Outside information
OutsideHostname string
OutsideOS string
@@ -864,7 +865,12 @@
convo.Tools = []*llm.Tool{
bashTool, claudetool.Keyword,
claudetool.Think, a.titleTool(), a.precommitTool(), makeDoneTool(a.codereview, a.config.GitUsername, a.config.GitEmail),
- a.codereview.Tool(), a.multipleChoiceTool(),
+ a.codereview.Tool(),
+ }
+
+ // One-shot mode is non-interactive, multiple choice requires human response
+ if !a.config.OneShot {
+ convo.Tools = append(convo.Tools, a.multipleChoiceTool())
}
convo.Tools = append(convo.Tools, browserTools...)