Volver a la wiki

bib-graphify Fase 7: Cobertura TypeScript del grafo de conocimiento

bib-graphify Fase 7: Cobertura TypeScript del grafo de conocimiento

Resumen

La Fase 7 de bib-graphify (tareas F7.4 + F7.5) cierra el gap estructural del grafo de conocimiento de la Biblioteca/Supercontexto: antes del commit b831fb5, el grafo solo indexaba código Python (~3.170 nodos); tras esta fase incorpora también todo el TypeScript/TSX del workspace, añadiendo +669 nodos y 718 edges en el backfill inicial.

Autor: @Esquembri · Fecha: 2026-04-24 · Commit: b831fb5


Motivación

El grafo de conocimiento es la base del Supercontexto: permite a los agentes IA encontrar cualquier función, componente o servicio por nombre. Sin cobertura TypeScript, el 100% del frontend (Astro + React) y los handlers de Cloudflare Workers quedaban fuera del grafo — los agentes no podían responder preguntas como “¿dónde está HealthWidget?” o “¿qué hace checkWiki?”.

El gap era conocido desde la Fase 5 (solo Python, ~3.170 nodos). La Fase 7 lo cierra sin añadir nuevas dependencias ni cambiar la arquitectura del grafo.


Tareas

F7.4 — Diseño e implementación del extractor TS

Diseño de bib_ast_ts.mjs:

F7.5 — Backfill inicial

Ejecución del extractor sobre el workspace completo el 2026-04-24:

Run 4278:
  nodes_created : 669
  nodes_updated : 0
  edges_created : 718
  errors        : 0
  duration      : 2.221s

Impacto en el grafo

Antes (solo Python)

TipoNodos
endpoints495
function986
model95
class308
schema198
Total~3.170

Después (Python + TypeScript)

TipoNodosDelta
js_module136+136
function1.328+342
schema389+191
endpoints495—
model95—
class308—
Total3.839+669

Los dominios Python permanecen intactos (495 endpoints, 95 models, 308 classes).


Validación de cierre del gap

# Antes: 0 hits / Después: resultados
bib_search_nodes('checkWiki')        → 1 hit
bib_search_nodes('HealthWidget')     → 5 hits
bib_search_nodes('fetchBiblioteca*') → 1 hit

Alcance de indexación


Decisiones de diseño

DecisiónJustificación
TypeScript Compiler API (nativa)Dep typescript@^6.0.2 ya presente; evita añadir @babel/parser u otras
Sin type-checker en v1El type-checker requiere tsconfig + resolución de módulos: coste alto para el backfill inicial; las calls cross-module no resueltas se descartan silenciosamente
Prefix ts: en qualified_nameEvita colisiones con el espacio de nombres Python (dot-path) en D1
replace_app omitido en backfillPrimera ejecución idempotente; futuros reindexados parciales pueden activarlo por-app

Limitaciones conocidas (v1)

  1. Calls cross-module no resueltas — solo se emiten calls a funciones del mismo módulo o importadas con resolución local (relativa). Las calls a packages externos o a módulos sin nodo destino se descartan con INSERT OR IGNORE.
  2. Funciones anidadas no indexadas — las arrow functions dentro de otras funciones no generan nodo propio; solo se visita su cuerpo para detectar calls del scope padre.
  3. Overloads: si hay varias firmas con el mismo nombre, se toma la primera.
  4. Extensiones sin filesystem check: la resolución de imports relativos (.ts, .tsx) es best-effort sin verificación en disco.

Próximos pasos


Véase también

Subir