59af21f71c
- app.md - appicon.ico Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
3.7 KiB
3.7 KiB
name, lang, domain, version, description, tags, uses_functions, uses_types, uses_modules, framework, entry_point, dir_path, repo_url, icon
| name | lang | domain | version | description | tags | uses_functions | uses_types | uses_modules | framework | entry_point | dir_path | repo_url | icon | |||||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| odr_console | cpp | tools | 0.1.0 | Lanzador GUI de funciones del registry para recolectar datos online. Panel de busqueda FTS5, jobs queue async (workers concurrentes), pipeline builder DAG, browser DuckDB, assertions/proposals. Aplica bucle reactivo de 5 pasos sobre operations.db propia. |
|
|
imgui | main.cpp | projects/online_data_recopilation/apps/odr_console |
|
Notas
App C++ ImGui que orquesta:
- Launcher panel — busqueda FTS5 sobre
registry.db. Lanza cualquier funcion/pipeline con form auto-generado desdeparams_schema. - Pipeline builder — DAG visual con
imgui_node_editor. Compone collectors validando composabilidad (returns↔uses_types). Persiste enoperations.relationscon statusdesigned. - Jobs queue — Pool de N workers (default 4). Cada job = subprocess Python collector. Live progress por panel (
PROGRESS:en stderr). Reusajobs_pool_cpp_core(extraido de osint_graph en issue 0065). - Datasets browser — Panel DuckDB embebido. Query editor + tabla preview + ImPlot para charts. Lee parquet de
vaults/odr_data/. - Entities + assertions — Vista de
operations.entitiespor dataset. Editor SQL para assertions. Boton "Eval --react" lanza paso 4 del bucle. - Proposals inbox — Lista pending de
registry.proposalsoriginadas por assertions fallidas.
Estructura
odr_console/
main.cpp # fn::run_app + render() + paneles
views_launcher.cpp # Panel 1
views_pipelines.cpp # Panel 2
views_jobs.cpp # Panel 3
views_datasets.cpp # Panel 4
views_assertions.cpp # Panel 5
views_proposals.cpp # Panel 6
data_registry.cpp # Lee registry.db (FTS5, funcs, types)
data_operations.cpp # CRUD operations.db (relations/executions/entities/assertions)
data_duck.cpp # DuckDB connector + ingest
collectors/ # Mismo schema que enrichers de graph_explorer
api_hn_top/ # MVP: HackerNews top stories via API
manifest.yaml
run.py
migrations/ # operations.db migrations (esquema 5-pasos)
CMakeLists.txt
Local files (regla cpp_apps §7)
local_files/odr_console.ini— settings persistidaslocal_files/imgui.ini— layoutlocal_files/odr.duckdb— DuckDB embebido (datos crudos pequeños)local_files/cache/<sha[0:2]>/<sha>.{html,json,parquet}— cache addressableoperations.dbqueda en el dir del exe (consultable porfn ops)
Decisiones tomadas
| Tema | Decision |
|---|---|
| Workers default | 4 (mas que graph_explorer porque crawls esperan red) |
| operations.db | Una unica por la app |
| DuckDB | Embebido (linkar libduckdb), no subprocess |
| Collectors lang inicial | Python (espejo graph_explorer enrichers) |
| Browser | CDP via cdp-cli Go (issue 0038) cuando aplica |
Decisiones pendientes
- Refactor jobs system: en paralelo a MVP. Ver issue 0065.
- Schema operations.db: requiere migracion 001 con relations/executions/entities/types_snapshot/assertions/assertion_results (ver
fn_operations/migrations/).
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.