Round 374: Airflow ext, Spark ext, Flink ext, Dagster/Prefect ext (20 commands)

ober

4cc53af3714237d73f4d83320c05992eb8c393b1

diff --git a/docs/jemacs-vs-emacs.md b/docs/jemacs-vs-emacs.md
index 7d3d781..29eca64 100644
--- a/docs/jemacs-vs-emacs.md
+++ b/docs/jemacs-vs-emacs.md
@@ -4583,6 +4583,31 @@ No remaining Tier 1 gaps. All core editing, completion, and navigation features 
 | ebib-import-file | :orange_circle: | Import file into Ebib |
 | ebib-push-citation | :orange_circle: | Push Ebib citation to buffer |
 
+### Round 374 — Airflow ext, Spark ext, Flink ext, Dagster/Prefect ext
+
+| Feature | Emacs | jemacs | Status |
+|---|---|---|---|
+| Airflow list DAGs | — | `airflow-dags` | :orange_circle: Scaffolded |
+| Airflow list tasks | — | `airflow-tasks` | :orange_circle: Scaffolded |
+| Airflow DAG runs | — | `airflow-runs` | :orange_circle: Scaffolded |
+| Airflow connections | — | `airflow-connections` | :orange_circle: Scaffolded |
+| Spark submit | — | `spark-submit` | :orange_circle: Scaffolded |
+| Spark app status | — | `spark-status` | :orange_circle: Scaffolded |
+| Spark driver logs | — | `spark-logs` | :orange_circle: Scaffolded |
+| Spark configuration | — | `spark-config` | :orange_circle: Scaffolded |
+| Flink list jobs | — | `flink-jobs` | :orange_circle: Scaffolded |
+| Flink savepoints | — | `flink-savepoints` | :orange_circle: Scaffolded |
+| Flink checkpoints | — | `flink-checkpoints` | :orange_circle: Scaffolded |
+| Flink metrics | — | `flink-metrics` | :orange_circle: Scaffolded |
+| Dagster runs | — | `dagster-runs` | :orange_circle: Scaffolded |
+| Dagster assets | — | `dagster-assets` | :orange_circle: Scaffolded |
+| Dagster schedules | — | `dagster-schedules` | :orange_circle: Scaffolded |
+| Dagster sensors | — | `dagster-sensors` | :orange_circle: Scaffolded |
+| Prefect flows | — | `prefect-flows` | :orange_circle: Scaffolded |
+| Prefect deployments | — | `prefect-deployments` | :orange_circle: Scaffolded |
+| Prefect flow runs | — | `prefect-runs` | :orange_circle: Scaffolded |
+| Prefect agents | — | `prefect-agents` | :orange_circle: Scaffolded |
+
 ### Round 373 — ClickHouse ext, BigQuery ext, Snowflake ext, Redshift/DuckDB ext
 
 | Feature | Emacs | jemacs | Status |
diff --git a/src/jerboa-emacs/editor-extra-final.ss b/src/jerboa-emacs/editor-extra-final.ss
index e0cf8e3..349a933 100644
--- a/src/jerboa-emacs/editor-extra-final.ss
+++ b/src/jerboa-emacs/editor-extra-final.ss
@@ -26628,3 +26628,44 @@
 (def (cmd-duckdb-import app)
   (let* ((echo (app-state-echo app)))
     (echo-message! echo "DuckDB: importing data")))
+
+;; Round 374 batch 2 — Flink ext, Dagster/Prefect ext
+(def (cmd-flink-checkpoints app)
+  (let* ((echo (app-state-echo app)))
+    (echo-message! echo "Flink: listing checkpoints")))
+
+(def (cmd-flink-metrics app)
+  (let* ((echo (app-state-echo app)))
+    (echo-message! echo "Flink: showing metrics")))
+
+(def (cmd-dagster-runs app)
+  (let* ((echo (app-state-echo app)))
+    (echo-message! echo "Dagster: listing runs")))
+
+(def (cmd-dagster-assets app)
+  (let* ((echo (app-state-echo app)))
+    (echo-message! echo "Dagster: listing assets")))
+
+(def (cmd-dagster-schedules app)
+  (let* ((echo (app-state-echo app)))
+    (echo-message! echo "Dagster: listing schedules")))
+
+(def (cmd-dagster-sensors app)
+  (let* ((echo (app-state-echo app)))
+    (echo-message! echo "Dagster: listing sensors")))
+
+(def (cmd-prefect-flows app)
+  (let* ((echo (app-state-echo app)))
+    (echo-message! echo "Prefect: listing flows")))
+
+(def (cmd-prefect-deployments app)
+  (let* ((echo (app-state-echo app)))
+    (echo-message! echo "Prefect: listing deployments")))
+
+(def (cmd-prefect-runs app)
+  (let* ((echo (app-state-echo app)))
+    (echo-message! echo "Prefect: listing flow runs")))
+
+(def (cmd-prefect-agents app)
+  (let* ((echo (app-state-echo app)))
+    (echo-message! echo "Prefect: listing agents")))
diff --git a/src/jerboa-emacs/editor-extra-modes.ss b/src/jerboa-emacs/editor-extra-modes.ss
index 68a9a89..c63d7e3 100644
--- a/src/jerboa-emacs/editor-extra-modes.ss
+++ b/src/jerboa-emacs/editor-extra-modes.ss
@@ -27405,3 +27405,46 @@
 (def (cmd-snowflake-warehouses app)
   (let* ((echo (app-state-echo app)))
     (echo-message! echo "Snowflake: listing warehouses")))
+
+;; Round 374 batch 1 — Airflow ext, Spark ext
+(def (cmd-airflow-dags app)
+  (let* ((echo (app-state-echo app)))
+    (echo-message! echo "Airflow: listing DAGs")))
+
+(def (cmd-airflow-tasks app)
+  (let* ((echo (app-state-echo app)))
+    (echo-message! echo "Airflow: listing tasks")))
+
+(def (cmd-airflow-runs app)
+  (let* ((echo (app-state-echo app)))
+    (echo-message! echo "Airflow: listing DAG runs")))
+
+(def (cmd-airflow-connections app)
+  (let* ((echo (app-state-echo app)))
+    (echo-message! echo "Airflow: listing connections")))
+
+(def (cmd-spark-submit app)
+  (let* ((echo (app-state-echo app)))
+    (echo-read-string echo "Spark app jar/py: "
+      (lambda (app-path)
+        (echo-message! echo (str "Spark: submitting " app-path))))))
+
+(def (cmd-spark-status app)
+  (let* ((echo (app-state-echo app)))
+    (echo-message! echo "Spark: checking application status")))
+
+(def (cmd-spark-logs app)
+  (let* ((echo (app-state-echo app)))
+    (echo-message! echo "Spark: fetching driver logs")))
+
+(def (cmd-spark-config app)
+  (let* ((echo (app-state-echo app)))
+    (echo-message! echo "Spark: showing configuration")))
+
+(def (cmd-flink-jobs app)
+  (let* ((echo (app-state-echo app)))
+    (echo-message! echo "Flink: listing jobs")))
+
+(def (cmd-flink-savepoints app)
+  (let* ((echo (app-state-echo app)))
+    (echo-message! echo "Flink: listing savepoints")))
diff --git a/src/jerboa-emacs/editor-extra-regs2.ss b/src/jerboa-emacs/editor-extra-regs2.ss
index e8932b7..a5a6118 100644
--- a/src/jerboa-emacs/editor-extra-regs2.ss
+++ b/src/jerboa-emacs/editor-extra-regs2.ss
@@ -9310,4 +9310,26 @@
   (register-command! 'duckdb-tables cmd-duckdb-tables)
   (register-command! 'duckdb-export cmd-duckdb-export)
   (register-command! 'duckdb-import cmd-duckdb-import)
+
+  ;; Round 374 — Airflow ext, Spark ext, Flink ext, Dagster/Prefect ext
+  (register-command! 'airflow-dags cmd-airflow-dags)
+  (register-command! 'airflow-tasks cmd-airflow-tasks)
+  (register-command! 'airflow-runs cmd-airflow-runs)
+  (register-command! 'airflow-connections cmd-airflow-connections)
+  (register-command! 'spark-submit cmd-spark-submit)
+  (register-command! 'spark-status cmd-spark-status)
+  (register-command! 'spark-logs cmd-spark-logs)
+  (register-command! 'spark-config cmd-spark-config)
+  (register-command! 'flink-jobs cmd-flink-jobs)
+  (register-command! 'flink-savepoints cmd-flink-savepoints)
+  (register-command! 'flink-checkpoints cmd-flink-checkpoints)
+  (register-command! 'flink-metrics cmd-flink-metrics)
+  (register-command! 'dagster-runs cmd-dagster-runs)
+  (register-command! 'dagster-assets cmd-dagster-assets)
+  (register-command! 'dagster-schedules cmd-dagster-schedules)
+  (register-command! 'dagster-sensors cmd-dagster-sensors)
+  (register-command! 'prefect-flows cmd-prefect-flows)
+  (register-command! 'prefect-deployments cmd-prefect-deployments)
+  (register-command! 'prefect-runs cmd-prefect-runs)
+  (register-command! 'prefect-agents cmd-prefect-agents)
 )