docs: params/output semántico en 506 funciones para composabilidad

Añade campos params y output al frontmatter YAML de las 506 funciones del registry.
Cada parámetro tiene descripción semántica (qué representa, unidades, rango típico)
y cada función describe qué produce su output. Permite a agentes razonar sobre
cadenas de composición (ej: prices → log_return → sharpe_ratio) sin leer código.
This commit is contained in:
2026-04-05 18:45:16 +02:00
parent bd1bf2b5dc
commit 988e901066
506 changed files with 2964 additions and 0 deletions
+6
View File
@@ -14,6 +14,12 @@ returns: []
returns_optional: false
error_type: "error_go_core"
imports: [fmt, strconv, strings]
params:
- name: c
desc: "conexión CDP activa"
- name: selector
desc: "selector CSS del elemento a hacer click"
output: "error si el selector no coincide o falla la acción"
tested: false
tests: []
test_file_path: ""
+6
View File
@@ -14,6 +14,12 @@ returns: []
returns_optional: false
error_type: "error_go_core"
imports: [fmt, os]
params:
- name: c
desc: "conexión CDP (puede ser nil)"
- name: pid
desc: "PID del proceso Chrome (0 para no matar)"
output: "error si falla la desconexión o el cierre del proceso"
tested: false
tests: []
test_file_path: ""
+4
View File
@@ -14,6 +14,10 @@ returns: []
returns_optional: false
error_type: "error_go_core"
imports: [fmt, net, net/url, strings]
params:
- name: port
desc: "puerto del servidor CDP (localhost:{port})"
output: "(*CDPConn, error): conexión WebSocket lista para usar"
tested: true
tests: ["TestChromeLaunchAndConnect"]
test_file_path: "functions/browser/chrome_launch_test.go"
+6
View File
@@ -14,6 +14,12 @@ returns: []
returns_optional: false
error_type: "error_go_core"
imports: [fmt]
params:
- name: c
desc: "conexión CDP activa"
- name: expression
desc: "expresión JavaScript a evaluar"
output: "string: resultado serializado, o error si falla"
tested: true
tests: ["TestCdpEvaluate"]
test_file_path: "functions/browser/chrome_launch_test.go"
+4
View File
@@ -14,6 +14,10 @@ returns: []
returns_optional: false
error_type: "error_go_core"
imports: [fmt]
params:
- name: c
desc: "conexión CDP activa"
output: "string: HTML completo de la página (post-JavaScript)"
tested: true
tests: ["TestCdpGetHTML"]
test_file_path: "functions/browser/chrome_launch_test.go"
+6
View File
@@ -14,6 +14,12 @@ returns: []
returns_optional: false
error_type: "error_go_core"
imports: [fmt]
params:
- name: c
desc: "conexión CDP activa"
- name: targetURL
desc: "URL a navegar"
output: "error si la navegación falla"
tested: true
tests: ["TestChromeLaunchAndConnect"]
test_file_path: "functions/browser/chrome_launch_test.go"
+8
View File
@@ -14,6 +14,14 @@ returns: []
returns_optional: false
error_type: "error_go_core"
imports: [encoding/base64, fmt, os, path/filepath]
params:
- name: c
desc: "conexión CDP activa"
- name: outputPath
desc: "ruta del archivo PNG/JPEG de salida"
- name: opts
desc: "opciones de captura (FullPage, Quality, Format)"
output: "error si falla la captura o la escritura del archivo"
tested: true
tests: ["TestCdpScreenshot"]
test_file_path: "functions/browser/chrome_launch_test.go"
+6
View File
@@ -14,6 +14,12 @@ returns: []
returns_optional: false
error_type: "error_go_core"
imports: [fmt, time]
params:
- name: c
desc: "conexión CDP activa"
- name: text
desc: "texto a escribir en el elemento enfocado"
output: "error si falla la escritura"
tested: false
tests: []
test_file_path: ""
+8
View File
@@ -14,6 +14,14 @@ returns: []
returns_optional: false
error_type: "error_go_core"
imports: [fmt, time]
params:
- name: c
desc: "conexión CDP activa"
- name: selector
desc: "selector CSS del elemento a esperar"
- name: timeout
desc: "duración máxima de espera"
output: "error si el elemento no aparece antes del timeout"
tested: false
tests: []
test_file_path: ""
+6
View File
@@ -14,6 +14,12 @@ returns: []
returns_optional: false
error_type: "error_go_core"
imports: [fmt, time]
params:
- name: c
desc: "conexión CDP activa"
- name: timeout
desc: "duración máxima de espera por carga completa"
output: "error si document.readyState no llega a complete"
tested: false
tests: []
test_file_path: ""
+4
View File
@@ -14,6 +14,10 @@ returns: []
returns_optional: false
error_type: "error_go_core"
imports: [fmt, net, os, os/exec, time]
params:
- name: opts
desc: "opciones de lanzamiento: Port, UserDataDir, Headless"
output: "int: PID del proceso Chrome lanzado"
tested: true
tests: ["TestFindChrome", "TestChromeLaunchAndConnect"]
test_file_path: "functions/browser/chrome_launch_test.go"
+6
View File
@@ -14,6 +14,12 @@ returns: []
returns_optional: false
error_type: ""
imports: []
params:
- name: slice
desc: "slice de elementos a validar"
- name: predicate
desc: "función que evalúa cada elemento; retorna true si cumple la condición"
output: "true si todos los elementos cumplen el predicado; false en caso contrario"
tested: false
tests: []
test_file_path: ""
+6
View File
@@ -14,6 +14,12 @@ returns: []
returns_optional: false
error_type: ""
imports: []
params:
- name: slice
desc: "slice de elementos a validar"
- name: predicate
desc: "función que evalúa cada elemento; retorna true si cumple la condición"
output: "true si al menos un elemento cumple el predicado; false en caso contrario"
tested: false
tests: []
test_file_path: ""
+6
View File
@@ -14,6 +14,12 @@ returns: []
returns_optional: false
error_type: ""
imports: []
params:
- name: xs
desc: "slice de elementos a dividir"
- name: size
desc: "tamaño de cada trozo; debe ser > 0 (entra en pánico si size <= 0)"
output: "slice de slices, donde cada sub-slice contiene hasta 'size' elementos; el último puede contener menos"
tested: false
tests: []
test_file_path: ""
+6
View File
@@ -14,6 +14,12 @@ returns: []
returns_optional: false
error_type: ""
imports: []
params:
- name: f2
desc: "segunda función a aplicar (derecha): B -> C"
- name: f1
desc: "primera función a aplicar (izquierda): A -> B"
output: "función compuesta que aplica f1 después f2, equivalente a f2(f1(x))"
tested: false
tests: []
test_file_path: ""
+4
View File
@@ -14,6 +14,10 @@ returns: []
returns_optional: false
error_type: ""
imports: []
params:
- name: value
desc: "valor constante a retornar siempre"
output: "función que ignora su argumento y siempre retorna el valor constante"
tested: false
tests: []
test_file_path: ""
+4
View File
@@ -14,6 +14,10 @@ returns: []
returns_optional: false
error_type: ""
imports: []
params:
- name: f
desc: "función de dos argumentos a currificar: (A, B) -> C"
output: "función currificada que retorna una función parcial: A -> (B -> C)"
tested: false
tests: []
test_file_path: ""
+16
View File
@@ -14,6 +14,22 @@ returns: []
returns_optional: false
error_type: "error_go_core"
imports: ["database/sql"]
params:
- name: conn
desc: "conexión abierta a base de datos SQLite"
- name: table
desc: "nombre de la tabla que almacena el grafo"
- name: fromCol
desc: "nombre de la columna que contiene el nodo origen de cada arista"
- name: toCol
desc: "nombre de la columna que contiene el nodo destino de cada arista"
- name: filterCol
desc: "nombre de columna opcional para filtrar aristas semánticas; si es vacío, se consideran todas las aristas"
- name: fromNode
desc: "nodo origen de la nueva arista a validar"
- name: toNode
desc: "nodo destino de la nueva arista a validar"
output: "error si agregaría un ciclo; nil si no hay ciclo"
tested: false
tests: []
test_file_path: ""
+6
View File
@@ -14,6 +14,12 @@ returns: []
returns_optional: false
error_type: ""
imports: []
params:
- name: slice
desc: "slice del cual eliminar elementos del inicio"
- name: n
desc: "cantidad de elementos a eliminar desde el inicio"
output: "nuevo slice con los primeros n elementos eliminados; si n >= len(slice), retorna slice vacío"
tested: false
tests: []
test_file_path: ""
+6
View File
@@ -14,6 +14,12 @@ returns: []
returns_optional: false
error_type: ""
imports: []
params:
- name: xs
desc: "slice de elementos a filtrar"
- name: pred
desc: "función predicado que retorna true para elementos a incluir"
output: "nuevo slice con solo los elementos que cumplen el predicado"
tested: true
tests: ["filtra pares", "slice vacio retorna vacio", "ningun match retorna vacio"]
test_file_path: "functions/core/filter_slice_test.go"
+6
View File
@@ -14,6 +14,12 @@ returns: [option_go_core]
returns_optional: false
error_type: ""
imports: []
params:
- name: slice
desc: "slice donde buscar"
- name: predicate
desc: "función que evalúa cada elemento; retorna true para el buscado"
output: "Option[T] envolviendo el primer elemento que cumple, o None si ninguno cumple"
tested: false
tests: []
test_file_path: ""
+6
View File
@@ -14,6 +14,12 @@ returns: [option_go_core]
returns_optional: false
error_type: ""
imports: []
params:
- name: slice
desc: "slice donde buscar"
- name: predicate
desc: "función que evalúa cada elemento; retorna true para el buscado"
output: "Option[int] envolviendo el índice del primer elemento que cumple, o None si ninguno cumple"
tested: false
tests: []
test_file_path: ""
+6
View File
@@ -14,6 +14,12 @@ returns: []
returns_optional: false
error_type: ""
imports: []
params:
- name: slice
desc: "slice de elementos a transformar"
- name: f
desc: "función que transforma cada elemento en un slice de resultados"
output: "slice aplandado con todos los resultados concatenados"
tested: false
tests: []
test_file_path: ""
+4
View File
@@ -14,6 +14,10 @@ returns: []
returns_optional: false
error_type: ""
imports: []
params:
- name: slices
desc: "slice de slices a aplanar"
output: "slice único con todos los elementos concatenados preservando orden"
tested: false
tests: []
test_file_path: ""
+4
View File
@@ -14,6 +14,10 @@ returns: []
returns_optional: false
error_type: ""
imports: []
params:
- name: f
desc: "función de dos argumentos a invertir: (A, B) -> C"
output: "función con argumentos intercambiados: (B, A) -> C"
tested: false
tests: []
test_file_path: ""
+8
View File
@@ -14,6 +14,14 @@ returns: []
returns_optional: false
error_type: ""
imports: []
params:
- name: name
desc: "nombre de la entidad en snake_case"
- name: lang
desc: "lenguaje: 'go', 'py', 'bash', 'ts'"
- name: domain
desc: "dominio de la función: 'core', 'finance', etc."
output: "ID canonizado en formato 'name_lang_domain' convertido a minúsculas"
tested: false
tests: []
test_file_path: ""
+6
View File
@@ -14,6 +14,12 @@ returns: []
returns_optional: false
error_type: ""
imports: []
params:
- name: slice
desc: "slice de elementos a agrupar"
- name: keyFn
desc: "función que extrae la clave de agrupación para cada elemento"
output: "mapa donde cada clave única mapea a un slice de elementos con esa clave"
tested: false
tests: []
test_file_path: ""
+4
View File
@@ -14,6 +14,10 @@ returns: []
returns_optional: false
error_type: ""
imports: []
params:
- name: x
desc: "valor a retornar sin modificación"
output: "el mismo valor recibido como entrada"
tested: false
tests: []
test_file_path: ""
+10
View File
@@ -14,6 +14,16 @@ returns: []
returns_optional: false
error_type: ""
imports: []
params:
- name: left
desc: "slice izquierdo de map[string]any a unir"
- name: right
desc: "slice derecho de map[string]any a unir"
- name: key
desc: "nombre del campo común a usar como clave de unión"
- name: how
desc: "tipo de unión: 'inner', 'left', 'right', 'outer'"
output: "slice de map[string]any con el resultado de la unión; campos duplicados del right se sufijan con '_right'"
tested: true
tests:
- "Inner join solo matches"
+8
View File
@@ -14,6 +14,14 @@ returns: []
returns_optional: false
error_type: "error_go_core"
imports: []
params:
- name: xs
desc: "slice de elementos a procesar"
- name: fn
desc: "función a aplicar a cada elemento"
- name: workers
desc: "número de goroutines concurrentes; se ajusta a max(1, min(workers, len(xs)))"
output: "slice de resultados en el mismo orden original que la entrada"
tested: false
tests: []
test_file_path: ""
+6
View File
@@ -14,6 +14,12 @@ returns: []
returns_optional: false
error_type: ""
imports: []
params:
- name: xs
desc: "slice de elementos a transformar"
- name: fn
desc: "función que transforma cada elemento de tipo T a tipo U"
output: "nuevo slice de resultados transformados, mismo tamaño que entrada"
tested: true
tests: ["transforma enteros a strings", "slice vacio retorna vacio", "preserva orden"]
test_file_path: "functions/core/map_slice_test.go"
+4
View File
@@ -14,6 +14,10 @@ returns: []
returns_optional: false
error_type: ""
imports: []
params:
- name: fn
desc: "función pura a memorizar: K -> V; los resultados se cachean por clave"
output: "función memoizada que retorna resultados en caché para claves ya calculadas; no es thread-safe"
tested: false
tests: []
test_file_path: ""
+6
View File
@@ -14,6 +14,12 @@ returns: []
returns_optional: false
error_type: ""
imports: [time]
params:
- name: schedule
desc: "CronSchedule con listas de minutos, horas, días, etc. válidos"
- name: after
desc: "tiempo a partir del cual buscar la próxima ejecución"
output: "time.Time con la próxima ejecución; zero time si no hay match dentro de 366 días"
tested: true
tests:
- "0 * * * * desde :30 retorna la proxima hora en punto"
+4
View File
@@ -14,6 +14,10 @@ returns: []
returns_optional: false
error_type: ""
imports: [fmt, strconv, strings]
params:
- name: expr
desc: "expresión cron de 5 campos: minuto hora día_mes mes día_semana; soporta *, rangos, listas, pasos y aliases"
output: "CronSchedule con listas de valores válidos por campo; error si la expresión es inválida"
tested: true
tests:
- "*/15 expande minutos a [0 15 30 45]"
+6
View File
@@ -14,6 +14,12 @@ returns: []
returns_optional: false
error_type: ""
imports: []
params:
- name: f
desc: "función de dos argumentos a aplicar parcialmente: (A, B) -> C"
- name: a
desc: "valor para fijar el primer argumento"
output: "función parcial con primer argumento fijo: B -> C"
tested: false
tests: []
test_file_path: ""
+6
View File
@@ -14,6 +14,12 @@ returns: []
returns_optional: false
error_type: ""
imports: []
params:
- name: xs
desc: "slice a particionar"
- name: pred
desc: "función predicado que retorna true para la primera partición"
output: "par de slices: (que cumplen predicado, que no cumplen); ambos preservan orden original"
tested: false
tests: []
test_file_path: ""
+6
View File
@@ -14,6 +14,12 @@ returns: []
returns_optional: false
error_type: ""
imports: []
params:
- name: f1
desc: "primera función a aplicar (izquierda): A -> B"
- name: f2
desc: "segunda función a aplicar (derecha): B -> C"
output: "función compuesta que aplica f1 después f2, equivalente a f2(f1(x))"
tested: false
tests: []
test_file_path: ""
+8
View File
@@ -14,6 +14,14 @@ returns: []
returns_optional: false
error_type: ""
imports: []
params:
- name: f1
desc: "primera función: A -> B"
- name: f2
desc: "segunda función: B -> C"
- name: f3
desc: "tercera función: C -> D"
output: "función compuesta que aplica f1, luego f2, luego f3, equivalente a f3(f2(f1(x)))"
tested: false
tests: []
test_file_path: ""
+4
View File
@@ -14,6 +14,10 @@ returns: []
returns_optional: false
error_type: ""
imports: []
params:
- name: fns
desc: "funciones variádicas de tipo T -> T a componer en secuencia"
output: "función que aplica todas las funciones de izquierda a derecha; si no hay funciones, retorna la identidad"
tested: false
tests: []
test_file_path: ""
+8
View File
@@ -14,6 +14,14 @@ returns: []
returns_optional: false
error_type: ""
imports: []
params:
- name: slice
desc: "slice de elementos a reducir"
- name: initial
desc: "valor inicial del acumulador"
- name: f
desc: "función acumuladora que toma (acumulador, elemento) y retorna nuevo acumulador"
output: "valor final del acumulador después de procesar todos los elementos"
tested: false
tests: []
test_file_path: ""
+8
View File
@@ -14,6 +14,14 @@ returns: []
returns_optional: false
error_type: "error_go_core"
imports: []
params:
- name: fn
desc: "función impura a reintentar; retorna (resultado, error)"
- name: maxRetries
desc: "número máximo de reintentos después del intento inicial"
- name: baseDelay
desc: "delay base en time.Duration; cada reintento usa baseDelay * 2^i"
output: "primer (resultado, nil) exitoso, o último error si se agotan los reintentos"
tested: false
tests: []
test_file_path: ""
+6
View File
@@ -14,6 +14,12 @@ returns: []
returns_optional: false
error_type: ""
imports: ["regexp"]
params:
- name: rule
desc: "expresión SQL con campos bare (sin prefijo) a reescribir como json_extract"
- name: jsonColumn
desc: "nombre de la columna JSON donde extraer los valores"
output: "expresión SQL reescrita con json_extract para cada campo bare"
tested: false
tests: []
test_file_path: ""
+6
View File
@@ -14,6 +14,12 @@ returns: []
returns_optional: false
error_type: ""
imports: []
params:
- name: slice
desc: "slice del cual tomar elementos del inicio"
- name: n
desc: "cantidad de elementos a tomar desde el inicio"
output: "nuevo slice con los primeros n elementos; si n > len(slice), retorna el slice completo"
tested: false
tests: []
test_file_path: ""
+4
View File
@@ -14,6 +14,10 @@ returns: []
returns_optional: false
error_type: ""
imports: []
params:
- name: f
desc: "función currificada a descurrificar: A -> (B -> C)"
output: "función normal de dos argumentos: (A, B) -> C"
tested: false
tests: []
test_file_path: ""
+4
View File
@@ -14,6 +14,10 @@ returns: []
returns_optional: false
error_type: ""
imports: []
params:
- name: slice
desc: "slice del cual eliminar duplicados"
output: "nuevo slice con elementos únicos preservando orden de primera aparición"
tested: false
tests: []
test_file_path: ""
+6
View File
@@ -14,6 +14,12 @@ returns: []
returns_optional: false
error_type: ""
imports: [fmt, regexp, strconv, strings]
params:
- name: data
desc: "map[string]any con los campos a validar"
- name: rules
desc: "map[string]string donde cada clave es un campo y el valor es una lista de reglas (required, type, min/max, minlen/maxlen, oneof, pattern)"
output: "tupla (válido: bool, errores: []string); si válido es true, errores está vacío"
tested: true
tests:
- "campo required presente y ausente"
+6
View File
@@ -14,6 +14,12 @@ returns: [pair_go_core]
returns_optional: false
error_type: ""
imports: []
params:
- name: a
desc: "primer slice"
- name: b
desc: "segundo slice"
output: "slice de pares (Pair[T, U]) emparejando elementos por índice; la longitud es min(len(a), len(b))"
tested: false
tests: []
test_file_path: ""
@@ -14,6 +14,10 @@ returns: []
returns_optional: false
error_type: ""
imports: [regexp, strings]
params:
- name: input
desc: "string a analizar en busca de patrones de SQL injection"
output: "tupla (isThreat, pattern): booleano indicando si se detectó amenaza, y nombre del patron encontrado"
tested: false
tests: []
test_file_path: ""
@@ -14,6 +14,10 @@ returns: []
returns_optional: false
error_type: ""
imports: [math]
params:
- name: data
desc: "slice de bytes cuya entropia se desea calcular"
output: "valor de entropia Shannon entre 0 y 8 bits por byte"
tested: false
tests: []
test_file_path: ""
+4
View File
@@ -14,6 +14,10 @@ returns: []
returns_optional: false
error_type: ""
imports: [regexp]
params:
- name: text
desc: "string de texto del cual extraer URLs HTTP/HTTPS"
output: "slice de strings con todas las URLs encontradas"
tested: false
tests: []
test_file_path: ""
@@ -14,6 +14,10 @@ returns: []
returns_optional: false
error_type: "error_go_core"
imports: [fmt, net/http, time]
params:
- name: url
desc: "URL destino para realizar la solicitud HTTP HEAD"
output: "mapa de headers de la respuesta (map[string][]string) o error si la solicitud falla"
tested: false
tests: []
test_file_path: ""
+4
View File
@@ -14,6 +14,10 @@ returns: []
returns_optional: false
error_type: ""
imports: [crypto/md5, encoding/hex]
params:
- name: data
desc: "slice de bytes a ser hasheado"
output: "string hexadecimal del hash MD5 (32 caracteres)"
tested: false
tests: []
test_file_path: ""
+4
View File
@@ -14,6 +14,10 @@ returns: []
returns_optional: false
error_type: ""
imports: [crypto/sha256, encoding/hex]
params:
- name: data
desc: "slice de bytes a ser hasheado"
output: "string hexadecimal del hash SHA-256 (64 caracteres)"
tested: false
tests: []
test_file_path: ""
+6
View File
@@ -14,6 +14,12 @@ returns: []
returns_optional: false
error_type: ""
imports: [net]
params:
- name: ip
desc: "direccion IP en formato string (ej: 192.168.1.1)"
- name: cidr
desc: "rango CIDR en formato string (ej: 192.168.0.0/24)"
output: "booleano indicando si la IP se encuentra dentro del rango CIDR"
tested: false
tests: []
test_file_path: ""
+4
View File
@@ -14,6 +14,10 @@ returns: []
returns_optional: false
error_type: ""
imports: [encoding/base64]
params:
- name: s
desc: "string a validar como base64"
output: "booleano indicando si el string es base64 valido segun el encoding estandar"
tested: false
tests: []
test_file_path: ""
+4
View File
@@ -14,6 +14,10 @@ returns: []
returns_optional: false
error_type: ""
imports: []
params:
- name: s
desc: "string a validar como hexadecimal"
output: "booleano indicando si el string es hexadecimal valido (caracteres 0-9 a-f A-F con longitud par)"
tested: false
tests: []
test_file_path: ""
@@ -14,6 +14,12 @@ returns: []
returns_optional: false
error_type: ""
imports: []
params:
- name: a
desc: "primer slice de strings para comparacion"
- name: b
desc: "segundo slice de strings para comparacion"
output: "coeficiente de similitud de Jaccard entre 0.0 y 1.0"
tested: false
tests: []
test_file_path: ""
@@ -14,6 +14,12 @@ returns: []
returns_optional: false
error_type: ""
imports: []
params:
- name: a
desc: "primer string para comparacion de distancia de edicion"
- name: b
desc: "segundo string para comparacion de distancia de edicion"
output: "entero con la distancia de Levenshtein (minimo numero de ediciones necesarias)"
tested: false
tests: []
test_file_path: ""
+4
View File
@@ -14,6 +14,10 @@ returns: []
returns_optional: false
error_type: "error_go_core"
imports: [fmt, io, net, strings, time]
params:
- name: domain
desc: "nombre de dominio para el cual realizar la consulta WHOIS"
output: "string con la respuesta WHOIS del servidor, o error si la consulta falla"
tested: false
tests: []
test_file_path: ""
+4
View File
@@ -14,6 +14,10 @@ returns: []
returns_optional: false
error_type: ""
imports: [net/url, strings]
params:
- name: rawURL
desc: "URL en formato string a normalizar"
output: "URL normalizada con host en minusculas, sin fragmentos ni parametros de tracking"
tested: false
tests: []
test_file_path: ""
+4
View File
@@ -14,6 +14,10 @@ returns: []
returns_optional: false
error_type: ""
imports: [encoding/binary, fmt, net]
params:
- name: cidr
desc: "notacion CIDR IPv4 a parsear (ej: 192.168.0.0/24)"
output: "tupla (network, broadcast, hosts, err) con direccion de red, broadcast, cantidad de hosts usables, y error si aplica"
tested: false
tests: []
test_file_path: ""
+4
View File
@@ -14,6 +14,10 @@ returns: []
returns_optional: false
error_type: "error_go_core"
imports: [fmt, net]
params:
- name: host
desc: "hostname a resolver"
output: "slice de strings con direcciones IP resueltas, o error si la resolucion falla"
tested: false
tests: []
test_file_path: ""
+8
View File
@@ -14,6 +14,14 @@ returns: []
returns_optional: false
error_type: "error_go_core"
imports: [fmt, net, time]
params:
- name: host
desc: "hostname o direccion IP del host a escanear"
- name: port
desc: "numero de puerto TCP a escanear"
- name: timeoutMs
desc: "timeout en milisegundos para la conexion"
output: "tupla (status, banner, err) con estado del puerto (open/closed/filtered), banner si esta abierto, y error si aplica"
tested: false
tests: []
test_file_path: ""
+6
View File
@@ -14,6 +14,12 @@ returns: []
returns_optional: false
error_type: ""
imports: []
params:
- name: data
desc: "slice de valores de serie temporal (ej: [100, 102, 101, 103, ...])"
- name: lag
desc: "desfase en períodos (ej: 1 para correlación con el período anterior, 12 para correlación anual en datos mensuales)"
output: "coeficiente de correlación de Pearson entre data y su versión desfasada, rango [-1, 1]"
tested: false
tests: []
test_file_path: ""
+8
View File
@@ -14,6 +14,14 @@ returns: []
returns_optional: false
error_type: ""
imports: []
params:
- name: data
desc: "slice de valores reales a recortar"
- name: min
desc: "límite inferior del rango permitido"
- name: max
desc: "límite superior del rango permitido"
output: "slice con cada valor limitado al rango [min, max]"
tested: false
tests: []
test_file_path: ""
+6
View File
@@ -14,6 +14,12 @@ returns: []
returns_optional: false
error_type: ""
imports: ["math"]
params:
- name: data
desc: "slice de valores numéricos a analizar"
- name: threshold
desc: "umbral de z-score para considerar un valor outlier (ej: 2.0 para 2 desviaciones estándar)"
output: "slice de booleanos del mismo tamaño que data, true si el elemento es outlier"
tested: false
tests: []
test_file_path: ""
+10
View File
@@ -14,6 +14,16 @@ returns: []
returns_optional: false
error_type: ""
imports: ["fmt"]
params:
- name: before
desc: "slice de snapshots de entities antes (ej: resultado de query anterior)"
- name: after
desc: "slice de snapshots de entities después (ej: resultado de query actual)"
- name: key
desc: "nombre del campo clave para emparejar entities (ej: 'id', 'uuid')"
- name: ignoreFields
desc: "slice de nombres de campos a ignorar en comparación (nil usa defaults ['created_at', 'updated_at'])"
output: "mapa con 'summary', 'added', 'removed', 'modified', 'unchanged' - análisis completo de diferencias"
tested: true
tests:
- "entity añadida"
@@ -14,6 +14,12 @@ returns: []
returns_optional: false
error_type: "error_go_core"
imports: ["fmt"]
params:
- name: dsn
desc: "connection string para la BD (ej: 'user:pass@tcp(host:3306)/dbname', 'bigquery://project-id')"
- name: query
desc: "consulta SQL a ejecutar (ej: 'SELECT * FROM users WHERE status = \"active\"')"
output: "slice de mapas columna-valor (ej: [{'id': 1, 'name': 'Alice'}, {'id': 2, 'name': 'Bob'}])"
tested: false
tests: []
test_file_path: ""
+4
View File
@@ -14,6 +14,10 @@ returns: []
returns_optional: false
error_type: ""
imports: ["math", "math/cmplx"]
params:
- name: data
desc: "slice de valores de serie temporal o señal (ej: [1.0, 2.0, 3.0, ...], se aplica zero-padding si no es potencia de 2)"
output: "slice de números complejos representando amplitud y fase en dominio de frecuencia, tamaño potencia de 2"
tested: false
tests: []
test_file_path: ""
+6
View File
@@ -14,6 +14,12 @@ returns: []
returns_optional: false
error_type: ""
imports: []
params:
- name: xs
desc: "slice de elementos a agrupar (tipo genérico T)"
- name: keyFn
desc: "función que extrae la clave de agrupación de cada elemento (ej: func(u User) string { return u.Department })"
output: "mapa de clave a slice de elementos agrupados (ej: {'Sales': [user1, user2], 'Engineering': [user3]})"
tested: false
tests: []
test_file_path: ""
+6
View File
@@ -14,6 +14,12 @@ returns: []
returns_optional: false
error_type: ""
imports: ["math"]
params:
- name: data
desc: "slice de valores numéricos a distribuir en el histograma"
- name: buckets
desc: "número de buckets equiespaciados (ej: 10, 50, 100)"
output: "slice de enteros con frecuencias en cada bucket, tamaño igual a buckets"
tested: false
tests: []
test_file_path: ""
+4
View File
@@ -14,6 +14,10 @@ returns: []
returns_optional: false
error_type: ""
imports: ["math"]
params:
- name: data
desc: "slice de valores que pueden contener NaN (valores faltantes)"
output: "slice sin NaN, cada valor NaN reemplazado por el último valor válido anterior (forward-fill)"
tested: false
tests: []
test_file_path: ""
+4
View File
@@ -14,6 +14,10 @@ returns: []
returns_optional: false
error_type: "error_go_core"
imports: ["fmt"]
params:
- name: path
desc: "ruta al archivo CSV (ej: '/data/sales.csv')"
output: "slice de mapas donde cada mapa es una fila (columna -> valor), ej: [{'id': '1', 'name': 'Alice', 'sales': '100'}]"
tested: false
tests: []
test_file_path: ""
+4
View File
@@ -14,6 +14,10 @@ returns: []
returns_optional: false
error_type: "error_go_core"
imports: ["fmt"]
params:
- name: path
desc: "ruta al archivo Parquet (ej: '/data/events.parquet')"
output: "slice de mapas donde cada mapa es una fila (columna -> valor), ej: [{'user_id': 123, 'timestamp': '2026-01-01T10:00:00'}]"
tested: false
tests: []
test_file_path: ""
+8
View File
@@ -14,6 +14,14 @@ returns: []
returns_optional: false
error_type: ""
imports: []
params:
- name: s
desc: "estado actual del atractor como {X, Y, Z} (coordenadas 3D del sistema)"
- name: dt
desc: "paso temporal de integración (ej: 0.005 segundos, valores menores = más preciso)"
- name: p
desc: "parámetros del sistema Lorenz (sigma≈10, rho≈28, beta≈8/3 para el butterfly clásico)"
output: "nuevo estado después de un paso de integración Euler, coordenadas típicamente en rango [-20, 20]"
tested: false
tests: []
test_file_path: ""
+4
View File
@@ -14,6 +14,10 @@ returns: []
returns_optional: false
error_type: ""
imports: ["math"]
params:
- name: data
desc: "slice de valores numéricos a normalizar"
output: "slice escalado al rango [0, 1] donde min(data)→0 y max(data)→1"
tested: false
tests: []
test_file_path: ""
+6
View File
@@ -14,6 +14,12 @@ returns: []
returns_optional: false
error_type: ""
imports: ["math"]
params:
- name: xs
desc: "primer slice de valores (ej: precios del activo X, o variable independiente)"
- name: ys
desc: "segundo slice de valores (ej: precios del activo Y, o variable dependiente, mismo tamaño que xs)"
output: "coeficiente de correlación de Pearson en rango [-1, 1], donde 1=correlación perfecta, -1=anticorrelación, 0=sin correlación"
tested: false
tests: []
test_file_path: ""
+12
View File
@@ -14,6 +14,18 @@ returns: []
returns_optional: false
error_type: ""
imports: []
params:
- name: rows
desc: "slice de mapas columna-valor (ej: resultado de load_csv o fetch_data_frame)"
- name: index
desc: "nombre de columna que se convierte en fila (ej: 'region')"
- name: columns
desc: "nombre de columna cuyos valores únicos se convierten en nuevas columnas (ej: 'product')"
- name: values
desc: "nombre de columna con valores a agregar (ej: 'sales')"
- name: agg
desc: "función de agregación: 'sum', 'count', 'mean', 'min', 'max', 'first', 'last'"
output: "slice de mapas pivotados donde cada fila agrupa por index, con nuevas columnas por cada valor unique de columns"
tested: true
tests:
- "Pivot basico con sum"
+6
View File
@@ -14,6 +14,12 @@ returns: []
returns_optional: false
error_type: ""
imports: []
params:
- name: xs
desc: "slice de elementos a ventanar (tipo genérico T)"
- name: size
desc: "tamaño de cada ventana deslizante (ej: 10 para ventanas de 10 elementos)"
output: "slice de slices donde cada inner slice es una ventana de tamaño size, total ventanas = len(xs) - size + 1"
tested: false
tests: []
test_file_path: ""
+4
View File
@@ -14,6 +14,10 @@ returns: []
returns_optional: false
error_type: ""
imports: ["math"]
params:
- name: data
desc: "slice de valores numéricos a normalizar"
output: "slice estandarizado donde cada valor x → (x - media) / desviación_estándar, media=0 y desviación_estándar=1"
tested: false
tests: []
test_file_path: ""
+6
View File
@@ -14,6 +14,12 @@ returns: []
returns_optional: false
error_type: ""
imports: []
params:
- name: as
desc: "primer slice de valores (ej: precios)"
- name: bs
desc: "segundo slice de valores (ej: volúmenes)"
output: "slice de pares [2]float64 donde cada par es [as[i], bs[i]], longitud = min(len(as), len(bs))"
tested: false
tests: []
test_file_path: ""
@@ -14,6 +14,12 @@ returns: []
returns_optional: false
error_type: ""
imports: [math]
params:
- name: returns
desc: "slice de retornos diarios/periódicos, valores típicamente entre -0.1 y 0.1 (ej: -2% = -0.02)"
- name: periodsPerYear
desc: "número de períodos por año (252 para diarios, 12 para mensuales, 52 para semanales)"
output: "volatilidad anualizada como ratio (ej: 0.25 = 25% volatilidad anual)"
tested: false
tests: []
test_file_path: ""
+8
View File
@@ -14,6 +14,14 @@ returns: [bollinger_result_go_finance]
returns_optional: false
error_type: ""
imports: [math]
params:
- name: data
desc: "slice de precios de cierre (ej: [22.5, 23.1, 22.8, ...])"
- name: period
desc: "período de la media móvil simple (ej: 5, 20, 50 días)"
- name: numStdDev
desc: "número de desviaciones estándar para las bandas (típicamente 2.0)"
output: "tupla (upper, middle, lower) - tres slices de precios banda superior, media (SMA) e inferior"
tested: false
tests: []
test_file_path: ""
+6
View File
@@ -14,6 +14,12 @@ returns: []
returns_optional: false
error_type: ""
imports: []
params:
- name: data
desc: "slice de precios de cierre o valores de serie temporal (ej: [10.0, 11.0, 12.0, ...])"
- name: period
desc: "período de suavizado (ej: 5, 12, 26 días), determina multiplicador 2/(period+1)"
output: "slice de valores EMA del mismo tamaño que data, primeros period-1 elementos son 0"
tested: false
tests: []
test_file_path: ""
+6
View File
@@ -14,6 +14,12 @@ returns: [ohlcv_go_finance]
returns_optional: false
error_type: "error_go_core"
imports: [fmt]
params:
- name: symbol
desc: "símbolo del instrumento (ej: 'BTC/USDT', 'EUR/USD', 'AAPL')"
- name: interval
desc: "intervalo temporal (ej: '1m', '5m', '1h', '1d')"
output: "slice de slices de 5 floats en orden [open, high, low, close, volume] por cada vela"
tested: false
tests: []
test_file_path: ""
@@ -14,6 +14,12 @@ returns: [ohlcv_go_finance]
returns_optional: false
error_type: "error_go_core"
imports: [fmt]
params:
- name: dbPath
desc: "ruta al archivo DuckDB (ej: '/data/market.duckdb')"
- name: query
desc: "consulta SQL para extraer filas (ej: 'SELECT open, high, low, close, volume FROM ohlcv WHERE symbol=\"BTC\"')"
output: "slice de slices de 5 floats en orden [open, high, low, close, volume] por cada fila de resultado"
tested: false
tests: []
test_file_path: ""
+6
View File
@@ -14,6 +14,12 @@ returns: []
returns_optional: false
error_type: ""
imports: [math]
params:
- name: priceStart
desc: "precio inicial en unidad de moneda (ej: 100.0 USD)"
- name: priceEnd
desc: "precio final en unidad de moneda (ej: 110.0 USD)"
output: "retorno logarítmico sin dimensión (ej: 0.09531 ≈ 9.53%), devuelve 0 si precios <= 0"
tested: false
tests: []
test_file_path: ""
+4
View File
@@ -14,6 +14,10 @@ returns: [drawdown_result_go_finance]
returns_optional: false
error_type: ""
imports: []
params:
- name: values
desc: "slice de valores de equity curve o net worth (ej: [1000, 1200, 900, 1100, 800])"
output: "tupla (maxDD, start, end) - drawdown como ratio [0,1] (ej: 0.333 = 33.3%), índice de pico, índice de valle"
tested: false
tests: []
test_file_path: ""
+12
View File
@@ -14,6 +14,18 @@ returns: [ohlcv_go_finance]
returns_optional: false
error_type: ""
imports: []
params:
- name: open
desc: "slice de precios de apertura"
- name: high
desc: "slice de precios máximos"
- name: low
desc: "slice de precios mínimos"
- name: close
desc: "slice de precios de cierre"
- name: factor
desc: "multiplicador escalar (ej: 2.0 para duplicar precios, 1/100 para convertir centavos a dólares)"
output: "tupla (open_adj, high_adj, low_adj, close_adj) - cuatro slices de precios ajustados"
tested: false
tests: []
test_file_path: ""
+6
View File
@@ -14,6 +14,12 @@ returns: []
returns_optional: false
error_type: ""
imports: []
params:
- name: data
desc: "slice de precios de cierre o valores de serie temporal"
- name: period
desc: "período de cálculo (ej: 5, 14, 21 días)"
output: "slice de valores RSI del mismo tamaño que data, rango [0, 100], primeros period elementos son 0"
tested: false
tests: []
test_file_path: ""
+8
View File
@@ -14,6 +14,14 @@ returns: []
returns_optional: false
error_type: ""
imports: [math]
params:
- name: returns
desc: "slice de retornos periódicos (ej: [0.01, -0.02, 0.015, 0.008])"
- name: riskFreeRate
desc: "tasa libre de riesgo por período (ej: 0.0001 para 0.01% diario)"
- name: periodsPerYear
desc: "número de períodos por año (252 para diarios, 12 para mensuales)"
output: "ratio de Sharpe anualizado sin dimensión (ej: 1.5 = 1.5 unidades de retorno por unidad de riesgo)"
tested: false
tests: []
test_file_path: ""
+6
View File
@@ -14,6 +14,12 @@ returns: []
returns_optional: false
error_type: ""
imports: []
params:
- name: data
desc: "slice de precios de cierre o valores de serie temporal (ej: [1.0, 2.0, 3.0, ...])"
- name: period
desc: "período de media móvil (ej: 5, 20, 50, 200 días)"
output: "slice de valores SMA del mismo tamaño que data, primeros period-1 elementos son 0 (sin datos suficientes)"
tested: false
tests: []
test_file_path: ""
+4
View File
@@ -14,6 +14,10 @@ returns: [tick_go_finance]
returns_optional: false
error_type: "error_go_core"
imports: [fmt]
params:
- name: symbol
desc: "símbolo del instrumento (ej: 'BTC/USDT', 'EUR/USD')"
output: "canal que emite pares [2]float64 de [precio, volumen] en cada tick en tiempo real"
tested: false
tests: []
test_file_path: ""
+10
View File
@@ -14,6 +14,16 @@ returns: [ohlcv_go_finance]
returns_optional: false
error_type: ""
imports: []
params:
- name: prices
desc: "slice de precios de ticks en orden cronológico"
- name: volumes
desc: "slice de volúmenes de ticks (mismo tamaño que prices)"
- name: timestamps
desc: "slice de timestamps en unix seconds (mismo tamaño que prices, debe estar ordenado)"
- name: intervalSecs
desc: "intervalo de agregación en segundos (ej: 60 para 1 minuto, 3600 para 1 hora)"
output: "tupla (open, high, low, close, volume) - cinco slices de datos OHLCV agregados por intervalo"
tested: false
tests: []
test_file_path: ""
+6
View File
@@ -14,6 +14,12 @@ returns: []
returns_optional: false
error_type: ""
imports: []
params:
- name: prices
desc: "slice de precios de ticks o velas (ej: [100.0, 102.0, 101.0])"
- name: volumes
desc: "slice de volúmenes correspondientes (mismo tamaño que prices)"
output: "precio promedio ponderado por volumen en unidad de moneda (ej: 100.95)"
tested: false
tests: []
test_file_path: ""
@@ -14,6 +14,12 @@ returns: []
returns_optional: false
error_type: "error_go_core"
imports: [fmt]
params:
- name: path
desc: "ruta destino del archivo Parquet (ej: '/data/btc_1h.parquet')"
- name: data
desc: "slice de slices de 5 floats en orden [open, high, low, close, volume] por cada vela"
output: "error si la escritura falla, nil si éxito"
tested: false
tests: []
test_file_path: ""
+6
View File
@@ -14,6 +14,12 @@ returns: []
returns_optional: false
error_type: "error_go_core"
imports: ["database/sql", "encoding/json", "sync", "time", "fmt"]
params:
- name: dbPath
desc: "ruta del archivo SQLite donde persiste el cache"
- name: namespace
desc: "prefijo de tabla para aislar caches en el mismo archivo"
output: "instancia thread-safe de SQLiteCache con metodos Get, Set, Delete, Clear, GetOrSet"
tested: true
tests:
- "Set/Get basico"
+12
View File
@@ -14,6 +14,18 @@ returns: []
returns_optional: false
error_type: "error_go_core"
imports: ["database/sql", "github.com/ClickHouse/clickhouse-go/v2"]
params:
- name: host
desc: "hostname del servidor ClickHouse"
- name: port
desc: "puerto de ClickHouse (9000 para protocolo nativo, 8123 para HTTP)"
- name: user
desc: "nombre de usuario para autenticacion"
- name: password
desc: "contraseña para autenticacion"
- name: database
desc: "nombre de la base de datos a conectar"
output: "conexion sql.DB abierta a ClickHouse con ping verificado"
tested: false
tests: []
test_file_path: ""
+6
View File
@@ -14,6 +14,12 @@ returns: []
returns_optional: false
error_type: "error_go_core"
imports: [context, time]
params:
- name: schedule
desc: "estructura CronTickerSchedule con campos Minute, Hour, DayOfMonth, Month, DayOfWeek"
- name: ctx
desc: "context que al cancelarse cierra el channel de ticks"
output: "channel que emite time.Time en cada tick del schedule cron"
tested: true
tests:
- "context cancel cierra el channel"
+4
View File
@@ -14,6 +14,10 @@ returns: []
returns_optional: false
error_type: "error_go_core"
imports: ["database/sql"]
params:
- name: db
desc: "conexion sql.DB a cerrar"
output: "nil si el cierre fue exitoso, error en caso contrario"
tested: false
tests: []
test_file_path: ""

Some files were not shown because too many files have changed in this diff Show More