fix: address code review feedback on browser tool

- Handle ignored error from AddCookies in cookie delete operation
- Check os.MkdirAll error in workspace directory creation
- Store Pages() result in variable to avoid redundant calls
- Document CdpURL/WsURL field precedence in BrowserConfig

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
This commit is contained in:
strelov1 2026-02-15 01:20:27 -03:00
parent 71420794aa
commit 113d6705d8
3 changed files with 15 additions and 6 deletions

View file

@ -122,7 +122,10 @@ func createToolRegistry(workspace string, restrict bool, cfg *config.Config, msg
func NewAgentLoop(cfg *config.Config, msgBus *bus.MessageBus, provider providers.LLMProvider) *AgentLoop { func NewAgentLoop(cfg *config.Config, msgBus *bus.MessageBus, provider providers.LLMProvider) *AgentLoop {
workspace := cfg.WorkspacePath() workspace := cfg.WorkspacePath()
os.MkdirAll(workspace, 0755) if err := os.MkdirAll(workspace, 0755); err != nil {
logger.ErrorCF("agent", "Failed to create workspace directory",
map[string]interface{}{"path": workspace, "error": err.Error()})
}
restrict := cfg.Agents.Defaults.RestrictToWorkspace restrict := cfg.Agents.Defaults.RestrictToWorkspace

View file

@ -213,8 +213,8 @@ type WebToolsConfig struct {
type BrowserConfig struct { type BrowserConfig struct {
Enabled bool `json:"enabled" env:"PICOCLAW_TOOLS_BROWSER_ENABLED"` Enabled bool `json:"enabled" env:"PICOCLAW_TOOLS_BROWSER_ENABLED"`
Protocol string `json:"protocol" env:"PICOCLAW_TOOLS_BROWSER_PROTOCOL"` Protocol string `json:"protocol" env:"PICOCLAW_TOOLS_BROWSER_PROTOCOL"`
CdpURL string `json:"cdp_url" env:"PICOCLAW_TOOLS_BROWSER_CDP_URL"` CdpURL string `json:"cdp_url" env:"PICOCLAW_TOOLS_BROWSER_CDP_URL"` // WebSocket URL for CDP protocol (Chromium/Browserless)
WsURL string `json:"ws_url" env:"PICOCLAW_TOOLS_BROWSER_WS_URL"` WsURL string `json:"ws_url" env:"PICOCLAW_TOOLS_BROWSER_WS_URL"` // WebSocket URL for Playwright wire protocol (Firefox/Camoufox); takes precedence over CdpURL if set
Token string `json:"token" env:"PICOCLAW_TOOLS_BROWSER_TOKEN"` Token string `json:"token" env:"PICOCLAW_TOOLS_BROWSER_TOKEN"`
Stealth bool `json:"stealth" env:"PICOCLAW_TOOLS_BROWSER_STEALTH"` Stealth bool `json:"stealth" env:"PICOCLAW_TOOLS_BROWSER_STEALTH"`
LaunchTimeout int `json:"launch_timeout" env:"PICOCLAW_TOOLS_BROWSER_LAUNCH_TIMEOUT"` LaunchTimeout int `json:"launch_timeout" env:"PICOCLAW_TOOLS_BROWSER_LAUNCH_TIMEOUT"`

View file

@ -240,8 +240,12 @@ func (t *BrowserTool) ensureConnected() error {
// Reuse existing page from browser context if available (common for CDP) // Reuse existing page from browser context if available (common for CDP)
var page playwright.Page var page playwright.Page
contexts := browser.Contexts() contexts := browser.Contexts()
if len(contexts) > 0 && len(contexts[0].Pages()) > 0 { var pages []playwright.Page
page = contexts[0].Pages()[0] if len(contexts) > 0 {
pages = contexts[0].Pages()
}
if len(pages) > 0 {
page = pages[0]
} else { } else {
page, err = browser.NewPage() page, err = browser.NewPage()
if err != nil { if err != nil {
@ -623,7 +627,9 @@ func (t *BrowserTool) doCookies(args map[string]interface{}) *ToolResult {
} }
if len(toReAdd) > 0 { if len(toReAdd) > 0 {
browserCtx.AddCookies(toReAdd) if err := browserCtx.AddCookies(toReAdd); err != nil {
return &ToolResult{ForLLM: fmt.Sprintf("Error re-adding cookies after delete: %v", err)}
}
} }
return &ToolResult{ForLLM: fmt.Sprintf("Cookie %q deleted", name)} return &ToolResult{ForLLM: fmt.Sprintf("Cookie %q deleted", name)}