Separa aplicaciones ejecutables (docker_tui, pipeline_launcher) de la
librería fn_operations. La carpeta apps/ contiene módulos Go independientes,
fn_operations/ queda como librería pura de models/store/operations.
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
TUI fullscreen con dos tabs: Pipelines (lista filtrable del registry,
lanzamiento como subproceso, registro automático en operations.db) y
History (historial de ejecuciones con status, duración y detalles).
Incluye launcher.sh en la raíz para ejecución rápida.
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
Pipeline ejecutable que orquesta: crear red Docker, pull de imágenes,
iniciar Postgres con volume persistente, health check con retry
exponencial (pg_isready), e iniciar Metabase conectado via red interna.
Configurable con flags: --project, --metabase-port, --pg-user, etc.
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
Funciones para crear y eliminar redes Docker. DockerCreateNetwork
usa bridge como driver por defecto. Necesarias para pipelines que
orquestan múltiples contenedores en red compartida.
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
Añade Execution, Assertion, AssertionResult al paquete fn_operations.
Motor de evaluación de assertions con reescritura SQL automática.
Bucle reactivo: ExecuteAndReact evalúa assertions y cambia status de
entities (corrupted/stale) + auto-crea proposals en registry.
CLI fn ops: assertion (add/list/show/delete/eval) y execution (add/list/show).
Migración 002_executions_assertions.sql con FTS para assertions.
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
Añade sistema de proposals al registry: modelos (ProposalKind, ProposalStatus),
CRUD completo (Insert/Get/Update/Delete/List/Search con FTS), validación,
migración 002_proposals.sql y subcomando CLI fn proposal (add/list/show/update).
Motor de migraciones con embed.FS reemplaza schema estático.
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
Comando check compara versiones locales vs registry y marca outdated.
Comando update re-snapshottea por ID o --all, muestra diff de definition
y description. Requiere registry accesible via FN_REGISTRY_ROOT.
Añade UpdateTypeSnapshot al store, CheckSnapshots para comparar snapshots
locales vs registry (up_to_date/outdated/missing), y UpdateSnapshot para
re-snapshot con retorno de old/new para diffing.
Cada vista expone HandleBack() bool que retrocede un nivel interno (logs ->
lista) o indica que esta en estado base. El model principal intercepta q/0/esc
y delega a HandleBack: si retorna true, sale de la TUI; si false, la vista
retrocedio internamente. Elimina manejo duplicado de esc/q/0 en sub-estados.
TUI fullscreen con 5 vistas: Containers (start/stop/restart/logs),
Images (list/remove), Volumes (list/remove), Networks (list/remove),
Compose (up/down/logs). Usa DevFactory (tui, shell, core). Navegacion
por tabs, filtrado en containers/images, scroll en logs.
Incluye operations.db con entities y relations del proyecto.
Subcomando ops integrado en el CLI fn. Soporta CRUD de entities con
snapshot automatico de tipos, CRUD de relations con validacion de ciclos,
dump ASCII del grafo, y listado de tipos snapshotted. Variable de entorno
FN_REGISTRY_ROOT para acceder al registry desde cualquier directorio.
Paquete Go completo con modelos (Entity, Relation, RelationInput, TypeSnapshot),
DB SQLite con WAL + FTS5 en entities, CRUD para las 4 tablas, validacion de
integridad, deteccion de ciclos solo en relaciones causales (via != ''), y
operaciones de alto nivel con snapshot automatico de tipos del registry.
9 tests, todos pasan.
Tipo cmd_result (product: Stdout, Stderr, ExitCode). Funciones: Run,
RunWithTimeout, RunShell, RunShellTimeout, RunPipe (impuras) y Which (pura).
Stubs que documentan devfactory/shell para el registry.
Tipos producto para ListItem, ListModel, FilteredListModel, SpinnerModel,
SpinnerWithTimeoutModel, ProgressModel, MultiProgressModel, Theme, Styles,
BaseModel y ConfirmModel. Stubs que documentan las definiciones de
devfactory/tui para el registry.
Schema de inteligencia operacional para proyectos. Define tablas entities,
relations, relation_inputs y types_snapshot con reglas de integridad,
referencias cruzadas al registry central y ejemplos de uso.
Reescribe completamente .claude/CLAUDE.md para que el agente LLM:
- Consulte SIEMPRE registry.db antes de escribir codigo (queries SQL listas)
- Sepa exactamente como crear funciones y tipos nuevos (formato, reglas, flujo)
- Entienda las reglas de integridad que el indexer valida
- Conozca la convencion de returns (IDs del registry, no tipos nativos)
- Tenga ejemplos de queries FTS, por dominio, por purity, por tags, por dependencias
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
Funciones genericas reutilizables:
- RetryWithBackoff: reintento con backoff exponencial (impure)
- Memoize: cache de funciones puras (pure)
- Pipeline: composición T→T en secuencia (pure)
- MapConcurrent: map paralelo con worker pool (impure)
- Partition: divide slice en dos por predicado (pure)
- Chunk: divide slice en trozos de tamaño N (pure)
Todas con implementación real y documentación .md.
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
Tres tipos de dominio seguridad:
- CIDRBlock: rango de red parseado (product)
- ThreatResult: Clean/Suspicious/Malicious (sum)
- PortResult: Open/Closed/Filtered (sum)
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
Tipos de dominio financiero:
- OHLCV: vela de mercado (product)
- Tick: evento de trade individual (product)
- BollingerResult: bandas superior/media/inferior (product)
- DrawdownResult: max drawdown con indices pico-valle (product)
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
Tres tipos nuevos en core:
- Option[T]: tipo suma Some/None para valores opcionales
- Pair[A,B]: tipo producto genérico para agrupar dos valores
- Error: tipo de error base referenciado como error_type por impuras
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
Cambia de _journal_mode=WAL en connection string a PRAGMA journal_mode=WAL
explícito. Esto persiste en el archivo y cualquier cliente externo (sqlite3
CLI, DuckDB) hereda WAL automáticamente sin configuración adicional.
Permite leer mientras el agente escribe simultáneamente sin bloqueos.
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
Reescribe el indexer con estrategia de dos pasadas:
1. Parsea todos los .md y construye sets de IDs conocidos
2. Valida integridad contra IDs conocidos, inserta solo los validos
El CLI ahora muestra INVALID para errores de validacion y ERROR
para errores de insercion, separando claramente ambos.
Añade test de integracion que verifica que entradas invalidas
se rechazan sin afectar a las validas.
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
Implementa todas las reglas de docs/integrity.md:
- Pipeline: siempre impuro, uses_functions no vacio
- Pura: sin returns_optional, sin error_type
- Impura: error_type obligatorio
- Tested: coherencia entre tested, tests y test_file_path
- Component: framework obligatorio, returns vacio, has_state->impure
- file_path siempre relativa
- Referencias cruzadas: uses_functions, uses_types, returns, error_type
deben apuntar a IDs existentes
- Types: algebraic valido, sin auto-referencias, refs validadas
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
Primer tipo del registry: Result generico inspirado en Rust.
Tipo suma con dos variantes: Ok(T) y Err(error).
Metodos: IsOk, IsErr, Unwrap, UnwrapErr, UnwrapOr.
Incluye implementacion, documentacion .md y 4 tests.
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
Primeras funciones reales del registry:
- filter_slice: filtra un slice con predicado, pura, generica
- map_slice: transforma cada elemento de un slice, pura, generica
Cada una con implementacion .go, documentacion .md y tests.
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
Implementa el binario CLI definido en docs/architecture.md:
- fn index: regenera registry.db parseando todos los .md
- fn search: busqueda FTS con filtros -k kind -p purity -l lang -d domain
- fn list: lista entradas con filtros opcionales
- fn show: muestra entrada completa por ID (busca en functions y types)
- fn add: imprime instrucciones para copiar template y registrar
Corrige .gitignore para ignorar solo /fn en raiz, no el directorio cmd/fn/.
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
5 tests nuevos que validan:
- Parseo de function con extraccion de ejemplo del body
- Parseo de type algebraico con definition multilinea
- Parseo de component con props, emits, has_state, framework
- Error en archivos sin frontmatter valido
- Ciclo completo: escribir .md -> indexar -> buscar por FTS
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
Index() recorre functions/ y types/, parsea cada .md con frontmatter,
purga la BD existente e inserta todas las entradas. Devuelve conteos
y errores sin abortar ante fallos individuales.
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>