Servicio hot-cache.ts — Construcción y renderizado del HotCache
Descripción
functions/_lib/hot-cache.ts es el módulo central del Workspace que agrega datos de múltiples fuentes D1 en un objeto HotCache serializable. Es consumido por el edge handler que sirve workspace.crearack.com/biblioteca/pulse y por renderMarkdown para generar el informe textual del mismo endpoint.
Opera en Cloudflare Workers (runtime edge), sin acceso a Node.js nativo. Todas las queries son D1 vía env.DB.
Interfaces principales
HotCache
interface HotCache {
generated_at: string;
project: string;
// … actividad, alertas, tareas, grafo …
graph_health: GraphHealth;
bib_skips_7d: { total: number; by_actor: Record<string, number> };
supercontext: SupercontextState | null;
bibliotecario: BibliotecarioActivity | null; // ← añadido sesión 22 F3
}
BibliotecarioActivity (añadida 2026-04-24)
Agrega el estado operativo del sistema Supercontexto en una ventana de 7 días:
interface BibliotecarioActivity {
window_days: number;
runs_by_operation: Record<string, number>;
last_run_by_operation: Record<string, string | null>;
pages_by_status: Record<string, number>;
contradictions_open: number;
tokens_7d: number;
top_utility: Array<{ slug: string; title: string; score: number }>;
pending_drafts: number;
actions_24h: number;
}
SupercontextState
Estado de fase, step y next_step del sistema Supercontexto. Obtenido vía fetch HTTP al origin del Workspace.
GraphHealth
Métricas de salud del grafo de conocimiento (nodos, edges, última indexación).
Función pública principal: buildHotCache
export async function buildHotCache(
env: HotEnv,
repo: string,
origin?: string
): Promise<HotCache>
Orquesta 9 fetches en paralelo via Promise.all:
| Función | Descripción |
|---|---|
fetchActivity24h | Actividad de commits/tareas últimas 24h |
fetchActiveAlerts | Alertas activas del proyecto |
fetchUrgentTasks | Tareas urgentes pendientes |
fetchInFlightTasks | Tareas en curso |
fetchGraphHealth | Estado del grafo de conocimiento |
fetchRecentCommits | Commits recientes al repo |
fetchBibSkips | Skips del Bibliotecario (últimos 7d por actor) |
fetchSupercontextState | Estado de fase Supercontexto |
fetchBibliotecarioActivity | Nuevo: actividad y corpus del Bibliotecario |
Función pública secundaria: renderMarkdown
export function renderMarkdown(c: HotCache): string
Serializa el HotCache como Markdown legible. Secciones emitidas (según disponibilidad de datos):
- Header con
generated_atyproject - Actividad 24h
- Alertas activas
- Tareas urgentes / en vuelo
- Salud del grafo
- Commits recientes
- Skips del Bibliotecario
## Bibliotecario · Nd← nuevo (sesión 22 F3)## Supercontexto
Patrón de resiliencia
Cada función fetch* tiene su propio bloque try/catch y retorna un valor por defecto en caso de error. fetchBibliotecarioActivity además usa .catch(() => fallback) por query individual, garantizando que el fallo de una tabla D1 (p.ej. bib_wiki_contradictions inexistente) no bloquea las otras 6 queries.
Proyectos sin Supercontexto: si bib_wiki_pages y bib_wiki_log están vacías o no existen, fetchBibliotecarioActivity retorna null y el campo HotCache.bibliotecario queda a null. El panel UI no se renderiza.
Tablas D1 consultadas
| Tabla | Descripción |
|---|---|
bib_wiki_log | Log de operaciones del Bibliotecario (ingest, curate, lint…) |
bib_wiki_pages | Corpus de páginas wiki con status y utility_score |
bib_wiki_contradictions | Contradicciones detectadas entre páginas |
activity_log | Actividad general del workspace (commits, tareas) |
alerts | Alertas activas del proyecto |
tasks | Tareas del proyecto (urgentes, en vuelo) |
Historial de cambios relevantes
| Fecha | Cambio |
|---|---|
| 2026-04-24 | Añadida BibliotecarioActivity + fetchBibliotecarioActivity + campo bibliotecario en HotCache (sesión 22 F3, commit d216f82) |
Véase también
- [[feature—biblioteca—pulse-bibliotecario]]
- [[concept—saas—multi-tenancy]]