.gitignore
.python_version
Dockerfile
DockerfileMARSRocky
LICENSE
MANIFEST.in
README.md
development.md
install.sh
justfile
pyproject.toml
uv.lock
packages/fiab-core/.python-version
packages/fiab-core/LICENSE
packages/fiab-core/README.md
packages/fiab-core/justfile
packages/fiab-core/pyproject.toml
packages/fiab-core/src/fiab_core/__init__.py
packages/fiab-core/src/fiab_core/artifacts.py
packages/fiab-core/src/fiab_core/fable.py
packages/fiab-core/src/fiab_core/plugin.py
packages/fiab-core/src/fiab_core/pydantic_utils.py
packages/fiab-core/src/fiab_core/tools/__init__.py
packages/fiab-core/src/fiab_core/tools/blocks.py
packages/fiab-core/src/fiab_core/tools/plugins.py
packages/fiab-core/tests/test_base.py
packages/fiab-core/tests/test_providers.py
packages/fiab-mcp-server/LICENSE
packages/fiab-mcp-server/README.md
packages/fiab-mcp-server/justfile
packages/fiab-mcp-server/pyproject.toml
packages/fiab-mcp-server/uv.lock
packages/fiab-mcp-server/src/fiab_mcp_server/__init__.py
packages/fiab-mcp-server/src/fiab_mcp_server/__main__.py
packages/fiab-mcp-server/src/fiab_mcp_server/server.py
packages/fiab-mcp-server/tests/test_ok.py
packages/fiab-plugin-demo/.python-version
packages/fiab-plugin-demo/LICENSE
packages/fiab-plugin-demo/README.md
packages/fiab-plugin-demo/justfile
packages/fiab-plugin-demo/pyproject.toml
packages/fiab-plugin-demo/src/fiab_plugin_demo/__init__.py
packages/fiab-plugin-demo/src/fiab_plugin_demo/blocks.py
packages/fiab-plugin-demo/src/fiab_plugin_demo/py.typed
packages/fiab-plugin-demo/tests/test_base.py
packages/fiab-plugin-demo/tests/test_blocks.py
packages/fiab-plugin-ecmwf/.python-version
packages/fiab-plugin-ecmwf/LICENSE
packages/fiab-plugin-ecmwf/README.md
packages/fiab-plugin-ecmwf/justfile
packages/fiab-plugin-ecmwf/pyproject.toml
packages/fiab-plugin-ecmwf/src/fiab_plugin_ecmwf/__init__.py
packages/fiab-plugin-ecmwf/src/fiab_plugin_ecmwf/blocks.py
packages/fiab-plugin-ecmwf/src/fiab_plugin_ecmwf/py.typed
packages/fiab-plugin-ecmwf/src/fiab_plugin_ecmwf/qubed_utils.py
packages/fiab-plugin-ecmwf/src/fiab_plugin_ecmwf/anemoi/__init__.py
packages/fiab-plugin-ecmwf/src/fiab_plugin_ecmwf/anemoi/blocks.py
packages/fiab-plugin-ecmwf/src/fiab_plugin_ecmwf/anemoi/utils.py
packages/fiab-plugin-ecmwf/src/fiab_plugin_ecmwf/runtime/__init__.py
packages/fiab-plugin-ecmwf/src/fiab_plugin_ecmwf/runtime/plots.py
packages/fiab-plugin-ecmwf/src/fiab_plugin_ecmwf/runtime/sinks.py
packages/fiab-plugin-ecmwf/src/fiab_plugin_ecmwf/runtime/source.py
packages/fiab-plugin-ecmwf/tests/conftest.py
packages/fiab-plugin-ecmwf/tests/runtime/test_anemoi_blocks.py
packages/fiab-plugin-ecmwf/tests/runtime/test_qubedinstanceoutput.py
packages/fiab-plugin-ecmwf/tests/unit/test_base.py
packages/fiab-plugin-ecmwf/tests/unit/test_blocks.py
packages/fiab-plugin-test/.python-version
packages/fiab-plugin-test/LICENSE
packages/fiab-plugin-test/README.md
packages/fiab-plugin-test/justfile
packages/fiab-plugin-test/pyproject.toml
packages/fiab-plugin-test/src/fiab_plugin_test/__init__.py
packages/fiab-plugin-test/src/fiab_plugin_test/py.typed
packages/fiab-plugin-test/src/fiab_plugin_test/runtime.py
packages/fiab-plugin-test/tests/test_base.py
src/forecast_in_a_box.egg-info/PKG-INFO
src/forecast_in_a_box.egg-info/SOURCES.txt
src/forecast_in_a_box.egg-info/dependency_links.txt
src/forecast_in_a_box.egg-info/requires.txt
src/forecast_in_a_box.egg-info/top_level.txt
src/forecastbox/__init__.py
src/forecastbox/_version.py
src/forecastbox/domain/__init__.py
src/forecastbox/domain/admin.py
src/forecastbox/domain/artifact/__init__.py
src/forecastbox/domain/artifact/base.py
src/forecastbox/domain/artifact/io.py
src/forecastbox/domain/artifact/manager.py
src/forecastbox/domain/auth/__init__.py
src/forecastbox/domain/auth/db.py
src/forecastbox/domain/auth/oidc.py
src/forecastbox/domain/auth/users.py
src/forecastbox/domain/blueprint/__init__.py
src/forecastbox/domain/blueprint/cascade.py
src/forecastbox/domain/blueprint/db.py
src/forecastbox/domain/blueprint/exceptions.py
src/forecastbox/domain/blueprint/service.py
src/forecastbox/domain/blueprint/types.py
src/forecastbox/domain/experiment/__init__.py
src/forecastbox/domain/experiment/db.py
src/forecastbox/domain/experiment/exceptions.py
src/forecastbox/domain/experiment/service.py
src/forecastbox/domain/experiment/types.py
src/forecastbox/domain/experiment/scheduling/__init__.py
src/forecastbox/domain/experiment/scheduling/background.py
src/forecastbox/domain/experiment/scheduling/db.py
src/forecastbox/domain/experiment/scheduling/dt_utils.py
src/forecastbox/domain/experiment/scheduling/job_utils.py
src/forecastbox/domain/glyphs/__init__.py
src/forecastbox/domain/glyphs/exceptions.py
src/forecastbox/domain/glyphs/global_db.py
src/forecastbox/domain/glyphs/intrinsic.py
src/forecastbox/domain/glyphs/jinja_interpolation.py
src/forecastbox/domain/glyphs/resolution.py
src/forecastbox/domain/glyphs/types.py
src/forecastbox/domain/plugin/__init__.py
src/forecastbox/domain/plugin/manager.py
src/forecastbox/domain/plugin/store.py
src/forecastbox/domain/run/__init__.py
src/forecastbox/domain/run/background.py
src/forecastbox/domain/run/cascade.py
src/forecastbox/domain/run/compile.py
src/forecastbox/domain/run/db.py
src/forecastbox/domain/run/exceptions.py
src/forecastbox/domain/run/service.py
src/forecastbox/domain/run/types.py
src/forecastbox/entrypoint/__init__.py
src/forecastbox/entrypoint/app.py
src/forecastbox/entrypoint/main.py
src/forecastbox/entrypoint/bootstrap/__init__.py
src/forecastbox/entrypoint/bootstrap/checks.py
src/forecastbox/entrypoint/bootstrap/config.py
src/forecastbox/entrypoint/bootstrap/launchers.py
src/forecastbox/entrypoint/bootstrap/procs.py
src/forecastbox/entrypoint/bootstrap/service.py
src/forecastbox/entrypoint/templates/share.html
src/forecastbox/routes/__init__.py
src/forecastbox/routes/admin.py
src/forecastbox/routes/artifacts.py
src/forecastbox/routes/auth.py
src/forecastbox/routes/blueprint.py
src/forecastbox/routes/experiment.py
src/forecastbox/routes/gateway.py
src/forecastbox/routes/plugins.py
src/forecastbox/routes/run.py
src/forecastbox/routes/status.py
src/forecastbox/schemata/__init__.py
src/forecastbox/schemata/jobs.py
src/forecastbox/schemata/user.py
src/forecastbox/static/favicon.ico
src/forecastbox/static/index.html
src/forecastbox/static/logo192.png
src/forecastbox/static/logo512.png
src/forecastbox/static/manifest.json
src/forecastbox/static/mockServiceWorker.js
src/forecastbox/static/robots.txt
src/forecastbox/static/assets/CommandPalette-5fl8JL7Z.js
src/forecastbox/static/assets/CronExpressionInput-AGabw-zZ.js
src/forecastbox/static/assets/DialogTitle-hJ16k4gv.js
src/forecastbox/static/assets/ExecutionCanvas-vetMc1it.js
src/forecastbox/static/assets/FableBuilderPage-BXf9JmCP.js
src/forecastbox/static/assets/Footer-DIIqi8Bk.js
src/forecastbox/static/assets/GlyphFormDialog-C_SXrp0m.js
src/forecastbox/static/assets/JobStatusIcon-gYoPb1QJ.js
src/forecastbox/static/assets/LoadingSpinner-BA0Y6S5b.js
src/forecastbox/static/assets/PageHeader-rLJpH6Ob.js
src/forecastbox/static/assets/PluginStatusBadge-Dt2guKY6.js
src/forecastbox/static/assets/PublicLayout-DAq5Nmg-.js
src/forecastbox/static/assets/RotatingGlobe-CWUjwEzy.js
src/forecastbox/static/assets/Separator-C9yRwD_N.js
src/forecastbox/static/assets/StatCard-gPdDKBGf.js
src/forecastbox/static/assets/StatusBadge-DTXn5jzd.js
src/forecastbox/static/assets/StatusDetailsPopover-DfU5Veqf.js
src/forecastbox/static/assets/ToolbarRootContext-DkRtI1Hu.js
src/forecastbox/static/assets/_authenticated-Ce21RgUk.js
src/forecastbox/static/assets/about-C6Lc83R-.js
src/forecastbox/static/assets/activityStore-COiZ0myR.js
src/forecastbox/static/assets/admin-BnHWfLMe.js
src/forecastbox/static/assets/alert-B0lfuXsY.js
src/forecastbox/static/assets/arrow-left-BsBGzHhf.js
src/forecastbox/static/assets/arrow-right-DZk0pG5c.js
src/forecastbox/static/assets/artifacts-DDp95AWj.js
src/forecastbox/static/assets/artifacts._artifactId-DzRdAB5d.js
src/forecastbox/static/assets/artifacts.index-27-I1luM.js
src/forecastbox/static/assets/badge-CzwWc2FE.js
src/forecastbox/static/assets/bookmark-7SSEM_Ss.js
src/forecastbox/static/assets/check-CE9CNs95.js
src/forecastbox/static/assets/chevron-left-llzgjWEi.js
src/forecastbox/static/assets/chevron-right-DTb5dUgc.js
src/forecastbox/static/assets/circle-alert-JEpKSDdC.js
src/forecastbox/static/assets/circle-check-Dk2OEQPV.js
src/forecastbox/static/assets/circle-question-mark-V_UPC8eN.js
src/forecastbox/static/assets/clock-DCfl3iyd.js
src/forecastbox/static/assets/config-BMULKle9.js
src/forecastbox/static/assets/configure-BeJ4tIHa.js
src/forecastbox/static/assets/configure._fableId-yu-T_Fk_.js
src/forecastbox/static/assets/createLucideIcon-BKiMZIed.js
src/forecastbox/static/assets/cron-Cs-0Mh7_.js
src/forecastbox/static/assets/dashboard-BklZ4Iw-.js
src/forecastbox/static/assets/dialog-BM58C928.js
src/forecastbox/static/assets/download-BL0ueIT3.js
src/forecastbox/static/assets/dropdown-menu-D580iIZt.js
src/forecastbox/static/assets/ellipsis-vertical-NKqMVVTc.js
src/forecastbox/static/assets/executions._jobId-BTKogyrA.js
src/forecastbox/static/assets/executions.index-UJRnH2tb.js
src/forecastbox/static/assets/external-link-7gfRlR2D.js
src/forecastbox/static/assets/eye-CrkP1CvS.js
src/forecastbox/static/assets/fable-IL6EdiMn.js
src/forecastbox/static/assets/fable-to-graph-BZV40eAE.css
src/forecastbox/static/assets/fable-to-graph-u6mTvXo5.js
src/forecastbox/static/assets/file-text-B01sfhuG.js
src/forecastbox/static/assets/formatDistanceToNow-Ctx6mZEP.js
src/forecastbox/static/assets/ibm-plex-sans-cyrillic-ext-wght-normal-d45eAU9y.woff2
src/forecastbox/static/assets/ibm-plex-sans-cyrillic-wght-normal-BAAhND-U.woff2
src/forecastbox/static/assets/ibm-plex-sans-greek-wght-normal-CmyJS8uq.woff2
src/forecastbox/static/assets/ibm-plex-sans-latin-ext-wght-normal-CIII54If.woff2
src/forecastbox/static/assets/ibm-plex-sans-latin-wght-normal-IvpUvPa2.woff2
src/forecastbox/static/assets/ibm-plex-sans-vietnamese-wght-normal-Dg1JeJN0.woff2
src/forecastbox/static/assets/index-5ErQcs57.js
src/forecastbox/static/assets/index-BmFCivBl.css
src/forecastbox/static/assets/index-CWql6_3t.js
src/forecastbox/static/assets/index-CgrYDows.js
src/forecastbox/static/assets/input-BTjZnWdS.js
src/forecastbox/static/assets/input-group-BQmOhLMi.js
src/forecastbox/static/assets/job-status-DF5OjKa5.js
src/forecastbox/static/assets/label-CukA85L1.js
src/forecastbox/static/assets/layers-BhlPpTBP.js
src/forecastbox/static/assets/layout-grid-BSAnFWO9.js
src/forecastbox/static/assets/list-CQCINDcq.js
src/forecastbox/static/assets/loader-circle-DLjsFQWD.js
src/forecastbox/static/assets/package-LvC8YLZ2.js
src/forecastbox/static/assets/pencil-CroONSTO.js
src/forecastbox/static/assets/pipeline-generator-Bs7Pnbpu.js
src/forecastbox/static/assets/play-CgLmuUvr.js
src/forecastbox/static/assets/plugins-DDp95AWj.js
src/forecastbox/static/assets/plugins._pluginId-Dbm_vnsp.js
src/forecastbox/static/assets/plugins.index-Df8nsqJm.js
src/forecastbox/static/assets/popover-Dad2PvOd.js
src/forecastbox/static/assets/presets-BjJPilK_.js
src/forecastbox/static/assets/progress-BfFXufnU.js
src/forecastbox/static/assets/puzzle-CuYzdYGi.js
src/forecastbox/static/assets/query-UdV7T1nD.js
src/forecastbox/static/assets/refresh-cw-AUYNmANn.js
src/forecastbox/static/assets/router-CptryKSG.js
src/forecastbox/static/assets/schedules._scheduleId-BozB3oPZ.js
src/forecastbox/static/assets/schedules.index-C-nQ95R6.js
src/forecastbox/static/assets/select-DbCcVQfc.js
src/forecastbox/static/assets/separator-DCz_MxQv.js
src/forecastbox/static/assets/settings-2-BXT8OaT1.js
src/forecastbox/static/assets/settings-BaXGSza9.js
src/forecastbox/static/assets/shadowDom-sg4MArg4.js
src/forecastbox/static/assets/spinner-CU58zkpx.js
src/forecastbox/static/assets/switch-DL2Lv6SS.js
src/forecastbox/static/assets/tabs-78_E6YSg.js
src/forecastbox/static/assets/tooltip-DyMLIYmv.js
src/forecastbox/static/assets/trash-2-aVa7F_CZ.js
src/forecastbox/static/assets/triangle-alert-IOCt_0PY.js
src/forecastbox/static/assets/url-state-D3zujJXy.js
src/forecastbox/static/assets/useArtifacts-CVeeBu-q.js
src/forecastbox/static/assets/useClick-Bx99Uu3a.js
src/forecastbox/static/assets/useConfigPresets-192mtVr9.js
src/forecastbox/static/assets/useFable-DowkvTj0.js
src/forecastbox/static/assets/useFocus-CaJ6uQwy.js
src/forecastbox/static/assets/useJobs-DRve8Dkt.js
src/forecastbox/static/assets/useMedia-D6-tQMNh.js
src/forecastbox/static/assets/useOnFirstRender-BJQp2-vz.js
src/forecastbox/static/assets/useOpenInteractionType-BW446P7P.js
src/forecastbox/static/assets/usePositioner-DA2-ds_t.js
src/forecastbox/static/assets/useStatus-DQ2rXGyp.js
src/forecastbox/static/assets/useTranslation-DCvqzSYj.js
src/forecastbox/static/assets/useUser-DjsNRm3E.js
src/forecastbox/static/assets/user-Cr0Anbtp.js
src/forecastbox/static/assets/value-DI5aKHLv.js
src/forecastbox/static/assets/variables-DDp95AWj.js
src/forecastbox/static/assets/variables.index-MplvuVVN.js
src/forecastbox/static/assets/vendor-l0sNRNKZ.js
src/forecastbox/static/assets/visuallyHidden-CwSlUrjc.js
src/forecastbox/static/assets/x-BR6yQiAb.js
src/forecastbox/static/dag/example.html
src/forecastbox/static/era5/sprite_sheet.png
src/forecastbox/static/logos/fiab.png
src/forecastbox/static/logos/org/ECMWF.png
src/forecastbox/static/logos/org/MetNorway.png
src/forecastbox/static/logos/org/destine-fund.png
src/forecastbox/static/logos/org/destine.png
src/forecastbox/static/logos/packages/anemoi.webp
src/forecastbox/static/logos/packages/earthkit-dark.svg
src/forecastbox/static/logos/packages/earthkit-light.svg
src/forecastbox/utility/__init__.py
src/forecastbox/utility/auth.py
src/forecastbox/utility/concurrent.py
src/forecastbox/utility/config.py
src/forecastbox/utility/db.py
src/forecastbox/utility/graph.py
src/forecastbox/utility/httpx.py
src/forecastbox/utility/pagination.py
src/forecastbox/utility/pydantic.py
src/forecastbox/utility/structural.py
src/forecastbox/utility/time.py
src/forecastbox/utility/rsjf/__init__.py
src/forecastbox/utility/rsjf/forms.py
src/forecastbox/utility/rsjf/from_pydantic.py
src/forecastbox/utility/rsjf/jsonSchema.py
src/forecastbox/utility/rsjf/uiSchema.py
src/forecastbox/utility/rsjf/utils.py
tests/integration/__init__.py
tests/integration/conftest.py
tests/integration/test_admin_flows.py
tests/integration/test_blueprint.py
tests/integration/test_db_startup.py
tests/integration/test_model.py
tests/integration/test_schedule.py
tests/integration/utils.py
tests/integration/data/.gitignore
tests/integration/static/index.html
tests/largeE2E/__init__.py
tests/largeE2E/bigtest.py
tests/largeE2E/blueprint.py
tests/largeE2E/scheduler_helper.py
tests/unit/test_artifacts.py
tests/unit/test_graph.py
tests/unit/test_jobs.py
tests/unit/test_updates.py
tests/unit/checkpoints/simple.yaml
tests/unit/domain/__init__.py
tests/unit/domain/glyphs/__init__.py
tests/unit/domain/glyphs/test_global.py
tests/unit/domain/glyphs/test_resolution.py
tests/unit/domain/run/__init__.py
tests/unit/domain/run/test_compile.py
tests/unit/ecpyutil/test_deepunion.py
tests/unit/ecpyutil/test_fetch_file.py
tests/unit/plugins/test_stores.py
tests/unit/rjsf/__init__.py
tests/unit/rjsf/test_forms.py
tests/unit/rjsf/test_from_pydantic.py
tests/unit/rjsf/test_jsonSchema.py
tests/unit/rjsf/test_uiSchema.py
tests/unit/rjsf/test_utils.py
tests/unit/scheduling/test_dt_utils.py
tests/unit/scheduling/test_experiment_runnable.py