tecsas3 pipe ejecuta workflows declarativos definidos en YAML o JSON. Cada step es una
llamada real al CLI (tecsas3 <recurso> <comando> --flag valor); el orquestador
(cli/src/tecsas3_cli/resources/pipeline.py) se encarga de resolver placeholders, propagar
resultados entre steps y reportar el resultado final en JSON determinista. Es la pieza que
hace el CLI componible: un agente puede describir un workflow complejo y el CLI lo
ejecuta paso a paso sin necesidad de escribir bash.
Anatomía de un pipeline
_validate_steps() en pipeline.py:109-123):
id, resource, command. El id no puede contener espacios y debe ser único dentro
del pipeline — se usa como clave de contexto para los placeholders.
Placeholders
La resolución ocurre en_resolve() (pipeline.py:46-65) antes de cada invocación. Hay
tres formas de expresar una referencia:
Los placeholders se interpolan dentro de strings (sustitución parcial) y también se
evalúan cuando toda la cadena es un placeholder puro (preservando el tipo original:
número, lista, dict).
Ejemplo: workflow de tres steps
Modos de ejecución
- dry-run
- output-all
Imprime la definición validada sin ejecutar nada. Útil para revisar el plan antes
de invocar APIs reales.Salida (JSON, recortada):
Comandos disponibles
Cada step se ejecuta dentro de un
CliRunner de Typer con el mismo Runtime
(rt: Runtime = ctx.obj) que la invocación principal. Esto significa que el token, el
tenant configurado y el formato de salida se heredan del proceso padre. Si lanzas
tecsas3 --json --no-input pipe run workflow.yml, todos los steps se ejecutan también
en modo JSON.Manejo de errores
- Default (
continue_on_error: false) — el primer step que devuelveexit_code != 0aborta el pipeline. El orquestador emite{error, step, outputs}conexit_codeno-cero. continue_on_error: true— el step que falla se registra constatus: "error"ystderrcapturado, y el pipeline continúa. Los placeholders que dependan de ese step reventarán en_resolve()(KeyError); protégelos también concontinue_on_erroren el step que los consume.- Placeholder no resuelto — el error aparece antes de invocar el sub-comando, así
que el step queda registrado como
skipped(no llama a la API).
Validación previa
tecsas3 pipe validate no hace red: solo parsea el YAML/JSON y comprueba que steps
contenga una lista de dicts con los campos obligatorios. Es seguro en CI:
Referencias
cli/src/tecsas3_cli/resources/pipeline.py:46-65—_resolve()(placeholders en strings)cli/src/tecsas3_cli/resources/pipeline.py:27-43—_dotted_get()(dot/bracket paths)cli/src/tecsas3_cli/resources/pipeline.py:84-106—_args_to_argv()(mapa → flags CLI)cli/src/tecsas3_cli/resources/pipeline.py:109-123—_validate_steps()(campos mínimos)cli/data/pipeline_examples/— ejemplos:triage.yml,export_fhir.yml,icd_workflow.yml