e6c55c9538
Documenta que el proyecto requiere CGO_ENABLED=1 y el tag fts5 para compilar y ejecutar tests con soporte SQLite FTS5. Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
3.5 KiB
3.5 KiB
fn-registry
Registry personal de codigo reutilizable con busqueda FTS. Diseñado para composicion funcional y agentes.
Que es esto
Un warehouse de funciones, tipos, pipelines y componentes React organizados por dominio. Cada pieza de codigo tiene su archivo de implementacion (.go, .py, .tsx) y su archivo de documentacion (.md). Una BD SQLite con FTS5 indexa la documentacion para busqueda rapida.
Estructura del repositorio
fn-registry/
functions/ # Codigo y docs de funciones
core/ # Utilidades genericas (filter, map, clamp...)
finance/ # Dominio financiero (parse_ohlcv, indicators...)
io/ # Funciones impuras de IO (fetch, write...)
pipelines/ # Composiciones de funciones, siempre impuras
components/ # Componentes React (.tsx)
types/ # Tipos algebraicos (product y sum)
core/ # Tipos genericos (Result, Option...)
finance/ # Tipos de dominio (OHLCV, Tick, Order...)
cmd/fn/ # CLI para buscar, añadir e indexar
docs/ # Schema de documentacion (fuente de verdad del diseño)
registry.db # Indice SQLite FTS5 (regenerable, no commitear)
Convenciones
- Lenguaje principal: Go. Tambien soporta Python, TypeScript, SQL.
- IDs: formato
{name}_{lang}_{domain}(ej:filter_slice_go_core) - Nombres: snake_case para funciones, PascalCase para tipos
- Rutas: siempre relativas a la raiz del registry
- Purity:
pure(sin side effects) oimpure(con side effects)- Las funciones puras NUNCA dependen de funciones impuras
- Los pipelines son SIEMPRE impuros
- Los tipos no tienen purity
Tablas del registry
functions
Almacena funciones atomicas, pipelines y componentes. Campo kind: function | pipeline | component. Ver docs/functions.md para el schema completo.
types
Tipos algebraicos: product (struct, todos los campos presentes) o sum (union, un caso activo a la vez). Ver docs/types.md para el schema completo.
Reglas de integridad (ver docs/integrity.md)
kind: pipeline-> purity siempre impure, uses_functions no vaciopurity: pure-> returns_optional siempre false, error_type vaciopurity: impure-> error_type obligatoriotested: true-> test_file_path y tests obligatorios- Todas las referencias cruzadas (uses_functions, uses_types, returns, error_type) deben apuntar a IDs existentes
Fuentes de verdad
- Codigo: archivos .go / .py / .tsx
- Documentacion: archivos .md junto al codigo
- Diseño del schema: carpeta docs/
- registry.db: solo indice, regenerable con
fn index
Build
# Requiere CGO y tag fts5 para SQLite FTS5
CGO_ENABLED=1 go build -tags fts5 ./...
CGO_ENABLED=1 go test -tags fts5 ./...
CLI (cmd/fn)
fn search "texto" # Busqueda FTS
fn search -k function -p pure "slice"
fn add # Añadir nueva entrada
fn show <id> # Ver entrada completa
fn list # Listar todas
fn index # Regenerar registry.db desde los .md
Para el agente
Al trabajar en este repo:
- Consultar docs/ antes de crear funciones o tipos — el schema manda
- Cada funcion/tipo necesita DOS archivos: implementacion + .md de documentacion
- Respetar la regla de purity: puras en el centro, impuras en los bordes
- Los IDs se generan automaticamente:
{name}_{lang}_{domain} - No editar registry.db a mano — siempre regenerar con
fn index