feat: graph_explorer app — agnostic operations.db viewer (issue 0049k)
App C++ ImGui que abre cualquier operations.db del registry y lo visualiza
como grafo con shapes/iconos/layouts/filtros/labels.
Composicion del registry:
- viz/graph_renderer + graph_force_layout(_gpu) + graph_layouts +
graph_viewport + graph_labels + graph_icons + graph_sources
- core: toolbar, modal_dialog, select, text_input, tree_view, page_header,
fullscreen_window, button, badge, empty_state
Capas:
- data.{h,cpp} — dispatcher GraphLoadFn (operations hoy; json/graphml manana).
- types_registry.{h,cpp} — parser YAML minimal + tabler_codepoint_by_name +
apply_types_yaml + IconAtlas builder.
- views.{h,cpp} — Toolbar, Legend, Inspector, Stats, modal Filters/Open.
- layout_store.{h,cpp} — graph_explorer.db SQLite con tabla layouts(graph_hash,
node_id, x, y, pinned, updated_at). UPSERT por nodo.
- main.cpp — CLI (--input/--types/--layout) + fn::run_app + bucle
force layout (CPU/GPU toggle) + render con 3 columnas (Legend / Viewport /
Inspector+Stats).
examples/types.yaml: 10 entidades OSINT (Person/Email/Domain/Phone/Org/IBAN/
Account/Document/Address/Url) + 5 relaciones (owns/knows/located_in/
transfers_to/member_of) con shapes Tabler reales.
Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
This commit is contained in:
@@ -0,0 +1,77 @@
|
||||
# Ejemplo OSINT — tipos comunes en investigacion de entidades.
|
||||
# Color como "#RRGGBB" (con o sin alpha "#RRGGBBAA").
|
||||
# Shapes: circle | square | diamond | hex | triangle | rounded_square
|
||||
# Iconos: nombres ti-* mapeados en types_registry.cpp::tabler_codepoint_by_name
|
||||
# Estilos de relacion: solid | dashed | dotted
|
||||
|
||||
entities:
|
||||
- name: Person
|
||||
color: "#5B8DEF"
|
||||
shape: circle
|
||||
icon: ti-user
|
||||
|
||||
- name: Email
|
||||
color: "#58CA8C"
|
||||
shape: square
|
||||
icon: ti-mail
|
||||
|
||||
- name: Domain
|
||||
color: "#F4B860"
|
||||
shape: diamond
|
||||
icon: ti-world
|
||||
|
||||
- name: Phone
|
||||
color: "#E36AC0"
|
||||
shape: hex
|
||||
icon: ti-phone
|
||||
|
||||
- name: Org
|
||||
color: "#C780E8"
|
||||
shape: triangle
|
||||
icon: ti-building
|
||||
|
||||
- name: IBAN
|
||||
color: "#52CDF2"
|
||||
shape: rounded_square
|
||||
icon: ti-building-bank
|
||||
|
||||
- name: Account
|
||||
color: "#7FD3A0"
|
||||
shape: rounded_square
|
||||
icon: ti-id
|
||||
|
||||
- name: Document
|
||||
color: "#C9C9C9"
|
||||
shape: square
|
||||
icon: ti-file
|
||||
|
||||
- name: Address
|
||||
color: "#FFB870"
|
||||
shape: diamond
|
||||
icon: ti-map-pin
|
||||
|
||||
- name: Url
|
||||
color: "#89E0FC"
|
||||
shape: hex
|
||||
icon: ti-link
|
||||
|
||||
relations:
|
||||
- name: owns
|
||||
color: "#888888"
|
||||
style: solid
|
||||
|
||||
- name: knows
|
||||
color: "#AAAAAA"
|
||||
style: solid
|
||||
|
||||
- name: located_in
|
||||
color: "#FFB870"
|
||||
style: dashed
|
||||
|
||||
- name: transfers_to
|
||||
color: "#52CDF2"
|
||||
style: dotted
|
||||
|
||||
- name: member_of
|
||||
color: "#C780E8"
|
||||
style: dashed
|
||||
Reference in New Issue
Block a user