This is an automated email from the ASF dual-hosted git repository.
vatsrahul1001 pushed a change to branch v3-4-test
in repository https://gitbox.apache.org/repos/asf/airflow.git
from 9cb69142c39 Update default branches for 3-4
add 599fcb41ac0 Run the XCom column prek hook on Python 3.11 or newer
(#74405)
add a0e9d68b98a Fix common.ai managed agent failover when an identity
cannot resolve (#72786)
add bf3d4022db3 Remove slow-on-MySQL and now needless CHECK CONSTRAINT
(#74409)
add 57ad5d30539 Prepare providers release 2026-10-06 (#74429)
add 3f552272f9f Sync the TS SDK supervisor schema from its Task SDK source
(#74415)
add ef9feefd83f Fix Grid and Graph 500 errors for cyclic TaskGroup
dependencies (#73724)
add 3fa1eb5a27a Add URL param support to calendar view (#73237) (#73762)
add d7c60857bc0 Expose the resolved LLM model name on a dedicated XCom key
(#74272)
add c8de3793a25 Make provider signing resumable after interruption (#74465)
add 88b83d1f0d4 Fix Spark submit standalone status polling to use correct
REST endpoint (#71949)
add 7c014e1b61a Fix plugin applies_to scoping defects found in review
(#74425)
add fb235e6926a Preserve newlines in XCom tab string values (#74112)
add 42b25f5df74 Add documentation and sample DAG for `ExasolToS3Operator`
(#73940)
add 150be723896 Close Catalan gap (#74361)
add bc96a14f776 UI: Move UI-only e2e checks to unit tests (#74367)
add e82b196c065 Dag run breadcrumb switcher (#74471)
add 23cd2c89304 Fix missing end-of-file newline in XComEntry.test.tsx
(#74476)
add bf2de26c7b7 Fix Quick Start installing Airflow 3.1.1 instead of the
documented version (#74474)
add 42dfb20b812 Assert on structured log events in common.ai tests (#74443)
add 386c0ba69eb Export `DataFusionToolset`, `AgentSkillsToolset` and
`LoggingToolset`… (#74449)
add 00967b20550 Bump the ui-plugin-template-package-updates group across 1
directory with 7 updates (#74331)
add 6eae11fb7dc Bump the registry-security-updates group across 1
directory with 2 updates (#74326)
add 30aad96a041 Bump the uv-dependency-updates group across 1 directory
with 6 updates (#74259)
add 23b3e7b4147 Bump the ts-sdk-package-updates group across 1 directory
with 2 updates (#74253)
add f5c535bbae0 Bump swagger-ui-dist (#74251)
add d3899db5079 Bump oauthlib (#74325)
add 7811cbacf5a Reject unsupported output_type and bound HITL XCom pull
retries (#74450)
add 6e5d9ddc185 Update the TypeScript SDK docs for Dags declared in
TypeScript (#73875)
add 2bda1928703 Java SDK: Pack each native Dag's source file into the
bundle JAR (#74096)
add d4013cc2b5b Java SDK: Pick one of two tasks with a condition (#74438)
add c3043c266c6 Java SDK: Choose one of several tasks with a branch
(#74439)
add c5f504366d5 Java SDK: Trigger another Dag's run from a native Java Dag
(#74440)
add 7f945b45d07 Make `SQLToolset` `check_query` follow `allow_writes` like
`query` (#74448)
add 30a3a6d7434 Go SDK: run TriggerDagRun tasks in the Go runtime (#74417)
add e060e6c0b46 Document how bundles can discover the dag_id/task_id being
requested (#69697)
add 8533cc40b0a TS SDK: add the task state store to the task client
(#73618)
add 86ebf1c8a2d Add missing Taiwanese Mandarin translations for task
states and Dag list settings (#74486)
add 785d82da5c0 Cover native Go Dags in the go_sdk e2e test (#74411)
add dc38f84ff46 Consolidate in-process Execution API hosting (#73327)
add b8ef78f53ad Fix misleading timetable Variable example in best
practices (#73945)
add 1e404fac4ac Stop the scheduler crashing when a queued run's Dag fails
to deserialize (#74499)
add ea955744e4d Make airflow standalone discover new Dag files within
seconds (#74479)
add 0a913f21aa8 Use the configured API port in the default execution API
URL (#74478)
add 802f398731f Start a real login in the AWS auth manager system test
(#74431)
add aef881370ea Sync Dag permissions for CustomAuthManager (#74022)
add bdfc02b8ffb Fix GKE operator imports with older Kubernetes providers
(#74505)
add ad2ef0634ec Dedent task docstrings used as doc_md (#74436)
add 919765f3cf7 Rename the max_active_runs recompute test and drop a no-op
mock (#74483)
add 1f5331de1fa Document the experimental Dag importer interface (#74333)
add 8e14de67e3f Fix `KubernetesExecutor` leaving invalid-config tasks
stuck in queued (#74512)
add 07a0c4da099 Fix TypeError clearing a DAG run when a queued-at deadline
interval is stored as JSON (#70370)
add df7b8a7d4ca Bump the auth-ui-package-updates group across 1 directory
with 2 updates (#74507)
add 466e847d3de Add routable to docs spelling wordlist (#74526)
add bb721616ad0 Fix AWS auth manager login when the IdP is on another site
(#74529)
add 65a83820fef Let SandboxToolset be deep-copied again (#74525)
add 7675d8d2f39 Add missing UI translations for Greek(el) (#74460)
add 6255513a3b6 Add missing Polish UI translations (#74533)
add 9bf8cc0a6fb Add Snowflake Cortex Agent management operators (#70930)
add 0bae39f4884 Document that `SQLToolset` does not check functions
without `allowed_tables` (#74444)
add 1a6ea8899c3 UI: Group digits of counters in translated strings (#74296)
add 051d5d85d2f TS SDK: Add human-in-the-loop tasks to native Dags (#74484)
add 0c3853692bc Add user-facing docs for the new Task Loops feature.
(#74274)
add 78572f6efc7 Introduce the (internal/db level) concept of "dynamic
regions" for TIs (#74275)
add 2f7d9662623 Resolve live producers by region and read their XCom by
attempt (#74344)
add 9bc8cad3f84 Pin loop definitions and carry region coordinates through
task execution (#74345)
add 93f857f40da Give every mapped expansion a region and store its index
as region_index (#74346)
add 6b20a69691e Attribute log, asset-event and asset-state writes to the
task attempt (#74347)
add 551d54bdaee Run loop gates and advance iterations atomically (#74348)
add ea4519b9f56 Clear selected loop work and regenerate only what was
replaced (#74349)
add 0226554076f Read current task executions by exact region and try
(#74350)
add feafb6c5ee1 Let the HITL review plugin address one loop pass or mapped
slot (#74351)
add d0f83bb4a3a Show current task executions in the UI (#74352)
add fe589528ee4 Show loop iterations and outcomes throughout the UI
(#74354)
add ed572aff106 Bound LLM operator usage_limits across task retries
(#74396)
add 12bb6d9b953 Cover native TypeScript and Java Dags, including control
flow, in the e2e suites (#73847)
add 7749ecdb977 Bump eslint-plugin-unicorn (#74508)
add 4ca1f6693bb Deprecate cyclic TaskGroup dependencies (#73746)
add 72ac4fb4f1c Stop loading the task runner on every Airflow process
startup (#74496)
add 78d31882a08 Test that deferred capability ids stay out of Common AI
durable fingerprints (#74423)
add 06e7e284e32 Log capability tool calls in AgentOperator (#72202)
add 3ac1e4f7f2e Make asset event batching opt-in (#68517)
add 92340cf4171 i18n(ko): Add missing translations (Oct 1) (#74006)
add c96984baf44 Add sqlglot drift tripwires for common.ai read-only SQL
validation (#74487)
add 1530df852ba Rename `HookToolset` `tool_name_prefix` to `tool_prefix`
(#74447)
add 0f06fca0fcc Exclude the Apache Tinkerpop and Vespa providers from 3.14
(#74559)
add 823381c1dcc Add the Python 3.15 release manager to the sigstore check
(#74572)
add 337642574a6 YAML Dag file parser (#74084)
add c1d17df7b48 Warn on suspicious Dag and task IDs at Java SDK build time
(#69937)
add 270b2abfc25 Run TypeScript SDK unit tests on pull requests (#74513)
add b7f7fa3439b Fix prek setup order in contributor quickstart (#74585)
add 1806c28c36f Fix agent HITL review for list, marker and function output
types (#74537)
add ff6974f45e7 Record Jarek Potiuk's voting address in the PMC roster
(#74582)
add 3af85e214f4 Avoid a supervisor round trip before poke for rescheduled
sensors (#68012)
add fac3157a735 Add start-beta-process command to cut beta pre-releases
(#74464)
add 194e0ea4c98 Add a generated supported services page for the common.ai
provider (#72939)
new 77fa2ed6255 Merge main into v3-4-test
The 1 revisions listed above as "new" are entirely new to this
repository and will be described in separate emails. The revisions
listed as "add" were already present in the repository and have only
been added to this reference.
Summary of changes:
.agents/skills/airflow-translations/SKILL.md | 4 +
.agents/skills/airflow-translations/locales/ar.md | 10 +-
.agents/skills/airflow-translations/locales/ca.md | 2 +-
.agents/skills/airflow-translations/locales/de.md | 2 +-
.agents/skills/airflow-translations/locales/el.md | 2 +-
.agents/skills/airflow-translations/locales/es.md | 2 +-
.agents/skills/airflow-translations/locales/fr.md | 2 +-
.agents/skills/airflow-translations/locales/he.md | 4 +-
.agents/skills/airflow-translations/locales/hu.md | 4 +-
.agents/skills/airflow-translations/locales/ja.md | 2 +-
.agents/skills/airflow-translations/locales/ko.md | 26 +-
.agents/skills/airflow-translations/locales/nl.md | 2 +-
.agents/skills/airflow-translations/locales/pl.md | 6 +-
.agents/skills/airflow-translations/locales/pt.md | 2 +-
.agents/skills/airflow-translations/locales/tr.md | 2 +-
.../skills/airflow-translations/locales/zh-CN.md | 12 +-
.../skills/airflow-translations/locales/zh-TW.md | 8 +-
.apache-magpie-overrides/pmc-roster.md | 2 +-
.github/workflows/ci-amd.yml | 36 +
.github/workflows/ci-arm.yml | 36 +
.github/workflows/k8s-tests.yml | 36 +-
.github/workflows/release-constraints.yml | 21 +-
.pre-commit-config.yaml | 43 +-
.rat-excludes | 1 +
Dockerfile | 3 +
Dockerfile.ci | 3 +
.../0015-per-dag-source-in-bundle-artifact.md | 2 +
.../administration-and-deployment/dag-bundles.rst | 24 +
.../dag-importers.rst | 169 ++
.../dag-serialization.rst | 2 +-
.../dagfile-processing.rst | 10 +-
.../docs/administration-and-deployment/index.rst | 1 +
.../docs/administration-and-deployment/plugins.rst | 105 +-
.../task-and-asset-state-store.rst | 4 +-
.../administration-and-deployment/web-stack.rst | 13 +-
.../authoring-and-scheduling/asset-scheduling.rst | 64 +
.../docs/authoring-and-scheduling/deferring.rst | 2 +-
.../dynamic-task-mapping.rst | 18 +-
.../docs/authoring-and-scheduling/index.rst | 2 +
.../language-sdks/index.rst | 81 +-
.../language-sdks/java.rst | 4 +
.../language-sdks/typescript.rst | 933 +++++------
.../loops-and-mapped-tasks.rst | 61 +
.../docs/authoring-and-scheduling/loops.rst | 392 +++++
airflow-core/docs/best-practices.rst | 52 +-
airflow-core/docs/core-concepts/dags.rst | 76 +-
.../core-concepts/task-and-asset-state-store.rst | 2 +-
.../docs/core-concepts/task-state-store.rst | 4 +-
airflow-core/docs/core-concepts/tasks.rst | 2 +-
airflow-core/docs/migrations-ref.rst | 11 +-
airflow-core/docs/public-airflow-interface.rst | 16 +
airflow-core/docs/start.rst | 9 +-
airflow-core/newsfragments/68517.significant.rst | 14 +
airflow-core/newsfragments/73746.significant.rst | 22 +
airflow-core/newsfragments/74278.feature.rst | 2 +-
airflow-core/newsfragments/74499.bugfix.rst | 1 +
airflow-core/newsfragments/task-loops.feature.rst | 1 +
airflow-core/src/airflow/api_fastapi/app.py | 3 +-
.../auth/managers/simple/ui/package.json | 6 +-
.../auth/managers/simple/ui/pnpm-lock.yaml | 242 +--
.../airflow/api_fastapi/common/parameters/misc.py | 3 +-
.../airflow/api_fastapi/common/parameters/sort.py | 6 +-
.../api_fastapi/common/parameters/task_instance.py | 7 +-
.../src/airflow/api_fastapi/common/region.py | 54 +
.../core_api/datamodels/asset_state_store.py | 8 +-
.../api_fastapi/core_api/datamodels/assets.py | 2 +
.../api_fastapi/core_api/datamodels/event_logs.py | 2 +
.../core_api/datamodels/task_instance_history.py | 10 +-
.../core_api/datamodels/task_instances.py | 42 +-
.../api_fastapi/core_api/datamodels/ui/common.py | 4 +
.../datamodels/ui/{gantt.py => execution.py} | 44 +-
.../api_fastapi/core_api/datamodels/ui/gantt.py | 10 +-
.../api_fastapi/core_api/datamodels/ui/grid.py | 58 +
.../core_api/datamodels/ui/structure.py | 4 +
.../api_fastapi/core_api/datamodels/xcom.py | 10 +-
.../api_fastapi/core_api/openapi/_private_ui.yaml | 661 ++++++++
.../core_api/openapi/v2-rest-api-generated.yaml | 1151 ++++++++++++-
.../core_api/routes/public/asset_state_store.py | 16 +
.../api_fastapi/core_api/routes/public/assets.py | 6 +
.../api_fastapi/core_api/routes/public/dag_run.py | 7 +-
.../core_api/routes/public/event_logs.py | 33 +-
.../core_api/routes/public/extra_links.py | 39 +-
.../api_fastapi/core_api/routes/public/hitl.py | 98 +-
.../api_fastapi/core_api/routes/public/log.py | 27 +-
.../core_api/routes/public/task_instances.py | 537 +++++--
.../core_api/routes/public/task_state_store.py | 105 +-
.../api_fastapi/core_api/routes/public/xcom.py | 119 +-
.../api_fastapi/core_api/routes/ui/__init__.py | 2 +
.../airflow/api_fastapi/core_api/routes/ui/dags.py | 12 +-
.../api_fastapi/core_api/routes/ui/execution.py | 112 ++
.../api_fastapi/core_api/routes/ui/gantt.py | 28 +-
.../airflow/api_fastapi/core_api/routes/ui/grid.py | 123 +-
.../core_api/routes/ui/partitioned_dag_runs.py | 11 +-
.../core_api/services/public/dag_run.py | 119 +-
.../core_api/services/public/event_logs.py | 10 +-
.../core_api/services/public/task_coordinates.py | 249 +++
.../core_api/services/public/task_instances.py | 398 ++++-
.../api_fastapi/core_api/services/ui/execution.py | 74 +
.../api_fastapi/core_api/services/ui/grid.py | 278 +++-
.../api_fastapi/core_api/services/ui/task_group.py | 15 +
.../src/airflow/api_fastapi/execution_api/app.py | 153 +-
.../execution_api/datamodels/taskinstance.py | 42 +-
.../api_fastapi/execution_api/in_process.py | 148 ++
.../execution_api/routes/asset_state_store.py | 40 +-
.../execution_api/routes/task_instances.py | 510 ++++--
.../execution_api/routes/task_reschedules.py | 11 +-
.../execution_api/routes/task_state_store.py | 8 +-
.../api_fastapi/execution_api/routes/xcoms.py | 359 ++++-
.../api_fastapi/execution_api/versions/__init__.py | 10 +
.../execution_api/versions/v2026_10_30.py | 35 +
.../versions/v2026_10_30_xcom_params.py | 28 +-
.../src/airflow/api_fastapi/logging/decorators.py | 39 +
airflow-core/src/airflow/assets/manager.py | 33 +-
.../src/airflow/cli/commands/dag_command.py | 9 +-
.../src/airflow/cli/commands/standalone_command.py | 31 +
.../airflow/cli/commands/state_store_command.py | 6 +-
.../src/airflow/cli/commands/task_command.py | 103 +-
.../src/airflow/config_templates/config.yml | 24 +-
.../src/airflow/dag_processing/collection.py | 19 +-
airflow-core/src/airflow/dag_processing/dagbag.py | 31 +-
airflow-core/src/airflow/dag_processing/manager.py | 14 +-
.../src/airflow/dag_processing/processor.py | 11 +-
.../src/airflow/example_dags/example_task_loops.py | 114 ++
.../src/airflow/executors/base_executor.py | 19 +-
.../src/airflow/executors/workloads/task.py | 23 +-
.../src/airflow/jobs/scheduler_job_runner.py | 297 +++-
.../src/airflow/jobs/triggerer_job_runner.py | 48 +-
airflow-core/src/airflow/migrations/utils.py | 72 +
..._3_4_0_fold_task_map_into_xcom_mapped_length.py | 2 -
.../0142_3_4_0_unify_task_attempt_ownership.py | 26 +-
.../0143_3_4_0_add_dynamic_region_storage.py | 211 +++
.../versions/0144_3_4_0_rename_stored_map_index.py | 76 +
.../0145_3_4_0_add_task_identity_to_events.py | 49 +
.../0146_3_4_0_add_asset_state_writer_identity.py | 55 +
airflow-core/src/airflow/models/__init__.py | 1 +
airflow-core/src/airflow/models/asset.py | 21 +-
.../src/airflow/models/asset_state_store.py | 9 +-
airflow-core/src/airflow/models/dagrun.py | 627 ++++++--
airflow-core/src/airflow/models/dagwarning.py | 1 +
airflow-core/src/airflow/models/dynamic_region.py | 885 ++++++++++
airflow-core/src/airflow/models/expandinput.py | 31 +-
airflow-core/src/airflow/models/log.py | 71 +-
.../src/airflow/models/renderedtifields.py | 2 +-
airflow-core/src/airflow/models/serialized_dag.py | 4 +-
.../src/airflow/models/task_coordinates.py | 838 ++++++++++
.../src/airflow/models/task_state_store.py | 20 +-
airflow-core/src/airflow/models/taskinstance.py | 799 ++++++++-
airflow-core/src/airflow/models/trigger.py | 17 +-
airflow-core/src/airflow/models/xcom.py | 73 +-
airflow-core/src/airflow/plugins_manager.py | 93 +-
.../src/airflow/serialization/dag_version_diff.py | 2 +
airflow-core/src/airflow/serialization/decoders.py | 44 +-
.../airflow/serialization/definitions/assets.py | 13 +
.../serialization/definitions/baseoperator.py | 6 +-
.../src/airflow/serialization/definitions/dag.py | 180 +--
.../serialization/definitions/mappedoperator.py | 55 +-
.../serialization/definitions/operatorlink.py | 8 +-
.../airflow/serialization/definitions/taskgroup.py | 52 +-
.../airflow/serialization/definitions/xcom_arg.py | 111 +-
airflow-core/src/airflow/serialization/encoders.py | 7 +-
airflow-core/src/airflow/serialization/schema.json | 12 +
.../airflow/serialization/serialized_objects.py | 22 +-
airflow-core/src/airflow/state/metastore.py | 94 +-
airflow-core/src/airflow/ti_deps/dep_context.py | 71 +-
.../airflow/ti_deps/deps/mapped_task_expanded.py | 2 +-
.../ti_deps/deps/mapped_task_upstream_dep.py | 37 +-
.../ti_deps/deps/not_previously_skipped_dep.py | 8 +-
.../airflow/ti_deps/deps/ready_to_reschedule.py | 9 +-
.../src/airflow/ti_deps/deps/trigger_rule_dep.py | 98 +-
airflow-core/src/airflow/timetables/assets.py | 35 +-
airflow-core/src/airflow/timetables/base.py | 16 +
airflow-core/src/airflow/timetables/simple.py | 91 +-
.../src/airflow/ui/openapi-gen/queries/common.ts | 175 +-
.../ui/openapi-gen/queries/ensureQueryData.ts | 263 ++-
.../src/airflow/ui/openapi-gen/queries/prefetch.ts | 263 ++-
.../src/airflow/ui/openapi-gen/queries/queries.ts | 369 ++++-
.../src/airflow/ui/openapi-gen/queries/suspense.ts | 263 ++-
.../airflow/ui/openapi-gen/requests/schemas.gen.ts | 1207 ++++++++++++--
.../ui/openapi-gen/requests/services.gen.ts | 370 ++++-
.../airflow/ui/openapi-gen/requests/types.gen.ts | 529 +++++-
.../airflow/ui/public/i18n/locales/ar/admin.json | 12 +-
.../airflow/ui/public/i18n/locales/ar/common.json | 14 +-
.../ui/public/i18n/locales/ar/components.json | 56 +-
.../src/airflow/ui/public/i18n/locales/ar/dag.json | 30 +-
.../airflow/ui/public/i18n/locales/ar/dags.json | 4 +-
.../ui/public/i18n/locales/ar/dashboard.json | 18 +-
.../airflow/ui/public/i18n/locales/ar/hitl.json | 12 +-
.../airflow/ui/public/i18n/locales/ca/admin.json | 4 +-
.../airflow/ui/public/i18n/locales/ca/assets.json | 3 +-
.../airflow/ui/public/i18n/locales/ca/browse.json | 30 +
.../airflow/ui/public/i18n/locales/ca/common.json | 54 +-
.../ui/public/i18n/locales/ca/components.json | 55 +-
.../src/airflow/ui/public/i18n/locales/ca/dag.json | 88 +-
.../airflow/ui/public/i18n/locales/ca/dags.json | 33 +-
.../ui/public/i18n/locales/ca/dashboard.json | 27 +-
.../airflow/ui/public/i18n/locales/ca/hitl.json | 8 +-
.../airflow/ui/public/i18n/locales/de/admin.json | 4 +-
.../airflow/ui/public/i18n/locales/de/browse.json | 4 +-
.../airflow/ui/public/i18n/locales/de/common.json | 16 +-
.../ui/public/i18n/locales/de/components.json | 40 +-
.../src/airflow/ui/public/i18n/locales/de/dag.json | 24 +-
.../airflow/ui/public/i18n/locales/de/dags.json | 4 +-
.../ui/public/i18n/locales/de/dashboard.json | 12 +-
.../airflow/ui/public/i18n/locales/de/hitl.json | 8 +-
.../airflow/ui/public/i18n/locales/el/admin.json | 19 +-
.../airflow/ui/public/i18n/locales/el/assets.json | 16 +-
.../airflow/ui/public/i18n/locales/el/browse.json | 32 +
.../airflow/ui/public/i18n/locales/el/common.json | 143 +-
.../ui/public/i18n/locales/el/components.json | 70 +-
.../src/airflow/ui/public/i18n/locales/el/dag.json | 101 +-
.../airflow/ui/public/i18n/locales/el/dags.json | 49 +-
.../ui/public/i18n/locales/el/dashboard.json | 27 +-
.../airflow/ui/public/i18n/locales/el/hitl.json | 8 +-
.../airflow/ui/public/i18n/locales/en/admin.json | 4 +-
.../airflow/ui/public/i18n/locales/en/browse.json | 2 +-
.../airflow/ui/public/i18n/locales/en/common.json | 20 +-
.../ui/public/i18n/locales/en/components.json | 30 +-
.../src/airflow/ui/public/i18n/locales/en/dag.json | 71 +-
.../airflow/ui/public/i18n/locales/en/dags.json | 9 +-
.../ui/public/i18n/locales/en/dashboard.json | 14 +-
.../airflow/ui/public/i18n/locales/en/hitl.json | 8 +-
.../airflow/ui/public/i18n/locales/es/admin.json | 4 +-
.../airflow/ui/public/i18n/locales/es/common.json | 16 +-
.../ui/public/i18n/locales/es/components.json | 28 +-
.../src/airflow/ui/public/i18n/locales/es/dag.json | 20 +-
.../airflow/ui/public/i18n/locales/es/dags.json | 4 +-
.../ui/public/i18n/locales/es/dashboard.json | 10 +-
.../airflow/ui/public/i18n/locales/es/hitl.json | 8 +-
.../airflow/ui/public/i18n/locales/fr/admin.json | 8 +-
.../airflow/ui/public/i18n/locales/fr/browse.json | 6 +-
.../airflow/ui/public/i18n/locales/fr/common.json | 20 +-
.../ui/public/i18n/locales/fr/components.json | 60 +-
.../src/airflow/ui/public/i18n/locales/fr/dag.json | 34 +-
.../airflow/ui/public/i18n/locales/fr/dags.json | 4 +-
.../ui/public/i18n/locales/fr/dashboard.json | 20 +-
.../airflow/ui/public/i18n/locales/fr/hitl.json | 10 +-
.../airflow/ui/public/i18n/locales/he/admin.json | 4 +-
.../airflow/ui/public/i18n/locales/he/common.json | 14 +-
.../ui/public/i18n/locales/he/components.json | 22 +-
.../src/airflow/ui/public/i18n/locales/he/dag.json | 22 +-
.../airflow/ui/public/i18n/locales/he/dags.json | 4 +-
.../ui/public/i18n/locales/he/dashboard.json | 10 +-
.../airflow/ui/public/i18n/locales/he/hitl.json | 10 +-
.../airflow/ui/public/i18n/locales/hi/admin.json | 4 +-
.../airflow/ui/public/i18n/locales/hi/common.json | 12 +-
.../ui/public/i18n/locales/hi/components.json | 26 +-
.../src/airflow/ui/public/i18n/locales/hi/dag.json | 20 +-
.../airflow/ui/public/i18n/locales/hi/dags.json | 4 +-
.../ui/public/i18n/locales/hi/dashboard.json | 10 +-
.../airflow/ui/public/i18n/locales/hi/hitl.json | 8 +-
.../airflow/ui/public/i18n/locales/hu/admin.json | 4 +-
.../airflow/ui/public/i18n/locales/hu/common.json | 12 +-
.../ui/public/i18n/locales/hu/components.json | 28 +-
.../src/airflow/ui/public/i18n/locales/hu/dag.json | 20 +-
.../airflow/ui/public/i18n/locales/hu/dags.json | 4 +-
.../ui/public/i18n/locales/hu/dashboard.json | 6 +-
.../airflow/ui/public/i18n/locales/hu/hitl.json | 4 +-
.../airflow/ui/public/i18n/locales/it/admin.json | 8 +-
.../airflow/ui/public/i18n/locales/it/common.json | 4 +-
.../ui/public/i18n/locales/it/components.json | 44 +-
.../src/airflow/ui/public/i18n/locales/it/dag.json | 6 +-
.../airflow/ui/public/i18n/locales/it/dags.json | 4 +-
.../ui/public/i18n/locales/it/dashboard.json | 6 +-
.../airflow/ui/public/i18n/locales/it/hitl.json | 6 +-
.../airflow/ui/public/i18n/locales/ja/admin.json | 4 +-
.../airflow/ui/public/i18n/locales/ja/common.json | 4 +-
.../ui/public/i18n/locales/ja/components.json | 24 +-
.../src/airflow/ui/public/i18n/locales/ja/dag.json | 4 +-
.../airflow/ui/public/i18n/locales/ja/dags.json | 4 +-
.../ui/public/i18n/locales/ja/dashboard.json | 4 +-
.../airflow/ui/public/i18n/locales/ja/hitl.json | 4 +-
.../airflow/ui/public/i18n/locales/ko/admin.json | 5 +-
.../airflow/ui/public/i18n/locales/ko/assets.json | 1 +
.../airflow/ui/public/i18n/locales/ko/browse.json | 2 +-
.../airflow/ui/public/i18n/locales/ko/common.json | 58 +-
.../ui/public/i18n/locales/ko/components.json | 44 +-
.../src/airflow/ui/public/i18n/locales/ko/dag.json | 135 +-
.../airflow/ui/public/i18n/locales/ko/dags.json | 35 +-
.../ui/public/i18n/locales/ko/dashboard.json | 14 +-
.../airflow/ui/public/i18n/locales/ko/hitl.json | 8 +-
.../airflow/ui/public/i18n/locales/nl/admin.json | 4 +-
.../airflow/ui/public/i18n/locales/nl/common.json | 12 +-
.../ui/public/i18n/locales/nl/components.json | 26 +-
.../src/airflow/ui/public/i18n/locales/nl/dag.json | 20 +-
.../airflow/ui/public/i18n/locales/nl/dags.json | 4 +-
.../ui/public/i18n/locales/nl/dashboard.json | 6 +-
.../airflow/ui/public/i18n/locales/nl/hitl.json | 8 +-
.../airflow/ui/public/i18n/locales/pl/admin.json | 13 +-
.../airflow/ui/public/i18n/locales/pl/assets.json | 1 +
.../airflow/ui/public/i18n/locales/pl/browse.json | 6 +-
.../airflow/ui/public/i18n/locales/pl/common.json | 68 +-
.../ui/public/i18n/locales/pl/components.json | 91 +-
.../src/airflow/ui/public/i18n/locales/pl/dag.json | 108 +-
.../airflow/ui/public/i18n/locales/pl/dags.json | 25 +-
.../ui/public/i18n/locales/pl/dashboard.json | 35 +-
.../airflow/ui/public/i18n/locales/pl/hitl.json | 12 +-
.../airflow/ui/public/i18n/locales/pt/admin.json | 8 +-
.../airflow/ui/public/i18n/locales/pt/common.json | 10 +-
.../ui/public/i18n/locales/pt/components.json | 44 +-
.../src/airflow/ui/public/i18n/locales/pt/dag.json | 6 +-
.../airflow/ui/public/i18n/locales/pt/dags.json | 4 +-
.../ui/public/i18n/locales/pt/dashboard.json | 6 +-
.../airflow/ui/public/i18n/locales/pt/hitl.json | 6 +-
.../airflow/ui/public/i18n/locales/ru/admin.json | 12 +-
.../airflow/ui/public/i18n/locales/ru/common.json | 16 +-
.../ui/public/i18n/locales/ru/components.json | 58 +-
.../src/airflow/ui/public/i18n/locales/ru/dag.json | 36 +-
.../airflow/ui/public/i18n/locales/ru/dags.json | 4 +-
.../ui/public/i18n/locales/ru/dashboard.json | 18 +-
.../airflow/ui/public/i18n/locales/ru/hitl.json | 12 +-
.../airflow/ui/public/i18n/locales/th/admin.json | 4 +-
.../airflow/ui/public/i18n/locales/th/common.json | 4 +-
.../ui/public/i18n/locales/th/components.json | 16 +-
.../src/airflow/ui/public/i18n/locales/th/dag.json | 4 +-
.../airflow/ui/public/i18n/locales/th/dags.json | 4 +-
.../ui/public/i18n/locales/th/dashboard.json | 4 +-
.../airflow/ui/public/i18n/locales/th/hitl.json | 4 +-
.../airflow/ui/public/i18n/locales/tr/admin.json | 4 +-
.../airflow/ui/public/i18n/locales/tr/common.json | 12 +-
.../ui/public/i18n/locales/tr/components.json | 26 +-
.../src/airflow/ui/public/i18n/locales/tr/dag.json | 20 +-
.../airflow/ui/public/i18n/locales/tr/dags.json | 4 +-
.../ui/public/i18n/locales/tr/dashboard.json | 6 +-
.../airflow/ui/public/i18n/locales/tr/hitl.json | 4 +-
.../ui/public/i18n/locales/zh-CN/admin.json | 4 +-
.../ui/public/i18n/locales/zh-CN/common.json | 12 +-
.../ui/public/i18n/locales/zh-CN/components.json | 26 +-
.../airflow/ui/public/i18n/locales/zh-CN/dag.json | 14 +-
.../airflow/ui/public/i18n/locales/zh-CN/dags.json | 4 +-
.../ui/public/i18n/locales/zh-CN/dashboard.json | 6 +-
.../airflow/ui/public/i18n/locales/zh-CN/hitl.json | 8 +-
.../ui/public/i18n/locales/zh-TW/admin.json | 4 +-
.../ui/public/i18n/locales/zh-TW/browse.json | 2 +-
.../ui/public/i18n/locales/zh-TW/common.json | 23 +-
.../ui/public/i18n/locales/zh-TW/components.json | 30 +-
.../airflow/ui/public/i18n/locales/zh-TW/dag.json | 22 +-
.../airflow/ui/public/i18n/locales/zh-TW/dags.json | 11 +-
.../ui/public/i18n/locales/zh-TW/dashboard.json | 12 +-
.../airflow/ui/public/i18n/locales/zh-TW/hitl.json | 8 +-
.../components/ActionAccordion/ActionAccordion.tsx | 6 +-
.../ui/src/components/ActionAccordion/columns.tsx | 16 +-
.../ui/src/components/AssetProgressCell.test.tsx | 70 +
.../ui/src/components/AssetProgressCell.tsx | 15 +-
.../ui/src/components/Breadcrumb/CrumbSwitcher.tsx | 85 +
.../airflow/ui/src/components/Breadcrumb/index.ts | 1 +
.../TaskInstance/ClearGroupTaskInstanceDialog.tsx | 1 -
.../ClearTaskInstanceConfirmationDialog.tsx | 33 +-
.../TaskInstance/ClearTaskInstanceDialog.test.tsx | 357 ++++-
.../Clear/TaskInstance/ClearTaskInstanceDialog.tsx | 383 +++--
.../DagActions/RunBackfillForm.dateRange.test.tsx | 118 ++
.../ui/src/components/DataTable/DataTable.test.tsx | 15 +-
.../ui/src/components/DurationChart.test.tsx | 36 +-
.../airflow/ui/src/components/DurationChart.tsx | 10 +-
.../ui/src/components/Graph/TaskLink.test.tsx | 6 +-
.../airflow/ui/src/components/Graph/TaskLink.tsx | 11 +-
.../airflow/ui/src/components/Graph/TaskNode.tsx | 4 +
.../ui/src/components/Graph/elkGraphUtils.ts | 6 +
.../ui/src/components/Graph/reactflowUtils.ts | 2 +
.../TaskInstance/MarkTaskInstanceAsDialog.test.tsx | 61 +-
.../TaskInstance/MarkTaskInstanceAsDialog.tsx | 14 +-
.../src/airflow/ui/src/components/SearchSelect.tsx | 117 ++
.../ui/src/components/TaskInstanceTooltip.test.tsx | 1 +
.../ui/src/components/TaskInstanceTooltip.tsx | 31 +-
.../src/airflow/ui/src/components/TaskName.tsx | 17 +-
.../ui/src/components/TaskTrySelect.test.tsx | 18 +-
.../airflow/ui/src/components/TaskTrySelect.tsx | 31 +-
.../src/airflow/ui/src/constants/localStorage.ts | 2 -
.../src/airflow/ui/src/constants/searchParams.ts | 8 +
.../ui/src/hooks/useHITLReviewTabs.test.tsx | 58 +
.../src/airflow/ui/src/hooks/useHITLReviewTabs.ts | 26 +-
.../src/airflow/ui/src/hooks/useLoopRuleStats.tsx | 61 +
.../ui/src/hooks/usePluginAppliesToContext.test.ts | 62 +-
.../ui/src/hooks/usePluginAppliesToContext.ts | 53 +-
.../airflow/ui/src/hooks/useRequiredActionTabs.ts | 55 +-
.../ui/src/hooks/useSelectedVersion.test.tsx | 73 +
.../src/airflow/ui/src/hooks/useSelectedVersion.ts | 3 +
.../useTaskInstanceCoordinates.ts} | 21 +-
.../ui/src/hooks/useTaskInstanceView.test.ts | 97 ++
.../airflow/ui/src/hooks/useTaskInstanceView.ts | 68 +
airflow-core/src/airflow/ui/src/i18n/config.ts | 10 +
.../src/airflow/ui/src/i18n/locales.test.ts | 101 ++
.../ui/src/layouts/Details/DagBreadcrumb.test.tsx | 89 ++
.../ui/src/layouts/Details/DagBreadcrumb.tsx | 50 +-
.../src/layouts/Details/DagRunSwitcherButton.tsx | 89 ++
.../ui/src/layouts/Details/DagSwitcherButton.tsx | 75 +-
.../airflow/ui/src/layouts/Details/Gantt/Gantt.tsx | 1 -
.../layouts/Details/Gantt/GanttTimeline.test.tsx | 120 +-
.../ui/src/layouts/Details/Gantt/GanttTimeline.tsx | 20 +-
.../ui/src/layouts/Details/Gantt/utils.test.ts | 122 +-
.../airflow/ui/src/layouts/Details/Gantt/utils.ts | 50 +-
.../airflow/ui/src/layouts/Details/Grid/Bar.tsx | 3 +-
.../ui/src/layouts/Details/Grid/GridButton.tsx | 4 +-
.../ui/src/layouts/Details/Grid/GridTI.test.tsx | 13 +
.../airflow/ui/src/layouts/Details/Grid/GridTI.tsx | 10 +-
.../layouts/Details/Grid/TaskInstancesColumn.tsx | 1 +
.../ui/src/layouts/Details/Grid/TaskNames.tsx | 5 +-
.../ui/src/layouts/Details/SearchDagRuns.test.tsx | 215 +++
.../ui/src/layouts/Details/SearchDagRuns.tsx | 129 ++
.../Details}/SearchDags.test.tsx | 2 +-
.../SearchDags => layouts/Details}/SearchDags.tsx | 67 +-
.../ui/src/layouts/Details/searchOptions.test.ts | 50 +
.../ui/src/layouts/Details/searchOptions.ts | 66 +
.../Asset/AssetStateStore/AssetStateStore.test.tsx | 123 ++
.../Asset/AssetStateStore/AssetStateStore.tsx | 14 +-
.../Dag/Calendar/Calendar.failedView.test.tsx | 140 ++
.../ui/src/pages/Dag/Calendar/Calendar.test.tsx | 153 ++
.../airflow/ui/src/pages/Dag/Calendar/Calendar.tsx | 53 +-
.../airflow/ui/src/pages/Dag/Code/Code.test.tsx | 72 +
.../ui/src/pages/Dag/RequiredActionsRoute.test.tsx | 54 +
.../airflow/ui/src/pages/Dag/Tasks/Tasks.test.tsx | 114 ++
.../ui/src/pages/Dag/Versions/VersionDiff.test.tsx | 4 +-
.../ui/src/pages/DagsList/DagsList.test.tsx | 29 +
.../src/pages/DagsList/PartitionScheduleModal.tsx | 1 +
.../airflow/ui/src/pages/Events/Events.test.tsx | 61 +
.../src/airflow/ui/src/pages/Events/Events.tsx | 8 +-
.../pages/GroupTaskInstance/GroupTaskInstance.tsx | 1 +
.../GroupTaskInstance/GroupTaskInstances.test.tsx | 93 ++
.../pages/GroupTaskInstance/GroupTaskInstances.tsx | 47 +
.../ui/src/pages/GroupTaskInstance/Header.tsx | 19 +
.../LoopIterations/IterationSelect.test.tsx | 107 ++
.../LoopIterations/IterationSelect.tsx | 155 ++
.../GroupTaskInstance/LoopIterations}/index.ts | 3 +-
.../LoopIterations/loopUtils.test.ts | 110 ++
.../GroupTaskInstance/LoopIterations/loopUtils.ts | 58 +
.../ui/src/pages/GroupTaskInstance/index.ts | 2 +-
.../GroupTaskInstance/useLoopOutcomeStats.tsx | 74 +
.../pages/HITLTaskInstances/HITLResponseForm.tsx | 2 +
.../src/airflow/ui/src/pages/ReactPlugin.test.tsx | 28 +-
.../src/airflow/ui/src/pages/ReactPlugin.tsx | 4 +
.../airflow/ui/src/pages/Run/Execution.test.tsx | 512 ++++++
.../src/airflow/ui/src/pages/Run/Execution.tsx | 325 ++++
airflow-core/src/airflow/ui/src/pages/Run/Run.tsx | 1 +
.../airflow/ui/src/pages/Task/GroupTaskHeader.tsx | 7 +-
.../pages/Task/Overview/LoopHistoryChart.test.tsx | 129 ++
.../src/pages/Task/Overview/LoopHistoryChart.tsx | 137 ++
.../ui/src/pages/Task/Overview/Overview.test.tsx | 43 +-
.../ui/src/pages/Task/Overview/Overview.tsx | 9 +-
.../ui/src/pages/TaskInstance/AssetEvents.test.tsx | 61 +
.../ui/src/pages/TaskInstance/AssetEvents.tsx | 8 +-
.../ui/src/pages/TaskInstance/BlockingDeps.tsx | 2 +
.../ui/src/pages/TaskInstance/Details.test.tsx | 19 +-
.../airflow/ui/src/pages/TaskInstance/Details.tsx | 64 +-
.../ui/src/pages/TaskInstance/ExtraLinks.test.tsx | 20 +-
.../ui/src/pages/TaskInstance/ExtraLinks.tsx | 3 +
.../ui/src/pages/TaskInstance/HITLResponse.tsx | 4 +
.../ui/src/pages/TaskInstance/Header.test.tsx | 32 +-
.../airflow/ui/src/pages/TaskInstance/Header.tsx | 24 +-
.../pages/TaskInstance/Logs/ExternalLogLink.tsx | 6 +-
.../ui/src/pages/TaskInstance/Logs/Logs.test.tsx | 62 +-
.../ui/src/pages/TaskInstance/Logs/Logs.tsx | 28 +-
.../pages/TaskInstance/Logs/LogsTryNumber.test.tsx | 25 +
.../src/pages/TaskInstance/Logs/TaskLogHeader.tsx | 6 +-
.../src/pages/TaskInstance/RenderedTemplates.tsx | 3 +
.../src/pages/TaskInstance/TaskInstance.test.tsx | 253 ++-
.../ui/src/pages/TaskInstance/TaskInstance.tsx | 116 +-
.../TaskInstances/BulkClearTaskInstancesButton.tsx | 126 +-
.../BulkDeleteTaskInstancesButton.tsx | 3 +
.../BulkMarkTaskInstancesAsButton.tsx | 13 +-
.../DeleteTaskInstanceButton.test.tsx | 58 +
.../TaskInstances/DeleteTaskInstanceButton.tsx | 3 +
.../src/pages/TaskInstances/TaskInstances.test.tsx | 88 +-
.../ui/src/pages/TaskInstances/TaskInstances.tsx | 50 +-
.../ClearAllTaskStateStoreButton.tsx | 4 +-
.../TaskStateStore/DeleteTaskStateStoreButton.tsx | 4 +-
.../pages/TaskStateStore/TaskStateStore.test.tsx | 114 ++
.../ui/src/pages/TaskStateStore/TaskStateStore.tsx | 4 +
.../TaskStateStore/TaskStateStoreModal.test.tsx | 81 +
.../pages/TaskStateStore/TaskStateStoreModal.tsx | 5 +-
.../airflow/ui/src/pages/XCom/AddXComButton.tsx | 4 +
.../airflow/ui/src/pages/XCom/DeleteXComButton.tsx | 2 +
.../airflow/ui/src/pages/XCom/EditXComButton.tsx | 2 +
.../src/airflow/ui/src/pages/XCom/XCom.test.tsx | 80 +
.../src/airflow/ui/src/pages/XCom/XCom.tsx | 24 +-
.../airflow/ui/src/pages/XCom/XComEntry.test.tsx | 72 +-
.../src/airflow/ui/src/pages/XCom/XComEntry.tsx | 34 +-
.../airflow/ui/src/pages/XCom/XComModal.test.tsx | 82 +
.../src/airflow/ui/src/pages/XCom/XComModal.tsx | 21 +-
.../airflow/ui/src/queries/gridViewQueryKeys.ts | 4 +
.../airflow/ui/src/queries/useBulkClearDryRun.ts | 114 --
.../ui/src/queries/useBulkClearTaskInstances.ts | 133 --
.../ui/src/queries/useBulkMarkAsDryRun.test.tsx | 76 +
.../airflow/ui/src/queries/useBulkMarkAsDryRun.ts | 4 +-
.../ui/src/queries/useClearTaskInstances.test.tsx | 82 +
.../ui/src/queries/useClearTaskInstances.ts | 38 +-
.../queries/useClearTaskInstancesDryRun.test.tsx | 88 +
.../ui/src/queries/useClearTaskInstancesDryRun.ts | 57 +-
.../{utils/option.ts => queries/useIsLoopGroup.ts} | 20 +-
.../src/airflow/ui/src/queries/useLogs.test.ts | 44 +-
.../src/airflow/ui/src/queries/useLogs.tsx | 22 +-
.../index.ts => queries/useLoopHistory.ts} | 7 +-
.../airflow/ui/src/queries/useLoopSummary.test.tsx | 93 ++
.../src/airflow/ui/src/queries/useLoopSummary.ts | 77 +
.../ui/src/queries/usePatchTaskInstance.test.tsx | 60 +
.../airflow/ui/src/queries/usePatchTaskInstance.ts | 6 +-
.../ui/src/queries/usePatchTaskInstanceDryRun.ts | 2 +
.../ui/src/queries/useTaskInstanceNote.test.tsx | 54 +
.../airflow/ui/src/queries/useTaskInstanceNote.ts | 2 +-
.../airflow/ui/src/queries/useUpdateHITLDetail.ts | 6 +
airflow-core/src/airflow/ui/src/router.tsx | 6 +-
.../airflow/ui/src/utils/executionParams.test.ts | 18 +-
.../ui/src/utils/{option.ts => executionParams.ts} | 28 +-
.../src/airflow/ui/src/utils/links.test.ts | 15 +
airflow-core/src/airflow/ui/src/utils/links.ts | 18 +-
.../index.ts => utils/loopTaskInstance.ts} | 4 +-
airflow-core/src/airflow/ui/src/utils/option.ts | 4 +
.../airflow/ui/src/utils/pluginAppliesTo.test.ts | 7 +-
.../src/airflow/ui/tests/e2e/fixtures/pom.ts | 5 -
.../src/airflow/ui/tests/e2e/pages/BackfillPage.ts | 30 -
.../airflow/ui/tests/e2e/pages/DagCalendarTab.ts | 47 +-
.../src/airflow/ui/tests/e2e/pages/DagCodePage.ts | 20 -
.../airflow/ui/tests/e2e/pages/DagDetailPage.ts | 49 -
.../src/airflow/ui/tests/e2e/pages/DagRunPage.ts | 8 +-
.../src/airflow/ui/tests/e2e/pages/DagRunsPage.ts | 32 -
.../airflow/ui/tests/e2e/pages/DagRunsTabPage.ts | 33 -
.../src/airflow/ui/tests/e2e/pages/DagsPage.ts | 115 --
.../src/airflow/ui/tests/e2e/pages/XComsPage.ts | 14 -
.../src/airflow/ui/tests/e2e/specs/asset.spec.ts | 17 +-
.../airflow/ui/tests/e2e/specs/backfill.spec.ts | 64 -
.../airflow/ui/tests/e2e/specs/dag-bundles.spec.ts | 37 +-
.../ui/tests/e2e/specs/dag-calendar-tab.spec.ts | 75 +-
.../ui/tests/e2e/specs/dag-code-tab.spec.ts | 8 -
.../airflow/ui/tests/e2e/specs/dag-detail.spec.ts | 43 -
.../src/airflow/ui/tests/e2e/specs/dag-run.spec.ts | 13 +-
.../ui/tests/e2e/specs/dag-runs-tab.spec.ts | 30 +-
.../airflow/ui/tests/e2e/specs/dag-runs.spec.ts | 10 -
.../airflow/ui/tests/e2e/specs/dag-tasks.spec.ts | 102 --
.../airflow/ui/tests/e2e/specs/dags-list.spec.ts | 67 +-
.../src/airflow/ui/tests/e2e/specs/plugins.spec.ts | 35 +-
.../airflow/ui/tests/e2e/specs/providers.spec.ts | 19 +-
.../ui/tests/e2e/specs/task-instances.spec.ts | 5 -
.../airflow/ui/tests/e2e/specs/task-logs.spec.ts | 66 +-
.../src/airflow/ui/tests/e2e/specs/xcoms.spec.ts | 20 +-
airflow-core/src/airflow/utils/db.py | 5 +-
airflow-core/src/airflow/utils/db_cleanup.py | 8 +-
.../src/airflow/utils/log/file_task_handler.py | 42 +-
.../src/airflow/utils/log/task_log_address.py | 268 ++++
airflow-core/src/airflow/utils/sqlalchemy.py | 57 +-
.../tests/unit/always/test_project_structure.py | 4 +-
.../unit/api_fastapi/common/test_parameters.py | 12 +
.../routes/public/test_asset_state_store.py | 55 +
.../core_api/routes/public/test_assets.py | 61 +
.../core_api/routes/public/test_dag_run.py | 212 ++-
.../core_api/routes/public/test_dag_warning.py | 6 +-
.../core_api/routes/public/test_event_logs.py | 205 ++-
.../core_api/routes/public/test_execution.py | 177 ++
.../core_api/routes/public/test_extra_links.py | 111 +-
.../core_api/routes/public/test_hitl.py | 140 ++
.../api_fastapi/core_api/routes/public/test_log.py | 129 +-
.../core_api/routes/public/test_task_instances.py | 1546 +++++++++++++++++-
.../routes/public/test_task_state_store.py | 143 +-
.../core_api/routes/public/test_xcom.py | 164 +-
.../api_fastapi/core_api/routes/test_routes.py | 22 +
.../core_api/routes/ui/test_execution.py | 82 +
.../api_fastapi/core_api/routes/ui/test_gantt.py | 47 +
.../api_fastapi/core_api/routes/ui/test_grid.py | 461 +++++-
.../routes/ui/test_partitioned_dag_runs.py | 48 +-
.../core_api/routes/ui/test_structure.py | 50 +
.../core_api/services/ui/test_execution.py | 72 +
.../unit/api_fastapi/execution_api/test_app.py | 47 +-
.../api_fastapi/execution_api/test_in_process.py | 60 +
.../versions/head/test_asset_state_store.py | 52 +
.../versions/head/test_task_instances.py | 1691 ++++++++++++++++++--
.../versions/head/test_task_state_store.py | 27 +-
.../execution_api/versions/head/test_xcoms.py | 682 +++++++-
.../versions/v2026_10_30/test_task_instances.py | 61 +-
.../unit/api_fastapi/logging/test_decorators.py | 67 +
airflow-core/tests/unit/api_fastapi/test_app.py | 2 +-
airflow-core/tests/unit/assets/test_manager.py | 43 +-
.../tests/unit/callbacks/test_callback_requests.py | 13 +-
.../tests/unit/cli/commands/test_dag_command.py | 40 +-
.../unit/cli/commands/test_partition_command.py | 53 +-
.../unit/cli/commands/test_standalone_command.py | 51 +
.../unit/cli/commands/test_state_store_command.py | 10 +-
.../tests/unit/cli/commands/test_task_command.py | 283 +++-
.../lang_sdk_fixtures/go_native.json | 4 +-
.../tests/unit/dag_processing/test_collection.py | 88 +-
.../tests/unit/dag_processing/test_dagbag.py | 86 +-
.../tests/unit/dag_processing/test_processor.py | 37 +-
.../tests/unit/executors/test_base_executor.py | 11 +
.../tests/unit/executors/test_local_executor.py | 32 +
.../tests/unit/executors/test_workloads.py | 159 +-
airflow-core/tests/unit/jobs/test_scheduler_job.py | 782 ++++++++-
airflow-core/tests/unit/jobs/test_triggerer_job.py | 44 +-
.../test_0143_add_dynamic_region_storage.py | 231 +++
.../test_0144_rename_stored_map_index.py | 324 ++++
airflow-core/tests/unit/models/conftest.py | 113 ++
airflow-core/tests/unit/models/test_asset.py | 87 +-
airflow-core/tests/unit/models/test_cleartasks.py | 868 +++++++++-
airflow-core/tests/unit/models/test_dag.py | 63 +-
airflow-core/tests/unit/models/test_dagrun.py | 922 ++++++++++-
.../tests/unit/models/test_dynamic_region.py | 885 ++++++++++
airflow-core/tests/unit/models/test_log.py | 92 +-
.../tests/unit/models/test_mappedoperator.py | 414 ++++-
.../tests/unit/models/test_task_coordinates.py | 635 ++++++++
airflow-core/tests/unit/models/test_task_data.py | 22 +-
.../tests/unit/models/test_task_state_store.py | 18 +-
.../tests/unit/models/test_taskinstance.py | 558 ++++++-
airflow-core/tests/unit/models/test_xcom_arg.py | 242 +++
.../tests/unit/plugins/test_plugins_manager.py | 158 +-
.../unit/serialization/definitions/test_assets.py | 19 +
.../unit/serialization/test_dag_serialization.py | 104 +-
.../unit/serialization/test_dag_version_diff.py | 31 +
.../tests/unit/serialization/test_decoders.py | 84 +
airflow-core/tests/unit/state/test_metastore.py | 136 ++
.../ti_deps/deps/test_mapped_task_upstream_dep.py | 33 +-
.../ti_deps/deps/test_ready_to_reschedule_dep.py | 28 +
.../unit/ti_deps/deps/test_trigger_rule_dep.py | 295 +++-
.../tests/unit/timetables/test_assets_timetable.py | 144 +-
.../unit/timetables/test_partitioned_timetable.py | 54 +-
.../tests/unit/utils/log/test_task_log_address.py | 362 +++++
airflow-core/tests/unit/utils/test_db.py | 20 +
airflow-core/tests/unit/utils/test_db_cleanup.py | 49 +-
airflow-core/tests/unit/utils/test_log_handlers.py | 1 +
airflow-core/tests/unit/utils/test_sqlalchemy.py | 62 +-
airflow-core/tests/unit/utils/test_task_group.py | 134 ++
.../src/airflowctl/api/datamodels/generated.py | 75 +
airflow-ctl/src/airflowctl/ctl/cli_config.py | 30 +-
.../tests/airflow_ctl/api/test_operations.py | 2 +
.../airflow_ctl/ctl/commands/test_task_command.py | 3 +
.../tests/airflow_ctl/ctl/test_cli_config.py | 60 +-
airflow-e2e-tests/docker/go.yml | 7 +
airflow-e2e-tests/docker/java.yml | 10 +-
airflow-e2e-tests/docker/ts.yml | 12 +
.../.gitignore | 0
.../java-native-bundle/build.gradle | 38 +-
.../gradle.properties | 0
.../java-native-bundle/settings.gradle | 22 +-
.../apache/airflow/e2e/NativeBundleBuilder.java | 150 ++
.../airflow/e2e/nativedag/AnnotationDag.java | 106 ++
.../apache/airflow/e2e/nativedag/TargetDag.java | 33 +-
.../tests/airflow_e2e_tests/conftest.py | 102 +-
.../tests/airflow_e2e_tests/constants.py | 8 +
.../airflow_e2e_tests/e2e_test_utils/clients.py | 76 +-
.../go_sdk_tests/test_go_sdk_native_dag.py | 220 +++
.../java_sdk_tests/test_java_sdk_native_dag.py | 215 +++
.../ts_sdk_tests/test_ts_sdk_dag.py | 65 +-
.../ts_sdk_tests/test_ts_sdk_hitl.py | 200 +++
.../ts_sdk_tests/test_ts_sdk_native_dag.py | 253 +++
.../03a_contributors_quick_start_beginners.rst | 31 +-
dev/README_RELEASE_AIRFLOW.md | 24 +
dev/breeze/doc/05_test_commands.rst | 10 +-
dev/breeze/doc/09_release_management_tasks.rst | 14 +
dev/breeze/doc/ci/04_selective_checks.md | 28 +-
dev/breeze/doc/images/output_k8s.svg | 26 +-
dev/breeze/doc/images/output_k8s.txt | 2 +-
.../doc/images/output_k8s_run-complete-tests.svg | 6 +-
.../doc/images/output_k8s_run-complete-tests.txt | 2 +-
.../doc/images/output_k8s_setup-lang-sdk-test.svg | 28 +-
.../doc/images/output_k8s_setup-lang-sdk-test.txt | 2 +-
.../doc/images/output_release-management.svg | 120 +-
.../doc/images/output_release-management.txt | 2 +-
...utput_release-management_start-beta-process.svg | 138 ++
...utput_release-management_start-beta-process.txt | 1 +
.../output_setup_check-all-params-in-groups.svg | 48 +-
.../output_setup_check-all-params-in-groups.txt | 2 +-
.../output_setup_regenerate-command-images.svg | 56 +-
.../output_setup_regenerate-command-images.txt | 2 +-
.../airflow_breeze/commands/kubernetes_commands.py | 531 +++---
.../commands/kubernetes_commands_config.py | 3 +-
.../commands/release_candidate_command.py | 140 +-
.../commands/release_management_commands_config.py | 11 +
.../src/airflow_breeze/commands/ui_commands.py | 8 +-
.../airflow_breeze/utils/release_constraints.py | 10 +-
.../src/airflow_breeze/utils/selective_checks.py | 34 +-
.../src/airflow_breeze/utils/verification_plan.py | 1 +
.../tests/test_kubernetes_lang_sdk_commands.py | 196 ++-
dev/breeze/tests/test_release_candidate_command.py | 88 +-
dev/breeze/tests/test_release_constraints.py | 1 +
dev/breeze/tests/test_selective_checks.py | 93 +-
dev/breeze/tests/test_ui_commands.py | 9 +
dev/breeze/uv.lock | 48 +-
.../react_plugin_template/package.json | 14 +-
.../react_plugin_template/pnpm-lock.yaml | 406 ++---
dev/sign.sh | 9 +
.../src/sphinx_exts/providers_extensions.py | 34 +-
.../provider_connection_services.rst.jinja2 | 28 +
devel-common/src/tests_common/pytest_plugin.py | 15 +
.../src/tests_common/test_utils/asserts.py | 20 +
.../tests_common/test_utils/attempt_ownership.py | 10 +-
.../src/tests_common/test_utils/taskinstance.py | 8 +-
.../unit/sphinx_exts/test_providers_extensions.py | 57 +
docs/spelling_wordlist.txt | 10 +
go-sdk/README.md | 4 +-
go-sdk/airflow/bundle.go | 13 +-
go-sdk/airflow/bundle_test.go | 59 +-
go-sdk/airflow/conformance_test.go | 7 +
go-sdk/airflow/serialize.go | 36 +-
go-sdk/airflow/serialize_test.go | 56 +-
go-sdk/airflow/spec.gen.go | 3 +-
go-sdk/airflow/trigger_dag_run.go | 82 +-
go-sdk/airflow/trigger_dag_run_test.go | 26 +-
go-sdk/capabilities.yaml | 15 +-
go-sdk/example/native/main.go | 177 ++
go-sdk/example/native/report.go | 35 +
go-sdk/internal/bundle/trigger.go | 64 +
go-sdk/internal/genspec/authoring.go | 4 +-
go-sdk/pkg/execution/client.go | 46 +
go-sdk/pkg/execution/client_test.go | 136 ++
go-sdk/pkg/execution/genmodels/models.gen.go | 191 ++-
go-sdk/pkg/execution/task_runner.go | 38 +-
go-sdk/pkg/execution/trigger_runner.go | 418 +++++
go-sdk/pkg/execution/trigger_runner_test.go | 648 ++++++++
go-sdk/schema/dag-schema.json | 12 +
go-sdk/schema/supervisor-schema.json | 114 ++
java-sdk/README.md | 10 +-
java-sdk/capabilities.yaml | 18 +-
.../airflow/example/ExampleBundleBuilder.java | 3 +-
.../example/nativedag/AnnotationExample.java | 44 +-
.../example/nativedag/InterfaceExample.java | 57 +-
.../airflow/example/nativedag/TargetExample.java | 49 +
java-sdk/plugin/build.gradle.kts | 6 +
.../apache/airflow/sdk/plugin/AirflowSdkPlugin.kt | 78 +-
.../org/apache/airflow/sdk/plugin/ClassFiles.kt | 85 +
.../apache/airflow/sdk/plugin/PackDagSources.kt | 256 +++
.../airflow/sdk/plugin/AirflowSdkPluginTest.kt | 415 +++++
.../apache/airflow/sdk/plugin/ClassFilesTest.kt | 80 +
.../airflow/sdk/plugin/PackDagSourcesTest.kt | 89 ++
.../org/apache/airflow/sdk/plugin/TestSupport.kt | 44 +-
.../org/apache/airflow/sdk/BuilderProcessor.kt | 209 ++-
.../kotlin/org/apache/airflow/sdk/BuilderTest.kt | 692 +++++++-
.../ci/prek/check_serialization_conformance.py | 2 +-
java-sdk/sdk/build.gradle.kts | 69 +
java-sdk/sdk/module.md | 6 +-
java-sdk/sdk/schema/dag-schema.json | 12 +
.../main/kotlin/org/apache/airflow/sdk/Bundle.kt | 27 +-
.../org/apache/airflow/sdk/BundleInspector.kt | 113 ++
.../kotlin/org/apache/airflow/sdk/Condition.kt | 224 +++
.../main/kotlin/org/apache/airflow/sdk/DagDef.kt | 150 +-
.../main/kotlin/org/apache/airflow/sdk/Decider.kt | 90 ++
.../kotlin/org/apache/airflow/sdk/IdValidation.kt | 86 +
.../main/kotlin/org/apache/airflow/sdk/Server.kt | 109 +-
.../main/kotlin/org/apache/airflow/sdk/Switch.kt | 240 +++
.../kotlin/org/apache/airflow/sdk/TaskGroupRef.kt | 81 +
.../kotlin/org/apache/airflow/sdk/TriggerDagRun.kt | 189 +++
.../org/apache/airflow/sdk/execution/Client.kt | 88 +
.../org/apache/airflow/sdk/execution/Logger.kt | 5 +
.../org/apache/airflow/sdk/execution/Serde.kt | 129 +-
.../org/apache/airflow/sdk/execution/Task.kt | 42 +-
.../apache/airflow/sdk/execution/TriggerRunner.kt | 324 ++++
.../org/apache/airflow/sdk/internal/DagSource.kt | 66 +
.../org/apache/airflow/sdk/internal/Fields.kt | 33 +
.../kotlin/org/apache/airflow/sdk/internal/Ids.kt | 10 +
.../apache/airflow/example/DagSourceFixtures.kt | 35 +-
.../org/apache/airflow/sdk/ArgTestSupport.kt | 19 +
.../org/apache/airflow/sdk/BundleInspectorTest.kt | 164 ++
.../kotlin/org/apache/airflow/sdk/ClientTest.kt | 19 +
.../kotlin/org/apache/airflow/sdk/ConditionTest.kt | 208 +++
.../kotlin/org/apache/airflow/sdk/DagSourceTest.kt | 132 ++
.../org/apache/airflow/sdk/IdValidationTest.kt | 105 ++
.../kotlin/org/apache/airflow/sdk/ServerTest.kt | 6 +-
.../kotlin/org/apache/airflow/sdk/SwitchTest.kt | 224 +++
.../org/apache/airflow/sdk/TriggerDagRunTest.kt | 275 ++++
.../airflow/sdk/conformance/SerializeJava.kt | 191 ++-
.../org/apache/airflow/sdk/execution/CommTest.kt | 171 ++
.../org/apache/airflow/sdk/execution/TaskTest.kt | 319 ++++
.../airflow/sdk/execution/TriggerRunnerTest.kt | 473 ++++++
.../apache/airflow/sdk/internal/ArgValuesTest.kt | 19 +
.../org/apache/airflow/sdk/internal/RefsTest.kt | 65 +
kubernetes-tests/lang_sdk/Dockerfile.runtimes | 49 +
kubernetes-tests/lang_sdk/README.md | 145 +-
.../lang_sdk/airflowignore_all | 0
kubernetes-tests/lang_sdk/config/values.yaml | 67 +-
..._sdk_combined.py => lang_sdk_mixed_language.py} | 30 +-
kubernetes-tests/lang_sdk/go_example/main.go | 21 +-
.../airflow/k8sexample/K8sBundleBuilder.java | 4 +-
...binedExample.java => MixedLanguageExample.java} | 16 +-
.../lang_sdk/pod_templates/lang_sdk_golang.yaml | 118 --
.../{lang_sdk_java.yaml => lang_sdk_worker.yaml} | 60 +-
kubernetes-tests/lang_sdk/stage_artifacts.py | 92 --
kubernetes-tests/lang_sdk/ts_example/.gitignore | 3 +
.../lang_sdk/ts_example}/package.json | 5 +-
.../lang_sdk/ts_example/pnpm-lock.yaml | 336 ++++
kubernetes-tests/lang_sdk/ts_example/src/main.ts | 47 +
.../lang_sdk/ts_example}/tsconfig.json | 13 +-
...executor.py => test_lang_sdk_mixed_language.py} | 24 +-
.../kubernetes_tests/test_lang_sdk_native_dag.py | 206 +++
providers/.last_release_date.txt | 2 +-
providers/airbyte/README.rst | 6 +-
providers/airbyte/docs/changelog.rst | 22 +
providers/airbyte/docs/index.rst | 6 +-
providers/airbyte/provider.yaml | 3 +-
providers/airbyte/pyproject.toml | 6 +-
.../src/airflow/providers/airbyte/__init__.py | 2 +-
providers/akeyless/README.rst | 6 +-
providers/akeyless/docs/changelog.rst | 20 +
providers/akeyless/docs/index.rst | 6 +-
providers/akeyless/provider.yaml | 3 +-
providers/akeyless/pyproject.toml | 6 +-
.../src/airflow/providers/akeyless/__init__.py | 2 +-
providers/alibaba/README.rst | 6 +-
providers/alibaba/docs/changelog.rst | 17 +
providers/alibaba/docs/index.rst | 6 +-
providers/alibaba/provider.yaml | 3 +-
providers/alibaba/pyproject.toml | 6 +-
.../src/airflow/providers/alibaba/__init__.py | 2 +-
providers/amazon/README.rst | 12 +-
.../docs/auth-manager/setup/identity-center.rst | 10 +
providers/amazon/docs/changelog.rst | 55 +
providers/amazon/docs/index.rst | 8 +-
providers/amazon/docs/transfer/exasol_to_s3.rst | 63 +
providers/amazon/provider.yaml | 4 +-
providers/amazon/pyproject.toml | 8 +-
.../src/airflow/providers/amazon/__init__.py | 2 +-
.../amazon/aws/auth_manager/routes/login.py | 9 +-
.../providers/amazon/aws/transfers/exasol_to_s3.py | 5 +-
.../airflow/providers/amazon/get_provider_info.py | 1 +
.../system/amazon/aws/example_exasol_to_s3.py | 92 ++
.../amazon/aws/tests/test_aws_auth_manager.py | 65 +-
.../amazon/aws/auth_manager/routes/test_login.py | 27 +-
.../aws/executors/batch/test_batch_executor.py | 31 +-
.../amazon/aws/executors/ecs/test_ecs_executor.py | 31 +-
providers/anthropic/README.rst | 8 +-
providers/anthropic/docs/changelog.rst | 22 +
providers/anthropic/docs/commits.rst | 5 +-
providers/anthropic/docs/index.rst | 8 +-
providers/anthropic/provider.yaml | 3 +-
providers/anthropic/pyproject.toml | 8 +-
.../src/airflow/providers/anthropic/__init__.py | 2 +-
providers/apache/arrow/README.rst | 6 +-
providers/apache/arrow/docs/changelog.rst | 19 +
providers/apache/arrow/docs/commits.rst | 8 +-
providers/apache/arrow/docs/index.rst | 6 +-
providers/apache/arrow/provider.yaml | 3 +-
providers/apache/arrow/pyproject.toml | 6 +-
.../src/airflow/providers/apache/arrow/__init__.py | 2 +-
providers/apache/beam/README.rst | 6 +-
providers/apache/beam/docs/changelog.rst | 17 +
providers/apache/beam/docs/index.rst | 6 +-
providers/apache/beam/provider.yaml | 3 +-
providers/apache/beam/pyproject.toml | 6 +-
.../src/airflow/providers/apache/beam/__init__.py | 2 +-
providers/apache/cassandra/README.rst | 6 +-
providers/apache/cassandra/docs/changelog.rst | 17 +
providers/apache/cassandra/docs/index.rst | 6 +-
providers/apache/cassandra/provider.yaml | 3 +-
providers/apache/cassandra/pyproject.toml | 6 +-
.../airflow/providers/apache/cassandra/__init__.py | 2 +-
providers/apache/drill/README.rst | 6 +-
providers/apache/drill/docs/changelog.rst | 21 +
providers/apache/drill/docs/index.rst | 6 +-
providers/apache/drill/provider.yaml | 3 +-
providers/apache/drill/pyproject.toml | 6 +-
.../src/airflow/providers/apache/drill/__init__.py | 2 +-
providers/apache/druid/README.rst | 6 +-
providers/apache/druid/docs/changelog.rst | 17 +
providers/apache/druid/docs/index.rst | 6 +-
providers/apache/druid/provider.yaml | 3 +-
providers/apache/druid/pyproject.toml | 6 +-
.../src/airflow/providers/apache/druid/__init__.py | 2 +-
providers/apache/flink/README.rst | 6 +-
providers/apache/flink/docs/changelog.rst | 17 +
providers/apache/flink/docs/index.rst | 6 +-
providers/apache/flink/provider.yaml | 3 +-
providers/apache/flink/pyproject.toml | 6 +-
.../src/airflow/providers/apache/flink/__init__.py | 2 +-
providers/apache/hdfs/README.rst | 6 +-
providers/apache/hdfs/docs/changelog.rst | 17 +
providers/apache/hdfs/docs/index.rst | 6 +-
providers/apache/hdfs/provider.yaml | 3 +-
providers/apache/hdfs/pyproject.toml | 6 +-
.../src/airflow/providers/apache/hdfs/__init__.py | 2 +-
providers/apache/hive/README.rst | 8 +-
providers/apache/hive/docs/changelog.rst | 19 +
providers/apache/hive/docs/index.rst | 6 +-
providers/apache/hive/provider.yaml | 3 +-
providers/apache/hive/pyproject.toml | 6 +-
.../src/airflow/providers/apache/hive/__init__.py | 2 +-
providers/apache/iceberg/README.rst | 6 +-
providers/apache/iceberg/docs/changelog.rst | 20 +
providers/apache/iceberg/docs/index.rst | 6 +-
providers/apache/iceberg/provider.yaml | 3 +-
providers/apache/iceberg/pyproject.toml | 6 +-
.../airflow/providers/apache/iceberg/__init__.py | 2 +-
providers/apache/impala/README.rst | 14 +-
providers/apache/impala/docs/changelog.rst | 24 +
providers/apache/impala/docs/index.rst | 6 +-
providers/apache/impala/provider.yaml | 3 +-
providers/apache/impala/pyproject.toml | 6 +-
.../airflow/providers/apache/impala/__init__.py | 2 +-
providers/apache/kafka/README.rst | 6 +-
providers/apache/kafka/docs/changelog.rst | 29 +
providers/apache/kafka/docs/index.rst | 6 +-
providers/apache/kafka/provider.yaml | 3 +-
providers/apache/kafka/pyproject.toml | 6 +-
.../src/airflow/providers/apache/kafka/__init__.py | 2 +-
providers/apache/kylin/README.rst | 6 +-
providers/apache/kylin/docs/changelog.rst | 17 +
providers/apache/kylin/docs/index.rst | 6 +-
providers/apache/kylin/provider.yaml | 3 +-
providers/apache/kylin/pyproject.toml | 6 +-
.../src/airflow/providers/apache/kylin/__init__.py | 2 +-
providers/apache/livy/README.rst | 6 +-
providers/apache/livy/docs/changelog.rst | 19 +
providers/apache/livy/docs/index.rst | 6 +-
providers/apache/livy/provider.yaml | 3 +-
providers/apache/livy/pyproject.toml | 6 +-
.../src/airflow/providers/apache/livy/__init__.py | 2 +-
providers/apache/pig/README.rst | 6 +-
providers/apache/pig/docs/changelog.rst | 17 +
providers/apache/pig/docs/index.rst | 6 +-
providers/apache/pig/provider.yaml | 3 +-
providers/apache/pig/pyproject.toml | 6 +-
.../src/airflow/providers/apache/pig/__init__.py | 2 +-
providers/apache/pinot/README.rst | 6 +-
providers/apache/pinot/docs/changelog.rst | 21 +
providers/apache/pinot/docs/index.rst | 6 +-
providers/apache/pinot/provider.yaml | 3 +-
providers/apache/pinot/pyproject.toml | 6 +-
.../src/airflow/providers/apache/pinot/__init__.py | 2 +-
providers/apache/spark/README.rst | 6 +-
providers/apache/spark/docs/changelog.rst | 27 +
providers/apache/spark/docs/index.rst | 6 +-
providers/apache/spark/provider.yaml | 3 +-
providers/apache/spark/pyproject.toml | 6 +-
.../src/airflow/providers/apache/spark/__init__.py | 2 +-
.../providers/apache/spark/hooks/spark_submit.py | 48 +-
.../unit/apache/spark/hooks/test_spark_submit.py | 491 +++---
providers/apache/tinkerpop/README.rst | 8 +-
providers/apache/tinkerpop/docs/changelog.rst | 17 +
providers/apache/tinkerpop/docs/index.rst | 6 +-
providers/apache/tinkerpop/provider.yaml | 7 +-
providers/apache/tinkerpop/pyproject.toml | 9 +-
.../airflow/providers/apache/tinkerpop/__init__.py | 2 +-
providers/apprise/README.rst | 6 +-
providers/apprise/docs/changelog.rst | 17 +
providers/apprise/docs/index.rst | 6 +-
providers/apprise/provider.yaml | 3 +-
providers/apprise/pyproject.toml | 6 +-
.../src/airflow/providers/apprise/__init__.py | 2 +-
providers/arangodb/README.rst | 6 +-
providers/arangodb/docs/changelog.rst | 17 +
providers/arangodb/docs/index.rst | 6 +-
providers/arangodb/provider.yaml | 3 +-
providers/arangodb/pyproject.toml | 6 +-
.../src/airflow/providers/arangodb/__init__.py | 2 +-
providers/asana/README.rst | 6 +-
providers/asana/docs/changelog.rst | 17 +
providers/asana/docs/index.rst | 6 +-
providers/asana/provider.yaml | 3 +-
providers/asana/pyproject.toml | 6 +-
.../asana/src/airflow/providers/asana/__init__.py | 2 +-
providers/atlassian/jira/README.rst | 6 +-
providers/atlassian/jira/docs/changelog.rst | 17 +
providers/atlassian/jira/docs/index.rst | 6 +-
providers/atlassian/jira/provider.yaml | 3 +-
providers/atlassian/jira/pyproject.toml | 6 +-
.../airflow/providers/atlassian/jira/__init__.py | 2 +-
providers/celery/README.rst | 6 +-
providers/celery/docs/changelog.rst | 28 +
providers/celery/docs/index.rst | 6 +-
providers/celery/provider.yaml | 3 +-
providers/celery/pyproject.toml | 6 +-
.../src/airflow/providers/celery/__init__.py | 2 +-
providers/clickhousedb/README.rst | 6 +-
providers/clickhousedb/docs/changelog.rst | 28 +
providers/clickhousedb/docs/index.rst | 6 +-
providers/clickhousedb/provider.yaml | 3 +-
providers/clickhousedb/pyproject.toml | 6 +-
.../src/airflow/providers/clickhousedb/__init__.py | 2 +-
providers/cloudant/README.rst | 6 +-
providers/cloudant/docs/changelog.rst | 17 +
providers/cloudant/docs/index.rst | 6 +-
providers/cloudant/provider.yaml | 3 +-
providers/cloudant/pyproject.toml | 6 +-
.../src/airflow/providers/cloudant/__init__.py | 2 +-
providers/cncf/kubernetes/README.rst | 6 +-
providers/cncf/kubernetes/docs/changelog.rst | 30 +
providers/cncf/kubernetes/docs/index.rst | 6 +-
providers/cncf/kubernetes/provider.yaml | 3 +-
providers/cncf/kubernetes/pyproject.toml | 6 +-
.../airflow/providers/cncf/kubernetes/__init__.py | 2 +-
.../kubernetes/executors/kubernetes_executor.py | 3 +-
.../executors/test_kubernetes_executor.py | 40 +
.../kubernetes/operators/test_spark_kubernetes.py | 4 +-
providers/cohere/README.rst | 6 +-
providers/cohere/docs/changelog.rst | 17 +
providers/cohere/docs/index.rst | 6 +-
providers/cohere/provider.yaml | 3 +-
providers/cohere/pyproject.toml | 6 +-
.../src/airflow/providers/cohere/__init__.py | 2 +-
providers/common/ai/.pre-commit-config.yaml | 2 +-
providers/common/ai/README.rst | 13 +-
providers/common/ai/docs/agent_security.rst | 14 +-
providers/common/ai/docs/capabilities.rst | 10 +-
providers/common/ai/docs/changelog.rst | 93 ++
providers/common/ai/docs/connections/langchain.rst | 10 +-
providers/common/ai/docs/hitl_review.rst | 14 +-
providers/common/ai/docs/index.rst | 9 +-
providers/common/ai/docs/model_providers.rst | 3 +
providers/common/ai/docs/observability.rst | 18 +-
providers/common/ai/docs/operators/agent.rst | 11 +-
providers/common/ai/docs/operators/llm.rst | 53 +-
providers/common/ai/docs/stability.rst | 5 +-
providers/common/ai/docs/supported_services.rst | 82 +
providers/common/ai/docs/toolsets/hook.rst | 11 +-
providers/common/ai/docs/toolsets/index.rst | 26 +-
providers/common/ai/docs/toolsets/logging.rst | 30 +-
.../common/ai/docs/toolsets/managed_agent.rst | 8 +
providers/common/ai/docs/toolsets/sql.rst | 20 +-
providers/common/ai/provider.yaml | 35 +-
providers/common/ai/pyproject.toml | 8 +-
.../ai/src/airflow/providers/common/ai/__init__.py | 2 +-
.../providers/common/ai/durable/fingerprint.py | 19 +-
.../common/ai/example_dags/example_agent.py | 4 +-
.../common/ai/example_dags/example_hook_toolset.py | 2 +-
.../providers/common/ai/get_provider_info.py | 31 +-
.../providers/common/ai/hooks/pydantic_ai.py | 2 +-
.../providers/common/ai/mixins/hitl_review.py | 21 +-
.../providers/common/ai/mixins/usage_budget.py | 152 ++
.../airflow/providers/common/ai/operators/agent.py | 154 +-
.../airflow/providers/common/ai/operators/llm.py | 76 +-
.../providers/common/ai/operators/llm_branch.py | 14 +-
.../common/ai/operators/llm_file_analysis.py | 5 +-
.../common/ai/operators/llm_schema_compare.py | 24 +-
.../providers/common/ai/operators/llm_sql.py | 13 +-
.../providers/common/ai/plugins/hitl_review.py | 125 +-
.../providers/common/ai/plugins/www/package.json | 1 +
.../providers/common/ai/plugins/www/src/api.ts | 13 +-
.../ai/plugins/www/src/components/ChatPage.tsx | 9 +-
.../common/ai/plugins/www/src/hooks/useSession.ts | 5 +-
.../providers/common/ai/plugins/www/src/main.tsx | 46 +-
.../common/ai/plugins/www/tests/api.test.ts | 63 +
.../common/ai/plugins/www/tests/main.test.mjs | 43 +
.../airflow/providers/common/ai/tools/__init__.py | 8 +-
.../providers/common/ai/toolsets/__init__.py | 9 +
.../airflow/providers/common/ai/toolsets/hook.py | 40 +-
.../providers/common/ai/toolsets/logging.py | 51 +-
.../providers/common/ai/toolsets/sandbox.py | 16 +-
.../airflow/providers/common/ai/toolsets/sql.py | 41 +-
.../airflow/providers/common/ai/utils/logging.py | 17 +-
.../providers/common/ai/utils/usage_budget.py | 15 +-
.../common/ai/tests/unit/common/ai/conftest.py | 48 +
.../tests/unit/common/ai/decorators/test_agent.py | 12 +-
.../ai/decorators/test_llm_schema_compare.py | 14 +
.../unit/common/ai/decorators/test_llm_sql.py | 12 +
.../unit/common/ai/durable/test_fingerprint.py | 15 +
.../unit/common/ai/managed_agents/test_failover.py | 7 +-
.../unit/common/ai/mixins/test_hitl_review.py | 37 +-
.../unit/common/ai/mixins/test_usage_budget.py | 190 +++
.../tests/unit/common/ai/operators/test_agent.py | 611 +++++--
.../ai/tests/unit/common/ai/operators/test_llm.py | 265 ++-
.../unit/common/ai/operators/test_llm_branch.py | 140 +-
.../common/ai/operators/test_llm_file_analysis.py | 88 +-
.../common/ai/operators/test_llm_schema_compare.py | 135 +-
.../tests/unit/common/ai/operators/test_llm_sql.py | 125 +-
.../unit/common/ai/plugins/test_hitl_review.py | 469 +++++-
.../ai/tests/unit/common/ai/policies/test_retry.py | 18 +-
.../ai/tests/unit/common/ai/sandbox/test_base.py | 2 +-
.../ai/tests/unit/common/ai/sandbox/test_modal.py | 12 +-
.../tests/unit/common/ai/test_provider_metadata.py | 478 ++++++
.../unit/common/ai/tools/test__from_toolset.py | 2 +-
.../ai/tests/unit/common/ai/tools/test_tools.py | 5 +-
.../ai/tests/unit/common/ai/toolsets/test_hook.py | 58 +-
.../tests/unit/common/ai/toolsets/test_logging.py | 135 +-
.../unit/common/ai/toolsets/test_managed_agent.py | 9 +-
.../tests/unit/common/ai/toolsets/test_sandbox.py | 45 +-
.../ai/tests/unit/common/ai/toolsets/test_sql.py | 62 +
.../ai/tests/unit/common/ai/utils/test_logging.py | 17 -
.../unit/common/ai/utils/test_sql_validation.py | 163 +-
.../unit/common/ai/utils/test_toolset_base.py | 4 +-
providers/common/compat/README.rst | 6 +-
providers/common/compat/docs/changelog.rst | 27 +
providers/common/compat/docs/index.rst | 6 +-
providers/common/compat/provider.yaml | 3 +-
providers/common/compat/pyproject.toml | 6 +-
.../airflow/providers/common/compat/__init__.py | 2 +-
providers/common/io/README.rst | 6 +-
providers/common/io/docs/changelog.rst | 14 +
providers/common/io/docs/index.rst | 6 +-
providers/common/io/docs/state_store_backend.rst | 4 +-
providers/common/io/provider.yaml | 7 +-
providers/common/io/pyproject.toml | 6 +-
.../io/src/airflow/providers/common/io/__init__.py | 2 +-
.../providers/common/io/get_provider_info.py | 2 +-
.../providers/common/io/state_store/backend.py | 32 +-
.../airflow/providers/common/io/version_compat.py | 1 +
.../unit/common/io/state_store/test_backend.py | 49 +-
providers/common/messaging/README.rst | 6 +-
providers/common/messaging/docs/changelog.rst | 17 +
providers/common/messaging/docs/index.rst | 6 +-
providers/common/messaging/provider.yaml | 3 +-
providers/common/messaging/pyproject.toml | 6 +-
.../airflow/providers/common/messaging/__init__.py | 2 +-
providers/common/sql/README.rst | 8 +-
providers/common/sql/docs/changelog.rst | 27 +
providers/common/sql/docs/index.rst | 6 +-
providers/common/sql/provider.yaml | 3 +-
providers/common/sql/pyproject.toml | 6 +-
.../src/airflow/providers/common/sql/__init__.py | 2 +-
providers/databricks/README.rst | 10 +-
providers/databricks/docs/changelog.rst | 25 +
providers/databricks/docs/index.rst | 8 +-
providers/databricks/provider.yaml | 3 +-
providers/databricks/pyproject.toml | 8 +-
.../src/airflow/providers/databricks/__init__.py | 2 +-
providers/datadog/README.rst | 6 +-
providers/datadog/docs/changelog.rst | 17 +
providers/datadog/docs/index.rst | 6 +-
providers/datadog/provider.yaml | 3 +-
providers/datadog/pyproject.toml | 6 +-
.../src/airflow/providers/datadog/__init__.py | 2 +-
providers/dbt/cloud/README.rst | 6 +-
providers/dbt/cloud/docs/changelog.rst | 27 +
providers/dbt/cloud/docs/index.rst | 6 +-
providers/dbt/cloud/provider.yaml | 3 +-
providers/dbt/cloud/pyproject.toml | 6 +-
.../src/airflow/providers/dbt/cloud/__init__.py | 2 +-
providers/dingding/README.rst | 6 +-
providers/dingding/docs/changelog.rst | 17 +
providers/dingding/docs/index.rst | 6 +-
providers/dingding/provider.yaml | 3 +-
providers/dingding/pyproject.toml | 6 +-
.../src/airflow/providers/dingding/__init__.py | 2 +-
providers/discord/README.rst | 6 +-
providers/discord/docs/changelog.rst | 26 +
providers/discord/docs/index.rst | 6 +-
providers/discord/provider.yaml | 3 +-
providers/discord/pyproject.toml | 6 +-
.../src/airflow/providers/discord/__init__.py | 2 +-
providers/docker/README.rst | 6 +-
providers/docker/docs/changelog.rst | 17 +
providers/docker/docs/index.rst | 6 +-
providers/docker/provider.yaml | 3 +-
providers/docker/pyproject.toml | 6 +-
.../src/airflow/providers/docker/__init__.py | 2 +-
providers/duckdb/README.rst | 6 +-
providers/duckdb/docs/changelog.rst | 17 +
providers/duckdb/docs/commits.rst | 4 +-
providers/duckdb/docs/index.rst | 6 +-
providers/duckdb/provider.yaml | 3 +-
providers/duckdb/pyproject.toml | 6 +-
.../src/airflow/providers/duckdb/__init__.py | 2 +-
providers/edge3/docs/changelog.rst | 17 +-
providers/edge3/provider.yaml | 2 +-
.../src/airflow/providers/edge3/cli/api_client.py | 19 +-
.../src/airflow/providers/edge3/cli/worker.py | 3 +
.../providers/edge3/worker_api/datamodels.py | 7 +
.../providers/edge3/worker_api/routes/logs.py | 31 +-
.../edge3/worker_api/v2-edge-generated.yaml | 28 +
.../edge3/tests/unit/edge3/cli/test_api_client.py | 52 +
.../edge3/tests/unit/edge3/cli/test_worker.py | 31 +-
.../unit/edge3/worker_api/routes/test_logs.py | 139 ++
providers/elasticsearch/README.rst | 6 +-
providers/elasticsearch/docs/changelog.rst | 25 +
providers/elasticsearch/docs/index.rst | 6 +-
providers/elasticsearch/provider.yaml | 3 +-
providers/elasticsearch/pyproject.toml | 6 +-
.../airflow/providers/elasticsearch/__init__.py | 2 +-
.../providers/elasticsearch/log/es_task_handler.py | 3 +-
.../unit/elasticsearch/log/test_es_task_handler.py | 6 +
providers/exasol/README.rst | 14 +-
providers/exasol/docs/changelog.rst | 22 +
providers/exasol/docs/index.rst | 6 +-
providers/exasol/provider.yaml | 3 +-
providers/exasol/pyproject.toml | 6 +-
.../src/airflow/providers/exasol/__init__.py | 2 +-
providers/fab/README.rst | 6 +-
providers/fab/docs/changelog.rst | 30 +
providers/fab/docs/index.rst | 6 +-
providers/fab/provider.yaml | 3 +-
providers/fab/pyproject.toml | 6 +-
.../fab/src/airflow/providers/fab/__init__.py | 2 +-
.../providers/fab/auth_manager/fab_auth_manager.py | 9 +
.../unit/fab/auth_manager/test_fab_auth_manager.py | 18 +
providers/facebook/README.rst | 6 +-
providers/facebook/docs/changelog.rst | 21 +
providers/facebook/docs/index.rst | 6 +-
providers/facebook/provider.yaml | 3 +-
providers/facebook/pyproject.toml | 6 +-
.../src/airflow/providers/facebook/__init__.py | 2 +-
providers/ftp/README.rst | 6 +-
providers/ftp/docs/changelog.rst | 22 +
providers/ftp/docs/index.rst | 6 +-
providers/ftp/provider.yaml | 3 +-
providers/ftp/pyproject.toml | 6 +-
.../ftp/src/airflow/providers/ftp/__init__.py | 2 +-
providers/git/README.rst | 6 +-
providers/git/docs/changelog.rst | 24 +
providers/git/docs/index.rst | 6 +-
providers/git/provider.yaml | 3 +-
providers/git/pyproject.toml | 6 +-
.../git/src/airflow/providers/git/__init__.py | 2 +-
providers/github/README.rst | 6 +-
providers/github/docs/changelog.rst | 17 +
providers/github/docs/index.rst | 6 +-
providers/github/provider.yaml | 3 +-
providers/github/pyproject.toml | 6 +-
.../src/airflow/providers/github/__init__.py | 2 +-
providers/google/README.rst | 16 +-
providers/google/docs/changelog.rst | 51 +
providers/google/docs/index.rst | 8 +-
providers/google/provider.yaml | 3 +-
providers/google/pyproject.toml | 8 +-
.../src/airflow/providers/google/__init__.py | 2 +-
.../google/cloud/operators/kubernetes_engine.py | 26 +-
.../cloud/operators/test_kubernetes_engine.py | 39 +-
providers/grpc/README.rst | 6 +-
providers/grpc/docs/changelog.rst | 17 +
providers/grpc/docs/index.rst | 6 +-
providers/grpc/provider.yaml | 3 +-
providers/grpc/pyproject.toml | 6 +-
.../grpc/src/airflow/providers/grpc/__init__.py | 2 +-
providers/hashicorp/README.rst | 8 +-
providers/hashicorp/docs/changelog.rst | 22 +
providers/hashicorp/docs/index.rst | 6 +-
providers/hashicorp/provider.yaml | 3 +-
providers/hashicorp/pyproject.toml | 6 +-
.../src/airflow/providers/hashicorp/__init__.py | 2 +-
providers/http/README.rst | 6 +-
providers/http/docs/changelog.rst | 28 +
providers/http/docs/index.rst | 6 +-
providers/http/provider.yaml | 3 +-
providers/http/pyproject.toml | 6 +-
.../http/src/airflow/providers/http/__init__.py | 2 +-
providers/ibm/db2/README.rst | 121 +-
providers/ibm/mq/README.rst | 43 +-
providers/imap/README.rst | 6 +-
providers/imap/docs/changelog.rst | 17 +
providers/imap/docs/index.rst | 6 +-
providers/imap/provider.yaml | 3 +-
providers/imap/pyproject.toml | 6 +-
.../imap/src/airflow/providers/imap/__init__.py | 2 +-
providers/influxdb/README.rst | 6 +-
providers/influxdb/docs/changelog.rst | 22 +
providers/influxdb/docs/index.rst | 6 +-
providers/influxdb/provider.yaml | 3 +-
providers/influxdb/pyproject.toml | 6 +-
.../src/airflow/providers/influxdb/__init__.py | 2 +-
providers/informatica/README.rst | 6 +-
providers/informatica/docs/changelog.rst | 19 +
providers/informatica/docs/index.rst | 6 +-
providers/informatica/provider.yaml | 3 +-
providers/informatica/pyproject.toml | 6 +-
.../src/airflow/providers/informatica/__init__.py | 2 +-
providers/jdbc/README.rst | 8 +-
providers/jdbc/docs/changelog.rst | 15 +
providers/jdbc/docs/index.rst | 6 +-
providers/jdbc/provider.yaml | 3 +-
providers/jdbc/pyproject.toml | 6 +-
.../jdbc/src/airflow/providers/jdbc/__init__.py | 2 +-
providers/jenkins/README.rst | 6 +-
providers/jenkins/docs/changelog.rst | 23 +
providers/jenkins/docs/index.rst | 6 +-
providers/jenkins/provider.yaml | 3 +-
providers/jenkins/pyproject.toml | 6 +-
.../src/airflow/providers/jenkins/__init__.py | 2 +-
providers/keycloak/README.rst | 6 +-
providers/keycloak/docs/changelog.rst | 23 +
providers/keycloak/docs/index.rst | 6 +-
providers/keycloak/provider.yaml | 3 +-
providers/keycloak/pyproject.toml | 6 +-
.../src/airflow/providers/keycloak/__init__.py | 2 +-
providers/microsoft/azure/README.rst | 8 +-
providers/microsoft/azure/docs/changelog.rst | 27 +
providers/microsoft/azure/docs/index.rst | 8 +-
providers/microsoft/azure/provider.yaml | 3 +-
providers/microsoft/azure/pyproject.toml | 8 +-
.../airflow/providers/microsoft/azure/__init__.py | 2 +-
providers/microsoft/mssql/README.rst | 6 +-
providers/microsoft/mssql/docs/changelog.rst | 21 +
providers/microsoft/mssql/docs/index.rst | 6 +-
providers/microsoft/mssql/provider.yaml | 3 +-
providers/microsoft/mssql/pyproject.toml | 6 +-
.../airflow/providers/microsoft/mssql/__init__.py | 2 +-
providers/microsoft/psrp/README.rst | 6 +-
providers/microsoft/psrp/docs/changelog.rst | 17 +
providers/microsoft/psrp/docs/index.rst | 6 +-
providers/microsoft/psrp/provider.yaml | 3 +-
providers/microsoft/psrp/pyproject.toml | 6 +-
.../airflow/providers/microsoft/psrp/__init__.py | 2 +-
providers/microsoft/winrm/README.rst | 6 +-
providers/microsoft/winrm/docs/changelog.rst | 17 +
providers/microsoft/winrm/docs/index.rst | 6 +-
providers/microsoft/winrm/provider.yaml | 3 +-
providers/microsoft/winrm/pyproject.toml | 6 +-
.../airflow/providers/microsoft/winrm/__init__.py | 2 +-
providers/modal/README.rst | 1 -
providers/mongo/README.rst | 6 +-
providers/mongo/docs/changelog.rst | 17 +
providers/mongo/docs/index.rst | 6 +-
providers/mongo/provider.yaml | 3 +-
providers/mongo/pyproject.toml | 6 +-
.../mongo/src/airflow/providers/mongo/__init__.py | 2 +-
providers/mysql/README.rst | 6 +-
providers/mysql/docs/changelog.rst | 17 +
providers/mysql/docs/index.rst | 6 +-
providers/mysql/provider.yaml | 3 +-
providers/mysql/pyproject.toml | 6 +-
.../mysql/src/airflow/providers/mysql/__init__.py | 2 +-
providers/neo4j/README.rst | 6 +-
providers/neo4j/docs/changelog.rst | 17 +
providers/neo4j/docs/index.rst | 6 +-
providers/neo4j/provider.yaml | 3 +-
providers/neo4j/pyproject.toml | 6 +-
.../neo4j/src/airflow/providers/neo4j/__init__.py | 2 +-
providers/odbc/README.rst | 6 +-
providers/odbc/docs/changelog.rst | 19 +
providers/odbc/docs/index.rst | 6 +-
providers/odbc/provider.yaml | 3 +-
providers/odbc/pyproject.toml | 6 +-
.../odbc/src/airflow/providers/odbc/__init__.py | 2 +-
providers/openai/README.rst | 6 +-
providers/openai/docs/changelog.rst | 27 +
providers/openai/docs/commits.rst | 2 +-
providers/openai/docs/index.rst | 6 +-
providers/openai/provider.yaml | 3 +-
providers/openai/pyproject.toml | 6 +-
.../src/airflow/providers/openai/__init__.py | 2 +-
providers/openfaas/README.rst | 6 +-
providers/openfaas/docs/changelog.rst | 21 +
providers/openfaas/docs/index.rst | 6 +-
providers/openfaas/provider.yaml | 3 +-
providers/openfaas/pyproject.toml | 6 +-
.../src/airflow/providers/openfaas/__init__.py | 2 +-
providers/openlineage/README.rst | 14 +-
providers/openlineage/docs/changelog.rst | 25 +
providers/openlineage/docs/index.rst | 6 +-
providers/openlineage/provider.yaml | 3 +-
providers/openlineage/pyproject.toml | 6 +-
.../src/airflow/providers/openlineage/__init__.py | 2 +-
.../providers/openlineage/plugins/facets.py | 7 +-
.../providers/openlineage/plugins/listener.py | 37 +-
.../providers/openlineage/plugins/macros.py | 6 +-
.../airflow/providers/openlineage/utils/utils.py | 163 +-
.../providers/openlineage/version_compat.py | 3 +-
.../unit/openlineage/plugins/test_listener.py | 71 +
.../tests/unit/openlineage/plugins/test_macros.py | 40 +-
.../tests/unit/openlineage/plugins/test_utils.py | 39 +-
.../tests/unit/openlineage/utils/test_utils.py | 285 +++-
providers/opensearch/README.rst | 6 +-
providers/opensearch/docs/changelog.rst | 30 +
providers/opensearch/docs/index.rst | 6 +-
providers/opensearch/provider.yaml | 3 +-
providers/opensearch/pyproject.toml | 6 +-
.../src/airflow/providers/opensearch/__init__.py | 2 +-
.../providers/opensearch/log/os_task_handler.py | 3 +-
.../unit/opensearch/log/test_os_task_handler.py | 6 +
providers/opsgenie/README.rst | 6 +-
providers/opsgenie/docs/changelog.rst | 18 +
providers/opsgenie/docs/index.rst | 6 +-
providers/opsgenie/provider.yaml | 3 +-
providers/opsgenie/pyproject.toml | 6 +-
.../src/airflow/providers/opsgenie/__init__.py | 2 +-
providers/oracle/README.rst | 12 +-
providers/oracle/docs/changelog.rst | 17 +
providers/oracle/docs/index.rst | 6 +-
providers/oracle/provider.yaml | 3 +-
providers/oracle/pyproject.toml | 6 +-
.../src/airflow/providers/oracle/__init__.py | 2 +-
providers/pagerduty/README.rst | 6 +-
providers/pagerduty/docs/changelog.rst | 17 +
providers/pagerduty/docs/index.rst | 6 +-
providers/pagerduty/provider.yaml | 3 +-
providers/pagerduty/pyproject.toml | 6 +-
.../src/airflow/providers/pagerduty/__init__.py | 2 +-
providers/papermill/README.rst | 6 +-
providers/papermill/docs/changelog.rst | 20 +
providers/papermill/docs/index.rst | 6 +-
providers/papermill/provider.yaml | 3 +-
providers/papermill/pyproject.toml | 6 +-
.../src/airflow/providers/papermill/__init__.py | 2 +-
providers/pgvector/README.rst | 6 +-
providers/pgvector/docs/changelog.rst | 20 +
providers/pgvector/docs/index.rst | 6 +-
providers/pgvector/provider.yaml | 3 +-
providers/pgvector/pyproject.toml | 6 +-
.../src/airflow/providers/pgvector/__init__.py | 2 +-
providers/pinecone/README.rst | 6 +-
providers/pinecone/docs/changelog.rst | 17 +
providers/pinecone/docs/index.rst | 6 +-
providers/pinecone/provider.yaml | 3 +-
providers/pinecone/pyproject.toml | 6 +-
.../src/airflow/providers/pinecone/__init__.py | 2 +-
providers/postgres/README.rst | 8 +-
providers/postgres/docs/changelog.rst | 23 +
providers/postgres/docs/index.rst | 6 +-
providers/postgres/provider.yaml | 3 +-
providers/postgres/pyproject.toml | 6 +-
.../src/airflow/providers/postgres/__init__.py | 2 +-
providers/presto/README.rst | 8 +-
providers/presto/docs/changelog.rst | 22 +
providers/presto/docs/index.rst | 6 +-
providers/presto/provider.yaml | 3 +-
providers/presto/pyproject.toml | 6 +-
.../src/airflow/providers/presto/__init__.py | 2 +-
providers/qdrant/README.rst | 6 +-
providers/qdrant/docs/changelog.rst | 17 +
providers/qdrant/docs/index.rst | 6 +-
providers/qdrant/provider.yaml | 3 +-
providers/qdrant/pyproject.toml | 6 +-
.../src/airflow/providers/qdrant/__init__.py | 2 +-
providers/redis/README.rst | 6 +-
providers/redis/docs/changelog.rst | 17 +
providers/redis/docs/index.rst | 6 +-
providers/redis/provider.yaml | 3 +-
providers/redis/pyproject.toml | 6 +-
.../redis/src/airflow/providers/redis/__init__.py | 2 +-
providers/salesforce/README.rst | 6 +-
providers/salesforce/docs/changelog.rst | 18 +
providers/salesforce/docs/index.rst | 6 +-
providers/salesforce/provider.yaml | 3 +-
providers/salesforce/pyproject.toml | 6 +-
.../src/airflow/providers/salesforce/__init__.py | 2 +-
providers/samba/README.rst | 6 +-
providers/samba/docs/changelog.rst | 17 +
providers/samba/docs/index.rst | 6 +-
providers/samba/provider.yaml | 3 +-
providers/samba/pyproject.toml | 6 +-
.../samba/src/airflow/providers/samba/__init__.py | 2 +-
providers/segment/README.rst | 6 +-
providers/segment/docs/changelog.rst | 17 +
providers/segment/docs/index.rst | 6 +-
providers/segment/provider.yaml | 3 +-
providers/segment/pyproject.toml | 6 +-
.../src/airflow/providers/segment/__init__.py | 2 +-
providers/sendgrid/README.rst | 6 +-
providers/sendgrid/docs/changelog.rst | 23 +
providers/sendgrid/docs/index.rst | 6 +-
providers/sendgrid/provider.yaml | 3 +-
providers/sendgrid/pyproject.toml | 6 +-
.../src/airflow/providers/sendgrid/__init__.py | 2 +-
providers/sftp/README.rst | 8 +-
providers/sftp/docs/changelog.rst | 28 +
providers/sftp/docs/index.rst | 8 +-
providers/sftp/provider.yaml | 3 +-
providers/sftp/pyproject.toml | 8 +-
.../sftp/src/airflow/providers/sftp/__init__.py | 2 +-
providers/singularity/README.rst | 6 +-
providers/singularity/docs/changelog.rst | 21 +
providers/singularity/docs/index.rst | 6 +-
providers/singularity/provider.yaml | 3 +-
providers/singularity/pyproject.toml | 6 +-
.../src/airflow/providers/singularity/__init__.py | 2 +-
providers/slack/README.rst | 6 +-
providers/slack/docs/changelog.rst | 23 +
providers/slack/docs/index.rst | 6 +-
providers/slack/provider.yaml | 3 +-
providers/slack/pyproject.toml | 6 +-
.../slack/src/airflow/providers/slack/__init__.py | 2 +-
providers/smtp/README.rst | 6 +-
providers/smtp/docs/changelog.rst | 23 +
providers/smtp/docs/index.rst | 6 +-
providers/smtp/provider.yaml | 3 +-
providers/smtp/pyproject.toml | 6 +-
.../smtp/src/airflow/providers/smtp/__init__.py | 2 +-
providers/snowflake/README.rst | 16 +-
providers/snowflake/docs/changelog.rst | 31 +
providers/snowflake/docs/index.rst | 6 +-
.../docs/operators/snowflake_cortex_agent.rst | 108 +-
providers/snowflake/provider.yaml | 3 +-
providers/snowflake/pyproject.toml | 6 +-
.../src/airflow/providers/snowflake/__init__.py | 2 +-
.../snowflake/operators/snowflake_cortex_agent.py | 278 +++-
.../snowflake/example_snowflake_cortex_agent.py | 60 +-
.../operators/test_snowflake_cortex_agent.py | 309 +++-
providers/sqlite/README.rst | 6 +-
providers/sqlite/docs/changelog.rst | 23 +
providers/sqlite/docs/index.rst | 6 +-
providers/sqlite/provider.yaml | 3 +-
providers/sqlite/pyproject.toml | 6 +-
.../src/airflow/providers/sqlite/__init__.py | 2 +-
providers/ssh/README.rst | 6 +-
providers/ssh/docs/changelog.rst | 27 +
providers/ssh/docs/index.rst | 6 +-
providers/ssh/provider.yaml | 3 +-
providers/ssh/pyproject.toml | 6 +-
.../ssh/src/airflow/providers/ssh/__init__.py | 2 +-
providers/standard/README.rst | 6 +-
providers/standard/docs/changelog.rst | 25 +
providers/standard/docs/index.rst | 6 +-
providers/standard/provider.yaml | 3 +-
providers/standard/pyproject.toml | 6 +-
.../src/airflow/providers/standard/__init__.py | 2 +-
providers/tableau/README.rst | 6 +-
providers/tableau/docs/changelog.rst | 17 +
providers/tableau/docs/index.rst | 6 +-
providers/tableau/provider.yaml | 3 +-
providers/tableau/pyproject.toml | 6 +-
.../src/airflow/providers/tableau/__init__.py | 2 +-
providers/telegram/README.rst | 6 +-
providers/telegram/docs/changelog.rst | 18 +
providers/telegram/docs/index.rst | 6 +-
providers/telegram/provider.yaml | 3 +-
providers/telegram/pyproject.toml | 6 +-
.../src/airflow/providers/telegram/__init__.py | 2 +-
providers/teradata/README.rst | 8 +-
providers/teradata/docs/changelog.rst | 19 +
providers/teradata/docs/index.rst | 6 +-
providers/teradata/provider.yaml | 3 +-
providers/teradata/pyproject.toml | 6 +-
.../src/airflow/providers/teradata/__init__.py | 2 +-
providers/trino/README.rst | 6 +-
providers/trino/docs/changelog.rst | 17 +
providers/trino/docs/index.rst | 6 +-
providers/trino/provider.yaml | 3 +-
providers/trino/pyproject.toml | 6 +-
.../trino/src/airflow/providers/trino/__init__.py | 2 +-
providers/vertica/README.rst | 14 +-
providers/vertica/docs/changelog.rst | 28 +
providers/vertica/docs/index.rst | 6 +-
providers/vertica/provider.yaml | 3 +-
providers/vertica/pyproject.toml | 6 +-
.../src/airflow/providers/vertica/__init__.py | 2 +-
providers/vespa/README.rst | 8 +-
providers/vespa/docs/changelog.rst | 21 +
providers/vespa/docs/index.rst | 6 +-
providers/vespa/provider.yaml | 6 +-
providers/vespa/pyproject.toml | 9 +-
.../vespa/src/airflow/providers/vespa/__init__.py | 2 +-
providers/weaviate/README.rst | 6 +-
providers/weaviate/docs/changelog.rst | 17 +
providers/weaviate/docs/index.rst | 6 +-
providers/weaviate/provider.yaml | 3 +-
providers/weaviate/pyproject.toml | 6 +-
.../src/airflow/providers/weaviate/__init__.py | 2 +-
providers/yandex/README.rst | 6 +-
providers/yandex/docs/changelog.rst | 17 +
providers/yandex/docs/index.rst | 6 +-
providers/yandex/provider.yaml | 3 +-
providers/yandex/pyproject.toml | 6 +-
.../src/airflow/providers/yandex/__init__.py | 2 +-
providers/ydb/README.rst | 14 +-
providers/ydb/docs/changelog.rst | 16 +
providers/ydb/docs/index.rst | 6 +-
providers/ydb/provider.yaml | 3 +-
providers/ydb/pyproject.toml | 6 +-
.../ydb/src/airflow/providers/ydb/__init__.py | 2 +-
providers/zendesk/README.rst | 6 +-
providers/zendesk/docs/changelog.rst | 21 +
providers/zendesk/docs/index.rst | 6 +-
providers/zendesk/provider.yaml | 3 +-
providers/zendesk/pyproject.toml | 6 +-
.../src/airflow/providers/zendesk/__init__.py | 2 +-
pyproject.toml | 8 +-
registry/package.json | 2 +-
registry/pnpm-lock.yaml | 26 +-
scripts/ci/lang_sdk_serialization/test_dags.yaml | 7 +-
scripts/ci/prek/check_applies_to_roots_in_sync.py | 117 ++
.../check_template_context_variable_in_sync.py | 2 +
scripts/ci/prek/check_xcom_model_columns.py | 2 +-
.../ci/prek/check_yaml_importer_schema_versions.py | 137 ++
scripts/ci/prek/generate_execution_api_schema.py | 2 +
scripts/ci/prek/generate_yaml_importer_schema.py | 66 +
scripts/ci/prek/sync_ts_sdk_schemas.py | 127 ++
scripts/ci/prek/ts_compile_lint_common_ai.py | 1 +
scripts/docker/install_os_dependencies.sh | 3 +
.../ci/prek/test_check_applies_to_roots_in_sync.py | 84 +
scripts/tests/ci/prek/test_sync_ts_sdk_schemas.py | 122 ++
shared/dagnode/src/airflow_shared/dagnode/node.py | 113 +-
shared/dagnode/tests/dagnode/test_node.py | 36 +-
.../observability/metrics/metrics_template.yaml | 6 +-
shared/state/src/airflow_shared/state/__init__.py | 48 +-
shared/state/tests/state/test_state.py | 28 +
task-sdk/docs/api.rst | 37 +
task-sdk/docs/concepts.rst | 2 +-
task-sdk/docs/deferred-vs-async-operators.rst | 12 +-
task-sdk/docs/dynamic-task-mapping.rst | 8 +-
task-sdk/docs/examples.rst | 4 +-
task-sdk/pyproject.toml | 1 +
task-sdk/src/airflow/sdk/__init__.py | 3 +
task-sdk/src/airflow/sdk/__init__.pyi | 2 +
task-sdk/src/airflow/sdk/api/client.py | 50 +-
.../src/airflow/sdk/api/datamodels/_generated.py | 20 +
task-sdk/src/airflow/sdk/bases/decorator.py | 31 +-
task-sdk/src/airflow/sdk/bases/operator.py | 1 +
task-sdk/src/airflow/sdk/bases/xcom.py | 2 +
.../airflow/sdk/coordinators/java/_dag_importer.py | 4 +-
.../src/airflow/sdk/definitions/_internal/loop.py | 218 +++
.../src/airflow/sdk/definitions/_internal/node.py | 15 +-
.../src/airflow/sdk/definitions/asset/__init__.py | 13 +
task-sdk/src/airflow/sdk/definitions/context.py | 4 +-
task-sdk/src/airflow/sdk/definitions/dag.py | 62 +-
.../sdk/definitions/decorators/task_group.py | 39 +-
.../src/airflow/sdk/definitions/mappedoperator.py | 1 -
task-sdk/src/airflow/sdk/definitions/taskgroup.py | 90 +-
.../airflow/sdk/definitions/timetables/assets.py | 51 +-
task-sdk/src/airflow/sdk/definitions/xcom_arg.py | 3 +-
task-sdk/src/airflow/sdk/exceptions.py | 4 +
task-sdk/src/airflow/sdk/execution_time/comms.py | 4 +
.../airflow/sdk/execution_time/lazy_sequence.py | 4 +
task-sdk/src/airflow/sdk/execution_time/loop.py | 104 ++
.../airflow/sdk/execution_time/request_handlers.py | 34 +-
.../airflow/sdk/execution_time/schema/schema.json | 114 ++
.../sdk/execution_time/schema/versions/__init__.py | 6 +
.../execution_time/schema/versions/v2026_10_30.py | 51 +-
.../src/airflow/sdk/execution_time/supervisor.py | 6 +-
.../src/airflow/sdk/execution_time/task_runner.py | 63 +-
.../sdk/importers/yaml_importer/__init__.py | 29 +-
.../sdk/importers/yaml_importer/migrator.py | 168 ++
.../airflow/sdk/importers/yaml_importer/models.py | 459 ++++++
.../airflow/sdk/importers/yaml_importer/parser.py | 102 ++
.../sdk/importers/yaml_importer/schema.json | 365 +++++
.../importers/yaml_importer/versions/__init__.py | 42 +-
task-sdk/src/airflow/sdk/log.py | 33 +-
task-sdk/src/airflow/sdk/types.py | 9 +-
task-sdk/tests/conftest.py | 6 +
task-sdk/tests/task_sdk/bases/test_decorator.py | 12 +
.../coordinators/java/test_dag_importer.py | 19 +
.../task_sdk/definitions/_internal/test_loop.py | 431 +++++
.../task_sdk/definitions/decorators/test_result.py | 39 +-
.../definitions/decorators/test_task_group.py | 120 +-
task-sdk/tests/task_sdk/definitions/test_asset.py | 16 +
task-sdk/tests/task_sdk/definitions/test_dag.py | 342 +++-
.../tests/task_sdk/definitions/test_xcom_arg.py | 51 +-
.../task_sdk/definitions/timetables/test_assets.py | 166 ++
.../execution_time/schema/test_migrator.py | 153 +-
.../tests/task_sdk/execution_time/test_comms.py | 16 +-
.../tests/task_sdk/execution_time/test_loop.py | 245 +++
.../execution_time/test_request_handlers.py | 51 +
.../task_sdk/execution_time/test_supervisor.py | 42 +-
.../task_sdk/execution_time/test_task_runner.py | 204 ++-
.../task_sdk/importers/yaml_importer}/__init__.py | 0
.../importers/yaml_importer/example_dag.yaml | 69 +
.../importers/yaml_importer/test_migrator.py | 188 +++
.../importers/yaml_importer/test_parser.py | 576 +++++++
task-sdk/tests/task_sdk/test_log.py | 32 +
ts-sdk/.pre-commit-config.yaml | 1 +
ts-sdk/README.md | 378 ++---
ts-sdk/adr/0002-native-dag-interface.md | 18 +-
ts-sdk/api-docs/dag-authoring-api.ts | 12 +-
.../api-docs/{supporting-types.ts => hitl-api.ts} | 14 +-
ts-sdk/api-docs/supporting-types.ts | 8 +-
ts-sdk/capabilities.yaml | 14 +-
ts-sdk/docs/index.md | 68 +-
ts-sdk/example/README.md | 24 +-
ts-sdk/example/dags/typescript_example.py | 10 +
ts-sdk/example/package.json | 4 +-
ts-sdk/example/src/ai-approval.ts | 198 +++
ts-sdk/example/src/hitl.ts | 137 ++
ts-sdk/example/src/main.ts | 48 +-
ts-sdk/example/src/native.ts | 167 ++
ts-sdk/example/tsconfig.json | 4 +-
ts-sdk/package.json | 4 +
ts-sdk/pnpm-lock.yaml | 270 ++--
ts-sdk/schema/dag-schema.json | 12 +
{go-sdk => ts-sdk}/schema/supervisor-schema.json | 114 ++
ts-sdk/scripts/ci/prek/check_supervisor_schema.py | 4 +-
ts-sdk/scripts/ci/prek/sync_dag_schema.py | 65 -
ts-sdk/scripts/generate-dag-schema.mjs | 4 +-
ts-sdk/scripts/generate-supervisor.mjs | 7 +-
ts-sdk/src/coordinator/client.ts | 217 ++-
ts-sdk/src/coordinator/operator-runner.ts | 140 ++
ts-sdk/src/coordinator/protocol.ts | 9 +
ts-sdk/src/coordinator/runtime.ts | 65 +-
ts-sdk/src/coordinator/serde.ts | 275 +---
ts-sdk/src/generated/supervisor.ts | 37 +
.../SearchDags => ts-sdk/src/hitl}/index.ts | 12 +-
ts-sdk/src/hitl/operator.ts | 281 ++++
ts-sdk/src/hitl/spec.ts | 447 ++++++
ts-sdk/src/index.ts | 11 +-
ts-sdk/src/sdk/bundle.ts | 30 +-
ts-sdk/src/sdk/client-types.ts | 23 +
ts-sdk/src/sdk/client.ts | 74 +-
ts-sdk/src/sdk/dag-graph.ts | 236 +++
ts-sdk/src/sdk/dag.ts | 117 +-
.../dag-authoring-api.ts => src/sdk/env.ts} | 24 +-
ts-sdk/src/sdk/operator.ts | 150 ++
ts-sdk/src/sdk/plain-json.ts | 60 +
.../trigger-dag-run-execute.ts} | 106 +-
ts-sdk/src/sdk/trigger-dag-run.ts | 43 +-
ts-sdk/tests/coordinator/client.test.ts | 238 ++-
ts-sdk/tests/coordinator/integration.test.ts | 584 ++++++-
ts-sdk/tests/coordinator/operator-runner.test.ts | 207 +++
ts-sdk/tests/hitl/operator.test.ts | 169 ++
ts-sdk/tests/hitl/spec.test.ts | 353 ++++
ts-sdk/tests/public-api.test.ts | 28 +
ts-sdk/tests/sdk/dag.test.ts | 35 +
ts-sdk/tests/sdk/hitl-inference.test.ts | 117 ++
ts-sdk/tests/sdk/native-dag-example.test.ts | 213 +++
ts-sdk/tests/sdk/trigger-dag-run.test.ts | 21 +-
ts-sdk/tsconfig.json | 12 +-
ts-sdk/vitest.config.ts | 15 +
uv.lock | 757 +++++----
1673 files changed, 74018 insertions(+), 11376 deletions(-)
create mode 100644
airflow-core/docs/administration-and-deployment/dag-importers.rst
create mode 100644
airflow-core/docs/authoring-and-scheduling/loops-and-mapped-tasks.rst
create mode 100644 airflow-core/docs/authoring-and-scheduling/loops.rst
create mode 100644 airflow-core/newsfragments/68517.significant.rst
create mode 100644 airflow-core/newsfragments/73746.significant.rst
create mode 100644 airflow-core/newsfragments/74499.bugfix.rst
create mode 100644 airflow-core/newsfragments/task-loops.feature.rst
create mode 100644 airflow-core/src/airflow/api_fastapi/common/region.py
copy airflow-core/src/airflow/api_fastapi/core_api/datamodels/ui/{gantt.py =>
execution.py} (52%)
create mode 100644
airflow-core/src/airflow/api_fastapi/core_api/routes/ui/execution.py
create mode 100644
airflow-core/src/airflow/api_fastapi/core_api/services/public/task_coordinates.py
create mode 100644
airflow-core/src/airflow/api_fastapi/core_api/services/ui/execution.py
create mode 100644
airflow-core/src/airflow/api_fastapi/execution_api/in_process.py
copy providers/airbyte/src/airflow/providers/airbyte/__init__.py =>
airflow-core/src/airflow/api_fastapi/execution_api/versions/v2026_10_30_xcom_params.py
(53%)
create mode 100644 airflow-core/src/airflow/example_dags/example_task_loops.py
create mode 100644
airflow-core/src/airflow/migrations/versions/0143_3_4_0_add_dynamic_region_storage.py
create mode 100644
airflow-core/src/airflow/migrations/versions/0144_3_4_0_rename_stored_map_index.py
create mode 100644
airflow-core/src/airflow/migrations/versions/0145_3_4_0_add_task_identity_to_events.py
create mode 100644
airflow-core/src/airflow/migrations/versions/0146_3_4_0_add_asset_state_writer_identity.py
create mode 100644 airflow-core/src/airflow/models/dynamic_region.py
create mode 100644 airflow-core/src/airflow/models/task_coordinates.py
create mode 100644
airflow-core/src/airflow/ui/src/components/AssetProgressCell.test.tsx
create mode 100644
airflow-core/src/airflow/ui/src/components/Breadcrumb/CrumbSwitcher.tsx
create mode 100644
airflow-core/src/airflow/ui/src/components/DagActions/RunBackfillForm.dateRange.test.tsx
create mode 100644 airflow-core/src/airflow/ui/src/components/SearchSelect.tsx
create mode 100644
airflow-core/src/airflow/ui/src/hooks/useHITLReviewTabs.test.tsx
create mode 100644 airflow-core/src/airflow/ui/src/hooks/useLoopRuleStats.tsx
create mode 100644
airflow-core/src/airflow/ui/src/hooks/useSelectedVersion.test.tsx
copy airflow-core/src/airflow/ui/src/{utils/option.ts =>
hooks/useTaskInstanceCoordinates.ts} (64%)
create mode 100644
airflow-core/src/airflow/ui/src/hooks/useTaskInstanceView.test.ts
create mode 100644 airflow-core/src/airflow/ui/src/hooks/useTaskInstanceView.ts
create mode 100644 airflow-core/src/airflow/ui/src/i18n/locales.test.ts
create mode 100644
airflow-core/src/airflow/ui/src/layouts/Details/DagRunSwitcherButton.tsx
create mode 100644
airflow-core/src/airflow/ui/src/layouts/Details/SearchDagRuns.test.tsx
create mode 100644
airflow-core/src/airflow/ui/src/layouts/Details/SearchDagRuns.tsx
rename airflow-core/src/airflow/ui/src/{components/SearchDags =>
layouts/Details}/SearchDags.test.tsx (99%)
rename airflow-core/src/airflow/ui/src/{components/SearchDags =>
layouts/Details}/SearchDags.tsx (60%)
create mode 100644
airflow-core/src/airflow/ui/src/layouts/Details/searchOptions.test.ts
create mode 100644
airflow-core/src/airflow/ui/src/layouts/Details/searchOptions.ts
create mode 100644
airflow-core/src/airflow/ui/src/pages/Asset/AssetStateStore/AssetStateStore.test.tsx
create mode 100644
airflow-core/src/airflow/ui/src/pages/Dag/Calendar/Calendar.failedView.test.tsx
create mode 100644
airflow-core/src/airflow/ui/src/pages/Dag/Calendar/Calendar.test.tsx
create mode 100644 airflow-core/src/airflow/ui/src/pages/Dag/Code/Code.test.tsx
create mode 100644
airflow-core/src/airflow/ui/src/pages/Dag/RequiredActionsRoute.test.tsx
create mode 100644
airflow-core/src/airflow/ui/src/pages/Dag/Tasks/Tasks.test.tsx
create mode 100644 airflow-core/src/airflow/ui/src/pages/Events/Events.test.tsx
create mode 100644
airflow-core/src/airflow/ui/src/pages/GroupTaskInstance/GroupTaskInstances.test.tsx
create mode 100644
airflow-core/src/airflow/ui/src/pages/GroupTaskInstance/GroupTaskInstances.tsx
create mode 100644
airflow-core/src/airflow/ui/src/pages/GroupTaskInstance/LoopIterations/IterationSelect.test.tsx
create mode 100644
airflow-core/src/airflow/ui/src/pages/GroupTaskInstance/LoopIterations/IterationSelect.tsx
copy airflow-core/src/airflow/ui/src/{components/SearchDags =>
pages/GroupTaskInstance/LoopIterations}/index.ts (93%)
create mode 100644
airflow-core/src/airflow/ui/src/pages/GroupTaskInstance/LoopIterations/loopUtils.test.ts
create mode 100644
airflow-core/src/airflow/ui/src/pages/GroupTaskInstance/LoopIterations/loopUtils.ts
create mode 100644
airflow-core/src/airflow/ui/src/pages/GroupTaskInstance/useLoopOutcomeStats.tsx
create mode 100644 airflow-core/src/airflow/ui/src/pages/Run/Execution.test.tsx
create mode 100644 airflow-core/src/airflow/ui/src/pages/Run/Execution.tsx
create mode 100644
airflow-core/src/airflow/ui/src/pages/Task/Overview/LoopHistoryChart.test.tsx
create mode 100644
airflow-core/src/airflow/ui/src/pages/Task/Overview/LoopHistoryChart.tsx
create mode 100644
airflow-core/src/airflow/ui/src/pages/TaskInstance/AssetEvents.test.tsx
create mode 100644
airflow-core/src/airflow/ui/src/pages/TaskInstances/DeleteTaskInstanceButton.test.tsx
create mode 100644
airflow-core/src/airflow/ui/src/pages/TaskStateStore/TaskStateStore.test.tsx
create mode 100644
airflow-core/src/airflow/ui/src/pages/TaskStateStore/TaskStateStoreModal.test.tsx
create mode 100644 airflow-core/src/airflow/ui/src/pages/XCom/XCom.test.tsx
create mode 100644
airflow-core/src/airflow/ui/src/pages/XCom/XComModal.test.tsx
delete mode 100644
airflow-core/src/airflow/ui/src/queries/useBulkClearDryRun.ts
delete mode 100644
airflow-core/src/airflow/ui/src/queries/useBulkClearTaskInstances.ts
create mode 100644
airflow-core/src/airflow/ui/src/queries/useBulkMarkAsDryRun.test.tsx
create mode 100644
airflow-core/src/airflow/ui/src/queries/useClearTaskInstances.test.tsx
create mode 100644
airflow-core/src/airflow/ui/src/queries/useClearTaskInstancesDryRun.test.tsx
copy airflow-core/src/airflow/ui/src/{utils/option.ts =>
queries/useIsLoopGroup.ts} (54%)
copy airflow-core/src/airflow/ui/src/{components/SearchDags/index.ts =>
queries/useLoopHistory.ts} (70%)
create mode 100644
airflow-core/src/airflow/ui/src/queries/useLoopSummary.test.tsx
create mode 100644 airflow-core/src/airflow/ui/src/queries/useLoopSummary.ts
create mode 100644
airflow-core/src/airflow/ui/src/queries/usePatchTaskInstance.test.tsx
create mode 100644
airflow-core/src/airflow/ui/src/queries/useTaskInstanceNote.test.tsx
copy ts-sdk/vitest.config.ts =>
airflow-core/src/airflow/ui/src/utils/executionParams.test.ts (59%)
copy airflow-core/src/airflow/ui/src/utils/{option.ts => executionParams.ts}
(57%)
copy airflow-core/src/airflow/ui/src/{components/SearchDags/index.ts =>
utils/loopTaskInstance.ts} (74%)
delete mode 100644 airflow-core/src/airflow/ui/tests/e2e/pages/DagDetailPage.ts
delete mode 100644
airflow-core/src/airflow/ui/tests/e2e/specs/dag-detail.spec.ts
create mode 100644 airflow-core/src/airflow/utils/log/task_log_address.py
create mode 100644
airflow-core/tests/unit/api_fastapi/core_api/routes/public/test_execution.py
create mode 100644
airflow-core/tests/unit/api_fastapi/core_api/routes/ui/test_execution.py
create mode 100644
airflow-core/tests/unit/api_fastapi/core_api/services/ui/test_execution.py
create mode 100644
airflow-core/tests/unit/api_fastapi/execution_api/test_in_process.py
create mode 100644
airflow-core/tests/unit/migrations/test_0143_add_dynamic_region_storage.py
create mode 100644
airflow-core/tests/unit/migrations/test_0144_rename_stored_map_index.py
create mode 100644 airflow-core/tests/unit/models/conftest.py
create mode 100644 airflow-core/tests/unit/models/test_dynamic_region.py
create mode 100644 airflow-core/tests/unit/models/test_task_coordinates.py
create mode 100644 airflow-core/tests/unit/serialization/test_decoders.py
create mode 100644 airflow-core/tests/unit/utils/log/test_task_log_address.py
copy airflow-e2e-tests/{java-test-bundle => java-native-bundle}/.gitignore
(100%)
copy
kubernetes-tests/lang_sdk/java_example/src/java/org/apache/airflow/k8sexample/K8sBundleBuilder.java
=> airflow-e2e-tests/java-native-bundle/build.gradle (55%)
copy airflow-e2e-tests/{java-test-bundle =>
java-native-bundle}/gradle.properties (100%)
copy java-sdk/sdk/src/main/kotlin/org/apache/airflow/sdk/internal/Ids.kt =>
airflow-e2e-tests/java-native-bundle/settings.gradle (68%)
create mode 100644
airflow-e2e-tests/java-native-bundle/src/java/org/apache/airflow/e2e/NativeBundleBuilder.java
create mode 100644
airflow-e2e-tests/java-native-bundle/src/java/org/apache/airflow/e2e/nativedag/AnnotationDag.java
copy
java-sdk/example/src/java/org/apache/airflow/example/ExampleBundleBuilder.java
=>
airflow-e2e-tests/java-native-bundle/src/java/org/apache/airflow/e2e/nativedag/TargetDag.java
(50%)
create mode 100644
airflow-e2e-tests/tests/airflow_e2e_tests/go_sdk_tests/test_go_sdk_native_dag.py
create mode 100644
airflow-e2e-tests/tests/airflow_e2e_tests/java_sdk_tests/test_java_sdk_native_dag.py
create mode 100644
airflow-e2e-tests/tests/airflow_e2e_tests/ts_sdk_tests/test_ts_sdk_hitl.py
create mode 100644
airflow-e2e-tests/tests/airflow_e2e_tests/ts_sdk_tests/test_ts_sdk_native_dag.py
create mode 100644
dev/breeze/doc/images/output_release-management_start-beta-process.svg
create mode 100644
dev/breeze/doc/images/output_release-management_start-beta-process.txt
create mode 100644
devel-common/src/sphinx_exts/templates/provider_connection_services.rst.jinja2
create mode 100644
devel-common/tests/unit/sphinx_exts/test_providers_extensions.py
create mode 100644 go-sdk/example/native/main.go
create mode 100644 go-sdk/example/native/report.go
create mode 100644 go-sdk/internal/bundle/trigger.go
create mode 100644 go-sdk/pkg/execution/trigger_runner.go
create mode 100644 go-sdk/pkg/execution/trigger_runner_test.go
create mode 100644
java-sdk/example/src/java/org/apache/airflow/example/nativedag/TargetExample.java
create mode 100644
java-sdk/plugin/src/main/kotlin/org/apache/airflow/sdk/plugin/ClassFiles.kt
create mode 100644
java-sdk/plugin/src/main/kotlin/org/apache/airflow/sdk/plugin/PackDagSources.kt
create mode 100644
java-sdk/plugin/src/test/kotlin/org/apache/airflow/sdk/plugin/AirflowSdkPluginTest.kt
create mode 100644
java-sdk/plugin/src/test/kotlin/org/apache/airflow/sdk/plugin/ClassFilesTest.kt
create mode 100644
java-sdk/plugin/src/test/kotlin/org/apache/airflow/sdk/plugin/PackDagSourcesTest.kt
rename
airflow-core/src/airflow/ui/src/components/SearchDags/SearchDagsControl.tsx =>
java-sdk/plugin/src/test/kotlin/org/apache/airflow/sdk/plugin/TestSupport.kt
(50%)
create mode 100644
java-sdk/sdk/src/main/kotlin/org/apache/airflow/sdk/BundleInspector.kt
create mode 100644
java-sdk/sdk/src/main/kotlin/org/apache/airflow/sdk/Condition.kt
create mode 100644
java-sdk/sdk/src/main/kotlin/org/apache/airflow/sdk/Decider.kt
create mode 100644
java-sdk/sdk/src/main/kotlin/org/apache/airflow/sdk/IdValidation.kt
create mode 100644
java-sdk/sdk/src/main/kotlin/org/apache/airflow/sdk/Switch.kt
create mode 100644
java-sdk/sdk/src/main/kotlin/org/apache/airflow/sdk/TriggerDagRun.kt
create mode 100644
java-sdk/sdk/src/main/kotlin/org/apache/airflow/sdk/execution/TriggerRunner.kt
create mode 100644
java-sdk/sdk/src/main/kotlin/org/apache/airflow/sdk/internal/DagSource.kt
copy
kubernetes-tests/lang_sdk/java_example/src/java/org/apache/airflow/k8sexample/K8sBundleBuilder.java
=>
java-sdk/sdk/src/test/kotlin/org/apache/airflow/example/DagSourceFixtures.kt
(55%)
create mode 100644
java-sdk/sdk/src/test/kotlin/org/apache/airflow/sdk/BundleInspectorTest.kt
create mode 100644
java-sdk/sdk/src/test/kotlin/org/apache/airflow/sdk/ConditionTest.kt
create mode 100644
java-sdk/sdk/src/test/kotlin/org/apache/airflow/sdk/DagSourceTest.kt
create mode 100644
java-sdk/sdk/src/test/kotlin/org/apache/airflow/sdk/IdValidationTest.kt
create mode 100644
java-sdk/sdk/src/test/kotlin/org/apache/airflow/sdk/SwitchTest.kt
create mode 100644
java-sdk/sdk/src/test/kotlin/org/apache/airflow/sdk/TriggerDagRunTest.kt
create mode 100644
java-sdk/sdk/src/test/kotlin/org/apache/airflow/sdk/execution/TriggerRunnerTest.kt
create mode 100644 kubernetes-tests/lang_sdk/Dockerfile.runtimes
copy manifests/.gitignore => kubernetes-tests/lang_sdk/airflowignore_all (100%)
rename kubernetes-tests/lang_sdk/dags/{lang_sdk_combined.py =>
lang_sdk_mixed_language.py} (68%)
rename
kubernetes-tests/lang_sdk/java_example/src/java/org/apache/airflow/k8sexample/{CombinedExample.java
=> MixedLanguageExample.java} (71%)
delete mode 100644 kubernetes-tests/lang_sdk/pod_templates/lang_sdk_golang.yaml
rename kubernetes-tests/lang_sdk/pod_templates/{lang_sdk_java.yaml =>
lang_sdk_worker.yaml} (57%)
delete mode 100644 kubernetes-tests/lang_sdk/stage_artifacts.py
create mode 100644 kubernetes-tests/lang_sdk/ts_example/.gitignore
copy {ts-sdk/example => kubernetes-tests/lang_sdk/ts_example}/package.json
(71%)
create mode 100644 kubernetes-tests/lang_sdk/ts_example/pnpm-lock.yaml
create mode 100644 kubernetes-tests/lang_sdk/ts_example/src/main.ts
copy {ts-sdk => kubernetes-tests/lang_sdk/ts_example}/tsconfig.json (54%)
rename
kubernetes-tests/tests/kubernetes_tests/{test_lang_sdk_coordinator_executor.py
=> test_lang_sdk_mixed_language.py} (78%)
create mode 100644
kubernetes-tests/tests/kubernetes_tests/test_lang_sdk_native_dag.py
create mode 100644 providers/amazon/docs/transfer/exasol_to_s3.rst
create mode 100644
providers/amazon/tests/system/amazon/aws/example_exasol_to_s3.py
create mode 100644 providers/common/ai/docs/supported_services.rst
create mode 100644
providers/common/ai/src/airflow/providers/common/ai/mixins/usage_budget.py
create mode 100644
providers/common/ai/src/airflow/providers/common/ai/plugins/www/tests/api.test.ts
create mode 100644
providers/common/ai/src/airflow/providers/common/ai/plugins/www/tests/main.test.mjs
create mode 100644
providers/common/ai/tests/unit/common/ai/mixins/test_usage_budget.py
create mode 100644
providers/common/ai/tests/unit/common/ai/test_provider_metadata.py
create mode 100755 scripts/ci/prek/check_applies_to_roots_in_sync.py
create mode 100755 scripts/ci/prek/check_yaml_importer_schema_versions.py
create mode 100755 scripts/ci/prek/generate_yaml_importer_schema.py
create mode 100755 scripts/ci/prek/sync_ts_sdk_schemas.py
create mode 100644 scripts/tests/ci/prek/test_check_applies_to_roots_in_sync.py
create mode 100644 scripts/tests/ci/prek/test_sync_ts_sdk_schemas.py
create mode 100644 task-sdk/src/airflow/sdk/definitions/_internal/loop.py
create mode 100644 task-sdk/src/airflow/sdk/execution_time/loop.py
rename kubernetes-tests/lang_sdk/Dockerfile.java =>
task-sdk/src/airflow/sdk/importers/yaml_importer/__init__.py (57%)
create mode 100644 task-sdk/src/airflow/sdk/importers/yaml_importer/migrator.py
create mode 100644 task-sdk/src/airflow/sdk/importers/yaml_importer/models.py
create mode 100644 task-sdk/src/airflow/sdk/importers/yaml_importer/parser.py
create mode 100644 task-sdk/src/airflow/sdk/importers/yaml_importer/schema.json
copy ts-sdk/example/dags/typescript_example.py =>
task-sdk/src/airflow/sdk/importers/yaml_importer/versions/__init__.py (59%)
create mode 100644 task-sdk/tests/task_sdk/definitions/_internal/test_loop.py
create mode 100644
task-sdk/tests/task_sdk/definitions/timetables/test_assets.py
create mode 100644 task-sdk/tests/task_sdk/execution_time/test_loop.py
copy {airflow-core/src/airflow/_shared =>
task-sdk/tests/task_sdk/importers/yaml_importer}/__init__.py (100%)
create mode 100644
task-sdk/tests/task_sdk/importers/yaml_importer/example_dag.yaml
create mode 100644
task-sdk/tests/task_sdk/importers/yaml_importer/test_migrator.py
create mode 100644
task-sdk/tests/task_sdk/importers/yaml_importer/test_parser.py
copy ts-sdk/api-docs/{supporting-types.ts => hitl-api.ts} (78%)
create mode 100644 ts-sdk/example/src/ai-approval.ts
create mode 100644 ts-sdk/example/src/hitl.ts
create mode 100644 ts-sdk/example/src/native.ts
copy {go-sdk => ts-sdk}/schema/supervisor-schema.json (97%)
delete mode 100755 ts-sdk/scripts/ci/prek/sync_dag_schema.py
create mode 100644 ts-sdk/src/coordinator/operator-runner.ts
rename {airflow-core/src/airflow/ui/src/components/SearchDags =>
ts-sdk/src/hitl}/index.ts (81%)
create mode 100644 ts-sdk/src/hitl/operator.ts
create mode 100644 ts-sdk/src/hitl/spec.ts
create mode 100644 ts-sdk/src/sdk/dag-graph.ts
copy ts-sdk/{api-docs/dag-authoring-api.ts => src/sdk/env.ts} (60%)
create mode 100644 ts-sdk/src/sdk/operator.ts
create mode 100644 ts-sdk/src/sdk/plain-json.ts
rename ts-sdk/src/{coordinator/trigger-runner.ts =>
sdk/trigger-dag-run-execute.ts} (67%)
create mode 100644 ts-sdk/tests/coordinator/operator-runner.test.ts
create mode 100644 ts-sdk/tests/hitl/operator.test.ts
create mode 100644 ts-sdk/tests/hitl/spec.test.ts
create mode 100644 ts-sdk/tests/sdk/hitl-inference.test.ts
create mode 100644 ts-sdk/tests/sdk/native-dag-example.test.ts