This is an automated email from the ASF dual-hosted git repository.
kaxil pushed a change to branch durable-tool-opt-out
in repository https://gitbox.apache.org/repos/asf/airflow.git
omit 8d16f14d129 Name the pydantic-ai-slim release the system-one decision
model prefix needs
omit 64e94d4dddc Let durable agent tasks run chosen tools on every attempt
instead of replaying them
omit b1a4fb35b15 Clarify which durable journal store calls apply before
Airflow 3.3
omit 3d8f18b057e Clarify that a durable journal is deleted when the agent
run succeeds
omit b4bf47d8034 Reduce task state store calls made by durable agent tasks
omit 34af658738d Fix durable agent retries replaying the same failing tool
call on every attempt
omit 15c0a5bffb6 Fix a spelling check failure in the durable execution docs
omit b2ec1767a32 Scope the durable execution docs promise of a failure
without retry
omit e546f308e28 Say what durable execution does with tool result bytes it
does not convert
omit 16f516fafde Clarify which tool result bytes durable execution records
omit 219d9a9a04c Fix durable agent tasks failing when a tool returns bytes
omit 04ba9c072f0 Clarify which runs and clears leave a durable journal
behind
omit d985bc362ea Correct what clearing a durable agent task replays in
common.ai docs
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 2db175294f2 Fix durable agent retries replaying the same failing tool
call on every attempt
add 7d9637d1361 Reduce task state store calls made by durable agent tasks
add 87fbfb41b4a Clarify that a durable journal is deleted when the agent
run succeeds
add a654a0d895f Clarify which durable journal store calls apply before
Airflow 3.3
add c03541da74b Let durable agent tasks run chosen tools on every attempt
instead of replaying them
add 7dbe824be54 Name the pydantic-ai-slim release the system-one decision
model prefix needs
This update added new revisions after undoing existing revisions.
That is to say, some revisions that were in the old version of the
branch are not in the new version. This situation occurs
when a user --force pushes a change and generates a repository
containing something like this:
* -- * -- B -- O -- O -- O (8d16f14d129)
\
N -- N -- N refs/heads/durable-tool-opt-out (7dbe824be54)
You should already have received notification emails for all of the O
revisions, and so the following emails describe only the N revisions
from the common base, B.
Any revisions marked "omit" are not gone; other references still
refer to them. Any revisions marked "discard" are gone forever.
No new revisions were added by this update.
Summary of changes:
.../skills/airflow-translations/locales/zh-CN.md | 23 +
.asf.yaml | 16 +
.github/ISSUE_TEMPLATE/1-airflow_bug_report.yml | 1 +
.github/boring-cyborg.yml | 3 +
.github/fork-ci-gate.toml | 3 +-
.github/workflows/airflow-e2e-tests.yml | 4 +-
.github/workflows/automatic-backport.yml | 1 +
.github/workflows/basic-tests.yml | 19 +-
.github/workflows/ci-amd.yml | 42 +-
.github/workflows/ci-arm.yml | 42 +-
.github/workflows/ci-image-checks.yml | 5 +
.github/workflows/codeql-analysis.yml | 8 +-
.../java-sdk-dependabot-verification-metadata.yml | 15 +-
.github/workflows/java-sdk-dependency-security.yml | 4 +-
.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 | 1 +
.github/workflows/registry-backfill.yml | 2 +-
.github/workflows/registry-build.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 | 4 +-
Dockerfile | 8 +-
Dockerfile.ci | 10 +-
.../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 +
.../authoring-and-scheduling/language-sdks/go.rst | 13 +-
.../docs/authoring-and-scheduling/loops.rst | 2 +-
airflow-core/docs/extra-packages-ref.rst | 2 +
airflow-core/docs/howto/usage-cli.rst | 2 +-
airflow-core/pyproject.toml | 1 +
.../src/airflow/api/common/airflow_health.py | 34 +-
.../auth/managers/simple/ui/package.json | 6 +-
.../auth/managers/simple/ui/pnpm-lock.yaml | 1483 +++++----
.../airflow/api_fastapi/common/parameters/misc.py | 30 +-
.../api_fastapi/core_api/datamodels/dag_run.py | 3 +-
.../api_fastapi/core_api/routes/public/dag_run.py | 2 +-
.../execution_api/datamodels/callback.py | 19 +-
.../api_fastapi/execution_api/routes/callbacks.py | 58 +-
.../api_fastapi/execution_api/versions/__init__.py | 2 +
.../execution_api/versions/v2027_02_28.py | 10 +
.../src/airflow/api_fastapi/gunicorn_app.py | 2 +-
airflow-core/src/airflow/cli/cli_config.py | 2 +-
.../src/airflow/cli/commands/api_server_command.py | 4 +-
airflow-core/src/airflow/jobs/job.py | 26 +-
.../src/airflow/jobs/scheduler_job_runner.py | 53 +-
airflow-core/src/airflow/ui/eslint.config.js | 6 -
airflow-core/src/airflow/ui/package.json | 22 +-
airflow-core/src/airflow/ui/pnpm-lock.yaml | 719 ++--
.../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 | 1 +
.../ui/public/i18n/locales/zh-CN/admin.json | 2 +
.../ui/public/i18n/locales/zh-CN/browse.json | 2 +
.../ui/public/i18n/locales/zh-CN/common.json | 52 +-
.../ui/public/i18n/locales/zh-CN/components.json | 13 +
.../airflow/ui/public/i18n/locales/zh-CN/dag.json | 63 +-
.../airflow/ui/public/i18n/locales/zh-CN/dags.json | 14 +-
.../ui/public/i18n/locales/zh-CN/dashboard.json | 1 +
.../airflow/ui/public/i18n/locales/zh-CN/hitl.json | 1 +
.../airflow-plugin/index.js} | 16 +-
.../airflow-plugin/no-react-namespace-types.js | 59 +
.../no-react-namespace-types.test.js | 49 +-
airflow-core/src/airflow/ui/rules/core.js | 90 +-
airflow-core/src/airflow/ui/rules/i18n.js | 167 -
airflow-core/src/airflow/ui/rules/jsonc.js | 45 -
airflow-core/src/airflow/ui/rules/levels.js | 3 -
airflow-core/src/airflow/ui/rules/off.js | 29 -
airflow-core/src/airflow/ui/rules/perfectionist.js | 3 -
airflow-core/src/airflow/ui/rules/react.js | 7 -
airflow-core/src/airflow/ui/rules/rem.js | 146 -
airflow-core/src/airflow/ui/rules/typescript.js | 150 +-
airflow-core/src/airflow/ui/rules/unicorn.js | 21 +-
.../ui/src/components/Breadcrumb/CrumbSwitcher.tsx | 7 +-
.../ui/src/components/Graph/useGraphLayout.ts | 45 +-
.../components/PluginActions/PluginReactAction.tsx | 6 +-
.../ui/src/layouts/Details/DagBreadcrumb.test.tsx | 213 +-
.../ui/src/layouts/Details/DagBreadcrumb.tsx | 22 +
.../airflow/ui/src/layouts/Details/SearchTasks.tsx | 190 ++
...agSwitcherButton.tsx => TaskSwitcherButton.tsx} | 44 +-
.../src/airflow/ui/src/pages/ReactPlugin.tsx | 4 +-
airflow-core/src/airflow/ui/tsconfig.dev.json | 2 +-
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 +-
.../execution_api/versions/head/test_callbacks.py | 188 ++
.../{v2026_10_30 => v2027_02_28}/test_callbacks.py | 14 +-
.../unit/api_fastapi/test_lazy_response_fields.py | 338 ++
.../unit/cli/commands/test_api_server_command.py | 19 +
.../unit/cli/commands/test_gunicorn_monitor.py | 2 +-
airflow-core/tests/unit/jobs/test_base_job.py | 29 +
airflow-core/tests/unit/jobs/test_scheduler_job.py | 137 +-
airflow-core/tests/unit/utils/test_db_cleanup.py | 348 +-
.../airflowctl/api/datamodels/auth_generated.py | 2 +-
.../src/airflowctl/api/datamodels/generated.py | 2 +-
airflow-e2e-tests/pyproject.toml | 2 +-
contributing-docs/18_contribution_workflow.rst | 5 +-
contributing-docs/25_maintainer_pr_triage.md | 14 +-
contributing-docs/32_open_pull_request_limit.rst | 11 +-
dev/breeze/doc/ci/02_images.md | 6 +-
dev/breeze/doc/ci/04_selective_checks.md | 74 +-
dev/breeze/doc/ci/05_workflows.md | 14 +-
.../doc/ci/08_fork_ci_for_external_contributors.md | 117 +-
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_workflow-run_publish-docs.svg | 12 +-
.../images/output_workflow-run_publish-docs.txt | 2 +-
dev/breeze/pyproject.toml | 2 +-
.../airflow_breeze/commands/kubernetes_commands.py | 2 +-
.../commands/release_management_commands.py | 9 +-
.../src/airflow_breeze/commands/ui_commands.py | 7 +-
.../files/hardened_os_deps_image_digests.json | 15 +-
.../files/hardened_python_image_digests.json | 16 +-
dev/breeze/src/airflow_breeze/global_constants.py | 8 +-
.../src/airflow_breeze/utils/fork_ci_gate.py | 2 +-
.../src/airflow_breeze/utils/fork_ci_messages.py | 28 +-
.../src/airflow_breeze/utils/fork_ci_reconcile.py | 110 +-
.../src/airflow_breeze/utils/import_graph.py | 308 ++
.../src/airflow_breeze/utils/selective_checks.py | 169 +-
.../src/airflow_breeze/utils/verification_plan.py | 24 +-
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 | 143 +-
dev/breeze/tests/test_import_graph.py | 122 +
.../tests/test_release_management_commands.py | 46 +
dev/breeze/tests/test_selective_checks.py | 376 ++-
dev/breeze/tests/test_verification_plan.py | 31 +-
dev/breeze/tests/test_verify_commands.py | 2 +-
dev/breeze/uv.lock | 140 +-
.../react_plugin_template/package.json | 4 +-
.../react_plugin_template/pnpm-lock.yaml | 1441 ++++----
docker-stack-docs/README.md | 8 +-
docker-stack-docs/build-arg-ref.rst | 2 +-
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 | 1 +
go-sdk/adr/0009-task-loop-authoring-interface.md | 245 ++
go-sdk/airflow/enums_test.go | 14 +-
go-sdk/pkg/execution/client.go | 8 +-
go-sdk/pkg/execution/client_test.go | 20 +-
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 | 102 +-
go-sdk/pkg/execution/genmodels/time.go | 84 +
go-sdk/pkg/execution/genmodels/time_test.go | 236 ++
go-sdk/pkg/execution/integration_test.go | 11 +-
go-sdk/pkg/execution/messages.go | 128 +-
go-sdk/pkg/execution/messages_test.go | 218 +-
go-sdk/pkg/execution/task_runner.go | 79 +-
go-sdk/pkg/execution/task_runner_test.go | 89 -
go-sdk/pkg/execution/trigger_runner.go | 11 +-
go-sdk/sdk/context.go | 5 +-
java-sdk/DEVELOPMENT.md | 15 +-
java-sdk/adr/0003-task-loop-authoring-interface.md | 327 ++
.../test_kubernetes_pod_operator.py | 2 +-
providers/.last_release_date.txt | 2 +-
providers/.pre-commit-config.yaml | 2 +-
providers/amazon/README.rst | 4 +-
providers/amazon/docs/changelog.rst | 9 +-
providers/amazon/docs/index.rst | 4 +-
providers/amazon/provider.yaml | 2 +-
providers/amazon/pyproject.toml | 4 +-
.../src/airflow/providers/amazon/aws/hooks/s3.py | 1 -
.../amazon/tests/unit/amazon/aws/hooks/test_s3.py | 13 +
.../celery/executors/celery_executor_utils.py | 10 +
.../unit/celery/executors/test_celery_executor.py | 42 +
.../cncf/kubernetes/utils/xcom_sidecar.py | 2 +-
.../system/cncf/kubernetes/example_kubernetes.py | 2 +-
.../cncf/kubernetes/example_kubernetes_async.py | 2 +-
.../unit/cncf/kubernetes/operators/test_pod.py | 6 +-
providers/common/ai/README.rst | 1 +
providers/common/ai/docs/changelog.rst | 10 +
.../common/ai/docs/connections/pydantic_ai.rst | 5 +-
providers/common/ai/docs/frameworks/index.rst | 3 +-
.../common/ai/docs/frameworks/openai_agents.rst | 127 +-
providers/common/ai/docs/index.rst | 1 +
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/toolsets/index.rst | 6 +-
.../ai/docs/use_cases/explain_revenue_anomaly.rst | 8 +-
providers/common/ai/provider.yaml | 1 +
providers/common/ai/pyproject.toml | 1 +
.../airflow/providers/common/ai/durable/base.py | 7 +-
.../providers/common/ai/durable/fingerprint.py | 8 +-
.../airflow/providers/common/ai/durable/journal.py | 94 +-
.../providers/common/ai/durable/openai_agents.py | 279 +-
...urable.py => example_openai_agents_approval.py} | 66 +-
.../src/airflow/providers/common/ai/exceptions.py | 18 +-
.../providers/common/ai/get_provider_info.py | 5 +-
.../airflow/providers/common/ai/hooks/ollama.py | 98 +
.../providers/common/ai/hooks/pydantic_ai.py | 106 +-
.../airflow/providers/common/ai/tools/__init__.py | 41 +-
.../providers/common/ai/tools/_from_toolset.py | 244 +-
.../src/airflow/providers/common/ai/tools/adk.py | 10 +-
.../airflow/providers/common/ai/tools/anthropic.py | 12 +-
.../providers/common/ai/tools/claude_agent_sdk.py | 10 +-
.../providers/common/ai/tools/openai_agents.py | 61 +-
.../airflow/providers/common/ai/tools/strands.py | 10 +-
.../tests/unit/common/ai/durable/test_journal.py | 130 +
.../unit/common/ai/durable/test_openai_agents.py | 812 ++++-
.../ai/tests/unit/common/ai/hooks/test_ollama.py | 139 +
.../tests/unit/common/ai/hooks/test_pydantic_ai.py | 204 +-
.../unit/common/ai/tools/test__from_toolset.py | 54 +-
.../unit/common/ai/tools/test_claude_agent_sdk.py | 8 +
.../unit/common/ai/tools/test_openai_agents.py | 12 +-
.../ai/tests/unit/common/ai/tools/test_tools.py | 225 +-
.../src/airflow/providers/databricks/exceptions.py | 5 +-
.../providers/databricks/hooks/databricks_base.py | 6 +-
.../providers/databricks/operators/databricks.py | 38 +-
.../tests/unit/databricks/hooks/test_databricks.py | 25 +
.../unit/databricks/operators/test_databricks.py | 73 +-
.../providers/edge3/plugins/www/package.json | 8 +-
.../providers/edge3/plugins/www/pnpm-lock.yaml | 1546 +++++----
providers/google/README.rst | 28 +-
providers/google/docs/index.rst | 28 +-
providers/google/pyproject.toml | 28 +-
providers/hashicorp/docs/index.rst | 2 +-
providers/hashicorp/pyproject.toml | 2 +-
{airflow-core => providers/huggingface}/.gitignore | 0
{chart => providers/huggingface}/LICENSE | 0
NOTICE => providers/huggingface/NOTICE | 0
providers/{opsgenie => huggingface}/README.rst | 22 +-
providers/huggingface/docs/artifacts.rst | 63 +
.../dataquality => huggingface}/docs/changelog.rst | 2 +-
.../huggingface/docs/commits.rst | 8 +-
providers/{hashicorp => huggingface}/docs/conf.py | 2 +-
.../huggingface/docs/connections/huggingface.rst | 43 +
.../huggingface/docs/connections/index.rst | 8 +
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 +
.../{singularity => huggingface}/pyproject.toml | 23 +-
.../huggingface/src/airflow}/__init__.py | 0
.../huggingface/src/airflow/providers}/__init__.py | 0
.../src/airflow/providers/huggingface}/__init__.py | 4 +-
.../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 +++++
.../tests/unit/openai/operators/test_openai.py | 20 +-
.../tests/system/openlineage/manual_state.py | 10 +
providers/standard/README.rst | 6 +-
providers/standard/docs/changelog.rst | 4 +-
providers/standard/docs/index.rst | 6 +-
providers/standard/provider.yaml | 2 +-
providers/standard/pyproject.toml | 6 +-
.../src/airflow/providers/standard/__init__.py | 2 +-
pyproject.toml | 12 +-
registry/package.json | 2 +-
registry/pnpm-lock.yaml | 94 +-
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 +-
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/ts_compile_lint_ui.py | 4 +-
scripts/tests/ci/prek/test_check_i18n_json.py | 98 +
scripts/tools/setup_breeze | 2 +-
.../secrets_masker/secrets_masker.py | 22 +
.../tests/secrets_masker/test_secrets_masker.py | 29 +
task-sdk/src/airflow/sdk/api/client.py | 7 +
.../src/airflow/sdk/api/datamodels/_generated.py | 23 +-
.../sdk/execution_time/callback_supervisor.py | 26 +-
task-sdk/tests/task_sdk/api/test_client.py | 34 +
.../execution_time/test_callback_supervisor.py | 88 +-
ts-sdk/adr/0003-task-loop-authoring-interface.md | 214 ++
uv.lock | 3505 +++++++++++---------
331 files changed, 18745 insertions(+), 7044 deletions(-)
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
copy providers/amazon/src/airflow/providers/amazon/aws/utils/sagemaker.py =>
airflow-core/src/airflow/api_fastapi/execution_api/datamodels/callback.py (67%)
copy airflow-core/src/airflow/ui/{src/hooks/useShowTeam.ts =>
rules/airflow-plugin/index.js} (71%)
create mode 100644
airflow-core/src/airflow/ui/rules/airflow-plugin/no-react-namespace-types.js
copy
java-sdk/sdk/src/test/kotlin/org/apache/airflow/example/DagSourceFixtures.kt =>
airflow-core/src/airflow/ui/rules/airflow-plugin/no-react-namespace-types.test.js
(51%)
delete mode 100644 airflow-core/src/airflow/ui/rules/i18n.js
delete mode 100644 airflow-core/src/airflow/ui/rules/jsonc.js
delete mode 100644 airflow-core/src/airflow/ui/rules/off.js
delete mode 100644 airflow-core/src/airflow/ui/rules/rem.js
create mode 100644
airflow-core/src/airflow/ui/src/layouts/Details/SearchTasks.tsx
copy airflow-core/src/airflow/ui/src/layouts/Details/{DagSwitcherButton.tsx =>
TaskSwitcherButton.tsx} (53%)
copy airflow-core/tests/unit/api_fastapi/execution_api/versions/{v2026_10_30
=> v2027_02_28}/test_callbacks.py (75%)
create mode 100644
airflow-core/tests/unit/api_fastapi/test_lazy_response_fields.py
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
delete mode 100644 go-sdk/pkg/execution/task_runner_test.go
create mode 100644 java-sdk/adr/0003-task-loop-authoring-interface.md
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
copy
providers/common/ai/src/airflow/providers/common/ai/example_dags/{example_openai_agents_durable.py
=> example_openai_agents_approval.py} (52%)
create mode 100644
providers/common/ai/src/airflow/providers/common/ai/hooks/ollama.py
create mode 100644
providers/common/ai/tests/unit/common/ai/hooks/test_ollama.py
copy {airflow-core => providers/huggingface}/.gitignore (100%)
copy {chart => providers/huggingface}/LICENSE (100%)
copy NOTICE => providers/huggingface/NOTICE (100%)
copy providers/{opsgenie => huggingface}/README.rst (77%)
create mode 100644 providers/huggingface/docs/artifacts.rst
copy providers/{common/dataquality => huggingface}/docs/changelog.rst (96%)
copy airflow-core/docs/release_notes.rst =>
providers/huggingface/docs/commits.rst (86%)
copy providers/{hashicorp => huggingface}/docs/conf.py (98%)
create mode 100644 providers/huggingface/docs/connections/huggingface.rst
copy scripts/ci/license-templates/LICENSE.rst =>
providers/huggingface/docs/connections/index.rst (87%)
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/{singularity => 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/{modal/src/airflow/providers/modal =>
huggingface/src/airflow/providers/huggingface}/__init__.py (92%)
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 scripts/tests/ci/prek/test_check_i18n_json.py
create mode 100644 ts-sdk/adr/0003-task-loop-authoring-interface.md