Echolot
Befehlszeile und CI

echolot flow

Liste die Flows eines Arbeitsbereichs vom Terminal aus auf, führe sie aus und erstelle sie, und stelle ihre Zeitpläne und Webhooks bereit.

echolot flow führt Flows ohne die App aus: einmal von einem Terminal oder einem CI-Job aus oder als Dienst, der Flows nach Zeitplan ausführt, wenn sie fällig sind, und Webhooks beantwortet.

UnterbefehlWas er macht
echolot flow listListet die Flows des Arbeitsbereichs mit ihren Eingaben und Problemen auf.
echolot flow runFührt einen Flow aus, gibt jeden Block aus, sobald er fertig ist, dann die Ausgabe des Flows.
echolot flow newErstellt einen Flow, leer oder aus einer Vorlage; ohne Namen listet er die Vorlagen auf.
echolot flow serveFührt Flows nach Zeitplan aus, wenn sie fällig sind, und beantwortet Webhooks, bis er beendet wird.

Jeder Unterbefehl nimmt den Arbeitsbereich mit -w oder --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

Jede Zeile hat den Slug des Flows (sein Dateiname in flows/ ohne .flow.toml) und seinen Namen, dann, wenn er sie hat, seine Eingaben in Klammern (optionale in eckigen Klammern), das MCP-Tool, als das er angeboten wird, und die Zahl der Probleme. --json gibt jeden Flow mit seinem slug, name, description, inputs, blockCount, errors, warnings und seinem schedule oder webhook aus.

echolot flow run

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

<flow> ist der Slug oder der Name des Flows.

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
  • Jeder Block gibt eine Zeile aus, wenn er fertig ist: ✓ oder ✗, seine ID, sein Titel und seine Zeit, bei einem Fehlschlag mit dem Fehler. Was Log-Blöcke schreiben und das Ergebnis jedes Tests folgen in eigenen Zeilen.
  • Benachrichtigungen gehen in die Standardfehlerausgabe.
  • Die Ausgabe des Flows steht am Ende, als JSON, gefolgt von einer Zusammenfassung in der Standardfehlerausgabe.
  • --input name=value setzt eine Eingabe, als Text, der in den Typ der Eingabe umgewandelt wird. Gib es einmal pro Eingabe an.
  • Braucht ein Flow eine Person (eine Eingabe ohne Wert, einen Block Genehmigen), fragt Echolot im Terminal. --no-input fragt nie: Der Flow schlägt dort stattdessen fehl, was du in CI willst.
  • --json gibt statt der Fortschrittszeilen den ganzen Datensatz des Laufs als JSON aus.
echolot flow run "Place a test order" -w Alpenglow.echolot --env staging --no-input
OptionBedeutung
-w, --workspace <folder>Der Ordner des Arbeitsbereichs. Erforderlich.
--env <env>Die Umgebung, die die Anfragen des Flows nutzen: ihr Dateiname ohne .toml oder ihr Name.
--input <name=value>Eine Eingabe; Text wird in den Typ der Eingabe umgewandelt. Wiederholbar.
--jsonDen Datensatz des Laufs als JSON statt des Fortschritts ausgeben.
--no-inputNie fragen: Ein Flow, der eine Person braucht, schlägt dort fehl.

Der Lauf schlägt fehl und endet mit 1, wenn der Flow oder einer seiner Tests fehlschlägt.

echolot flow new

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

Ohne Namen listet es die Vorlagen auf:

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.

Mit einem Namen schreibt es eine neue Flow-Datei:

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

Vorlagen lassen ihre Anfragen für dich offen, damit du sie in der App oder in der Datei des Flows wählst; eine Notiz auf der Arbeitsfläche sagt, welche. Siehe Vorlagen.

OptionBedeutung
-w, --workspace <folder>Der Ordner des Arbeitsbereichs.
--template <template>Die Vorlage, mit der begonnen wird: device-sign-in, refresh-token, paginate-and-export, smoke-monitor oder seed-and-clean-up. Ohne sie ist der Flow leer.

echolot flow serve

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

Führt jeden Flow mit einem Zeitplan aus, wenn er fällig ist, und beantwortet die Webhooks der Flows, die einen haben, bis du ihn mit ⌃C beendest. Lass es auf einem Server oder in einem Container laufen, um die Automatisierungen eines Arbeitsbereichs ohne die App am Laufen zu halten.

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…

Jeder Lauf gibt eine Zeile mit der Zeit, dem Flow, wie er endete und wie lange er dauerte aus.

Webhooks. Ein Aufrufer sendet die Methode und den Pfad des Webhooks des Flows, mit dem Token als Authorization: Bearer <token>, als Header X-Echolot-Token oder als ?token= in der URL. Die Eingaben des Flows kommen aus der Query und aus einem JSON-Body; eine Eingabe namens body bekommt den ganzen Body. Die Antwort ist die Ausgabe des Flows als JSON, 500 mit dem Fehler, wenn der Flow fehlschlug, 401 ohne das richtige Token und 404 mit den vorhandenen Pfaden für einen Pfad, den kein Flow hat.

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"}'

Das Token ist --token, sonst ECHOLOT_WEBHOOK_TOKEN, sonst ein neues, das Echolot ausgibt. Der Lauf eines Webhooks darf bis zu zwei Minuten dauern; ein Body über 8 MB wird ganz abgelehnt.

OptionBedeutung
-w, --workspace <folder>Der Ordner des Arbeitsbereichs. Erforderlich.
--env <env>Die Umgebung, die die Anfragen der Flows nutzen.
--port <port>Der Port für Webhooks; 0 wählt einen freien. Standard 4100.
--shareWebhooks auf jeder Netzwerkschnittstelle beantworten, nicht nur auf diesem Rechner: für Container.
--token <token>Das Token für Webhooks. Standard: ECHOLOT_WEBHOOK_TOKEN, sonst ein neues, das ausgegeben wird.

Zu Zeitplänen und Webhooks in der App siehe Flows ausführen und Auslöser.

Exit-Codes

CodeWann
0run: Der Flow bestand mit jedem Test. list, new: erledigt.
1run: Der Flow schlug fehl, oder ein Test schlug fehl.
64Eine falsche Option, ein Flow oder eine Umgebung, die es nicht gibt, oder ein --input, das nicht name=value ist.

Auf dieser Seite