Référence des actions
Cette référence est générée à partir du catalogue de l'éditeur frontend d'Echo et de son moteur de workflow Rust. Les libellés et la configuration de l'éditeur sont rapprochés du comportement réellement exécutable avant publication.
Editor actions
Core
Invite LLM
Exécute une invite LLM avec le profil de fournisseur configuré et publie le texte renvoyé. Aucun modèle précis n'est garanti.
État d'exécution: production_registered Champs: Custom Name (optional), Instructions Prompt (optional), Temperature (optional), Output Variable Name (optional) Entrées de contrôle: mainSorties de contrôle: mainSortie de données: {{llm_result}} (string) Autorisation: Aucune Confirmation à l’exécution: Non
Exemple: Résumez {{file_content}} en trois puces, puis utilisez {{llm_result}} dans une étape ultérieure.
Coller
Interpole le texte, le copie dans le presse-papiers système, puis simule le raccourci de collage de la plateforme dans l'application active. Paste as a single line remplace d'abord les sauts de ligne par des espaces. Dans la version macOS App Store, la simulation du collage ne fait rien si l'autorisation Accessibilité est indisponible.
État d'exécution: production_registered Champs: Custom Name (optional), Content to paste (required), Paste as a single line (optional) Entrées de contrôle: mainSorties de contrôle: mainSortie de données: Aucune Autorisation: Aucune Confirmation à l’exécution: Non
Exemple: Collez {{llm_result}} dans le document actif ; activez le mode sur une seule ligne avant de coller une valeur multiligne dans un terminal.
Copier dans le presse-papiers
Place une chaîne dans le presse-papiers système. Prend en charge l'interpolation {{variable}}.
État d'exécution: production_registered Champs: Custom Name (optional), Text to copy (required) Entrées de contrôle: mainSorties de contrôle: mainSortie de données: Aucune Autorisation: clipboardwrite / low Confirmation à l’exécution: Non
Exemple: Copiez {{formatted}} dans le presse-papiers afin que l'utilisateur puisse le coller manuellement à tout moment.
Frappe clavier
Simule une combinaison de touches dans l'application active, par exemple cmd+s, enter, tab ou escape. La simulation ne fait rien dans la version macOS App Store.
État d'exécution: production_registered Champs: Custom Name (optional), Press key stroke (required) Entrées de contrôle: mainSorties de contrôle: mainSortie de données: Aucune Autorisation: inputsynthesis / medium Confirmation à l’exécution: Non
Exemple: Appuyez sur cmd+s après une étape Coller pour enregistrer automatiquement le document.
Shell
Exécute une commande shell avec le délai d'expiration configuré et renvoie la sortie standard capturée sans supprimer les espaces initiaux ou finaux.
État d'exécution: production_registered Champs: Custom Name (optional), Shell Command (required), Timeout (seconds) (optional), Output Variable Name (optional) Entrées de contrôle: mainSorties de contrôle: mainSortie de données: {{shell_out}} (string) Autorisation: shell / critical Confirmation à l’exécution: Oui
Exemple: git log --oneline -10 → {{shell_out}} contient les messages des 10 derniers commits.
Délai
Attend un nombre fixe de millisecondes avant de poursuivre. Utile entre des étapes de frappe lorsqu'une application doit avoir le temps de réagir.
État d'exécution: production_registered Champs: Custom Name (optional), Delay (milliseconds) (required) Entrées de contrôle: mainSorties de contrôle: mainSortie de données: Aucune Autorisation: Aucune Confirmation à l’exécution: Non
Exemple: Attendez 300 ms après cmd+t pour laisser au navigateur le temps d'ouvrir un nouvel onglet avant d'y saisir du texte.
Définir une variable
Interpole le texte littéral et les {{expressions}}, puis enregistre la chaîne obtenue sous le nom de variable configuré.
État d'exécution: production_registered Champs: Custom Name (optional), Variable Name (required), Value (required) Entrées de contrôle: mainSorties de contrôle: mainSortie de données: {{value}} (string) Autorisation: Aucune Confirmation à l’exécution: Non
Exemple: Enregistrez {{cleaned}}\n\n---\n\n{{summary}} sous final_report.
Ouvrir une application
Lance une application à partir du nom configuré avec le lanceur de la plateforme. Sous macOS, Echo rapproche les noms partiels ou approchants des applications installées ; les chemins d'application ne sont pas pris en charge.
État d'exécution: production_registered Champs: Custom Name (optional), App path or name (required) Entrées de contrôle: mainSorties de contrôle: mainSortie de données: Aucune Autorisation: shell / critical Confirmation à l’exécution: Oui
Exemple: Ouvrez TextEdit avant une étape Coller.
Basculer vers une application
Place une application en cours d'exécution au premier plan. Lorsque Launch if not running est activé, l'application est lancée si aucun processus actif n'est trouvé. Cette action ne fait rien dans la version macOS App Store.
État d'exécution: production_registered Champs: Custom Name (optional), App name (required), Launch if not running (optional) Entrées de contrôle: mainSorties de contrôle: mainSortie de données: Aucune Autorisation: appcontrol / medium Confirmation à l’exécution: Non
Exemple: Basculez vers Slack ; désactivez Launch if not running si le workflow doit seulement cibler un processus déjà ouvert.
Exécuter un workflow
Appelle un autre workflow comme sous-étape et capture sa sortie. Permet de composer de grands pipelines à partir de petits workflows réutilisables.
État d'exécution: runtime_registered Champs: Custom Name (optional), Target Workflow (required), Output Variable Name (optional) Entrées de contrôle: mainSorties de contrôle: mainSortie de données: {{workflow_result}} (object) Autorisation: Aucune Confirmation à l’exécution: Non
Exemple: Exécutez le sous-workflow « Clean Grammar » sur votre transcription, puis transmettez {{workflow_result}} à une étape Écrire un fichier.
File System
Lire un fichier
Lit tout le contenu d'un fichier à un chemin donné. Le chemin accepte l'interpolation {{variable}}.
État d'exécution: production_registered Champs: Custom Name (optional), File Path (required), Output Variable Name (optional) Entrées de contrôle: mainSorties de contrôle: mainSortie de données: {{file_content}} (string) Autorisation: fileread / medium Confirmation à l’exécution: Non
Exemple: /tmp/meeting-{{datetime}}.md → {{file_content}} contient le texte du fichier.
Écrire un fichier
Écrit une chaîne dans un fichier, le crée s'il n'existe pas et l'écrase dans le cas contraire. Le chemin et le contenu acceptent l'interpolation {{variable}}.
État d'exécution: production_registered Champs: Custom Name (optional), File Path (required), Content (required) Entrées de contrôle: mainSorties de contrôle: mainSortie de données: Aucune Autorisation: filewrite / medium Confirmation à l’exécution: Non
Exemple: Écrivez {{llm_result}} dans /tmp/budgie/summary.md ; les répertoires parents manquants sont créés.
Ajouter à un fichier
Ajoute une chaîne à la fin d'un fichier existant. Crée le fichier s'il n'existe pas.
État d'exécution: production_registered Champs: Custom Name (optional), File Path (required), Content (required) Entrées de contrôle: mainSorties de contrôle: mainSortie de données: Aucune Autorisation: filewrite / medium Confirmation à l’exécution: Non
Exemple: Ajoutez {{llm_result}}\n à /tmp/echo-runs.log. Le répertoire parent doit déjà exister.
Lister les fichiers
Liste les entrées directes d'un répertoire. Glob Filter effectue actuellement une recherche de sous-chaîne dans le nom après suppression des * initiaux et finaux ; ce n'est pas une implémentation complète des globs.
État d'exécution: production_registered Champs: Custom Name (optional), Directory (required), Glob Filter (optional), Output Variable Name (optional) Entrées de contrôle: mainSorties de contrôle: mainSortie de données: {{file_list}} (array) Autorisation: fileread / medium Confirmation à l’exécution: Non
Exemple: Le répertoire /tmp/reports avec le filtre *.md renvoie les entrées dont le nom contient .md.
Déplacer un fichier
Déplace ou renomme un fichier d'un chemin vers un autre.
État d'exécution: production_registered Champs: Custom Name (optional), Source Path (required), Destination Path (required) Entrées de contrôle: mainSorties de contrôle: mainSortie de données: Aucune Autorisation: filewrite / medium Confirmation à l’exécution: Non
Exemple: Archivez un fichier traité en le déplaçant de /tmp/inbox/report.pdf vers /tmp/archive/report.pdf.
Copier un fichier
Duplique un fichier vers un nouveau chemin.
État d'exécution: production_registered Champs: Custom Name (optional), Source Path (required), Destination Path (required) Entrées de contrôle: mainSorties de contrôle: mainSortie de données: Aucune Autorisation: filewrite / medium Confirmation à l’exécution: Non
Exemple: Sauvegardez un fichier de configuration avant de le modifier dans une étape ultérieure.
Supprimer un fichier
Supprime le fichier au chemin indiqué. Vérifiez les lignes d'autorisation et de confirmation à l'exécution générées avant de l'utiliser.
État d'exécution: production_registered Champs: Custom Name (optional), File Path (required) Entrées de contrôle: mainSorties de contrôle: mainSortie de données: Aucune Autorisation: filedelete / high Confirmation à l’exécution: Oui
Exemple: Supprimez /tmp/budgie-doc-contract.txt lorsque le workflow n'en a plus besoin.
Vérifier l'existence d'un fichier
Vérifie si un fichier ou un répertoire existe au chemin indiqué. Transmettez le résultat à une étape If / Else.
État d'exécution: production_registered Champs: Custom Name (optional), File Path (required), Output Variable Name (optional) Entrées de contrôle: mainSorties de contrôle: mainSortie de données: {{file_exists}} (boolean) Autorisation: fileread / medium Confirmation à l’exécution: Non
Exemple: /tmp/report.md → {{file_exists}} vaut true ou false.
Obtenir les informations du fichier
Renvoie size, is_file, is_dir, readonly, name, extension et, si disponible, modified_secs sous forme de secondes entières depuis l'époque Unix.
État d'exécution: production_registered Champs: Custom Name (optional), File Path (required), Output Variable Name (optional) Entrées de contrôle: mainSorties de contrôle: mainSortie de données: {{file_info}} (object) Autorisation: fileread / medium Confirmation à l’exécution: Non
Exemple: {{file_info}} contient des valeurs comme name: report.md, size: 4096, is_file: true et modified_secs: 1780477200.
Créer un répertoire
Crée un répertoire et tous les répertoires intermédiaires au chemin indiqué. Ne fait rien si le répertoire existe déjà.
État d'exécution: production_registered Champs: Custom Name (optional), File Path (required) Entrées de contrôle: mainSorties de contrôle: mainSortie de données: Aucune Autorisation: filewrite / medium Confirmation à l’exécution: Non
Exemple: Assurez-vous que /tmp/exports/{{datetime}}/ et ses répertoires parents manquants existent avant d'écrire des fichiers.
Text
Rechercher et remplacer
Remplace toutes les correspondances littérales ou d'expression régulière dans une chaîne d'entrée. L'éditeur actuel expose la recherche, le remplacement et le mode regex, mais aucun champ d'entrée.
État d'exécution: production_registered Champs: Custom Name (optional), Find (required), Replace (optional), Use regex (optional), Output Variable Name (optional) Entrées de contrôle: mainSorties de contrôle: mainSortie de données: {{replaced}} (string) Autorisation: Aucune Confirmation à l’exécution: Non
Exemple: Le moteur peut remplacer chaque TODO: dans une chaîne, mais l'éditeur actuel ne permet pas de configurer cette entrée.
Extraire par expression régulière
Renvoie un tableau contenant le groupe de capture choisi pour chaque correspondance regex. Le groupe 0 renvoie la correspondance complète. L'éditeur actuel n'expose pas la chaîne d'entrée.
État d'exécution: production_registered Champs: Custom Name (optional), Pattern (required), Capture Group (optional), Output Variable Name (optional) Entrées de contrôle: mainSorties de contrôle: mainSortie de données: {{match}} (array) Autorisation: Aucune Confirmation à l’exécution: Non
Exemple: Le moteur peut appliquer (PROJ-\d+) avec le groupe 1, mais l'éditeur actuel ne permet pas de configurer le texte à parcourir.
Scinder
Scinde une chaîne avec le séparateur du moteur et renvoie un tableau. L'éditeur actuel expose la valeur d'entrée, mais pas le séparateur : les étapes créées dans l'éditeur sérialisent donc un séparateur vide.
État d'exécution: production_registered Champs: Custom Name (optional), Value (required), Output Variable Name (optional) Entrées de contrôle: mainSorties de contrôle: mainSortie de données: {{parts}} (array) Autorisation: Aucune Confirmation à l’exécution: Non
Exemple: N'utilisez cette action que si la définition du workflow fournit un séparateur ; l'éditeur actuel ne permet pas de le configurer.
Joindre
Joint les valeurs d'une variable tableau nommée avec le séparateur du moteur. L'éditeur actuel expose seulement une valeur générique et aucun contrôle de séparateur.
État d'exécution: production_registered Champs: Custom Name (optional), Value (required), Output Variable Name (optional) Entrées de contrôle: mainSorties de contrôle: mainSortie de données: {{joined}} (string) Autorisation: Aucune Confirmation à l’exécution: Non
Exemple: N'utilisez cette action que si la définition fournit la variable tableau et le séparateur ; l'éditeur actuel ne permet pas de tout configurer.
Élaguer
Supprime les espaces en début et en fin d'une chaîne.
État d'exécution: production_registered Champs: Custom Name (optional), Value (required), Output Variable Name (optional) Entrées de contrôle: mainSorties de contrôle: mainSortie de données: {{trimmed}} (string) Autorisation: Aucune Confirmation à l’exécution: Non
Exemple: Élaguez {{shell_out}} pour retirer le saut de ligne final de la sortie d'une commande shell.
Changer la casse
Convertit une chaîne en majuscules, minuscules, casse de titre, camel case ou snake case. L'éditeur actuel expose le mode, mais aucun champ d'entrée.
État d'exécution: production_registered Champs: Custom Name (optional), Transform Mode (required), Output Variable Name (optional) Entrées de contrôle: mainSorties de contrôle: mainSortie de données: {{cased}} (string) Autorisation: Aucune Confirmation à l’exécution: Non
Exemple: Le moteur peut convertir report name en reportName en mode camel, mais l'éditeur actuel ne permet pas de configurer l'entrée.
Sous-chaîne
Extrait les caractères depuis un index de départ basé sur zéro jusqu'à un index de fin facultatif. L'éditeur actuel n'expose aucun de ces index et sérialise un départ à 0 sans fin.
État d'exécution: production_registered Champs: Custom Name (optional), Value (required), Output Variable Name (optional) Entrées de contrôle: mainSorties de contrôle: mainSortie de données: {{slice}} (string) Autorisation: Aucune Confirmation à l’exécution: Non
Exemple: Une étape créée dans l'éditeur renvoie actuellement toute l'entrée, car ses index de début et de fin ne sont pas configurables.
Contient
Recherche une sous-chaîne littérale sensible à la casse ; les expressions régulières ne sont pas prises en charge. L'éditeur actuel n'expose pas le champ de sous-chaîne et sérialise une valeur recherchée vide.
État d'exécution: production_registered Champs: Custom Name (optional), Value (required), Output Variable Name (optional) Entrées de contrôle: mainSorties de contrôle: mainSortie de données: {{contains}} (boolean) Autorisation: Aucune Confirmation à l’exécution: Non
Exemple: N'utilisez cette action que si la définition du workflow fournit la sous-chaîne littérale ; l'éditeur actuel ne permet pas de la configurer.
Compter les mots
Compte le nombre de mots d'une chaîne.
État d'exécution: production_registered Champs: Custom Name (optional), Value (required), Output Variable Name (optional) Entrées de contrôle: mainSorties de contrôle: mainSortie de données: {{word_count}} (number) Autorisation: Aucune Confirmation à l’exécution: Non
Exemple: Conditionnez une étape de résumé à {{word_count}} > 50 avec un bloc If / Else.
Encoder une URL
Encode une chaîne en pourcentage pour un paramètre de requête URL. Le moteur sait aussi décoder, mais l'éditeur actuel n'expose aucun mode et sérialise toujours le mode d'encodage.
État d'exécution: production_registered Champs: Custom Name (optional), Value (required), Output Variable Name (optional) Entrées de contrôle: mainSorties de contrôle: mainSortie de données: {{encoded}} (string) Autorisation: Aucune Confirmation à l’exécution: Non
Exemple: {{search_term}} → "hello%20world".
Base64
Encode une chaîne en Base64. Le moteur sait aussi décoder, mais l'éditeur actuel n'expose aucun mode et sérialise toujours le mode d'encodage.
État d'exécution: production_registered Champs: Custom Name (optional), Value (required), Output Variable Name (optional) Entrées de contrôle: mainSorties de contrôle: mainSortie de données: {{b64}} (string) Autorisation: Aucune Confirmation à l’exécution: Non
Exemple: Encodez hello en aGVsbG8=.
Supprimer le HTML
Supprime toutes les balises HTML d'une chaîne et ne conserve que son contenu textuel.
État d'exécution: production_registered Champs: Custom Name (optional), Value (required), Output Variable Name (optional) Entrées de contrôle: mainSorties de contrôle: mainSortie de données: {{plain}} (string) Autorisation: Aucune Confirmation à l’exécution: Non
Exemple: Retirez le HTML d'un extrait web collé avant de le transmettre à une invite LLM.
Nettoyage Scribe
Nettoie une transcription avec BudgieScribe, le modèle local qui retire les hésitations et faux départs et rétablit la ponctuation. Laissez la langue vide pour la détecter sur le texte, ou forcez fr/en. Si le modèle de cette langue n'est pas installé, si Scribe est occupé ou si son garde-fou rejette le résultat, le texte passe inchangé.
État d'exécution: production_registered Champs: Custom Name (optional), Text to clean up (required), Language (blank = detect) (optional), Output Variable Name (optional) Entrées de contrôle: mainSorties de contrôle: mainSortie de données: {{cleaned}} (string) Autorisation: Aucune Confirmation à l’exécution: Non
Exemple: Passez {{transcription}} par Nettoyage Scribe avant une invite LLM, pour que l'invite lise une phrase propre plutôt qu'une dictée brute.
Formater un modèle
Interpole les {{expressions}} Budgie dans une chaîne modèle ; il ne s'agit pas d'un moteur Handlebars ou Mustache.
État d'exécution: production_registered Champs: Custom Name (optional), Template (required), Output Variable Name (optional) Entrées de contrôle: mainSorties de contrôle: mainSortie de données: {{formatted}} (string) Autorisation: Aucune Confirmation à l’exécution: Non
Exemple: Modèle : Dear {{name}},\nYour order {{order_id}} has shipped. → corps d'e-mail personnalisé.
System
Lire le presse-papiers
Lit le contenu du presse-papiers système sous forme de chaîne au moment de l'exécution de l'étape.
État d'exécution: production_registered Champs: Custom Name (optional), Output Variable Name (optional) Entrées de contrôle: mainSorties de contrôle: mainSortie de données: {{clipboard}} (string) Autorisation: clipboardread / low Confirmation à l’exécution: Non
Exemple: Utilisez cette action après une frappe cmd+c pour lire ce que l'utilisateur vient de copier.
Lister les applications actives
Renvoie les noms de processus distincts signalés par le système d'exploitation parmi les processus en cours.
État d'exécution: production_registered Champs: Custom Name (optional), Output Variable Name (optional) Entrées de contrôle: mainSorties de contrôle: mainSortie de données: {{apps}} (array) Autorisation: Aucune Confirmation à l’exécution: Non
Exemple: Vérifiez si Safari figure dans {{apps}} avant de poursuivre.
Fenêtre active
Sous macOS, renvoie un objet de forme {app} avec le nom du processus de l'application au premier plan ; aucun titre de fenêtre n'est inclus. Les autres plateformes renvoient actuellement une chaîne app vide.
État d'exécution: production_registered Champs: Custom Name (optional), Output Variable Name (optional) Entrées de contrôle: mainSorties de contrôle: mainSortie de données: {{window}} (object) Autorisation: Aucune Confirmation à l’exécution: Non
Exemple: {{window}} peut contenir {"app":"Mail"} lorsque Mail est au premier plan.
Date et heure
Formate la date et l'heure locales avec une chaîne de format chrono. La valeur par défaut est %Y-%m-%dT%H:%M:%S.
État d'exécution: production_registered Champs: Custom Name (optional), Format (optional), Output Variable Name (optional) Entrées de contrôle: mainSorties de contrôle: mainSortie de données: {{datetime}} (string) Autorisation: Aucune Confirmation à l’exécution: Non
Exemple: {{datetime}} → "2026-06-03T09:42:00" — utilisez cette valeur comme horodatage dans un nom de fichier.
Lire une variable d'environnement
Lit une variable d'environnement par son nom et renvoie une chaîne vide si elle est absente.
État d'exécution: production_registered Champs: Custom Name (optional), Variable Name (required), Output Variable Name (optional) Entrées de contrôle: mainSorties de contrôle: mainSortie de données: {{env_value}} (string) Autorisation: envread / low Confirmation à l’exécution: Non
Exemple: Lisez HOME, puis construisez un chemin tel que {{env_value}}/Documents/example.md.
Informations système
Renvoie un objet contenant os, hostname, cpu_count, total_memory_mb et used_memory_mb.
État d'exécution: production_registered Champs: Custom Name (optional), Output Variable Name (optional) Entrées de contrôle: mainSorties de contrôle: mainSortie de données: {{system_info}} (object) Autorisation: Aucune Confirmation à l’exécution: Non
Exemple: Incluez {{system_info}} dans un workflow de rapport de bug afin d'y joindre automatiquement le contexte.
Capture d'écran
Capture l'écran actuel dans un chemin PNG sous macOS. Toute région sérialisée est ignorée, et l'éditeur n'expose ni contrôle de région ni contrôle du chemin de sortie.
État d'exécution: production_registered Champs: Custom Name (optional), Output Variable Name (optional) Entrées de contrôle: mainSorties de contrôle: mainSortie de données: {{screenshot_path}} (string) Autorisation: screencapture / medium Confirmation à l’exécution: Non
Exemple: Capturez l'écran actuel et transmettez {{screenshot_path}} à une étape ultérieure.
Vérifier si une application est active
Vérifie, sans tenir compte de la casse, si le nom d'un processus actif contient le texte configuré.
État d'exécution: production_registered Champs: Custom Name (optional), App Name (required), Output Variable Name (optional) Entrées de contrôle: mainSorties de contrôle: mainSortie de données: {{app_running}} (boolean) Autorisation: appcontrol / medium Confirmation à l’exécution: Non
Exemple: Safari → {{app_running}} vaut true lorsqu'un processus correspondant est présent.
App Control
Quitter une application
Sous macOS, demande à une application de quitter via AppleScript. Sur les autres plateformes prises en charge, termine les processus dont le nom contient le texte configuré.
État d'exécution: production_registered Champs: Custom Name (optional), App Name (required) Entrées de contrôle: mainSorties de contrôle: mainSortie de données: Aucune Autorisation: appcontrol / medium Confirmation à l’exécution: Non
Exemple: Quittez TextEdit après avoir enregistré le fichier à l'étape précédente.
Exécuter un AppleScript
Sous macOS, exécute un AppleScript interpolé et renvoie sa sortie standard élaguée sous forme de chaîne. Les autres plateformes signalent une erreur de plateforme non prise en charge.
État d'exécution: production_registered Champs: Custom Name (optional), AppleScript (required), Output Variable Name (optional) Entrées de contrôle: mainSorties de contrôle: mainSortie de données: {{script_result}} (string) Autorisation: applescript / critical Confirmation à l’exécution: Oui
Exemple:
tell application "Finder" to get name of front window→ {{script_result}} est le nom de la fenêtre Finder au premier plan.
Exécuter un raccourci
Sous macOS, exécute un raccourci nommé et publie sa sortie standard élaguée. Les autres plateformes signalent une erreur de plateforme non prise en charge.
État d'exécution: production_registered Champs: Custom Name (optional), Shortcut Name (required), Output Variable Name (optional) Entrées de contrôle: mainSorties de contrôle: mainSortie de données: {{shortcut_result}} (string) Autorisation: macosshortcut / high Confirmation à l’exécution: Oui
Exemple: Exécutez le raccourci « Send to Notes », puis utilisez {{shortcut_result}} à l'étape suivante.
Network
Requête HTTP
Envoie GET, POST, PUT, DELETE ou PATCH vers une URL interpolée avec un corps facultatif. L'éditeur actuel n'expose que l'URL, la méthode et le corps ; il ne permet pas de configurer les en-têtes de requête.
État d'exécution: production_registered Champs: Custom Name (optional), URL (required), Method (required), Request Body (optional), Output Variable Name (optional) Entrées de contrôle: mainSorties de contrôle: mainSortie de données: {{http_response}} (object) Autorisation: network / medium Confirmation à l’exécution: Non
Exemple: Envoyez {{llm_result}} par POST à un webhook, puis lisez {{http_response.status}}, {{http_response.body}} ou la valeur analysée {{http_response.json}}.
Télécharger un fichier
Télécharge une URL vers le chemin local configuré. Cette action ne publie aucune variable de sortie de données.
État d'exécution: production_registered Champs: Custom Name (optional), URL (required), Save To Path (required) Entrées de contrôle: mainSorties de contrôle: mainSortie de données: Aucune Autorisation: filewrite / high Confirmation à l’exécution: Oui
Exemple: Téléchargez https://example.com/report.pdf vers /tmp/downloads/example.pdf ; les répertoires parents manquants sont créés.
Vérifier une URL
Effectue une requête HEAD et renvoie true dès qu'une réponse est reçue, quel que soit le statut HTTP ; les erreurs de transport renvoient false.
État d'exécution: production_registered Champs: Custom Name (optional), URL (required), Output Variable Name (optional) Entrées de contrôle: mainSorties de contrôle: mainSortie de données: {{url_ok}} (boolean) Autorisation: network / medium Confirmation à l’exécution: Non
Exemple: Utilisez {{url_ok}} pour détecter une erreur de transport avant un téléchargement ; une réponse HTTP d'erreur comme 404 produit tout de même true.
Math & Data
Expression mathématique
Évalue une expression mathématique. Prend en charge les opérateurs arithmétiques standard, les parenthèses et les valeurs {{variable}}.
État d'exécution: production_registered Champs: Custom Name (optional), Expression (required), Output Variable Name (optional) Entrées de contrôle: mainSorties de contrôle: mainSortie de données: {{math_result}} (number) Autorisation: Aucune Confirmation à l’exécution: Non
Exemple: ({{word_count}} / 250) * 60 → durée de lecture estimée en secondes → {{math_result}}.
Analyser du JSON
Analyse une chaîne JSON en valeur structurée. Utilisez la notation pointée pour accéder aux champs dans les étapes suivantes : {{json_obj.name}}.
État d'exécution: production_registered Champs: Custom Name (optional), JSON Input (required), Output Variable (optional), Output Variable Name (optional) Entrées de contrôle: mainSorties de contrôle: mainSortie de données: {{json_obj}} (any) Autorisation: Aucune Confirmation à l’exécution: Non
Exemple: Analysez {{http_response.body}}, puis accédez à un champ tel que {{json_obj.data[0].id}}.
Sérialiser en JSON
Sérialise une variable de workflow nommée en JSON. L'éditeur actuel n'expose ni contrôle de variable d'entrée ni option de mise en forme ; les étapes créées dans l'éditeur sérialisent donc un nom de variable vide en mode compact.
État d'exécution: production_registered Champs: Custom Name (optional), Output Variable Name (optional) Entrées de contrôle: mainSorties de contrôle: mainSortie de données: {{json_str}} (string) Autorisation: Aucune Confirmation à l’exécution: Non
Exemple: N'utilisez cette action que si la définition du workflow fournit la variable d'entrée ; l'éditeur actuel ne permet pas de la configurer.
Analyser du CSV
Analyse une chaîne CSV avec ligne d'en-tête en un tableau d'objets indexés par nom de colonne.
État d'exécution: production_registered Champs: Custom Name (optional), Value (required), Output Variable Name (optional) Entrées de contrôle: mainSorties de contrôle: mainSortie de données: {{csv_rows}} (array) Autorisation: Aucune Confirmation à l’exécution: Non
Exemple: Analysez {{file_content}} issu d'un fichier CSV → {{csv_rows[0].email}} est la colonne e-mail de la première ligne.
Lire une variable
Lit une variable du contexte de workflow par son nom configuré exact. Renvoie null si ce nom est absent.
État d'exécution: production_registered Champs: Custom Name (optional), Variable Name (required), Output Variable Name (optional) Entrées de contrôle: mainSorties de contrôle: mainSortie de données: {{var_value}} (any) Autorisation: Aucune Confirmation à l’exécution: Non
Exemple: Le nom de variable summary renvoie la valeur actuelle de summary.
Arrays
Créer un tableau
Crée un tableau à partir de la liste items du moteur. L'éditeur actuel n'expose aucun champ d'éléments ; les étapes créées dans l'éditeur produisent donc un tableau vide.
État d'exécution: production_registered Champs: Custom Name (optional), Output Variable Name (optional) Entrées de contrôle: mainSorties de contrôle: mainSortie de données: {{array}} (array) Autorisation: Aucune Confirmation à l’exécution: Non
Exemple: Une étape Créer un tableau créée dans l'éditeur publie [] dans sa variable de sortie.
Ajouter au tableau
Ajoute une valeur à une variable tableau nommée, réenregistre le nouveau tableau et le renvoie. L'éditeur actuel expose la valeur, mais pas le nom du tableau cible.
État d'exécution: production_registered Champs: Custom Name (optional), Value (required), Output Variable Name (optional) Entrées de contrôle: mainSorties de contrôle: mainSortie de données: {{array}} (array) Autorisation: Aucune Confirmation à l’exécution: Non
Exemple: Le moteur peut ajouter l'élément littéral done à summaries, mais l'éditeur actuel ne permet pas de définir summaries comme cible.
Lire par index
Renvoie un élément d'un tableau nommé avec un index basé sur zéro ; les index négatifs partent de la fin. L'éditeur actuel n'expose ni le nom du tableau ni l'index.
État d'exécution: production_registered Champs: Custom Name (optional), Output Variable Name (optional) Entrées de contrôle: mainSorties de contrôle: mainSortie de données: {{item}} (any) Autorisation: Aucune Confirmation à l’exécution: Non
Exemple: Le moteur peut renvoyer l'index 0 de file_list, mais l'éditeur actuel ne permet pas de configurer ces paramètres.
Filtrer un tableau
Filtre un tableau nommé avec une condition évaluée pour chaque item/it. L'éditeur actuel n'expose ni le nom du tableau ni la condition.
État d'exécution: production_registered Champs: Custom Name (optional), Output Variable Name (optional) Entrées de contrôle: mainSorties de contrôle: mainSortie de données: {{filtered}} (array) Autorisation: Aucune Confirmation à l’exécution: Non
Exemple: Cette action exige une définition de workflow qui fournit array_var et condition ; l'éditeur actuel ne permet pas de les configurer.
Transformer un tableau
Interpole un modèle pour chaque item/it d'un tableau nommé et renvoie les chaînes obtenues. L'éditeur actuel n'expose ni le nom du tableau ni le modèle.
État d'exécution: production_registered Champs: Custom Name (optional), Output Variable Name (optional) Entrées de contrôle: mainSorties de contrôle: mainSortie de données: {{mapped}} (array) Autorisation: Aucune Confirmation à l’exécution: Non
Exemple: Cette action exige une définition de workflow qui fournit array_var et template ; l'éditeur actuel ne permet pas de les configurer.
Trier un tableau
Trie un tableau nommé selon la représentation textuelle de chaque valeur, puis le réenregistre. Le moteur prend en charge l'ordre croissant ou décroissant ; l'éditeur actuel n'expose aucun de ces réglages.
État d'exécution: production_registered Champs: Custom Name (optional), Output Variable Name (optional) Entrées de contrôle: mainSorties de contrôle: mainSortie de données: {{sorted}} (array) Autorisation: Aucune Confirmation à l’exécution: Non
Exemple: Le moteur peut trier file_list, mais l'éditeur actuel ne permet de configurer ni le tableau cible ni le sens.
Valeurs uniques
Supprime les représentations textuelles en double d'un tableau nommé en conservant leur première occurrence. L'éditeur actuel n'expose pas le nom du tableau.
État d'exécution: production_registered Champs: Custom Name (optional), Output Variable Name (optional) Entrées de contrôle: mainSorties de contrôle: mainSortie de données: {{unique}} (array) Autorisation: Aucune Confirmation à l’exécution: Non
Exemple: Le moteur peut dédupliquer tags, mais l'éditeur actuel ne permet pas de configurer cette cible.
Taille du tableau
Renvoie le nombre d'éléments d'un tableau nommé. L'éditeur actuel n'expose pas le nom du tableau.
État d'exécution: production_registered Champs: Custom Name (optional), Output Variable Name (optional) Entrées de contrôle: mainSorties de contrôle: mainSortie de données: {{length}} (number) Autorisation: Aucune Confirmation à l’exécution: Non
Exemple: Le moteur peut compter file_list, mais l'éditeur actuel ne permet pas de configurer cette cible.
Le tableau contient
Compare les représentations textuelles pour vérifier si un tableau nommé contient une valeur. L'éditeur actuel expose la valeur, mais pas le nom du tableau.
État d'exécution: production_registered Champs: Custom Name (optional), Value (required), Output Variable Name (optional) Entrées de contrôle: mainSorties de contrôle: mainSortie de données: {{contains}} (boolean) Autorisation: Aucune Confirmation à l’exécution: Non
Exemple: Le moteur peut vérifier si apps contient Safari, mais l'éditeur actuel ne permet pas de définir apps comme cible.
Persistence
Lire dans le stockage
Lit la chaîne associée à une clé dans le stockage persistant. Renvoie null si la clé n'existe pas.
État d'exécution: production_registered Champs: Custom Name (optional), Key (required), Output Variable Name (optional) Entrées de contrôle: mainSorties de contrôle: mainSortie de données: {{store_value}} (any) Autorisation: Aucune Confirmation à l’exécution: Non
Exemple: Clé : "daily_count" → {{store_value}} vaut le compteur enregistré ou null s'il est absent.
Écrire dans le stockage
Interpole et écrit une chaîne dans le stockage persistant sous une clé, en créant ou en écrasant l'entrée.
État d'exécution: production_registered Champs: Custom Name (optional), Key (required), Value (required) Entrées de contrôle: mainSorties de contrôle: mainSortie de données: Aucune Autorisation: persistence / low Confirmation à l’exécution: Non
Exemple: Après incrémentation, écrivez {{math_result}} sous la clé "daily_count".
Supprimer du stockage
Supprime une clé du stockage persistant.
État d'exécution: production_registered Champs: Custom Name (optional), Key (required) Entrées de contrôle: mainSorties de contrôle: mainSortie de données: Aucune Autorisation: persistence / low Confirmation à l’exécution: Non
Exemple: Réinitialisez la clé "daily_count" au début de chaque journée avec une garde Date et heure + If / Else.
UI
Afficher une boîte de dialogue
Sous macOS, affiche une boîte de dialogue modale avec un titre, un message et un champ de saisie, puis renvoie le texte saisi après validation. Hors macOS, le gestionnaire actuel journalise la boîte et renvoie OK.
État d'exécution: production_registered Champs: Custom Name (optional), Title (optional), Message (required), Predefined Options (optional), Output Variable Name (optional) Entrées de contrôle: mainSorties de contrôle: mainSortie de données: {{dialog_input}} (string) Autorisation: Aucune Confirmation à l’exécution: Non
Exemple: Demandez à l'utilisateur : « Quel objet dois-je utiliser ? » → {{dialog_input}} alimente une étape Invite LLM.
Notification
Affiche sans attendre une notification système macOS avec un titre et un message. Hors macOS, le gestionnaire actuel se contente de la journaliser.
État d'exécution: production_registered Champs: Custom Name (optional), Title (optional), Message (required) Entrées de contrôle: mainSorties de contrôle: mainSortie de données: Aucune Autorisation: Aucune Confirmation à l’exécution: Non
Exemple: Affichez « Workflow terminé — fichier enregistré sur le Bureau » après une étape Écrire un fichier.
Jouer un son
Sous macOS, traite la valeur Sound File Path de l'éditeur comme un nom de son système et lit /System/Library/Sounds/{name}.aiff ; les chemins de fichiers arbitraires ne sont pas pris en charge. Hors macOS, le gestionnaire ne fait rien.
État d'exécution: production_registered Champs: Custom Name (optional), Sound File Path (optional) Entrées de contrôle: mainSorties de contrôle: mainSortie de données: Aucune Autorisation: Aucune Confirmation à l’exécution: Non
Exemple: Utilisez Glass pour lire /System/Library/Sounds/Glass.aiff après une étape longue.
Synthèse vocale
Lit le texte interpolé avec le moteur TTS sélectionné dans les Paramètres. Le moteur par défaut est le fournisseur TTS système natif d'Echo sous macOS et Windows et ne nécessite aucun modèle vocal Echo téléchargé ; le moteur neuronal local optionnel n'est jamais choisi implicitement et ne parle que s'il est sélectionné explicitement dans les Paramètres et que son modèle est installé. Une voix vide utilise le choix par défaut ; une voix qualifiée par fournisseur est validée par ce fournisseur.
État d'exécution: production_registered Champs: Custom Name (optional), Text to Speak (required), Voice (optional) Entrées de contrôle: mainSorties de contrôle: mainSortie de données: Aucune Autorisation: Aucune Confirmation à l’exécution: Non
Exemple: Prononcez {{llm_result}} immédiatement au lieu d'attendre la fin du workflow.
Lecteur
Envoie un texte au Lecteur : lecture à voix haute unique, ou ajout à la bibliothèque du Lecteur sous un nom personnalisé facultatif.
État d'exécution: production_registered Champs: Custom Name (optional), Text (required), Operation (required) Entrées de contrôle: mainSorties de contrôle: mainSortie de données: Aucune Autorisation: Aucune Confirmation à l’exécution: Non
Exemple: Après un résumé LLM d'un long article, confiez {{summary}} au Lecteur pour l'écouter tout en continuant à travailler.
Control Flow
If / Else
Évalue une condition et achemine le contrôle vers le port nommé true ou false. Sa sortie de données est distincte de ces ports de contrôle.
État d'exécution: production_registered Champs: Custom Name (optional), Condition (required), Output Variable Name (optional) Entrées de contrôle: mainSorties de contrôle: true, falseSortie de données: {{branch_result}} (any) Autorisation: Aucune Confirmation à l’exécution: Non
Exemple: Acheminez {{file_exists}} == true vers true et la notification de fichier absent vers false.
Boucle
Achemine les itérations par compteur, tableau de variable ou condition while vers loop, puis poursuit par done. Ne publie aucune variable de sortie de données. Le mode éléments de l'éditeur sérialise actuellement une liste littérale vide.
État d'exécution: production_registered Champs: Custom Name (optional), Loop Mode (required), Repeat Times (optional), Array Variable (optional), While Condition (optional) Entrées de contrôle: mainSorties de contrôle: loop, doneSortie de données: Aucune Autorisation: Aucune Confirmation à l’exécution: Non
Exemple: Choisissez le mode variable avec la variable tableau file_list sans accolades, traitez chaque {{item}} via loop, puis poursuivez depuis done.
Switch
Achemine le contrôle vers un port case:<pattern> correspondant ou vers default. Sa sortie de données est distincte de ces ports de contrôle.
État d'exécution: production_registered Champs: Custom Name (optional), Switch Value (required), Cases (required), Output Variable Name (optional) Entrées de contrôle: mainSorties de contrôle: case:<pattern>, defaultSortie de données: {{switch_result}} (any) Autorisation: Aucune Confirmation à l’exécution: Non
Exemple: Utilisez les ports case:email, case:chat et default pour choisir la branche de formatage adaptée.
Try / Catch
Achemine l'exécution normale vers le port nommé try et les erreurs vers catch. Ne publie aucune variable de sortie de données.
État d'exécution: production_registered Champs: Custom Name (optional) Entrées de contrôle: mainSorties de contrôle: try, catchSortie de données: Aucune Autorisation: Aucune Confirmation à l’exécution: Non
Exemple: Exécutez une requête HTTP via try et utilisez catch pour afficher une notification d'échec.
Actions disponibles uniquement à l'exécution
Ces variantes de workflow Rust sont exécutables ou analysables, mais ne sont pas proposées dans le sélecteur de l'éditeur actuel.
| Rust variant | Status | Autorisation | Confirmation à l’exécution | Availability |
|---|---|---|---|---|
AudioCapture | production_registered | Aucune | Non | Utilisée par le pipeline de transcription interne d'Echo. |
MatchSnippet | known_unimplemented | Aucune | Non | Reconnue par le format de workflow mais non implémentée ; ne l'utilisez pas. |
OpenUrl | production_registered | network / medium | Non | Disponible pour les workflows intégrés ou YAML, mais pas dans le sélecteur de l'éditeur. |
Paste | production_registered | clipboardread / low | Non | Disponible pour les workflows intégrés ou YAML, mais pas dans le sélecteur de l'éditeur. |
Plugin | production_registered | plugin / high | Oui | Disponible dans le moteur d’exécution des plugins de workflow, mais pas dans le sélecteur de l’éditeur. |
Transcribe | production_registered | Aucune | Non | Utilisée par le pipeline de transcription interne d'Echo. |
TypeText | production_registered | inputsynthesis / medium | Non | Disponible pour les workflows intégrés ou YAML, mais pas dans le sélecteur de l'éditeur. |
WaitForFocus | production_registered | Aucune | Non | Disponible pour les workflows intégrés ou YAML, mais pas dans le sélecteur de l'éditeur. |