# cdp-cli Wrapper Go de las funciones del dominio `browser` del registry. Subcomandos one-shot para hablar con una instancia de Chrome via CDP. Diseñado para coexistir con la navegacion humana: el binario NO mata al browser al salir, conecta, ejecuta y se va. Tu sigues navegando, los enrichers/agentes invocan `cdp-cli` cuando necesitan HTML post-JS, screenshots, evaluar JS, etc. Issue: [`0038-browser-launch-cdp-control.md`](../issues/0038-browser-launch-cdp-control.md) (fase 0038c). ## Build ```bash cd projects/osint_graph/apps/graph_explorer/cdp-cli go build -o cdp-cli . ``` ## Funciones del registry envueltas | Subcomando | Funcion | |---|---| | `launch` | `chrome_launch_go_browser` | | `navigate` | `cdp_navigate_go_browser` (+ `cdp_wait_load` opcional) | | `get-html` | `cdp_get_html_go_browser` | | `screenshot` | `cdp_screenshot_go_browser` | | `evaluate` | `cdp_evaluate_go_browser` | | `click` | `cdp_click_go_browser` | | `type` | `cdp_type_text_go_browser` | | `wait-load` | `cdp_wait_load_go_browser` | | `wait-element` | `cdp_wait_element_go_browser` | | `set-cookie` | `cdp_set_cookie_go_browser` | ## Uso tipico ```bash # 1) Lanzar Chrome con perfil aislado del app ./cdp-cli launch \ --port 9222 \ --user-data-dir /home/lucas/fn_registry/projects/osint_graph/apps/graph_explorer/local_files/browser_profiles/default # Output: pid=12345 port=9222 # 2) Navegar (en otra terminal o desde otro proceso) ./cdp-cli navigate --port 9222 --url https://example.com # 3) HTML post-JS ./cdp-cli get-html --port 9222 > page.html # 4) Screenshot pagina completa ./cdp-cli screenshot --port 9222 --out /tmp/shot.png --full-page # 5) Eval JS ./cdp-cli evaluate --port 9222 --js "document.querySelectorAll('a').length" ``` ## Modo "tu y yo a la vez" Una unica instancia de Chrome aceptando varios clientes CDP simultaneos: ``` ┌──────────────────────────────┐ chrome --remote-debugging-port=9222 --user-data-dir=... │ │ │ ▼ ▼ Tu navegando manualmente cdp-cli get-html (extension issue 0014) (enricher / agente) ``` Cookies/login son los del profile → tu logueas LinkedIn una vez, los enrichers heredan la sesion. ## Roadmap (fuera de v0) - `cdp-cli` lee `browser_sessions` de `graph_explorer.db` para resolver `--profile NAME` → puerto (fase 0038d, panel UI). - Auto-launch si el profile pedido no esta vivo (0038g). - Enricher `fetch_webpage_browser` que invoca `cdp-cli get-html` en lugar de HTTP plano (0038e).