diff --git a/pkg/browser/tool.go b/pkg/browser/tool.go index 53aa66d5..c6decebb 100644 --- a/pkg/browser/tool.go +++ b/pkg/browser/tool.go @@ -2,9 +2,11 @@ package browser import ( "context" - "encoding/base64" "encoding/json" "fmt" + "os" + "path/filepath" + "time" "github.com/nextlevelbuilder/goclaw/internal/tools" ) @@ -247,8 +249,13 @@ func (t *BrowserTool) handleScreenshot(ctx context.Context, args map[string]inte return tools.ErrorResult(fmt.Sprintf("screenshot failed: %v", err)) } - encoded := base64.StdEncoding.EncodeToString(data) - return tools.NewResult(fmt.Sprintf("Screenshot captured (%d bytes). Base64: %s", len(data), encoded[:min(100, len(encoded))])) + // Save to temp file so the media pipeline can deliver it (e.g. Telegram sendPhoto) + imagePath := filepath.Join(os.TempDir(), fmt.Sprintf("goclaw_screenshot_%d.png", time.Now().UnixNano())) + if err := os.WriteFile(imagePath, data, 0644); err != nil { + return tools.ErrorResult(fmt.Sprintf("failed to save screenshot: %v", err)) + } + + return &tools.Result{ForLLM: fmt.Sprintf("MEDIA:%s", imagePath)} } func (t *BrowserTool) handleNavigate(ctx context.Context, args map[string]interface{}) *tools.Result {