This is an automated email from the ASF dual-hosted git repository.
github-actions[bot] pushed a change to branch ci-upgrade-main
in repository https://gitbox.apache.org/repos/asf/airflow.git
discard cd3fa8a99de [main] CI: Upgrade important CI environment
add 2827a13dc4f Check ui-field-behaviour drift between hooks and
provider.yaml (#73801)
add 30d0d7bac4a Adjust warnings, import errors, and Dag source models for
sdk/importers (#72474)
add f242c8e0513 Skip CI duration alerts when the newest run is stale
(#73831)
add 3634bc89d04 Discover a bundle's Dag definitions through the importer
registry (#73728)
add 7eac9ac7c1b Add connections and agent-security entries to the
common.ai sidebar (#73837)
add 58af2f521bb Close the ssh askpass helper in GitHook before ssh
executes it (#73427)
add b86fa49a15d Optimize CI disk cleanup (#73184)
add 5fbe8dbb433 Clarify DateTimeSensorAsync changelog entry (#73833)
add 873bd644b51 Let a person approve an agent's tool calls before they run
(#73586)
add 66607ac5483 AIP-82: Add KinesisMessageQueueProvider (#73509)
add b357ae24709 Bump the auth-ui-package-updates group across 1 directory
with 8 updates (#73740)
add 455d9581367 UI: Complete Polish translations and unify slot/deferred
wording (#72623)
add 5428b3b995b Secrets backends order updated (#70681)
add 232255e7fa7 Go SDK: add airflow.Dag and dag.Task, the native Dag
constructors (#73767)
add 0566d6cd5ef Add OpenSandbox backend for sandbox tools (#71676)
add 93978958ae1 Fix example_neptune_analytics by pinning an explicit
region (#73851)
add d6c4c71979e Bump prettier (#73857)
add c8ca02e4158 Update changelog to clarify new LLMBranchOperator
"branches" feature (#73850)
add ad3e67fccd2 Add Modal provider with `ModalHook` and connection type
(#73418)
add ce614baf9b0 Add Strands Agents support for `common.ai` toolsets
(#73587)
add dbac03d87dd Fix KubernetesExecutor not queuing tasks on Airflow 3.0.x
(#73764)
add b3bcb388742 Recognize grouped PR references in provider changelog
tooling (#73855)
add ae1e8385060 Let the sandbox toolset attach to a sandbox another task
provisioned (#73559)
add c1b878ad22c Exclude SQLAlchemy 2.1.0 (#73865)
add 10221c300eb Read the AWS task logs once more after the fetcher is
stopped (#73211)
add 84f75158120 Require `common.sql` 2.2.0 for common.ai's SQL extras
(#73867)
add 3f60fa9e2c7 Fix Firefox and WebKit UI e2e runs failing at login
(#73872)
add ac88accf4ed Add bundle_name tag to missing dag processor metrics
(#73717)
add 7afece8efb0 Update providers metadata 2026-09-29 (#73884)
add 4b6606543fd Distinguish OpenAI batch timeout and cancellation in
deferrable tasks (#72149)
add 8b3d4d315fa Surface the retry policy decision on task instances page
(#73030)
add bc28bb0804c Go SDK: Fix the mixed language task handler binding
semantic (#73648)
add 9ebc2644741 Revert "Secrets backends order updated (#70681)" (#73891)
add 4e23910701b Go SDK: check Go naming conventions with staticcheck
(#73874)
add 0768924a0cd Automatically isolate `breeze testing` for each git
worktree in a totally isolated project. (#73836)
add 3e8318969e1 Add ADR for Lang SDK Dag and mixed-language Task
processing flow (#71929)
add e8d43932077 Add ADR for supporting Dynamic Dag Generation across
Language SDKs (#73518)
add 8d815efdbc3 Own the BaseAsyncOperator event loop through
asyncio.Runner (#73560)
add 647add72afe Mark experimental `common.ai` features ahead of 1.0
(#73896)
add 5eba7439d76 Make cron timetables hashable (#73859)
add d776f003b71 UI: Add team column and filter to the jobs list (#73295)
add d0b8476825d Set `SameSite` on the fab auth manager session cookie
(#73894)
add 6b90003fe27 Document override semantics for EcsRunTaskOperator (#73860)
add a3555c74cfc TS SDK: default a task id to the handler's name (#73437)
add a65a3ddf8be Fix Postgres data volume path in Breeze (#73862)
add 85321901f10 Add EmrServerlessStartSessionOperator to Amazon provider
(#70763)
add 9198acb15e8 UI: Add team filter to Human-in-the-loop task instances
listing (#73726)
add 836a5565c58 Scope plugin scheduling classes to their team in
multi-team mode (#73569)
add cc19675d24f Add DuckDB support to the Amazon provider (#73301)
add 029cdf8f6cc Return an approved agent answer as `output_type` after
human review (#73904)
add 3c76a47f65c Remove accidentally adopted Magpie contributor-growth
plugin (#73927)
add 73b07c5aedb Name the tools a durable agent retry will run again
(#73873)
add 5799660c4d4 TS SDK: draw order-only edges with before and after
(#73438)
add a8a62573f54 TS SDK: embed one source region per native Dag file
(#73723)
add bfa2fe02fc1 Account for AgentOperator spend on failed runs and across
retries (#73706)
add 023f859e5a6 Mask secrets in tool results before they reach the model
(#73897)
add 2b806f949b0 Rework common.ai Strands support into a plugin and add
Google ADK (#73898)
add e46d1938619 Add `ObjectStorageToolset` for reading files on object
storage (#73899)
add 35507e99a6e Let HookToolset pin arguments the model must not choose
(#73900)
add 40ed903b6d6 Count and trace tool calls made by native agent frameworks
(#73901)
add 2eb11c14b85 Document running your own Pydantic AI agent, and sandboxes
in other frameworks (#73902)
add d4ba567a390 Tell the model how many rows a Parquet or Avro file holds
(#73925)
add b3f2eab93f2 [main] CI: Upgrade important CI environment
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 (cd3fa8a99de)
\
N -- N -- N refs/heads/ci-upgrade-main (b3f2eab93f2)
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:
.../committer-onboarding-config.md | 272 ----
.apache-magpie-overrides/committer-readiness.md | 169 ---
.../contributor-nomination-config.md | 186 ---
.../contributor-sentiment-config.md | 66 -
.../good-first-issue-config.md | 93 --
.../onboarding-concierge-config.md | 70 -
.apache-magpie.lock | 43 -
.github/ISSUE_TEMPLATE/1-airflow_bug_report.yml | 1 +
.github/boring-cyborg.yml | 3 +
.pre-commit-config.yaml | 4 +-
Dockerfile | 2 +-
Dockerfile.ci | 4 +-
.../0007-taskflow-across-language-boundary.md | 39 +
.../adr/lang-sdk/0008-control-flow-constructs.md | 2 +-
.../0009-provider-operators-as-generated-dsl.md | 4 +-
.../adr/lang-sdk/0010-native-dag-processing.md | 212 +++
.../lang-sdk/0011-mixed-language-dag-processing.md | 245 +++
.../adr/lang-sdk/0012-lang-sdk-parse-protocol.md | 233 +++
.../0013-persisted-task-handler-bindings.md | 593 ++++++++
.../0014-bundle-metadata-and-cache-digest.md | 122 ++
airflow-core/adr/lang-sdk/README.md | 5 +
.../language-sdks/typescript.rst | 76 +-
airflow-core/docs/best-practices.rst | 2 +-
airflow-core/docs/extra-packages-ref.rst | 2 +
airflow-core/docs/migrations-ref.rst | 6 +-
airflow-core/pyproject.toml | 2 +-
airflow-core/src/airflow/api/common/delete_dag.py | 7 +-
.../auth/managers/simple/ui/package.json | 16 +-
.../auth/managers/simple/ui/pnpm-lock.yaml | 356 ++---
.../api_fastapi/common/parameters/__init__.py | 3 +
.../airflow/api_fastapi/common/parameters/job.py | 50 +
.../api_fastapi/core_api/datamodels/dag_sources.py | 1 +
.../api_fastapi/core_api/datamodels/dag_warning.py | 4 +-
.../core_api/datamodels/import_error.py | 1 +
.../core_api/datamodels/task_instance_history.py | 19 +-
.../core_api/datamodels/task_instances.py | 18 +-
.../api_fastapi/core_api/openapi/_private_ui.yaml | 9 +
.../core_api/openapi/v2-rest-api-generated.yaml | 59 +-
.../core_api/routes/public/dag_sources.py | 1 +
.../core_api/routes/public/dag_warning.py | 6 +-
.../api_fastapi/core_api/routes/public/hitl.py | 4 +
.../core_api/routes/public/import_error.py | 2 +
.../api_fastapi/core_api/routes/public/job.py | 3 +
.../airflow/cli/commands/dag_processor_command.py | 26 +-
.../src/airflow/dag_processing/collection.py | 106 ++
airflow-core/src/airflow/dag_processing/manager.py | 19 +-
...9_3_4_0_add_source_reference_to_import_error.py | 34 +-
.../0140_3_4_0_add_language_to_dag_code.py | 36 +-
airflow-core/src/airflow/models/dagcode.py | 3 +
airflow-core/src/airflow/models/dagwarning.py | 31 +-
airflow-core/src/airflow/models/errors.py | 12 +-
airflow-core/src/airflow/plugins_manager.py | 42 +
airflow-core/src/airflow/timetables/_cron.py | 2 +-
.../src/airflow/ui/openapi-gen/queries/common.ts | 14 +-
.../ui/openapi-gen/queries/ensureQueryData.ts | 18 +-
.../src/airflow/ui/openapi-gen/queries/prefetch.ts | 18 +-
.../src/airflow/ui/openapi-gen/queries/queries.ts | 18 +-
.../src/airflow/ui/openapi-gen/queries/suspense.ts | 18 +-
.../airflow/ui/openapi-gen/requests/schemas.gen.ts | 60 +-
.../ui/openapi-gen/requests/services.gen.ts | 8 +-
.../airflow/ui/openapi-gen/requests/types.gen.ts | 18 +-
.../airflow/ui/public/i18n/locales/en/common.json | 5 +
.../airflow/ui/public/i18n/locales/pl/admin.json | 30 +-
.../airflow/ui/public/i18n/locales/pl/assets.json | 21 +-
.../airflow/ui/public/i18n/locales/pl/browse.json | 38 +
.../airflow/ui/public/i18n/locales/pl/common.json | 103 +-
.../ui/public/i18n/locales/pl/components.json | 29 +-
.../src/airflow/ui/public/i18n/locales/pl/dag.json | 13 +-
.../airflow/ui/public/i18n/locales/pl/dags.json | 30 +-
.../ui/public/i18n/locales/pl/dashboard.json | 6 +-
.../airflow/ui/public/i18n/locales/pl/hitl.json | 2 +-
.../src/airflow/ui/src/pages/Dag/Code/Code.tsx | 10 +-
.../ui/src/pages/HITLTaskInstances/HITLFilters.tsx | 6 +
.../HITLTaskInstances/HITLTaskInstances.test.tsx | 62 +-
.../pages/HITLTaskInstances/HITLTaskInstances.tsx | 21 +
airflow-core/src/airflow/ui/src/pages/Jobs.tsx | 22 +-
.../ui/src/pages/TaskInstance/Details.test.tsx | 137 ++
.../airflow/ui/src/pages/TaskInstance/Details.tsx | 16 +
.../ui/src/pages/TaskInstance/Header.test.tsx | 54 +
.../airflow/ui/src/pages/TaskInstance/Header.tsx | 20 +
.../ui/src/pages/TaskInstance/stateReason.ts | 32 +
.../src/airflow/ui/tests/e2e/global-setup.ts | 14 +-
airflow-core/src/airflow/utils/db.py | 2 +-
.../tests/unit/api/common/test_delete_dag.py | 49 +
.../core_api/routes/public/test_dag_sources.py | 4 +
.../core_api/routes/public/test_dag_warning.py | 19 +
.../core_api/routes/public/test_hitl.py | 49 +-
.../core_api/routes/public/test_import_error.py | 76 +-
.../api_fastapi/core_api/routes/public/test_job.py | 17 +
.../core_api/routes/public/test_task_instances.py | 93 ++
.../cli/commands/test_dag_processor_command.py | 58 +
.../tests/unit/dag_processing/test_collection.py | 347 ++++-
.../tests/unit/dag_processing/test_manager.py | 92 +-
airflow-core/tests/unit/models/test_dagcode.py | 8 +
airflow-core/tests/unit/models/test_dagwarning.py | 38 +-
airflow-core/tests/unit/models/test_errors.py | 86 ++
.../tests/unit/plugins/test_plugins_manager.py | 61 +
.../unit/timetables/test_trigger_timetable.py | 7 +
.../airflowctl/api/datamodels/auth_generated.py | 2 +-
.../src/airflowctl/api/datamodels/generated.py | 26 +-
.../tests/airflow_ctl/api/test_operations.py | 1 +
airflow-e2e-tests/pyproject.toml | 2 +-
.../go_sdk_tests/test_go_sdk_taskflow_binding.py | 72 +-
dev/breeze/doc/03_developer_tasks.rst | 44 +-
dev/breeze/doc/04_troubleshooting.rst | 11 +
dev/breeze/doc/05_test_commands.rst | 14 +
dev/breeze/doc/ci/02_images.md | 2 +-
dev/breeze/doc/images/output-commands.svg | 165 +--
dev/breeze/doc/images/output_build-docs.svg | 4 +-
dev/breeze/doc/images/output_build-docs.txt | 2 +-
dev/breeze/doc/images/output_cleanup.svg | 2 +-
dev/breeze/doc/images/output_cleanup.txt | 2 +-
dev/breeze/doc/images/output_down.svg | 48 +-
dev/breeze/doc/images/output_down.txt | 2 +-
...tput_release-management_add-back-references.svg | 4 +-
...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 | 10 +-
...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 | 4 +-
.../output_release-management_publish-docs.txt | 2 +-
dev/breeze/doc/images/output_run.svg | 45 +-
dev/breeze/doc/images/output_run.txt | 2 +-
...output_sbom_generate-providers-requirements.svg | 2 +-
...output_sbom_generate-providers-requirements.txt | 2 +-
dev/breeze/doc/images/output_shell.svg | 285 ++--
dev/breeze/doc/images/output_shell.txt | 2 +-
dev/breeze/doc/images/output_start-airflow.svg | 237 ++-
dev/breeze/doc/images/output_start-airflow.txt | 2 +-
.../doc/images/output_testing_core-tests.svg | 145 +-
.../doc/images/output_testing_core-tests.txt | 2 +-
.../doc/images/output_testing_providers-tests.svg | 161 +-
.../doc/images/output_testing_providers-tests.txt | 2 +-
.../images/output_workflow-run_publish-docs.svg | 4 +-
.../images/output_workflow-run_publish-docs.txt | 2 +-
.../src/airflow_breeze/commands/common_options.py | 10 +-
.../airflow_breeze/commands/developer_commands.py | 52 +-
.../commands/developer_commands_config.py | 2 +-
.../src/airflow_breeze/commands/main_command.py | 23 +-
.../commands/release_management_commands.py | 2 +-
.../airflow_breeze/commands/testing_commands.py | 12 +-
.../commands/testing_commands_config.py | 5 +-
dev/breeze/src/airflow_breeze/global_constants.py | 19 +-
.../src/airflow_breeze/params/shell_params.py | 17 +-
.../prepare_providers/provider_documentation.py | 11 +-
.../airflow_breeze/utils/docker_command_utils.py | 236 ++-
dev/breeze/src/airflow_breeze/utils/path_utils.py | 10 +-
dev/breeze/tests/test_developer_commands.py | 38 +-
dev/breeze/tests/test_docker_command_utils.py | 417 +++++-
dev/breeze/tests/test_provider_documentation.py | 48 +
dev/breeze/tests/test_selective_checks.py | 10 +-
dev/breeze/tests/test_shell_params.py | 82 ++
dev/breeze/uv.lock | 104 +-
devel-common/pyproject.toml | 4 +-
.../src/tests_common/test_utils/mock_plugins.py | 42 +-
docs/spelling_wordlist.txt | 5 +
generated/provider_metadata.json | 496 ++++---
go-sdk/.pre-commit-config.yaml | 7 +
go-sdk/README.md | 14 +-
go-sdk/adr/0006-cross-language-argument-binding.md | 15 +-
.../adr/0007-mixed-lang-task-handler-interface.md | 6 +-
go-sdk/adr/0008-native-dag-interface.md | 18 +-
go-sdk/airflow/bundle.go | 57 +-
go-sdk/airflow/bundle_test.go | 44 +-
go-sdk/airflow/dag.go | 234 +++
go-sdk/airflow/dag_test.go | 461 ++++++
go-sdk/airflow/serve.go | 2 +-
go-sdk/airflow/spec.go | 28 +
go-sdk/airflow/task_handler.go | 29 +-
go-sdk/airflow/task_handler_test.go | 6 +-
go-sdk/airflow/task_option.go | 33 +
go-sdk/airflow/testdata/foreigntaskoption/main.go | 34 +
.../cmd/airflow-go-pack/pack_integration_test.go | 4 +-
go-sdk/dags/go_examples.py | 28 +-
.../bundle/concurrentxcom/concurrentxcom_test.go | 2 +-
go-sdk/example/bundle/main.go | 14 +-
.../bundle/taskflowbinding/taskflowbinding.go | 61 +-
.../bundle/taskflowbinding/taskflowbinding_test.go | 44 +-
go-sdk/internal/bundle/task.go | 2 +-
go-sdk/pkg/binding/binding.go | 56 +-
go-sdk/pkg/binding/binding_test.go | 106 +-
go-sdk/pkg/execution/client.go | 22 +-
go-sdk/pkg/execution/client_test.go | 6 +-
go-sdk/pkg/execution/comms.go | 13 +-
go-sdk/pkg/execution/comms_test.go | 10 +-
go-sdk/pkg/execution/integration_test.go | 14 +-
go-sdk/pkg/execution/messages.go | 6 +-
go-sdk/pkg/execution/messages_test.go | 4 +-
go-sdk/sdk/sdk.go | 4 +-
providers/amazon/README.rst | 4 +-
providers/amazon/docs/index.rst | 4 +-
providers/amazon/docs/message-queues/index.rst | 55 +
providers/amazon/docs/operators/duckdb.rst | 180 +++
providers/amazon/docs/operators/ecs.rst | 35 +
.../amazon/docs/operators/emr/emr_serverless.rst | 23 +
providers/amazon/provider.yaml | 32 +
providers/amazon/pyproject.toml | 15 +-
.../airflow/providers/amazon/aws/hooks/duckdb.py | 277 ++++
.../src/airflow/providers/amazon/aws/hooks/emr.py | 51 +
.../airflow/providers/amazon/aws/operators/ecs.py | 3 +
.../airflow/providers/amazon/aws/operators/emr.py | 112 ++
.../airflow/providers/amazon/aws/queues/kinesis.py | 48 +
.../airflow/providers/amazon/aws/triggers/emr.py | 48 +
.../providers/amazon/aws/utils/task_log_fetcher.py | 38 +-
.../amazon/aws/waiters/emr-serverless.json | 37 +
.../airflow/providers/amazon/get_provider_info.py | 28 +-
.../tests/system/amazon/aws/example_duckdb.py | 158 ++
.../amazon/aws/example_emr_serverless_session.py | 103 ++
.../amazon/aws/example_kinesis_message_queue.py | 98 ++
.../system/amazon/aws/example_neptune_analytics.py | 20 +-
.../tests/unit/amazon/aws/hooks/test_duckdb.py | 307 ++++
.../unit/amazon/aws/hooks/test_emr_serverless.py | 57 +
.../aws/operators/test_emr_serverless_session.py | 137 ++
.../tests/unit/amazon/aws/queues/test_kinesis.py | 185 +++
.../tests/unit/amazon/aws/triggers/test_emr.py | 60 +
.../unit/amazon/aws/utils/test_task_log_fetcher.py | 36 +-
providers/apache/hive/docs/index.rst | 2 +-
providers/apache/hive/pyproject.toml | 2 +-
providers/apache/impala/docs/index.rst | 8 +-
providers/apache/impala/pyproject.toml | 2 +-
.../kubernetes/executors/kubernetes_executor.py | 12 +-
.../executors/test_kubernetes_executor.py | 32 +
providers/common/ai/README.rst | 47 +-
providers/common/ai/docs/agent_security.rst | 54 +-
providers/common/ai/docs/approval_gates.rst | 5 +
providers/common/ai/docs/changelog.rst | 16 +-
providers/common/ai/docs/classifier_models.rst | 5 +
providers/common/ai/docs/code_mode.rst | 5 +
providers/common/ai/docs/connections/index.rst | 62 +
providers/common/ai/docs/connections/langchain.rst | 5 +
.../common/ai/docs/connections/llamaindex.rst | 5 +
providers/common/ai/docs/durable_execution.rst | 19 +-
providers/common/ai/docs/examples.rst | 3 +
providers/common/ai/docs/features.rst | 9 +-
providers/common/ai/docs/frameworks/adk.rst | 109 ++
providers/common/ai/docs/frameworks/index.rst | 174 +++
.../common/ai/docs/frameworks/pydantic_ai.rst | 78 +
providers/common/ai/docs/frameworks/strands.rst | 186 +++
providers/common/ai/docs/guardrails.rst | 6 +
providers/common/ai/docs/hooks/langchain.rst | 5 +
providers/common/ai/docs/hooks/llamaindex.rst | 5 +
providers/common/ai/docs/index.rst | 53 +-
providers/common/ai/docs/installation.rst | 7 +-
providers/common/ai/docs/observability.rst | 117 +-
providers/common/ai/docs/operations.rst | 1 -
providers/common/ai/docs/operators/agent.rst | 62 +-
.../common/ai/docs/operators/document_loader.rst | 5 +
providers/common/ai/docs/operators/index.rst | 4 +-
.../ai/docs/operators/llamaindex_embedding.rst | 5 +
.../ai/docs/operators/llamaindex_retrieval.rst | 5 +
providers/common/ai/docs/operators/llm.rst | 35 +-
providers/common/ai/docs/operators/llm_batch.rst | 5 +
providers/common/ai/docs/operators/llm_branch.rst | 5 +
.../common/ai/docs/operators/llm_file_analysis.rst | 5 +
.../ai/docs/operators/llm_schema_compare.rst | 5 +
providers/common/ai/docs/operators/llm_sql.rst | 5 +
providers/common/ai/docs/rag_pipelines.rst | 5 +
providers/common/ai/docs/retry_policies.rst | 60 +-
providers/common/ai/docs/sandbox/backends.rst | 131 +-
providers/common/ai/docs/sandbox/configuration.rst | 210 ++-
providers/common/ai/docs/sandbox/index.rst | 125 +-
providers/common/ai/docs/stability.rst | 188 +++
providers/common/ai/docs/tool_approval.rst | 152 ++
providers/common/ai/docs/toolsets/datafusion.rst | 5 +
providers/common/ai/docs/toolsets/hook.rst | 60 +-
providers/common/ai/docs/toolsets/index.rst | 13 +-
providers/common/ai/docs/toolsets/langchain.rst | 39 +-
providers/common/ai/docs/toolsets/logging.rst | 5 +
.../common/ai/docs/toolsets/managed_agent.rst | 9 +-
.../common/ai/docs/toolsets/object_storage.rst | 124 ++
providers/common/ai/docs/toolsets/skills.rst | 5 +
providers/common/ai/provider.yaml | 6 +-
providers/common/ai/pyproject.toml | 8 +-
.../airflow/providers/common/ai/batch/__init__.py | 2 +-
.../airflow/providers/common/ai/batch/anthropic.py | 5 +
.../src/airflow/providers/common/ai/batch/base.py | 10 +
.../airflow/providers/common/ai/batch/dispatch.py | 5 +
.../airflow/providers/common/ai/batch/openai.py | 5 +
.../providers/common/ai/decorators/llm_batch.py | 5 +
.../common/ai/decorators/llm_file_analysis.py | 5 +
.../common/ai/decorators/llm_schema_compare.py | 5 +
.../providers/common/ai/decorators/llm_sql.py | 5 +
.../airflow/providers/common/ai/durable/base.py | 19 +-
.../providers/common/ai/durable/caching_model.py | 122 +-
.../providers/common/ai/durable/caching_toolset.py | 47 +-
.../providers/common/ai/durable/replay_usage.py | 240 +++
.../providers/common/ai/durable/step_counter.py | 4 +
.../airflow/providers/common/ai/durable/storage.py | 16 +-
.../common/ai/durable/task_state_store.py | 16 +-
.../common/ai/example_dags/example_adk_agent.py | 105 ++
.../ai/example_dags/example_agent_tool_approval.py | 58 +
.../ai/example_dags/example_classifier_model.py | 8 +-
.../example_dags/example_object_storage_toolset.py | 48 +
.../ai/example_dags/example_pydantic_ai_agent.py | 72 +
.../ai/example_dags/example_sandbox_toolset.py | 100 +-
.../ai/example_dags/example_strands_agent.py | 91 ++
.../src/airflow/providers/common/ai/exceptions.py | 32 +-
.../providers/common/ai/get_provider_info.py | 7 +-
.../airflow/providers/common/ai/hooks/langchain.py | 5 +
.../providers/common/ai/hooks/llamaindex.py | 5 +
.../airflow/providers/common/ai/mixins/approval.py | 30 +
.../airflow/providers/common/ai/operators/agent.py | 801 ++++++++--
.../common/ai/operators/document_loader.py | 5 +
.../common/ai/operators/llamaindex_embedding.py | 5 +
.../common/ai/operators/llamaindex_retrieval.py | 5 +
.../airflow/providers/common/ai/operators/llm.py | 27 +-
.../providers/common/ai/operators/llm_batch.py | 5 +
.../providers/common/ai/operators/llm_branch.py | 6 +-
.../common/ai/operators/llm_file_analysis.py | 5 +
.../common/ai/operators/llm_schema_compare.py | 5 +
.../providers/common/ai/operators/llm_sql.py | 5 +
.../providers/common/ai/policies/decision.py | 11 +
.../airflow/providers/common/ai/policies/retry.py | 17 +-
.../providers/common/ai/sandbox/__init__.py | 6 +
.../airflow/providers/common/ai/sandbox/base.py | 260 +++-
.../airflow/providers/common/ai/sandbox/modal.py | 251 +++-
.../providers/common/ai/sandbox/opensandbox.py | 550 +++++++
.../airflow/providers/common/ai/sandbox/output.py | 6 +-
.../src/airflow/providers/common/ai/sandbox/sbx.py | 22 +-
.../ai/src/airflow/providers/common/ai/skills.py | 5 +
.../airflow/providers/common/ai/tools/__init__.py | 172 +++
.../providers/common/ai/tools/_from_toolset.py | 243 +++
.../src/airflow/providers/common/ai/tools/adk.py | 112 ++
.../airflow/providers/common/ai/tools/strands.py | 155 ++
.../airflow/providers/common/ai/tools/tracing.py | 192 +++
.../providers/common/ai/toolsets/__init__.py | 2 +
.../providers/common/ai/toolsets/datafusion.py | 30 +-
.../airflow/providers/common/ai/toolsets/hook.py | 66 +-
.../common/ai/toolsets/langchain_bridge.py | 185 +--
.../providers/common/ai/toolsets/logging.py | 15 +-
.../providers/common/ai/toolsets/managed_agent.py | 27 +-
.../airflow/providers/common/ai/toolsets/mcp.py | 34 +-
.../providers/common/ai/toolsets/object_storage.py | 383 +++++
.../providers/common/ai/toolsets/sandbox.py | 401 ++++-
.../airflow/providers/common/ai/toolsets/skills.py | 5 +
.../airflow/providers/common/ai/toolsets/sql.py | 42 +-
.../providers/common/ai/triggers/llm_batch.py | 5 +
.../providers/common/ai/utils/coroutines.py | 39 +-
.../providers/common/ai/utils/file_analysis.py | 123 +-
.../airflow/providers/common/ai/utils/logging.py | 42 +-
.../airflow/providers/common/ai/utils/masking.py | 120 ++
.../providers/common/ai/utils/query_results.py | 7 +-
.../providers/common/ai/utils/tool_definition.py | 13 +-
.../providers/common/ai/utils/tool_metrics.py | 63 +
.../providers/common/ai/utils/toolset_base.py | 234 +++
.../providers/common/ai/utils/usage_budget.py | 214 +++
.../common/ai/tests/system/common/ai/README.md | 37 +-
.../common/ai/example_sandbox_toolset_modal.py | 138 +-
.../ai/example_sandbox_toolset_opensandbox.py | 142 ++
.../common/ai/tests/unit/common/ai/conftest.py | 34 +
.../tests/unit/common/ai/decorators/test_agent.py | 9 +-
.../unit/common/ai/durable/test_caching_model.py | 252 +++-
.../unit/common/ai/durable/test_caching_toolset.py | 36 +-
.../unit/common/ai/durable/test_replay_cost.py | 171 ++-
.../unit/common/ai/durable/test_replay_usage.py | 114 ++
.../tests/unit/common/ai/durable/test_storage.py | 9 +
.../common/ai/durable/test_task_state_store.py | 22 +-
.../tests/unit/common/ai/operators/test_agent.py | 1557 +++++++++++++++++++-
.../ai/operators/test_agent_tool_approval.py | 599 ++++++++
.../ai/tests/unit/common/ai/sandbox/fake_modal.py | 17 +
.../ai/tests/unit/common/ai/sandbox/fake_tags.py | 63 +
.../ai/tests/unit/common/ai/sandbox/test_base.py | 173 +++
.../ai/tests/unit/common/ai/sandbox/test_modal.py | 207 ++-
.../unit/common/ai/sandbox/test_opensandbox.py | 734 +++++++++
.../ai/tests/unit/common/ai/sandbox/test_sbx.py | 6 +
.../ai/tests/unit/common/ai/tools}/__init__.py | 0
.../unit/common/ai/tools/test__from_toolset.py | 344 +++++
.../ai/tests/unit/common/ai/tools/test_adk.py | 157 ++
.../ai/tests/unit/common/ai/tools/test_strands.py | 207 +++
.../ai/tests/unit/common/ai/tools/test_tools.py | 145 ++
.../ai/tests/unit/common/ai/tools/test_tracing.py | 230 +++
.../unit/common/ai/toolsets/test_datafusion.py | 16 +-
.../ai/tests/unit/common/ai/toolsets/test_hook.py | 167 ++-
.../common/ai/toolsets/test_langchain_bridge.py | 58 +-
.../tests/unit/common/ai/toolsets/test_logging.py | 18 +
.../ai/tests/unit/common/ai/toolsets/test_mcp.py | 8 +
.../unit/common/ai/toolsets/test_object_storage.py | 416 ++++++
.../tests/unit/common/ai/toolsets/test_sandbox.py | 533 ++++++-
.../ai/tests/unit/common/ai/toolsets/test_sql.py | 54 +
.../tests/unit/common/ai/utils/test_coroutines.py} | 23 +-
.../unit/common/ai/utils/test_file_analysis.py | 27 +-
.../ai/tests/unit/common/ai/utils/test_logging.py | 77 +
.../ai/tests/unit/common/ai/utils/test_masking.py | 117 ++
.../unit/common/ai/utils/test_query_results.py | 9 +
.../unit/common/ai/utils/test_tool_definition.py | 21 +-
.../unit/common/ai/utils/test_tool_metrics.py | 179 +++
.../unit/common/ai/utils/test_toolset_base.py | 281 ++++
.../unit/common/ai/utils/test_usage_budget.py | 242 +++
providers/common/sql/docs/index.rst | 2 +-
providers/common/sql/pyproject.toml | 2 +-
providers/duckdb/docs/operators.rst | 6 +
.../src/airflow/providers/duckdb/hooks/duckdb.py | 6 +-
.../airflow/providers/duckdb/operators/duckdb.py | 48 +-
.../tests/unit/duckdb/operators/test_duckdb.py | 33 +-
providers/exasol/docs/index.rst | 8 +-
providers/exasol/pyproject.toml | 2 +-
.../fab/src/airflow/providers/fab/www/package.json | 2 +-
.../src/airflow/providers/fab/www/pnpm-lock.yaml | 10 +-
.../fab/src/airflow/providers/fab/www/views.py | 6 +-
providers/fab/tests/unit/fab/www/test_views.py | 21 +-
.../git/src/airflow/providers/git/hooks/git.py | 31 +-
providers/git/tests/unit/git/hooks/test_git.py | 19 +
providers/google/README.rst | 8 +-
providers/google/pyproject.toml | 8 +-
providers/hashicorp/pyproject.toml | 2 +-
providers/jdbc/docs/index.rst | 2 +-
providers/jdbc/pyproject.toml | 2 +-
{airflow-core => providers/modal}/.gitignore | 0
{chart => providers/modal}/LICENSE | 0
NOTICE => providers/modal/NOTICE | 0
providers/modal/README.rst | 65 +
providers/modal/docs/.latest-doc-only-change.txt | 1 +
.../logging.rst => modal/docs/changelog.rst} | 25 +-
.../logging.rst => modal/docs/commits.rst} | 26 +-
.../dag_sources.py => providers/modal/docs/conf.py | 17 +-
providers/modal/docs/connections.rst | 85 ++
providers/modal/docs/index.rst | 131 ++
.../docs/installing-providers-from-sources.rst | 0
providers/modal/docs/integration-logos/Modal.png | Bin 0 -> 10357 bytes
providers/{anthropic => modal}/docs/security.rst | 0
providers/modal/docs/usage.rst | 158 ++
providers/modal/provider.yaml | 74 +
providers/{hashicorp => modal}/pyproject.toml | 32 +-
.../modal/src/airflow}/__init__.py | 0
.../modal/src/airflow/providers}/__init__.py | 0
.../src/airflow/providers/modal/__init__.py} | 31 +-
.../src/airflow/providers/modal/exceptions.py | 19 +-
.../airflow/providers/modal/get_provider_info.py | 61 +
.../src/airflow/providers/modal/hooks}/__init__.py | 0
.../src/airflow/providers/modal/hooks/modal.py | 279 ++++
providers/{airbyte => modal}/tests/conftest.py | 0
.../modal/tests/unit}/__init__.py | 0
.../modal/tests/unit/modal}/__init__.py | 0
.../modal/tests/unit/modal/hooks}/__init__.py | 0
.../modal/tests/unit/modal/hooks/test_modal.py | 372 +++++
.../modal/tests/unit/modal/test_exceptions.py | 17 +-
providers/openai/docs/changelog.rst | 19 +
.../src/airflow/providers/openai/exceptions.py | 11 +
.../src/airflow/providers/openai/hooks/openai.py | 50 +-
.../airflow/providers/openai/operators/openai.py | 63 +-
.../airflow/providers/openai/triggers/openai.py | 19 +-
.../openai/tests/unit/openai/hooks/test_openai.py | 36 +
.../tests/unit/openai/operators/test_openai.py | 114 +-
.../openai/tests/unit/openai/test_exceptions.py | 15 +-
.../tests/unit/openai/triggers/test_openai.py | 47 +-
providers/openlineage/docs/index.rst | 8 +-
providers/openlineage/pyproject.toml | 2 +-
providers/postgres/docs/index.rst | 2 +-
providers/postgres/pyproject.toml | 2 +-
providers/presto/docs/index.rst | 2 +-
providers/presto/pyproject.toml | 2 +-
providers/standard/docs/changelog.rst | 2 +-
providers/teradata/docs/index.rst | 2 +-
providers/teradata/pyproject.toml | 2 +-
providers/vertica/docs/index.rst | 8 +-
providers/vertica/pyproject.toml | 2 +-
providers/ydb/docs/index.rst | 8 +-
providers/ydb/pyproject.toml | 2 +-
pyproject.toml | 12 +-
scripts/ci/analyze_ci_job_durations.py | 24 +-
scripts/ci/docker-compose/backend-mysql.yml | 6 +
scripts/ci/docker-compose/backend-postgres.yml | 10 +-
scripts/ci/docker-compose/base.yml | 9 +
.../ci/docker-compose/integration-cassandra.yml | 5 +
scripts/ci/docker-compose/integration-celery.yml | 8 +
scripts/ci/docker-compose/integration-drill.yml | 5 +
.../docker-compose/integration-elasticsearch.yml | 5 +
scripts/ci/docker-compose/integration-kafka.yml | 2 +
scripts/ci/docker-compose/integration-kerberos.yml | 7 +
scripts/ci/docker-compose/integration-keycloak.yml | 2 +
.../ci/docker-compose/integration-localstack.yml | 2 +
scripts/ci/docker-compose/integration-mongo.yml | 5 +
scripts/ci/docker-compose/integration-mssql.yml | 5 +
.../ci/docker-compose/integration-openlineage.yml | 5 +
.../ci/docker-compose/integration-opensearch.yml | 5 +
scripts/ci/docker-compose/integration-otel.yml | 11 +
scripts/ci/docker-compose/integration-pinot.yml | 2 +
scripts/ci/docker-compose/integration-qdrant.yml | 2 +
scripts/ci/docker-compose/integration-redis.yml | 7 +
scripts/ci/docker-compose/integration-statsd.yml | 8 +
.../ci/docker-compose/integration-tinkerpop.yml | 5 +
scripts/ci/docker-compose/integration-trino.yml | 5 +
scripts/ci/docker-compose/integration-ydb.yml | 2 +
scripts/ci/docker-compose/local-all-sources.yml | 6 +
scripts/ci/docker-compose/local.yml | 6 +
scripts/ci/docker-compose/remove-sources.yml | 1 +
scripts/ci/docker-compose/tests-sources.yml | 1 +
scripts/ci/prek/changelog_duplicates.py | 11 +-
scripts/ci/prek/check_imports_in_providers.py | 2 +-
scripts/ci/prek/check_provider_conn_fields.py | 123 +-
scripts/ci/prek/ruff_format.py | 2 +-
.../in_container/run_provider_yaml_files_check.py | 73 +-
scripts/tests/ci/prek/test_changelog_duplicates.py | 36 +-
.../test_check_ui_field_behaviour_matches_hook.py | 130 ++
scripts/tests/ci/test_analyze_ci_job_durations.py | 46 +
.../_shared => scripts/tests/tools}/__init__.py | 0
scripts/tests/tools/test_free_up_disk_space.py | 98 ++
scripts/tools/free_up_disk_space.sh | 25 +-
scripts/tools/setup_breeze | 2 +-
.../observability/metrics/metrics_template.yaml | 13 +-
.../src/airflow/sdk/api/datamodels/_generated.py | 2 +-
task-sdk/src/airflow/sdk/bases/operator.py | 69 +-
.../sdk/coordinators/node/_bundle_reader.py | 210 ++-
.../src/airflow/sdk/execution_time/task_runner.py | 8 +-
task-sdk/src/airflow/sdk/importers/base.py | 109 +-
.../src/airflow/sdk/importers/python_importer.py | 10 +-
task-sdk/tests/task_sdk/bases/test_operator.py | 171 +++
.../coordinators/node/_bundle_test_utils.py | 55 +-
.../coordinators/node/test_bundle_reader.py | 125 +-
.../task_sdk/execution_time/test_task_runner.py | 24 +
task-sdk/tests/task_sdk/importers/test_registry.py | 139 ++
ts-sdk/adr/0002-native-dag-interface.md | 58 +-
ts-sdk/src/cli/bundle-encoder.ts | 181 ++-
ts-sdk/src/cli/pack.ts | 144 +-
ts-sdk/src/coordinator/manifest.ts | 24 +-
ts-sdk/src/index.ts | 1 -
ts-sdk/src/sdk/bundle.ts | 7 +
ts-sdk/src/sdk/dag.ts | 411 ++++--
ts-sdk/src/sdk/module-source.ts | 74 +
ts-sdk/tests/cli/fixtures/bundle-v1.min.mjs | 6 +-
ts-sdk/tests/cli/pack.test.ts | 391 ++++-
ts-sdk/tests/coordinator/runtime-manifest.test.ts | 26 +
ts-sdk/tests/public-api.test.ts | 93 +-
ts-sdk/tests/sdk/dag.test.ts | 374 +++--
uv.lock | 1240 ++++++++++------
532 files changed, 29717 insertions(+), 4655 deletions(-)
delete mode 100644 .apache-magpie-overrides/committer-onboarding-config.md
delete mode 100644 .apache-magpie-overrides/committer-readiness.md
delete mode 100644 .apache-magpie-overrides/contributor-nomination-config.md
delete mode 100644 .apache-magpie-overrides/contributor-sentiment-config.md
delete mode 100644 .apache-magpie-overrides/good-first-issue-config.md
delete mode 100644 .apache-magpie-overrides/onboarding-concierge-config.md
create mode 100644 airflow-core/adr/lang-sdk/0010-native-dag-processing.md
create mode 100644
airflow-core/adr/lang-sdk/0011-mixed-language-dag-processing.md
create mode 100644 airflow-core/adr/lang-sdk/0012-lang-sdk-parse-protocol.md
create mode 100644
airflow-core/adr/lang-sdk/0013-persisted-task-handler-bindings.md
create mode 100644
airflow-core/adr/lang-sdk/0014-bundle-metadata-and-cache-digest.md
create mode 100644
airflow-core/src/airflow/api_fastapi/common/parameters/job.py
copy providers/openai/src/airflow/providers/openai/exceptions.py =>
airflow-core/src/airflow/migrations/versions/0139_3_4_0_add_source_reference_to_import_error.py
(51%)
copy providers/openai/src/airflow/providers/openai/exceptions.py =>
airflow-core/src/airflow/migrations/versions/0140_3_4_0_add_language_to_dag_code.py
(51%)
create mode 100644
airflow-core/src/airflow/ui/src/pages/TaskInstance/Details.test.tsx
create mode 100644
airflow-core/src/airflow/ui/src/pages/TaskInstance/stateReason.ts
create mode 100644 airflow-core/tests/unit/models/test_errors.py
create mode 100644 go-sdk/airflow/dag.go
create mode 100644 go-sdk/airflow/dag_test.go
create mode 100644 go-sdk/airflow/spec.go
create mode 100644 go-sdk/airflow/task_option.go
create mode 100644 go-sdk/airflow/testdata/foreigntaskoption/main.go
create mode 100644 providers/amazon/docs/operators/duckdb.rst
create mode 100644
providers/amazon/src/airflow/providers/amazon/aws/hooks/duckdb.py
create mode 100644
providers/amazon/src/airflow/providers/amazon/aws/queues/kinesis.py
create mode 100644 providers/amazon/tests/system/amazon/aws/example_duckdb.py
create mode 100644
providers/amazon/tests/system/amazon/aws/example_emr_serverless_session.py
create mode 100644
providers/amazon/tests/system/amazon/aws/example_kinesis_message_queue.py
create mode 100644 providers/amazon/tests/unit/amazon/aws/hooks/test_duckdb.py
create mode 100644
providers/amazon/tests/unit/amazon/aws/operators/test_emr_serverless_session.py
create mode 100644
providers/amazon/tests/unit/amazon/aws/queues/test_kinesis.py
create mode 100644 providers/common/ai/docs/connections/index.rst
create mode 100644 providers/common/ai/docs/frameworks/adk.rst
create mode 100644 providers/common/ai/docs/frameworks/index.rst
create mode 100644 providers/common/ai/docs/frameworks/pydantic_ai.rst
create mode 100644 providers/common/ai/docs/frameworks/strands.rst
create mode 100644 providers/common/ai/docs/stability.rst
create mode 100644 providers/common/ai/docs/tool_approval.rst
create mode 100644 providers/common/ai/docs/toolsets/object_storage.rst
create mode 100644
providers/common/ai/src/airflow/providers/common/ai/durable/replay_usage.py
create mode 100644
providers/common/ai/src/airflow/providers/common/ai/example_dags/example_adk_agent.py
create mode 100644
providers/common/ai/src/airflow/providers/common/ai/example_dags/example_agent_tool_approval.py
create mode 100644
providers/common/ai/src/airflow/providers/common/ai/example_dags/example_object_storage_toolset.py
create mode 100644
providers/common/ai/src/airflow/providers/common/ai/example_dags/example_pydantic_ai_agent.py
create mode 100644
providers/common/ai/src/airflow/providers/common/ai/example_dags/example_strands_agent.py
create mode 100644
providers/common/ai/src/airflow/providers/common/ai/sandbox/opensandbox.py
create mode 100644
providers/common/ai/src/airflow/providers/common/ai/tools/__init__.py
create mode 100644
providers/common/ai/src/airflow/providers/common/ai/tools/_from_toolset.py
create mode 100644
providers/common/ai/src/airflow/providers/common/ai/tools/adk.py
create mode 100644
providers/common/ai/src/airflow/providers/common/ai/tools/strands.py
create mode 100644
providers/common/ai/src/airflow/providers/common/ai/tools/tracing.py
create mode 100644
providers/common/ai/src/airflow/providers/common/ai/toolsets/object_storage.py
copy airflow-core/src/airflow/api_fastapi/core_api/datamodels/dag_warning.py
=> providers/common/ai/src/airflow/providers/common/ai/utils/coroutines.py (50%)
create mode 100644
providers/common/ai/src/airflow/providers/common/ai/utils/masking.py
create mode 100644
providers/common/ai/src/airflow/providers/common/ai/utils/tool_metrics.py
create mode 100644
providers/common/ai/src/airflow/providers/common/ai/utils/toolset_base.py
create mode 100644
providers/common/ai/src/airflow/providers/common/ai/utils/usage_budget.py
create mode 100644
providers/common/ai/tests/system/common/ai/example_sandbox_toolset_opensandbox.py
create mode 100644
providers/common/ai/tests/unit/common/ai/durable/test_replay_usage.py
create mode 100644
providers/common/ai/tests/unit/common/ai/operators/test_agent_tool_approval.py
create mode 100644
providers/common/ai/tests/unit/common/ai/sandbox/fake_tags.py
create mode 100644
providers/common/ai/tests/unit/common/ai/sandbox/test_opensandbox.py
copy {airflow-core/src/airflow/_shared =>
providers/common/ai/tests/unit/common/ai/tools}/__init__.py (100%)
create mode 100644
providers/common/ai/tests/unit/common/ai/tools/test__from_toolset.py
create mode 100644 providers/common/ai/tests/unit/common/ai/tools/test_adk.py
create mode 100644
providers/common/ai/tests/unit/common/ai/tools/test_strands.py
create mode 100644 providers/common/ai/tests/unit/common/ai/tools/test_tools.py
create mode 100644
providers/common/ai/tests/unit/common/ai/tools/test_tracing.py
create mode 100644
providers/common/ai/tests/unit/common/ai/toolsets/test_object_storage.py
copy providers/{openai/src/airflow/providers/openai/exceptions.py =>
common/ai/tests/unit/common/ai/utils/test_coroutines.py} (57%)
create mode 100644
providers/common/ai/tests/unit/common/ai/utils/test_masking.py
create mode 100644
providers/common/ai/tests/unit/common/ai/utils/test_tool_metrics.py
create mode 100644
providers/common/ai/tests/unit/common/ai/utils/test_toolset_base.py
create mode 100644
providers/common/ai/tests/unit/common/ai/utils/test_usage_budget.py
copy {airflow-core => providers/modal}/.gitignore (100%)
copy {chart => providers/modal}/LICENSE (100%)
copy NOTICE => providers/modal/NOTICE (100%)
create mode 100644 providers/modal/README.rst
create mode 100644 providers/modal/docs/.latest-doc-only-change.txt
copy providers/{common/ai/docs/toolsets/logging.rst =>
modal/docs/changelog.rst} (50%)
copy providers/{common/ai/docs/toolsets/logging.rst => modal/docs/commits.rst}
(50%)
copy airflow-core/src/airflow/api_fastapi/core_api/datamodels/dag_sources.py
=> providers/modal/docs/conf.py (70%)
create mode 100644 providers/modal/docs/connections.rst
create mode 100644 providers/modal/docs/index.rst
copy providers/{airbyte => modal}/docs/installing-providers-from-sources.rst
(100%)
create mode 100644 providers/modal/docs/integration-logos/Modal.png
copy providers/{anthropic => modal}/docs/security.rst (100%)
create mode 100644 providers/modal/docs/usage.rst
create mode 100644 providers/modal/provider.yaml
copy providers/{hashicorp => modal}/pyproject.toml (83%)
copy {airflow-core/tests/integration =>
providers/modal/src/airflow}/__init__.py (100%)
copy {airflow-core/tests/integration =>
providers/modal/src/airflow/providers}/__init__.py (100%)
copy providers/{openai/src/airflow/providers/openai/exceptions.py =>
modal/src/airflow/providers/modal/__init__.py} (55%)
copy airflow-core/src/airflow/api_fastapi/core_api/datamodels/dag_sources.py
=> providers/modal/src/airflow/providers/modal/exceptions.py (62%)
create mode 100644
providers/modal/src/airflow/providers/modal/get_provider_info.py
copy {airflow-core/src/airflow/_shared =>
providers/modal/src/airflow/providers/modal/hooks}/__init__.py (100%)
create mode 100644 providers/modal/src/airflow/providers/modal/hooks/modal.py
copy providers/{airbyte => modal}/tests/conftest.py (100%)
copy {airflow-core/tests/integration =>
providers/modal/tests/unit}/__init__.py (100%)
copy {airflow-core/src/airflow/_shared =>
providers/modal/tests/unit/modal}/__init__.py (100%)
copy {airflow-core/src/airflow/_shared =>
providers/modal/tests/unit/modal/hooks}/__init__.py (100%)
create mode 100644 providers/modal/tests/unit/modal/hooks/test_modal.py
copy airflow-core/src/airflow/api_fastapi/core_api/datamodels/dag_sources.py
=> providers/modal/tests/unit/modal/test_exceptions.py (61%)
create mode 100644
scripts/tests/ci/prek/test_check_ui_field_behaviour_matches_hook.py
copy {airflow-core/src/airflow/_shared => scripts/tests/tools}/__init__.py
(100%)
create mode 100644 scripts/tests/tools/test_free_up_disk_space.py
create mode 100644 ts-sdk/src/sdk/module-source.ts