Files
fn_registry/bash/functions/shell/run_steps.md
T
egutierrez 5f4f1f7508 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.
2026-04-05 18:45:16 +02:00

2.8 KiB

name, kind, lang, domain, version, purity, signature, description, tags, uses_functions, uses_types, returns, returns_optional, error_type, imports, params, output, tested, tests, test_file_path, file_path
name kind lang domain version purity signature description tags uses_functions uses_types returns returns_optional error_type imports params output tested tests test_file_path file_path
run_steps function bash shell 1.0.0 impure run_steps(yaml_file: string, [--strict]) -> string Ejecuta pasos de un YAML generico donde cada step tiene action=command. Lee el YAML con yq, ejecuta cada paso secuencialmente con timeout configurable, captura exit code y output, respeta continue_on_error, y al final reporta JSON estandar a stdout via report_execution_json. Sale con exit code 0 (success), 1 (failure) o 2 (partial). Con --strict mapea partial a failure.
execution
yaml
runner
standard
pipeline
exit_with_status_bash_shell
report_execution_json_bash_shell
false error_go_core
name desc
yaml_file archivo YAML con especificación de pasos
name desc
--strict flag opcional para mapear partial a failure
JSON de ejecución con detalles de cada paso false
bash/functions/shell/run_steps.sh

Ejemplo

# /tmp/test_flow.yaml
name: test_flow
steps:
  - name: check
    action: command
    command: "echo hello"
  - name: list
    action: command
    command: "ls /tmp"
    continue_on_error: true
  - name: slow_step
    action: command
    command: "sleep 2"
    timeout_ms: 1000
    continue_on_error: true
source bash/functions/shell/run_steps.sh

run_steps /tmp/test_flow.yaml
# Imprime JSON a stdout:
# {
#   "name": "test_flow",
#   "status": "partial",
#   "exit_code": 2,
#   "started_at": "2026-04-01T10:00:00Z",
#   "ended_at": "2026-04-01T10:00:01Z",
#   "duration_ms": 1250,
#   "steps_total": 3,
#   "steps_ok": 2,
#   "steps_failed": 1,
#   "steps": [
#     {"name": "check", "action": "command", "status": "ok", "elapsed_ms": 10, "output": "hello"},
#     {"name": "list", "action": "command", "status": "ok", "elapsed_ms": 15},
#     {"name": "slow_step", "action": "command", "status": "error", "elapsed_ms": 1001, "error": "timeout: comando excedio 1000ms"}
#   ]
# }
# Sale con exit code 2 (partial)

run_steps /tmp/test_flow.yaml --strict
# Igual pero status="failure" y exit code=1

Notas

Requiere yq (v4+, modo expression -e) y jq (o la implementacion printf de report_execution_json). Solo soporta action: command — otros actions se marcan como error del paso. El campo timeout_ms por defecto es 30000 (30s); si el comando excede el timeout, timeout(1) sale con exit code 124 y se registra el error correspondiente. El output del comando (stdout+stderr combinados) se sanitiza reemplazando tabuladores y saltos de linea por espacios antes de escribir al TSV temporal. Las funciones exit_with_status y report_execution_json se cargan via source desde el mismo directorio que run_steps.sh.