Echolot
Ligne de commande et CI

echolot flow

Listez, exécutez et créez les flux d’un espace de travail depuis le terminal, et servez leurs planifications et leurs webhooks.

echolot flow exécute des flux sans l’app : une fois depuis un terminal ou une tâche de CI, ou comme service qui exécute les flux planifiés quand ils sont dus et répond aux webhooks.

Sous-commandeEffet
echolot flow listListe les flux de l’espace de travail avec leurs entrées et leurs problèmes.
echolot flow runExécute un flux, affiche chaque bloc quand il se termine, puis la sortie du flux.
echolot flow newCrée un flux, vide ou à partir d’un modèle ; sans nom, liste les modèles.
echolot flow serveExécute les flux planifiés quand ils sont dus et répond aux webhooks, jusqu’à l’arrêt.

Chaque sous-commande prend l’espace de travail avec -w ou --workspace.

echolot flow list

echolot flow list --workspace <workspace> [--json]
echolot flow list -w Alpenglow.echolot
morning-stock-check  Morning stock check
order-status-webhook  Order status on webhook
place-test-order  Place a test order  MCP tool place_test_order

Chaque ligne contient le slug du flux (son nom de fichier dans flows/ sans .flow.toml) et son nom, puis, quand il en a, ses entrées entre parenthèses (les facultatives entre crochets), l’outil MCP sous lequel il est proposé, et le nombre de problèmes. --json affiche chaque flux avec son slug, son name, sa description, ses inputs, son blockCount, ses errors, ses warnings, et son schedule ou son webhook.

echolot flow run

echolot flow run <flow> --workspace <workspace> [--env <env>] [--input <name=value> ...] [--json] [--no-input]

<flow> est le slug ou le nom du flux.

echolot flow run morning-stock-check -w Alpenglow.echolot
✓ start  Start  0 ms
✓ list  List products  148 ms
✓ low  Running low?  4 ms
notification: Restock Bern — A tent is under five in Bern.
✓ notify  Restock  0 ms
Morning stock check: passed in 152 ms
  • Chaque bloc affiche une ligne quand il se termine : ✓ ou ✗, son ID, son titre et sa durée, avec l’erreur en cas d’échec. Ce qu’écrivent les blocs Journal, et le résultat de chaque test, suivent sur des lignes à part.
  • Les notifications vont sur la sortie d’erreur.
  • La sortie du flux s’affiche à la fin, en JSON, suivie d’un résumé sur la sortie d’erreur.
  • --input name=value définit une entrée, sous forme de texte converti dans le type de l’entrée. Donnez-le une fois par entrée.
  • Quand un flux a besoin d’une personne (une entrée sans valeur, un bloc Approuver), Echolot demande dans le terminal. --no-input ne demande jamais : le flux échoue à cet endroit, ce que vous voulez en CI.
  • --json affiche tout l’enregistrement de l’exécution en JSON au lieu des lignes de progression.
echolot flow run "Place a test order" -w Alpenglow.echolot --env staging --no-input
OptionSignification
-w, --workspace <folder>Le dossier de l’espace de travail. Obligatoire.
--env <env>L’environnement qu’utilisent les requêtes du flux : son nom de fichier sans .toml, ou son nom.
--input <name=value>Une entrée ; le texte est converti dans le type de l’entrée. Répétable.
--jsonAfficher l’enregistrement de l’exécution en JSON au lieu de la progression.
--no-inputNe jamais demander : un flux qui a besoin d’une personne échoue à cet endroit.

L’exécution échoue, et se termine avec le code 1, quand le flux échoue ou que l’un de ses tests échoue.

echolot flow new

echolot flow new [<name>] [--workspace <workspace>] [--template <template>]

Sans nom, il liste les modèles :

device-sign-in  OAuth device sign-in: shows the code and link (with a QR code), waits until the person approves, saves the tokens to the Keychain.
refresh-token  Trades the refresh token for a new access token and saves both to the Keychain; says so when it fails.
paginate-and-export  Fetches a number of pages, gathers their items into one list and writes it to a JSON file in the workspace.
smoke-monitor  Every hour, checks that a request answers 200 quickly; a notification when it does not.
seed-and-clean-up  Creates a few records, leaves room for what needs them, then deletes each one again.

Avec un nom, il écrit un nouveau fichier de flux :

echolot flow new "Export tents" --template paginate-and-export -w Alpenglow.echolot
Created flows/export-tents.flow.toml.

Les modèles vous laissent choisir leurs requêtes, dans l’app ou dans le fichier du flux ; une note sur le canevas indique lesquelles. Voir modèles.

OptionSignification
-w, --workspace <folder>Le dossier de l’espace de travail.
--template <template>Le modèle de départ : device-sign-in, refresh-token, paginate-and-export, smoke-monitor ou seed-and-clean-up. Sans lui, le flux est vide.

echolot flow serve

echolot flow serve --workspace <workspace> [--env <env>] [--port <port>] [--share] [--token <token>]

Exécute chaque flux planifié quand il est dû, et répond aux webhooks des flux qui en ont un, jusqu’à ce que vous l’arrêtiez avec ⌃C. Lancez-le sur un serveur ou dans un conteneur pour que les automatisations d’un espace de travail continuent de tourner sans l’app.

echolot flow serve -w Alpenglow.echolot --port 4100
Serving Alpenglow (Ctrl-C stops it)
  schedule  Morning stock check: 0 6 * * *
  webhook   POST http://127.0.0.1:4100/order-status  (Order status on webhook)
  token     3f9a…

Chaque exécution affiche une ligne avec l’heure, le flux, comment il s’est terminé et combien de temps il a pris.

Webhooks. Un appelant envoie la méthode et le chemin du webhook du flux, avec le jeton sous la forme Authorization: Bearer <token>, d’un en-tête X-Echolot-Token, ou de ?token= dans l’URL. Les entrées du flux viennent de la requête et d’un corps JSON ; une entrée nommée body reçoit le corps entier. La réponse est la sortie du flux en JSON, 500 avec l’erreur quand le flux a échoué, 401 sans le bon jeton, et 404 avec les chemins existants pour un chemin qu’aucun flux n’a.

curl -X POST http://127.0.0.1:4100/order-status \
  -H "Authorization: Bearer $ECHOLOT_WEBHOOK_TOKEN" \
  -H 'Content-Type: application/json' \
  -d '{"orderId": "ord_7Hk2Lw"}'

Le jeton est --token, sinon ECHOLOT_WEBHOOK_TOKEN, sinon un nouveau jeton qu’Echolot affiche. Une exécution de webhook peut durer jusqu’à deux minutes ; un corps de plus de 8 Mo est refusé en entier.

OptionSignification
-w, --workspace <folder>Le dossier de l’espace de travail. Obligatoire.
--env <env>L’environnement qu’utilisent les requêtes des flux.
--port <port>Le port des webhooks ; 0 en choisit un libre. 4100 par défaut.
--shareRépondre aux webhooks sur toutes les interfaces réseau, pas seulement cette machine : pour les conteneurs.
--token <token>Le jeton des webhooks. Par défaut : ECHOLOT_WEBHOOK_TOKEN, sinon un nouveau jeton, affiché.

Voir exécuter des flux et déclencheurs pour les planifications et les webhooks dans l’app.

Codes de sortie

CodeQuand
0run : le flux a réussi avec tous ses tests. list, new : terminé.
1run : le flux a échoué, ou un test a échoué.
64Une option erronée, un flux ou un environnement qui n’existe pas, ou un --input qui n’est pas de la forme name=value.

Sur cette page