This is an automated email from the ASF dual-hosted git repository.
jason810496 pushed a change to branch
jason/lang-sdk-e2e/02b-shared-dag-cycle-detection
in repository https://gitbox.apache.org/repos/asf/airflow.git
discard e14a5841015 Share Dag cycle detection between the Task SDK and core
discard 57c9a34141c Harden claimed-file discovery errors and archive importers
discard 53a4447965d Tidy the importer routing helpers and their tests
discard b01e97995a2 Keep claimed files queued when their importer cannot list
them
discard f48fbb795a6 Claim Dag files by extension and keep .py, .pyc and .zip
legacy
discard a9af8a9b209 Read a claimed file's Dag source through its importer
discard f8ac157c155 Queue and track files that a Task SDK importer claims
discard 0fdb0f9da61 Parse files that a Task SDK importer claims
add 8e36d6d6efd Show whether a calendar day's run was a backfill (#72782)
add 6317c63ae16 Go SDK: generate DagSpec and TaskSpec from the
serialization schema (#73936)
add f306f1848f6 Refresh HITL review details on task clear (#73235)
add 4fd2c9aabf2 Mark lineage hashes as non-security (#70999)
add f7a27633741 Fix typo in apache-airflow-providers-fab error message
(#73956)
add 8d4ab8a94db Keep OpenAPI error responses in sync with the statuses
routes raise (#71647)
add 0b6c38502ab Add runtime DagRun note updates (#69403)
add ba89738639c Fix short-circuit not skipping already expanded mapped
tasks (#73960)
add 16f974f6a35 Run the `common.ai` agent framework adapter tests in CI
(#73912)
add e364ee76483 Keep agent framework spans when worker tracing is off
(#73903)
add 2e803e58997 Add key-pair JWT authentication to Snowflake Cortex Agent
hook (#73815)
add e92147c12aa UI: Add a time-window scope to the Dags list run state
filter (#70470)
add 63a5966473b Check PyPI history before a new provider's first release
(#73887)
add ede78e095b6 Add embedding kwargs to common AI hooks and operators
(#72002)
add 64943ba6dbb Fix `run_duration` calculation in airflow dags test by
decoupling start_date (#68837)
add 9e67831f2bb Allow filtering the Dag runs list by Dag tags (#70861)
add e22c9d02b2e Add Has Events filter to Assets search (#72460)
add f31b572df18 Fix airflowctl commands crashing instead of printing their
result (#72675)
add 1559dae90ab UI: Use TeamName component for all team name displays
(#73910)
add 489316fbc72 Migrate execution API reads to async sessions (#73403)
add a8e95debbc6 Fix flaky AgentOperator durable usage budget tests (#73996)
add e33e45fe67a Add `AssetAndTimeSchedule` timetable (#58543)
add a91216d5ea9 TS SDK: serialize a native Dag to Dag JSON (#73441)
add 884e687ea77 Fix short-circuit inside a mapped task group not skipping
downstream (#73959)
add 3f19c146545 Go SDK: declare data edges with airflow.Inputs (#73895)
add 13adb691464 Close German Translation Gaps 2026-09-30 (#73980)
add d886882ac14 Let Common AI toolsets use the agent's tool retry budget
(#73957)
add 35633455ed7 Add first-class `capabilities` to Common AI
`AgentOperator` (#73984)
add adaa16f88af Parse Dag files through the Task SDK importers (#73853)
add 12127b07978 Fix check-conn-id-templated crashing on a vanishing
__pycache__ (#74016)
add 4d304d0876c Export files an agent built in a sandbox to object storage
(#73990)
add 0616bc80130 Queue the Dag files of non-Python Dag importers
add a5d284bbc50 Skip the Python-only parse checks for non-Python Dag files
add 7caeacbafe7 Share Dag cycle detection between the Task SDK and core
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 (e14a5841015)
\
N -- N -- N
refs/heads/jason/lang-sdk-e2e/02b-shared-dag-cycle-detection (7caeacbafe7)
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:
...-image-checks.yml => agent-framework-tests.yml} | 68 +-
.github/workflows/ci-amd.yml | 19 +
.github/workflows/ci-arm.yml | 19 +
.pre-commit-config.yaml | 32 +
airflow-core/.pre-commit-config.yaml | 6 +
.../authoring-and-scheduling/asset-scheduling.rst | 31 +-
.../language-sdks/typescript.rst | 23 +
.../docs/authoring-and-scheduling/timetable.rst | 25 +-
airflow-core/docs/migrations-ref.rst | 4 +-
airflow-core/docs/public-airflow-interface.rst | 5 +-
airflow-core/newsfragments/58543.feature.rst | 1 +
.../api_fastapi/common/parameters/__init__.py | 3 +
.../airflow/api_fastapi/common/parameters/asset.py | 23 +
.../airflow/api_fastapi/common/parameters/dag.py | 46 ++
.../api_fastapi/common/parameters/dag_run.py | 35 +-
.../api_fastapi/core_api/datamodels/ui/calendar.py | 1 +
.../api_fastapi/core_api/openapi/_private_ui.yaml | 46 ++
.../core_api/openapi/v2-rest-api-generated.yaml | 37 +
.../core_api/routes/public/connections.py | 6 +-
.../api_fastapi/core_api/routes/public/dag_run.py | 6 +-
.../api_fastapi/core_api/routes/public/hitl.py | 17 +-
.../api_fastapi/core_api/routes/public/log.py | 2 +-
.../core_api/routes/public/variables.py | 2 +-
.../api_fastapi/core_api/routes/ui/assets.py | 5 +
.../core_api/routes/ui/partitioned_dag_runs.py | 1 +
.../api_fastapi/core_api/routes/ui/teams.py | 2 +
.../core_api/services/public/dag_run.py | 17 +-
.../api_fastapi/core_api/services/ui/calendar.py | 10 +-
.../execution_api/datamodels/taskinstance.py | 6 +
.../execution_api/routes/asset_events.py | 8 +-
.../api_fastapi/execution_api/routes/assets.py | 14 +-
.../api_fastapi/execution_api/routes/dag_runs.py | 18 +-
.../api_fastapi/execution_api/routes/hitl.py | 74 +-
.../execution_api/routes/task_instances.py | 96 ++-
.../execution_api/routes/task_reschedules.py | 6 +-
.../api_fastapi/execution_api/routes/xcoms.py | 12 +
.../api_fastapi/execution_api/versions/__init__.py | 2 +
.../execution_api/versions/v2026_10_30.py | 10 +
.../src/airflow/config_templates/config.yml | 37 +
.../src/airflow/dag_processing/collection.py | 21 +-
airflow-core/src/airflow/dag_processing/dagbag.py | 330 +++-----
.../src/airflow/dag_processing/importer_routing.py | 292 ++-----
.../airflow/dag_processing/importers/__init__.py | 39 -
.../src/airflow/dag_processing/importers/base.py | 266 -------
.../dag_processing/importers/python_importer.py | 360 ---------
airflow-core/src/airflow/dag_processing/manager.py | 34 +-
.../src/airflow/dag_processing/processor.py | 15 +-
.../src/airflow/jobs/scheduler_job_runner.py | 207 +++--
...3_4_0_add_timetable_asset_gated_to_dagmodel.py} | 29 +-
airflow-core/src/airflow/models/dag.py | 32 +-
airflow-core/src/airflow/models/dagcode.py | 67 +-
airflow-core/src/airflow/models/dagrun.py | 2 +-
airflow-core/src/airflow/models/serialized_dag.py | 15 +-
airflow-core/src/airflow/serialization/encoders.py | 9 +
.../ti_deps/deps/not_previously_skipped_dep.py | 6 +-
airflow-core/src/airflow/timetables/assets.py | 112 ++-
airflow-core/src/airflow/timetables/base.py | 16 +
airflow-core/src/airflow/timetables/simple.py | 1 +
.../src/airflow/ui/openapi-gen/queries/common.ts | 16 +-
.../ui/openapi-gen/queries/ensureQueryData.ts | 20 +-
.../src/airflow/ui/openapi-gen/queries/prefetch.ts | 20 +-
.../src/airflow/ui/openapi-gen/queries/queries.ts | 20 +-
.../src/airflow/ui/openapi-gen/queries/suspense.ts | 20 +-
.../airflow/ui/openapi-gen/requests/schemas.gen.ts | 5 +
.../ui/openapi-gen/requests/services.gen.ts | 14 +
.../airflow/ui/openapi-gen/requests/types.gen.ts | 35 +
.../airflow/ui/public/i18n/locales/ar/dags.json | 2 -
.../airflow/ui/public/i18n/locales/ca/dags.json | 4 -
.../airflow/ui/public/i18n/locales/de/browse.json | 30 +
.../airflow/ui/public/i18n/locales/de/common.json | 26 +
.../ui/public/i18n/locales/de/components.json | 5 +
.../src/airflow/ui/public/i18n/locales/de/dag.json | 5 +
.../airflow/ui/public/i18n/locales/de/dags.json | 24 +-
.../ui/public/i18n/locales/de/dashboard.json | 17 +-
.../airflow/ui/public/i18n/locales/el/dags.json | 2 -
.../airflow/ui/public/i18n/locales/en/assets.json | 1 +
.../airflow/ui/public/i18n/locales/en/common.json | 9 +-
.../src/airflow/ui/public/i18n/locales/en/dag.json | 1 +
.../airflow/ui/public/i18n/locales/en/dags.json | 6 +-
.../airflow/ui/public/i18n/locales/es/dags.json | 4 -
.../airflow/ui/public/i18n/locales/fr/dags.json | 2 -
.../airflow/ui/public/i18n/locales/he/dags.json | 2 -
.../airflow/ui/public/i18n/locales/hi/dags.json | 2 -
.../airflow/ui/public/i18n/locales/ko/dags.json | 4 -
.../airflow/ui/public/i18n/locales/pl/dags.json | 4 -
.../airflow/ui/public/i18n/locales/ru/dags.json | 2 -
.../airflow/ui/public/i18n/locales/zh-CN/dags.json | 4 -
.../airflow/ui/public/i18n/locales/zh-TW/dags.json | 4 -
.../FilterBar/filters/RunStateFilter.tsx | 234 ++++++
.../FilterBar/filters/runStateParams.test.ts | 95 +++
.../components/FilterBar/filters/runStateParams.ts | 76 ++
.../airflow/ui/src/components/FilterBar/types.ts | 14 +-
.../src/airflow/ui/src/constants/filterConfigs.tsx | 38 +-
.../src/airflow/ui/src/constants/searchParams.ts | 3 +
.../src/airflow/ui/src/mocks/handlers/dag_runs.ts | 49 +-
.../src/airflow/ui/src/mocks/handlers/dags.ts | 10 +
.../ui/src/pages/AssetsList/AssetsList.test.tsx | 28 +
.../airflow/ui/src/pages/AssetsList/AssetsList.tsx | 11 +
.../ui/src/pages/Connections/Connections.tsx | 4 +
.../ui/src/pages/Dag/Calendar/CalendarCell.tsx | 31 +-
.../ui/src/pages/Dag/Calendar/CalendarLegend.tsx | 11 +
.../ui/src/pages/Dag/Calendar/CalendarTooltip.tsx | 14 +-
.../src/pages/Dag/Calendar/HourlyCalendarView.tsx | 10 +-
.../src/pages/Dag/Calendar/calendarUtils.test.ts | 22 +
.../ui/src/pages/Dag/Calendar/calendarUtils.ts | 4 +
.../src/airflow/ui/src/pages/Dag/Calendar/types.ts | 1 +
.../airflow/ui/src/pages/DagRuns/DagRuns.test.tsx | 27 +
.../src/airflow/ui/src/pages/DagRuns/DagRuns.tsx | 6 +
.../ui/src/pages/DagRuns/DagRunsFilters.tsx | 1 +
.../src/pages/DagsList/DagsFilters/DagsFilters.tsx | 3 +-
.../ui/src/pages/DagsList/DagsList.test.tsx | 41 +-
.../src/airflow/ui/src/pages/DagsList/DagsList.tsx | 5 +
.../src/airflow/ui/src/pages/Events/Events.tsx | 4 +
airflow-core/src/airflow/ui/src/pages/Jobs.tsx | 11 +-
.../src/airflow/ui/src/pages/Pools/PoolBarCard.tsx | 12 +-
.../airflow/ui/src/pages/Variables/Variables.tsx | 4 +
.../src/airflow/ui/src/queries/useDags.tsx | 3 +
.../ui/src/utils/useFiltersHandler.test.tsx | 63 ++
.../src/airflow/ui/src/utils/useFiltersHandler.ts | 22 +-
.../src/airflow/ui/tests/e2e/pages/DagsPage.ts | 18 +-
airflow-core/src/airflow/utils/db.py | 4 +-
airflow-core/src/airflow/utils/file.py | 10 +
.../core_api/routes/public/test_dag_run.py | 56 +-
.../core_api/routes/public/test_hitl.py | 28 +
.../api_fastapi/core_api/routes/ui/test_assets.py | 23 +
.../core_api/routes/ui/test_calendar.py | 239 +++++-
.../api_fastapi/core_api/routes/ui/test_dags.py | 43 ++
.../execution_api/versions/head/test_hitl.py | 36 +-
.../versions/head/test_task_instances.py | 162 ++++
.../{test_callbacks.py => test_dag_run_notes.py} | 10 +-
.../tests/unit/dag_processing/fake_importers.py | 23 +-
.../unit/dag_processing/importers/test_registry.py | 99 ---
.../tests/unit/dag_processing/test_collection.py | 86 ++-
.../tests/unit/dag_processing/test_dagbag.py | 450 ++++-------
.../unit/dag_processing/test_importer_routing.py | 35 +-
.../tests/unit/dag_processing/test_manager.py | 37 +-
.../tests/unit/dag_processing/test_processor.py | 44 +-
airflow-core/tests/unit/jobs/test_scheduler_job.py | 566 +++++++++++++-
airflow-core/tests/unit/jobs/test_triggerer_job.py | 1 +
airflow-core/tests/unit/models/test_dag.py | 31 +
airflow-core/tests/unit/models/test_dagcode.py | 147 +---
.../deps/test_not_previously_skipped_dep.py | 44 ++
.../tests/unit/timetables/test_assets_timetable.py | 227 +++++-
airflow-ctl/src/airflowctl/ctl/cli_config.py | 12 +-
.../tests/airflow_ctl/ctl/test_cli_config.py | 34 +-
dev/README_RELEASE_PROVIDERS.md | 62 ++
dev/breeze/doc/ci/04_selective_checks.md | 1 +
dev/breeze/doc/ci/05_workflows.md | 26 +
.../src/airflow_breeze/utils/selective_checks.py | 18 +
dev/breeze/tests/test_selective_checks.py | 40 +
devel-common/src/tests_common/test_utils/config.py | 11 +-
generated/known_sdk_imports_in_core.txt | 7 +-
go-sdk/Justfile | 4 +
go-sdk/README.md | 27 +
go-sdk/airflow/dag.go | 57 +-
go-sdk/airflow/dag_test.go | 65 ++
go-sdk/airflow/inputs.go | 142 ++++
go-sdk/airflow/inputs_test.go | 392 ++++++++++
go-sdk/airflow/spec.gen.go | 169 ++++
go-sdk/airflow/spec.go | 115 ++-
go-sdk/airflow/spec_test.go | 71 ++
go-sdk/airflow/task_handler.go | 12 +-
go-sdk/airflow/task_option.go | 11 +-
go-sdk/internal/bundle/task.go | 28 +-
go-sdk/internal/genlicense/genlicense.go | 71 ++
go-sdk/internal/genlicense/genlicense_test.go | 83 ++
go-sdk/internal/genspec/authoring.go | 470 ++++++++++++
go-sdk/internal/genspec/authoring_test.go | 329 ++++++++
go-sdk/internal/genspec/main.go | 110 +++
.../main.go => internal/genspec/main_test.go} | 23 +-
go-sdk/internal/genspec/normalize.go | 176 +++++
go-sdk/internal/genspec/normalize_test.go | 256 +++++++
go-sdk/pkg/binding/binding.go | 56 +-
go-sdk/pkg/binding/binding_test.go | 27 +
go-sdk/pkg/execution/genmodels/gen/main.go | 49 +-
providers/common/ai/docs/capabilities.rst | 137 ++++
providers/common/ai/docs/code_mode.rst | 7 +-
providers/common/ai/docs/features.rst | 6 +-
providers/common/ai/docs/guardrails.rst | 66 --
providers/common/ai/docs/hooks/langchain.rst | 20 +-
providers/common/ai/docs/hooks/llamaindex.rst | 12 +
providers/common/ai/docs/operators/agent.rst | 10 +-
.../ai/docs/operators/llamaindex_embedding.rst | 26 +-
.../ai/docs/operators/llamaindex_retrieval.rst | 18 +-
providers/common/ai/docs/redirects.txt | 1 +
providers/common/ai/docs/sandbox/backends.rst | 11 +-
providers/common/ai/docs/sandbox/configuration.rst | 59 +-
providers/common/ai/docs/sandbox/index.rst | 5 +-
providers/common/ai/docs/stability.rst | 2 +-
providers/common/ai/docs/tool_approval.rst | 5 +-
providers/common/ai/docs/toolsets/datafusion.rst | 2 +
providers/common/ai/docs/toolsets/hook.rst | 3 +
providers/common/ai/docs/toolsets/index.rst | 42 +
.../common/ai/docs/toolsets/object_storage.rst | 3 +
providers/common/ai/docs/toolsets/sql.rst | 4 +-
.../ai/example_dags/example_agent_capabilities.py | 27 +-
.../ai/example_dags/example_sandbox_toolset.py | 70 +-
.../src/airflow/providers/common/ai/exceptions.py | 2 +-
.../airflow/providers/common/ai/hooks/langchain.py | 30 +-
.../providers/common/ai/hooks/llamaindex.py | 25 +-
.../airflow/providers/common/ai/operators/agent.py | 139 +++-
.../common/ai/operators/llamaindex_embedding.py | 13 +
.../common/ai/operators/llamaindex_retrieval.py | 14 +
.../airflow/providers/common/ai/sandbox/base.py | 167 +++-
.../providers/common/ai/sandbox/opensandbox.py | 71 +-
.../src/airflow/providers/common/ai/sandbox/sbx.py | 90 ++-
.../providers/common/ai/tools/_from_toolset.py | 18 +-
.../providers/common/ai/toolsets/datafusion.py | 10 +-
.../airflow/providers/common/ai/toolsets/hook.py | 11 +-
.../common/ai/toolsets/langchain_bridge.py | 5 +-
.../providers/common/ai/toolsets/managed_agent.py | 11 +-
.../providers/common/ai/toolsets/object_storage.py | 11 +-
.../providers/common/ai/toolsets/sandbox.py | 209 ++++-
.../airflow/providers/common/ai/toolsets/sql.py | 10 +-
.../providers/common/ai/utils/toolset_base.py | 19 +
.../tests/unit/common/ai/decorators/test_agent.py | 19 +
.../tests/unit/common/ai/hooks/test_langchain.py | 66 ++
.../tests/unit/common/ai/hooks/test_llamaindex.py | 72 ++
.../tests/unit/common/ai/operators/test_agent.py | 196 ++++-
.../ai/operators/test_llamaindex_embedding.py | 15 +-
.../ai/operators/test_llamaindex_retrieval.py | 15 +-
.../ai/tests/unit/common/ai/sandbox/test_base.py | 163 +++-
.../unit/common/ai/sandbox/test_opensandbox.py | 137 ++++
.../ai/tests/unit/common/ai/sandbox/test_sbx.py | 106 +++
.../unit/common/ai/tools/test__from_toolset.py | 33 +-
.../unit/common/ai/toolsets/test_retry_budget.py | 98 +++
.../tests/unit/common/ai/toolsets/test_sandbox.py | 356 +++++++++
.../snowflake/hooks/snowflake_cortex_agent.py | 42 +-
.../snowflake/hooks/test_snowflake_cortex_agent.py | 106 ++-
.../ci/lang_sdk_serialization}/__init__.py | 0
scripts/ci/lang_sdk_serialization/compare.py | 233 ++++++
.../ci/lang_sdk_serialization/serialize_python.py | 140 ++++
scripts/ci/lang_sdk_serialization/test_dags.yaml | 166 ++++
scripts/ci/prek/check_conn_id_templated.py | 18 +-
scripts/ci/prek/check_go_sdk_spec_drift.py | 140 ++++
.../ci/prek/check_openapi_exception_doc_in_sync.py | 239 ++++++
scripts/in_container/run_agent_framework_tests.sh | 90 +++
.../tests/ci/lang_sdk_serialization}/__init__.py | 0
.../ci/lang_sdk_serialization/test_compare.py | 245 ++++++
.../tests/ci/prek/test_check_conn_id_templated.py | 26 +-
.../tests/ci/prek/test_check_go_sdk_spec_drift.py | 133 ++++
.../test_check_openapi_exception_doc_in_sync.py | 335 ++++++++
task-sdk/docs/api.rst | 2 +
task-sdk/src/airflow/sdk/__init__.py | 3 +
task-sdk/src/airflow/sdk/__init__.pyi | 2 +
task-sdk/src/airflow/sdk/api/client.py | 12 +
.../src/airflow/sdk/api/datamodels/_generated.py | 15 +
task-sdk/src/airflow/sdk/bases/timetable.py | 7 +
task-sdk/src/airflow/sdk/definitions/dag.py | 4 +-
.../airflow/sdk/definitions/timetables/assets.py | 25 +
task-sdk/src/airflow/sdk/execution_time/comms.py | 7 +
.../airflow/sdk/execution_time/request_handlers.py | 9 +
.../airflow/sdk/execution_time/schema/schema.json | 65 ++
.../sdk/execution_time/schema/versions/__init__.py | 8 +-
.../execution_time/schema/versions/v2026_10_30.py | 21 +
.../src/airflow/sdk/execution_time/supervisor.py | 8 +
.../src/airflow/sdk/execution_time/task_runner.py | 24 +
task-sdk/src/airflow/sdk/importers/base.py | 11 +-
.../src/airflow/sdk/importers/python_importer.py | 2 +-
task-sdk/src/airflow/sdk/importers/zip_importer.py | 2 +-
task-sdk/src/airflow/sdk/lineage.py | 2 +-
task-sdk/src/airflow/sdk/types.py | 2 +
task-sdk/tests/task_sdk/api/test_client.py | 15 +
task-sdk/tests/task_sdk/definitions/test_dag.py | 16 +-
.../task_sdk/execution_time/test_supervisor.py | 15 +
.../task_sdk/execution_time/test_task_runner.py | 159 ++--
ts-sdk/.pre-commit-config.yaml | 14 +
ts-sdk/package.json | 3 +-
ts-sdk/pnpm-lock.yaml | 27 +-
..._lint.py => check_serialization_conformance.py} | 16 +-
ts-sdk/src/coordinator/serde.ts | 751 ++++++++++++++++++
ts-sdk/src/generated/supervisor.ts | 68 +-
ts-sdk/src/sdk/dag.ts | 25 +-
ts-sdk/tests/conformance/serialize_typescript.ts | 163 ++++
ts-sdk/tests/coordinator/arg-binding.test.ts | 19 +
ts-sdk/tests/coordinator/serde.test.ts | 846 +++++++++++++++++++++
ts-sdk/tests/public-api.test.ts | 4 +
277 files changed, 13496 insertions(+), 2624 deletions(-)
copy .github/workflows/{additional-ci-image-checks.yml =>
agent-framework-tests.yml} (55%)
create mode 100644 airflow-core/newsfragments/58543.feature.rst
delete mode 100644
airflow-core/src/airflow/dag_processing/importers/__init__.py
delete mode 100644 airflow-core/src/airflow/dag_processing/importers/base.py
delete mode 100644
airflow-core/src/airflow/dag_processing/importers/python_importer.py
copy
airflow-core/src/airflow/migrations/versions/{0111_3_3_0_add_timetable_periodic_to_dag.py
=> 0141_3_4_0_add_timetable_asset_gated_to_dagmodel.py} (63%)
create mode 100644
airflow-core/src/airflow/ui/src/components/FilterBar/filters/RunStateFilter.tsx
create mode 100644
airflow-core/src/airflow/ui/src/components/FilterBar/filters/runStateParams.test.ts
create mode 100644
airflow-core/src/airflow/ui/src/components/FilterBar/filters/runStateParams.ts
copy
airflow-core/tests/unit/api_fastapi/execution_api/versions/v2026_10_30/{test_callbacks.py
=> test_dag_run_notes.py} (77%)
delete mode 100644
airflow-core/tests/unit/dag_processing/importers/test_registry.py
create mode 100644 go-sdk/airflow/inputs.go
create mode 100644 go-sdk/airflow/inputs_test.go
create mode 100644 go-sdk/airflow/spec.gen.go
create mode 100644 go-sdk/airflow/spec_test.go
create mode 100644 go-sdk/internal/genlicense/genlicense.go
create mode 100644 go-sdk/internal/genlicense/genlicense_test.go
create mode 100644 go-sdk/internal/genspec/authoring.go
create mode 100644 go-sdk/internal/genspec/authoring_test.go
create mode 100644 go-sdk/internal/genspec/main.go
copy go-sdk/{airflow/testdata/foreignitem/main.go =>
internal/genspec/main_test.go} (58%)
create mode 100644 go-sdk/internal/genspec/normalize.go
create mode 100644 go-sdk/internal/genspec/normalize_test.go
create mode 100644 providers/common/ai/docs/capabilities.rst
delete mode 100644 providers/common/ai/docs/guardrails.rst
create mode 100644
providers/common/ai/tests/unit/common/ai/toolsets/test_retry_budget.py
rename {airflow-core/tests/unit/dag_processing/importers =>
scripts/ci/lang_sdk_serialization}/__init__.py (100%)
create mode 100644 scripts/ci/lang_sdk_serialization/compare.py
create mode 100644 scripts/ci/lang_sdk_serialization/serialize_python.py
create mode 100644 scripts/ci/lang_sdk_serialization/test_dags.yaml
create mode 100755 scripts/ci/prek/check_go_sdk_spec_drift.py
create mode 100755 scripts/ci/prek/check_openapi_exception_doc_in_sync.py
create mode 100755 scripts/in_container/run_agent_framework_tests.sh
copy {airflow-core/src/airflow/_shared =>
scripts/tests/ci/lang_sdk_serialization}/__init__.py (100%)
create mode 100644 scripts/tests/ci/lang_sdk_serialization/test_compare.py
create mode 100644 scripts/tests/ci/prek/test_check_go_sdk_spec_drift.py
create mode 100644
scripts/tests/ci/prek/test_check_openapi_exception_doc_in_sync.py
copy ts-sdk/scripts/ci/prek/{ts_sdk_lint.py =>
check_serialization_conformance.py} (67%)
create mode 100644 ts-sdk/src/coordinator/serde.ts
create mode 100644 ts-sdk/tests/conformance/serialize_typescript.ts
create mode 100644 ts-sdk/tests/coordinator/serde.test.ts