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>
Implementa ParseFunctionMD y ParseTypeMD que extraen frontmatter YAML
de archivos .md y construyen los structs del registry. Soporta los tres
kinds (function, pipeline, component) con sus campos especificos.
Extrae automaticamente el ejemplo del body si existe seccion ## Ejemplo.
Dependencia: gopkg.in/yaml.v3
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
Añade plantillas de referencia que documentan el formato exacto
del frontmatter YAML que cada .md debe seguir. Cubren los cuatro
kinds: function, pipeline, component y type.
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
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>
5 tests que validan el flujo completo del registry:
- Insert y Get de funciones con tags y campos correctos
- Insert y Get de tipos algebraicos
- Busqueda FTS con filtros combinados (purity, domain)
- Purge limpia ambas tablas
- Drop elimina el archivo de BD
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
Implementa el acceso a datos completo:
- InsertFunction/InsertType con generacion automatica de ID y timestamps
- GetFunction/GetType por ID
- SearchFunctions con FTS + filtros por kind, purity, lang, domain
- SearchTypes con FTS + filtros por lang, domain
- DeleteFunction/DeleteType por ID
- Purge para limpiar antes de re-indexar
- Serialization JSON para campos array (tags, uses_functions, props, etc)
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
Crea la base de datos del registry con:
- Tabla functions con todos los campos del schema v1.0 incluyendo component
- Tabla types con campos algebraicos
- Tablas virtuales FTS5 para busqueda full-text sobre nombre, descripcion, tags, signature y domain
- Triggers AFTER INSERT/UPDATE/DELETE para mantener FTS sincronizado
- Open con WAL mode y foreign keys habilitadas
- Drop y Purge para regeneracion del indice
Dependencia: github.com/mattn/go-sqlite3 (requiere CGO_ENABLED=1 -tags fts5)
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
Define los structs que reflejan el schema de docs/:
- Function con campos base + campos de component (props, emits, has_state, framework, variant)
- Type con campos algebraicos (product/sum)
- Enums Kind, Purity, Algebraic como tipos string
- GenerateID para construir IDs canonicos {name}_{lang}_{domain}
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
Documenta para el agente el funcionamiento completo del repo:
convenciones de naming e IDs, reglas de purity, estructura de
directorios, tablas del schema, y flujo de trabajo esperado.
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
Crea el arbol de directorios segun la arquitectura definida:
- functions/ con subdirectorios core, finance, io, pipelines, components
- types/ con subdirectorios core, finance
- cmd/fn/ para el CLI
Cada directorio incluye .gitkeep para preservar la estructura.
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
Añade la especificacion completa del registry:
- README con overview de tablas y kinds
- Schema de functions (atomicas, pipelines, components)
- Schema de types (algebraicos: product y sum)
- Reglas de integridad y referencias cruzadas
- Arquitectura del sistema (registry vs operacional)
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
Inicializa go mod con nombre fn-registry.
Configura .gitignore para ignorar registry.db (indice regenerable),
binario fn, artefactos de compilacion y archivos de IDE/OS.
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>