# Core runtime dependencies (also declared in setup.py install_requires).
# Install just these for a minimal CLI:  pip install .
requests>=2.28.0
certifi>=2024.0.0
rich>=13.0.0
prompt_toolkit>=3.0.0
pyte>=0.8.2,<0.9
pysocks>=1.7
detect-secrets==1.5.0

# Optional extras - install via pip install .[<extra>]  (e.g. .[browser])
#   [browser]  websockets, playwright  - headless-browser live-view + CDP tools
#   [mcp]      mcp                     - MCP server tools (/mcp)
#   [all]      all of the above
#
# The lines below are for `pip install -r requirements.txt` (dev convenience).

# Optional — enables /mcp commands and MCP-server tools.
# laintas-cli starts and runs without this; the /mcp command will tell
# you it's missing and how to install. Comment out if you don't need MCP.
mcp>=1.0

# Optional — enables `laintas-cli --acp` (Agent Client Protocol over stdio,
# how ACP editors like Zed drive the CLI). Without it, --acp explains what
# to install and exits.
agent-client-protocol>=0.2

# Optional — enables the headless-browser live-view stack (browser.* tools).
# The CLI runs without this; browser._debug_open will report the missing dep.
# Requires system packages: Xvfb, x11vnc, google-chrome (or chromium).
#   apt install xvfb x11vnc
# websockets is the WS↔RFB bridge to the backend /vnc relay.
websockets>=12.0

# Optional (P2+) — enables full browser automation (click, type, screenshot,
# DOM query) via Playwright. browser._debug_open works without this (uses raw
# CDP), but the browser.* tool family requires it.
# Also what lets web.fetch render a page when a plain request is blocked or the
# page turns out to be client-rendered.
#   pip install playwright && playwright install chromium
playwright>=1.40

# Optional — article extraction for web.fetch. Without it the fallback keeps
# nav bars, cookie banners and footers in the text handed to the model, so this
# is the single biggest quality difference in what the AI reads off a page.
trafilatura>=1.8

# Optional — a real browser's TLS/HTTP2 fingerprint, used only to retry a page
# that came back blocked. Bot walls fingerprint the handshake, which no header
# can disguise. Ships binary wheels, hence optional rather than core.
curl_cffi>=0.7
cryptography>=41.0
