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-commande | Effet |
|---|---|
echolot flow list | Liste les flux de l’espace de travail avec leurs entrées et leurs problèmes. |
echolot flow run | Exécute un flux, affiche chaque bloc quand il se termine, puis la sortie du flux. |
echolot flow new | Crée un flux, vide ou à partir d’un modèle ; sans nom, liste les modèles. |
echolot flow serve | Exé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.echolotmorning-stock-check Morning stock check
order-status-webhook Order status on webhook
place-test-order Place a test order MCP tool place_test_orderChaque 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=valuedé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-inputne demande jamais : le flux échoue à cet endroit, ce que vous voulez en CI. --jsonaffiche 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| Option | Signification |
|---|---|
-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. |
--json | Afficher l’enregistrement de l’exécution en JSON au lieu de la progression. |
--no-input | Ne 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.echolotCreated 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.
| Option | Signification |
|---|---|
-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 4100Serving 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.
| Option | Signification |
|---|---|
-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. |
--share | Ré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
| Code | Quand |
|---|---|
0 | run : le flux a réussi avec tous ses tests. list, new : terminé. |
1 | run : le flux a échoué, ou un test a échoué. |
64 | Une option erronée, un flux ou un environnement qui n’existe pas, ou un --input qui n’est pas de la forme name=value. |
echolot fake
Produisez des données fictives à partir d’un modèle dans le terminal, pour des jeux de test, des données d’amorçage et des corps de mock, avec les mêmes valeurs fictives que les routes de mock.
echolot agent
Exécutez l’agent intégré sur une tâche sans l’app, avec un fichier de politique à la place des approbations, pour les scripts et la CI.