Files
beanflows/infra/supervisor/workflows.toml
Deeman 5d7d53a260 feat(supervisor): port Python supervisor from padelnomics + workflows.toml
Port padelnomics' schedule-aware Python supervisor to materia:
- src/materia/supervisor.py — croniter scheduling, topological wave
  execution (parallel independent workflows), tag-based git pull + deploy,
  status CLI subcommand
- infra/supervisor/workflows.toml — workflow registry (psd daily, cot
  weekly, prices daily, ice daily, weather daily)
- infra/supervisor/materia-supervisor.service — updated ExecStart to Python
  supervisor, added SUPERVISOR_GIT_PULL=1

Adaptations from padelnomics:
- Uses extract_core.state.open_state_db (not padelnomics_extract.utils)
- uv run sqlmesh -p transform/sqlmesh_materia run
- uv run materia pipeline run export_serving
- web/deploy.sh path (materia's deploy.sh is under web/)
- Removed proxy_mode (not used in materia)

Also: add croniter dependency to src/materia, delete old supervisor.sh.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-02-26 11:59:55 +01:00

35 lines
968 B
TOML

# Workflow registry — the supervisor reads this file on every tick.
# To add a new extractor: add a [section] here and create the Python module.
#
# Fields:
# module — Python module path (must expose an entry function)
# entry — function name in the module (default: "main")
# schedule — named preset ("hourly", "daily", "weekly", "monthly")
# or raw cron expression (e.g. "0 6 * * 1-5")
# depends_on — optional: list of workflow names that must complete first
[extract_psd]
module = "psdonline.execute"
entry = "extract_psd_dataset"
schedule = "daily"
[extract_cot]
module = "cftc_cot.execute"
entry = "extract_cot_dataset"
schedule = "weekly"
[extract_prices]
module = "coffee_prices.execute"
entry = "extract_coffee_prices"
schedule = "daily"
[extract_ice]
module = "ice_stocks.execute"
entry = "extract_ice_all"
schedule = "daily"
[extract_weather]
module = "openmeteo.execute"
entry = "extract_weather"
schedule = "daily"