This is an automated email from the ASF dual-hosted git repository.
dependabot[bot] pushed a change to branch
dependabot/uv/dev/breeze/uv-dependency-updates-fc92e00398
in repository https://gitbox.apache.org/repos/asf/airflow.git
discard 0c767f7dd12 Bump the uv-dependency-updates group in /dev/breeze with 4
updates
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)
add 46e20a1a095 Halve the time to build docs locally by inlining spell
checking (#74549)
add 4912ed22043 Fix Breeze --mount-sources tests not mounting local core
tests (#74553)
add 21c522c515e Fix leaking state in task-sdk test_task_runner.py's tests
(#74606)
add f6761c5cb80 Update waiting tasks to the latest Dag version (#74592)
add 7f0d50cffc6 Add task log message when the Execution API is unreachable
(#70290)
add 9fc4143efc5 Disable psycopg3 auto-prepare by default behind connection
poolers (#74581)
add 72568207e57 Implement AIP-85 YAML importer based on the parser (#74586)
add e87c35e344e Fix 400 and 500s on POST /connections/defaults in
multi-team mode (#74615)
add 03f33a2da22 Make breeze verify tests pass on release branches (#74624)
add f47046fa239 Fix FAB Website permissions rows for the Grid and Graph
views (#74599)
add 2816cb01ab8 Keep the /auth mount path when ProxyFix applies
X-Forwarded-Prefix (#74603)
add c1e3b2fe770 Add missing Taiwanese Mandarin translations (#74545)
add fd4969bd3c7 Add an e2e test for the Java SDK task state store (#74403)
add 64ff9e40a40 Add REST API metrics (#64523)
add a52e9f96ecd Simplify the Quick Start for first-time local installs
(#72754)
add f6f267d84ce Highlight YAML Dag source in the Code tab (#74633)
add 7a1ba1f8aee Update FAB Website permissions rows for Airflow 3 views
(#74630)
add d267fbd5cae Bootstrap constraints generation for a Python without a
baseline file (#74596)
add 9bcb6fd3ca5 Respect `waiter_delay` & `waiter_max_attempts` in EKS
delete operators (#74000)
add 43129ecb633 Fix clearing with upstream and downstream selecting
unrelated tasks (#74548)
add 304607f94bb Require dns+nft egress mode for `OpenSandbox` network
policies (#74504)
add f511c0d1246 Add a document_classifier_deletable waiter with unit tests
(#74125)
add e043a279628 Go SDK: pack a bundle that registers no Dags at pack time
(#74637)
add a3c8ee41d04 Cover YAML-generated Go Dags in the go_sdk e2e test
(#74636)
add d479721a4a4 Java SDK: Rename annotation namespace from Builder to
Airflow (#74604)
add 62c4384e598 Add a Registry page listing durable and deferrable
operators across providers (#74420)
add 73fed8ab2ee Point the TaskFlow tutorial's retries section to resumable
tasks (#74608)
add 96988232c27 Fix dag list renders (#74426)
add 230cd8adc33 Let plugin views be scoped to specific Assets (#74609)
add fdf4adce2a3 UI: Use RadioCardRoot's typed onValueChange instead of DOM
casts (#73985)
add 2f3e60cb949 Support priority_weight in EdgeExecutor (#72057)
add 47d929c702b Fix `map_index_template` failing for numeric-looking
labels with `render_template_as_native_obj` (#71592)
add f792bd60a98 Do not abort Dag run creation when a deadline alert fails
(#68917)
add 6fc06c60011 UI: Add Select Recent Configurations dropdown to Trigger
Dag form (#70413)
add 518f8d2e7be Lazy-load the Code tab grammar from the Dag's stored
language (#74643)
add 417a33b5432 UI: Fold draining into the Dags Paused state filter
(#74668)
add d8efc66ea76 Add a Model tab to the task-instance page for `common.ai`
(#74334)
add cd9f233f6d4 Add support for forwarding CeleryExecutor task logs to
stdout (#69597)
add dac956c667c Document hosted OpenAI-compatible services for common.ai
(#74620)
add 3a08e9b11e3 Document Managed Agents as a first-party feature (#72306)
add 21c858eb67b Fix missing task.queued_duration metric in Airflow 3
(#67592)
add eee6e2a4a50 Resume Strands agents from their last checkpoint when a
task retries (#74404)
add 06c7f338f95 Decode base64 for bytes-typed `HookToolset` parameters
(#70433)
add f46a370a95b Stop the secrets backend lookup from importing the task
runner outside tasks (#74641)
add c5c2f194b57 Add Boat backend for sandbox tools (#71725)
add c192bdad5fd Show serializer schema in Dag version diff only when it
differs (#74683)
add 51f1b5b16d8 TS SDK: Reject triggerDagRun tasks in dag.if and
dag.switch (#74492)
add 09b4b6307fc Document agent memory across Dag runs for `common.ai`
(#74681)
add 75455fda1ba Explain why common.ai is built on Pydantic AI (#74680)
add 945b7949328 Fix deprecated provider lookup in Amazon AWS hooks (#74480)
add 861ca7ffc18 Bump the fab-ui-package-updates group across 1 directory
with 3 updates (#74670)
add 96da58058ef Add Islo backend for sandbox tools (#71672)
add 68a4c3177f9 Add AirflowDurability capability for durable agent replay
across task retries (#74385)
add 3cf3f4b2a9d Refuse a HITL response for a request the task has since
replaced (#74688)
add 1461ddfdf8a Grant Keycloak SuperAdmin access to teamless resources
(#74640)
add 142f12bd2b9 Update remaining FAB Website permissions rows for Airflow
3 (#74653)
add 2212818399e Graduate Common AI features to stable ahead of 1.0 (#74679)
add a73ffaedbf1 Add scoped Execution API access for Dag processors (#74370)
add 275aa6959f3 Support `abfs://` and `abfss://` URIs in DataFusion Azure
Blob Storage (#74228)
add 0652ebe94e0 Fix deferred dbt Cloud tasks failing with tenacity
retry_args (#74489)
add 3a23d4429e5 Clarify what common.ai message_history does and does not
cover (#74625)
add d6bb744aea1 Validate the connection type in PydanticAIHook.get_hook
(#74626)
add 2f62550383a Add a Why Common AI page comparing the provider with a
plain task (#74685)
add 2bf8c2e6053 Let an agent ask for tool approval in more than one step
(#74686)
add c245439c5aa Add an example of a decision model approving an agent's
tool calls (#74697)
add bbcf4d58dea Move Common AI provider from incubation to production
lifecycle (#74705)
add 2002ba522e6 Graduate durable agent execution to stable in Common AI
(#74704)
add 4c39202d20e DateTimeSensorAsync support start_from_trigger and
templated target_time (#73928)
add a1c3755a23d Graduate ClassifierRetryPolicy to stable in Common AI
(#74707)
add 63f5845dd20 Migrate Task SDK to `httpx2` (#73116)
add 350761ce775 Mark decision_policy experimental on the decision models
page and finish the ClassifierRetryPolicy stability row (#74713)
add de856e4aa44 Fix the common.ai message_history trimming example and
link the memory page (#74706)
add d79c0b18f35 Fix ORM models failing to configure in processes that skip
database setup (#74642)
add dd607da5ab3 Add Anthropic tool runner adapter for `common.ai` toolsets
(#73962)
add e288b73c85b Check all names before airflow roles import writes
anything (#74711)
add 90ea1b7ed86 Add EmrServerlessGetSessionEndpointOperator to Amazon
provider (#70766)
add 98391ff597b Add `OpenShell` backend for sandbox tools (#73961)
add 64c207d56f8 Document how common.ai agent tasks recover from provider
and worker failures (#74708)
add 1f70ead81ef Fix /ui/dags recent-runs query degradation on large,
skewed dag_run tables (#74401)
add 190befa57c1 Ask the model again when a durable agent's retry would
replay its rejected answers (#74720)
add 7993ee19955 Remove `agent_params` from LLM operators so they cannot
run tools (#74721)
add 3259e8960f8 Mask tool output from every capability in Common AI agents
(#73993)
add f31684af859 Add the manifest format for manifest-backed versioned Dag
bundles (#72476)
add bcbb825e199 Stop rejecting valid non-ASCII Anthropic batches as too
large (#74662)
add 7e3b2c64f1d UI: Keep JSON text in string HITL params instead of
showing [object Object] (#74702)
add 0b7aed6491d Add a feature map to the Common AI docs (#74723)
add ea805e3bfb0 UI: Fix clearing a task instance doing nothing after
Confirm (#74725)
add 7f733c87abf Prepare ad-hoc providers release 2026-10-14 (#74733)
add d189eac87c1 Cover YAML-generated Java Dags in the java_sdk e2e test
(#74710)
add 22f86cb5514 Snowflake, Databricks: emit query lineage via OpenLineage
public API (#73655)
add 6a91a17be4e Fix Dag processor client compatibility with httpx2 (#74731)
add dd7e8ab8321 Fail the task when a reviewed output no longer matches
`output_type` (#74473)
add 27433bf4830 Show Dag version diff values-hidden pill only when values
are hidden (#74746)
add df5cf9ecb56 UI: Add clicked tags to the Dags list filters instead of
replacing them (#74622)
add a31a6a340e3 Render docs mermaid diagrams at build time so they show on
airflow.apache.org (#74757)
add c72d0072a10 Close German Translation Gaps 2026-10-14 (#74760)
add 42945d62b1f Upgrade Task Loop UX (#74671)
add fa7c5899a99 Let LLMBatchOperator request_params be templated (#74751)
add 5b32faffff8 Implement delta argument coercion (#74749)
add 4e8ab38306f Fix HookToolset calls to hook methods that take a datetime
(#74759)
add 6a134fa4d03 dbt Cloud: emit OpenLineage events via the OpenLineage
public API (#74754)
add a87c6ddb52a Allow downgrading past the TI ownership migration when
data is present (#74407)
add 937dfb6894d Fix CI image build after mprocs was renamed to dekit
(#74715)
add 0a66ba0c468 Update my CODEOWNERS entries to focus on AI providers and
the registry (#74795)
add cf839aca896 Fix JWT token not refreshed when token expires mid-request
(#68499)
add 5a6ab34fd51 Fix flaky in-process Execution API transport lifecycle
test on MySQL (#74785)
add 868d791a17c Add an OpenAI Agents SDK adapter for `common.ai` toolsets
(#74767)
add 6cf83327d46 UI: Drop the loading spinner for base React plugins
(#74762)
add 04572ba9500 Run the OpenAI Agents adapter tests in the agent framework
CI job (#74768)
add 7a55044c0fa Re-enable backporting to v3-4-test for the 3.4.0 RC phase
(#74798)
add bb140716849 Re lock uv.lock after new provider versions got stampped.
(#74799)
add c65451f5397 Walk through the reviewer's side of Common AI approval
gates (#74737)
add 5ab698987f9 Allow durable agent execution with a `CodeMode` capability
(#74735)
add bbf2c5b1c47 Fix Lang-SDK decoder typing for pydantic 2.14 TypeForm
signature (#74628)
add e2237bfc7ee UI: Guard the remaining RadioCardRoot values instead of
casting (#74743)
add 7c2c9226e0f Let retry policies reschedule a task without using a retry
(#74719)
add fc12cb2ca8f Document progressive tool disclosure for Common AI
toolsets (#74736)
add 098d0174731 Report a Dag whose timetable fails to load as an import
error (#74709)
add 61f1d4b85e1 Resolve a trigger's XCom requests as its deferred task
instance (#74772)
add 637b741f1a6 Pass Dag runs directly to Deadline references (#70714)
add 53c83b952b1 Record OpenAI Agents SDK traces as the Airflow task's
OpenTelemetry spans (#74769)
add 03f45f3ad51 Update the DMS replication_task_modified waiter states
(#74522)
add 62641fa9ac0 Fix CLI --bundle-name finding no Dags in Git bundles
(#73377)
add efb49f5e36d Stop prek hooks changing uv.lock and fail CI when it is
stale (#74803)
add 5941f0c19e0 Update providers metadata 2026-10-13 (#74648)
add ce0a1c474c9 add WasbDagBundle to load Dags from Azure Blob Storage
(#67016)
add 665b94999c3 Java SDK: Reject byte arrays instead of letting the task
hang (#74218)
add e1d881b5c4f Fix `SSHRemoteJobOperator` mangling environment values
with spaces or shell characters (#74810)
add 736c349cdca Fingerprint durable agent steps that hold sets or values
that are not JSON (#71575)
add 6997dc76fe5 Add async aget_conn and acreate_embeddings to OpenAIHook
(#74149)
add 91a8ab6950a Fix airflowctl pools export/import dropping pool team
ownership (#73132)
add d5ba49cbd6a Close German Translation Gaps 2026-10-15 (#74802)
add 4c4bab01e06 Allow loop gates to add human-readable decisions (#74806)
add 238bb6ee2bd Complete Hebrew UI translations 2026-10-16 (#74467)
add 4c98adf9e20 Skip the scheduler's Dag lookup for Dag runs with no
callback to send (#74835)
add 896f3711bdd Update Magpie floor to 0.9.0.dev202610140816 (#74815)
add 028a4da8672 Add Map Index search to dag breadcrumb (#74763)
add a23aa81c62e Fix flaky static checks crashing on ts-sdk node_modules
during editable build (#74117)
add d6d425da028 Declare pyarrow for Parquet output of SqlToS3Operator
(#74691)
add 0f461366ab4 Bump the uv-dependency-updates group across 1 directory
with 4 updates
This update added new revisions after undoing existing revisions.
That is to say, some revisions that were in the old version of the
branch are not in the new version. This situation occurs
when a user --force pushes a change and generates a repository
containing something like this:
* -- * -- B -- O -- O -- O (0c767f7dd12)
\
N -- N -- N
refs/heads/dependabot/uv/dev/breeze/uv-dependency-updates-fc92e00398
(0f461366ab4)
You should already have received notification emails for all of the O
revisions, and so the following emails describe only the N revisions
from the common base, B.
Any revisions marked "omit" are not gone; other references still
refer to them. Any revisions marked "discard" are gone forever.
No new revisions were added by this update.
Summary of changes:
.agents/skills/airflow-java-sdk/SKILL.md | 4 +-
.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 | 36 +-
.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 +-
.apache-magpie.lock | 6 +-
.github/CODEOWNERS | 4 +-
.github/boring-cyborg.yml | 29 +-
.github/workflows/agent-framework-tests.yml | 4 +-
.github/workflows/automatic-backport.yml | 2 +-
.github/workflows/ci-amd.yml | 36 +
.github/workflows/ci-arm.yml | 36 +
.github/workflows/ci-image-checks.yml | 27 +-
.github/workflows/k8s-tests.yml | 36 +-
.github/workflows/publish-docs-to-s3.yml | 9 +-
.github/workflows/release-constraints.yml | 21 +-
.pre-commit-config.yaml | 36 +-
.rat-excludes | 1 +
Dockerfile | 3 +
Dockerfile.ci | 9 +-
RELEASE_NOTES.rst | 24 +
.../administration-and-deployment/dag-bundles.rst | 3 +
.../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 | 7 +-
.../task-and-asset-state-store.rst | 4 +-
.../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/java.rst | 70 +-
.../loops-and-mapped-tasks.rst | 61 +
.../docs/authoring-and-scheduling/loops.rst | 414 ++++
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 | 91 +-
airflow-core/docs/howto/deadline-alerts.rst | 25 +-
airflow-core/docs/howto/set-up-database.rst | 8 +-
airflow-core/docs/installation/index.rst | 39 +-
airflow-core/docs/migrations-ref.rst | 13 +-
airflow-core/docs/public-airflow-interface.rst | 16 +
.../docs/security/jwt_token_authentication.rst | 131 +-
airflow-core/docs/security/security_model.rst | 9 +-
airflow-core/docs/start.rst | 233 +--
airflow-core/docs/tutorial/hitl.rst | 6 +-
airflow-core/docs/tutorial/taskflow.rst | 5 +
airflow-core/newsfragments/67592.bugfix.rst | 1 +
airflow-core/newsfragments/68517.significant.rst | 14 +
airflow-core/newsfragments/68917.bugfix.rst | 1 +
airflow-core/newsfragments/69469.improvement.rst | 1 -
airflow-core/newsfragments/69469.significant.rst | 26 +
airflow-core/newsfragments/69597.feature.rst | 1 +
airflow-core/newsfragments/70714.significant.rst | 1 +
airflow-core/newsfragments/73116.significant.rst | 11 +
airflow-core/newsfragments/73746.significant.rst | 22 +
airflow-core/newsfragments/74278.feature.rst | 2 +-
airflow-core/newsfragments/74709.bugfix.rst | 1 +
airflow-core/newsfragments/task-loops.feature.rst | 1 +
airflow-core/pyproject.toml | 5 +-
.../src/airflow/api/common/airflow_health.py | 4 +-
airflow-core/src/airflow/api_fastapi/app.py | 10 +
.../auth/managers/simple/ui/package.json | 6 +-
.../auth/managers/simple/ui/pnpm-lock.yaml | 242 +--
.../src/airflow/api_fastapi/common/http_metrics.py | 137 ++
.../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 +
.../src/airflow/api_fastapi/core_api/app.py | 7 +-
.../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 +
.../api_fastapi/core_api/datamodels/hitl.py | 11 +-
.../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 | 75 +-
.../core_api/datamodels/ui/structure.py | 4 +
.../api_fastapi/core_api/datamodels/xcom.py | 10 +-
.../api_fastapi/core_api/openapi/_private_ui.yaml | 681 +++++++
.../core_api/openapi/v2-rest-api-generated.yaml | 1173 +++++++++++-
.../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 | 109 +-
.../api_fastapi/core_api/routes/public/log.py | 27 +-
.../core_api/routes/public/task_instances.py | 579 ++++--
.../core_api/routes/public/task_state_store.py | 105 +-
.../api_fastapi/core_api/routes/public/xcom.py | 137 +-
.../api_fastapi/core_api/routes/ui/__init__.py | 2 +
.../airflow/api_fastapi/core_api/routes/ui/dags.py | 43 +-
.../api_fastapi/core_api/routes/ui/execution.py | 112 ++
.../api_fastapi/core_api/routes/ui/gantt.py | 34 +-
.../airflow/api_fastapi/core_api/routes/ui/grid.py | 157 +-
.../core_api/routes/ui/partitioned_dag_runs.py | 11 +-
.../src/airflow/api_fastapi/core_api/security.py | 26 +-
.../core_api/services/public/dag_run.py | 119 +-
.../core_api/services/public/event_logs.py | 10 +-
.../core_api/services/public/task_coordinates.py | 256 +++
.../core_api/services/public/task_instances.py | 387 +++-
.../api_fastapi/core_api/services/ui/execution.py | 74 +
.../api_fastapi/core_api/services/ui/grid.py | 315 +++-
.../api_fastapi/core_api/services/ui/task_group.py | 15 +
.../airflow/api_fastapi/execution_api/AGENTS.md | 2 +-
.../src/airflow/api_fastapi/execution_api/app.py | 55 +-
.../execution_api/dag_processor_tokens.py | 116 ++
.../api_fastapi/execution_api/datamodels/job.py | 94 +
.../execution_api/datamodels/taskinstance.py | 63 +-
.../api_fastapi/execution_api/datamodels/token.py | 90 +-
.../api_fastapi/execution_api/in_process.py | 32 +-
.../api_fastapi/execution_api/routes/__init__.py | 2 +
.../execution_api/routes/asset_state_store.py | 40 +-
.../execution_api/routes/connections.py | 14 +-
.../api_fastapi/execution_api/routes/dag_runs.py | 15 +-
.../api_fastapi/execution_api/routes/jobs.py | 317 ++++
.../execution_api/routes/task_instances.py | 577 ++++--
.../execution_api/routes/task_reschedules.py | 11 +-
.../execution_api/routes/task_state_store.py | 8 +-
.../api_fastapi/execution_api/routes/variables.py | 26 +-
.../api_fastapi/execution_api/routes/xcoms.py | 448 ++++-
.../airflow/api_fastapi/execution_api/security.py | 224 ++-
.../api_fastapi/execution_api/versions/__init__.py | 14 +
.../execution_api/versions/v2026_10_30.py | 47 +
.../versions/v2026_10_30_xcom_params.py | 28 +-
.../execution_api/versions/v2027_02_28.py | 37 +-
.../src/airflow/api_fastapi/logging/decorators.py | 39 +
airflow-core/src/airflow/assets/manager.py | 33 +-
airflow-core/src/airflow/cli/cli_config.py | 34 +
.../src/airflow/cli/commands/dag_command.py | 11 +-
.../airflow/cli/commands/dag_processor_command.py | 4 +-
.../cli/commands/dag_processor_token_command.py | 109 ++
.../airflow/cli/commands/state_store_command.py | 6 +-
.../src/airflow/cli/commands/task_command.py | 103 +-
.../src/airflow/config_templates/config.yml | 43 +-
.../src/airflow/dag_processing/api_client.py | 413 ++++
.../src/airflow/dag_processing/bundles/manager.py | 7 +-
.../src/airflow/dag_processing/bundles/manifest.py | 571 ++++++
.../src/airflow/dag_processing/collection.py | 46 +-
airflow-core/src/airflow/dag_processing/dagbag.py | 31 +-
.../airflow/dag_processing/lang_sdk_processor.py | 11 +-
.../src/airflow/dag_processing/processor.py | 14 +-
.../airflow/example_dags/example_retry_policy.py | 26 +-
.../src/airflow/example_dags/example_task_loops.py | 116 ++
.../src/airflow/executors/base_executor.py | 12 +-
.../src/airflow/executors/workloads/task.py | 23 +-
airflow-core/src/airflow/jobs/job.py | 7 +-
.../src/airflow/jobs/scheduler_job_runner.py | 300 ++-
.../src/airflow/jobs/triggerer_job_runner.py | 95 +-
airflow-core/src/airflow/migrations/utils.py | 72 +
.../0142_3_4_0_unify_task_attempt_ownership.py | 289 ++-
.../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 +
.../versions/0147_3_5_0_add_session_id_to_job.py | 59 +
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/base.py | 11 +-
airflow-core/src/airflow/models/dagrun.py | 637 ++++++-
airflow-core/src/airflow/models/dagwarning.py | 1 +
airflow-core/src/airflow/models/deadline.py | 139 +-
airflow-core/src/airflow/models/dynamic_region.py | 886 +++++++++
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 | 831 +++++++-
airflow-core/src/airflow/models/trigger.py | 35 +-
airflow-core/src/airflow/models/xcom.py | 71 +-
.../airflow/observability/metrics/stats_utils.py | 10 +
airflow-core/src/airflow/plugins_manager.py | 7 +-
.../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 | 294 ++-
.../airflow/serialization/definitions/deadline.py | 99 +-
.../serialization/definitions/mappedoperator.py | 55 +-
.../serialization/definitions/operatorlink.py | 8 +-
.../airflow/serialization/definitions/taskgroup.py | 10 +
.../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/settings.py | 65 +-
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 | 176 +-
.../ui/openapi-gen/queries/ensureQueryData.ts | 265 ++-
.../src/airflow/ui/openapi-gen/queries/prefetch.ts | 265 ++-
.../src/airflow/ui/openapi-gen/queries/queries.ts | 371 +++-
.../src/airflow/ui/openapi-gen/queries/suspense.ts | 265 ++-
.../airflow/ui/openapi-gen/requests/schemas.gen.ts | 1025 +++++++++-
.../ui/openapi-gen/requests/services.gen.ts | 372 +++-
.../airflow/ui/openapi-gen/requests/types.gen.ts | 550 +++++-
.../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/browse.json | 2 +-
.../airflow/ui/public/i18n/locales/ca/common.json | 16 +-
.../ui/public/i18n/locales/ca/components.json | 40 +-
.../src/airflow/ui/public/i18n/locales/ca/dag.json | 28 +-
.../airflow/ui/public/i18n/locales/ca/dags.json | 18 +-
.../ui/public/i18n/locales/ca/dashboard.json | 14 +-
.../airflow/ui/public/i18n/locales/ca/hitl.json | 8 +-
.../airflow/ui/public/i18n/locales/de/admin.json | 5 +-
.../airflow/ui/public/i18n/locales/de/browse.json | 4 +-
.../airflow/ui/public/i18n/locales/de/common.json | 34 +-
.../ui/public/i18n/locales/de/components.json | 48 +-
.../src/airflow/ui/public/i18n/locales/de/dag.json | 60 +-
.../airflow/ui/public/i18n/locales/de/dags.json | 30 +-
.../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 | 99 +-
.../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 | 27 +-
.../ui/public/i18n/locales/en/components.json | 32 +-
.../src/airflow/ui/public/i18n/locales/en/dag.json | 61 +-
.../airflow/ui/public/i18n/locales/en/dags.json | 23 +-
.../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 | 38 +-
.../airflow/ui/public/i18n/locales/fr/dags.json | 18 +-
.../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 | 39 +-
.../airflow/ui/public/i18n/locales/he/assets.json | 19 +-
.../airflow/ui/public/i18n/locales/he/browse.json | 35 +
.../airflow/ui/public/i18n/locales/he/common.json | 164 +-
.../ui/public/i18n/locales/he/components.json | 85 +-
.../src/airflow/ui/public/i18n/locales/he/dag.json | 144 +-
.../airflow/ui/public/i18n/locales/he/dags.json | 55 +-
.../ui/public/i18n/locales/he/dashboard.json | 36 +-
.../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 | 133 +-
.../airflow/ui/public/i18n/locales/ko/dags.json | 47 +-
.../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 | 106 +-
.../airflow/ui/public/i18n/locales/pl/dags.json | 39 +-
.../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 | 18 +-
.../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 | 20 +-
.../ui/public/i18n/locales/zh-TW/components.json | 30 +-
.../airflow/ui/public/i18n/locales/zh-TW/dag.json | 75 +-
.../airflow/ui/public/i18n/locales/zh-TW/dags.json | 23 +-
.../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 | 18 +-
.../ui/src/components/AssetProgressCell.test.tsx | 70 +
.../ui/src/components/AssetProgressCell.tsx | 15 +-
.../airflow/ui/src/components/Breadcrumb/Crumb.tsx | 22 +-
.../ui/src/components/Breadcrumb/CrumbSwitcher.tsx | 36 +-
.../ui/src/components/Clear/Run/ClearRunDialog.tsx | 68 +-
.../TaskInstance/ClearGroupTaskInstanceDialog.tsx | 51 +-
.../ClearTaskInstanceConfirmationDialog.tsx | 45 +-
.../TaskInstance/ClearTaskInstanceDialog.test.tsx | 404 +++-
.../Clear/TaskInstance/ClearTaskInstanceDialog.tsx | 396 ++--
.../src/components/DagActions/RunBackfillForm.tsx | 11 +-
.../ui/src/components/DataTable/DataTable.test.tsx | 8 -
.../ui/src/components/DataTable/DataTable.tsx | 6 +-
.../airflow/ui/src/components/DrainingBadge.tsx | 4 +-
.../ui/src/components/DurationChart.test.tsx | 36 +-
.../airflow/ui/src/components/DurationChart.tsx | 10 +-
.../components/FilterBar/filters/LoopFilter.tsx | 167 ++
.../FilterBar/filters/loopParams.test.ts | 73 +
.../src/components/FilterBar/filters/loopParams.ts | 60 +
.../FilterBar/filters/pausedStateParams.ts | 82 +
.../ui/src/components/Graph/TaskLink.test.tsx | 6 +-
.../airflow/ui/src/components/Graph/TaskLink.tsx | 24 +-
.../airflow/ui/src/components/Graph/TaskNode.tsx | 7 +
.../ui/src/components/Graph/elkGraphUtils.ts | 6 +
.../ui/src/components/Graph/reactflowUtils.ts | 2 +
.../src/components/HITLReview/HITLReviewDetail.tsx | 8 +-
.../ui/src/components/LoopDecisionReason.tsx | 40 +-
.../airflow/ui/src/components/LoopOptionLabel.tsx | 76 +
.../TaskInstance/MarkTaskInstanceAsDialog.test.tsx | 61 +-
.../TaskInstance/MarkTaskInstanceAsDialog.tsx | 14 +-
.../MonacoEditor/configureMonaco.test.ts | 34 +-
.../src/components/MonacoEditor/configureMonaco.ts | 120 +-
.../src/airflow/ui/src/components/SearchSelect.tsx | 113 +-
.../ui/src/components/TaskInstanceTooltip.test.tsx | 26 +
.../ui/src/components/TaskInstanceTooltip.tsx | 45 +-
.../src/airflow/ui/src/components/TaskName.tsx | 21 +
.../ui/src/components/TaskTrySelect.test.tsx | 18 +-
.../airflow/ui/src/components/TaskTrySelect.tsx | 31 +-
.../src/airflow/ui/src/components/TogglePause.tsx | 2 +-
.../TriggerDag/RecentConfigSelect.test.tsx | 152 ++
.../components/TriggerDag/RecentConfigSelect.tsx | 113 ++
.../components/TriggerDag/TriggerDAGForm.test.tsx | 119 +-
.../src/components/TriggerDag/TriggerDAGForm.tsx | 78 +-
.../src/components/TriggerDag/TriggerDAGModal.tsx | 9 +-
.../airflow/ui/src/components/TriggerDag/types.ts | 5 +-
.../src/airflow/ui/src/constants/filterConfigs.tsx | 34 +-
.../ui/src/constants/reprocessBehaviourParams.ts | 8 +-
.../src/airflow/ui/src/constants/searchParams.ts | 6 +
.../ui/src/hooks/useHITLReviewTabs.test.tsx | 58 +
.../src/airflow/ui/src/hooks/useHITLReviewTabs.ts | 26 +-
.../src/airflow/ui/src/hooks/useLoopRuleStats.tsx | 61 +
.../src/airflow/ui/src/hooks/useNearViewport.ts | 25 +-
.../ui/src/hooks/usePluginAppliesToContext.test.ts | 57 +-
.../ui/src/hooks/usePluginAppliesToContext.ts | 18 +-
.../airflow/ui/src/hooks/useRequiredActionTabs.ts | 55 +-
.../ui/src/hooks/useResolvePassCoordinate.test.ts | 110 ++
.../ui/src/hooks/useResolvePassCoordinate.ts | 87 +
.../ui/src/hooks/useSelectedVersion.test.tsx | 73 +
.../src/airflow/ui/src/hooks/useSelectedVersion.ts | 3 +
.../useTaskInstanceCoordinates.ts} | 24 +-
.../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 | 99 +-
.../ui/src/layouts/Details/DagBreadcrumb.tsx | 98 +-
.../airflow/ui/src/layouts/Details/Gantt/Gantt.tsx | 1 -
.../layouts/Details/Gantt/GanttTimeline.test.tsx | 257 ++-
.../ui/src/layouts/Details/Gantt/GanttTimeline.tsx | 63 +-
.../ui/src/layouts/Details/Gantt/utils.test.ts | 122 +-
.../airflow/ui/src/layouts/Details/Gantt/utils.ts | 60 +-
.../airflow/ui/src/layouts/Details/Grid/Bar.tsx | 3 +-
.../airflow/ui/src/layouts/Details/Grid/Grid.tsx | 9 +-
.../ui/src/layouts/Details/Grid/GridButton.tsx | 4 +-
.../ui/src/layouts/Details/Grid/GridTI.test.tsx | 11 +
.../airflow/ui/src/layouts/Details/Grid/GridTI.tsx | 14 +-
.../layouts/Details/Grid/TaskInstancesColumn.tsx | 1 +
.../ui/src/layouts/Details/Grid/TaskNames.tsx | 24 +-
.../layouts/Details/IterationSwitcherButton.tsx | 121 ++
.../src/layouts/Details/MapIndexSwitcherButton.tsx | 98 +
.../src/airflow/ui/src/layouts/Details/NavTabs.tsx | 87 +-
.../ui/src/layouts/Details/SearchDagRuns.test.tsx | 38 +-
.../ui/src/layouts/Details/SearchDagRuns.tsx | 49 +-
.../ui/src/layouts/Details/SearchDags.test.tsx | 135 +-
.../airflow/ui/src/layouts/Details/SearchDags.tsx | 74 +-
.../src/layouts/Details/SearchMapIndexes.test.tsx | 192 ++
.../ui/src/layouts/Details/SearchMapIndexes.tsx | 168 ++
.../ui/src/layouts/Details/searchOptions.test.ts | 41 +-
.../ui/src/layouts/Details/searchOptions.ts | 59 +-
.../src/airflow/ui/src/mocks/handlers/dags.ts | 90 +-
.../Asset/AssetStateStore/AssetStateStore.test.tsx | 123 ++
.../Asset/AssetStateStore/AssetStateStore.tsx | 17 +-
.../src/pages/Asset/CreateAssetEventModal.test.tsx | 24 +-
.../ui/src/pages/Asset/CreateAssetEventModal.tsx | 12 +-
.../ui/src/pages/AssetsList/AssetsList.test.tsx | 5 +-
.../airflow/ui/src/pages/AssetsList/AssetsList.tsx | 3 +-
.../ui/src/pages/Connections/Connections.tsx | 3 +-
.../pages/Dag/Backfills/BackfillDagRunsModal.tsx | 3 +-
.../ui/src/pages/Dag/Backfills/Backfills.tsx | 15 +-
.../src/airflow/ui/src/pages/Dag/Tasks/Tasks.tsx | 2 -
.../pages/Dag/Versions/VersionDiff.i18n.test.tsx | 26 +-
.../ui/src/pages/Dag/Versions/VersionDiff.test.tsx | 37 +-
.../ui/src/pages/Dag/Versions/VersionDiff.tsx | 30 +-
.../airflow/ui/src/pages/DagBundle/BundleFiles.tsx | 3 +-
.../airflow/ui/src/pages/DagBundles/DagBundles.tsx | 3 +-
.../src/airflow/ui/src/pages/DagsList/DagCard.tsx | 7 +-
.../airflow/ui/src/pages/DagsList/DagTags.test.tsx | 124 ++
.../src/airflow/ui/src/pages/DagsList/DagTags.tsx | 62 +-
.../DagsList/DagsFilters/DagsFilters.test.tsx | 80 +-
.../src/pages/DagsList/DagsFilters/DagsFilters.tsx | 1 -
.../ui/src/pages/DagsList/DagsList.test.tsx | 14 +-
.../src/airflow/ui/src/pages/DagsList/DagsList.tsx | 218 ++-
.../ui/src/pages/DagsList/DagsListColumns.tsx | 251 +--
.../src/pages/DagsList/DagsListCountsContext.tsx | 73 +
.../src/pages/DagsList/PartitionScheduleModal.tsx | 4 +-
.../pages/DagsList/RecentTaskStateCountsColumn.tsx | 35 +-
.../src/airflow/ui/src/pages/Deadlines/index.tsx | 3 +-
.../airflow/ui/src/pages/Events/Events.test.tsx | 61 +
.../src/airflow/ui/src/pages/Events/Events.tsx | 11 +-
.../pages/GroupTaskInstance/GroupTaskInstances.tsx | 10 +-
.../ui/src/pages/GroupTaskInstance/Header.tsx | 19 +
.../LoopIterations/loopUtils.test.ts | 90 +
.../GroupTaskInstance/LoopIterations/loopUtils.ts} | 40 +-
.../ui/src/pages/GroupTaskInstance/index.ts | 2 +-
.../GroupTaskInstance/useLoopOutcomeStats.test.tsx | 64 +
.../GroupTaskInstance/useLoopOutcomeStats.tsx | 84 +
.../HITLTaskInstances/HITLResponseForm.test.tsx | 36 +-
.../pages/HITLTaskInstances/HITLResponseForm.tsx | 8 +-
airflow-core/src/airflow/ui/src/pages/Jobs.tsx | 3 +-
.../src/airflow/ui/src/pages/ReactPlugin.test.tsx | 45 +-
.../src/airflow/ui/src/pages/ReactPlugin.tsx | 8 +-
.../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 | 6 +-
.../ui/src/pages/TaskInstance/Header.test.tsx | 66 +-
.../airflow/ui/src/pages/TaskInstance/Header.tsx | 51 +-
.../pages/TaskInstance/Logs/ExternalLogLink.tsx | 6 +-
.../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 | 122 +-
.../TaskInstances/BulkClearTaskInstancesButton.tsx | 126 +-
.../BulkDeleteTaskInstancesButton.tsx | 3 +
.../BulkMarkTaskInstancesAsButton.tsx | 13 +-
.../DeleteTaskInstanceButton.test.tsx | 58 +
.../TaskInstances/DeleteTaskInstanceButton.tsx | 3 +
.../src/pages/TaskInstances/TaskInstances.test.tsx | 98 +-
.../ui/src/pages/TaskInstances/TaskInstances.tsx | 42 +-
.../pages/TaskInstances/TaskInstancesFilter.tsx | 33 +-
.../ClearAllTaskStateStoreButton.tsx | 4 +-
.../TaskStateStore/DeleteTaskStateStoreButton.tsx | 4 +-
.../pages/TaskStateStore/TaskStateStore.test.tsx | 114 ++
.../ui/src/pages/TaskStateStore/TaskStateStore.tsx | 7 +-
.../TaskStateStore/TaskStateStoreModal.test.tsx | 81 +
.../pages/TaskStateStore/TaskStateStoreModal.tsx | 14 +-
.../ui/src/pages/Variables/ImportVariablesForm.tsx | 21 +-
.../airflow/ui/src/pages/Variables/Variables.tsx | 3 +-
.../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 | 18 +
.../src/airflow/ui/src/pages/XCom/XCom.tsx | 28 +-
.../airflow/ui/src/pages/XCom/XComEntry.test.tsx | 46 +-
.../src/airflow/ui/src/pages/XCom/XComEntry.tsx | 15 +-
.../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 +-
.../src/airflow/ui/src/queries/useDags.tsx | 3 +-
.../src/airflow/ui/src/queries/useGridStructure.ts | 32 +-
.../src/airflow/ui/src/queries/useIsLoopGroup.ts | 104 +
.../src/airflow/ui/src/queries/useLogs.test.ts | 44 +-
.../src/airflow/ui/src/queries/useLogs.tsx | 22 +-
.../ui/src/queries/useLoopFilterOptions.test.ts | 109 ++
.../airflow/ui/src/queries/useLoopFilterOptions.ts | 180 ++
.../src/airflow/ui/src/queries/useLoopHistory.ts | 13 +-
.../airflow/ui/src/queries/useLoopSummary.test.tsx | 93 +
.../src/airflow/ui/src/queries/useLoopSummary.ts | 82 +
.../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 | 18 +-
airflow-core/src/airflow/ui/src/router.tsx | 4 +-
.../ui/src/system-components/Modal/Modal.test.tsx | 29 +-
.../ui/src/system-components/Modal/Modal.tsx | 33 +-
.../airflow/ui/src/utils/executionParams.test.ts | 59 +
.../src/airflow/ui/src/utils/executionParams.ts | 64 +
airflow-core/src/airflow/ui/src/utils/hitl.test.ts | 48 +-
airflow-core/src/airflow/ui/src/utils/hitl.ts | 20 +-
airflow-core/src/airflow/ui/src/utils/index.ts | 1 +
.../src/airflow/ui/src/utils/isOneOf.test.ts | 17 +-
.../index.ts => utils/isOneOf.ts} | 10 +-
.../src/airflow/ui/src/utils/links.test.ts | 15 +
airflow-core/src/airflow/ui/src/utils/links.ts | 18 +-
.../src/airflow/ui/src/utils/loopTaskInstance.ts | 10 +-
airflow-core/src/airflow/ui/src/utils/option.ts | 10 +-
.../airflow/ui/src/utils/pluginAppliesTo.test.ts | 21 +
.../src/airflow/ui/src/utils/pluginAppliesTo.ts | 6 +-
.../src/airflow/ui/src/utils/useFiltersHandler.ts | 2 +-
airflow-core/src/airflow/ui/src/vite-env.d.ts | 23 +-
airflow-core/src/airflow/utils/cli.py | 2 +
airflow-core/src/airflow/utils/db.py | 6 +-
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 +++
.../src/airflow/utils/orm_event_handlers.py | 4 -
airflow-core/src/airflow/utils/sqlalchemy.py | 62 +-
.../tests/unit/always/test_example_dags.py | 2 +
.../tests/unit/always/test_project_structure.py | 3 +-
.../unit/api_fastapi/common/test_http_metrics.py | 297 +++
.../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_connections.py | 8 +
.../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 | 229 +++
.../api_fastapi/core_api/routes/public/test_log.py | 129 +-
.../core_api/routes/public/test_plugins.py | 11 +-
.../core_api/routes/public/test_task_instances.py | 1662 +++++++++++++++-
.../routes/public/test_task_state_store.py | 143 +-
.../core_api/routes/public/test_xcom.py | 212 ++-
.../api_fastapi/core_api/routes/test_routes.py | 22 +
.../api_fastapi/core_api/routes/ui/test_dags.py | 51 +
.../core_api/routes/ui/test_execution.py | 82 +
.../api_fastapi/core_api/routes/ui/test_gantt.py | 76 +
.../api_fastapi/core_api/routes/ui/test_grid.py | 505 ++++-
.../routes/ui/test_partitioned_dag_runs.py | 48 +-
.../core_api/routes/ui/test_structure.py | 28 +
.../core_api/services/ui/test_execution.py | 72 +
.../unit/api_fastapi/core_api/test_security.py | 75 +
.../unit/api_fastapi/execution_api/test_app.py | 20 +-
.../execution_api/test_dag_processor_client.py | 373 ++++
.../execution_api/test_dag_processor_tokens.py | 93 +
.../api_fastapi/execution_api/test_security.py | 772 +++++++-
.../execution_api/test_token_scope_boundaries.py | 127 +-
.../versions/head/test_asset_state_store.py | 52 +
.../execution_api/versions/head/test_jobs.py | 470 +++++
.../execution_api/versions/head/test_router.py | 111 +-
.../versions/head/test_task_instances.py | 1984 +++++++++++++++++++-
.../versions/head/test_task_state_store.py | 27 +-
.../execution_api/versions/head/test_xcoms.py | 859 ++++++++-
.../versions/v2026_10_30/test_task_instances.py | 65 +-
.../versions/v2027_02_28}/__init__.py | 0
.../versions/v2027_02_28/test_jobs.py | 76 +
.../unit/api_fastapi/logging/test_decorators.py | 67 +
airflow-core/tests/unit/api_fastapi/test_app.py | 23 +
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 | 109 +-
.../cli/commands/test_dag_processor_command.py | 4 +-
.../commands/test_dag_processor_token_command.py | 237 +++
.../unit/cli/commands/test_partition_command.py | 53 +-
.../unit/cli/commands/test_state_store_command.py | 10 +-
.../tests/unit/cli/commands/test_task_command.py | 283 ++-
airflow-core/tests/unit/core/test_settings.py | 100 +-
.../tests/unit/core/test_sqlalchemy_config.py | 12 +-
.../bundles/test_dag_bundle_manager.py | 21 +-
.../unit/dag_processing/bundles/test_manifest.py | 881 +++++++++
.../tests/unit/dag_processing/test_api_client.py | 953 ++++++++++
.../tests/unit/dag_processing/test_collection.py | 132 +-
.../tests/unit/dag_processing/test_dagbag.py | 86 +-
.../tests/unit/dag_processing/test_processor.py | 35 +
.../tests/unit/executors/test_base_executor.py | 57 +
.../tests/unit/executors/test_workloads.py | 159 +-
airflow-core/tests/unit/jobs/test_scheduler_job.py | 827 +++++++-
airflow-core/tests/unit/jobs/test_triggerer_job.py | 251 ++-
.../test_0142_unify_task_attempt_ownership.py | 530 +++++-
.../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_base.py | 43 +-
airflow-core/tests/unit/models/test_cleartasks.py | 933 ++++++++-
airflow-core/tests/unit/models/test_dag.py | 63 +-
airflow-core/tests/unit/models/test_dagrun.py | 1110 ++++++++++-
airflow-core/tests/unit/models/test_deadline.py | 257 +--
.../tests/unit/models/test_deadline_alert.py | 84 +-
.../tests/unit/models/test_dynamic_region.py | 885 +++++++++
airflow-core/tests/unit/models/test_log.py | 92 +-
.../tests/unit/models/test_mappedoperator.py | 540 +++++-
.../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_trigger.py | 27 +-
airflow-core/tests/unit/models/test_xcom_arg.py | 242 +++
.../tests/unit/observability/metrics/test_stats.py | 13 +
.../tests/unit/plugins/test_plugins_manager.py | 55 +-
.../unit/serialization/definitions/test_assets.py | 19 +
.../serialization/definitions/test_deadline.py | 1 +
.../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_cli_util.py | 60 +
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 +
.../tests/unit/utils/test_orm_event_handlers.py | 37 -
airflow-core/tests/unit/utils/test_sqlalchemy.py | 62 +-
.../src/airflowctl/api/datamodels/generated.py | 82 +
airflow-ctl/src/airflowctl/ctl/cli_config.py | 30 +-
.../src/airflowctl/ctl/commands/pool_command.py | 2 +
.../tests/airflow_ctl/api/test_operations.py | 2 +
.../airflow_ctl/ctl/commands/test_pool_command.py | 45 +
.../airflow_ctl/ctl/commands/test_task_command.py | 3 +
.../tests/airflow_ctl/ctl/test_cli_config.py | 60 +-
airflow-e2e-tests/docker/go.yml | 5 +
airflow-e2e-tests/docker/java.yml | 16 +-
airflow-e2e-tests/docker/ts.yml | 12 +
.../.gitignore | 0
.../java-native-bundle/build.gradle | 39 +-
.../gradle.properties | 0
.../java-native-bundle/settings.gradle | 38 +-
.../apache/airflow/e2e/NativeBundleBuilder.java | 156 ++
.../airflow/e2e/nativedag/AnnotationDag.java | 106 ++
.../apache/airflow/e2e/nativedag/DynamicDags.java | 74 +
.../apache/airflow/e2e/nativedag/TargetDag.java | 28 +-
.../org/apache/airflow/e2e/TestBundleBuilder.java | 36 +-
.../src/resources/dags/java_test_dags.py | 12 +
.../tests/airflow_e2e_tests/conftest.py | 235 ++-
.../tests/airflow_e2e_tests/constants.py | 15 +-
.../airflow_e2e_tests/e2e_test_utils/clients.py | 68 +
.../e2e_test_utils/dynamic_dags.py | 71 +
.../go_sdk_tests/test_go_sdk_dynamic_dag.py | 83 +
.../go_sdk_tests/test_go_sdk_task_state.py | 6 +-
.../java_sdk_tests/test_java_sdk_dag.py | 72 +-
.../java_sdk_tests/test_java_sdk_dynamic_dag.py | 89 +
.../java_sdk_tests/test_java_sdk_native_dag.py | 215 +++
.../ts_sdk_tests/test_ts_sdk_hitl.py | 200 ++
.../ts_sdk_tests/test_ts_sdk_native_dag.py | 253 +++
chart/pyproject.toml | 6 +-
.../03a_contributors_quick_start_beginners.rst | 31 +-
contributing-docs/07_local_virtualenv.rst | 8 +-
contributing-docs/11_documentation_building.rst | 10 +-
dev/README_RELEASE_AIRFLOW.md | 24 +
dev/breeze/doc/03_developer_tasks.rst | 14 +-
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 | 21 +-
dev/breeze/doc/images/output_build-docs.svg | 100 +-
dev/breeze/doc/images/output_build-docs.txt | 2 +-
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/developer_commands.py | 10 -
.../commands/developer_commands_config.py | 4 +-
.../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 +-
.../src/airflow_breeze/params/doc_build_params.py | 6 -
.../airflow_breeze/utils/release_constraints.py | 10 +-
.../src/airflow_breeze/utils/selective_checks.py | 27 +-
.../src/airflow_breeze/utils/verification_plan.py | 6 +
dev/breeze/tests/test_developer_commands.py | 6 +-
.../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_reproduce_ci.py | 4 +-
dev/breeze/tests/test_selective_checks.py | 143 +-
dev/breeze/tests/test_shim_version_check.py | 4 +-
dev/breeze/tests/test_ui_commands.py | 9 +
dev/breeze/tests/test_verification_plan.py | 12 +
dev/breeze/tests/test_verify_commands.py | 17 +
dev/breeze/uv.lock | 66 +-
dev/mypy/docs/conf.py | 2 +-
devel-common/pyproject.toml | 2 +-
devel-common/src/docs/README.rst | 41 +-
devel-common/src/docs/build_docs.py | 310 +--
devel-common/src/docs/utils/conf_constants.py | 4 +-
.../src/sphinx_exts/airflow_intersphinx.py | 50 +-
devel-common/src/sphinx_exts/airflow_spelling.py | 217 +++
.../src/sphinx_exts/docs_build/docs_builder.py | 114 +-
.../src/sphinx_exts/docs_build/spelling_checks.py | 115 +-
devel-common/src/sphinx_exts/mermaid_config.json | 3 +
.../src/sphinx_exts/mermaid_puppeteer_config.json | 3 +
devel-common/src/sphinx_exts/mermaid_svg.py | 66 +
.../src/sphinx_exts/providers_extensions.py | 34 +-
.../provider_connection_services.rst.jinja2 | 28 +
.../src/tests_common/test_utils/asserts.py | 20 +
.../tests_common/test_utils/attempt_ownership.py | 10 +-
.../tests_common/test_utils/in_process_taskrun.py | 40 +-
.../src/tests_common/test_utils/taskinstance.py | 8 +-
.../docs_build/test_build_docs_mermaid.py | 104 +
.../sphinx_exts/docs_build/test_docs_builder.py | 52 +
.../sphinx_exts/docs_build/test_spelling_checks.py | 134 ++
.../unit/sphinx_exts/test_airflow_intersphinx.py | 51 -
.../unit/sphinx_exts/test_airflow_spelling.py | 213 +++
.../tests/unit/sphinx_exts/test_mermaid_svg.py | 83 +
.../unit/sphinx_exts/test_providers_extensions.py | 57 +
docker-stack-docs/pyproject.toml | 6 +-
docs/README.md | 4 +-
docs/spelling_wordlist.txt | 28 +
generated/known_sdk_imports_in_core.txt | 1 +
generated/provider_metadata.json | 422 +++++
go-sdk/cmd/airflow-go-pack/pack.go | 4 +-
go-sdk/cmd/airflow-go-pack/pack_test.go | 36 +
go-sdk/example/dynamic/dags.go | 67 +
.../example/dynamic/dags.yaml | 23 +-
go-sdk/example/dynamic/main.go | 60 +
go-sdk/internal/genspec/authoring.go | 2 +
go-sdk/pkg/execution/genmodels/models.gen.go | 207 +-
go-sdk/schema/dag-schema.json | 12 +
go-sdk/schema/supervisor-schema.json | 163 ++
java-sdk/README.md | 16 +-
java-sdk/capabilities.yaml | 2 +-
.../apache/airflow/example/AnnotationExample.java | 10 +-
.../apache/airflow/example/XComCastingExample.java | 16 +-
.../example/nativedag/AnnotationExample.java | 30 +-
.../apache/airflow/sdk/plugin/AirflowSdkPlugin.kt | 23 +
.../airflow/sdk/plugin/AirflowSdkPluginTest.kt | 50 +
java-sdk/processor/build.gradle.kts | 2 +-
.../{BuilderProcessor.kt => AirflowProcessor.kt} | 120 +-
.../services/javax.annotation.processing.Processor | 2 +-
.../{BuilderTest.kt => AirflowProcessorTest.kt} | 682 +++----
java-sdk/sdk/build.gradle.kts | 39 +-
java-sdk/sdk/module.md | 2 +-
java-sdk/sdk/schema/dag-schema.json | 12 +
.../src/main/kotlin/org/apache/airflow/sdk/Arg.kt | 2 +-
.../main/kotlin/org/apache/airflow/sdk/Bundle.kt | 16 +-
.../org/apache/airflow/sdk/BundleInspector.kt | 113 ++
.../main/kotlin/org/apache/airflow/sdk/Client.kt | 5 +-
.../main/kotlin/org/apache/airflow/sdk/DagDef.kt | 22 +-
.../src/main/kotlin/org/apache/airflow/sdk/Deps.kt | 4 +-
.../kotlin/org/apache/airflow/sdk/IdValidation.kt | 86 +
.../kotlin/org/apache/airflow/sdk/TaskInput.kt | 4 +-
.../kotlin/org/apache/airflow/sdk/TriggerDagRun.kt | 2 +-
.../org/apache/airflow/sdk/execution/MsgPack.kt | 13 +-
.../org/apache/airflow/sdk/internal/ArgValues.kt | 2 +-
.../org/apache/airflow/sdk/internal/Fields.kt | 4 +-
.../org/apache/airflow/sdk/internal/InputTypes.kt | 2 +-
.../kotlin/org/apache/airflow/sdk/internal/Refs.kt | 8 +-
.../org/apache/airflow/sdk/internal/Registrar.kt | 4 +-
.../org/apache/airflow/sdk/BundleInspectorTest.kt | 164 ++
.../kotlin/org/apache/airflow/sdk/BundleTest.kt | 12 +-
.../org/apache/airflow/sdk/IdValidationTest.kt | 105 ++
.../org/apache/airflow/sdk/execution/CommTest.kt | 34 +
.../apache/airflow/sdk/internal/ArgValuesTest.kt | 2 +-
.../org/apache/airflow/sdk/internal/RefsTest.kt | 4 +-
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-summary-docs/pyproject.toml | 6 +-
providers/.last_release_date.txt | 2 +-
providers/amazon/README.rst | 2 +-
.../docs/auth-manager/setup/identity-center.rst | 10 +
providers/amazon/docs/changelog.rst | 16 +-
providers/amazon/docs/index.rst | 9 +-
.../amazon/docs/operators/emr/emr_serverless.rst | 17 +
providers/amazon/docs/transfer/sql_to_s3.rst | 4 +
providers/amazon/provider.yaml | 2 +-
providers/amazon/pyproject.toml | 8 +-
.../amazon/aws/auth_manager/routes/login.py | 9 +-
.../airflow/providers/amazon/aws/hooks/base_aws.py | 7 +-
.../airflow/providers/amazon/aws/operators/eks.py | 18 +-
.../airflow/providers/amazon/aws/operators/emr.py | 60 +-
.../providers/amazon/aws/waiters/comprehend.json | 55 +
.../airflow/providers/amazon/aws/waiters/dms.json | 4 +-
.../aws/example_comprehend_document_classifier.py | 21 +-
.../amazon/aws/example_emr_serverless_session.py | 11 +
.../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 +-
.../tests/unit/amazon/aws/hooks/test_base_aws.py | 5 +
.../tests/unit/amazon/aws/operators/test_eks.py | 103 +-
.../aws/operators/test_emr_serverless_session.py | 62 +-
.../unit/amazon/aws/waiters/test_comprehend.py | 54 +
.../tests/unit/amazon/aws/waiters/test_dms.py | 36 +-
.../airflow/providers/anthropic/hooks/anthropic.py | 8 +-
providers/apache/tinkerpop/README.rst | 2 +-
providers/apache/tinkerpop/provider.yaml | 4 +
providers/apache/tinkerpop/pyproject.toml | 3 +-
providers/celery/docs/celery_executor.rst | 51 +
providers/celery/provider.yaml | 14 +
.../celery/executors/celery_executor_utils.py | 27 +-
.../airflow/providers/celery/get_provider_info.py | 7 +
.../unit/celery/executors/test_celery_executor.py | 124 +-
.../kubernetes/executors/kubernetes_executor.py | 3 +-
.../executors/test_kubernetes_executor.py | 40 +
.../kubernetes/operators/test_spark_kubernetes.py | 4 +-
providers/common/ai/.pre-commit-config.yaml | 2 +-
providers/common/ai/README.rst | 23 +-
providers/common/ai/docs/agent_security.rst | 32 +-
providers/common/ai/docs/approval_gates.rst | 238 ++-
providers/common/ai/docs/capabilities.rst | 33 +-
providers/common/ai/docs/changelog.rst | 112 +-
providers/common/ai/docs/code_mode.rst | 5 +-
providers/common/ai/docs/connections/langchain.rst | 10 +-
providers/common/ai/docs/decision_models.rst | 17 +-
providers/common/ai/docs/durable_execution.rst | 429 +++--
providers/common/ai/docs/features.rst | 310 ++-
providers/common/ai/docs/frameworks/adk.rst | 4 +-
providers/common/ai/docs/frameworks/anthropic.rst | 212 +++
providers/common/ai/docs/frameworks/index.rst | 79 +-
.../common/ai/docs/frameworks/openai_agents.rst | 162 ++
.../common/ai/docs/frameworks/pydantic_ai.rst | 22 +-
providers/common/ai/docs/frameworks/strands.rst | 133 +-
providers/common/ai/docs/hitl_review.rst | 5 +
.../ai/docs/img/approval_required_actions.png | Bin 0 -> 78595 bytes
.../common/ai/docs/img/approval_review_form.png | Bin 0 -> 95532 bytes
providers/common/ai/docs/index.rst | 39 +-
providers/common/ai/docs/installation.rst | 13 +-
providers/common/ai/docs/memory.rst | 163 ++
providers/common/ai/docs/message_history.rst | 63 +-
providers/common/ai/docs/model_providers.rst | 20 +
providers/common/ai/docs/observability.rst | 62 +-
providers/common/ai/docs/operations.rst | 3 +
providers/common/ai/docs/operators/agent.rst | 36 +-
providers/common/ai/docs/operators/llm.rst | 107 +-
providers/common/ai/docs/operators/llm_batch.rst | 17 +-
providers/common/ai/docs/operators/llm_branch.rst | 6 +-
.../common/ai/docs/operators/llm_file_analysis.rst | 11 +-
.../ai/docs/operators/llm_schema_compare.rst | 14 +-
providers/common/ai/docs/operators/llm_sql.rst | 5 -
providers/common/ai/docs/provider_fallback.rst | 22 +-
providers/common/ai/docs/recovery.rst | 163 ++
providers/common/ai/docs/retry_policies.rst | 14 +-
providers/common/ai/docs/sandbox/backends.rst | 476 ++++-
providers/common/ai/docs/sandbox/configuration.rst | 38 +-
providers/common/ai/docs/sandbox/index.rst | 92 +-
providers/common/ai/docs/stability.rst | 187 +-
providers/common/ai/docs/supported_services.rst | 82 +
providers/common/ai/docs/tool_approval.rst | 126 +-
providers/common/ai/docs/toolsets/hook.rst | 61 +-
providers/common/ai/docs/toolsets/index.rst | 28 +-
providers/common/ai/docs/toolsets/logging.rst | 32 +-
providers/common/ai/docs/toolsets/mcp.rst | 4 +-
.../common/ai/docs/toolsets/object_storage.rst | 8 +-
.../ai/docs/toolsets/progressive_disclosure.rst | 146 ++
providers/common/ai/docs/toolsets/skills.rst | 9 +-
providers/common/ai/docs/toolsets/sql.rst | 22 +-
providers/common/ai/docs/troubleshooting.rst | 36 +-
providers/common/ai/docs/why_common_ai.rst | 199 ++
providers/common/ai/provider.yaml | 57 +-
providers/common/ai/pyproject.toml | 60 +-
.../ai/src/airflow/providers/common/ai/__init__.py | 2 +-
.../airflow/providers/common/ai/batch/anthropic.py | 24 +-
.../providers/common/ai/batch/output_schema.py | 9 +-
.../providers/common/ai/decorators/llm_batch.py | 5 -
.../common/ai/decorators/llm_file_analysis.py | 5 -
.../common/ai/decorators/llm_schema_compare.py | 5 -
.../providers/common/ai/decorators/llm_sql.py | 5 -
.../providers/common/ai/durable/__init__.py | 19 +
.../airflow/providers/common/ai/durable/base.py | 59 +-
.../providers/common/ai/durable/caching_model.py | 226 ---
.../providers/common/ai/durable/caching_toolset.py | 141 --
.../providers/common/ai/durable/capability.py | 541 ++++++
.../providers/common/ai/durable/fingerprint.py | 526 +++++-
.../airflow/providers/common/ai/durable/journal.py | 600 ++++++
.../providers/common/ai/durable/replay_usage.py | 149 +-
.../providers/common/ai/durable/step_counter.py | 52 -
.../airflow/providers/common/ai/durable/storage.py | 140 +-
.../airflow/providers/common/ai/durable/strands.py | 209 +++
.../providers/common/ai/durable/strands_storage.py | 137 ++
.../common/ai/durable/task_state_store.py | 155 +-
.../common/ai/example_dags/example_agent.py | 4 +-
.../ai/example_dags/example_agent_durable.py | 35 +-
.../common/ai/example_dags/example_agent_memory.py | 135 ++
.../ai/example_dags/example_agent_recovery.py | 70 +
.../ai/example_dags/example_agent_tool_judge.py | 188 ++
.../example_dags/example_aip_progress_tracker.py | 6 +-
.../example_dags/example_anthropic_tool_runner.py | 82 +
.../common/ai/example_dags/example_hook_toolset.py | 2 +-
.../common/ai/example_dags/example_llm.py | 11 +-
.../common/ai/example_dags/example_llm_approval.py | 54 +
.../ai/example_dags/example_openai_agents_agent.py | 90 +
.../example_progressive_tool_disclosure.py | 107 ++
.../ai/example_dags/example_strands_durable.py | 93 +
.../ai/example_dags/example_why_common_ai.py | 56 +
.../src/airflow/providers/common/ai/exceptions.py | 38 +-
.../providers/common/ai/get_provider_info.py | 46 +-
.../providers/common/ai/hooks/pydantic_ai.py | 53 +-
.../airflow/providers/common/ai/mixins/approval.py | 61 +-
.../providers/common/ai/mixins/hitl_review.py | 14 +-
.../providers/common/ai/mixins/usage_budget.py | 152 ++
.../airflow/providers/common/ai/observability.py | 5 +
.../airflow/providers/common/ai/operators/agent.py | 616 +++---
.../airflow/providers/common/ai/operators/llm.py | 135 +-
.../providers/common/ai/operators/llm_batch.py | 17 +-
.../providers/common/ai/operators/llm_branch.py | 17 +-
.../common/ai/operators/llm_file_analysis.py | 21 +-
.../common/ai/operators/llm_schema_compare.py | 35 +-
.../providers/common/ai/operators/llm_sql.py | 23 +-
.../providers/common/ai/plugins/_plugin_urls.py | 50 +
.../providers/common/ai/plugins/hitl_review.py | 161 +-
.../providers/common/ai/plugins/model_panel.py | 97 +
.../providers/common/ai/plugins/www/package.json | 4 +-
.../providers/common/ai/plugins/www/pnpm-lock.yaml | 12 +
.../providers/common/ai/plugins/www/src/api.ts | 13 +-
.../ai/plugins/www/src/components/ChatPage.tsx | 9 +-
.../ai/plugins/www/src/components/ModelPanel.tsx | 142 ++
.../ai/plugins/www/src/components/NoModelInfo.tsx | 58 +
.../ai/plugins/www/src/components/Tooltip.tsx | 65 +
.../ai/plugins/www/src/hooks/useModelInfo.ts | 67 +
.../common/ai/plugins/www/src/hooks/useSession.ts | 5 +-
.../providers/common/ai/plugins/www/src/main.tsx | 46 +-
.../common/ai/plugins/www/src/model-api.ts | 83 +
.../ai/plugins/www/src/{main.tsx => model.tsx} | 16 +-
.../common/ai/plugins/www/src/types/model.ts | 10 +-
.../common/ai/plugins/www/tests/api.test.ts | 63 +
.../common/ai/plugins/www/tests/main.test.mjs | 43 +
.../providers/common/ai/plugins/www/vite.config.ts | 23 +-
.../airflow/providers/common/ai/policies/retry.py | 28 +-
.../providers/common/ai/sandbox/__init__.py | 10 +
.../airflow/providers/common/ai/sandbox/base.py | 2 +-
.../airflow/providers/common/ai/sandbox/boat.py | 697 +++++++
.../airflow/providers/common/ai/sandbox/islo.py | 757 ++++++++
.../providers/common/ai/sandbox/opensandbox.py | 81 +-
.../providers/common/ai/sandbox/openshell.py | 1139 +++++++++++
.../src/airflow/providers/common/ai/sandbox/sbx.py | 3 +-
.../airflow/providers/common/ai/tools/__init__.py | 18 +-
.../src/airflow/providers/common/ai/tools/adk.py | 2 +-
.../airflow/providers/common/ai/tools/anthropic.py | 288 +++
.../providers/common/ai/tools/openai_agents.py | 391 ++++
.../airflow/providers/common/ai/tools/strands.py | 12 +-
.../airflow/providers/common/ai/tools/tracing.py | 13 +-
.../airflow/providers/common/ai/toolsets/hook.py | 219 ++-
.../providers/common/ai/toolsets/logging.py | 51 +-
.../providers/common/ai/toolsets/managed_agent.py | 6 +-
.../providers/common/ai/toolsets/object_storage.py | 5 -
.../providers/common/ai/toolsets/sandbox.py | 16 +-
.../providers/common/ai/triggers/llm_batch.py | 5 -
.../providers/common/ai/utils/coroutines.py | 13 +-
.../airflow/providers/common/ai/utils/logging.py | 11 -
.../airflow/providers/common/ai/utils/masking.py | 26 +-
.../providers/common/ai/utils/output_type.py | 142 +-
.../providers/common/ai/utils/tool_definition.py | 12 +
.../providers/common/ai/utils/tool_metrics.py | 2 +-
.../providers/common/ai/utils/toolset_base.py | 88 +-
.../providers/common/ai/utils/usage_budget.py | 15 +-
.../common/ai/tests/system/common/ai/README.md | 54 +-
.../common/ai/example_sandbox_toolset_boat.py | 234 +++
.../common/ai/example_sandbox_toolset_islo.py | 134 ++
.../common/ai/example_sandbox_toolset_openshell.py | 122 ++
.../tests/unit/common/ai/batch/test_anthropic.py | 57 +-
.../unit/common/ai/batch/test_output_schema.py | 13 +-
.../common/ai/tests/unit/common/ai/conftest.py | 48 +
.../tests/unit/common/ai/decorators/test_agent.py | 12 +-
.../unit/common/ai/durable/conftest.py} | 10 +
.../tests/unit/common/ai/durable/memory_storage.py | 58 +
.../ai/tests/unit/common/ai/durable/test_base.py | 15 +-
.../unit/common/ai/durable/test_caching_model.py | 432 -----
.../unit/common/ai/durable/test_caching_toolset.py | 268 ---
.../unit/common/ai/durable/test_capability.py | 1017 ++++++++++
.../tests/unit/common/ai/durable/test_code_mode.py | 229 +++
.../unit/common/ai/durable/test_fingerprint.py | 1714 ++++++++++++++++-
.../tests/unit/common/ai/durable/test_journal.py | 515 +++++
.../unit/common/ai/durable/test_replay_cost.py | 231 +--
.../common/ai/durable/test_replay_verification.py | 138 --
.../unit/common/ai/durable/test_step_counter.py | 38 -
.../tests/unit/common/ai/durable/test_storage.py | 227 +--
.../tests/unit/common/ai/durable/test_strands.py | 314 ++++
.../unit/common/ai/durable/test_strands_storage.py | 156 ++
.../common/ai/durable/test_task_state_store.py | 212 +--
.../tests/unit/common/ai/hooks/test_pydantic_ai.py | 153 +-
.../tests/unit/common/ai/mixins/test_approval.py | 133 +-
.../unit/common/ai/mixins/test_hitl_review.py | 58 +
.../unit/common/ai/mixins/test_usage_budget.py | 190 ++
.../tests/unit/common/ai/operators/test_agent.py | 1364 +++++++++-----
.../ai/operators/test_agent_tool_approval.py | 221 ++-
.../common/ai/operators/test_agent_tool_judge.py | 234 +++
.../ai/tests/unit/common/ai/operators/test_llm.py | 361 +++-
.../unit/common/ai/operators/test_llm_batch.py | 20 +
.../unit/common/ai/operators/test_llm_branch.py | 146 +-
.../common/ai/operators/test_llm_file_analysis.py | 119 +-
.../common/ai/operators/test_llm_schema_compare.py | 141 +-
.../tests/unit/common/ai/operators/test_llm_sql.py | 134 +-
.../unit/common/ai/plugins/test__plugin_urls.py | 46 +
.../unit/common/ai/plugins/test_hitl_review.py | 480 ++++-
.../unit/common/ai/plugins/test_model_panel.py | 72 +
.../common/ai/plugins/test_model_panel_compat.py | 46 +
.../ai/tests/unit/common/ai/policies/test_retry.py | 37 +-
.../ai/tests/unit/common/ai/sandbox/test_boat.py | 1184 ++++++++++++
.../ai/tests/unit/common/ai/sandbox/test_islo.py | 1276 +++++++++++++
.../unit/common/ai/sandbox/test_opensandbox.py | 108 +-
.../tests/unit/common/ai/sandbox/test_openshell.py | 1479 +++++++++++++++
.../ai/tests/unit/common/ai/test_exceptions.py | 2 +
.../tests/unit/common/ai/test_provider_metadata.py | 478 +++++
.../unit/common/ai/tools/test__from_toolset.py | 2 +-
.../tests/unit/common/ai/tools/test_anthropic.py | 364 ++++
.../unit/common/ai/tools/test_openai_agents.py | 611 ++++++
.../ai/tests/unit/common/ai/tools/test_strands.py | 54 +-
.../ai/tests/unit/common/ai/tools/test_tools.py | 5 +-
.../ai/tests/unit/common/ai/toolsets/test_hook.py | 414 +++-
.../tests/unit/common/ai/toolsets/test_logging.py | 135 +-
.../tests/unit/common/ai/toolsets/test_sandbox.py | 24 +-
.../tests/unit/common/ai/utils/test_coroutines.py | 14 +
.../ai/tests/unit/common/ai/utils/test_logging.py | 17 -
.../ai/tests/unit/common/ai/utils/test_masking.py | 51 +-
.../tests/unit/common/ai/utils/test_output_type.py | 422 ++++-
.../unit/common/ai/utils/test_sql_validation.py | 163 +-
.../unit/common/ai/utils/test_tool_metrics.py | 61 +-
.../unit/common/ai/utils/test_toolset_base.py | 42 +-
providers/common/compat/README.rst | 6 +-
providers/common/compat/docs/changelog.rst | 11 +
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/compat/_retry_policy.py | 5 +-
.../src/airflow/providers/common/compat/sdk.py | 7 +-
.../tests/unit/common/compat/test__retry_policy.py | 16 +
providers/common/io/docs/state_store_backend.rst | 4 +-
providers/common/io/provider.yaml | 4 +-
.../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/sql/docs/operators.rst | 18 +-
.../sql/src/airflow/providers/common/sql/config.py | 19 +-
.../providers/common/sql/datafusion/base.py | 9 +
.../providers/common/sql/datafusion/engine.py | 23 +-
.../sql/datafusion/object_storage_provider.py | 70 +-
.../unit/common/sql/datafusion/test_engine.py | 100 +-
.../sql/datafusion/test_object_storage_provider.py | 153 ++
.../sql/tests/unit/common/sql/test_config.py | 2 +
providers/databricks/docs/index.rst | 2 +-
providers/databricks/pyproject.toml | 2 +-
.../providers/databricks/hooks/databricks_sql.py | 5 +-
.../providers/databricks/utils/openlineage.py | 123 +-
.../unit/databricks/hooks/test_databricks_sql.py | 16 +-
.../unit/databricks/utils/test_openlineage.py | 947 ++--------
providers/dbt/cloud/docs/changelog.rst | 3 +-
providers/dbt/cloud/docs/index.rst | 8 +-
providers/dbt/cloud/provider.yaml | 2 +-
providers/dbt/cloud/pyproject.toml | 2 +-
.../airflow/providers/dbt/cloud/triggers/dbt.py | 24 +-
.../providers/dbt/cloud/utils/openlineage.py | 57 +-
.../tests/unit/dbt/cloud/triggers/test_dbt.py | 20 +
.../tests/unit/dbt/cloud/utils/test_openlineage.py | 20 +-
providers/edge3/docs/changelog.rst | 9 +
providers/edge3/docs/edge_executor.rst | 7 +
providers/edge3/docs/migrations-ref.rst | 4 +-
.../src/airflow/providers/edge3/cli/api_client.py | 19 +-
.../src/airflow/providers/edge3/cli/worker.py | 3 +
.../providers/edge3/executors/edge_executor.py | 2 +
.../0007_5_1_0_add_priority_weight_to_edge_job.py | 55 +
.../edge3/src/airflow/providers/edge3/models/db.py | 1 +
.../src/airflow/providers/edge3/models/edge_job.py | 5 +-
.../src/airflow/providers/edge3/models/types.py | 20 +-
.../providers/edge3/worker_api/datamodels.py | 7 +
.../providers/edge3/worker_api/routes/jobs.py | 34 +-
.../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/executors/test_edge_executor.py | 19 +-
providers/edge3/tests/unit/edge3/models/test_db.py | 72 +-
.../unit/edge3/worker_api/routes/test_jobs.py | 222 ++-
.../unit/edge3/worker_api/routes/test_logs.py | 139 ++
.../providers/elasticsearch/log/es_task_handler.py | 3 +-
.../unit/elasticsearch/log/test_es_task_handler.py | 6 +
providers/fab/docs/auth-manager/access-control.rst | 91 +-
.../fab/auth_manager/cli_commands/role_command.py | 26 +
.../providers/fab/auth_manager/fab_auth_manager.py | 9 +
.../fab/www/extensions/init_wsgi_middlewares.py | 68 +-
.../fab/src/airflow/providers/fab/www/package.json | 6 +-
.../src/airflow/providers/fab/www/pnpm-lock.yaml | 830 ++++----
.../auth_manager/cli_commands/test_role_command.py | 69 +
.../unit/fab/auth_manager/test_fab_auth_manager.py | 18 +
.../www/extensions/test_init_wsgi_middlewares.py | 89 +
providers/google/docs/changelog.rst | 9 +-
providers/google/provider.yaml | 2 +-
.../google/cloud/operators/kubernetes_engine.py | 26 +-
.../cloud/operators/test_kubernetes_engine.py | 39 +-
.../keycloak/auth_manager/cli/commands.py | 2 +-
.../keycloak/auth_manager/cli/test_commands.py | 2 +-
providers/microsoft/azure/docs/bundles/index.rst | 80 +
providers/microsoft/azure/docs/index.rst | 1 +
providers/microsoft/azure/provider.yaml | 5 +
.../providers/microsoft/azure/bundles}/__init__.py | 0
.../providers/microsoft/azure/bundles/wasb.py | 154 ++
.../providers/microsoft/azure/get_provider_info.py | 6 +
.../providers/microsoft/azure/hooks/wasb.py | 108 ++
.../unit/microsoft/azure/bundles}/__init__.py | 0
.../unit/microsoft/azure/bundles/test_wasb.py | 279 +++
.../tests/unit/microsoft/azure/hooks/test_wasb.py | 160 ++
providers/openai/pyproject.toml | 2 +-
.../src/airflow/providers/openai/hooks/openai.py | 79 +-
.../openai/tests/unit/openai/hooks/test_openai.py | 202 +-
.../providers/openlineage/plugins/facets.py | 7 +-
.../providers/openlineage/plugins/listener.py | 37 +-
.../providers/openlineage/plugins/macros.py | 6 +-
.../openlineage/utils/sql_hook_lineage.py | 28 +-
.../airflow/providers/openlineage/utils/utils.py | 163 +-
.../providers/openlineage/version_compat.py | 3 +-
.../openlineage_policy_hook_lineage_dag.json | 16 +-
.../unit/openlineage/plugins/test_listener.py | 71 +
.../tests/unit/openlineage/plugins/test_macros.py | 40 +-
.../tests/unit/openlineage/plugins/test_utils.py | 39 +-
.../openlineage/utils/test_sql_hook_lineage.py | 6 +-
.../tests/unit/openlineage/utils/test_utils.py | 285 ++-
.../providers/opensearch/log/os_task_handler.py | 3 +-
.../unit/opensearch/log/test_os_task_handler.py | 6 +
providers/snowflake/docs/index.rst | 2 +-
.../docs/operators/snowflake_cortex_agent.rst | 108 +-
providers/snowflake/pyproject.toml | 2 +-
.../airflow/providers/snowflake/hooks/snowflake.py | 5 +-
.../snowflake/operators/snowflake_cortex_agent.py | 278 ++-
.../providers/snowflake/utils/openlineage.py | 174 +-
.../snowflake/example_snowflake_cortex_agent.py | 60 +-
.../tests/unit/snowflake/hooks/test_snowflake.py | 17 +-
.../operators/test_snowflake_cortex_agent.py | 309 ++-
.../tests/unit/snowflake/utils/test_openlineage.py | 886 ++-------
providers/ssh/docs/operators/ssh_remote_job.rst | 4 +
.../providers/ssh/operators/ssh_remote_job.py | 4 +-
.../src/airflow/providers/ssh/utils/remote_job.py | 9 +-
.../ssh/tests/unit/ssh/utils/test_remote_job.py | 42 +-
.../providers/standard/sensors/date_time.py | 54 +-
.../providers/standard/triggers/temporal.py | 56 +-
.../tests/unit/standard/sensors/test_date_time.py | 86 +-
.../tests/unit/standard/triggers/test_temporal.py | 42 +
providers/vespa/README.rst | 2 +-
providers/vespa/provider.yaml | 3 +
providers/vespa/pyproject.toml | 3 +-
pyproject.toml | 23 +-
registry/src/_data/durableModules.js | 72 +
registry/src/css/main.css | 265 ++-
registry/src/durable.njk | 108 ++
registry/src/explore.njk | 1 +
registry/src/js/durable-filters.js | 130 ++
registry/src/provider-version.njk | 3 +
registry/src/sitemap.njk | 1 +
reproducible_build.yaml | 4 +-
scripts/ci/docker-compose/tests-sources.yml | 2 +-
.../check_template_context_variable_in_sync.py | 2 +
.../ci/prek/check_yaml_importer_schema_versions.py | 137 ++
scripts/ci/prek/generate_execution_api_schema.py | 4 +-
scripts/ci/prek/generate_yaml_importer_schema.py | 66 +
scripts/ci/prek/ts_compile_lint_common_ai.py | 1 +
scripts/ci/prek/update_providers_dependencies.py | 8 +-
scripts/ci/prek/upgrade_important_versions.py | 2 +-
scripts/docker/install_os_dependencies.sh | 3 +
scripts/in_container/bin/generate_mprocs_config.py | 3 +-
scripts/in_container/install_mermaid_cli.sh | 40 +
scripts/in_container/run_agent_framework_tests.sh | 46 +-
scripts/in_container/run_generate_constraints.py | 45 +-
.../in_container/run_provider_yaml_files_check.py | 13 +-
.../in_container/test_generate_mprocs_config.py | 37 +-
.../in_container/test_run_generate_constraints.py | 69 +
scripts/tools/setup_breeze | 5 +-
.../src/airflow_shared/logging/structlog.py | 19 +-
shared/logging/tests/logging/test_structlog.py | 44 +
.../observability/metrics/metrics_template.yaml | 29 +-
shared/state/src/airflow_shared/state/__init__.py | 48 +-
shared/state/tests/state/test_state.py | 28 +
task-sdk/dev/generate_task_sdk_models.py | 4 +-
task-sdk/docs/airflow-metadata.schema.json | 3 +-
task-sdk/docs/api.rst | 39 +
task-sdk/docs/concepts.rst | 2 +-
task-sdk/docs/conf.py | 4 +-
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/docs/executable-bundle-spec.rst | 7 +-
task-sdk/docs/index.rst | 1 +
task-sdk/docs/lang-sdk-spec.rst | 6 +-
task-sdk/pyproject.toml | 12 +-
task-sdk/src/airflow/sdk/__init__.py | 6 +
task-sdk/src/airflow/sdk/__init__.pyi | 4 +
task-sdk/src/airflow/sdk/api/client.py | 128 +-
.../src/airflow/sdk/api/datamodels/_generated.py | 166 +-
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 +
.../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 +-
task-sdk/src/airflow/sdk/definitions/deadline.py | 37 +-
.../sdk/definitions/decorators/task_group.py | 43 +-
.../src/airflow/sdk/definitions/loop.py | 17 +
.../src/airflow/sdk/definitions/mappedoperator.py | 1 -
.../src/airflow/sdk/definitions/retry_policy.py | 94 +-
task-sdk/src/airflow/sdk/definitions/taskgroup.py | 45 +-
.../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 +
.../sdk/execution_time/callback_supervisor.py | 2 +
task-sdk/src/airflow/sdk/execution_time/comms.py | 11 +
.../airflow/sdk/execution_time/lazy_sequence.py | 4 +
task-sdk/src/airflow/sdk/execution_time/loop.py | 130 ++
.../airflow/sdk/execution_time/request_handlers.py | 34 +-
.../airflow/sdk/execution_time/schema/schema.json | 163 ++
.../sdk/execution_time/schema/versions/__init__.py | 6 +
.../execution_time/schema/versions/v2026_10_30.py | 59 +-
.../src/airflow/sdk/execution_time/supervisor.py | 64 +-
.../src/airflow/sdk/execution_time/task_runner.py | 134 +-
task-sdk/src/airflow/sdk/importers/base.py | 31 +-
.../sdk/importers/yaml_importer}/__init__.py | 17 +
.../airflow/sdk/importers/yaml_importer/builder.py | 570 ++++++
.../sdk/importers/yaml_importer/importer.py | 169 ++
.../sdk/importers/yaml_importer/migrator.py | 169 ++
.../airflow/sdk/importers/yaml_importer/models.py | 527 ++++++
.../airflow/sdk/importers/yaml_importer/parser.py | 102 +
.../sdk/importers/yaml_importer/schema.json | 417 ++++
.../importers/yaml_importer/versions/__init__.py | 42 +-
task-sdk/src/airflow/sdk/importers/zip_importer.py | 13 +
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/__init__.py | 10 +-
task-sdk/tests/task_sdk/api/test_client.py | 846 +++++----
task-sdk/tests/task_sdk/bases/test_decorator.py | 12 +
.../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 | 334 +++-
.../task_sdk/definitions/test_retry_policy.py | 121 +-
.../tests/task_sdk/definitions/test_xcom_arg.py | 51 +-
.../task_sdk/definitions/timetables/test_assets.py | 166 ++
.../execution_time/schema/test_migrator.py | 153 +-
.../execution_time/test_callback_supervisor.py | 14 +
.../tests/task_sdk/execution_time/test_comms.py | 16 +-
.../tests/task_sdk/execution_time/test_loop.py | 287 +++
.../execution_time/test_request_handlers.py | 51 +
.../tests/task_sdk/execution_time/test_secrets.py | 20 +
.../task_sdk/execution_time/test_supervisor.py | 294 ++-
.../task_sdk/execution_time/test_task_runner.py | 366 +++-
.../task_sdk/importers/yaml_importer}/__init__.py | 0
.../importers/yaml_importer/example_dag.yaml | 69 +
.../importers/yaml_importer/test_importer.py | 722 +++++++
.../importers/yaml_importer/test_migrator.py | 188 ++
.../importers/yaml_importer/test_parser.py | 586 ++++++
task-sdk/tests/task_sdk/test_log.py | 32 +
ts-sdk/README.md | 94 +-
ts-sdk/adr/0002-native-dag-interface.md | 18 +-
ts-sdk/api-docs/dag-authoring-api.ts | 1 +
ts-sdk/{vitest.config.ts => api-docs/hitl-api.ts} | 18 +-
ts-sdk/capabilities.yaml | 9 +-
ts-sdk/example/README.md | 5 +
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 | 12 +-
ts-sdk/example/src/native.ts | 167 ++
ts-sdk/example/tsconfig.json | 4 +-
ts-sdk/package.json | 4 +
ts-sdk/schema/dag-schema.json | 12 +
ts-sdk/schema/supervisor-schema.json | 163 ++
ts-sdk/scripts/generate-dag-schema.mjs | 2 +
ts-sdk/src/coordinator/client.ts | 19 +
ts-sdk/src/coordinator/operator-runner.ts | 140 ++
ts-sdk/src/coordinator/protocol.ts | 4 +
ts-sdk/src/coordinator/runtime.ts | 63 +-
ts-sdk/src/coordinator/serde.ts | 275 +--
ts-sdk/src/generated/supervisor.ts | 51 +
.../GroupTaskInstance => ts-sdk/src/hitl}/index.ts | 12 +-
ts-sdk/src/hitl/operator.ts | 281 +++
ts-sdk/src/hitl/spec.ts | 447 +++++
ts-sdk/src/sdk/bundle.ts | 30 +-
ts-sdk/src/sdk/dag-graph.ts | 236 +++
ts-sdk/src/sdk/dag.ts | 133 +-
ts-sdk/{vitest.config.ts => src/sdk/env.ts} | 16 +-
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/integration.test.ts | 561 +++++-
ts-sdk/tests/coordinator/operator-runner.test.ts | 207 ++
ts-sdk/tests/hitl/operator.test.ts | 180 ++
ts-sdk/tests/hitl/spec.test.ts | 353 ++++
ts-sdk/tests/public-api.test.ts | 6 +
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 | 34 +-
ts-sdk/tsconfig.json | 12 +-
ts-sdk/vitest.config.ts | 15 +
uv.lock | 148 +-
1419 files changed, 105541 insertions(+), 16736 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/67592.bugfix.rst
create mode 100644 airflow-core/newsfragments/68517.significant.rst
create mode 100644 airflow-core/newsfragments/68917.bugfix.rst
delete mode 100644 airflow-core/newsfragments/69469.improvement.rst
create mode 100644 airflow-core/newsfragments/69469.significant.rst
create mode 100644 airflow-core/newsfragments/69597.feature.rst
create mode 100644 airflow-core/newsfragments/70714.significant.rst
create mode 100644 airflow-core/newsfragments/73116.significant.rst
create mode 100644 airflow-core/newsfragments/73746.significant.rst
create mode 100644 airflow-core/newsfragments/74709.bugfix.rst
create mode 100644 airflow-core/newsfragments/task-loops.feature.rst
create mode 100644 airflow-core/src/airflow/api_fastapi/common/http_metrics.py
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/dag_processor_tokens.py
create mode 100644
airflow-core/src/airflow/api_fastapi/execution_api/datamodels/job.py
create mode 100644
airflow-core/src/airflow/api_fastapi/execution_api/routes/jobs.py
copy providers/common/ai/src/airflow/providers/common/ai/__init__.py =>
airflow-core/src/airflow/api_fastapi/execution_api/versions/v2026_10_30_xcom_params.py
(53%)
copy airflow-e2e-tests/java-test-bundle/src/resources/dags/java_test_dags.py
=> airflow-core/src/airflow/api_fastapi/execution_api/versions/v2027_02_28.py
(59%)
create mode 100644
airflow-core/src/airflow/cli/commands/dag_processor_token_command.py
create mode 100644 airflow-core/src/airflow/dag_processing/api_client.py
create mode 100644 airflow-core/src/airflow/dag_processing/bundles/manifest.py
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/migrations/versions/0147_3_5_0_add_session_id_to_job.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/FilterBar/filters/LoopFilter.tsx
create mode 100644
airflow-core/src/airflow/ui/src/components/FilterBar/filters/loopParams.test.ts
create mode 100644
airflow-core/src/airflow/ui/src/components/FilterBar/filters/loopParams.ts
create mode 100644
airflow-core/src/airflow/ui/src/components/FilterBar/filters/pausedStateParams.ts
copy ts-sdk/api-docs/dag-authoring-api.ts =>
airflow-core/src/airflow/ui/src/components/LoopDecisionReason.tsx (62%)
create mode 100644
airflow-core/src/airflow/ui/src/components/LoopOptionLabel.tsx
create mode 100644
airflow-core/src/airflow/ui/src/components/TriggerDag/RecentConfigSelect.test.tsx
create mode 100644
airflow-core/src/airflow/ui/src/components/TriggerDag/RecentConfigSelect.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/useResolvePassCoordinate.test.ts
create mode 100644
airflow-core/src/airflow/ui/src/hooks/useResolvePassCoordinate.ts
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} (60%)
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/IterationSwitcherButton.tsx
create mode 100644
airflow-core/src/airflow/ui/src/layouts/Details/MapIndexSwitcherButton.tsx
create mode 100644
airflow-core/src/airflow/ui/src/layouts/Details/SearchMapIndexes.test.tsx
create mode 100644
airflow-core/src/airflow/ui/src/layouts/Details/SearchMapIndexes.tsx
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/DagsList/DagTags.test.tsx
create mode 100644
airflow-core/src/airflow/ui/src/pages/DagsList/DagsListCountsContext.tsx
create mode 100644 airflow-core/src/airflow/ui/src/pages/Events/Events.test.tsx
copy ts-sdk/vitest.config.ts =>
airflow-core/src/airflow/ui/src/pages/GroupTaskInstance/GroupTaskInstances.tsx
(79%)
create mode 100644
airflow-core/src/airflow/ui/src/pages/GroupTaskInstance/LoopIterations/loopUtils.test.ts
copy airflow-core/src/airflow/ui/src/{components/TriggerDag/types.ts =>
pages/GroupTaskInstance/LoopIterations/loopUtils.ts} (50%)
create mode 100644
airflow-core/src/airflow/ui/src/pages/GroupTaskInstance/useLoopOutcomeStats.test.tsx
create mode 100644
airflow-core/src/airflow/ui/src/pages/GroupTaskInstance/useLoopOutcomeStats.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/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
create mode 100644 airflow-core/src/airflow/ui/src/queries/useIsLoopGroup.ts
create mode 100644
airflow-core/src/airflow/ui/src/queries/useLoopFilterOptions.test.ts
create mode 100644
airflow-core/src/airflow/ui/src/queries/useLoopFilterOptions.ts
copy ts-sdk/vitest.config.ts =>
airflow-core/src/airflow/ui/src/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
create mode 100644
airflow-core/src/airflow/ui/src/utils/executionParams.test.ts
create mode 100644 airflow-core/src/airflow/ui/src/utils/executionParams.ts
copy ts-sdk/vitest.config.ts =>
airflow-core/src/airflow/ui/src/utils/isOneOf.test.ts (66%)
copy airflow-core/src/airflow/ui/src/{pages/GroupTaskInstance/index.ts =>
utils/isOneOf.ts} (66%)
copy ts-sdk/vitest.config.ts =>
airflow-core/src/airflow/ui/src/utils/loopTaskInstance.ts (74%)
create mode 100644 airflow-core/src/airflow/utils/log/task_log_address.py
create mode 100644
airflow-core/tests/unit/api_fastapi/common/test_http_metrics.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_dag_processor_client.py
create mode 100644
airflow-core/tests/unit/api_fastapi/execution_api/test_dag_processor_tokens.py
create mode 100644
airflow-core/tests/unit/api_fastapi/execution_api/versions/head/test_jobs.py
copy airflow-core/{src/airflow/_shared =>
tests/unit/api_fastapi/execution_api/versions/v2027_02_28}/__init__.py (100%)
create mode 100644
airflow-core/tests/unit/api_fastapi/execution_api/versions/v2027_02_28/test_jobs.py
create mode 100644
airflow-core/tests/unit/cli/commands/test_dag_processor_token_command.py
create mode 100644
airflow-core/tests/unit/dag_processing/bundles/test_manifest.py
create mode 100644 airflow-core/tests/unit/dag_processing/test_api_client.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
delete mode 100644 airflow-core/tests/unit/utils/test_orm_event_handlers.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 (52%)
copy airflow-e2e-tests/{java-test-bundle =>
java-native-bundle}/gradle.properties (100%)
copy ts-sdk/api-docs/dag-authoring-api.ts =>
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
create mode 100644
airflow-e2e-tests/java-native-bundle/src/java/org/apache/airflow/e2e/nativedag/DynamicDags.java
copy
kubernetes-tests/lang_sdk/java_example/src/java/org/apache/airflow/k8sexample/K8sBundleBuilder.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/e2e_test_utils/dynamic_dags.py
create mode 100644
airflow-e2e-tests/tests/airflow_e2e_tests/go_sdk_tests/test_go_sdk_dynamic_dag.py
create mode 100644
airflow-e2e-tests/tests/airflow_e2e_tests/java_sdk_tests/test_java_sdk_dynamic_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/airflow_spelling.py
create mode 100644 devel-common/src/sphinx_exts/mermaid_config.json
create mode 100644 devel-common/src/sphinx_exts/mermaid_puppeteer_config.json
create mode 100644 devel-common/src/sphinx_exts/mermaid_svg.py
create mode 100644
devel-common/src/sphinx_exts/templates/provider_connection_services.rst.jinja2
create mode 100644
devel-common/tests/unit/sphinx_exts/docs_build/test_build_docs_mermaid.py
create mode 100644
devel-common/tests/unit/sphinx_exts/docs_build/test_spelling_checks.py
create mode 100644 devel-common/tests/unit/sphinx_exts/test_airflow_spelling.py
create mode 100644 devel-common/tests/unit/sphinx_exts/test_mermaid_svg.py
create mode 100644
devel-common/tests/unit/sphinx_exts/test_providers_extensions.py
create mode 100644 go-sdk/example/dynamic/dags.go
rename kubernetes-tests/lang_sdk/Dockerfile.java =>
go-sdk/example/dynamic/dags.yaml (57%)
create mode 100644 go-sdk/example/dynamic/main.go
rename
java-sdk/processor/src/main/kotlin/org/apache/airflow/sdk/{BuilderProcessor.kt
=> AirflowProcessor.kt} (92%)
rename
java-sdk/processor/src/test/kotlin/org/apache/airflow/sdk/{BuilderTest.kt =>
AirflowProcessorTest.kt} (85%)
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/IdValidation.kt
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/IdValidationTest.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/common/ai/docs/frameworks/anthropic.rst
create mode 100644 providers/common/ai/docs/frameworks/openai_agents.rst
create mode 100644 providers/common/ai/docs/img/approval_required_actions.png
create mode 100644 providers/common/ai/docs/img/approval_review_form.png
create mode 100644 providers/common/ai/docs/memory.rst
create mode 100644 providers/common/ai/docs/recovery.rst
create mode 100644 providers/common/ai/docs/supported_services.rst
create mode 100644 providers/common/ai/docs/toolsets/progressive_disclosure.rst
create mode 100644 providers/common/ai/docs/why_common_ai.rst
delete mode 100644
providers/common/ai/src/airflow/providers/common/ai/durable/caching_model.py
delete mode 100644
providers/common/ai/src/airflow/providers/common/ai/durable/caching_toolset.py
create mode 100644
providers/common/ai/src/airflow/providers/common/ai/durable/capability.py
create mode 100644
providers/common/ai/src/airflow/providers/common/ai/durable/journal.py
delete mode 100644
providers/common/ai/src/airflow/providers/common/ai/durable/step_counter.py
create mode 100644
providers/common/ai/src/airflow/providers/common/ai/durable/strands.py
create mode 100644
providers/common/ai/src/airflow/providers/common/ai/durable/strands_storage.py
create mode 100644
providers/common/ai/src/airflow/providers/common/ai/example_dags/example_agent_memory.py
create mode 100644
providers/common/ai/src/airflow/providers/common/ai/example_dags/example_agent_recovery.py
create mode 100644
providers/common/ai/src/airflow/providers/common/ai/example_dags/example_agent_tool_judge.py
create mode 100644
providers/common/ai/src/airflow/providers/common/ai/example_dags/example_anthropic_tool_runner.py
create mode 100644
providers/common/ai/src/airflow/providers/common/ai/example_dags/example_llm_approval.py
create mode 100644
providers/common/ai/src/airflow/providers/common/ai/example_dags/example_openai_agents_agent.py
create mode 100644
providers/common/ai/src/airflow/providers/common/ai/example_dags/example_progressive_tool_disclosure.py
create mode 100644
providers/common/ai/src/airflow/providers/common/ai/example_dags/example_strands_durable.py
create mode 100644
providers/common/ai/src/airflow/providers/common/ai/example_dags/example_why_common_ai.py
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/_plugin_urls.py
create mode 100644
providers/common/ai/src/airflow/providers/common/ai/plugins/model_panel.py
create mode 100644
providers/common/ai/src/airflow/providers/common/ai/plugins/www/src/components/ModelPanel.tsx
create mode 100644
providers/common/ai/src/airflow/providers/common/ai/plugins/www/src/components/NoModelInfo.tsx
create mode 100644
providers/common/ai/src/airflow/providers/common/ai/plugins/www/src/components/Tooltip.tsx
create mode 100644
providers/common/ai/src/airflow/providers/common/ai/plugins/www/src/hooks/useModelInfo.ts
create mode 100644
providers/common/ai/src/airflow/providers/common/ai/plugins/www/src/model-api.ts
copy
providers/common/ai/src/airflow/providers/common/ai/plugins/www/src/{main.tsx
=> model.tsx} (81%)
copy airflow-core/src/airflow/ui/src/pages/GroupTaskInstance/index.ts =>
providers/common/ai/src/airflow/providers/common/ai/plugins/www/src/types/model.ts
(75%)
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/src/airflow/providers/common/ai/sandbox/boat.py
create mode 100644
providers/common/ai/src/airflow/providers/common/ai/sandbox/islo.py
create mode 100644
providers/common/ai/src/airflow/providers/common/ai/sandbox/openshell.py
create mode 100644
providers/common/ai/src/airflow/providers/common/ai/tools/anthropic.py
create mode 100644
providers/common/ai/src/airflow/providers/common/ai/tools/openai_agents.py
create mode 100644
providers/common/ai/tests/system/common/ai/example_sandbox_toolset_boat.py
create mode 100644
providers/common/ai/tests/system/common/ai/example_sandbox_toolset_islo.py
create mode 100644
providers/common/ai/tests/system/common/ai/example_sandbox_toolset_openshell.py
copy providers/common/ai/{src/airflow/providers/common/ai/durable/__init__.py
=> tests/unit/common/ai/durable/conftest.py} (79%)
create mode 100644
providers/common/ai/tests/unit/common/ai/durable/memory_storage.py
delete mode 100644
providers/common/ai/tests/unit/common/ai/durable/test_caching_model.py
delete mode 100644
providers/common/ai/tests/unit/common/ai/durable/test_caching_toolset.py
create mode 100644
providers/common/ai/tests/unit/common/ai/durable/test_capability.py
create mode 100644
providers/common/ai/tests/unit/common/ai/durable/test_code_mode.py
create mode 100644
providers/common/ai/tests/unit/common/ai/durable/test_journal.py
delete mode 100644
providers/common/ai/tests/unit/common/ai/durable/test_replay_verification.py
delete mode 100644
providers/common/ai/tests/unit/common/ai/durable/test_step_counter.py
create mode 100644
providers/common/ai/tests/unit/common/ai/durable/test_strands.py
create mode 100644
providers/common/ai/tests/unit/common/ai/durable/test_strands_storage.py
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/operators/test_agent_tool_judge.py
create mode 100644
providers/common/ai/tests/unit/common/ai/plugins/test__plugin_urls.py
create mode 100644
providers/common/ai/tests/unit/common/ai/plugins/test_model_panel.py
create mode 100644
providers/common/ai/tests/unit/common/ai/plugins/test_model_panel_compat.py
create mode 100644
providers/common/ai/tests/unit/common/ai/sandbox/test_boat.py
create mode 100644
providers/common/ai/tests/unit/common/ai/sandbox/test_islo.py
create mode 100644
providers/common/ai/tests/unit/common/ai/sandbox/test_openshell.py
create mode 100644
providers/common/ai/tests/unit/common/ai/test_provider_metadata.py
create mode 100644
providers/common/ai/tests/unit/common/ai/tools/test_anthropic.py
create mode 100644
providers/common/ai/tests/unit/common/ai/tools/test_openai_agents.py
create mode 100644
providers/edge3/src/airflow/providers/edge3/migrations/versions/0007_5_1_0_add_priority_weight_to_edge_job.py
create mode 100644
providers/fab/tests/unit/fab/www/extensions/test_init_wsgi_middlewares.py
create mode 100644 providers/microsoft/azure/docs/bundles/index.rst
copy {airflow-core/src/airflow/_shared =>
providers/microsoft/azure/src/airflow/providers/microsoft/azure/bundles}/__init__.py
(100%)
create mode 100644
providers/microsoft/azure/src/airflow/providers/microsoft/azure/bundles/wasb.py
copy {airflow-core/src/airflow/_shared =>
providers/microsoft/azure/tests/unit/microsoft/azure/bundles}/__init__.py (100%)
create mode 100644
providers/microsoft/azure/tests/unit/microsoft/azure/bundles/test_wasb.py
create mode 100644 registry/src/_data/durableModules.js
create mode 100644 registry/src/durable.njk
create mode 100644 registry/src/js/durable-filters.js
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/in_container/install_mermaid_cli.sh
copy airflow-e2e-tests/java-test-bundle/src/resources/dags/java_test_dags.py
=> scripts/tests/in_container/test_generate_mprocs_config.py (59%)
create mode 100644 task-sdk/src/airflow/sdk/definitions/_internal/loop.py
copy providers/common/ai/src/airflow/providers/common/ai/durable/__init__.py
=> task-sdk/src/airflow/sdk/definitions/loop.py (62%)
create mode 100644 task-sdk/src/airflow/sdk/execution_time/loop.py
copy {providers/common/ai/src/airflow/providers/common/ai/durable =>
task-sdk/src/airflow/sdk/importers/yaml_importer}/__init__.py (60%)
create mode 100644 task-sdk/src/airflow/sdk/importers/yaml_importer/builder.py
create mode 100644 task-sdk/src/airflow/sdk/importers/yaml_importer/importer.py
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 airflow-e2e-tests/java-test-bundle/src/resources/dags/java_test_dags.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_importer.py
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/{vitest.config.ts => api-docs/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
create mode 100644 ts-sdk/src/coordinator/operator-runner.ts
copy {airflow-core/src/airflow/ui/src/pages/GroupTaskInstance =>
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/{vitest.config.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