.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/scripts/get_metadata_from_anemoi.py
packages/fiab-plugin-ecmwf/scripts/swap_attention.py
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/conftest.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-BpopU3jr.js
src/forecastbox/static/assets/CronExpressionInput-DlRUCyHN.js
src/forecastbox/static/assets/DialogTitle-BseRPT6K.js
src/forecastbox/static/assets/ExecutionCanvas-Cy53pW3e.js
src/forecastbox/static/assets/FableBuilderPage-CXKNgk_s.js
src/forecastbox/static/assets/Footer-1c0fEZlt.js
src/forecastbox/static/assets/GlyphFormDialog-CQaHit3x.js
src/forecastbox/static/assets/JobStatusIcon-gYoPb1QJ.js
src/forecastbox/static/assets/LoadingSpinner-gLaPqmtS.js
src/forecastbox/static/assets/PageHeader-Ri_aTlBe.js
src/forecastbox/static/assets/PluginStatusBadge-DX1DSHCV.js
src/forecastbox/static/assets/PublicLayout-DGovKh4J.js
src/forecastbox/static/assets/RotatingGlobe-CWUjwEzy.js
src/forecastbox/static/assets/Separator-CLHxFRJ0.js
src/forecastbox/static/assets/StatCard-CYJsWKbD.js
src/forecastbox/static/assets/StatusBadge-BzLXhrm9.js
src/forecastbox/static/assets/StatusDetailsPopover-AbToHWW1.js
src/forecastbox/static/assets/ToolbarRootContext-DbNOB5zs.js
src/forecastbox/static/assets/_authenticated-BbP1_rM8.js
src/forecastbox/static/assets/about-B4Q2a8-W.js
src/forecastbox/static/assets/activityStore-DY--yabr.js
src/forecastbox/static/assets/admin-BnHWfLMe.js
src/forecastbox/static/assets/alert-CBOvG0Jc.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-CSxknB68.js
src/forecastbox/static/assets/artifacts.index-DMQHlppm.js
src/forecastbox/static/assets/badge-B_p8hd8q.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-BVykgAlq.js
src/forecastbox/static/assets/configure-DA78NR2m.js
src/forecastbox/static/assets/configure._fableId-D9BJYVny.js
src/forecastbox/static/assets/createLucideIcon-BKiMZIed.js
src/forecastbox/static/assets/cron-BME8E-jD.js
src/forecastbox/static/assets/dashboard-DuopxjNm.js
src/forecastbox/static/assets/dialog-C34b2Q2_.js
src/forecastbox/static/assets/download-BL0ueIT3.js
src/forecastbox/static/assets/dropdown-menu-BdRScBCU.js
src/forecastbox/static/assets/ellipsis-vertical-NKqMVVTc.js
src/forecastbox/static/assets/executions._jobId-CGcXNfIA.js
src/forecastbox/static/assets/executions.index-DPJbUwVa.js
src/forecastbox/static/assets/external-link-7gfRlR2D.js
src/forecastbox/static/assets/eye-CrkP1CvS.js
src/forecastbox/static/assets/fable-R6yk_QWW.js
src/forecastbox/static/assets/fable-to-graph-BZV40eAE.css
src/forecastbox/static/assets/fable-to-graph-Bd0YBf78.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-DH_xW17z.js
src/forecastbox/static/assets/index-z35BWmC3.js
src/forecastbox/static/assets/input-BwerWvXu.js
src/forecastbox/static/assets/input-group-CmEs6R7s.js
src/forecastbox/static/assets/job-status-CbQQYzL7.js
src/forecastbox/static/assets/label-Dz2LCoMi.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-DPmaUVr3.js
src/forecastbox/static/assets/play-CgLmuUvr.js
src/forecastbox/static/assets/plugins-DDp95AWj.js
src/forecastbox/static/assets/plugins._pluginId-Cfb0X2wx.js
src/forecastbox/static/assets/plugins.index-DuDmJbu7.js
src/forecastbox/static/assets/popover-IaIMy_O0.js
src/forecastbox/static/assets/presets-B-d4Ktre.js
src/forecastbox/static/assets/progress-Cbq-ULyj.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-BefqMWEg.js
src/forecastbox/static/assets/schedules.index-Do6pNNJ6.js
src/forecastbox/static/assets/select-B6loqYUU.js
src/forecastbox/static/assets/separator-BSDUk6t4.js
src/forecastbox/static/assets/settings-2-BXT8OaT1.js
src/forecastbox/static/assets/settings-BaXGSza9.js
src/forecastbox/static/assets/shadowDom-DKLuxDVQ.js
src/forecastbox/static/assets/spinner-j-BDguqw.js
src/forecastbox/static/assets/switch-yRICZ2D8.js
src/forecastbox/static/assets/tabs-Cc0FBowa.js
src/forecastbox/static/assets/tooltip-BIrMFI5G.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-D35MAmjK.js
src/forecastbox/static/assets/useArtifacts-tg5ojRre.js
src/forecastbox/static/assets/useClick-Brquh63w.js
src/forecastbox/static/assets/useConfigPresets-zO4bzlB6.js
src/forecastbox/static/assets/useFable-59YHpu7K.js
src/forecastbox/static/assets/useFocus-D9k3Fr-L.js
src/forecastbox/static/assets/useJobs-6iUAnbyQ.js
src/forecastbox/static/assets/useMedia-D6-tQMNh.js
src/forecastbox/static/assets/useOnFirstRender-CAYNHTBe.js
src/forecastbox/static/assets/useOpenInteractionType-BKqitH1j.js
src/forecastbox/static/assets/usePositioner-DZnXMH4m.js
src/forecastbox/static/assets/useStatus-ONZP1voE.js
src/forecastbox/static/assets/useTranslation-tlCyW41q.js
src/forecastbox/static/assets/useUser-BrPzAyEk.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-CJOvYBKy.js
src/forecastbox/static/assets/vendor-l0sNRNKZ.js
src/forecastbox/static/assets/visuallyHidden-CHSel8ph.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