feat: add browser automation tool using Vercel agent-browser

- Add src/tools/browser.rs with BrowserTool implementation
- Wraps agent-browser CLI for AI-optimized web browsing
- Supports: open, snapshot, click, fill, type, screenshot, wait, etc.
- Uses refs (@e1, @e2) from accessibility snapshots for precise element selection
- JSON output mode for LLM integration
- Security: allowlist-only domains, blocks private/local hosts
- Add session_name to BrowserConfig for persistent sessions
- Register BrowserTool in tools/mod.rs alongside BrowserOpenTool

All tests pass.
This commit is contained in:
argenis de la rosa 2026-02-14 15:46:36 -05:00
parent 153d6ff149
commit 554f6e9ea5
5 changed files with 1084 additions and 15 deletions

View file

@ -13,12 +13,29 @@ FROM gcr.io/distroless/cc-debian12:nonroot
COPY --from=builder /app/target/release/zeroclaw /usr/local/bin/zeroclaw
# Default workspace (owned by nonroot user)
VOLUME ["/workspace"]
ENV ZEROCLAW_WORKSPACE=/workspace
# Default workspace and data directory (owned by nonroot user)
VOLUME ["/data"]
ENV ZEROCLAW_WORKSPACE=/data/workspace
# ── Environment variable configuration (Docker-native setup) ──
# These can be overridden at runtime via docker run -e or docker-compose
#
# Required:
# API_KEY or ZEROCLAW_API_KEY - Your LLM provider API key
#
# Optional:
# PROVIDER or ZEROCLAW_PROVIDER - LLM provider (default: openrouter)
# Options: openrouter, openai, anthropic, ollama
# ZEROCLAW_MODEL - Model to use (default: anthropic/claude-sonnet-4-20250514)
# PORT or ZEROCLAW_GATEWAY_PORT - Gateway port (default: 3000)
#
# Example:
# docker run -e API_KEY=sk-... -e PROVIDER=openrouter zeroclaw/zeroclaw
# Explicitly set non-root user (distroless:nonroot defaults to 65534, but be explicit)
USER 65534:65534
EXPOSE 3000
ENTRYPOINT ["zeroclaw"]
CMD ["gateway"]