I would simply dockerize the Airflow tasks and keep them in JS as-is.
Then you write the short DAG description in Python but make the task executor launch the Docker containers.
And then you're done.
Then you write the short DAG description in Python but make the task executor launch the Docker containers.
And then you're done.
Separate the concerns: migrate the task orchestration to Airflow (or whatever) while keeping the actual Javascript task code largely unchanged.