Commit Graph

31 Commits

Author SHA1 Message Date
egutierrez 113c6dfd71 feat: 15 funciones finance — indicadores, riesgo e IO de mercado
11 funciones puras con implementación real:
SMA, EMA, RSI, BollingerBands, VWAP, LogReturn, AnnualizedVolatility,
SharpeRatio, MaxDrawdown, NormalizeOHLCV, TickToOHLCV

4 funciones impuras (stubs):
FetchOHLCV, StreamTicks, WriteOHLCVToParquet, LoadOHLCVFromDuckDB

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-03-28 02:23:31 +01:00
egutierrez 16e34a806e feat: 6 funciones core — retry, memoize, pipeline, map_concurrent, partition, chunk
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>
2026-03-28 02:23:26 +01:00
egutierrez 0f9a72dfc9 feat: tipos cybersecurity CIDRBlock, ThreatResult, PortResult
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>
2026-03-28 02:23:16 +01:00
egutierrez b33038e3c8 feat: tipo datascience OutlierResult (sum)
Tipo suma para clasificar datos como Normal u Outlier con z-score.

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-03-28 02:23:12 +01:00
egutierrez 6242613886 feat: tipos finance OHLCV, Tick, BollingerResult, DrawdownResult
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>
2026-03-28 02:23:08 +01:00
egutierrez 9fb1e30e18 feat: tipos core Option[T], Pair[A,B] y Error base
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>
2026-03-28 02:23:03 +01:00
egutierrez 5ac4c52e67 feat: WAL mode explícito con PRAGMA para acceso concurrente
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>
2026-03-28 02:22:58 +01:00
egutierrez 49de33c818 merge: quick/fase6-integrity — validacion de integridad al indexar 2026-03-28 02:13:55 +01:00
egutierrez 2d87d6affc feat: indexer con validacion en dos pasadas y CLI con output de errores
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>
2026-03-28 02:13:44 +01:00
egutierrez 08d141ea1b test: 15 tests para reglas de integridad
Cubre cada regla de integridad:
- Funciones validas pasan
- Pipeline puro rechazado, pipeline sin uses_functions rechazado
- Pura con returns_optional o error_type rechazada
- Impura sin error_type rechazada
- Coherencia tested/tests/test_file_path
- Referencias huerfanas detectadas (4 tipos de referencia)
- Component: framework, returns, has_state+purity
- file_path absoluta rechazada
- Types: algebraic invalido, auto-referencia, refs huerfanas

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-03-28 02:13:41 +01:00
egutierrez df7e4a15cf feat: validacion de integridad para funciones y tipos
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>
2026-03-28 02:13:37 +01:00
egutierrez 6618a64283 merge: quick/fase5-first-entries — filter_slice, map_slice y Result[T] 2026-03-28 02:10:47 +01:00
egutierrez 8b99c470d8 feat: tipo suma Result[T] con Ok y Err
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>
2026-03-28 02:10:40 +01:00
egutierrez 5ef3cda890 feat: funciones core filter_slice y map_slice
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>
2026-03-28 02:10:38 +01:00
egutierrez b2641796b9 merge: quick/fase4-cli — CLI fn con index, search, list, show, add 2026-03-28 02:09:15 +01:00
egutierrez 152e7aa58f feat: CLI fn con subcomandos index, search, list, show y add
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>
2026-03-28 02:09:08 +01:00
egutierrez 6389a0114e merge: quick/fase3-parser-indexer — parser YAML, indexer y templates 2026-03-28 02:07:21 +01:00
egutierrez a34e4109a8 test: tests para parser de frontmatter e indexer completo
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>
2026-03-28 02:07:10 +01:00
egutierrez bf4b71653f feat: indexer que regenera registry.db desde los .md
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>
2026-03-28 02:07:08 +01:00
egutierrez 94a1a81297 feat: parser de frontmatter YAML para .md de funciones y tipos
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>
2026-03-28 02:07:06 +01:00
egutierrez a65361966d docs: templates de frontmatter YAML para function, pipeline, component y type
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>
2026-03-28 02:07:02 +01:00
egutierrez 3db86e6ad8 merge: quick/fase2-models-sqlite — modelos Go, SQLite FTS5 y CRUD 2026-03-28 02:04:34 +01:00
egutierrez e6c55c9538 docs: añadir instrucciones de build con CGO y fts5
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>
2026-03-28 02:04:23 +01:00
egutierrez d9f5f432e8 test: tests para insert, get, FTS search, purge y drop
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>
2026-03-28 02:04:21 +01:00
egutierrez e7b4e3eb81 feat: operaciones CRUD y busqueda FTS del registry
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>
2026-03-28 02:04:19 +01:00
egutierrez 11d1dea6e0 feat: schema SQLite con FTS5 y triggers de sync
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>
2026-03-28 02:04:16 +01:00
egutierrez f750418239 feat: modelos Go para Function y Type
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>
2026-03-28 02:04:11 +01:00
egutierrez 4e97f5810a docs: añadir CLAUDE.md con guia del repositorio
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>
2026-03-28 01:59:17 +01:00
egutierrez 727c706ebf chore: estructura de directorios del registry
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>
2026-03-28 01:59:16 +01:00
egutierrez 1e4ffba40e docs: schema de documentacion v1.0
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>
2026-03-28 01:59:14 +01:00
egutierrez 2a55cd99dc chore: inicializar modulo Go y gitignore
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>
2026-03-28 01:59:11 +01:00