This is an automated email from the ASF dual-hosted git repository.
dabla pushed a change to branch dabla/agent-async/01-task-agent-aexecute
in repository https://gitbox.apache.org/repos/asf/airflow.git
from b7657566a7c Check that concurrent async agent runs stay on the event
loop's thread
add 31beac5deea disable external entities in SAML idp response parsing
(#71423)
add 750617c3867 Fix entry-point plugins reported as duplicates on
RHEL/Fedora venvs (#74531)
add f14247a5938 Add a general debugging guide to the troubleshooting doc
(#71457)
add ebe49645e34 Move XCom filter param models into execution API
datamodels (#76536)
add 437f6be3cec Run the durable OpenAI Agents tests in the agent framework
CI job (#76500)
add 7625b59a85e Key LLM batch and durable Strands state on the task loop
iteration (#76201)
add d46d97fa8d5 Note the unparseable-output case in OpenAIResponseOperator
XCom docs (#74519)
add b7ceab0372b Support Workload Identity Federation in Snowflake REST API
authentication (#75810)
add f82542a453a Name the caller's own MCP client and durable setup in
Common AI errors (#76495)
add 8e922e329ab Refactor isinstance dispatching with polymorphism (#74634)
add e3c21b77c97 Update French (fr) UI translations to 100% coverage
(#76460)
add dcbf21690e8 Pass AssetStateStoreAccessors into response_check_path
Callable in HttpEventTrigger (#72287)
add 6cf8ed6c63a UI: Translate the Spanish strings added since the last
pass (#76466)
add b5ab0a15174 UI: Defer React plugin compatibility runtime (#75083)
add b0581660e45 Support fail_on_reject on every LLM approval operator
(#74493)
add 24464f6d728 Keep Dag and deadline list serialization off the API
server event loop (#76525)
add 020259387b9 Support multimodal prompts with enable_hitl_review in
AgentOperator (#74389)
add c4eaf4b8399 Prepare providers release 2026-11-03 (#76490)
add 3eacdb97dfd Sanitize error message in DatabricksExecutionTrigger
(#70385)
add 8529c41db15 Add environment_variables to MWAA Serverless create/update
workflow operators (#76496)
add c8d8df3353d Add `@task.modal` to run Python functions on Modal without
Airflow in the image (#76502)
add bca1e144da1 Add raphaelauv to fork-ci-gate (#76538)
add 71a19df58c5 Write container logs to the task log in deferrable
AzureContainerInstancesOperator (#76330)
add 6bacb63888f Complete Dutch translations (2026-10-05) (#74286)
add 77762c256df Add `partition_key` to the `DagRun Finished` log line
(#76557)
add 1f4bc05aa0a Allow Human-in-the-loop tasks to be answered while still
running (#75413)
add c7fcba0106a Stop holding openai below 3 in Airflow's CI image and
constraints (#76503)
add 322c178e05b Fix duplicated asset events when name_prefix_pattern
matches all (#74816)
add 1fe65f5f13a Keep parallel tool results replayable across retries in
OpenAI Agents durable runs (#76015)
add 3204b6ebebb Fix enum names and non-ISO dates in airflowctl dags output
(#76354)
add cc1dfb94296 Remove deprecated project_id from BigQueryGetDataOperator
(#76115)
add 2e9ae2a1999 Split mixed OpenLineage tests into unit and integration
(#75642)
add 1e0e003cea8 Template conn_id and config_kwargs in @task.pyspark
(#75764)
add a04fda49d1a Mark MSGraphAsyncOperator as durable capable (#76576)
add 92fa9b36b09 Fix skill call counts and source links in the AI Model tab
(#76541)
add e10575d5479 Release the Java SDK 1.0.0 and pin its schema URL to the
published docs site (#75944)
add 48a35ccd2d8 Fix S3ToAzureBlobStorageOperator failing on S3 folder
markers (#76408)
add e0b7126d573 Let a final release override the
pending-provider-candidate guard (#76592)
add 1f764a2e118 Add Russian (ru) translation agent skill guideline (#76579)
add f90d2607dd4 Return 404 when a DagRun disappears during task API writes
(#72907)
add f5234c744a1 Harden OpenLineage task outcomes system test (#76595)
add 82b33126d3a Chart: Default airflow version to 3.4.0 (#76601)
add c2ff56eff6b UI: Complete the Portuguese translation (#76412)
add a0924b53f86 Mark Airflow 3.4.0 as the latest released version (#76602)
add f396a3b2271 Add Cloud SQL Auth Proxy v2 support to CloudSqlProxyRunner
(#73646)
add a7b8dc96928 Give the SMTP emailer its own defaults for the [smtp]
options (#76346)
add 498c1cd470c Fix CeleryExecutor failing to load with Celery 5.7 (#76591)
add c8e01650d56 Add a regression test for WITH in the asset orphanage
DELETE (#75127)
add 887f6d2b559 Keep Dag parse results tied to their source snapshot
(#74789)
add dac96bcf61c Publish Dag results and inventories through the Execution
API (#74790)
add f2edf564af4 Recover Dag processor work and expire inactive processors
(#74791)
add 2c69a21eb65 Add HTTP publication to the Dag processor manager (#74793)
add f01f7ef65d6 Make the Variable value non-nullable in the Execution API
(#76007)
add 335fd71f58f Stop AWS Glue job run when a deferred task is cleared
(#73702)
add abc3a20f080 Escape server and user text in airflowctl command messages
(#76265)
add 2cc7bb0c702 Fix scheduler crash loop from large Edge deadline
callbacks (#74445)
add 6ae6994206a Stop deferred AWS tasks failing on a botocore Config
object (#74843)
add ea5cd982f6b Bump the registry-package-updates group across 1 directory
with 2 updates (#76608)
add 0b9bf0cd855 Stream remote task logs from S3 instead of reading whole
objects (#73517)
add 3e076e8a64e Edge: Return 400 instead of 500 on invalid worker version
(#72925)
add 92b4e57df13 Bump oauthlib from 4.0.0 to 4.0.1 in /dev/breeze (#76569)
add 4d54940ceef Fix PgBouncer NetworkPolicy using namespace labels of
disabled triggerer KEDA (#74565)
add 81b487227dc Use airflowHome for logs mount in wait-for-migrations init
container (#75060)
add a694dc8281f Honor API server worker timeout configuration (#72859)
add 696d09de527 Add annotations to helm chart priorityclasses (#74457)
add a2d88223bc8 Fix providers release guide steps that use wrong dates or
labels (#76625)
add 2a1961ac68c Allow extra init containers for PgBouncer (#74612)
add 553c41633ed Fix Deadline Alert SmtpNotifier example in Dag docs
(#75597)
add 46321fb722f UI: Reduce duplicate Grid polling (#75979)
add e5ce464abab Fix S3 remote log test for streaming responses (#76632)
add 05d86b21c28 Post the first fork CI comment without waiting for the
next run (#76510)
add 7b8d8f15405 Inline the GPG keys into the PROD Dockerfile (#76644)
add 3776ea3fd7c Use get_github_repo to check the release candidate remote
(#76641)
add db434a8afbe Revert "Fix formatting in chart/NOTICE file (#76237)"
(#76637)
add ce124900b5d Bump the edge-ui-package-updates group across 1 directory
with 15 updates (#76615)
add 2e265688748 Bump the github-actions-updates group across 1 directory
with 6 updates (#76618)
add 9ff996841a0 Bump the typescript group across 1 directory with 4
updates (#76610)
add 66f69ec977f Bump the uv-dependency-updates group in /dev/breeze with 3
updates (#76609)
add 96e157acba9 Bump the ui-plugin-template-package-updates group across 1
directory with 7 updates (#76614)
add 6aa279481bb Bump the auth-ui-package-updates group across 1 directory
with 13 updates (#76613)
add 538d34a8b64 Bump the ts-sdk-package-updates group across 1 directory
with 6 updates (#76059)
add ea64ed6757c Bump happy-dom from 20.14.6 to 21.0.4 in
/dev/react-plugin-tools/react_plugin_template (#76098)
add 1cc29251f50 Bump happy-dom from 20.14.6 to 21.0.4 in edge plugin UI
(#76097)
add 5d744b59810 Update AGENTS.md to instruct local Kubernetes clusters
setup with breeze k8s (#76482)
add 9c3a807d76b Bump the core-ui-package-updates group across 1 directory
with 13 updates (#76619)
add 2adbce7e7b2 Explain a BASE_IMAGE without Python in hardened image
builds (#76645)
add 1cd300be4a2 i18n(Ko): add missing translations in browse.json
common.json components.json dags.json (#76506)
add fcc55294185 Document JSON connections in Google Secret Manager backend
(#76649)
add 6773d728c60 Fix tag-providers not finding a push remote without .git
suffix (#76624)
add b37cd0ddb00 Clarify Google connection secret settings and retry
default (#76622)
add 92a4e3ebea7 Fix XComArg.map() failing when the upstream XCom is a dict
(#75022)
add 1dd57153412 Add missing zh-CN UI translations (#74294)
add 37ab48778c9 Preserve explicit falsy partial() values on mapped
operators (#75679)
add 9c032199799 Fix xcom_pull() ignoring default parameter when
map_indexes not set (#64614)
add cb3568622c2 Require rich-argparse 1.4.0 for airflowctl (#76661)
add a41e1b38794 Fix Google Cloud Workflows docs links to operator and
sensor classes (#76667)
add 7c828d22fe6 Bump paramiko in
/providers/informatica/dev/informatica_simulator (#76648)
add 3bd5f761f5c Stop Task SDK client identifiers from reaching other API
endpoints (#68617)
add be08e1eda83 Correct the Bluesky URL in pyproject.toml (#76357)
add 8ad4d615e74 Bump Java SDK Jackson to 2.22.4 for high-severity
advisories (#76670)
add 79a1dd12ee5 Fix dag.test() hanging when a task reads a Variable in a
subprocess (#65587)
add 804eee944b4 Expose Dag run configuration and metadata to Go tasks
(#74674)
add 8f2f9f34f10 i18n(ko): Add missing dag and dashboard translations (Nov
7) (#76675)
add 43657c8b504 i18n(ko): add missing translaction in common.json (Nov 7)
(#76674)
add 69e21655071 i18n(ko): translate backfill status/running and array
validation labels (#76678)
add 66a9df22abc Add new Translation Owner in Ko (#76673)
add 54f9083f753 Load consumed asset events of a run in bulk when a task
starts (#76513)
add ecdfb67f2b3 TS SDK: Expose the Dag run conf on the task context
(#75563)
add 0e7068d9c2c Add yuseok89 to fork-ci-gate (#76677)
add 8930bc3db2d Document supported `databricks_retry_args` usage for
deferrable Databricks operators (#68017)
add de147260bee Unexclude Cassandra on Python 3.14 (#74696)
add 09a06a5f572 Move the Dag list folder toggle next to the filters
(#76691)
add 5aadb5571ae Add a Databricks toolset for Unity Gateway MCP Services
(#74198)
add 84a2037827b Keep CSV quoting in LLMFileAnalysisOperator sample rows
(#76389)
add 9491792d270 Fail fast on permanent Anthropic batch poll errors (#70177)
add 72502d61652 Keep SQL deep scan on for custom read-only allowed_types
(#76688)
add 5925de6d01e Fail fast when an init container image cannot be pulled
(#76393)
add 665e91fc7d0 Go SDK: Reject a task priority weight outside the int32
range (#76284)
add 7fc063d5964 Reduce SSL setup overhead in async Kubernetes triggers
(#73399)
add 47d0c64c9cd Fix GcpBodyFieldValidator warning on valid
version-specific fields (#74930)
add d021d1e5352 Decrement dag_processing.processes when a parse finishes
(#76651)
add a12bf56a328 Honor cancel_on_kill in deferred GCS to BigQuery loads
(#74358)
add 2e541862b7f Task success should be agnostic of clear_on_success
cleanup failure (#76021)
add bfe56db36f1 Add on_kill support to SageMakerProcessingOperator (#76413)
add e7ca5f1c2d3 Don't retry Java tasks if classpath can't be built (#76707)
add 4726281b5ec Keep common.ai tripwires and module_loading types working
after dependency upgrades (#76715)
add b4501418ddb Vendor the Java SDK supervisor schema from this repository
(#75942)
add 921b4b3c0f3 Update python client version/changelog for 3.4.0 release
(#76727)
add 7e176c79bc7 Fix Dag bundle sync losing updates when a bundle reads a
connection (#76188)
add fba7573923b UI: Complete and fix Polish translations (#76428)
add ce5104d35d1 Fix SparkConnectHook unsupported-path error message
(#74847)
add 13a5ac09f97 Fix Databricks retry parameter names in deferrable-mode
docs (#76744)
add 525f1e4dabb Complete Spanish translations for parsed bundle files
(#76647)
add 8a119894a17 Document Italian translation conventions (#75727)
add 6c364f7e29b Raise errors from all statements of multi-statement SQL in
VerticaHook (#75967)
add 1327f828e6d Revert "Remove deprecated TimeDeltaSensorAsync (#76131)"
(#76732)
add 97240872160 Replace Prettier with oxfmt (#76472)
add 22a339029e0 Fix ExternalTaskSensor link pointing to the wrong external
Dag run (#74528)
add a0b0c4dd6f8 Reuse stored credentials only when testing an unchanged
connection (#76453)
add b26e77632dd Collapse detail tabs that do not fit into a More menu
(#76742)
add df93716a6bc Say in the AI Model tab which values are kept in external
storage (#76747)
add b7c89dec8d7 Fix Grid horizontal scrolling (#76083)
add d26160dbf39 Parse HookToolset :param descriptions by indentation
(#76701)
add e13f0d7add5 Update providers metadata 2026-11-09 (#76780)
add 4744db9eca9 Warn when AwsDuckDBHook ignores the AWS connection's
credentials (#76639)
add a139b9d8c66 Add missing unit tests for the apache.hive macros plugin
(#72447)
add 89b92c3221f Return 0 instead of None from FTPHook.get_size for empty
files (#76665)
add 73fae2472c7 Apply Default Security Context to OTel Collector Container
(#74268)
add ce8bc76baa9 Fix FTP test connection passing without contacting the
server (#76355)
add 8ee310e38cb Add a connection page for the DuckDB on AWS connection
(#76634)
add dfe9cc6ef3c Add Ollama model readiness check to PydanticAIHook (#75369)
add c8e7deb10a5 Add an ADR for how mapped tasks works across language SDKs
(#76297)
add 9ecd53d3a90 Fix Celery workers rejecting deadline callbacks on Airflow
3.2 (#75438)
add 382e487e5d9 Prepare amazon provider RC2 for 2026-11-10 (#76789)
add d23f21fa312 Always build airflow core and task sdk docs together in CI
(#76443)
add da7dab32a84 Stop API responses from resolving their items on the event
loop (#76537)
add 8f7f1c803a8 Bump the core-ui-package-updates group across 1 directory
with 10 updates (#76770)
add 3a3fc3ef1e4 Bump the uv-dependency-updates group in /dev/breeze with 3
updates (#76768)
add c540289ad94 Bump the github-actions-updates group with 5 updates
(#76767)
add 99c838f6968 Bump the edge-ui-package-updates group across 1 directory
with 4 updates (#76763)
add 32876923113 Bump the ui-plugin-template-package-updates group across 1
directory with 2 updates (#76760)
add 8ca83d897f2 Bump the auth-ui-package-updates group across 1 directory
with 3 updates (#76758)
add 546405f2407 Bump @11ty/eleventy (#76756)
add 175d0278691 Decode Go SDK date-times from the supervisor in UTC
(#75737)
add dd44cc0ea56 Add an ADR for task loops across language SDKs (#76364)
add a8031341e0e Resubmit lost Databricks runs instead of failing every
retry (#76718)
add bbe3eac9a9c Fix flaky OpenLineage manual state e2e test on airflow 3+
(#76796)
add 762495647a9 Add task loop authoring ADRs for the TypeScript, Java and
Go SDKs (#76365)
add 76a27275c7a [main] Upgrade important CI environment (#76334)
add 6a8bc716a39 Add meel-ayush to fork CI pilot and exempt pilot users
from PR cap (#76782)
add eeab7a877df Redact Connection extra fields that providers declare as
secrets (#73797)
add 367d619c756 Build published slim images with constraints without
providers (#76798)
add 5cdfa8571b0 Use Python 3.14 as the default Python of the 3.5.0 images
(#76800)
add 15adc8a492a Add Durable Execution to the registry header navigation
(#76775)
add 2b59699b0fe Rework fork CI draft and label rules into one state table
(#76681)
add 057f0099281 Make db clean --skip-archive delete rows directly (#74113)
add 8699a93e659 Bound job loading for component health checks (#76751)
add e1150d774f8 Stop generating constraints for PRs that do not use them
(#76685)
add 6b31eaa7f38 UI: Load the ELK graph layout engine only when a graph is
drawn (#75986)
add 0c6be7cad0f Close German Translation Gaps 2026-11-09 (#76781)
add aac29ec1bbb Split the Common AI sandbox backends page into one page
per backend (#76853)
add 0d2b5559004 Skip provider tests that cannot import a changed file
(#76686)
add 6d0ad1ee1af Run the always-on CI jobs only when their inputs change
(#76690)
add 402d7a58ad2 Skip provider compatibility tests for changes hidden from
them (#76722)
add 27e807b5f1e Add Execution API endpoint for callback terminal state
(#75253)
add ffac35fc92b Add a task switcher to the Dag breadcrumb (#76850)
add 89c89fdb3f1 Simplify attribute assertions in Connection URI tests
(#76876)
add 975edc02c50 Use uvicorn-worker package for the gunicorn API server
worker (#76856)
add 6b68dacdab3 Correct sbx swap guidance in Common AI sandbox docs
(#76879)
add 4d1bc90d0d4 Add Hugging Face Provider (#76317)
add 53134ff6a69 Go SDK: Return XCom and task state store integers as int64
(#75700)
add e429795ce4b Fix the last loop iteration index in the task loops docs
(#76831)
add 5667fb5044b Skip the Go SDK rule constants test outside the Airflow
repository (#76888)
add 5a9e21ac1b4 Skip upstream-only push workflows when a fork syncs main
(#76695)
add b9a3082904d Make SDK release verification steps work on macOS and with
backports (#76897)
add 48ccf8119b5 Fix unexpected stdout output in async S3Hook decorator
(#76855)
add 5e2e1417f22 Count replayed tool errors against the retry limit in
OpenAI Agents durable runs (#76790)
add 3591d7e4b77 Tidy the ESLint config before the oxlint move (#76477)
add 5081d2810f7 Correct what clearing a durable agent task replays in
common.ai docs (#76860)
add 3c254dbc58b Fix durable agent tasks failing when a tool returns bytes
(#76861)
add bf9e64f9e60 Fail the task when an OpenAI Agents SDK durable run stops
for tool approval (#76785)
add 3cb48d36e76 i18n(zh-CN): add missing translations and improve zh-CN
translation skill (#76700)
add 1a85102bc6d Accept `.filtered()`, `.prefixed()` and `.renamed()`
toolsets in the agent framework adapters (#76752)
add e42b5a92aeb Use prek hook script to refresh Java SDK metadata (#76714)
add 602ec1005a7 Pause an OpenAI Agents SDK durable run for tool approval
in Required Actions (#76786)
add ba57629ded2 fix the command for contributors to verify python client
and airflowctl rc (#76870)
add f5a994353e4 Copy the stack trace from the Dag import error modals
(#76924)
add 17e7eed7cf4 Bump @chakra-ui/react (#76754)
add 961da0f3b10 UI: Complete the missing Hebrew (he) translations (#76562)
add fc65819a7b2 docs(CODEOWNERS): add Indonesian UI translation owner
(#76929)
add c1ad31f66c3 UI: Move most lint rules from ESLint to oxlint (#76491)
add 646b92b8b9b Re-anchor custom queued deadline references when a Dag run
is cleared (#71850)
add 1f407b62dcb Restore clearing `ExternalTaskMarker` targets in other
Dags (#75874)
add 4a059ea539b Stop ObjectStorage journal write failures from failing
durable tasks (#75916)
add 7b163446c17 Link asset events emitted in a task loop to their
iteration (#76840)
add 29096e46255 Speed up PROD image stashes and restores with zstd (#76279)
add 83b140fbcc6 Apply Gantt date filters to mapped tasks and task groups
(#75725)
add 37a7713bde4 Fix outdated Python and Kubernetes versions in README
table (#76936)
add 34c96509ebc Move agent-assisted contribution docs out of the main
README (#76951)
add 3647e3c7e17 i18n(ko): add missing translaction in common.json (Nov 11)
(#76920)
add b4d1f1c22be Support durable execution in SageMakerTrainingOperator
(#76036)
add 54970db82f1 Reject reserved loop keys when deleting an XCom (#76892)
add b2d58334144 Regenerate skill-eval hash after AGENTS.md link update
(#76960)
add 426357062fb Prevent Databricks task failure after successful repair
(#76904)
add 9a02819b4e4 Fix AwsEksExecutor dying with a 401 after its credentials
rotate (#76332)
add 2448be40082 Make common.ai tool_prefix and output_type signatures
consistent (#74695)
add c43ff0fc1dd Make durable flag reach default_args in
PowerBIDatasetRefreshOperator (#76793)
add 509124275f4 Clamp negative offset in mapped XCom slice queries (#75015)
add 020428773e7 Remove duplicate GroupCommandParser type from airflowctl
CLI (#76345)
add 30f51ff2d4b Apply the configured XCom backend to language SDK task
XComs (#75184)
add e024d4c15a5 Fix TimeSensor test failing when host time zone is ahead
of UTC (#76901)
add 29331a83256 Add Innogando to INTHEWILD.md (#76906)
add 992321d1cd2 Fix durable agent retries replaying the same failing tool
call on every attempt (#76862)
add 36230cf39e9 Reduce task state store calls made by durable agent tasks
(#76863)
add 02fb985e3c1 Let durable agent tasks run chosen tools on every attempt
instead of replaying them (#76864)
add 0a65e225207 Let durable agent tasks use toolsets without an id (#76877)
add e17cecaabbb Block merging on fork CI once a PR is moved to project CI
(#76672)
add 1eb0dcc87c1 Bump the core-ui-package-updates group across 1 directory
with 5 updates (#76945)
add 2becf0f4aa0 Bump the oxc group across 1 directory with 2 updates
(#76941)
add 38c11037bc1 Take the Postgres migration lock without a bound parameter
(#76976)
add 6c2e7b36460 Fail the attempt when `SQLToolset` cannot reach its
database (#76783)
add 9ad98535c74 Merge branch 'main' into
dabla/agent-async/01-task-agent-aexecute
No new revisions were added by this update.
Summary of changes:
.agents/skills/airflow-translations/SKILL.md | 1 +
.agents/skills/airflow-translations/locales/it.md | 28 +
.agents/skills/airflow-translations/locales/pt.md | 26 +
.agents/skills/airflow-translations/locales/ru.md | 242 ++
.../skills/airflow-translations/locales/zh-CN.md | 23 +
.../prepare-providers-documentation/SKILL.md | 5 +-
.asf.yaml | 16 +
.github/CODEOWNERS | 3 +-
.github/ISSUE_TEMPLATE/1-airflow_bug_report.yml | 1 +
.github/boring-cyborg.yml | 3 +
.github/dependabot.yml | 4 +
.github/fork-ci-gate.toml | 5 +-
.github/workflows/additional-prod-image-tests.yml | 19 +
.github/workflows/agent-framework-tests.yml | 2 +-
.github/workflows/airflow-e2e-tests.yml | 32 +-
.github/workflows/automatic-backport.yml | 1 +
.github/workflows/basic-tests.yml | 19 +-
.github/workflows/ci-amd.yml | 48 +-
.github/workflows/ci-arm.yml | 48 +-
.github/workflows/ci-image-checks.yml | 5 +
.github/workflows/ci-notification.yml | 2 +-
.github/workflows/codeql-analysis.yml | 8 +-
.../java-sdk-dependabot-verification-metadata.yml | 15 +-
.github/workflows/java-sdk-dependency-security.yml | 10 +-
.github/workflows/java-sdk-release-verify.yml | 4 +-
.github/workflows/k8s-tests.yml | 4 +-
.github/workflows/milestone-tag-assistant.yml | 1 +
.github/workflows/notify-uv-lock-conflicts.yml | 3 +-
.github/workflows/prod-image-build.yml | 10 +-
.github/workflows/registry-backfill.yml | 2 +-
.github/workflows/registry-build.yml | 2 +-
.github/workflows/registry-tests.yml | 2 +-
.github/workflows/release-constraints.yml | 16 +-
.../scheduled-legacy-prod-image-canary.yml | 2 +
.../scheduled-verify-release-calendar.yml | 2 +-
.github/workflows/test-providers.yml | 6 +-
.github/workflows/ui-e2e-tests.yml | 2 +-
.github/workflows/update-constraints-on-push.yml | 5 +-
.pre-commit-config.yaml | 13 +-
.rat-excludes | 4 +
AGENTS.md | 7 +-
Dockerfile | 205 +-
Dockerfile.ci | 34 +-
INTHEWILD.md | 1 +
README.md | 70 +-
RELEASE_NOTES.rst | 1099 +++++-
airflow-core/.pre-commit-config.yaml | 2 +-
.../0007-taskflow-across-language-boundary.md | 4 +
.../lang-sdk/0016-mapped-tasks-across-lang-sdks.md | 584 +++
.../lang-sdk/0017-task-loops-across-lang-sdks.md | 252 ++
airflow-core/adr/lang-sdk/README.md | 2 +
.../administration-and-deployment/dag-bundles.rst | 43 +
.../administration-and-deployment/listeners.rst | 13 +
.../dynamic-task-mapping.rst | 1 +
.../authoring-and-scheduling/language-sdks/go.rst | 21 +-
.../language-sdks/index.rst | 8 +-
.../language-sdks/java.rst | 6 +-
.../language-sdks/typescript.rst | 7 +-
.../docs/authoring-and-scheduling/loops.rst | 2 +-
airflow-core/docs/core-concepts/dags.rst | 23 +-
.../docs/core-concepts/task-state-store.rst | 16 +
airflow-core/docs/core-concepts/xcoms.rst | 2 +
airflow-core/docs/extra-packages-ref.rst | 2 +
airflow-core/docs/howto/usage-cli.rst | 2 +-
.../docs/installation/supported-versions.rst | 2 +-
airflow-core/docs/migrations-ref.rst | 8 +-
airflow-core/docs/troubleshooting.rst | 129 +
airflow-core/newsfragments/71850.bugfix.rst | 1 +
airflow-core/newsfragments/74789.significant.rst | 12 +
airflow-core/newsfragments/75874.significant.rst | 17 +
airflow-core/newsfragments/76007.significant.rst | 22 +
airflow-core/newsfragments/76453.significant.rst | 16 +
airflow-core/pyproject.toml | 3 +-
.../src/airflow/api/common/airflow_health.py | 34 +-
.../auth/managers/simple/ui/package.json | 28 +-
.../auth/managers/simple/ui/pnpm-lock.yaml | 2043 +++++-----
.../src/airflow/api_fastapi/common/db/dag_runs.py | 9 +
.../airflow/api_fastapi/common/parameters/misc.py | 40 +-
.../importerrors.py => api_fastapi/common/xcom.py} | 21 +-
.../api_fastapi/core_api/datamodels/assets.py | 8 +
.../api_fastapi/core_api/datamodels/dag_run.py | 3 +-
.../api_fastapi/core_api/datamodels/dags.py | 4 +-
.../core_api/datamodels/task_instances.py | 6 +
.../api_fastapi/core_api/datamodels/ui/deadline.py | 2 +-
.../api_fastapi/core_api/openapi/_private_ui.yaml | 72 +
.../core_api/openapi/v2-rest-api-generated.yaml | 23 +-
.../api_fastapi/core_api/routes/public/assets.py | 6 +-
.../core_api/routes/public/connections.py | 43 +-
.../core_api/routes/public/dag_parsing.py | 18 +
.../api_fastapi/core_api/routes/public/dag_run.py | 6 +-
.../api_fastapi/core_api/routes/public/dags.py | 7 +-
.../api_fastapi/core_api/routes/public/hitl.py | 6 +-
.../core_api/routes/public/task_instances.py | 46 +-
.../core_api/routes/public/task_state_store.py | 5 +-
.../api_fastapi/core_api/routes/public/xcom.py | 29 +-
.../airflow/api_fastapi/core_api/routes/ui/dags.py | 9 +-
.../api_fastapi/core_api/routes/ui/deadlines.py | 2 +-
.../api_fastapi/core_api/routes/ui/gantt.py | 14 +-
.../airflow/api_fastapi/core_api/routes/ui/grid.py | 81 +-
.../api_fastapi/core_api/services/public/assets.py | 12 +-
.../core_api/services/public/task_instances.py | 341 +-
.../execution_api/datamodels/callback.py} | 22 +-
.../execution_api/datamodels/dag_parsing.py | 201 +
.../api_fastapi/execution_api/datamodels/job.py | 4 +-
.../execution_api/datamodels/taskinstance.py | 12 +
.../execution_api/datamodels/variable.py | 4 +-
.../api_fastapi/execution_api/datamodels/xcom.py | 19 +
.../api_fastapi/execution_api/in_process.py | 30 +-
.../api_fastapi/execution_api/routes/__init__.py | 2 +
.../api_fastapi/execution_api/routes/callbacks.py | 58 +-
.../execution_api/routes/dag_parsing.py | 630 ++++
.../api_fastapi/execution_api/routes/hitl.py | 16 +-
.../api_fastapi/execution_api/routes/jobs.py | 22 +-
.../execution_api/routes/task_instances.py | 35 +-
.../execution_api/routes/task_state_store.py | 17 +-
.../api_fastapi/execution_api/routes/xcoms.py | 35 +-
.../api_fastapi/execution_api/versions/__init__.py | 18 +-
.../execution_api/versions/v2025_08_10.py | 2 +-
.../execution_api/versions/v2026_10_30.py | 19 +
.../versions/v2026_10_30_xcom_params.py | 35 -
.../execution_api/versions/v2027_02_28.py | 62 +-
.../src/airflow/api_fastapi/gunicorn_app.py | 2 +-
airflow-core/src/airflow/cli/cli_config.py | 4 +-
.../src/airflow/cli/commands/api_server_command.py | 4 +-
.../src/airflow/config_templates/config.yml | 21 +-
.../src/airflow/dag_processing/api_client.py | 115 +-
.../src/airflow/dag_processing/bundles/base.py | 21 +-
.../src/airflow/dag_processing/bundles/local.py | 1 +
.../src/airflow/dag_processing/bundles/manager.py | 52 +-
.../importerrors.py => dag_processing/claims.py} | 19 +-
.../src/airflow/dag_processing/collection.py | 282 +-
.../src/airflow/dag_processing/maintenance.py | 155 +
airflow-core/src/airflow/dag_processing/manager.py | 1323 +++++--
.../src/airflow/dag_processing/processor.py | 77 +-
.../src/airflow/dag_processing/requested_work.py | 139 +
.../importerrors.py => dag_processing/timeouts.py} | 22 +-
airflow-core/src/airflow/jobs/job.py | 26 +-
.../src/airflow/jobs/scheduler_job_runner.py | 57 +-
.../src/airflow/jobs/triggerer_job_runner.py | 23 +-
.../src/airflow/listeners/spec/importerrors.py | 20 +-
...154_3_5_0_add_idempotency_key_to_hitl_detail.py | 53 +
...55_3_5_0_add_dag_processor_publication_state.py | 78 +
.../0156_3_5_0_add_processor_work_claims.py | 74 +
airflow-core/src/airflow/models/__init__.py | 2 +
airflow-core/src/airflow/models/callback.py | 4 +
airflow-core/src/airflow/models/connection.py | 6 +-
airflow-core/src/airflow/models/dag.py | 1 +
.../models/dag_processor_publication_receipt.py | 46 +
.../dag_processor_work_claim.py} | 30 +-
airflow-core/src/airflow/models/dagbag.py | 16 +-
airflow-core/src/airflow/models/dagbundle.py | 3 +
airflow-core/src/airflow/models/dagcode.py | 2 +-
airflow-core/src/airflow/models/dagrun.py | 4 +-
airflow-core/src/airflow/models/dagwarning.py | 30 +-
airflow-core/src/airflow/models/deadline.py | 9 +
airflow-core/src/airflow/models/errors.py | 4 +-
airflow-core/src/airflow/models/hitl.py | 43 +
airflow-core/src/airflow/models/serialized_dag.py | 44 +-
airflow-core/src/airflow/models/taskinstance.py | 38 +-
airflow-core/src/airflow/models/variable.py | 10 +-
airflow-core/src/airflow/models/xcom.py | 7 +
airflow-core/src/airflow/process_context.py | 53 +
airflow-core/src/airflow/sensors/__init__.py | 1 +
.../serialization/definitions/baseoperator.py | 6 +
.../src/airflow/serialization/definitions/dag.py | 27 +-
.../airflow/serialization/definitions/deadline.py | 12 +-
.../serialization/definitions/mappedoperator.py | 8 +
airflow-core/src/airflow/serialization/encoders.py | 5 +
.../airflow/serialization/serialized_objects.py | 34 +-
airflow-core/src/airflow/state/metastore.py | 5 +-
airflow-core/src/airflow/ui/.oxfmtrc.json | 51 +
airflow-core/src/airflow/ui/.oxlintrc.json | 611 +++
airflow-core/src/airflow/ui/.prettierignore | 9 -
airflow-core/src/airflow/ui/.prettierrc | 23 -
airflow-core/src/airflow/ui/eslint.config.js | 26 +-
.../src/airflow/ui/openapi-gen/queries/common.ts | 12 +-
.../ui/openapi-gen/queries/ensureQueryData.ts | 22 +-
.../src/airflow/ui/openapi-gen/queries/prefetch.ts | 22 +-
.../src/airflow/ui/openapi-gen/queries/queries.ts | 22 +-
.../src/airflow/ui/openapi-gen/queries/suspense.ts | 22 +-
.../airflow/ui/openapi-gen/requests/schemas.gen.ts | 35 +
.../ui/openapi-gen/requests/services.gen.ts | 20 +-
.../airflow/ui/openapi-gen/requests/types.gen.ts | 16 +-
airflow-core/src/airflow/ui/package.json | 66 +-
airflow-core/src/airflow/ui/pnpm-lock.yaml | 3116 +++++++++-------
airflow-core/src/airflow/ui/public/i18n/README.md | 1 +
.../airflow/ui/public/i18n/locales/de/browse.json | 1 +
.../airflow/ui/public/i18n/locales/de/common.json | 2 +
.../airflow/ui/public/i18n/locales/en/common.json | 2 +
.../airflow/ui/public/i18n/locales/en/dags.json | 1 +
.../airflow/ui/public/i18n/locales/es/browse.json | 8 +-
.../airflow/ui/public/i18n/locales/es/common.json | 8 +-
.../ui/public/i18n/locales/es/components.json | 4 +
.../src/airflow/ui/public/i18n/locales/es/dag.json | 4 +-
.../airflow/ui/public/i18n/locales/es/dags.json | 1 +
.../airflow/ui/public/i18n/locales/fr/admin.json | 3 +
.../airflow/ui/public/i18n/locales/fr/browse.json | 2 +
.../airflow/ui/public/i18n/locales/fr/common.json | 34 +-
.../ui/public/i18n/locales/fr/components.json | 13 +
.../src/airflow/ui/public/i18n/locales/fr/dag.json | 68 +-
.../airflow/ui/public/i18n/locales/fr/dags.json | 14 +-
.../ui/public/i18n/locales/fr/dashboard.json | 1 +
.../airflow/ui/public/i18n/locales/fr/hitl.json | 1 +
.../airflow/ui/public/i18n/locales/he/admin.json | 2 +
.../airflow/ui/public/i18n/locales/he/browse.json | 2 +
.../airflow/ui/public/i18n/locales/he/common.json | 15 +-
.../ui/public/i18n/locales/he/components.json | 11 +
.../src/airflow/ui/public/i18n/locales/he/dag.json | 36 +-
.../airflow/ui/public/i18n/locales/he/dags.json | 2 +
.../ui/public/i18n/locales/he/dashboard.json | 1 +
.../airflow/ui/public/i18n/locales/he/hitl.json | 1 +
.../airflow/ui/public/i18n/locales/it/README.md | 34 +
.../airflow/ui/public/i18n/locales/ko/browse.json | 1 +
.../airflow/ui/public/i18n/locales/ko/common.json | 13 +-
.../ui/public/i18n/locales/ko/components.json | 4 +
.../src/airflow/ui/public/i18n/locales/ko/dag.json | 4 +-
.../airflow/ui/public/i18n/locales/ko/dags.json | 1 +
.../ui/public/i18n/locales/ko/dashboard.json | 1 +
.../airflow/ui/public/i18n/locales/nl/admin.json | 26 +-
.../airflow/ui/public/i18n/locales/nl/assets.json | 18 +-
.../airflow/ui/public/i18n/locales/nl/browse.json | 34 +
.../airflow/ui/public/i18n/locales/nl/common.json | 227 +-
.../ui/public/i18n/locales/nl/components.json | 57 +-
.../src/airflow/ui/public/i18n/locales/nl/dag.json | 139 +-
.../airflow/ui/public/i18n/locales/nl/dags.json | 60 +-
.../ui/public/i18n/locales/nl/dashboard.json | 24 +-
.../airflow/ui/public/i18n/locales/nl/hitl.json | 1 +
.../airflow/ui/public/i18n/locales/pl/admin.json | 8 +-
.../airflow/ui/public/i18n/locales/pl/assets.json | 12 +-
.../airflow/ui/public/i18n/locales/pl/browse.json | 4 +-
.../airflow/ui/public/i18n/locales/pl/common.json | 61 +-
.../ui/public/i18n/locales/pl/components.json | 71 +-
.../src/airflow/ui/public/i18n/locales/pl/dag.json | 96 +-
.../airflow/ui/public/i18n/locales/pl/dags.json | 50 +-
.../ui/public/i18n/locales/pl/dashboard.json | 21 +-
.../airflow/ui/public/i18n/locales/pl/hitl.json | 1 +
.../airflow/ui/public/i18n/locales/pt/admin.json | 33 +-
.../airflow/ui/public/i18n/locales/pt/assets.json | 39 +-
.../airflow/ui/public/i18n/locales/pt/browse.json | 60 +
.../airflow/ui/public/i18n/locales/pt/common.json | 314 +-
.../ui/public/i18n/locales/pt/components.json | 92 +-
.../src/airflow/ui/public/i18n/locales/pt/dag.json | 236 +-
.../airflow/ui/public/i18n/locales/pt/dags.json | 65 +-
.../ui/public/i18n/locales/pt/dashboard.json | 44 +-
.../airflow/ui/public/i18n/locales/pt/hitl.json | 15 +
.../ui/public/i18n/locales/zh-CN/admin.json | 3 +
.../ui/public/i18n/locales/zh-CN/assets.json | 1 +
.../ui/public/i18n/locales/zh-CN/browse.json | 2 +
.../ui/public/i18n/locales/zh-CN/common.json | 66 +-
.../ui/public/i18n/locales/zh-CN/components.json | 29 +-
.../airflow/ui/public/i18n/locales/zh-CN/dag.json | 119 +-
.../airflow/ui/public/i18n/locales/zh-CN/dags.json | 23 +-
.../ui/public/i18n/locales/zh-CN/dashboard.json | 1 +
.../airflow/ui/public/i18n/locales/zh-CN/hitl.json | 1 +
.../ui/rules/{off.js => airflow-plugin/index.js} | 19 +-
.../airflow-plugin/no-react-namespace-types.js | 59 +
.../no-react-namespace-types.test.js | 38 +
airflow-core/src/airflow/ui/rules/core.js | 71 -
airflow-core/src/airflow/ui/rules/i18n.js | 167 -
airflow-core/src/airflow/ui/rules/i18next.js | 68 -
airflow-core/src/airflow/ui/rules/levels.js | 3 -
airflow-core/src/airflow/ui/rules/perfectionist.js | 146 -
.../src/airflow/ui/rules/plugin-patch.d.ts | 4 -
airflow-core/src/airflow/ui/rules/prettier.js | 38 -
airflow-core/src/airflow/ui/rules/react.js | 7 -
airflow-core/src/airflow/ui/rules/rem.js | 146 -
airflow-core/src/airflow/ui/rules/stylistic.js | 90 -
airflow-core/src/airflow/ui/rules/typescript.js | 150 +-
airflow-core/src/airflow/ui/rules/unicorn.js | 21 +-
.../components/ActionAccordion/ActionAccordion.tsx | 9 +-
.../ui/src/components/ActionAccordion/columns.tsx | 18 +-
.../ui/src/components/Assets/AssetEvent.test.tsx | 33 +
.../ui/src/components/Assets/AssetEvent.tsx | 11 +-
.../ui/src/components/Breadcrumb/CrumbSwitcher.tsx | 7 +-
.../TaskInstance/ClearGroupTaskInstanceDialog.tsx | 11 +
.../ClearTaskInstanceDialog.dependentDags.test.tsx | 137 +
.../Clear/TaskInstance/ClearTaskInstanceDialog.tsx | 11 +
.../ui/src/components/DagImportErrorDetails.tsx | 2 +-
.../ui/src/components/DagImportErrorModal.test.tsx | 15 +-
.../ui/src/components/FilterBar/FilterBar.test.tsx | 45 +
.../ui/src/components/FilterBar/FilterBar.tsx | 12 +-
.../airflow/ui/src/components/FilterBar/types.ts | 13 +-
.../ui/src/components/Graph/useGraphLayout.ts | 45 +-
.../airflow/ui/src/components/GraphTaskFilters.tsx | 2 +-
.../ui/src/components/NeedsReviewButton.tsx | 3 +-
.../components/PluginActions/PluginReactAction.tsx | 6 +-
.../ui/src/components/ReactMarkdownBlocks.tsx | 4 +-
.../ui/src/components/TaskInstanceTooltip.tsx | 4 +-
.../airflow/ui/src/hooks/useRequiredActionTabs.ts | 6 +-
.../ui/src/layouts/Details/DagBreadcrumb.test.tsx | 213 +-
.../ui/src/layouts/Details/DagBreadcrumb.tsx | 22 +
.../ui/src/layouts/Details/DetailsLayout.test.tsx | 108 +
.../ui/src/layouts/Details/DetailsLayout.tsx | 26 +-
.../ui/src/layouts/Details/Gantt/Gantt.test.tsx | 58 +-
.../airflow/ui/src/layouts/Details/Gantt/Gantt.tsx | 10 +-
.../ui/src/layouts/Details/Grid/Grid.test.tsx | 72 +
.../airflow/ui/src/layouts/Details/Grid/Grid.tsx | 79 +-
.../layouts/Details/Grid/GridPaginationButtons.tsx | 127 +-
.../ui/src/layouts/Details/Grid/constants.ts | 11 +
.../layouts/Details/Grid/useGridPagination.test.ts | 36 +-
.../src/layouts/Details/Grid/useGridPagination.ts | 14 +-
.../Details/Grid/useGridScrollRestore.test.ts | 617 +++-
.../layouts/Details/Grid/useGridScrollRestore.ts | 183 +-
.../airflow/ui/src/layouts/Details/Grid/utils.ts | 5 +-
.../ui/src/layouts/Details/NavTabs.test.tsx | 207 ++
.../src/airflow/ui/src/layouts/Details/NavTabs.tsx | 182 +-
.../airflow/ui/src/layouts/Details/SearchTasks.tsx | 190 +
.../ui/src/layouts/Details/TaskSwitcherButton.tsx | 64 +
.../src/airflow/ui/src/layouts/Nav/Nav.tsx | 3 +-
airflow-core/src/airflow/ui/src/main.tsx | 19 +-
.../src/pages/Asset/CreateAssetEventModal.test.tsx | 6 +-
.../airflow/ui/src/pages/Dag/Calendar/Calendar.tsx | 6 +-
.../airflow/ui/src/pages/Dag/Overview/Overview.tsx | 1 +
.../src/pages/DagsList/DagsFilters/DagsFilters.tsx | 15 +-
.../ui/src/pages/DagsList/DagsList.test.tsx | 33 +
.../src/airflow/ui/src/pages/DagsList/DagsList.tsx | 66 +-
.../Dashboard/Stats/DagImportErrorsModal.test.tsx | 59 +
.../pages/Dashboard/Stats/DagImportErrorsModal.tsx | 2 +-
.../HITLTaskInstances/HITLTaskInstances.test.tsx | 11 +-
.../pages/HITLTaskInstances/HITLTaskInstances.tsx | 4 +-
.../src/airflow/ui/src/pages/ReactPlugin.test.tsx | 25 +-
.../src/airflow/ui/src/pages/ReactPlugin.tsx | 21 +-
.../ui/src/pages/Task/Overview/Overview.tsx | 6 +-
.../ui/src/queries/useCreateBackfill.test.tsx | 3 +-
.../airflow/ui/src/queries/useGridRuns.test.tsx | 48 +
.../src/airflow/ui/src/queries/useGridRuns.ts | 50 +-
.../ui/src/queries/useGridTISummaries.test.tsx | 72 +
.../airflow/ui/src/queries/useGridTISummaries.ts | 25 +-
.../src/airflow/ui/src/queries/useTrigger.test.tsx | 3 +-
airflow-core/src/airflow/ui/src/utils/hitl.test.ts | 48 +-
airflow-core/src/airflow/ui/src/utils/hitl.ts | 12 +-
airflow-core/src/airflow/ui/src/utils/links.ts | 16 +-
.../src/utils/registerPluginDependencies.test.ts | 59 +
.../utils/registerPluginDependencies.ts} | 39 +-
.../ui/src/utils/useFiltersHandler.test.tsx | 21 +
.../src/airflow/ui/src/utils/useFiltersHandler.ts | 6 +-
.../airflow/ui/tests/e2e/specs/task-tries.spec.ts | 4 +-
airflow-core/src/airflow/ui/tsconfig.dev.json | 2 +-
airflow-core/src/airflow/utils/db.py | 18 +-
airflow-core/src/airflow/utils/db_cleanup.py | 93 +-
airflow-core/tests/unit/always/test_connection.py | 14 +-
.../tests/unit/always/test_providers_manager.py | 32 +
.../tests/unit/api/common/test_airflow_health.py | 80 +-
.../core_api/routes/public/test_assets.py | 63 +-
.../core_api/routes/public/test_connections.py | 35 +-
.../core_api/routes/public/test_dag_parsing.py | 118 +
.../core_api/routes/public/test_dag_run.py | 2 +
.../core_api/routes/public/test_dags.py | 18 +
.../core_api/routes/public/test_hitl.py | 46 +
.../core_api/routes/public/test_task_instances.py | 169 +-
.../routes/public/test_task_state_store.py | 51 +-
.../core_api/routes/public/test_xcom.py | 21 +-
.../api_fastapi/core_api/routes/ui/test_dags.py | 30 +
.../core_api/routes/ui/test_deadlines.py | 12 +
.../api_fastapi/core_api/routes/ui/test_grid.py | 245 ++
.../services/public/test_task_instances.py | 361 +-
.../unit/api_fastapi/execution_api/test_app.py | 33 +
.../execution_api/test_dag_processor_client.py | 2 +
.../execution_api/test_token_scope_boundaries.py | 10 +
.../execution_api/versions/head/test_callbacks.py | 188 +
.../versions/head/test_connections.py | 34 +
.../versions/head/test_dag_parsing.py | 2137 +++++++++++
.../execution_api/versions/head/test_hitl.py | 45 +
.../execution_api/versions/head/test_jobs.py | 56 +
.../versions/head/test_task_instances.py | 104 +-
.../versions/head/test_task_state_store.py | 38 +-
.../execution_api/versions/head/test_variables.py | 63 +
.../execution_api/versions/head/test_xcoms.py | 45 +-
.../versions/v2026_10_30/test_task_state_store.py | 51 +
.../versions/v2027_02_28/test_callbacks.py | 43 +
.../versions/v2027_02_28/test_jobs.py | 10 +
.../versions/v2027_02_28/test_variables.py | 65 +
.../unit/api_fastapi/test_lazy_response_fields.py | 338 ++
.../unit/cli/commands/test_api_server_command.py | 37 +
.../unit/cli/commands/test_gunicorn_monitor.py | 2 +-
.../tests/unit/dag_processing/bundles/test_base.py | 6 +-
.../bundles/test_dag_bundle_manager.py | 261 +-
.../unit/dag_processing/bundles/test_local.py | 3 +
airflow-core/tests/unit/dag_processing/conftest.py | 67 +
.../tests/unit/dag_processing/test_api_client.py | 422 ++-
.../tests/unit/dag_processing/test_claims.py | 39 +
.../tests/unit/dag_processing/test_collection.py | 59 +-
.../tests/unit/dag_processing/test_maintenance.py | 408 ++
.../tests/unit/dag_processing/test_manager.py | 3495 ++++++++++++++++--
.../dag_processing/test_manager_api_failures.py | 351 ++
.../dag_processing/test_manager_api_inventory.py | 453 +++
.../dag_processing/test_manager_api_isolation.py | 206 ++
.../dag_processing/test_manager_api_results.py | 72 +
.../tests/unit/dag_processing/test_processor.py | 154 +-
.../unit/dag_processing/test_requested_work.py | 141 +
airflow-core/tests/unit/jobs/test_base_job.py | 29 +
airflow-core/tests/unit/jobs/test_scheduler_job.py | 187 +-
.../tests/unit/listeners/test_importerrors.py | 85 +
.../test_0156_add_processor_work_claims.py | 165 +
airflow-core/tests/unit/models/test_connection.py | 21 +
airflow-core/tests/unit/models/test_dagrun.py | 33 +
airflow-core/tests/unit/models/test_dagwarning.py | 54 -
airflow-core/tests/unit/models/test_deadline.py | 13 +-
.../tests/unit/models/test_deadline_alert.py | 57 +-
.../tests/unit/models/test_serialized_dag.py | 64 +-
.../tests/unit/models/test_taskinstance.py | 167 +-
.../unit/serialization/test_dag_serialization.py | 64 +
airflow-core/tests/unit/state/test_metastore.py | 5 +-
airflow-core/tests/unit/utils/test_db.py | 22 +-
airflow-core/tests/unit/utils/test_db_cleanup.py | 350 +-
airflow-core/tests/unit/utils/test_log_handlers.py | 2 +-
airflow-ctl/pyproject.toml | 4 +-
.../airflowctl/api/datamodels/auth_generated.py | 2 +-
.../src/airflowctl/api/datamodels/generated.py | 11 +-
airflow-ctl/src/airflowctl/ctl/cli_config.py | 25 +-
airflow-ctl/src/airflowctl/ctl/cli_parser.py | 18 +-
.../src/airflowctl/ctl/commands/auth_command.py | 5 +-
.../src/airflowctl/ctl/commands/config_command.py | 3 +-
.../airflowctl/ctl/commands/connection_command.py | 5 +-
.../src/airflowctl/ctl/commands/dag_command.py | 15 +-
.../src/airflowctl/ctl/commands/task_command.py | 11 +-
airflow-ctl/src/airflowctl/ctl/utils/dag_run.py | 9 +-
.../airflow_ctl/ctl/commands/test_auth_command.py | 52 +-
.../ctl/commands/test_config_command.py | 14 +-
.../ctl/commands/test_connections_command.py | 25 +
.../airflow_ctl/ctl/commands/test_dag_command.py | 96 +-
.../airflow_ctl/ctl/commands/test_task_command.py | 48 +
.../tests/airflow_ctl/ctl/utils/test_dag_run.py | 29 +
.../docker/lang-sdk-xcom-object-storage.yml | 39 +
.../java-native-bundle/gradle.properties | 2 +-
.../java-test-bundle/gradle.properties | 2 +-
airflow-e2e-tests/pyproject.toml | 2 +-
.../tests/airflow_e2e_tests/conftest.py | 178 +-
.../tests/airflow_e2e_tests/constants.py | 5 +
.../__init__.py | 0
.../test_lang_sdk_xcom_backend.py | 291 ++
chart/Chart.yaml | 20 +-
chart/NOTICE | 2 +-
chart/README.md | 1 +
chart/docs/using-additional-containers.rst | 11 +-
chart/newsfragments/76601.significant.rst | 3 +
.../otel-collector/otel-collector-deployment.yaml | 5 +-
.../templates/pgbouncer/pgbouncer-deployment.yaml | 4 +
.../pgbouncer/pgbouncer-networkpolicy.yaml | 2 +-
.../priorityclasses/priority-classes.yaml | 3 +
.../templates/scheduler/scheduler-deployment.yaml | 2 +-
.../templates/triggerer/triggerer-deployment.yaml | 2 +-
chart/templates/workers/worker-deployment.yaml | 2 +-
.../airflow_aux/test_basic_helm_chart.py | 8 +-
.../helm_tests/airflow_core/test_scheduler.py | 27 +-
.../helm_tests/airflow_core/test_triggerer.py | 31 +-
chart/tests/helm_tests/airflow_core/test_worker.py | 31 +-
.../otel_collector/test_otel_collector.py | 21 +
chart/tests/helm_tests/other/test_pgbouncer.py | 75 +
.../helm_tests/security/test_security_context.py | 16 +-
chart/values.schema.json | 20 +-
chart/values.yaml | 11 +-
clients/python/CHANGELOG.md | 76 +
clients/python/version.txt | 2 +-
contributing-docs/12_provider_distributions.rst | 6 +-
.../13_airflow_dependencies_and_extras.rst | 5 +
contributing-docs/15_node_environment_setup.rst | 10 +-
contributing-docs/18_contribution_workflow.rst | 5 +-
contributing-docs/25_maintainer_pr_triage.md | 24 +-
contributing-docs/30_new_language_sdk.rst | 5 +
.../31_task_execution_architecture.rst | 7 +-
contributing-docs/32_open_pull_request_limit.rst | 11 +-
.../33_agent_assisted_contribution.md | 59 +
contributing-docs/README.rst | 3 +
.../diagram_task_sdk_execution_architecture.md5sum | 2 +-
.../diagram_task_sdk_execution_architecture.png | Bin 184731 -> 170906
bytes
.../diagram_task_sdk_execution_architecture.py | 8 +-
contributing-docs/testing/unit_tests.rst | 2 +-
dev/README_RELEASE_AIRFLOW.md | 18 +-
dev/README_RELEASE_AIRFLOWCTL.md | 16 +-
dev/README_RELEASE_HELM_CHART.md | 2 +-
dev/README_RELEASE_PROVIDERS.md | 30 +-
dev/README_RELEASE_PYTHON_CLIENT.md | 14 +-
dev/breeze/doc/ci/02_images.md | 6 +-
dev/breeze/doc/ci/04_selective_checks.md | 85 +-
dev/breeze/doc/ci/05_workflows.md | 14 +-
.../doc/ci/08_fork_ci_for_external_contributors.md | 201 +-
dev/breeze/doc/images/output_build-docs.svg | 12 +-
dev/breeze/doc/images/output_build-docs.txt | 2 +-
...tput_release-management_add-back-references.svg | 12 +-
...tput_release-management_add-back-references.txt | 2 +-
...elease-management_classify-provider-changes.svg | 4 +-
...elease-management_classify-provider-changes.txt | 2 +-
...management_generate-issue-content-providers.svg | 4 +-
...management_generate-issue-content-providers.txt | 2 +-
...ease-management_generate-providers-metadata.svg | 12 +-
...ease-management_generate-providers-metadata.txt | 2 +-
...e-management_prepare-provider-distributions.svg | 4 +-
...e-management_prepare-provider-distributions.txt | 2 +-
...e-management_prepare-provider-documentation.svg | 4 +-
...e-management_prepare-provider-documentation.txt | 2 +-
.../output_release-management_publish-docs.svg | 12 +-
.../output_release-management_publish-docs.txt | 2 +-
...output_sbom_generate-providers-requirements.svg | 14 +-
...output_sbom_generate-providers-requirements.txt | 2 +-
.../images/output_testing_airflow-e2e-tests.svg | 32 +-
.../images/output_testing_airflow-e2e-tests.txt | 2 +-
.../images/output_workflow-run_publish-docs.svg | 12 +-
.../images/output_workflow-run_publish-docs.txt | 2 +-
.../output_workflow-run_release-constraints.svg | 52 +-
.../output_workflow-run_release-constraints.txt | 2 +-
dev/breeze/pyproject.toml | 2 +-
.../airflow_breeze/commands/kubernetes_commands.py | 2 +-
.../commands/release_candidate_command.py | 16 +-
.../src/airflow_breeze/commands/release_command.py | 37 +-
.../commands/release_management_commands.py | 12 +-
.../airflow_breeze/commands/testing_commands.py | 1 +
.../src/airflow_breeze/commands/ui_commands.py | 7 +-
.../airflow_breeze/commands/workflow_commands.py | 14 +-
.../commands/workflow_commands_config.py | 1 +
.../files/hardened_os_deps_image_digests.json | 15 +-
.../files/hardened_python_image_digests.json | 16 +-
dev/breeze/src/airflow_breeze/global_constants.py | 14 +-
.../src/airflow_breeze/utils/fork_ci_gate.py | 2 +-
.../src/airflow_breeze/utils/fork_ci_messages.py | 31 +-
.../src/airflow_breeze/utils/fork_ci_reconcile.py | 550 ++-
.../src/airflow_breeze/utils/import_graph.py | 308 ++
.../airflow_breeze/utils/release_constraints.py | 67 +-
.../src/airflow_breeze/utils/selective_checks.py | 186 +-
.../src/airflow_breeze/utils/verification_plan.py | 30 +-
dev/breeze/tests/test_fork_ci_gate.py | 2 +-
dev/breeze/tests/test_fork_ci_messages.py | 17 +
dev/breeze/tests/test_fork_ci_reconcile.py | 1010 ++++-
dev/breeze/tests/test_import_graph.py | 122 +
dev/breeze/tests/test_os_deps_images.py | 52 +-
dev/breeze/tests/test_release_candidate_command.py | 22 +
dev/breeze/tests/test_release_command.py | 77 +-
dev/breeze/tests/test_release_constraints.py | 65 +
.../tests/test_release_management_commands.py | 83 +-
dev/breeze/tests/test_selective_checks.py | 441 ++-
dev/breeze/tests/test_verification_plan.py | 31 +-
dev/breeze/tests/test_verify_commands.py | 2 +-
dev/breeze/tests/test_workflow_commands.py | 21 +
dev/breeze/uv.lock | 146 +-
dev/mypy/pyproject.toml | 2 +-
.../react_plugin_template/package.json | 18 +-
.../react_plugin_template/pnpm-lock.yaml | 1821 ++++-----
dev/skill-evals/last-eval-hash.txt | 2 +-
dev/verify_airflow_ctl_rc.sh | 16 +-
dev/verify_python_client_rc.sh | 17 +-
.../src/tests_common/test_utils/markers.py | 19 +
docker-stack-docs/README.md | 8 +-
docker-stack-docs/build-arg-ref.rst | 5 +-
docker-stack-docs/build.rst | 4 +-
docker-stack-docs/changelog.rst | 7 +
.../customizing/add-build-essential-custom.sh | 2 +-
.../docker-examples/customizing/custom-sources.sh | 2 +-
.../customizing/pypi-dev-runtime-deps.sh | 2 +-
.../customizing/pypi-extras-and-deps.sh | 2 +-
.../customizing/pypi-selected-version.sh | 2 +-
.../restricted/restricted_environments.sh | 2 +-
docker-stack-docs/index.rst | 8 +-
docs/spelling_wordlist.txt | 30 +
generated/PYPI_README.md | 26 +-
generated/known_sdk_imports_in_core.txt | 4 +-
generated/provider_metadata.json | 554 +--
go-sdk/DEVELOPMENT.md | 7 +-
go-sdk/README.md | 1 +
go-sdk/adr/0008-native-dag-interface.md | 2 +-
go-sdk/adr/0009-task-loop-authoring-interface.md | 245 ++
go-sdk/airflow/context.go | 2 +-
go-sdk/airflow/dag.go | 1 +
go-sdk/airflow/enums.go | 34 +-
go-sdk/airflow/enums_test.go | 28 +-
go-sdk/airflow/serialize.go | 15 +
go-sdk/airflow/serialize_test.go | 30 +
go-sdk/airflow/serve_test.go | 89 +
go-sdk/capabilities.yaml | 5 +
go-sdk/example/bundle/main.go | 3 +
go-sdk/pkg/execution/client.go | 28 +-
go-sdk/pkg/execution/client_test.go | 20 +-
.../pkg/execution/genmodels/discriminators.gen.go | 4 +
go-sdk/pkg/execution/genmodels/gen.go | 5 +-
go-sdk/pkg/execution/genmodels/gen/main.go | 225 +-
go-sdk/pkg/execution/genmodels/gen/main_test.go | 169 +
go-sdk/pkg/execution/genmodels/models.gen.go | 210 +-
go-sdk/pkg/execution/genmodels/time.go | 84 +
go-sdk/pkg/execution/genmodels/time_test.go | 236 ++
go-sdk/pkg/execution/integration_test.go | 20 +-
go-sdk/pkg/execution/messages.go | 128 +-
go-sdk/pkg/execution/messages_test.go | 218 +-
go-sdk/pkg/execution/task_runner.go | 29 +-
go-sdk/pkg/execution/trigger_runner.go | 11 +-
go-sdk/schema/supervisor-schema.json | 153 +-
go-sdk/sdk/context.go | 19 +-
java-sdk/DEVELOPMENT.md | 17 +-
java-sdk/README.md | 3 +-
java-sdk/adr/0003-task-loop-authoring-interface.md | 327 ++
java-sdk/capabilities.yaml | 9 +-
java-sdk/gradle.properties | 4 +-
java-sdk/gradle/verification-metadata.xml | 64 +-
java-sdk/sdk/build.gradle.kts | 57 +-
java-sdk/sdk/module.md | 3 +-
java-sdk/sdk/schema/schema.json | 1043 ++++--
.../lang_sdk/java_example/gradle.properties | 2 +-
.../test_kubernetes_pod_operator.py | 2 +-
providers/.last_release_date.txt | 2 +-
providers/.pre-commit-config.yaml | 2 +-
providers/alibaba/README.rst | 6 +-
providers/alibaba/docs/changelog.rst | 12 +
providers/alibaba/docs/index.rst | 6 +-
providers/alibaba/provider.yaml | 3 +-
providers/alibaba/pyproject.toml | 6 +-
.../src/airflow/providers/alibaba/__init__.py | 2 +-
providers/amazon/README.rst | 14 +-
providers/amazon/docs/changelog.rst | 71 +
providers/amazon/docs/connections/duckdb_aws.rst | 104 +
providers/amazon/docs/executors/eks-executor.rst | 5 +
providers/amazon/docs/index.rst | 12 +-
providers/amazon/docs/operators/duckdb.rst | 37 +-
providers/amazon/provider.yaml | 3 +-
providers/amazon/pyproject.toml | 12 +-
.../src/airflow/providers/amazon/__init__.py | 2 +-
.../src/airflow/providers/amazon/aws/exceptions.py | 4 +
.../amazon/aws/executors/eks/_client_factory.py | 94 +-
.../airflow/providers/amazon/aws/hooks/base_aws.py | 6 +-
.../airflow/providers/amazon/aws/hooks/duckdb.py | 48 +-
.../src/airflow/providers/amazon/aws/hooks/s3.py | 1 -
.../providers/amazon/aws/hooks/sagemaker.py | 74 +-
.../providers/amazon/aws/log/s3_task_handler.py | 86 +-
.../airflow/providers/amazon/aws/operators/glue.py | 51 +-
.../amazon/aws/operators/mwaa_serverless.py | 21 +
.../providers/amazon/aws/operators/sagemaker.py | 222 +-
.../airflow/providers/amazon/aws/triggers/glue.py | 30 +-
.../providers/amazon/aws/triggers/sagemaker.py | 31 +-
.../airflow/providers/amazon/aws/utils/mixins.py | 26 +-
.../aws/executors/eks/test__client_factory.py | 232 +-
.../tests/unit/amazon/aws/hooks/test_base_aws.py | 43 +
.../tests/unit/amazon/aws/hooks/test_duckdb.py | 44 +-
.../amazon/tests/unit/amazon/aws/hooks/test_s3.py | 13 +
.../tests/unit/amazon/aws/hooks/test_sagemaker.py | 36 +
.../unit/amazon/aws/log/test_s3_task_handler.py | 84 +
.../tests/unit/amazon/aws/operators/test_glue.py | 141 +-
.../amazon/aws/operators/test_mwaa_serverless.py | 52 +
.../aws/operators/test_sagemaker_processing.py | 124 +
.../aws/operators/test_sagemaker_training.py | 242 +-
.../tests/unit/amazon/aws/triggers/test_glue.py | 41 +
.../unit/amazon/aws/triggers/test_sagemaker.py | 19 +-
.../tests/unit/amazon/aws/utils/test_mixins.py | 62 +-
.../airflow/providers/anthropic/hooks/anthropic.py | 21 +-
.../airflow/providers/anthropic/triggers/batch.py | 7 +-
.../tests/unit/anthropic/hooks/test_anthropic.py | 46 +-
.../tests/unit/anthropic/triggers/test_batch.py | 28 +
providers/apache/arrow/README.rst | 6 +-
providers/apache/arrow/docs/changelog.rst | 19 +
providers/apache/arrow/docs/index.rst | 6 +-
providers/apache/arrow/provider.yaml | 3 +-
providers/apache/arrow/pyproject.toml | 6 +-
.../src/airflow/providers/apache/arrow/__init__.py | 2 +-
providers/apache/cassandra/README.rst | 3 +-
providers/apache/cassandra/docs/changelog.rst | 6 +
providers/apache/cassandra/docs/index.rst | 1 +
providers/apache/cassandra/provider.yaml | 3 -
providers/apache/cassandra/pyproject.toml | 4 +-
providers/apache/hive/README.rst | 6 +-
providers/apache/hive/docs/changelog.rst | 13 +
providers/apache/hive/docs/index.rst | 6 +-
providers/apache/hive/provider.yaml | 3 +-
providers/apache/hive/pyproject.toml | 6 +-
.../src/airflow/providers/apache/hive/__init__.py | 2 +-
.../tests/unit/apache/hive/plugins/test_hive.py | 21 +-
providers/apache/kafka/README.rst | 6 +-
providers/apache/kafka/docs/changelog.rst | 12 +
providers/apache/kafka/docs/index.rst | 6 +-
providers/apache/kafka/provider.yaml | 3 +-
providers/apache/kafka/pyproject.toml | 6 +-
.../src/airflow/providers/apache/kafka/__init__.py | 2 +-
providers/apache/spark/docs/decorators/pyspark.rst | 4 +
.../providers/apache/spark/decorators/pyspark.py | 2 +
.../providers/apache/spark/hooks/spark_connect.py | 2 +-
.../unit/apache/spark/decorators/test_pyspark.py | 22 +
.../unit/apache/spark/hooks/test_spark_connect.py | 2 +-
providers/celery/README.rst | 6 +-
providers/celery/docs/changelog.rst | 17 +
providers/celery/docs/index.rst | 6 +-
providers/celery/provider.yaml | 3 +-
providers/celery/pyproject.toml | 6 +-
.../src/airflow/providers/celery/__init__.py | 2 +-
.../celery/executors/celery_executor_utils.py | 22 +-
.../integration/celery/test_celery_executor.py | 7 +-
.../unit/celery/executors/test_celery_executor.py | 42 +
providers/cncf/kubernetes/README.rst | 6 +-
providers/cncf/kubernetes/docs/changelog.rst | 41 +
providers/cncf/kubernetes/docs/index.rst | 6 +-
providers/cncf/kubernetes/provider.yaml | 3 +-
providers/cncf/kubernetes/pyproject.toml | 6 +-
.../airflow/providers/cncf/kubernetes/__init__.py | 2 +-
.../providers/cncf/kubernetes/hooks/kubernetes.py | 52 +-
.../providers/cncf/kubernetes/operators/pod.py | 5 +-
.../providers/cncf/kubernetes/triggers/job.py | 5 +
.../providers/cncf/kubernetes/triggers/pod.py | 80 +-
.../providers/cncf/kubernetes/utils/pod_manager.py | 41 +-
.../cncf/kubernetes/utils/xcom_sidecar.py | 2 +-
.../system/cncf/kubernetes/example_kubernetes.py | 2 +-
.../cncf/kubernetes/example_kubernetes_async.py | 2 +-
.../unit/cncf/kubernetes/hooks/test_kubernetes.py | 308 +-
.../unit/cncf/kubernetes/operators/test_pod.py | 48 +-
.../unit/cncf/kubernetes/triggers/test_job.py | 8 +
.../unit/cncf/kubernetes/triggers/test_pod.py | 43 +-
.../unit/cncf/kubernetes/utils/test_pod_manager.py | 133 +-
providers/common/ai/README.rst | 13 +-
providers/common/ai/docs/approval_gates.rst | 12 +-
providers/common/ai/docs/capabilities.rst | 8 +-
providers/common/ai/docs/changelog.rst | 46 +
providers/common/ai/docs/code_mode.rst | 3 +
providers/common/ai/docs/concepts.rst | 2 +-
.../common/ai/docs/connections/pydantic_ai.rst | 5 +-
providers/common/ai/docs/decision_models.rst | 7 +-
providers/common/ai/docs/durable_execution.rst | 230 +-
providers/common/ai/docs/features.rst | 3 +-
providers/common/ai/docs/frameworks/anthropic.rst | 4 +-
.../common/ai/docs/frameworks/claude_agent_sdk.rst | 4 +-
providers/common/ai/docs/frameworks/index.rst | 31 +-
.../common/ai/docs/frameworks/openai_agents.rst | 137 +-
providers/common/ai/docs/frameworks/strands.rst | 7 +-
providers/common/ai/docs/hooks/llamaindex.rst | 6 +
providers/common/ai/docs/index.rst | 13 +-
providers/common/ai/docs/observability.rst | 14 +-
providers/common/ai/docs/operators/agent.rst | 35 +-
providers/common/ai/docs/operators/llm.rst | 9 +-
providers/common/ai/docs/operators/llm_batch.rst | 5 +-
providers/common/ai/docs/operators/llm_branch.rst | 4 +-
.../common/ai/docs/operators/llm_file_analysis.rst | 13 +-
providers/common/ai/docs/redirects.txt | 1 +
providers/common/ai/docs/sandbox/backends.rst | 827 -----
providers/common/ai/docs/sandbox/backends/boat.rst | 151 +
.../common/ai/docs/sandbox/backends/custom.rst | 95 +
.../common/ai/docs/sandbox/backends/index.rst | 82 +
providers/common/ai/docs/sandbox/backends/islo.rst | 107 +
.../common/ai/docs/sandbox/backends/modal.rst | 183 +
.../ai/docs/sandbox/backends/opensandbox.rst | 93 +
.../common/ai/docs/sandbox/backends/openshell.rst | 206 ++
providers/common/ai/docs/sandbox/backends/sbx.rst | 71 +
providers/common/ai/docs/sandbox/configuration.rst | 2 +-
providers/common/ai/docs/sandbox/index.rst | 6 +-
providers/common/ai/docs/self_hosted_models.rst | 103 +
providers/common/ai/docs/stability.rst | 22 +-
providers/common/ai/docs/structured_output.rst | 48 +-
providers/common/ai/docs/toolsets/custom.rst | 5 +-
providers/common/ai/docs/toolsets/datafusion.rst | 3 +
providers/common/ai/docs/toolsets/index.rst | 17 +-
providers/common/ai/docs/toolsets/mcp.rst | 4 +-
providers/common/ai/docs/toolsets/skills.rst | 19 +-
providers/common/ai/docs/toolsets/sql.rst | 49 +-
providers/common/ai/docs/troubleshooting.rst | 42 +-
.../ai/docs/use_cases/explain_revenue_anomaly.rst | 8 +-
providers/common/ai/provider.yaml | 8 +-
providers/common/ai/pyproject.toml | 32 +-
.../src/airflow/providers/common/ai/batch/state.py | 43 +-
.../providers/common/ai/decorators/agent.py | 7 -
.../airflow/providers/common/ai/decorators/llm.py | 3 +-
.../airflow/providers/common/ai/durable/base.py | 10 +-
.../providers/common/ai/durable/capability.py | 348 +-
.../providers/common/ai/durable/fingerprint.py | 33 +-
.../airflow/providers/common/ai/durable/journal.py | 488 ++-
.../providers/common/ai/durable/openai_agents.py | 336 +-
.../providers/common/ai/durable/replay_usage.py | 3 +-
.../airflow/providers/common/ai/durable/storage.py | 31 +-
.../airflow/providers/common/ai/durable/strands.py | 20 +-
.../ai/example_dags/example_agent_durable.py | 75 +-
.../example_dags/example_openai_agents_approval.py | 96 +
.../src/airflow/providers/common/ai/exceptions.py | 51 +-
.../providers/common/ai/get_provider_info.py | 7 +-
.../src/airflow/providers/common/ai/hooks/mcp.py | 4 +-
.../airflow/providers/common/ai/hooks/ollama.py | 98 +
.../providers/common/ai/hooks/pydantic_ai.py | 106 +-
.../providers/common/ai/mixins/hitl_review.py | 15 +-
.../airflow/providers/common/ai/operators/agent.py | 191 +-
.../airflow/providers/common/ai/operators/llm.py | 83 +-
.../providers/common/ai/operators/llm_batch.py | 8 +-
.../providers/common/ai/operators/llm_branch.py | 29 +-
.../common/ai/operators/llm_file_analysis.py | 13 +-
.../common/ai/operators/llm_schema_compare.py | 3 +-
.../providers/common/ai/operators/llm_sql.py | 7 +-
.../ai/plugins/www/src/components/ModelPanel.tsx | 30 +-
.../plugins/www/src/components/SkillsSection.tsx | 13 +-
.../ai/plugins/www/src/hooks/useModelInfo.ts | 14 +-
.../common/ai/plugins/www/src/model-api.ts | 35 +-
.../common/ai/plugins/www/src/skill-source.ts | 43 +-
.../common/ai/plugins/www/tests/model-api.test.ts | 22 +
.../common/ai/plugins/www/tests/model.test.mjs | 75 +
.../ai/plugins/www/tests/skill-source.test.ts | 27 +-
.../ai/src/airflow/providers/common/ai/skills.py | 5 +-
.../airflow/providers/common/ai/tools/__init__.py | 63 +-
.../providers/common/ai/tools/_from_toolset.py | 244 +-
.../src/airflow/providers/common/ai/tools/adk.py | 18 +-
.../airflow/providers/common/ai/tools/anthropic.py | 26 +-
.../providers/common/ai/tools/claude_agent_sdk.py | 19 +-
.../providers/common/ai/tools/openai_agents.py | 70 +-
.../airflow/providers/common/ai/tools/strands.py | 16 +-
.../providers/common/ai/toolsets/datafusion.py | 33 +-
.../airflow/providers/common/ai/toolsets/hook.py | 28 +-
.../airflow/providers/common/ai/toolsets/mcp.py | 20 +-
.../providers/common/ai/toolsets/object_storage.py | 17 +-
.../providers/common/ai/toolsets/sandbox.py | 24 +-
.../airflow/providers/common/ai/toolsets/skills.py | 61 +-
.../airflow/providers/common/ai/toolsets/sql.py | 134 +-
.../providers/common/ai/utils/file_analysis.py | 13 +-
.../providers/common/ai/utils/output_type.py | 81 +-
.../providers/common/ai/utils/query_results.py | 20 +-
.../providers/common/ai/utils/sql_validation.py | 27 +-
.../providers/common/ai/utils/tool_prefix.py | 56 +
.../providers/common/ai/utils/validation.py | 24 -
.../ai/tests/unit/common/ai/batch/test_state.py | 52 +
.../tests/unit/common/ai/decorators/test_agent.py | 16 +-
.../tests/unit/common/ai/durable/memory_storage.py | 24 +-
.../unit/common/ai/durable/test_capability.py | 924 ++++-
.../unit/common/ai/durable/test_fingerprint.py | 18 +-
.../tests/unit/common/ai/durable/test_journal.py | 607 ++-
.../unit/common/ai/durable/test_openai_agents.py | 1282 ++++++-
.../tests/unit/common/ai/durable/test_storage.py | 82 +-
.../tests/unit/common/ai/durable/test_strands.py | 18 +
.../tests/unit/common/ai/hooks/test_llamaindex.py | 11 +
.../ai/tests/unit/common/ai/hooks/test_mcp.py | 18 +
.../ai/tests/unit/common/ai/hooks/test_ollama.py | 139 +
.../tests/unit/common/ai/hooks/test_pydantic_ai.py | 204 +-
.../unit/common/ai/mixins/test_hitl_review.py | 39 +-
.../tests/unit/common/ai/operators/test_agent.py | 256 +-
.../ai/operators/test_llamaindex_embedding.py | 8 +-
.../ai/operators/test_llamaindex_retrieval.py | 11 +-
.../ai/tests/unit/common/ai/operators/test_llm.py | 165 +-
.../unit/common/ai/operators/test_llm_batch.py | 28 +-
.../unit/common/ai/operators/test_llm_branch.py | 9 +-
.../common/ai/operators/test_llm_file_analysis.py | 28 +
.../ai/tests/unit/common/ai/sqlite_connection.py | 85 +
.../common/ai/tests/unit/common/ai/test_skills.py | 11 +
.../unit/common/ai/tools/test__from_toolset.py | 72 +-
.../ai/tests/unit/common/ai/tools/test_adk.py | 6 +
.../tests/unit/common/ai/tools/test_anthropic.py | 13 +-
.../unit/common/ai/tools/test_claude_agent_sdk.py | 18 +
.../unit/common/ai/tools/test_openai_agents.py | 18 +-
.../ai/tests/unit/common/ai/tools/test_strands.py | 6 +
.../ai/tests/unit/common/ai/tools/test_tools.py | 268 +-
.../unit/common/ai/toolsets/test_datafusion.py | 90 +
.../ai/tests/unit/common/ai/toolsets/test_hook.py | 69 +
.../ai/tests/unit/common/ai/toolsets/test_mcp.py | 17 +-
.../unit/common/ai/toolsets/test_object_storage.py | 13 +-
.../tests/unit/common/ai/toolsets/test_sandbox.py | 3 +
.../tests/unit/common/ai/toolsets/test_skills.py | 232 +-
.../ai/tests/unit/common/ai/toolsets/test_sql.py | 304 +-
.../unit/common/ai/utils/test_file_analysis.py | 28 +
.../tests/unit/common/ai/utils/test_output_type.py | 343 +-
.../unit/common/ai/utils/test_query_results.py | 27 +
.../unit/common/ai/utils/test_sql_validation.py | 60 +-
.../tests/unit/common/ai/utils/test_tool_prefix.py | 78 +
.../tests/unit/common/ai/utils/test_validation.py | 32 +-
providers/common/compat/README.rst | 6 +-
providers/common/compat/docs/changelog.rst | 17 +
providers/common/compat/docs/index.rst | 6 +-
providers/common/compat/provider.yaml | 3 +-
providers/common/compat/pyproject.toml | 6 +-
.../airflow/providers/common/compat/__init__.py | 2 +-
providers/common/io/README.rst | 6 +-
providers/common/io/docs/changelog.rst | 12 +
providers/common/io/docs/index.rst | 6 +-
providers/common/io/provider.yaml | 3 +-
providers/common/io/pyproject.toml | 6 +-
.../io/src/airflow/providers/common/io/__init__.py | 2 +-
providers/common/sql/README.rst | 6 +-
providers/common/sql/docs/changelog.rst | 24 +
providers/common/sql/docs/index.rst | 6 +-
providers/common/sql/provider.yaml | 3 +-
providers/common/sql/pyproject.toml | 6 +-
.../src/airflow/providers/common/sql/__init__.py | 2 +-
providers/databricks/README.rst | 8 +-
providers/databricks/docs/changelog.rst | 15 +
providers/databricks/docs/index.rst | 11 +-
providers/databricks/docs/operators/run_now.rst | 43 +-
providers/databricks/docs/operators/submit_run.rst | 43 +-
providers/databricks/docs/toolsets/index.rst | 33 +
providers/databricks/docs/toolsets/unity_mcp.rst | 126 +
providers/databricks/provider.yaml | 11 +-
providers/databricks/pyproject.toml | 16 +-
.../src/airflow/providers/databricks/__init__.py | 2 +-
.../src/airflow/providers/databricks/exceptions.py | 36 +-
.../providers/databricks/get_provider_info.py | 5 +
.../providers/databricks/hooks/databricks_base.py | 6 +-
.../providers/databricks/operators/databricks.py | 39 +-
.../providers/databricks/toolsets}/__init__.py | 0
.../providers/databricks/toolsets/unity_mcp.py | 629 ++++
.../providers/databricks/utils/databricks.py | 20 +-
.../airflow/providers/databricks/version_compat.py | 2 +
.../databricks/example_databricks_unity_mcp.py | 69 +
.../tests/unit/databricks/hooks/test_databricks.py | 25 +
.../unit/databricks/operators/test_databricks.py | 89 +-
.../tests/unit/databricks/toolsets}/__init__.py | 0
.../unit/databricks/toolsets/test_unity_mcp.py | 902 +++++
.../tests/unit/databricks/utils/test_databricks.py | 76 +
providers/dbt/cloud/README.rst | 6 +-
providers/dbt/cloud/docs/changelog.rst | 13 +
providers/dbt/cloud/docs/index.rst | 6 +-
providers/dbt/cloud/provider.yaml | 3 +-
providers/dbt/cloud/pyproject.toml | 6 +-
.../src/airflow/providers/dbt/cloud/__init__.py | 2 +-
providers/edge3/README.rst | 6 +-
providers/edge3/docs/changelog.rst | 19 +
providers/edge3/docs/index.rst | 6 +-
providers/edge3/docs/migrations-ref.rst | 4 +-
providers/edge3/provider.yaml | 3 +-
providers/edge3/pyproject.toml | 6 +-
.../edge3/src/airflow/providers/edge3/__init__.py | 2 +-
.../versions/0008_5_2_0_widen_edge_job_command.py | 55 +
.../edge3/src/airflow/providers/edge3/models/db.py | 1 +
.../src/airflow/providers/edge3/models/edge_job.py | 3 +-
.../providers/edge3/plugins/www/package.json | 36 +-
.../providers/edge3/plugins/www/pnpm-lock.yaml | 2306 ++++++------
.../providers/edge3/worker_api/routes/worker.py | 33 +-
.../unit/edge3/executors/test_edge_executor.py | 13 +
.../unit/edge3/worker_api/routes/test_worker.py | 68 +-
providers/exasol/README.rst | 6 +-
providers/exasol/docs/changelog.rst | 12 +
providers/exasol/docs/index.rst | 6 +-
providers/exasol/provider.yaml | 3 +-
providers/exasol/pyproject.toml | 6 +-
.../src/airflow/providers/exasol/__init__.py | 2 +-
providers/fab/README.rst | 6 +-
providers/fab/docs/changelog.rst | 52 +-
providers/fab/docs/index.rst | 6 +-
providers/fab/provider.yaml | 3 +-
providers/fab/pyproject.toml | 6 +-
.../fab/src/airflow/providers/fab/__init__.py | 2 +-
providers/ftp/README.rst | 6 +-
providers/ftp/docs/changelog.rst | 12 +
providers/ftp/docs/index.rst | 6 +-
providers/ftp/provider.yaml | 3 +-
providers/ftp/pyproject.toml | 6 +-
.../ftp/src/airflow/providers/ftp/__init__.py | 2 +-
.../ftp/src/airflow/providers/ftp/hooks/ftp.py | 10 +-
providers/ftp/tests/unit/ftp/hooks/test_ftp.py | 37 +-
.../git/src/airflow/providers/git/bundles/git.py | 51 +-
providers/git/tests/unit/git/bundles/test_git.py | 147 +-
providers/google/README.rst | 43 +-
providers/google/docs/changelog.rst | 68 +
providers/google/docs/connections/gcp.rst | 8 +-
providers/google/docs/connections/gcp_sql.rst | 55 +-
providers/google/docs/index.rst | 43 +-
providers/google/docs/operators/cloud/bigquery.rst | 4 -
.../google/docs/operators/cloud/workflows.rst | 20 +-
.../google-cloud-secret-manager-backend.rst | 23 +-
providers/google/provider.yaml | 3 +-
providers/google/pyproject.toml | 54 +-
.../src/airflow/providers/google/__init__.py | 2 +-
.../providers/google/cloud/hooks/cloud_sql.py | 116 +-
.../providers/google/cloud/operators/bigquery.py | 20 -
.../google/cloud/transfers/gcs_to_bigquery.py | 1 +
.../google/cloud/utils/field_validator.py | 8 +-
.../marketing_platform/hooks/display_video.py | 4 +-
.../unit/google/cloud/hooks/test_cloud_sql.py | 234 ++
.../google/cloud/transfers/test_gcs_to_bigquery.py | 29 +
.../google/cloud/utils/test_field_validator.py | 42 +
providers/hashicorp/docs/index.rst | 2 +-
providers/hashicorp/pyproject.toml | 2 +-
providers/http/README.rst | 6 +-
providers/http/docs/changelog.rst | 13 +
providers/http/docs/index.rst | 6 +-
providers/http/docs/triggers.rst | 65 +-
providers/http/provider.yaml | 3 +-
providers/http/pyproject.toml | 6 +-
.../http/src/airflow/providers/http/__init__.py | 2 +-
.../src/airflow/providers/http/triggers/http.py | 14 +-
.../http/tests/unit/http/triggers/test_http.py | 79 +
{airflow-core => providers/huggingface}/.gitignore | 0
{chart => providers/huggingface}/LICENSE | 0
NOTICE => providers/huggingface/NOTICE | 0
providers/{sendgrid => huggingface}/README.rst | 22 +-
providers/huggingface/docs/artifacts.rst | 63 +
providers/huggingface/docs/changelog.rst | 33 +
providers/huggingface/docs/commits.rst | 23 +
.../huggingface/docs/conf.py | 11 +-
.../huggingface/docs/connections/huggingface.rst | 43 +
providers/huggingface/docs/connections/index.rst | 24 +
providers/huggingface/docs/index.rst | 164 +
.../docs/installing-providers-from-sources.rst | 0
.../docs/integration-logos/HuggingFace.png | Bin 0 -> 12072 bytes
providers/huggingface/docs/operators/datasets.rst | 217 ++
providers/huggingface/docs/security.rst | 52 +
providers/huggingface/provider.yaml | 60 +
providers/{modal => huggingface}/pyproject.toml | 21 +-
.../huggingface/src/airflow}/__init__.py | 0
.../huggingface/src/airflow/providers}/__init__.py | 0
.../src/airflow/providers/huggingface}/__init__.py | 6 +-
.../providers/huggingface/assets}/__init__.py | 0
.../providers/huggingface/assets/huggingface.py | 53 +
.../providers/huggingface/get_provider_info.py | 70 +
.../providers/huggingface/hooks}/__init__.py | 0
.../providers/huggingface/hooks/huggingface.py | 156 +
.../providers/huggingface/operators}/__init__.py | 0
.../providers/huggingface/operators/datasets.py | 782 ++++
.../{airbyte => huggingface}/tests/conftest.py | 0
.../huggingface/tests/system}/__init__.py | 0
.../tests/system/huggingface}/__init__.py | 0
.../tests/system/huggingface/example_read_only.py | 69 +
.../tests/system/huggingface/example_write.py | 250 ++
.../huggingface/tests/unit}/__init__.py | 0
.../tests/unit/huggingface}/__init__.py | 0
.../tests/unit/huggingface/assets}/__init__.py | 0
.../unit/huggingface/assets/test_huggingface.py | 66 +
.../tests/unit/huggingface/hooks}/__init__.py | 0
.../unit/huggingface/hooks/test_huggingface.py | 174 +
.../tests/unit/huggingface/operators}/__init__.py | 0
.../unit/huggingface/operators/test_datasets.py | 768 ++++
.../dev/informatica_simulator/requirements.txt | 2 +-
providers/keycloak/README.rst | 6 +-
providers/keycloak/docs/changelog.rst | 20 +
providers/keycloak/docs/index.rst | 6 +-
providers/keycloak/provider.yaml | 3 +-
providers/keycloak/pyproject.toml | 6 +-
.../src/airflow/providers/keycloak/__init__.py | 2 +-
providers/microsoft/azure/README.rst | 6 +-
providers/microsoft/azure/docs/changelog.rst | 18 +
providers/microsoft/azure/docs/index.rst | 6 +-
providers/microsoft/azure/provider.yaml | 3 +-
providers/microsoft/azure/pyproject.toml | 6 +-
.../airflow/providers/microsoft/azure/__init__.py | 2 +-
.../azure/operators/container_instances.py | 26 +-
.../providers/microsoft/azure/operators/msgraph.py | 4 +
.../providers/microsoft/azure/operators/powerbi.py | 5 +
.../microsoft/azure/transfers/s3_to_wasb.py | 36 +
.../azure/operators/test_container_instances.py | 143 +
.../unit/microsoft/azure/operators/test_powerbi.py | 34 +-
.../microsoft/azure/transfers/test_s3_to_wasb.py | 59 +
providers/microsoft/mssql/README.rst | 6 +-
providers/microsoft/mssql/docs/changelog.rst | 12 +
providers/microsoft/mssql/docs/index.rst | 6 +-
providers/microsoft/mssql/provider.yaml | 3 +-
providers/microsoft/mssql/pyproject.toml | 6 +-
.../airflow/providers/microsoft/mssql/__init__.py | 2 +-
providers/modal/docs/index.rst | 13 +-
providers/modal/docs/task_decorator.rst | 179 +
providers/modal/docs/usage.rst | 13 +-
providers/modal/provider.yaml | 12 +-
providers/modal/pyproject.toml | 2 +-
.../providers/modal/decorators}/__init__.py | 0
.../airflow/providers/modal/decorators/modal.py | 308 ++
.../src/airflow/providers/modal/exceptions.py | 9 +
.../airflow/providers/modal/get_provider_info.py | 8 +-
.../src/airflow/providers/modal/hooks/modal.py | 80 +-
.../airflow/providers/modal/triggers}/__init__.py | 0
.../src/airflow/providers/modal/triggers/modal.py | 100 +
.../src/airflow/providers/modal/utils}/__init__.py | 0
.../providers/modal/utils/python_sandbox.py | 156 +
.../modal/tests/system}/__init__.py | 0
.../modal/tests/system/modal}/__init__.py | 0
.../modal/tests/system/modal/example_modal_task.py | 80 +
.../modal/tests/unit/modal/decorators}/__init__.py | 0
.../tests/unit/modal/decorators/test_modal.py | 428 +++
.../modal/tests/unit/modal/hooks/test_modal.py | 152 +
providers/modal/tests/unit/modal/local_sandbox.py | 132 +
.../modal/tests/unit/modal/test_exceptions.py | 4 +-
.../modal/tests/unit/modal/triggers}/__init__.py | 0
.../modal/tests/unit/modal/triggers/test_modal.py | 171 +
.../modal/tests/unit/modal/utils}/__init__.py | 0
.../tests/unit/modal/utils/test_python_sandbox.py | 163 +
providers/mysql/README.rst | 6 +-
providers/mysql/docs/changelog.rst | 12 +
providers/mysql/docs/index.rst | 6 +-
providers/mysql/provider.yaml | 3 +-
providers/mysql/pyproject.toml | 6 +-
.../mysql/src/airflow/providers/mysql/__init__.py | 2 +-
providers/openai/docs/.latest-doc-only-change.txt | 2 +-
.../airflow/providers/openai/operators/openai.py | 4 +-
.../tests/unit/openai/operators/test_openai.py | 49 +-
providers/openlineage/pyproject.toml | 1 +
.../example_openlineage_task_outcomes_dag.py | 4 +-
.../openlineage_task_outcomes_dag.json | 6 +-
.../tests/system/openlineage/manual_state.py | 38 +-
.../unit/openlineage/extractors/test_manager.py | 49 +-
providers/postgres/README.rst | 6 +-
providers/postgres/docs/changelog.rst | 17 +
providers/postgres/docs/index.rst | 6 +-
providers/postgres/provider.yaml | 3 +-
providers/postgres/pyproject.toml | 6 +-
.../src/airflow/providers/postgres/__init__.py | 2 +-
providers/presto/README.rst | 6 +-
providers/presto/docs/changelog.rst | 12 +
providers/presto/docs/index.rst | 6 +-
providers/presto/provider.yaml | 3 +-
providers/presto/pyproject.toml | 6 +-
.../src/airflow/providers/presto/__init__.py | 2 +-
providers/sendgrid/README.rst | 6 +-
providers/sendgrid/docs/changelog.rst | 12 +
providers/sendgrid/docs/index.rst | 6 +-
providers/sendgrid/provider.yaml | 3 +-
providers/sendgrid/pyproject.toml | 6 +-
.../src/airflow/providers/sendgrid/__init__.py | 2 +-
providers/smtp/README.rst | 6 +-
providers/smtp/docs/changelog.rst | 12 +
providers/smtp/docs/connections/smtp.rst | 9 +-
providers/smtp/docs/index.rst | 6 +-
providers/smtp/provider.yaml | 3 +-
providers/smtp/pyproject.toml | 6 +-
.../smtp/src/airflow/providers/smtp/__init__.py | 2 +-
.../src/airflow/providers/smtp/utils/emailer.py | 24 +-
.../smtp/tests/unit/smtp/utils/test_emailer.py | 108 +-
providers/snowflake/README.rst | 14 +-
providers/snowflake/docs/changelog.rst | 23 +
.../docs/connections/pydantic_ai_snowflake.rst | 7 +-
providers/snowflake/docs/connections/snowflake.rst | 27 +
providers/snowflake/docs/index.rst | 14 +-
.../snowflake/docs/operators/cortex_agent.rst | 7 +-
providers/snowflake/provider.yaml | 3 +-
providers/snowflake/pyproject.toml | 8 +-
.../src/airflow/providers/snowflake/__init__.py | 2 +-
.../providers/snowflake/hooks/cortex_agent.py | 11 +-
.../airflow/providers/snowflake/hooks/sql_api.py | 5 +-
.../providers/snowflake/utils/_rest_auth.py | 213 +-
.../unit/snowflake/hooks/test_cortex_agent.py | 23 +-
.../tests/unit/snowflake/hooks/test_sql_api.py | 24 +-
.../tests/unit/snowflake/utils/test__rest_auth.py | 422 ++-
providers/ssh/README.rst | 6 +-
providers/ssh/docs/changelog.rst | 12 +
providers/ssh/docs/index.rst | 6 +-
providers/ssh/provider.yaml | 3 +-
providers/ssh/pyproject.toml | 6 +-
.../ssh/src/airflow/providers/ssh/__init__.py | 2 +-
providers/standard/README.rst | 6 +-
providers/standard/docs/changelog.rst | 21 +-
providers/standard/docs/index.rst | 6 +-
providers/standard/provider.yaml | 3 +-
providers/standard/pyproject.toml | 6 +-
.../src/airflow/providers/standard/__init__.py | 2 +-
.../providers/standard/sensors/external_task.py | 143 +-
.../providers/standard/sensors/time_delta.py | 23 +
.../unit/standard/sensors/test_external_task.py | 450 ++-
.../tests/unit/standard/sensors/test_time.py | 2 +-
.../tests/unit/standard/sensors/test_time_delta.py | 47 +-
providers/teradata/README.rst | 6 +-
providers/teradata/docs/changelog.rst | 13 +
providers/teradata/docs/index.rst | 6 +-
providers/teradata/provider.yaml | 3 +-
providers/teradata/pyproject.toml | 6 +-
.../src/airflow/providers/teradata/__init__.py | 2 +-
providers/trino/README.rst | 6 +-
providers/trino/docs/changelog.rst | 12 +
providers/trino/docs/index.rst | 6 +-
providers/trino/provider.yaml | 3 +-
providers/trino/pyproject.toml | 6 +-
.../trino/src/airflow/providers/trino/__init__.py | 2 +-
.../src/airflow/providers/vertica/hooks/vertica.py | 81 +-
.../tests/unit/vertica/hooks/test_vertica.py | 122 +-
.../tests/unit/vertica/hooks/test_vertica_sql.py | 19 +-
providers/yandex/README.rst | 6 +-
providers/yandex/docs/changelog.rst | 12 +
providers/yandex/docs/index.rst | 6 +-
providers/yandex/provider.yaml | 3 +-
providers/yandex/pyproject.toml | 6 +-
.../src/airflow/providers/yandex/__init__.py | 2 +-
pyproject.toml | 53 +-
registry/package.json | 6 +-
registry/pnpm-lock.yaml | 170 +-
registry/src/_includes/base.njk | 2 +
registry/src/css/main.css | 41 +-
registry/src/durable.njk | 4 +-
registry/src/explore.njk | 2 +-
registry/src/stats.njk | 2 +-
reproducible_build.yaml | 4 +-
scripts/ci/docker-compose/integration-redis.yml | 2 +-
scripts/ci/docker-compose/remove-sources.yml | 1 +
scripts/ci/docker-compose/tests-sources.yml | 1 +
scripts/ci/install_breeze.sh | 2 +-
scripts/ci/prek/check_i18n_json.py | 65 +-
scripts/ci/prek/inline_scripts_in_docker.py | 12 +
scripts/ci/prek/lang_sdk_compat_matrix.py | 1 +
scripts/ci/prek/supported_versions.py | 2 +-
scripts/ci/prek/sync_java_sdk_supervisor_schema.py | 95 +-
scripts/ci/prek/ts_compile_lint_ui.py | 9 +-
scripts/docker/entrypoint_ci.sh | 20 +-
scripts/docker/install_os_dependencies.sh | 7 +
scripts/in_container/run_agent_framework_tests.sh | 65 +-
scripts/tests/ci/prek/test_check_i18n_json.py | 98 +
.../prek/test_sync_java_sdk_supervisor_schema.py | 157 +
scripts/tools/setup_breeze | 2 +-
.../src/airflow_shared/module_loading/__init__.py | 27 +-
.../tests/module_loading/test_entry_points.py | 83 +-
.../observability/metrics/metrics_template.yaml | 24 +
.../secrets_masker/secrets_masker.py | 22 +
.../tests/secrets_masker/test_secrets_masker.py | 29 +
task-sdk/docs/api.rst | 10 +
task-sdk/pyproject.toml | 3 +-
task-sdk/src/airflow/sdk/__init__.py | 3 +
task-sdk/src/airflow/sdk/__init__.pyi | 2 +
task-sdk/src/airflow/sdk/api/client.py | 82 +-
.../src/airflow/sdk/api/datamodels/_generated.py | 348 +-
task-sdk/src/airflow/sdk/bases/xcom.py | 50 +-
.../src/airflow/sdk/coordinators/_subprocess.py | 351 +-
.../src/airflow/sdk/coordinators/_xcom_backend.py | 357 ++
.../airflow/sdk/coordinators/java/coordinator.py | 26 +-
task-sdk/src/airflow/sdk/definitions/deadline.py | 15 +
.../src/airflow/sdk/definitions/external_clear.py | 96 +
.../src/airflow/sdk/definitions/mappedoperator.py | 9 +-
task-sdk/src/airflow/sdk/definitions/xcom_arg.py | 5 +-
task-sdk/src/airflow/sdk/exceptions.py | 12 +
task-sdk/src/airflow/sdk/execution_time/cache.py | 2 +-
.../sdk/execution_time/callback_supervisor.py | 26 +-
task-sdk/src/airflow/sdk/execution_time/comms.py | 34 +-
task-sdk/src/airflow/sdk/execution_time/context.py | 28 +-
.../airflow/sdk/execution_time/request_handlers.py | 10 +
.../airflow/sdk/execution_time/schema/schema.json | 153 +-
.../sdk/execution_time/schema/versions/__init__.py | 11 +-
.../execution_time/schema/versions/v2027_02_28.py | 76 +-
.../sdk/execution_time/secrets/execution_api.py | 4 +-
.../src/airflow/sdk/execution_time/supervisor.py | 83 +-
.../src/airflow/sdk/execution_time/task_runner.py | 111 +-
.../airflow/sdk/importers/yaml_importer/builder.py | 158 +-
.../airflow/sdk/importers/yaml_importer/models.py | 159 +-
task-sdk/tests/task_sdk/api/test_client.py | 196 +
task-sdk/tests/task_sdk/bases/test_xcom.py | 17 +-
.../task_sdk/coordinators/java/test_coordinator.py | 10 +-
.../tests/task_sdk/coordinators/test_subprocess.py | 710 +++-
.../task_sdk/coordinators/test_xcom_backend.py | 464 +++
.../task_sdk/definitions/test_mappedoperator.py | 37 +
.../tests/task_sdk/definitions/test_variables.py | 39 +-
.../tests/task_sdk/definitions/test_xcom_arg.py | 22 +
.../execution_time/schema/test_migrator.py | 91 +-
.../execution_time/test_callback_supervisor.py | 88 +-
.../tests/task_sdk/execution_time/test_comms.py | 13 +
.../task_sdk/execution_time/test_supervisor.py | 227 +-
.../task_sdk/execution_time/test_task_runner.py | 295 +-
.../importers/yaml_importer/test_parser.py | 13 +
ts-sdk/README.md | 1 +
ts-sdk/adr/0003-task-loop-authoring-interface.md | 214 ++
ts-sdk/capabilities.yaml | 5 +
ts-sdk/pnpm-lock.yaml | 283 +-
ts-sdk/schema/supervisor-schema.json | 153 +-
ts-sdk/src/coordinator/client.ts | 8 +-
ts-sdk/src/coordinator/runtime.ts | 1 +
ts-sdk/src/generated/supervisor.ts | 314 +-
ts-sdk/src/sdk/client.ts | 2 +-
ts-sdk/src/sdk/task.ts | 16 +-
ts-sdk/tests/coordinator/client.test.ts | 17 +-
ts-sdk/tests/coordinator/integration.test.ts | 30 +
ts-sdk/tests/public-api.test.ts | 5 +-
ts-sdk/tests/sdk/task-scope.test.ts | 1 +
uv.lock | 3904 +++++++++++---------
1234 files changed, 69693 insertions(+), 14986 deletions(-)
create mode 100644 .agents/skills/airflow-translations/locales/ru.md
create mode 100644
airflow-core/adr/lang-sdk/0016-mapped-tasks-across-lang-sdks.md
create mode 100644
airflow-core/adr/lang-sdk/0017-task-loops-across-lang-sdks.md
create mode 100644 airflow-core/newsfragments/71850.bugfix.rst
create mode 100644 airflow-core/newsfragments/74789.significant.rst
create mode 100644 airflow-core/newsfragments/75874.significant.rst
create mode 100644 airflow-core/newsfragments/76007.significant.rst
create mode 100644 airflow-core/newsfragments/76453.significant.rst
copy airflow-core/src/airflow/{listeners/spec/importerrors.py =>
api_fastapi/common/xcom.py} (59%)
copy airflow-core/src/airflow/{listeners/spec/importerrors.py =>
api_fastapi/execution_api/datamodels/callback.py} (65%)
create mode 100644
airflow-core/src/airflow/api_fastapi/execution_api/datamodels/dag_parsing.py
create mode 100644
airflow-core/src/airflow/api_fastapi/execution_api/routes/dag_parsing.py
delete mode 100644
airflow-core/src/airflow/api_fastapi/execution_api/versions/v2026_10_30_xcom_params.py
copy airflow-core/src/airflow/{listeners/spec/importerrors.py =>
dag_processing/claims.py} (58%)
create mode 100644 airflow-core/src/airflow/dag_processing/maintenance.py
create mode 100644 airflow-core/src/airflow/dag_processing/requested_work.py
copy airflow-core/src/airflow/{listeners/spec/importerrors.py =>
dag_processing/timeouts.py} (62%)
create mode 100644
airflow-core/src/airflow/migrations/versions/0154_3_5_0_add_idempotency_key_to_hitl_detail.py
create mode 100644
airflow-core/src/airflow/migrations/versions/0155_3_5_0_add_dag_processor_publication_state.py
create mode 100644
airflow-core/src/airflow/migrations/versions/0156_3_5_0_add_processor_work_claims.py
create mode 100644
airflow-core/src/airflow/models/dag_processor_publication_receipt.py
copy
airflow-core/src/airflow/{api_fastapi/execution_api/datamodels/variable.py =>
models/dag_processor_work_claim.py} (53%)
create mode 100644 airflow-core/src/airflow/process_context.py
create mode 100644 airflow-core/src/airflow/ui/.oxfmtrc.json
create mode 100644 airflow-core/src/airflow/ui/.oxlintrc.json
delete mode 100644 airflow-core/src/airflow/ui/.prettierignore
delete mode 100644 airflow-core/src/airflow/ui/.prettierrc
create mode 100644 airflow-core/src/airflow/ui/public/i18n/locales/it/README.md
rename airflow-core/src/airflow/ui/rules/{off.js => airflow-plugin/index.js}
(67%)
create mode 100644
airflow-core/src/airflow/ui/rules/airflow-plugin/no-react-namespace-types.js
create mode 100644
airflow-core/src/airflow/ui/rules/airflow-plugin/no-react-namespace-types.test.js
delete mode 100644 airflow-core/src/airflow/ui/rules/i18n.js
delete mode 100644 airflow-core/src/airflow/ui/rules/i18next.js
delete mode 100644 airflow-core/src/airflow/ui/rules/perfectionist.js
delete mode 100644 airflow-core/src/airflow/ui/rules/prettier.js
delete mode 100644 airflow-core/src/airflow/ui/rules/rem.js
delete mode 100644 airflow-core/src/airflow/ui/rules/stylistic.js
create mode 100644
airflow-core/src/airflow/ui/src/components/Clear/TaskInstance/ClearTaskInstanceDialog.dependentDags.test.tsx
create mode 100644
airflow-core/src/airflow/ui/src/layouts/Details/DetailsLayout.test.tsx
create mode 100644
airflow-core/src/airflow/ui/src/layouts/Details/NavTabs.test.tsx
create mode 100644
airflow-core/src/airflow/ui/src/layouts/Details/SearchTasks.tsx
create mode 100644
airflow-core/src/airflow/ui/src/layouts/Details/TaskSwitcherButton.tsx
create mode 100644
airflow-core/src/airflow/ui/src/pages/Dashboard/Stats/DagImportErrorsModal.test.tsx
create mode 100644 airflow-core/src/airflow/ui/src/queries/useGridRuns.test.tsx
create mode 100644
airflow-core/src/airflow/ui/src/utils/registerPluginDependencies.test.ts
rename airflow-core/src/airflow/ui/{rules/jsonc.js =>
src/utils/registerPluginDependencies.ts} (51%)
create mode 100644
airflow-core/tests/unit/api_fastapi/execution_api/versions/head/test_dag_parsing.py
create mode 100644
airflow-core/tests/unit/api_fastapi/execution_api/versions/v2026_10_30/test_task_state_store.py
create mode 100644
airflow-core/tests/unit/api_fastapi/execution_api/versions/v2027_02_28/test_callbacks.py
create mode 100644
airflow-core/tests/unit/api_fastapi/execution_api/versions/v2027_02_28/test_variables.py
create mode 100644
airflow-core/tests/unit/api_fastapi/test_lazy_response_fields.py
create mode 100644 airflow-core/tests/unit/dag_processing/conftest.py
create mode 100644 airflow-core/tests/unit/dag_processing/test_claims.py
create mode 100644 airflow-core/tests/unit/dag_processing/test_maintenance.py
create mode 100644
airflow-core/tests/unit/dag_processing/test_manager_api_failures.py
create mode 100644
airflow-core/tests/unit/dag_processing/test_manager_api_inventory.py
create mode 100644
airflow-core/tests/unit/dag_processing/test_manager_api_isolation.py
create mode 100644
airflow-core/tests/unit/dag_processing/test_manager_api_results.py
create mode 100644
airflow-core/tests/unit/dag_processing/test_requested_work.py
create mode 100644 airflow-core/tests/unit/listeners/test_importerrors.py
create mode 100644
airflow-core/tests/unit/migrations/test_0156_add_processor_work_claims.py
create mode 100644 airflow-e2e-tests/docker/lang-sdk-xcom-object-storage.yml
copy {airflow-core/src/airflow/_shared =>
airflow-e2e-tests/tests/airflow_e2e_tests/lang_sdk_xcom_object_storage_tests}/__init__.py
(100%)
create mode 100644
airflow-e2e-tests/tests/airflow_e2e_tests/lang_sdk_xcom_object_storage_tests/test_lang_sdk_xcom_backend.py
create mode 100644 chart/newsfragments/76601.significant.rst
create mode 100644 contributing-docs/33_agent_assisted_contribution.md
create mode 100644 dev/breeze/src/airflow_breeze/utils/import_graph.py
create mode 100644 dev/breeze/tests/test_import_graph.py
create mode 100644 go-sdk/adr/0009-task-loop-authoring-interface.md
create mode 100644 go-sdk/pkg/execution/genmodels/gen/main_test.go
create mode 100644 go-sdk/pkg/execution/genmodels/time.go
create mode 100644 go-sdk/pkg/execution/genmodels/time_test.go
create mode 100644 java-sdk/adr/0003-task-loop-authoring-interface.md
create mode 100644 providers/amazon/docs/connections/duckdb_aws.rst
delete mode 100644 providers/common/ai/docs/sandbox/backends.rst
create mode 100644 providers/common/ai/docs/sandbox/backends/boat.rst
create mode 100644 providers/common/ai/docs/sandbox/backends/custom.rst
create mode 100644 providers/common/ai/docs/sandbox/backends/index.rst
create mode 100644 providers/common/ai/docs/sandbox/backends/islo.rst
create mode 100644 providers/common/ai/docs/sandbox/backends/modal.rst
create mode 100644 providers/common/ai/docs/sandbox/backends/opensandbox.rst
create mode 100644 providers/common/ai/docs/sandbox/backends/openshell.rst
create mode 100644 providers/common/ai/docs/sandbox/backends/sbx.rst
create mode 100644
providers/common/ai/src/airflow/providers/common/ai/example_dags/example_openai_agents_approval.py
create mode 100644
providers/common/ai/src/airflow/providers/common/ai/hooks/ollama.py
create mode 100644
providers/common/ai/src/airflow/providers/common/ai/utils/tool_prefix.py
create mode 100644
providers/common/ai/tests/unit/common/ai/hooks/test_ollama.py
create mode 100644
providers/common/ai/tests/unit/common/ai/sqlite_connection.py
create mode 100644
providers/common/ai/tests/unit/common/ai/utils/test_tool_prefix.py
create mode 100644 providers/databricks/docs/toolsets/index.rst
create mode 100644 providers/databricks/docs/toolsets/unity_mcp.rst
copy {airflow-core/src/airflow/api/common =>
providers/databricks/src/airflow/providers/databricks/toolsets}/__init__.py
(100%)
create mode 100644
providers/databricks/src/airflow/providers/databricks/toolsets/unity_mcp.py
create mode 100644
providers/databricks/tests/system/databricks/example_databricks_unity_mcp.py
copy {airflow-core/src/airflow/_shared =>
providers/databricks/tests/unit/databricks/toolsets}/__init__.py (100%)
create mode 100644
providers/databricks/tests/unit/databricks/toolsets/test_unity_mcp.py
create mode 100644
providers/edge3/src/airflow/providers/edge3/migrations/versions/0008_5_2_0_widen_edge_job_command.py
copy {airflow-core => providers/huggingface}/.gitignore (100%)
copy {chart => providers/huggingface}/LICENSE (100%)
copy NOTICE => providers/huggingface/NOTICE (100%)
copy providers/{sendgrid => huggingface}/README.rst (77%)
create mode 100644 providers/huggingface/docs/artifacts.rst
create mode 100644 providers/huggingface/docs/changelog.rst
create mode 100644 providers/huggingface/docs/commits.rst
copy java-sdk/gradle.properties => providers/huggingface/docs/conf.py (74%)
create mode 100644 providers/huggingface/docs/connections/huggingface.rst
create mode 100644 providers/huggingface/docs/connections/index.rst
create mode 100644 providers/huggingface/docs/index.rst
copy providers/{airbyte =>
huggingface}/docs/installing-providers-from-sources.rst (100%)
create mode 100644 providers/huggingface/docs/integration-logos/HuggingFace.png
create mode 100644 providers/huggingface/docs/operators/datasets.rst
create mode 100644 providers/huggingface/docs/security.rst
create mode 100644 providers/huggingface/provider.yaml
copy providers/{modal => huggingface}/pyproject.toml (88%)
copy {airflow-core/tests/integration =>
providers/huggingface/src/airflow}/__init__.py (100%)
copy {airflow-core/tests/integration =>
providers/huggingface/src/airflow/providers}/__init__.py (100%)
copy providers/{fab/src/airflow/providers/fab =>
huggingface/src/airflow/providers/huggingface}/__init__.py (91%)
copy {airflow-core/src/airflow/_shared =>
providers/huggingface/src/airflow/providers/huggingface/assets}/__init__.py
(100%)
create mode 100644
providers/huggingface/src/airflow/providers/huggingface/assets/huggingface.py
create mode 100644
providers/huggingface/src/airflow/providers/huggingface/get_provider_info.py
copy {airflow-core/src/airflow/_shared =>
providers/huggingface/src/airflow/providers/huggingface/hooks}/__init__.py
(100%)
create mode 100644
providers/huggingface/src/airflow/providers/huggingface/hooks/huggingface.py
copy {airflow-core/src/airflow/_shared =>
providers/huggingface/src/airflow/providers/huggingface/operators}/__init__.py
(100%)
create mode 100644
providers/huggingface/src/airflow/providers/huggingface/operators/datasets.py
copy providers/{airbyte => huggingface}/tests/conftest.py (100%)
copy {airflow-core/tests/integration =>
providers/huggingface/tests/system}/__init__.py (100%)
copy {airflow-core/src/airflow/_shared =>
providers/huggingface/tests/system/huggingface}/__init__.py (100%)
create mode 100644
providers/huggingface/tests/system/huggingface/example_read_only.py
create mode 100644
providers/huggingface/tests/system/huggingface/example_write.py
copy {airflow-core/tests/integration =>
providers/huggingface/tests/unit}/__init__.py (100%)
copy {airflow-core/src/airflow/_shared =>
providers/huggingface/tests/unit/huggingface}/__init__.py (100%)
copy {airflow-core/src/airflow/_shared =>
providers/huggingface/tests/unit/huggingface/assets}/__init__.py (100%)
create mode 100644
providers/huggingface/tests/unit/huggingface/assets/test_huggingface.py
copy {airflow-core/src/airflow/_shared =>
providers/huggingface/tests/unit/huggingface/hooks}/__init__.py (100%)
create mode 100644
providers/huggingface/tests/unit/huggingface/hooks/test_huggingface.py
copy {airflow-core/src/airflow/_shared =>
providers/huggingface/tests/unit/huggingface/operators}/__init__.py (100%)
create mode 100644
providers/huggingface/tests/unit/huggingface/operators/test_datasets.py
create mode 100644 providers/modal/docs/task_decorator.rst
copy {airflow-core/src/airflow/_shared =>
providers/modal/src/airflow/providers/modal/decorators}/__init__.py (100%)
create mode 100644
providers/modal/src/airflow/providers/modal/decorators/modal.py
copy {airflow-core/src/airflow/_shared =>
providers/modal/src/airflow/providers/modal/triggers}/__init__.py (100%)
create mode 100644
providers/modal/src/airflow/providers/modal/triggers/modal.py
copy {airflow-core/src/airflow/_shared =>
providers/modal/src/airflow/providers/modal/utils}/__init__.py (100%)
create mode 100644
providers/modal/src/airflow/providers/modal/utils/python_sandbox.py
copy {airflow-core/tests/integration =>
providers/modal/tests/system}/__init__.py (100%)
copy {airflow-core/src/airflow/_shared =>
providers/modal/tests/system/modal}/__init__.py (100%)
create mode 100644 providers/modal/tests/system/modal/example_modal_task.py
copy {airflow-core/src/airflow/_shared =>
providers/modal/tests/unit/modal/decorators}/__init__.py (100%)
create mode 100644 providers/modal/tests/unit/modal/decorators/test_modal.py
create mode 100644 providers/modal/tests/unit/modal/local_sandbox.py
copy {airflow-core/src/airflow/_shared =>
providers/modal/tests/unit/modal/triggers}/__init__.py (100%)
create mode 100644 providers/modal/tests/unit/modal/triggers/test_modal.py
copy {airflow-core/src/airflow/_shared =>
providers/modal/tests/unit/modal/utils}/__init__.py (100%)
create mode 100644
providers/modal/tests/unit/modal/utils/test_python_sandbox.py
create mode 100644 scripts/tests/ci/prek/test_check_i18n_json.py
create mode 100644
scripts/tests/ci/prek/test_sync_java_sdk_supervisor_schema.py
create mode 100644 task-sdk/src/airflow/sdk/coordinators/_xcom_backend.py
create mode 100644 task-sdk/src/airflow/sdk/definitions/external_clear.py
create mode 100644 task-sdk/tests/task_sdk/coordinators/test_xcom_backend.py
create mode 100644 ts-sdk/adr/0003-task-loop-authoring-interface.md