claudetool: replace timeout parameter with slow_ok boolean
Empirically, the agent doesn't set timeouts long enough,
and doesn't retry on failure.
Give it only one decision to make: Is this maybe a slow command?
If, horror of horrors, your project can't accomplish tasks within the
default timeouts, there's a new command line flag to adjust them.
Co-Authored-By: sketch <hello@sketch.dev>
Change-ID: sc26e3516f28c22d4k
diff --git a/loop/agent.go b/loop/agent.go
index 82c3268..7a8fb8c 100644
--- a/loop/agent.go
+++ b/loop/agent.go
@@ -1060,6 +1060,8 @@
SkabandClient *skabandclient.SkabandClient
// MCP server configurations
MCPServers []string
+ // Timeout configuration for bash tool
+ BashTimeouts *claudetool.Timeouts
}
// NewAgent creates a new Agent.
@@ -1294,7 +1296,11 @@
return nil
}
- bashTool := claudetool.NewBashTool(bashPermissionCheck, claudetool.EnableBashToolJITInstall)
+ bashTool := &claudetool.BashTool{
+ CheckPermission: bashPermissionCheck,
+ EnableJITInstall: claudetool.EnableBashToolJITInstall,
+ Timeouts: a.config.BashTimeouts,
+ }
// Register all tools with the conversation
// When adding, removing, or modifying tools here, double-check that the termui tool display
@@ -1314,7 +1320,7 @@
browserTools = bTools
convo.Tools = []*llm.Tool{
- bashTool, claudetool.Keyword, claudetool.Patch(a.patchCallback),
+ bashTool.Tool(), claudetool.Keyword, claudetool.Patch(a.patchCallback),
claudetool.Think, claudetool.TodoRead, claudetool.TodoWrite, a.setSlugTool(), a.commitMessageStyleTool(), makeDoneTool(a.codereview),
a.codereview.Tool(), claudetool.AboutSketch,
}