Files
navegator_dashboard/app.md
T
egutierrez 3ad26e4f6b chore: auto-commit (4 archivos)
- app.md
- appicon.ico
- autoextract_panel.cpp
- recipes_panel.cpp

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
2026-05-19 00:31:34 +02:00

7.4 KiB

name, lang, domain, version, description, tags, uses_functions, uses_types, uses_modules, framework, entry_point, dir_path, repo_url, icon, e2e_checks
name lang domain version description tags uses_functions uses_types uses_modules framework entry_point dir_path repo_url icon e2e_checks
navegator_dashboard cpp tools 0.1.0 Cuadro de mandos para gestionar instancias Chrome con remote debugging. Lista navegadores corriendo (visibles + headless), permite lanzar/matar perfiles, inspeccionar pestañas, ejecutar JS, ver peticiones de red. Puente WSL→Windows que centraliza el control que hoy hacemos por scripts dispersos.
imgui
browser
cdp
dashboard
windows
navegator
auto-extract
recipes
picker
claude_cli_prompt_py_infra
cdp_get_ax_tree_py_pipelines
llm_propose_scraping_schema_py_infra
cdp_extract_recipe_py_pipelines
cdp_open_url_and_wait_py_pipelines
validate_recipe_yaml_py_core
infer_json_rows_schema_py_core
cdp_pick_element_js_js_browser
data_table_cpp
imgui main.cpp projects/navegator/apps/navegator_dashboard
phosphor accent
compass #2563eb
id cmd timeout_s
build_windows cd /home/lucas/fn_registry && ./fn run compile_cpp_app navegator_dashboard 600
id cmd
exe_present test -f /mnt/c/Users/lucas/Desktop/apps/navegator_dashboard/navegator_dashboard.exe
id cmd timeout_s severity
api_health curl -sf http://127.0.0.1:19333/health 5 warning
id cmd timeout_s severity
api_browsers curl -sf http://127.0.0.1:19333/browsers 5 warning
id cmd severity
claude_cli_available command -v claude warning
id cmd severity
python_pipelines_importable python3 -c 'import sys, os; sys.path.insert(0, os.path.join(os.environ["FN_REGISTRY_ROOT"], "python", "functions", "pipelines")); from cdp_extract_recipe import cdp_extract_recipe' warning

Proposito

Centralizar el control de todas las instancias de Chrome con --remote-debugging-port que se lancen en el equipo. Sustituye los scripts sueltos start.sh/stop.sh/nav.sh de projects/navegator/scripts/ por una UI unificada + API HTTP local.

Casos de uso:

  • Ver de un vistazo cuantos Chrome estan vivos, en que puerto, con que profile, headless o no.
  • Lanzar/matar perfiles desde la UI sin tocar terminal.
  • Listar pestañas de cada instancia, navegar, cerrar, capturar HTML/screenshot.
  • Inspeccionar peticiones de red en vivo (CDP Network.* events).
  • Exponer todo eso como API HTTP local para que scripts/agentes/cdp-cli/graph_explorer hablen con un solo endpoint en vez de cada uno re-implementar el control.

Arquitectura

┌───────────── navegator_dashboard.exe (Windows) ─────────────┐
│                                                              │
│  UI ImGui (panels)         HTTP API (127.0.0.1:1923X)        │
│  ├── Browsers              GET  /browsers                    │
│  ├── Tabs                  POST /browser/spawn               │
│  ├── Tab Detail            POST /browser/{port}/kill         │
│  └── Network               GET  /browser/{port}/tabs         │
│                            POST /browser/{port}/navigate     │
│  Worker threads:           GET  /browser/{port}/tab/{id}/html│
│  ├── ChromeScanner         GET  /browser/{port}/network/log  │
│  ├── CdpHttpClient         ...                                │
│  └── CdpWsStream                                              │
└──────────────────────────────────────────────────────────────┘
                  ↓ scan/spawn/kill                ↓ /json + ws
┌─────────── chrome.exe N instancias (Windows) ───────────────┐
│  perfil=default port=19222 [visible]                         │
│  perfil=osint port=19223 [visible]                           │
│  perfil=headless_scrape port=19224 [headless]                │
└──────────────────────────────────────────────────────────────┘

Panels (v0 → v2)

Panel v0 v1 (issue 0002) v1.5 v2 (issue 0002) v3
Browsers scan + spawn + kill + Select row → cross-panel context grupos (perfiles favoritos) grupos drag&drop
Tabs stub list + Focus/Close/New + filter drag&drop entre instancias
Tab Detail stub placeholder upgrade HTML preview + screenshot + REPL live mirror (CDP screencast)
Network stub DevTools-like: tabla + filtros (Doc/CSS/JS/XHR/Img/Media/Font/WS/Other) + waterfall + detalle (Headers/Payload/Response/Cookies/Timing/WS Messages) + Preserve log + Disable cache + Pause + Export HAR extract endpoints

Stack

  • fn::run_app (cpp/framework/app_base.h) — shell estandar (PATTERNS.md).
  • ImGui + ImPlot.
  • ChromeScanner: Get-CimInstance Win32_Process invocado con _popen. Itera ~1 Hz.
  • ChromeLauncher: CreateProcess Windows. Argumentos derivados de chrome_launch_go_browser (registry).
  • CDP HTTP (cdp_http.{h,cpp}): WinSock raw, GET /json/version, /json, PUT /json/new, GET /json/activate/{id}, /json/close/{id}. v1 ✓.
  • CDP WS (cdp_ws.{h,cpp}): handshake RFC 6455 + framing manual. Async dispatcher con queue + wait_response. v2 ✓ (parser de mensajes Network.* en network_state).
  • NetworkSession (network_state.{h,cpp}): consume Network.requestWillBeSent, responseReceived, dataReceived, loadingFinished/Failed, webSocketCreated/FrameSent/FrameReceived/Closed, Page.frameNavigated, Page.domContentEventFired, Page.loadEventFired. Mantiene log + stats + export HAR 1.2.
  • JSON parser: crude_json del vendor imgui-node-editor (dual-license public domain). Linkado como dep estatica para reusar — sin codigo de node-editor en runtime.
  • HTTP API local: WinSock raw bind 127.0.0.1. v0+v1+v2 endpoints en local_api.cpp.

Decisiones consciente (cpp_apps.md §9)

  • viewports: true (default) — la app puede arrastrar paneles fuera del main.
  • init_gl_loader: false — solo ImGui, sin OpenGL custom.
  • local_files/: la app guarda su app_settings.ini + navegator_dashboard.db con historial de instancias y perfiles favoritos.
  • Modo CLI: --api-only --port N para correr sin UI (daemon puro). v1+.

Plataforma

  • Windows-only. La app vive en WSL como codigo pero solo se compila como binario Windows (mingw-w64). En Linux, CMakeLists.txt hace return() antes de add_imgui_app para que cpp/build/ no falle.
  • Razon: 90% de la logica usa Win32 (CreateProcess, WMI, taskkill). Linux Chrome es secundario y ya esta cubierto por cdp-cli directo.

Roadmap

  • v0 (este commit): skeleton + Browsers panel funcional + 3 stubs.
  • v1: CDP HTTP/WS in-process + Tabs + Tab Detail + Network panel.
  • v2: HTTP API local + integracion con cdp-cli (cdp-cli puede delegar al dashboard si esta vivo).
  • v3: streaming live de pestañas (CDP Page.startScreencast) — arquitectura ya prevista en issue 0038.

Capability growth log

Una linea por bump SemVer. Bump-type segun .claude/commands/version.md:

  • major: breaking observable (CLI args, schema BBDD propia, formato wire).

  • minor: feature aditiva (nuevo panel, endpoint, opcion).

  • patch: bugfix sin cambio observable.

  • v0.1.0 (2026-05-18) — baseline.