airbyte-internal-ops 0.9.1__tar.gz → 0.10.0__tar.gz
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- {airbyte_internal_ops-0.9.1 → airbyte_internal_ops-0.10.0}/.github/workflows/pdoc_preview.yml +1 -1
- {airbyte_internal_ops-0.9.1 → airbyte_internal_ops-0.10.0}/.github/workflows/pdoc_publish.yml +1 -1
- {airbyte_internal_ops-0.9.1 → airbyte_internal_ops-0.10.0}/.github/workflows/semantic-pr-check.yml +2 -2
- {airbyte_internal_ops-0.9.1 → airbyte_internal_ops-0.10.0}/.github/workflows/sentry-apply-command.yml +2 -2
- {airbyte_internal_ops-0.9.1 → airbyte_internal_ops-0.10.0}/.github/workflows/sentry-preview.yml +2 -2
- {airbyte_internal_ops-0.9.1 → airbyte_internal_ops-0.10.0}/PKG-INFO +1 -1
- airbyte_internal_ops-0.10.0/docs/progressive-rollouts.md +464 -0
- airbyte_internal_ops-0.10.0/src/airbyte_ops_mcp/airbyte_repo/progressive_rollout.py +279 -0
- {airbyte_internal_ops-0.9.1 → airbyte_internal_ops-0.10.0}/src/airbyte_ops_mcp/cli/local.py +118 -0
- {airbyte_internal_ops-0.9.1 → airbyte_internal_ops-0.10.0}/src/airbyte_ops_mcp/cloud_admin/api_client.py +336 -0
- {airbyte_internal_ops-0.9.1 → airbyte_internal_ops-0.10.0}/src/airbyte_ops_mcp/cloud_admin/models.py +99 -0
- airbyte_internal_ops-0.10.0/src/airbyte_ops_mcp/mcp/connector_rollout.py +779 -0
- {airbyte_internal_ops-0.9.1 → airbyte_internal_ops-0.10.0}/src/airbyte_ops_mcp/mcp/prod_db_queries.py +227 -0
- {airbyte_internal_ops-0.9.1 → airbyte_internal_ops-0.10.0}/src/airbyte_ops_mcp/mcp/server.py +2 -0
- {airbyte_internal_ops-0.9.1 → airbyte_internal_ops-0.10.0}/src/airbyte_ops_mcp/prod_db_access/queries.py +144 -0
- {airbyte_internal_ops-0.9.1 → airbyte_internal_ops-0.10.0}/src/airbyte_ops_mcp/prod_db_access/sql.py +298 -0
- {airbyte_internal_ops-0.9.1 → airbyte_internal_ops-0.10.0}/.env.template +0 -0
- {airbyte_internal_ops-0.9.1 → airbyte_internal_ops-0.10.0}/.github/copilot-instructions.md +0 -0
- {airbyte_internal_ops-0.9.1 → airbyte_internal_ops-0.10.0}/.github/dependabot.yml +0 -0
- {airbyte_internal_ops-0.9.1 → airbyte_internal_ops-0.10.0}/.github/pr-welcome-message.md +0 -0
- {airbyte_internal_ops-0.9.1 → airbyte_internal_ops-0.10.0}/.github/workflows/autofix-command.yml +0 -0
- {airbyte_internal_ops-0.9.1 → airbyte_internal_ops-0.10.0}/.github/workflows/connector-regression-test.yml +0 -0
- {airbyte_internal_ops-0.9.1 → airbyte_internal_ops-0.10.0}/.github/workflows/format-check.yml +0 -0
- {airbyte_internal_ops-0.9.1 → airbyte_internal_ops-0.10.0}/.github/workflows/lint-check.yml +0 -0
- {airbyte_internal_ops-0.9.1 → airbyte_internal_ops-0.10.0}/.github/workflows/lock-command.yml +0 -0
- {airbyte_internal_ops-0.9.1 → airbyte_internal_ops-0.10.0}/.github/workflows/poe-command.yml +0 -0
- {airbyte_internal_ops-0.9.1 → airbyte_internal_ops-0.10.0}/.github/workflows/pr-welcome.yml +0 -0
- {airbyte_internal_ops-0.9.1 → airbyte_internal_ops-0.10.0}/.github/workflows/publish.yml +0 -0
- {airbyte_internal_ops-0.9.1 → airbyte_internal_ops-0.10.0}/.github/workflows/pytest-fast.yml +0 -0
- {airbyte_internal_ops-0.9.1 → airbyte_internal_ops-0.10.0}/.github/workflows/pytest-matrix.yml +0 -0
- {airbyte_internal_ops-0.9.1 → airbyte_internal_ops-0.10.0}/.github/workflows/regression-tests-ci.yml +0 -0
- {airbyte_internal_ops-0.9.1 → airbyte_internal_ops-0.10.0}/.github/workflows/release-drafter.yml +0 -0
- {airbyte_internal_ops-0.9.1 → airbyte_internal_ops-0.10.0}/.github/workflows/slash-command-dispatch.yml +0 -0
- {airbyte_internal_ops-0.9.1 → airbyte_internal_ops-0.10.0}/.github/workflows/tk-todo-check.yml +0 -0
- {airbyte_internal_ops-0.9.1 → airbyte_internal_ops-0.10.0}/.github/workflows/validate-build.yml +0 -0
- {airbyte_internal_ops-0.9.1 → airbyte_internal_ops-0.10.0}/.gitignore +0 -0
- {airbyte_internal_ops-0.9.1 → airbyte_internal_ops-0.10.0}/.mcp.json.template +0 -0
- {airbyte_internal_ops-0.9.1 → airbyte_internal_ops-0.10.0}/CONTRIBUTING.md +0 -0
- {airbyte_internal_ops-0.9.1 → airbyte_internal_ops-0.10.0}/README.md +0 -0
- {airbyte_internal_ops-0.9.1 → airbyte_internal_ops-0.10.0}/conftest.py +0 -0
- {airbyte_internal_ops-0.9.1 → airbyte_internal_ops-0.10.0}/docs/.gitignore +0 -0
- {airbyte_internal_ops-0.9.1 → airbyte_internal_ops-0.10.0}/docs/generate.py +0 -0
- {airbyte_internal_ops-0.9.1 → airbyte_internal_ops-0.10.0}/docs/templates/custom.css +0 -0
- {airbyte_internal_ops-0.9.1 → airbyte_internal_ops-0.10.0}/docs/templates/theme.css +0 -0
- {airbyte_internal_ops-0.9.1 → airbyte_internal_ops-0.10.0}/infra/sentry/.gitignore +0 -0
- {airbyte_internal_ops-0.9.1 → airbyte_internal_ops-0.10.0}/infra/sentry/CONTRIBUTING.md +0 -0
- {airbyte_internal_ops-0.9.1 → airbyte_internal_ops-0.10.0}/infra/sentry/Pulumi.prod.yaml +0 -0
- {airbyte_internal_ops-0.9.1 → airbyte_internal_ops-0.10.0}/infra/sentry/Pulumi.yaml +0 -0
- {airbyte_internal_ops-0.9.1 → airbyte_internal_ops-0.10.0}/infra/sentry/README.md +0 -0
- {airbyte_internal_ops-0.9.1 → airbyte_internal_ops-0.10.0}/infra/sentry/__main__.py +0 -0
- {airbyte_internal_ops-0.9.1 → airbyte_internal_ops-0.10.0}/infra/sentry/requirements.txt +0 -0
- {airbyte_internal_ops-0.9.1 → airbyte_internal_ops-0.10.0}/poe_tasks.toml +0 -0
- {airbyte_internal_ops-0.9.1 → airbyte_internal_ops-0.10.0}/pyproject.toml +0 -0
- {airbyte_internal_ops-0.9.1 → airbyte_internal_ops-0.10.0}/pyrefly.toml +0 -0
- {airbyte_internal_ops-0.9.1 → airbyte_internal_ops-0.10.0}/pytest.ini +0 -0
- {airbyte_internal_ops-0.9.1 → airbyte_internal_ops-0.10.0}/ruff.toml +0 -0
- {airbyte_internal_ops-0.9.1 → airbyte_internal_ops-0.10.0}/src/airbyte_ops_mcp/__init__.py +0 -0
- {airbyte_internal_ops-0.9.1 → airbyte_internal_ops-0.10.0}/src/airbyte_ops_mcp/_legacy/__init__.py +0 -0
- {airbyte_internal_ops-0.9.1 → airbyte_internal_ops-0.10.0}/src/airbyte_ops_mcp/_legacy/airbyte_ci/README.md +0 -0
- {airbyte_internal_ops-0.9.1 → airbyte_internal_ops-0.10.0}/src/airbyte_ops_mcp/_legacy/airbyte_ci/connector_erd_generator/README.md +0 -0
- {airbyte_internal_ops-0.9.1 → airbyte_internal_ops-0.10.0}/src/airbyte_ops_mcp/_legacy/airbyte_ci/connector_erd_generator/__init__.py +0 -0
- {airbyte_internal_ops-0.9.1 → airbyte_internal_ops-0.10.0}/src/airbyte_ops_mcp/_legacy/airbyte_ci/connector_erd_generator/dbml_assembler.py +0 -0
- {airbyte_internal_ops-0.9.1 → airbyte_internal_ops-0.10.0}/src/airbyte_ops_mcp/_legacy/airbyte_ci/connector_erd_generator/erd_service.py +0 -0
- {airbyte_internal_ops-0.9.1 → airbyte_internal_ops-0.10.0}/src/airbyte_ops_mcp/_legacy/airbyte_ci/connector_erd_generator/relationships.py +0 -0
- {airbyte_internal_ops-0.9.1 → airbyte_internal_ops-0.10.0}/src/airbyte_ops_mcp/_legacy/airbyte_ci/connector_insights/README.md +0 -0
- {airbyte_internal_ops-0.9.1 → airbyte_internal_ops-0.10.0}/src/airbyte_ops_mcp/_legacy/airbyte_ci/connector_insights/__init__.py +0 -0
- {airbyte_internal_ops-0.9.1 → airbyte_internal_ops-0.10.0}/src/airbyte_ops_mcp/_legacy/airbyte_ci/connector_insights/cli.py +0 -0
- {airbyte_internal_ops-0.9.1 → airbyte_internal_ops-0.10.0}/src/airbyte_ops_mcp/_legacy/airbyte_ci/connector_insights/hacks.py +0 -0
- {airbyte_internal_ops-0.9.1 → airbyte_internal_ops-0.10.0}/src/airbyte_ops_mcp/_legacy/airbyte_ci/connector_insights/insights.py +0 -0
- {airbyte_internal_ops-0.9.1 → airbyte_internal_ops-0.10.0}/src/airbyte_ops_mcp/_legacy/airbyte_ci/connector_insights/models.py +0 -0
- {airbyte_internal_ops-0.9.1 → airbyte_internal_ops-0.10.0}/src/airbyte_ops_mcp/_legacy/airbyte_ci/connector_insights/pylint.py +0 -0
- {airbyte_internal_ops-0.9.1 → airbyte_internal_ops-0.10.0}/src/airbyte_ops_mcp/_legacy/airbyte_ci/connector_insights/pylint_plugins/cdk_deprecation_checkers.py +0 -0
- {airbyte_internal_ops-0.9.1 → airbyte_internal_ops-0.10.0}/src/airbyte_ops_mcp/_legacy/airbyte_ci/connector_insights/result_backends.py +0 -0
- {airbyte_internal_ops-0.9.1 → airbyte_internal_ops-0.10.0}/src/airbyte_ops_mcp/_legacy/airbyte_ci/connector_insights/utils.py +0 -0
- {airbyte_internal_ops-0.9.1 → airbyte_internal_ops-0.10.0}/src/airbyte_ops_mcp/_legacy/airbyte_ci/connector_ops/README.md +0 -0
- {airbyte_internal_ops-0.9.1 → airbyte_internal_ops-0.10.0}/src/airbyte_ops_mcp/_legacy/airbyte_ci/connector_ops/__init__.py +0 -0
- {airbyte_internal_ops-0.9.1 → airbyte_internal_ops-0.10.0}/src/airbyte_ops_mcp/_legacy/airbyte_ci/connector_ops/utils.py +0 -0
- {airbyte_internal_ops-0.9.1 → airbyte_internal_ops-0.10.0}/src/airbyte_ops_mcp/_legacy/airbyte_ci/connector_pipelines/DELETEME-dagger/README.md +0 -0
- {airbyte_internal_ops-0.9.1 → airbyte_internal_ops-0.10.0}/src/airbyte_ops_mcp/_legacy/airbyte_ci/connector_pipelines/DELETEME-dagger/actions/__init__.py +0 -0
- {airbyte_internal_ops-0.9.1 → airbyte_internal_ops-0.10.0}/src/airbyte_ops_mcp/_legacy/airbyte_ci/connector_pipelines/DELETEME-dagger/actions/connector/hooks.py +0 -0
- {airbyte_internal_ops-0.9.1 → airbyte_internal_ops-0.10.0}/src/airbyte_ops_mcp/_legacy/airbyte_ci/connector_pipelines/DELETEME-dagger/actions/connector/normalization.py +0 -0
- {airbyte_internal_ops-0.9.1 → airbyte_internal_ops-0.10.0}/src/airbyte_ops_mcp/_legacy/airbyte_ci/connector_pipelines/DELETEME-dagger/actions/python/common.py +0 -0
- {airbyte_internal_ops-0.9.1 → airbyte_internal_ops-0.10.0}/src/airbyte_ops_mcp/_legacy/airbyte_ci/connector_pipelines/DELETEME-dagger/actions/python/pipx.py +0 -0
- {airbyte_internal_ops-0.9.1 → airbyte_internal_ops-0.10.0}/src/airbyte_ops_mcp/_legacy/airbyte_ci/connector_pipelines/DELETEME-dagger/actions/python/poetry.py +0 -0
- {airbyte_internal_ops-0.9.1 → airbyte_internal_ops-0.10.0}/src/airbyte_ops_mcp/_legacy/airbyte_ci/connector_pipelines/DELETEME-dagger/actions/remote_storage.py +0 -0
- {airbyte_internal_ops-0.9.1 → airbyte_internal_ops-0.10.0}/src/airbyte_ops_mcp/_legacy/airbyte_ci/connector_pipelines/DELETEME-dagger/actions/secrets.py +0 -0
- {airbyte_internal_ops-0.9.1 → airbyte_internal_ops-0.10.0}/src/airbyte_ops_mcp/_legacy/airbyte_ci/connector_pipelines/DELETEME-dagger/actions/system/common.py +0 -0
- {airbyte_internal_ops-0.9.1 → airbyte_internal_ops-0.10.0}/src/airbyte_ops_mcp/_legacy/airbyte_ci/connector_pipelines/DELETEME-dagger/actions/system/docker.py +0 -0
- {airbyte_internal_ops-0.9.1 → airbyte_internal_ops-0.10.0}/src/airbyte_ops_mcp/_legacy/airbyte_ci/connector_pipelines/DELETEME-dagger/containers/git.py +0 -0
- {airbyte_internal_ops-0.9.1 → airbyte_internal_ops-0.10.0}/src/airbyte_ops_mcp/_legacy/airbyte_ci/connector_pipelines/DELETEME-dagger/containers/internal_tools.py +0 -0
- {airbyte_internal_ops-0.9.1 → airbyte_internal_ops-0.10.0}/src/airbyte_ops_mcp/_legacy/airbyte_ci/connector_pipelines/DELETEME-dagger/containers/java.py +0 -0
- {airbyte_internal_ops-0.9.1 → airbyte_internal_ops-0.10.0}/src/airbyte_ops_mcp/_legacy/airbyte_ci/connector_pipelines/DELETEME-dagger/containers/python.py +0 -0
- {airbyte_internal_ops-0.9.1 → airbyte_internal_ops-0.10.0}/src/airbyte_ops_mcp/_legacy/airbyte_ci/connector_pipelines/DELETEME-dagger-helpers/__init__.py +0 -0
- {airbyte_internal_ops-0.9.1 → airbyte_internal_ops-0.10.0}/src/airbyte_ops_mcp/_legacy/airbyte_ci/connector_pipelines/DELETEME-dagger-helpers/cache_keys.py +0 -0
- {airbyte_internal_ops-0.9.1 → airbyte_internal_ops-0.10.0}/src/airbyte_ops_mcp/_legacy/airbyte_ci/connector_pipelines/DELETEME-dagger-helpers/cli.py +0 -0
- {airbyte_internal_ops-0.9.1 → airbyte_internal_ops-0.10.0}/src/airbyte_ops_mcp/_legacy/airbyte_ci/connector_pipelines/DELETEME-dagger-helpers/connectors/__init__.py +0 -0
- {airbyte_internal_ops-0.9.1 → airbyte_internal_ops-0.10.0}/src/airbyte_ops_mcp/_legacy/airbyte_ci/connector_pipelines/DELETEME-dagger-helpers/connectors/cdk_helpers.py +0 -0
- {airbyte_internal_ops-0.9.1 → airbyte_internal_ops-0.10.0}/src/airbyte_ops_mcp/_legacy/airbyte_ci/connector_pipelines/DELETEME-dagger-helpers/connectors/command.py +0 -0
- {airbyte_internal_ops-0.9.1 → airbyte_internal_ops-0.10.0}/src/airbyte_ops_mcp/_legacy/airbyte_ci/connector_pipelines/DELETEME-dagger-helpers/connectors/dagger_fs.py +0 -0
- {airbyte_internal_ops-0.9.1 → airbyte_internal_ops-0.10.0}/src/airbyte_ops_mcp/_legacy/airbyte_ci/connector_pipelines/DELETEME-dagger-helpers/connectors/format.py +0 -0
- {airbyte_internal_ops-0.9.1 → airbyte_internal_ops-0.10.0}/src/airbyte_ops_mcp/_legacy/airbyte_ci/connector_pipelines/DELETEME-dagger-helpers/connectors/modifed.py +0 -0
- {airbyte_internal_ops-0.9.1 → airbyte_internal_ops-0.10.0}/src/airbyte_ops_mcp/_legacy/airbyte_ci/connector_pipelines/DELETEME-dagger-helpers/connectors/yaml.py +0 -0
- {airbyte_internal_ops-0.9.1 → airbyte_internal_ops-0.10.0}/src/airbyte_ops_mcp/_legacy/airbyte_ci/connector_pipelines/DELETEME-dagger-helpers/execution/__init__.py +0 -0
- {airbyte_internal_ops-0.9.1 → airbyte_internal_ops-0.10.0}/src/airbyte_ops_mcp/_legacy/airbyte_ci/connector_pipelines/DELETEME-dagger-helpers/execution/argument_parsing.py +0 -0
- {airbyte_internal_ops-0.9.1 → airbyte_internal_ops-0.10.0}/src/airbyte_ops_mcp/_legacy/airbyte_ci/connector_pipelines/DELETEME-dagger-helpers/execution/run_steps.py +0 -0
- {airbyte_internal_ops-0.9.1 → airbyte_internal_ops-0.10.0}/src/airbyte_ops_mcp/_legacy/airbyte_ci/connector_pipelines/DELETEME-dagger-helpers/gcs.py +0 -0
- {airbyte_internal_ops-0.9.1 → airbyte_internal_ops-0.10.0}/src/airbyte_ops_mcp/_legacy/airbyte_ci/connector_pipelines/DELETEME-dagger-helpers/git.py +0 -0
- {airbyte_internal_ops-0.9.1 → airbyte_internal_ops-0.10.0}/src/airbyte_ops_mcp/_legacy/airbyte_ci/connector_pipelines/DELETEME-dagger-helpers/github.py +0 -0
- {airbyte_internal_ops-0.9.1 → airbyte_internal_ops-0.10.0}/src/airbyte_ops_mcp/_legacy/airbyte_ci/connector_pipelines/DELETEME-dagger-helpers/pip.py +0 -0
- {airbyte_internal_ops-0.9.1 → airbyte_internal_ops-0.10.0}/src/airbyte_ops_mcp/_legacy/airbyte_ci/connector_pipelines/DELETEME-dagger-helpers/sentry_utils.py +0 -0
- {airbyte_internal_ops-0.9.1 → airbyte_internal_ops-0.10.0}/src/airbyte_ops_mcp/_legacy/airbyte_ci/connector_pipelines/DELETEME-dagger-helpers/slack.py +0 -0
- {airbyte_internal_ops-0.9.1 → airbyte_internal_ops-0.10.0}/src/airbyte_ops_mcp/_legacy/airbyte_ci/connector_pipelines/DELETEME-dagger-helpers/utils.py +0 -0
- {airbyte_internal_ops-0.9.1 → airbyte_internal_ops-0.10.0}/src/airbyte_ops_mcp/_legacy/airbyte_ci/connector_pipelines/README.md +0 -0
- {airbyte_internal_ops-0.9.1 → airbyte_internal_ops-0.10.0}/src/airbyte_ops_mcp/_legacy/airbyte_ci/connector_pipelines/__init__.py +0 -0
- {airbyte_internal_ops-0.9.1 → airbyte_internal_ops-0.10.0}/src/airbyte_ops_mcp/_legacy/airbyte_ci/connector_pipelines/airbyte_ci/__init__.py +0 -0
- {airbyte_internal_ops-0.9.1 → airbyte_internal_ops-0.10.0}/src/airbyte_ops_mcp/_legacy/airbyte_ci/connector_pipelines/airbyte_ci/connectors/__init__.py +0 -0
- {airbyte_internal_ops-0.9.1 → airbyte_internal_ops-0.10.0}/src/airbyte_ops_mcp/_legacy/airbyte_ci/connector_pipelines/airbyte_ci/connectors/build_image/__init__.py +0 -0
- {airbyte_internal_ops-0.9.1 → airbyte_internal_ops-0.10.0}/src/airbyte_ops_mcp/_legacy/airbyte_ci/connector_pipelines/airbyte_ci/connectors/build_image/commands.py +0 -0
- {airbyte_internal_ops-0.9.1 → airbyte_internal_ops-0.10.0}/src/airbyte_ops_mcp/_legacy/airbyte_ci/connector_pipelines/airbyte_ci/connectors/build_image/pipeline.py +0 -0
- {airbyte_internal_ops-0.9.1 → airbyte_internal_ops-0.10.0}/src/airbyte_ops_mcp/_legacy/airbyte_ci/connector_pipelines/airbyte_ci/connectors/build_image/steps/__init__.py +0 -0
- {airbyte_internal_ops-0.9.1 → airbyte_internal_ops-0.10.0}/src/airbyte_ops_mcp/_legacy/airbyte_ci/connector_pipelines/airbyte_ci/connectors/build_image/steps/build_customization.py +0 -0
- {airbyte_internal_ops-0.9.1 → airbyte_internal_ops-0.10.0}/src/airbyte_ops_mcp/_legacy/airbyte_ci/connector_pipelines/airbyte_ci/connectors/build_image/steps/common.py +0 -0
- {airbyte_internal_ops-0.9.1 → airbyte_internal_ops-0.10.0}/src/airbyte_ops_mcp/_legacy/airbyte_ci/connector_pipelines/airbyte_ci/connectors/build_image/steps/java_connectors.py +0 -0
- {airbyte_internal_ops-0.9.1 → airbyte_internal_ops-0.10.0}/src/airbyte_ops_mcp/_legacy/airbyte_ci/connector_pipelines/airbyte_ci/connectors/build_image/steps/manifest_only_connectors.py +0 -0
- {airbyte_internal_ops-0.9.1 → airbyte_internal_ops-0.10.0}/src/airbyte_ops_mcp/_legacy/airbyte_ci/connector_pipelines/airbyte_ci/connectors/build_image/steps/normalization.py +0 -0
- {airbyte_internal_ops-0.9.1 → airbyte_internal_ops-0.10.0}/src/airbyte_ops_mcp/_legacy/airbyte_ci/connector_pipelines/airbyte_ci/connectors/build_image/steps/python_connectors.py +0 -0
- {airbyte_internal_ops-0.9.1 → airbyte_internal_ops-0.10.0}/src/airbyte_ops_mcp/_legacy/airbyte_ci/connector_pipelines/airbyte_ci/connectors/commands.py +0 -0
- {airbyte_internal_ops-0.9.1 → airbyte_internal_ops-0.10.0}/src/airbyte_ops_mcp/_legacy/airbyte_ci/connector_pipelines/airbyte_ci/connectors/consts.py +0 -0
- {airbyte_internal_ops-0.9.1 → airbyte_internal_ops-0.10.0}/src/airbyte_ops_mcp/_legacy/airbyte_ci/connector_pipelines/airbyte_ci/connectors/context.py +0 -0
- {airbyte_internal_ops-0.9.1 → airbyte_internal_ops-0.10.0}/src/airbyte_ops_mcp/_legacy/airbyte_ci/connector_pipelines/airbyte_ci/connectors/generate_erd/__init__.py +0 -0
- {airbyte_internal_ops-0.9.1 → airbyte_internal_ops-0.10.0}/src/airbyte_ops_mcp/_legacy/airbyte_ci/connector_pipelines/airbyte_ci/connectors/generate_erd/commands.py +0 -0
- {airbyte_internal_ops-0.9.1 → airbyte_internal_ops-0.10.0}/src/airbyte_ops_mcp/_legacy/airbyte_ci/connector_pipelines/airbyte_ci/connectors/generate_erd/pipeline.py +0 -0
- {airbyte_internal_ops-0.9.1 → airbyte_internal_ops-0.10.0}/src/airbyte_ops_mcp/_legacy/airbyte_ci/connector_pipelines/airbyte_ci/connectors/list/__init__.py +0 -0
- {airbyte_internal_ops-0.9.1 → airbyte_internal_ops-0.10.0}/src/airbyte_ops_mcp/_legacy/airbyte_ci/connector_pipelines/airbyte_ci/connectors/list/commands.py +0 -0
- {airbyte_internal_ops-0.9.1 → airbyte_internal_ops-0.10.0}/src/airbyte_ops_mcp/_legacy/airbyte_ci/connector_pipelines/airbyte_ci/connectors/migrate_to_inline_schemas/__init__.py +0 -0
- {airbyte_internal_ops-0.9.1 → airbyte_internal_ops-0.10.0}/src/airbyte_ops_mcp/_legacy/airbyte_ci/connector_pipelines/airbyte_ci/connectors/migrate_to_inline_schemas/commands.py +0 -0
- {airbyte_internal_ops-0.9.1 → airbyte_internal_ops-0.10.0}/src/airbyte_ops_mcp/_legacy/airbyte_ci/connector_pipelines/airbyte_ci/connectors/migrate_to_inline_schemas/pipeline.py +0 -0
- {airbyte_internal_ops-0.9.1 → airbyte_internal_ops-0.10.0}/src/airbyte_ops_mcp/_legacy/airbyte_ci/connector_pipelines/airbyte_ci/connectors/pipeline.py +0 -0
- {airbyte_internal_ops-0.9.1 → airbyte_internal_ops-0.10.0}/src/airbyte_ops_mcp/_legacy/airbyte_ci/connector_pipelines/airbyte_ci/connectors/pull_request/__init__.py +0 -0
- {airbyte_internal_ops-0.9.1 → airbyte_internal_ops-0.10.0}/src/airbyte_ops_mcp/_legacy/airbyte_ci/connector_pipelines/airbyte_ci/connectors/pull_request/commands.py +0 -0
- {airbyte_internal_ops-0.9.1 → airbyte_internal_ops-0.10.0}/src/airbyte_ops_mcp/_legacy/airbyte_ci/connector_pipelines/airbyte_ci/connectors/pull_request/pipeline.py +0 -0
- {airbyte_internal_ops-0.9.1 → airbyte_internal_ops-0.10.0}/src/airbyte_ops_mcp/_legacy/airbyte_ci/connector_pipelines/airbyte_ci/connectors/reports.py +0 -0
- {airbyte_internal_ops-0.9.1 → airbyte_internal_ops-0.10.0}/src/airbyte_ops_mcp/_legacy/airbyte_ci/connector_pipelines/airbyte_ci/connectors/test/__init__.py +0 -0
- {airbyte_internal_ops-0.9.1 → airbyte_internal_ops-0.10.0}/src/airbyte_ops_mcp/_legacy/airbyte_ci/connector_pipelines/airbyte_ci/connectors/test/commands.py +0 -0
- {airbyte_internal_ops-0.9.1 → airbyte_internal_ops-0.10.0}/src/airbyte_ops_mcp/_legacy/airbyte_ci/connector_pipelines/airbyte_ci/connectors/test/context.py +0 -0
- {airbyte_internal_ops-0.9.1 → airbyte_internal_ops-0.10.0}/src/airbyte_ops_mcp/_legacy/airbyte_ci/connector_pipelines/airbyte_ci/connectors/test/pipeline.py +0 -0
- {airbyte_internal_ops-0.9.1 → airbyte_internal_ops-0.10.0}/src/airbyte_ops_mcp/_legacy/airbyte_ci/connector_pipelines/airbyte_ci/connectors/test/steps/__init__.py +0 -0
- {airbyte_internal_ops-0.9.1 → airbyte_internal_ops-0.10.0}/src/airbyte_ops_mcp/_legacy/airbyte_ci/connector_pipelines/airbyte_ci/connectors/test/steps/common.py +0 -0
- {airbyte_internal_ops-0.9.1 → airbyte_internal_ops-0.10.0}/src/airbyte_ops_mcp/_legacy/airbyte_ci/connector_pipelines/airbyte_ci/connectors/test/steps/java_connectors.py +0 -0
- {airbyte_internal_ops-0.9.1 → airbyte_internal_ops-0.10.0}/src/airbyte_ops_mcp/_legacy/airbyte_ci/connector_pipelines/airbyte_ci/connectors/test/steps/manifest_only_connectors.py +0 -0
- {airbyte_internal_ops-0.9.1 → airbyte_internal_ops-0.10.0}/src/airbyte_ops_mcp/_legacy/airbyte_ci/connector_pipelines/airbyte_ci/connectors/test/steps/python_connectors.py +0 -0
- {airbyte_internal_ops-0.9.1 → airbyte_internal_ops-0.10.0}/src/airbyte_ops_mcp/_legacy/airbyte_ci/connector_pipelines/airbyte_ci/connectors/test/steps/templates/test_report.html.j2 +0 -0
- {airbyte_internal_ops-0.9.1 → airbyte_internal_ops-0.10.0}/src/airbyte_ops_mcp/_legacy/airbyte_ci/connector_pipelines/airbyte_ci/connectors/up_to_date/__init__.py +0 -0
- {airbyte_internal_ops-0.9.1 → airbyte_internal_ops-0.10.0}/src/airbyte_ops_mcp/_legacy/airbyte_ci/connector_pipelines/airbyte_ci/connectors/up_to_date/commands.py +0 -0
- {airbyte_internal_ops-0.9.1 → airbyte_internal_ops-0.10.0}/src/airbyte_ops_mcp/_legacy/airbyte_ci/connector_pipelines/airbyte_ci/connectors/up_to_date/pipeline.py +0 -0
- {airbyte_internal_ops-0.9.1 → airbyte_internal_ops-0.10.0}/src/airbyte_ops_mcp/_legacy/airbyte_ci/connector_pipelines/airbyte_ci/connectors/up_to_date/steps.py +0 -0
- {airbyte_internal_ops-0.9.1 → airbyte_internal_ops-0.10.0}/src/airbyte_ops_mcp/_legacy/airbyte_ci/connector_pipelines/airbyte_ci/connectors/up_to_date/templates/up_to_date_pr_body.md.j2 +0 -0
- {airbyte_internal_ops-0.9.1 → airbyte_internal_ops-0.10.0}/src/airbyte_ops_mcp/_legacy/airbyte_ci/connector_pipelines/airbyte_ci/connectors/upgrade_cdk/__init__.py +0 -0
- {airbyte_internal_ops-0.9.1 → airbyte_internal_ops-0.10.0}/src/airbyte_ops_mcp/_legacy/airbyte_ci/connector_pipelines/airbyte_ci/connectors/upgrade_cdk/commands.py +0 -0
- {airbyte_internal_ops-0.9.1 → airbyte_internal_ops-0.10.0}/src/airbyte_ops_mcp/_legacy/airbyte_ci/connector_pipelines/airbyte_ci/connectors/upgrade_cdk/pipeline.py +0 -0
- {airbyte_internal_ops-0.9.1 → airbyte_internal_ops-0.10.0}/src/airbyte_ops_mcp/_legacy/airbyte_ci/connector_pipelines/airbyte_ci/metadata/__init__.py +0 -0
- {airbyte_internal_ops-0.9.1 → airbyte_internal_ops-0.10.0}/src/airbyte_ops_mcp/_legacy/airbyte_ci/connector_pipelines/airbyte_ci/metadata/commands.py +0 -0
- {airbyte_internal_ops-0.9.1 → airbyte_internal_ops-0.10.0}/src/airbyte_ops_mcp/_legacy/airbyte_ci/connector_pipelines/airbyte_ci/metadata/pipeline.py +0 -0
- {airbyte_internal_ops-0.9.1 → airbyte_internal_ops-0.10.0}/src/airbyte_ops_mcp/_legacy/airbyte_ci/connector_pipelines/airbyte_ci/poetry/__init__.py +0 -0
- {airbyte_internal_ops-0.9.1 → airbyte_internal_ops-0.10.0}/src/airbyte_ops_mcp/_legacy/airbyte_ci/connector_pipelines/airbyte_ci/poetry/commands.py +0 -0
- {airbyte_internal_ops-0.9.1 → airbyte_internal_ops-0.10.0}/src/airbyte_ops_mcp/_legacy/airbyte_ci/connector_pipelines/airbyte_ci/steps/__init__.py +0 -0
- {airbyte_internal_ops-0.9.1 → airbyte_internal_ops-0.10.0}/src/airbyte_ops_mcp/_legacy/airbyte_ci/connector_pipelines/airbyte_ci/steps/base_image.py +0 -0
- {airbyte_internal_ops-0.9.1 → airbyte_internal_ops-0.10.0}/src/airbyte_ops_mcp/_legacy/airbyte_ci/connector_pipelines/airbyte_ci/steps/docker.py +0 -0
- {airbyte_internal_ops-0.9.1 → airbyte_internal_ops-0.10.0}/src/airbyte_ops_mcp/_legacy/airbyte_ci/connector_pipelines/airbyte_ci/steps/gradle.py +0 -0
- {airbyte_internal_ops-0.9.1 → airbyte_internal_ops-0.10.0}/src/airbyte_ops_mcp/_legacy/airbyte_ci/connector_pipelines/airbyte_ci/steps/no_op.py +0 -0
- {airbyte_internal_ops-0.9.1 → airbyte_internal_ops-0.10.0}/src/airbyte_ops_mcp/_legacy/airbyte_ci/connector_pipelines/airbyte_ci/steps/poetry.py +0 -0
- {airbyte_internal_ops-0.9.1 → airbyte_internal_ops-0.10.0}/src/airbyte_ops_mcp/_legacy/airbyte_ci/connector_pipelines/airbyte_ci/steps/pull_request.py +0 -0
- {airbyte_internal_ops-0.9.1 → airbyte_internal_ops-0.10.0}/src/airbyte_ops_mcp/_legacy/airbyte_ci/connector_pipelines/airbyte_ci/test/__init__.py +0 -0
- {airbyte_internal_ops-0.9.1 → airbyte_internal_ops-0.10.0}/src/airbyte_ops_mcp/_legacy/airbyte_ci/connector_pipelines/airbyte_ci/test/commands.py +0 -0
- {airbyte_internal_ops-0.9.1 → airbyte_internal_ops-0.10.0}/src/airbyte_ops_mcp/_legacy/airbyte_ci/connector_pipelines/airbyte_ci/test/models.py +0 -0
- {airbyte_internal_ops-0.9.1 → airbyte_internal_ops-0.10.0}/src/airbyte_ops_mcp/_legacy/airbyte_ci/connector_pipelines/airbyte_ci/test/pipeline.py +0 -0
- {airbyte_internal_ops-0.9.1 → airbyte_internal_ops-0.10.0}/src/airbyte_ops_mcp/_legacy/airbyte_ci/connector_pipelines/airbyte_ci/update/__init__.py +0 -0
- {airbyte_internal_ops-0.9.1 → airbyte_internal_ops-0.10.0}/src/airbyte_ops_mcp/_legacy/airbyte_ci/connector_pipelines/airbyte_ci/update/commands.py +0 -0
- {airbyte_internal_ops-0.9.1 → airbyte_internal_ops-0.10.0}/src/airbyte_ops_mcp/_legacy/airbyte_ci/connector_pipelines/cli/airbyte_ci.py +0 -0
- {airbyte_internal_ops-0.9.1 → airbyte_internal_ops-0.10.0}/src/airbyte_ops_mcp/_legacy/airbyte_ci/connector_pipelines/cli/auto_update.py +0 -0
- {airbyte_internal_ops-0.9.1 → airbyte_internal_ops-0.10.0}/src/airbyte_ops_mcp/_legacy/airbyte_ci/connector_pipelines/cli/click_decorators.py +0 -0
- {airbyte_internal_ops-0.9.1 → airbyte_internal_ops-0.10.0}/src/airbyte_ops_mcp/_legacy/airbyte_ci/connector_pipelines/cli/confirm_prompt.py +0 -0
- {airbyte_internal_ops-0.9.1 → airbyte_internal_ops-0.10.0}/src/airbyte_ops_mcp/_legacy/airbyte_ci/connector_pipelines/cli/dagger_pipeline_command.py +0 -0
- {airbyte_internal_ops-0.9.1 → airbyte_internal_ops-0.10.0}/src/airbyte_ops_mcp/_legacy/airbyte_ci/connector_pipelines/cli/dagger_run.py +0 -0
- {airbyte_internal_ops-0.9.1 → airbyte_internal_ops-0.10.0}/src/airbyte_ops_mcp/_legacy/airbyte_ci/connector_pipelines/cli/ensure_repo_root.py +0 -0
- {airbyte_internal_ops-0.9.1 → airbyte_internal_ops-0.10.0}/src/airbyte_ops_mcp/_legacy/airbyte_ci/connector_pipelines/cli/lazy_group.py +0 -0
- {airbyte_internal_ops-0.9.1 → airbyte_internal_ops-0.10.0}/src/airbyte_ops_mcp/_legacy/airbyte_ci/connector_pipelines/cli/secrets.py +0 -0
- {airbyte_internal_ops-0.9.1 → airbyte_internal_ops-0.10.0}/src/airbyte_ops_mcp/_legacy/airbyte_ci/connector_pipelines/cli/telemetry.py +0 -0
- {airbyte_internal_ops-0.9.1 → airbyte_internal_ops-0.10.0}/src/airbyte_ops_mcp/_legacy/airbyte_ci/connector_pipelines/consts.py +0 -0
- {airbyte_internal_ops-0.9.1 → airbyte_internal_ops-0.10.0}/src/airbyte_ops_mcp/_legacy/airbyte_ci/connector_pipelines/hacks.py +0 -0
- {airbyte_internal_ops-0.9.1 → airbyte_internal_ops-0.10.0}/src/airbyte_ops_mcp/_legacy/airbyte_ci/connector_pipelines/models/__init__.py +0 -0
- {airbyte_internal_ops-0.9.1 → airbyte_internal_ops-0.10.0}/src/airbyte_ops_mcp/_legacy/airbyte_ci/connector_pipelines/models/artifacts.py +0 -0
- {airbyte_internal_ops-0.9.1 → airbyte_internal_ops-0.10.0}/src/airbyte_ops_mcp/_legacy/airbyte_ci/connector_pipelines/models/ci_requirements.py +0 -0
- {airbyte_internal_ops-0.9.1 → airbyte_internal_ops-0.10.0}/src/airbyte_ops_mcp/_legacy/airbyte_ci/connector_pipelines/models/contexts/__init__.py +0 -0
- {airbyte_internal_ops-0.9.1 → airbyte_internal_ops-0.10.0}/src/airbyte_ops_mcp/_legacy/airbyte_ci/connector_pipelines/models/contexts/click_pipeline_context.py +0 -0
- {airbyte_internal_ops-0.9.1 → airbyte_internal_ops-0.10.0}/src/airbyte_ops_mcp/_legacy/airbyte_ci/connector_pipelines/models/contexts/pipeline_context.py +0 -0
- {airbyte_internal_ops-0.9.1 → airbyte_internal_ops-0.10.0}/src/airbyte_ops_mcp/_legacy/airbyte_ci/connector_pipelines/models/reports.py +0 -0
- {airbyte_internal_ops-0.9.1 → airbyte_internal_ops-0.10.0}/src/airbyte_ops_mcp/_legacy/airbyte_ci/connector_pipelines/models/secrets.py +0 -0
- {airbyte_internal_ops-0.9.1 → airbyte_internal_ops-0.10.0}/src/airbyte_ops_mcp/_legacy/airbyte_ci/connector_pipelines/models/singleton.py +0 -0
- {airbyte_internal_ops-0.9.1 → airbyte_internal_ops-0.10.0}/src/airbyte_ops_mcp/_legacy/airbyte_ci/connector_pipelines/models/steps.py +0 -0
- {airbyte_internal_ops-0.9.1 → airbyte_internal_ops-0.10.0}/src/airbyte_ops_mcp/_legacy/airbyte_ci/metadata_service/README.md +0 -0
- {airbyte_internal_ops-0.9.1 → airbyte_internal_ops-0.10.0}/src/airbyte_ops_mcp/_legacy/airbyte_ci/metadata_service/commands.py +0 -0
- {airbyte_internal_ops-0.9.1 → airbyte_internal_ops-0.10.0}/src/airbyte_ops_mcp/_legacy/airbyte_ci/metadata_service/constants.py +0 -0
- {airbyte_internal_ops-0.9.1 → airbyte_internal_ops-0.10.0}/src/airbyte_ops_mcp/_legacy/airbyte_ci/metadata_service/docs/external_documentation_urls.md +0 -0
- {airbyte_internal_ops-0.9.1 → airbyte_internal_ops-0.10.0}/src/airbyte_ops_mcp/_legacy/airbyte_ci/metadata_service/gcs_upload.py +0 -0
- {airbyte_internal_ops-0.9.1 → airbyte_internal_ops-0.10.0}/src/airbyte_ops_mcp/_legacy/airbyte_ci/metadata_service/helpers/files.py +0 -0
- {airbyte_internal_ops-0.9.1 → airbyte_internal_ops-0.10.0}/src/airbyte_ops_mcp/_legacy/airbyte_ci/metadata_service/helpers/gcs.py +0 -0
- {airbyte_internal_ops-0.9.1 → airbyte_internal_ops-0.10.0}/src/airbyte_ops_mcp/_legacy/airbyte_ci/metadata_service/helpers/object_helpers.py +0 -0
- {airbyte_internal_ops-0.9.1 → airbyte_internal_ops-0.10.0}/src/airbyte_ops_mcp/_legacy/airbyte_ci/metadata_service/helpers/slack.py +0 -0
- {airbyte_internal_ops-0.9.1 → airbyte_internal_ops-0.10.0}/src/airbyte_ops_mcp/_legacy/airbyte_ci/metadata_service/orchestrator/.env.template +0 -0
- {airbyte_internal_ops-0.9.1 → airbyte_internal_ops-0.10.0}/src/airbyte_ops_mcp/_legacy/airbyte_ci/metadata_service/orchestrator/README.md +0 -0
- {airbyte_internal_ops-0.9.1 → airbyte_internal_ops-0.10.0}/src/airbyte_ops_mcp/_legacy/airbyte_ci/metadata_service/orchestrator/dagster_cloud.yaml +0 -0
- {airbyte_internal_ops-0.9.1 → airbyte_internal_ops-0.10.0}/src/airbyte_ops_mcp/_legacy/airbyte_ci/metadata_service/orchestrator/orchestrator/__init__.py +0 -0
- {airbyte_internal_ops-0.9.1 → airbyte_internal_ops-0.10.0}/src/airbyte_ops_mcp/_legacy/airbyte_ci/metadata_service/orchestrator/orchestrator/assets/connector_metrics.py +0 -0
- {airbyte_internal_ops-0.9.1 → airbyte_internal_ops-0.10.0}/src/airbyte_ops_mcp/_legacy/airbyte_ci/metadata_service/orchestrator/orchestrator/assets/github.py +0 -0
- {airbyte_internal_ops-0.9.1 → airbyte_internal_ops-0.10.0}/src/airbyte_ops_mcp/_legacy/airbyte_ci/metadata_service/orchestrator/orchestrator/assets/metadata.py +0 -0
- {airbyte_internal_ops-0.9.1 → airbyte_internal_ops-0.10.0}/src/airbyte_ops_mcp/_legacy/airbyte_ci/metadata_service/orchestrator/orchestrator/assets/registry.py +0 -0
- {airbyte_internal_ops-0.9.1 → airbyte_internal_ops-0.10.0}/src/airbyte_ops_mcp/_legacy/airbyte_ci/metadata_service/orchestrator/orchestrator/assets/registry_entry.py +0 -0
- {airbyte_internal_ops-0.9.1 → airbyte_internal_ops-0.10.0}/src/airbyte_ops_mcp/_legacy/airbyte_ci/metadata_service/orchestrator/orchestrator/assets/registry_report.py +0 -0
- {airbyte_internal_ops-0.9.1 → airbyte_internal_ops-0.10.0}/src/airbyte_ops_mcp/_legacy/airbyte_ci/metadata_service/orchestrator/orchestrator/assets/slack.py +0 -0
- {airbyte_internal_ops-0.9.1 → airbyte_internal_ops-0.10.0}/src/airbyte_ops_mcp/_legacy/airbyte_ci/metadata_service/orchestrator/orchestrator/assets/specs_secrets_mask.py +0 -0
- {airbyte_internal_ops-0.9.1 → airbyte_internal_ops-0.10.0}/src/airbyte_ops_mcp/_legacy/airbyte_ci/metadata_service/orchestrator/orchestrator/config.py +0 -0
- {airbyte_internal_ops-0.9.1 → airbyte_internal_ops-0.10.0}/src/airbyte_ops_mcp/_legacy/airbyte_ci/metadata_service/orchestrator/orchestrator/fetcher/connector_cdk_version.py +0 -0
- {airbyte_internal_ops-0.9.1 → airbyte_internal_ops-0.10.0}/src/airbyte_ops_mcp/_legacy/airbyte_ci/metadata_service/orchestrator/orchestrator/hacks.py +0 -0
- {airbyte_internal_ops-0.9.1 → airbyte_internal_ops-0.10.0}/src/airbyte_ops_mcp/_legacy/airbyte_ci/metadata_service/orchestrator/orchestrator/jobs/registry.py +0 -0
- {airbyte_internal_ops-0.9.1 → airbyte_internal_ops-0.10.0}/src/airbyte_ops_mcp/_legacy/airbyte_ci/metadata_service/orchestrator/orchestrator/logging/publish_connector_lifecycle.py +0 -0
- {airbyte_internal_ops-0.9.1 → airbyte_internal_ops-0.10.0}/src/airbyte_ops_mcp/_legacy/airbyte_ci/metadata_service/orchestrator/orchestrator/logging/sentry.py +0 -0
- {airbyte_internal_ops-0.9.1 → airbyte_internal_ops-0.10.0}/src/airbyte_ops_mcp/_legacy/airbyte_ci/metadata_service/orchestrator/orchestrator/models/ci_report.py +0 -0
- {airbyte_internal_ops-0.9.1 → airbyte_internal_ops-0.10.0}/src/airbyte_ops_mcp/_legacy/airbyte_ci/metadata_service/orchestrator/orchestrator/models/metadata.py +0 -0
- {airbyte_internal_ops-0.9.1 → airbyte_internal_ops-0.10.0}/src/airbyte_ops_mcp/_legacy/airbyte_ci/metadata_service/orchestrator/orchestrator/ops/slack.py +0 -0
- {airbyte_internal_ops-0.9.1 → airbyte_internal_ops-0.10.0}/src/airbyte_ops_mcp/_legacy/airbyte_ci/metadata_service/orchestrator/orchestrator/resources/file_managers/local_file_manager.py +0 -0
- {airbyte_internal_ops-0.9.1 → airbyte_internal_ops-0.10.0}/src/airbyte_ops_mcp/_legacy/airbyte_ci/metadata_service/orchestrator/orchestrator/resources/gcp.py +0 -0
- {airbyte_internal_ops-0.9.1 → airbyte_internal_ops-0.10.0}/src/airbyte_ops_mcp/_legacy/airbyte_ci/metadata_service/orchestrator/orchestrator/resources/github.py +0 -0
- {airbyte_internal_ops-0.9.1 → airbyte_internal_ops-0.10.0}/src/airbyte_ops_mcp/_legacy/airbyte_ci/metadata_service/orchestrator/orchestrator/resources/local.py +0 -0
- {airbyte_internal_ops-0.9.1 → airbyte_internal_ops-0.10.0}/src/airbyte_ops_mcp/_legacy/airbyte_ci/metadata_service/orchestrator/orchestrator/sensors/gcs.py +0 -0
- {airbyte_internal_ops-0.9.1 → airbyte_internal_ops-0.10.0}/src/airbyte_ops_mcp/_legacy/airbyte_ci/metadata_service/orchestrator/orchestrator/sensors/github.py +0 -0
- {airbyte_internal_ops-0.9.1 → airbyte_internal_ops-0.10.0}/src/airbyte_ops_mcp/_legacy/airbyte_ci/metadata_service/orchestrator/orchestrator/sensors/registry.py +0 -0
- {airbyte_internal_ops-0.9.1 → airbyte_internal_ops-0.10.0}/src/airbyte_ops_mcp/_legacy/airbyte_ci/metadata_service/orchestrator/orchestrator/templates/base.html +0 -0
- {airbyte_internal_ops-0.9.1 → airbyte_internal_ops-0.10.0}/src/airbyte_ops_mcp/_legacy/airbyte_ci/metadata_service/orchestrator/orchestrator/templates/connector_registry_locations.html +0 -0
- {airbyte_internal_ops-0.9.1 → airbyte_internal_ops-0.10.0}/src/airbyte_ops_mcp/_legacy/airbyte_ci/metadata_service/orchestrator/orchestrator/templates/render.py +0 -0
- {airbyte_internal_ops-0.9.1 → airbyte_internal_ops-0.10.0}/src/airbyte_ops_mcp/_legacy/airbyte_ci/metadata_service/orchestrator/orchestrator/utils/blob_helpers.py +0 -0
- {airbyte_internal_ops-0.9.1 → airbyte_internal_ops-0.10.0}/src/airbyte_ops_mcp/_legacy/airbyte_ci/metadata_service/orchestrator/orchestrator/utils/dagster_helpers.py +0 -0
- {airbyte_internal_ops-0.9.1 → airbyte_internal_ops-0.10.0}/src/airbyte_ops_mcp/_legacy/airbyte_ci/metadata_service/orchestrator/orchestrator/utils/object_helpers.py +0 -0
- {airbyte_internal_ops-0.9.1 → airbyte_internal_ops-0.10.0}/src/airbyte_ops_mcp/_legacy/airbyte_ci/metadata_service/orchestrator/poetry.lock +0 -0
- {airbyte_internal_ops-0.9.1 → airbyte_internal_ops-0.10.0}/src/airbyte_ops_mcp/_legacy/airbyte_ci/metadata_service/orchestrator/tests/__init__.py +0 -0
- {airbyte_internal_ops-0.9.1 → airbyte_internal_ops-0.10.0}/src/airbyte_ops_mcp/_legacy/airbyte_ci/metadata_service/orchestrator/tests/conftest.py.disabled +0 -0
- {airbyte_internal_ops-0.9.1 → airbyte_internal_ops-0.10.0}/src/airbyte_ops_mcp/_legacy/airbyte_ci/metadata_service/orchestrator/tests/fixtures/__init__.py +0 -0
- {airbyte_internal_ops-0.9.1 → airbyte_internal_ops-0.10.0}/src/airbyte_ops_mcp/_legacy/airbyte_ci/metadata_service/orchestrator/tests/fixtures/cloud_registry.json +0 -0
- {airbyte_internal_ops-0.9.1 → airbyte_internal_ops-0.10.0}/src/airbyte_ops_mcp/_legacy/airbyte_ci/metadata_service/orchestrator/tests/fixtures/oss_registry.json +0 -0
- {airbyte_internal_ops-0.9.1 → airbyte_internal_ops-0.10.0}/src/airbyte_ops_mcp/_legacy/airbyte_ci/metadata_service/orchestrator/tests/test_connector_metrics.py +0 -0
- {airbyte_internal_ops-0.9.1 → airbyte_internal_ops-0.10.0}/src/airbyte_ops_mcp/_legacy/airbyte_ci/metadata_service/orchestrator/tests/test_dagster_helpers.py +0 -0
- {airbyte_internal_ops-0.9.1 → airbyte_internal_ops-0.10.0}/src/airbyte_ops_mcp/_legacy/airbyte_ci/metadata_service/orchestrator/tests/test_debug.py +0 -0
- {airbyte_internal_ops-0.9.1 → airbyte_internal_ops-0.10.0}/src/airbyte_ops_mcp/_legacy/airbyte_ci/metadata_service/orchestrator/tests/test_partition_jobs.py +0 -0
- {airbyte_internal_ops-0.9.1 → airbyte_internal_ops-0.10.0}/src/airbyte_ops_mcp/_legacy/airbyte_ci/metadata_service/orchestrator/tests/test_registry.py +0 -0
- {airbyte_internal_ops-0.9.1 → airbyte_internal_ops-0.10.0}/src/airbyte_ops_mcp/_legacy/airbyte_ci/metadata_service/orchestrator/tests/test_specs_secrets_mask.py +0 -0
- {airbyte_internal_ops-0.9.1 → airbyte_internal_ops-0.10.0}/src/airbyte_ops_mcp/_legacy/airbyte_ci/metadata_service/registry.py +0 -0
- {airbyte_internal_ops-0.9.1 → airbyte_internal_ops-0.10.0}/src/airbyte_ops_mcp/_legacy/airbyte_ci/metadata_service/registry_entry.py +0 -0
- {airbyte_internal_ops-0.9.1 → airbyte_internal_ops-0.10.0}/src/airbyte_ops_mcp/_legacy/airbyte_ci/metadata_service/registry_report.py +0 -0
- {airbyte_internal_ops-0.9.1 → airbyte_internal_ops-0.10.0}/src/airbyte_ops_mcp/_legacy/airbyte_ci/metadata_service/sentry.py +0 -0
- {airbyte_internal_ops-0.9.1 → airbyte_internal_ops-0.10.0}/src/airbyte_ops_mcp/_legacy/airbyte_ci/metadata_service/spec_cache.py +0 -0
- {airbyte_internal_ops-0.9.1 → airbyte_internal_ops-0.10.0}/src/airbyte_ops_mcp/_legacy/airbyte_ci/metadata_service/specs_secrets_mask.py +0 -0
- {airbyte_internal_ops-0.9.1 → airbyte_internal_ops-0.10.0}/src/airbyte_ops_mcp/_legacy/airbyte_ci/metadata_service/stale_metadata_report.py +0 -0
- {airbyte_internal_ops-0.9.1 → airbyte_internal_ops-0.10.0}/src/airbyte_ops_mcp/_legacy/airbyte_ci/metadata_service/templates/base.html +0 -0
- {airbyte_internal_ops-0.9.1 → airbyte_internal_ops-0.10.0}/src/airbyte_ops_mcp/_legacy/airbyte_ci/metadata_service/templates/connector_registry_locations.html +0 -0
- {airbyte_internal_ops-0.9.1 → airbyte_internal_ops-0.10.0}/src/airbyte_ops_mcp/_legacy/airbyte_ci/metadata_service/templates/render.py +0 -0
- {airbyte_internal_ops-0.9.1 → airbyte_internal_ops-0.10.0}/src/airbyte_ops_mcp/_sentry.py +0 -0
- {airbyte_internal_ops-0.9.1 → airbyte_internal_ops-0.10.0}/src/airbyte_ops_mcp/airbyte_repo/__init__.py +0 -0
- {airbyte_internal_ops-0.9.1 → airbyte_internal_ops-0.10.0}/src/airbyte_ops_mcp/airbyte_repo/bump_version.py +0 -0
- {airbyte_internal_ops-0.9.1 → airbyte_internal_ops-0.10.0}/src/airbyte_ops_mcp/airbyte_repo/changelog_fix.py +0 -0
- {airbyte_internal_ops-0.9.1 → airbyte_internal_ops-0.10.0}/src/airbyte_ops_mcp/airbyte_repo/list_connectors.py +0 -0
- {airbyte_internal_ops-0.9.1 → airbyte_internal_ops-0.10.0}/src/airbyte_ops_mcp/airbyte_repo/utils.py +0 -0
- {airbyte_internal_ops-0.9.1 → airbyte_internal_ops-0.10.0}/src/airbyte_ops_mcp/cli/__init__.py +0 -0
- {airbyte_internal_ops-0.9.1 → airbyte_internal_ops-0.10.0}/src/airbyte_ops_mcp/cli/_base.py +0 -0
- {airbyte_internal_ops-0.9.1 → airbyte_internal_ops-0.10.0}/src/airbyte_ops_mcp/cli/_shared.py +0 -0
- {airbyte_internal_ops-0.9.1 → airbyte_internal_ops-0.10.0}/src/airbyte_ops_mcp/cli/app.py +0 -0
- {airbyte_internal_ops-0.9.1 → airbyte_internal_ops-0.10.0}/src/airbyte_ops_mcp/cli/cloud.py +0 -0
- {airbyte_internal_ops-0.9.1 → airbyte_internal_ops-0.10.0}/src/airbyte_ops_mcp/cli/gh.py +0 -0
- {airbyte_internal_ops-0.9.1 → airbyte_internal_ops-0.10.0}/src/airbyte_ops_mcp/cli/registry.py +0 -0
- {airbyte_internal_ops-0.9.1 → airbyte_internal_ops-0.10.0}/src/airbyte_ops_mcp/cloud_admin/__init__.py +0 -0
- {airbyte_internal_ops-0.9.1 → airbyte_internal_ops-0.10.0}/src/airbyte_ops_mcp/cloud_admin/auth.py +0 -0
- {airbyte_internal_ops-0.9.1 → airbyte_internal_ops-0.10.0}/src/airbyte_ops_mcp/cloud_admin/connection_config.py +0 -0
- {airbyte_internal_ops-0.9.1 → airbyte_internal_ops-0.10.0}/src/airbyte_ops_mcp/connection_config_retriever/__init__.py +0 -0
- {airbyte_internal_ops-0.9.1 → airbyte_internal_ops-0.10.0}/src/airbyte_ops_mcp/connection_config_retriever/audit_logging.py +0 -0
- {airbyte_internal_ops-0.9.1 → airbyte_internal_ops-0.10.0}/src/airbyte_ops_mcp/connection_config_retriever/retrieval.py +0 -0
- {airbyte_internal_ops-0.9.1 → airbyte_internal_ops-0.10.0}/src/airbyte_ops_mcp/connection_config_retriever/secrets_resolution.py +0 -0
- {airbyte_internal_ops-0.9.1 → airbyte_internal_ops-0.10.0}/src/airbyte_ops_mcp/connector_ops/__init__.py +0 -0
- {airbyte_internal_ops-0.9.1 → airbyte_internal_ops-0.10.0}/src/airbyte_ops_mcp/connector_ops/utils.py +0 -0
- {airbyte_internal_ops-0.9.1 → airbyte_internal_ops-0.10.0}/src/airbyte_ops_mcp/connector_qa/README.md +0 -0
- {airbyte_internal_ops-0.9.1 → airbyte_internal_ops-0.10.0}/src/airbyte_ops_mcp/connector_qa/__init__.py +0 -0
- {airbyte_internal_ops-0.9.1 → airbyte_internal_ops-0.10.0}/src/airbyte_ops_mcp/connector_qa/checks/__init__.py +0 -0
- {airbyte_internal_ops-0.9.1 → airbyte_internal_ops-0.10.0}/src/airbyte_ops_mcp/connector_qa/checks/assets.py +0 -0
- {airbyte_internal_ops-0.9.1 → airbyte_internal_ops-0.10.0}/src/airbyte_ops_mcp/connector_qa/checks/documentation/__init__.py +0 -0
- {airbyte_internal_ops-0.9.1 → airbyte_internal_ops-0.10.0}/src/airbyte_ops_mcp/connector_qa/checks/documentation/documentation.py +0 -0
- {airbyte_internal_ops-0.9.1 → airbyte_internal_ops-0.10.0}/src/airbyte_ops_mcp/connector_qa/checks/documentation/helpers.py +0 -0
- {airbyte_internal_ops-0.9.1 → airbyte_internal_ops-0.10.0}/src/airbyte_ops_mcp/connector_qa/checks/documentation/models.py +0 -0
- {airbyte_internal_ops-0.9.1 → airbyte_internal_ops-0.10.0}/src/airbyte_ops_mcp/connector_qa/checks/documentation/templates/documentation_headers_check_description.md.j2 +0 -0
- {airbyte_internal_ops-0.9.1 → airbyte_internal_ops-0.10.0}/src/airbyte_ops_mcp/connector_qa/checks/documentation/templates/section_content_description.md.j2 +0 -0
- {airbyte_internal_ops-0.9.1 → airbyte_internal_ops-0.10.0}/src/airbyte_ops_mcp/connector_qa/checks/documentation/templates/template.md.j2 +0 -0
- {airbyte_internal_ops-0.9.1 → airbyte_internal_ops-0.10.0}/src/airbyte_ops_mcp/connector_qa/checks/metadata.py +0 -0
- {airbyte_internal_ops-0.9.1 → airbyte_internal_ops-0.10.0}/src/airbyte_ops_mcp/connector_qa/checks/packaging.py +0 -0
- {airbyte_internal_ops-0.9.1 → airbyte_internal_ops-0.10.0}/src/airbyte_ops_mcp/connector_qa/checks/security.py +0 -0
- {airbyte_internal_ops-0.9.1 → airbyte_internal_ops-0.10.0}/src/airbyte_ops_mcp/connector_qa/checks/version.py +0 -0
- {airbyte_internal_ops-0.9.1 → airbyte_internal_ops-0.10.0}/src/airbyte_ops_mcp/connector_qa/cli.py +0 -0
- {airbyte_internal_ops-0.9.1 → airbyte_internal_ops-0.10.0}/src/airbyte_ops_mcp/connector_qa/consts.py +0 -0
- {airbyte_internal_ops-0.9.1 → airbyte_internal_ops-0.10.0}/src/airbyte_ops_mcp/connector_qa/models.py +0 -0
- {airbyte_internal_ops-0.9.1 → airbyte_internal_ops-0.10.0}/src/airbyte_ops_mcp/connector_qa/templates/__init__.py +0 -0
- {airbyte_internal_ops-0.9.1 → airbyte_internal_ops-0.10.0}/src/airbyte_ops_mcp/connector_qa/templates/qa_checks.md.j2 +0 -0
- {airbyte_internal_ops-0.9.1 → airbyte_internal_ops-0.10.0}/src/airbyte_ops_mcp/connector_qa/utils.py +0 -0
- {airbyte_internal_ops-0.9.1 → airbyte_internal_ops-0.10.0}/src/airbyte_ops_mcp/constants.py +0 -0
- {airbyte_internal_ops-0.9.1 → airbyte_internal_ops-0.10.0}/src/airbyte_ops_mcp/docker_hub.py +0 -0
- {airbyte_internal_ops-0.9.1 → airbyte_internal_ops-0.10.0}/src/airbyte_ops_mcp/gcp_auth.py +0 -0
- {airbyte_internal_ops-0.9.1 → airbyte_internal_ops-0.10.0}/src/airbyte_ops_mcp/gcp_logs/__init__.py +0 -0
- {airbyte_internal_ops-0.9.1 → airbyte_internal_ops-0.10.0}/src/airbyte_ops_mcp/gcp_logs/error_lookup.py +0 -0
- {airbyte_internal_ops-0.9.1 → airbyte_internal_ops-0.10.0}/src/airbyte_ops_mcp/github_actions.py +0 -0
- {airbyte_internal_ops-0.9.1 → airbyte_internal_ops-0.10.0}/src/airbyte_ops_mcp/github_api.py +0 -0
- {airbyte_internal_ops-0.9.1 → airbyte_internal_ops-0.10.0}/src/airbyte_ops_mcp/mcp/__init__.py +0 -0
- {airbyte_internal_ops-0.9.1 → airbyte_internal_ops-0.10.0}/src/airbyte_ops_mcp/mcp/_guidance.py +0 -0
- {airbyte_internal_ops-0.9.1 → airbyte_internal_ops-0.10.0}/src/airbyte_ops_mcp/mcp/cloud_connector_versions.py +0 -0
- {airbyte_internal_ops-0.9.1 → airbyte_internal_ops-0.10.0}/src/airbyte_ops_mcp/mcp/connector_analysis.py +0 -0
- {airbyte_internal_ops-0.9.1 → airbyte_internal_ops-0.10.0}/src/airbyte_ops_mcp/mcp/connector_qa.py +0 -0
- {airbyte_internal_ops-0.9.1 → airbyte_internal_ops-0.10.0}/src/airbyte_ops_mcp/mcp/gcp_logs.py +0 -0
- {airbyte_internal_ops-0.9.1 → airbyte_internal_ops-0.10.0}/src/airbyte_ops_mcp/mcp/github_actions.py +0 -0
- {airbyte_internal_ops-0.9.1 → airbyte_internal_ops-0.10.0}/src/airbyte_ops_mcp/mcp/github_repo_ops.py +0 -0
- {airbyte_internal_ops-0.9.1 → airbyte_internal_ops-0.10.0}/src/airbyte_ops_mcp/mcp/metadata.py +0 -0
- {airbyte_internal_ops-0.9.1 → airbyte_internal_ops-0.10.0}/src/airbyte_ops_mcp/mcp/prerelease.py +0 -0
- {airbyte_internal_ops-0.9.1 → airbyte_internal_ops-0.10.0}/src/airbyte_ops_mcp/mcp/prompts.py +0 -0
- {airbyte_internal_ops-0.9.1 → airbyte_internal_ops-0.10.0}/src/airbyte_ops_mcp/mcp/registry.py +0 -0
- {airbyte_internal_ops-0.9.1 → airbyte_internal_ops-0.10.0}/src/airbyte_ops_mcp/mcp/regression_tests.py +0 -0
- {airbyte_internal_ops-0.9.1 → airbyte_internal_ops-0.10.0}/src/airbyte_ops_mcp/metadata_validator.py +0 -0
- {airbyte_internal_ops-0.9.1 → airbyte_internal_ops-0.10.0}/src/airbyte_ops_mcp/prod_db_access/__init__.py +0 -0
- {airbyte_internal_ops-0.9.1 → airbyte_internal_ops-0.10.0}/src/airbyte_ops_mcp/prod_db_access/db_engine.py +0 -0
- {airbyte_internal_ops-0.9.1 → airbyte_internal_ops-0.10.0}/src/airbyte_ops_mcp/prod_db_access/py.typed +0 -0
- {airbyte_internal_ops-0.9.1 → airbyte_internal_ops-0.10.0}/src/airbyte_ops_mcp/py.typed +0 -0
- {airbyte_internal_ops-0.9.1 → airbyte_internal_ops-0.10.0}/src/airbyte_ops_mcp/registry/__init__.py +0 -0
- {airbyte_internal_ops-0.9.1 → airbyte_internal_ops-0.10.0}/src/airbyte_ops_mcp/registry/_gcs_util.py +0 -0
- {airbyte_internal_ops-0.9.1 → airbyte_internal_ops-0.10.0}/src/airbyte_ops_mcp/registry/connector_stubs.py +0 -0
- {airbyte_internal_ops-0.9.1 → airbyte_internal_ops-0.10.0}/src/airbyte_ops_mcp/registry/models.py +0 -0
- {airbyte_internal_ops-0.9.1 → airbyte_internal_ops-0.10.0}/src/airbyte_ops_mcp/registry/publish.py +0 -0
- {airbyte_internal_ops-0.9.1 → airbyte_internal_ops-0.10.0}/src/airbyte_ops_mcp/regression_tests/__init__.py +0 -0
- {airbyte_internal_ops-0.9.1 → airbyte_internal_ops-0.10.0}/src/airbyte_ops_mcp/regression_tests/cdk_secrets.py +0 -0
- {airbyte_internal_ops-0.9.1 → airbyte_internal_ops-0.10.0}/src/airbyte_ops_mcp/regression_tests/ci_output.py +0 -0
- {airbyte_internal_ops-0.9.1 → airbyte_internal_ops-0.10.0}/src/airbyte_ops_mcp/regression_tests/commons/__init__.py +0 -0
- {airbyte_internal_ops-0.9.1 → airbyte_internal_ops-0.10.0}/src/airbyte_ops_mcp/regression_tests/config.py +0 -0
- {airbyte_internal_ops-0.9.1 → airbyte_internal_ops-0.10.0}/src/airbyte_ops_mcp/regression_tests/connection_fetcher.py +0 -0
- {airbyte_internal_ops-0.9.1 → airbyte_internal_ops-0.10.0}/src/airbyte_ops_mcp/regression_tests/connection_secret_retriever.py +0 -0
- {airbyte_internal_ops-0.9.1 → airbyte_internal_ops-0.10.0}/src/airbyte_ops_mcp/regression_tests/connector_runner.py +0 -0
- {airbyte_internal_ops-0.9.1 → airbyte_internal_ops-0.10.0}/src/airbyte_ops_mcp/regression_tests/evaluation_modes.py +0 -0
- {airbyte_internal_ops-0.9.1 → airbyte_internal_ops-0.10.0}/src/airbyte_ops_mcp/regression_tests/http_metrics.py +0 -0
- {airbyte_internal_ops-0.9.1 → airbyte_internal_ops-0.10.0}/src/airbyte_ops_mcp/regression_tests/message_cache/__init__.py +0 -0
- {airbyte_internal_ops-0.9.1 → airbyte_internal_ops-0.10.0}/src/airbyte_ops_mcp/regression_tests/message_cache/duckdb_cache.py +0 -0
- {airbyte_internal_ops-0.9.1 → airbyte_internal_ops-0.10.0}/src/airbyte_ops_mcp/regression_tests/models.py +0 -0
- {airbyte_internal_ops-0.9.1 → airbyte_internal_ops-0.10.0}/src/airbyte_ops_mcp/regression_tests/obfuscation.py +0 -0
- {airbyte_internal_ops-0.9.1 → airbyte_internal_ops-0.10.0}/src/airbyte_ops_mcp/regression_tests/regression/__init__.py +0 -0
- {airbyte_internal_ops-0.9.1 → airbyte_internal_ops-0.10.0}/src/airbyte_ops_mcp/regression_tests/regression/comparators.py +0 -0
- {airbyte_internal_ops-0.9.1 → airbyte_internal_ops-0.10.0}/src/airbyte_ops_mcp/regression_tests/schema_generation.py +0 -0
- {airbyte_internal_ops-0.9.1 → airbyte_internal_ops-0.10.0}/src/airbyte_ops_mcp/regression_tests/validation/__init__.py +0 -0
- {airbyte_internal_ops-0.9.1 → airbyte_internal_ops-0.10.0}/src/airbyte_ops_mcp/regression_tests/validation/catalog_validators.py +0 -0
- {airbyte_internal_ops-0.9.1 → airbyte_internal_ops-0.10.0}/src/airbyte_ops_mcp/regression_tests/validation/record_validators.py +0 -0
- {airbyte_internal_ops-0.9.1 → airbyte_internal_ops-0.10.0}/src/airbyte_ops_mcp/telemetry.py +0 -0
- {airbyte_internal_ops-0.9.1 → airbyte_internal_ops-0.10.0}/tests/__init__.py +0 -0
- {airbyte_internal_ops-0.9.1 → airbyte_internal_ops-0.10.0}/tests/legacy/airbyte_ci/connector_erd_generator/__init__.py +0 -0
- {airbyte_internal_ops-0.9.1 → airbyte_internal_ops-0.10.0}/tests/legacy/airbyte_ci/connector_erd_generator/builder.py +0 -0
- {airbyte_internal_ops-0.9.1 → airbyte_internal_ops-0.10.0}/tests/legacy/airbyte_ci/connector_erd_generator/test_dbml_assembler.py +0 -0
- {airbyte_internal_ops-0.9.1 → airbyte_internal_ops-0.10.0}/tests/legacy/airbyte_ci/connector_erd_generator/test_relationships.py +0 -0
- {airbyte_internal_ops-0.9.1 → airbyte_internal_ops-0.10.0}/tests/legacy/airbyte_ci/connector_ops/conftest.py +0 -0
- {airbyte_internal_ops-0.9.1 → airbyte_internal_ops-0.10.0}/tests/legacy/airbyte_ci/connector_ops/test_migration_files/bad-header.md +0 -0
- {airbyte_internal_ops-0.9.1 → airbyte_internal_ops-0.10.0}/tests/legacy/airbyte_ci/connector_ops/test_migration_files/bad-title.md +0 -0
- {airbyte_internal_ops-0.9.1 → airbyte_internal_ops-0.10.0}/tests/legacy/airbyte_ci/connector_ops/test_migration_files/extra-header.md +0 -0
- {airbyte_internal_ops-0.9.1 → airbyte_internal_ops-0.10.0}/tests/legacy/airbyte_ci/connector_ops/test_migration_files/missing-entry.md +0 -0
- {airbyte_internal_ops-0.9.1 → airbyte_internal_ops-0.10.0}/tests/legacy/airbyte_ci/connector_ops/test_migration_files/out-of-order.md +0 -0
- {airbyte_internal_ops-0.9.1 → airbyte_internal_ops-0.10.0}/tests/legacy/airbyte_ci/connector_ops/test_utils.py +0 -0
- {airbyte_internal_ops-0.9.1 → airbyte_internal_ops-0.10.0}/tests/legacy/airbyte_ci/connector_qa/__init__.py +0 -0
- {airbyte_internal_ops-0.9.1 → airbyte_internal_ops-0.10.0}/tests/legacy/airbyte_ci/connector_qa/conftest.py +0 -0
- {airbyte_internal_ops-0.9.1 → airbyte_internal_ops-0.10.0}/tests/legacy/airbyte_ci/connector_qa/integration_tests/__init__.py +0 -0
- {airbyte_internal_ops-0.9.1 → airbyte_internal_ops-0.10.0}/tests/legacy/airbyte_ci/connector_qa/integration_tests/test_documentation.py +0 -0
- {airbyte_internal_ops-0.9.1 → airbyte_internal_ops-0.10.0}/tests/legacy/airbyte_ci/connector_qa/unit_tests/__init__.py +0 -0
- {airbyte_internal_ops-0.9.1 → airbyte_internal_ops-0.10.0}/tests/legacy/airbyte_ci/connector_qa/unit_tests/test_checks/__init__.py +0 -0
- {airbyte_internal_ops-0.9.1 → airbyte_internal_ops-0.10.0}/tests/legacy/airbyte_ci/connector_qa/unit_tests/test_checks/data/docs/correct.md +0 -0
- {airbyte_internal_ops-0.9.1 → airbyte_internal_ops-0.10.0}/tests/legacy/airbyte_ci/connector_qa/unit_tests/test_checks/data/docs/incorrect_not_all_structure.md +0 -0
- {airbyte_internal_ops-0.9.1 → airbyte_internal_ops-0.10.0}/tests/legacy/airbyte_ci/connector_qa/unit_tests/test_checks/data/docs/invalid_links.md +0 -0
- {airbyte_internal_ops-0.9.1 → airbyte_internal_ops-0.10.0}/tests/legacy/airbyte_ci/connector_qa/unit_tests/test_checks/test_assets.py +0 -0
- {airbyte_internal_ops-0.9.1 → airbyte_internal_ops-0.10.0}/tests/legacy/airbyte_ci/connector_qa/unit_tests/test_checks/test_documentation.py +0 -0
- {airbyte_internal_ops-0.9.1 → airbyte_internal_ops-0.10.0}/tests/legacy/airbyte_ci/connector_qa/unit_tests/test_checks/test_metadata.py +0 -0
- {airbyte_internal_ops-0.9.1 → airbyte_internal_ops-0.10.0}/tests/legacy/airbyte_ci/connector_qa/unit_tests/test_checks/test_packaging.py +0 -0
- {airbyte_internal_ops-0.9.1 → airbyte_internal_ops-0.10.0}/tests/legacy/airbyte_ci/connector_qa/unit_tests/test_checks/test_security.py +0 -0
- {airbyte_internal_ops-0.9.1 → airbyte_internal_ops-0.10.0}/tests/legacy/airbyte_ci/connector_qa/unit_tests/test_checks/test_version.py +0 -0
- {airbyte_internal_ops-0.9.1 → airbyte_internal_ops-0.10.0}/tests/legacy/airbyte_ci/connector_qa/unit_tests/test_models.py +0 -0
- {airbyte_internal_ops-0.9.1 → airbyte_internal_ops-0.10.0}/tests/legacy/airbyte_ci/pipelines/__init__.py +0 -0
- {airbyte_internal_ops-0.9.1 → airbyte_internal_ops-0.10.0}/tests/legacy/airbyte_ci/pipelines/conftest.py +0 -0
- {airbyte_internal_ops-0.9.1 → airbyte_internal_ops-0.10.0}/tests/legacy/airbyte_ci/pipelines/test_actions/test_environments.py +0 -0
- {airbyte_internal_ops-0.9.1 → airbyte_internal_ops-0.10.0}/tests/legacy/airbyte_ci/pipelines/test_bases.py +0 -0
- {airbyte_internal_ops-0.9.1 → airbyte_internal_ops-0.10.0}/tests/legacy/airbyte_ci/pipelines/test_build_image/__init__.py +0 -0
- {airbyte_internal_ops-0.9.1 → airbyte_internal_ops-0.10.0}/tests/legacy/airbyte_ci/pipelines/test_build_image/dummy_build_customization.py +0 -0
- {airbyte_internal_ops-0.9.1 → airbyte_internal_ops-0.10.0}/tests/legacy/airbyte_ci/pipelines/test_build_image/test_manifest_only_connectors.py +0 -0
- {airbyte_internal_ops-0.9.1 → airbyte_internal_ops-0.10.0}/tests/legacy/airbyte_ci/pipelines/test_build_image/test_python_connectors.py +0 -0
- {airbyte_internal_ops-0.9.1 → airbyte_internal_ops-0.10.0}/tests/legacy/airbyte_ci/pipelines/test_build_image/test_steps/test_common.py +0 -0
- {airbyte_internal_ops-0.9.1 → airbyte_internal_ops-0.10.0}/tests/legacy/airbyte_ci/pipelines/test_changelog/initial_files/changelog_header_no_newline.md +0 -0
- {airbyte_internal_ops-0.9.1 → airbyte_internal_ops-0.10.0}/tests/legacy/airbyte_ci/pipelines/test_changelog/initial_files/changelog_header_no_separator.md +0 -0
- {airbyte_internal_ops-0.9.1 → airbyte_internal_ops-0.10.0}/tests/legacy/airbyte_ci/pipelines/test_changelog/initial_files/no_changelog_header.md +0 -0
- {airbyte_internal_ops-0.9.1 → airbyte_internal_ops-0.10.0}/tests/legacy/airbyte_ci/pipelines/test_changelog/initial_files/valid_changelog_at_end.md +0 -0
- {airbyte_internal_ops-0.9.1 → airbyte_internal_ops-0.10.0}/tests/legacy/airbyte_ci/pipelines/test_changelog/initial_files/valid_changelog_in_middle.md +0 -0
- {airbyte_internal_ops-0.9.1 → airbyte_internal_ops-0.10.0}/tests/legacy/airbyte_ci/pipelines/test_changelog/result_files/changelog_header_no_newline.md +0 -0
- {airbyte_internal_ops-0.9.1 → airbyte_internal_ops-0.10.0}/tests/legacy/airbyte_ci/pipelines/test_changelog/result_files/changelog_header_no_separator.md +0 -0
- {airbyte_internal_ops-0.9.1 → airbyte_internal_ops-0.10.0}/tests/legacy/airbyte_ci/pipelines/test_changelog/result_files/dupicate_version_date_valid_changelog_at_end.md +0 -0
- {airbyte_internal_ops-0.9.1 → airbyte_internal_ops-0.10.0}/tests/legacy/airbyte_ci/pipelines/test_changelog/result_files/dupicate_version_date_valid_changelog_in_middle.md +0 -0
- {airbyte_internal_ops-0.9.1 → airbyte_internal_ops-0.10.0}/tests/legacy/airbyte_ci/pipelines/test_changelog/result_files/dupicate_versions_valid_changelog_at_end.md +0 -0
- {airbyte_internal_ops-0.9.1 → airbyte_internal_ops-0.10.0}/tests/legacy/airbyte_ci/pipelines/test_changelog/result_files/dupicate_versions_valid_changelog_in_middle.md +0 -0
- {airbyte_internal_ops-0.9.1 → airbyte_internal_ops-0.10.0}/tests/legacy/airbyte_ci/pipelines/test_changelog/result_files/duplicate_entry_valid_changelog_at_end.md +0 -0
- {airbyte_internal_ops-0.9.1 → airbyte_internal_ops-0.10.0}/tests/legacy/airbyte_ci/pipelines/test_changelog/result_files/duplicate_entry_valid_changelog_in_middle.md +0 -0
- {airbyte_internal_ops-0.9.1 → airbyte_internal_ops-0.10.0}/tests/legacy/airbyte_ci/pipelines/test_changelog/result_files/existing_entries_valid_changelog_at_end.md +0 -0
- {airbyte_internal_ops-0.9.1 → airbyte_internal_ops-0.10.0}/tests/legacy/airbyte_ci/pipelines/test_changelog/result_files/existing_entries_valid_changelog_in_middle.md +0 -0
- {airbyte_internal_ops-0.9.1 → airbyte_internal_ops-0.10.0}/tests/legacy/airbyte_ci/pipelines/test_changelog/result_files/no_changelog_header.md +0 -0
- {airbyte_internal_ops-0.9.1 → airbyte_internal_ops-0.10.0}/tests/legacy/airbyte_ci/pipelines/test_changelog/result_files/single_insert_valid_changelog_at_end.md +0 -0
- {airbyte_internal_ops-0.9.1 → airbyte_internal_ops-0.10.0}/tests/legacy/airbyte_ci/pipelines/test_changelog/result_files/single_insert_valid_changelog_in_middle.md +0 -0
- {airbyte_internal_ops-0.9.1 → airbyte_internal_ops-0.10.0}/tests/legacy/airbyte_ci/pipelines/test_changelog.py +0 -0
- {airbyte_internal_ops-0.9.1 → airbyte_internal_ops-0.10.0}/tests/legacy/airbyte_ci/pipelines/test_cli/__init__.py +0 -0
- {airbyte_internal_ops-0.9.1 → airbyte_internal_ops-0.10.0}/tests/legacy/airbyte_ci/pipelines/test_cli/test_click_decorators.py +0 -0
- {airbyte_internal_ops-0.9.1 → airbyte_internal_ops-0.10.0}/tests/legacy/airbyte_ci/pipelines/test_commands/__init__.py +0 -0
- {airbyte_internal_ops-0.9.1 → airbyte_internal_ops-0.10.0}/tests/legacy/airbyte_ci/pipelines/test_commands/test_groups/__init__.py +0 -0
- {airbyte_internal_ops-0.9.1 → airbyte_internal_ops-0.10.0}/tests/legacy/airbyte_ci/pipelines/test_commands/test_groups/test_connectors.py +0 -0
- {airbyte_internal_ops-0.9.1 → airbyte_internal_ops-0.10.0}/tests/legacy/airbyte_ci/pipelines/test_dagger/__init__.py +0 -0
- {airbyte_internal_ops-0.9.1 → airbyte_internal_ops-0.10.0}/tests/legacy/airbyte_ci/pipelines/test_dagger/test_actions/__init__.py +0 -0
- {airbyte_internal_ops-0.9.1 → airbyte_internal_ops-0.10.0}/tests/legacy/airbyte_ci/pipelines/test_dagger/test_actions/test_python/__init__.py +0 -0
- {airbyte_internal_ops-0.9.1 → airbyte_internal_ops-0.10.0}/tests/legacy/airbyte_ci/pipelines/test_dagger/test_actions/test_python/test_common.py +0 -0
- {airbyte_internal_ops-0.9.1 → airbyte_internal_ops-0.10.0}/tests/legacy/airbyte_ci/pipelines/test_gradle.py +0 -0
- {airbyte_internal_ops-0.9.1 → airbyte_internal_ops-0.10.0}/tests/legacy/airbyte_ci/pipelines/test_helpers/__init__.py +0 -0
- {airbyte_internal_ops-0.9.1 → airbyte_internal_ops-0.10.0}/tests/legacy/airbyte_ci/pipelines/test_helpers/test_execution/__init__.py +0 -0
- {airbyte_internal_ops-0.9.1 → airbyte_internal_ops-0.10.0}/tests/legacy/airbyte_ci/pipelines/test_helpers/test_execution/test_argument_parsing.py +0 -0
- {airbyte_internal_ops-0.9.1 → airbyte_internal_ops-0.10.0}/tests/legacy/airbyte_ci/pipelines/test_helpers/test_execution/test_run_steps.py +0 -0
- {airbyte_internal_ops-0.9.1 → airbyte_internal_ops-0.10.0}/tests/legacy/airbyte_ci/pipelines/test_helpers/test_pip.py +0 -0
- {airbyte_internal_ops-0.9.1 → airbyte_internal_ops-0.10.0}/tests/legacy/airbyte_ci/pipelines/test_helpers/test_utils.py +0 -0
- {airbyte_internal_ops-0.9.1 → airbyte_internal_ops-0.10.0}/tests/legacy/airbyte_ci/pipelines/test_models/__init__.py +0 -0
- {airbyte_internal_ops-0.9.1 → airbyte_internal_ops-0.10.0}/tests/legacy/airbyte_ci/pipelines/test_models/test_click_pipeline_context.py +0 -0
- {airbyte_internal_ops-0.9.1 → airbyte_internal_ops-0.10.0}/tests/legacy/airbyte_ci/pipelines/test_models/test_singleton.py +0 -0
- {airbyte_internal_ops-0.9.1 → airbyte_internal_ops-0.10.0}/tests/legacy/airbyte_ci/pipelines/test_poetry/test_poetry_publish.py +0 -0
- {airbyte_internal_ops-0.9.1 → airbyte_internal_ops-0.10.0}/tests/legacy/airbyte_ci/pipelines/test_publish.py +0 -0
- {airbyte_internal_ops-0.9.1 → airbyte_internal_ops-0.10.0}/tests/legacy/airbyte_ci/pipelines/test_steps/__init__.py +0 -0
- {airbyte_internal_ops-0.9.1 → airbyte_internal_ops-0.10.0}/tests/legacy/airbyte_ci/pipelines/test_steps/test_simple_docker_step.py +0 -0
- {airbyte_internal_ops-0.9.1 → airbyte_internal_ops-0.10.0}/tests/legacy/airbyte_ci/pipelines/test_steps/test_version_check.py +0 -0
- {airbyte_internal_ops-0.9.1 → airbyte_internal_ops-0.10.0}/tests/legacy/airbyte_ci/pipelines/test_tests/__init__.py +0 -0
- {airbyte_internal_ops-0.9.1 → airbyte_internal_ops-0.10.0}/tests/legacy/airbyte_ci/pipelines/test_tests/test_common.py +0 -0
- {airbyte_internal_ops-0.9.1 → airbyte_internal_ops-0.10.0}/tests/legacy/airbyte_ci/pipelines/test_tests/test_python_connectors.py +0 -0
- {airbyte_internal_ops-0.9.1 → airbyte_internal_ops-0.10.0}/tests/legacy/airbyte_ci/pipelines/test_upgrade_java_cdk.py +0 -0
- {airbyte_internal_ops-0.9.1 → airbyte_internal_ops-0.10.0}/tests/legacy/airbyte_ci/pipelines/utils.py +0 -0
- {airbyte_internal_ops-0.9.1 → airbyte_internal_ops-0.10.0}/tests/test_airbyte_admin_mcp.py +0 -0
- {airbyte_internal_ops-0.9.1 → airbyte_internal_ops-0.10.0}/tests/test_bump_version.py +0 -0
- {airbyte_internal_ops-0.9.1 → airbyte_internal_ops-0.10.0}/tests/test_cli_registry.py +0 -0
- {airbyte_internal_ops-0.9.1 → airbyte_internal_ops-0.10.0}/tests/test_connector_stubs.py +0 -0
- {airbyte_internal_ops-0.9.1 → airbyte_internal_ops-0.10.0}/tests/test_list_connectors.py +0 -0
- {airbyte_internal_ops-0.9.1 → airbyte_internal_ops-0.10.0}/tests/test_prerelease.py +0 -0
- {airbyte_internal_ops-0.9.1 → airbyte_internal_ops-0.10.0}/tests/test_sentry.py +0 -0
- {airbyte_internal_ops-0.9.1 → airbyte_internal_ops-0.10.0}/uv.lock +0 -0
{airbyte_internal_ops-0.9.1 → airbyte_internal_ops-0.10.0}/.github/workflows/semantic-pr-check.yml
RENAMED
|
@@ -25,7 +25,7 @@ jobs:
|
|
|
25
25
|
runs-on: ubuntu-latest
|
|
26
26
|
steps:
|
|
27
27
|
- name: Check semantic PR title
|
|
28
|
-
uses: amannn/action-semantic-pull-request@
|
|
28
|
+
uses: amannn/action-semantic-pull-request@v6
|
|
29
29
|
if: ${{ github.event.pull_request.draft == false }}
|
|
30
30
|
env:
|
|
31
31
|
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
|
|
@@ -47,7 +47,7 @@ jobs:
|
|
|
47
47
|
|
|
48
48
|
- name: Check for "do not merge" in PR title
|
|
49
49
|
if: ${{ github.event.pull_request.draft == false }}
|
|
50
|
-
uses: actions/github-script@
|
|
50
|
+
uses: actions/github-script@v8
|
|
51
51
|
with:
|
|
52
52
|
script: |
|
|
53
53
|
const title = context.payload.pull_request.title.toLowerCase();
|
|
@@ -84,7 +84,7 @@ jobs:
|
|
|
84
84
|
- name: Get PR info (slash command only)
|
|
85
85
|
if: steps.context.outputs.has_pr == 'true'
|
|
86
86
|
id: pr-info
|
|
87
|
-
uses: actions/github-script@
|
|
87
|
+
uses: actions/github-script@v8
|
|
88
88
|
with:
|
|
89
89
|
script: |
|
|
90
90
|
const { data: pr } = await github.rest.pulls.get({
|
|
@@ -149,7 +149,7 @@ jobs:
|
|
|
149
149
|
- name: Download state artifact
|
|
150
150
|
id: download-state
|
|
151
151
|
continue-on-error: true
|
|
152
|
-
uses: dawidd6/action-download-artifact@
|
|
152
|
+
uses: dawidd6/action-download-artifact@v13
|
|
153
153
|
with:
|
|
154
154
|
name: ${{ env.STATE_ARTIFACT_NAME }}
|
|
155
155
|
path: ${{ env.PULUMI_BACKEND_DIR }}
|
{airbyte_internal_ops-0.9.1 → airbyte_internal_ops-0.10.0}/.github/workflows/sentry-preview.yml
RENAMED
|
@@ -62,7 +62,7 @@ jobs:
|
|
|
62
62
|
- name: Download state artifact
|
|
63
63
|
id: download-state
|
|
64
64
|
continue-on-error: true
|
|
65
|
-
uses: dawidd6/action-download-artifact@
|
|
65
|
+
uses: dawidd6/action-download-artifact@v13
|
|
66
66
|
with:
|
|
67
67
|
name: ${{ env.STATE_ARTIFACT_NAME }}
|
|
68
68
|
path: ${{ env.PULUMI_BACKEND_DIR }}
|
|
@@ -127,7 +127,7 @@ jobs:
|
|
|
127
127
|
echo "EOF" >> $GITHUB_OUTPUT
|
|
128
128
|
|
|
129
129
|
- name: Find existing preview comment
|
|
130
|
-
uses: peter-evans/find-comment@
|
|
130
|
+
uses: peter-evans/find-comment@v4
|
|
131
131
|
id: find-comment
|
|
132
132
|
with:
|
|
133
133
|
issue-number: ${{ github.event.pull_request.number }}
|
|
@@ -0,0 +1,464 @@
|
|
|
1
|
+
# Connector Progressive Rollouts
|
|
2
|
+
|
|
3
|
+
This document describes the process for managing connector progressive rollouts in Airbyte Cloud. Progressive rollouts allow gradual migration of customers to new connector versions, enabling monitoring and rollback capabilities before full release.
|
|
4
|
+
|
|
5
|
+
## Overview
|
|
6
|
+
|
|
7
|
+
Progressive rollouts provide a controlled way to release new connector versions:
|
|
8
|
+
|
|
9
|
+
- **Release Candidates (RCs)**: Pre-release versions (e.g., `0.1.0-rc.1`) that can be tested with a subset of customers
|
|
10
|
+
- **Gradual Migration**: Customers are progressively migrated from the stable version to the RC
|
|
11
|
+
- **Monitoring**: Track success/failure rates during the rollout
|
|
12
|
+
- **Rollback Capability**: If issues are detected, the rollout can be paused or rolled back
|
|
13
|
+
|
|
14
|
+
## Progressive Rollout Lifecycle
|
|
15
|
+
|
|
16
|
+
1. [Initialize](#1-initialize) - Prepare metadata.yaml and verify rollout status
|
|
17
|
+
2. [Start Workflow](#2-start-workflow) - Begin the rollout workflow
|
|
18
|
+
3. [Manually Pin Actors](#3-manually-pin-actors-optional) - Pin specific actors for early testing (optional)
|
|
19
|
+
4. [Monitor](#4-monitor) - Track rollout progress and performance
|
|
20
|
+
5. [Pause/Resume](#5-pauseresume-optional) - Pause if issues detected (optional)
|
|
21
|
+
6. [Finalize](#6-finalize) - Promote, rollback, or cancel the rollout
|
|
22
|
+
7. [Cleanup](#7-cleanup) - Remove version pins after completion
|
|
23
|
+
|
|
24
|
+
### 1. Initialize
|
|
25
|
+
|
|
26
|
+
Prepare the connector for progressive rollout and confirm the rollout is ready to start.
|
|
27
|
+
|
|
28
|
+
**Steps:**
|
|
29
|
+
|
|
30
|
+
1. **Mark the PR for progressive rollout**: Use the CLI tool to configure the connector's `metadata.yaml`:
|
|
31
|
+
```bash
|
|
32
|
+
airbyte-ops repo connector setup-progressive-rollout \
|
|
33
|
+
--name <connector-name> \
|
|
34
|
+
--repo-path /path/to/airbyte-enterprise \
|
|
35
|
+
--rc-version <version> # Optional, defaults to next minor with -rc.1 suffix
|
|
36
|
+
```
|
|
37
|
+
|
|
38
|
+
This command:
|
|
39
|
+
- Sets `dockerImageTag` to the RC version
|
|
40
|
+
- Adds `registryOverrides.cloud.dockerImageTag` to pin Cloud users to the current stable version
|
|
41
|
+
- Adds `registryOverrides.oss.dockerImageTag` to pin OSS users to the current stable version
|
|
42
|
+
- Enables `releases.rolloutConfiguration.enableProgressiveRollout: true`
|
|
43
|
+
|
|
44
|
+
2. **Merge the PR**: Once the metadata.yaml changes are reviewed and approved, merge the PR.
|
|
45
|
+
|
|
46
|
+
3. **Verify initialization**: The connector will be automatically published after the PR is merged. Wait for the publish workflow to complete (typically a few minutes), then confirm the rollout appears in the database with "initialized" status:
|
|
47
|
+
```bash
|
|
48
|
+
# Using the MCP tool
|
|
49
|
+
poe mcp-tool-test query_prod_connector_rollouts '{"actor_definition_id": "<connector-uuid>"}'
|
|
50
|
+
```
|
|
51
|
+
|
|
52
|
+
The rollout should show `state: "initialized"`.
|
|
53
|
+
|
|
54
|
+
### 2. Start Workflow
|
|
55
|
+
|
|
56
|
+
Start the rollout workflow to begin the progressive migration process.
|
|
57
|
+
|
|
58
|
+
**Tool:** `start_connector_rollout`
|
|
59
|
+
|
|
60
|
+
> [!NOTE]
|
|
61
|
+
> This step requires [human approval](#appendix-approval-comment-urls).
|
|
62
|
+
|
|
63
|
+
```bash
|
|
64
|
+
poe mcp-tool-test start_connector_rollout '{
|
|
65
|
+
"docker_repository": "airbyte/source-example",
|
|
66
|
+
"docker_image_tag": "1.0.0-rc.1",
|
|
67
|
+
"actor_definition_id": "<connector-uuid>",
|
|
68
|
+
"approval_comment_url": "<github-comment-url>",
|
|
69
|
+
"rollout_strategy": "manual",
|
|
70
|
+
"initial_rollout_pct": 25,
|
|
71
|
+
"final_target_rollout_pct": 50
|
|
72
|
+
}'
|
|
73
|
+
```
|
|
74
|
+
|
|
75
|
+
**Parameters:**
|
|
76
|
+
|
|
77
|
+
- `docker_repository`: The docker repository (e.g., `airbyte/source-pokeapi`)
|
|
78
|
+
- `docker_image_tag`: The RC version tag (e.g., `0.3.48-rc.1`)
|
|
79
|
+
- `actor_definition_id`: The connector's UUID
|
|
80
|
+
- `approval_comment_url`: GitHub comment URL from an @airbyte.io user authorizing the action
|
|
81
|
+
- `rollout_strategy`: One of `manual`, `automated`, or `overridden` (default: `manual`)
|
|
82
|
+
- `initial_rollout_pct`: Step size percentage for rollout progression (default: 25%)
|
|
83
|
+
- `final_target_rollout_pct`: Maximum percentage of actors to pin (default: 50%)
|
|
84
|
+
|
|
85
|
+
**Important: Multiple Calls Supported**
|
|
86
|
+
|
|
87
|
+
This tool can be called multiple times while the rollout is in `INITIALIZED` state to update the configuration (strategy, percentages). Once the Temporal workflow starts and the state transitions to `WORKFLOW_STARTED`, the configuration is locked and cannot be changed.
|
|
88
|
+
|
|
89
|
+
<!-- TODO: Determine and document the recommended approach for configuring rollouts
|
|
90
|
+
https://github.com/airbytehq/airbyte-ops-mcp/issues/322 -->
|
|
91
|
+
|
|
92
|
+
**Authorization:** The start tool requires:
|
|
93
|
+
|
|
94
|
+
- `AIRBYTE_INTERNAL_ADMIN_FLAG=airbyte.io` environment variable
|
|
95
|
+
- A GitHub comment URL from an @airbyte.io user authorizing the action
|
|
96
|
+
|
|
97
|
+
After starting, the rollout state transitions to `"workflow_started"` and then `"in_progress"`.
|
|
98
|
+
|
|
99
|
+
### 3. Manually Pin Actors (Optional)
|
|
100
|
+
|
|
101
|
+
Before or during the rollout, you can manually pin specific actors (sources/destinations) to the RC version for early testing.
|
|
102
|
+
|
|
103
|
+
**Tools:** Use existing ops-mcp actor pinning tools:
|
|
104
|
+
|
|
105
|
+
- `set_workspace_connector_version_override` - Pin all actors in a workspace
|
|
106
|
+
- `set_cloud_connector_version_override` - Set version overrides at the cloud level
|
|
107
|
+
|
|
108
|
+
> [!NOTE]
|
|
109
|
+
> These tools require [human approval](#appendix-approval-comment-urls).
|
|
110
|
+
|
|
111
|
+
This is useful for:
|
|
112
|
+
|
|
113
|
+
- Testing with internal workspaces before broader rollout
|
|
114
|
+
- Targeting specific customers who have agreed to beta test
|
|
115
|
+
- Validating fixes for customer-reported issues
|
|
116
|
+
|
|
117
|
+
### 4. Monitor
|
|
118
|
+
|
|
119
|
+
Track the rollout progress and performance of the RC version. This step is performed repeatedly throughout the rollout.
|
|
120
|
+
|
|
121
|
+
**Tool:** `query_prod_rollout_monitoring_stats`
|
|
122
|
+
|
|
123
|
+
```bash
|
|
124
|
+
poe mcp-tool-test query_prod_rollout_monitoring_stats '{"rollout_id": "<rollout-uuid>", "days_back": 7}'
|
|
125
|
+
```
|
|
126
|
+
|
|
127
|
+
**Returns:**
|
|
128
|
+
|
|
129
|
+
- **Aggregate stats:**
|
|
130
|
+
- `num_actors`: Total actors using this connector
|
|
131
|
+
- `num_actors_pinned`: Actors with any version pin (eligible or already pinned)
|
|
132
|
+
- `num_pinned_to_rollout`: Actors specifically pinned to this rollout's RC version
|
|
133
|
+
|
|
134
|
+
- **Per-actor stats:**
|
|
135
|
+
- `actor_id`: The actor UUID
|
|
136
|
+
- `num_succeeded`: Number of successful syncs in the lookback period
|
|
137
|
+
- `num_failed`: Number of failed syncs in the lookback period
|
|
138
|
+
- `num_connections`: Number of connections using this actor
|
|
139
|
+
|
|
140
|
+
**What to look for:**
|
|
141
|
+
|
|
142
|
+
- Compare success/failure rates between RC and stable versions
|
|
143
|
+
- Watch for any actors with unusually high failure rates
|
|
144
|
+
- Monitor the progression of `num_pinned_to_rollout` as the rollout advances
|
|
145
|
+
|
|
146
|
+
### 5. Pause/Resume (Optional)
|
|
147
|
+
|
|
148
|
+
If issues are detected during monitoring, the rollout can be paused to prevent further customer migration.
|
|
149
|
+
|
|
150
|
+
**Tools:** <!-- TODO: Implement pause_rollout and resume_rollout MCP tools - https://github.com/airbytehq/airbyte-ops-mcp/issues/323 -->
|
|
151
|
+
|
|
152
|
+
```bash
|
|
153
|
+
# TODO: Document pause/resume commands once implemented
|
|
154
|
+
# https://github.com/airbytehq/airbyte-ops-mcp/issues/323
|
|
155
|
+
```
|
|
156
|
+
|
|
157
|
+
**When to pause:**
|
|
158
|
+
|
|
159
|
+
- Significant increase in failure rates compared to stable version
|
|
160
|
+
- Customer-reported issues specific to the RC version
|
|
161
|
+
- Infrastructure issues affecting the rollout
|
|
162
|
+
|
|
163
|
+
### 6. Finalize
|
|
164
|
+
|
|
165
|
+
Complete the rollout with one of three outcomes:
|
|
166
|
+
|
|
167
|
+
**Tool:** `finalize_connector_rollout`
|
|
168
|
+
|
|
169
|
+
> [!NOTE]
|
|
170
|
+
> This step requires [human approval](#appendix-approval-comment-urls).
|
|
171
|
+
|
|
172
|
+
#### Promote to GA (succeeded)
|
|
173
|
+
|
|
174
|
+
The RC is performing well and should become the new stable version:
|
|
175
|
+
|
|
176
|
+
```bash
|
|
177
|
+
poe mcp-tool-test finalize_connector_rollout '{
|
|
178
|
+
"docker_repository": "airbyte/source-example",
|
|
179
|
+
"docker_image_tag": "1.0.0-rc.1",
|
|
180
|
+
"actor_definition_id": "<connector-uuid>",
|
|
181
|
+
"rollout_id": "<rollout-uuid>",
|
|
182
|
+
"state": "succeeded",
|
|
183
|
+
"approval_comment_url": "<github-comment-url>"
|
|
184
|
+
}'
|
|
185
|
+
```
|
|
186
|
+
|
|
187
|
+
#### Rollback (failed_rolled_back)
|
|
188
|
+
|
|
189
|
+
Issues were found and the RC should not be released:
|
|
190
|
+
|
|
191
|
+
```bash
|
|
192
|
+
poe mcp-tool-test finalize_connector_rollout '{
|
|
193
|
+
"docker_repository": "airbyte/source-example",
|
|
194
|
+
"docker_image_tag": "1.0.0-rc.1",
|
|
195
|
+
"actor_definition_id": "<connector-uuid>",
|
|
196
|
+
"rollout_id": "<rollout-uuid>",
|
|
197
|
+
"state": "failed_rolled_back",
|
|
198
|
+
"approval_comment_url": "<github-comment-url>",
|
|
199
|
+
"error_msg": "High failure rate detected",
|
|
200
|
+
"failed_reason": "FOUND_ISSUES"
|
|
201
|
+
}'
|
|
202
|
+
```
|
|
203
|
+
|
|
204
|
+
#### Cancel
|
|
205
|
+
|
|
206
|
+
The rollout should be stopped without completing:
|
|
207
|
+
|
|
208
|
+
```bash
|
|
209
|
+
poe mcp-tool-test finalize_connector_rollout '{
|
|
210
|
+
"docker_repository": "airbyte/source-example",
|
|
211
|
+
"docker_image_tag": "1.0.0-rc.1",
|
|
212
|
+
"actor_definition_id": "<connector-uuid>",
|
|
213
|
+
"rollout_id": "<rollout-uuid>",
|
|
214
|
+
"state": "canceled",
|
|
215
|
+
"approval_comment_url": "<github-comment-url>",
|
|
216
|
+
"retain_pins_on_cancellation": false
|
|
217
|
+
}'
|
|
218
|
+
```
|
|
219
|
+
|
|
220
|
+
**Authorization:** The finalize tool requires:
|
|
221
|
+
|
|
222
|
+
- `AIRBYTE_INTERNAL_ADMIN_FLAG=airbyte.io` environment variable
|
|
223
|
+
- A GitHub comment URL from an @airbyte.io user authorizing the action
|
|
224
|
+
|
|
225
|
+
### 7. Cleanup
|
|
226
|
+
|
|
227
|
+
After a successful rollout, remove the version pins from metadata.yaml.
|
|
228
|
+
|
|
229
|
+
**Tool:** `airbyte-ops repo connector cleanup-progressive-rollout`
|
|
230
|
+
|
|
231
|
+
```bash
|
|
232
|
+
airbyte-ops repo connector cleanup-progressive-rollout \
|
|
233
|
+
--name source-github \
|
|
234
|
+
--repo-path /path/to/airbyte
|
|
235
|
+
```
|
|
236
|
+
|
|
237
|
+
This step:
|
|
238
|
+
|
|
239
|
+
- Removes `registryOverrides.cloud.dockerImageTag`
|
|
240
|
+
- Removes `registryOverrides.oss.dockerImageTag`
|
|
241
|
+
- Updates `dockerImageTag` to the GA version (removing `-rc.X` suffix)
|
|
242
|
+
- Removes or sets `releases.rolloutConfiguration.enableProgressiveRollout: false`
|
|
243
|
+
|
|
244
|
+
## Rollout States
|
|
245
|
+
|
|
246
|
+
| State | Description |
|
|
247
|
+
|-------|-------------|
|
|
248
|
+
| `initialized` | Rollout created, waiting to start |
|
|
249
|
+
| `workflow_started` | Rollout workflow has been triggered |
|
|
250
|
+
| `in_progress` | Actively migrating customers to RC |
|
|
251
|
+
| `paused` | Rollout temporarily stopped |
|
|
252
|
+
| `finalizing` | Completing the rollout |
|
|
253
|
+
| `succeeded` | RC promoted to GA |
|
|
254
|
+
| `failed_rolled_back` | RC rolled back due to issues |
|
|
255
|
+
| `canceled` | Rollout canceled |
|
|
256
|
+
| `errored` | Rollout encountered an error |
|
|
257
|
+
|
|
258
|
+
## Automated Decision Logic
|
|
259
|
+
|
|
260
|
+
The progressive rollout backend includes automated failure detection and decision-making. This section describes how the system monitors rollouts and what actions it can take.
|
|
261
|
+
|
|
262
|
+
### Signal: Sync Success/Failure Counts
|
|
263
|
+
|
|
264
|
+
The `RolloutProgressionDecider` monitors sync results from pinned connections. For each actor (source/destination) pinned to the RC version, it tracks:
|
|
265
|
+
|
|
266
|
+
- Number of successful syncs
|
|
267
|
+
- Number of failed syncs
|
|
268
|
+
|
|
269
|
+
### Decision States
|
|
270
|
+
|
|
271
|
+
The system can make one of four decisions:
|
|
272
|
+
|
|
273
|
+
| Decision | Description | Trigger |
|
|
274
|
+
|----------|-------------|---------|
|
|
275
|
+
| `RELEASE` | Promote RC to GA | 100% sync success rate with sufficient data |
|
|
276
|
+
| `ROLLBACK` | Roll back to previous version | Reserved for future use (currently triggers PAUSE) |
|
|
277
|
+
| `PAUSE` | Pause rollout for manual intervention | Any sync failures detected |
|
|
278
|
+
| `INSUFFICIENT_DATA` | Continue waiting | Not enough actors pinned or syncs completed |
|
|
279
|
+
|
|
280
|
+
### Decision Thresholds
|
|
281
|
+
|
|
282
|
+
The system uses these thresholds to make decisions:
|
|
283
|
+
|
|
284
|
+
- **Success Threshold**: 100% - All syncs must succeed for automatic promotion
|
|
285
|
+
- **Completion Threshold**: 50% - At least 50% of pinned actors must have completed syncs before making a final decision
|
|
286
|
+
- **Failure Threshold**: Any (>0) - A single failed sync triggers PAUSE
|
|
287
|
+
|
|
288
|
+
### Decision Flow
|
|
289
|
+
|
|
290
|
+
1. **Check for failures**: If any syncs have failed (`nFailedSyncs > 0`), immediately return `PAUSE`
|
|
291
|
+
2. **Check actor coverage**: If fewer than the required percentage of actors have completed syncs, return `INSUFFICIENT_DATA`
|
|
292
|
+
3. **Check success rate**: If 100% of completed syncs succeeded, return `RELEASE`
|
|
293
|
+
4. **Fallback**: If none of the above, return `PAUSE` for manual review
|
|
294
|
+
|
|
295
|
+
### Automatic Actions
|
|
296
|
+
|
|
297
|
+
When the workflow receives a decision:
|
|
298
|
+
|
|
299
|
+
- **RELEASE**: Finalizes the rollout with `SUCCEEDED` state, triggers GA promotion workflow
|
|
300
|
+
- **ROLLBACK**: Finalizes with `FAILED_ROLLED_BACK` state, removes RC pins (path exists but not currently auto-triggered)
|
|
301
|
+
- **PAUSE**: Pauses the workflow, requiring manual intervention via the `resume_rollout` or `finalize_connector_rollout` tools
|
|
302
|
+
- **INSUFFICIENT_DATA**: Continues the rollout loop, pinning more actors and waiting for sync results
|
|
303
|
+
|
|
304
|
+
### Rollout Expiration
|
|
305
|
+
|
|
306
|
+
If a rollout runs for too long without reaching a terminal state, it automatically pauses. This prevents rollouts from running indefinitely and ensures human review of stalled rollouts.
|
|
307
|
+
|
|
308
|
+
### Current Limitations
|
|
309
|
+
|
|
310
|
+
The system is intentionally conservative:
|
|
311
|
+
|
|
312
|
+
- **Any failure triggers PAUSE**: Rather than automatically rolling back, the system pauses to allow human judgment. This prevents premature rollbacks due to transient issues or unrelated failures.
|
|
313
|
+
- **100% success required**: The high threshold ensures only well-tested versions are promoted automatically.
|
|
314
|
+
- **Manual intervention for edge cases**: Complex scenarios (partial failures, intermittent issues) require human decision-making.
|
|
315
|
+
|
|
316
|
+
## metadata.yaml Configuration
|
|
317
|
+
|
|
318
|
+
### Progressive Rollout Fields
|
|
319
|
+
|
|
320
|
+
```yaml
|
|
321
|
+
data:
|
|
322
|
+
# The version to be released (RC version during rollout)
|
|
323
|
+
dockerImageTag: "1.0.0-rc.1"
|
|
324
|
+
|
|
325
|
+
# Pin existing users to stable version during rollout
|
|
326
|
+
registryOverrides:
|
|
327
|
+
cloud:
|
|
328
|
+
dockerImageTag: "0.9.0" # Current stable version for Cloud
|
|
329
|
+
oss:
|
|
330
|
+
dockerImageTag: "0.9.0" # Current stable version for OSS
|
|
331
|
+
|
|
332
|
+
# Enable progressive rollout
|
|
333
|
+
releases:
|
|
334
|
+
rolloutConfiguration:
|
|
335
|
+
enableProgressiveRollout: true
|
|
336
|
+
```
|
|
337
|
+
|
|
338
|
+
### Version Naming Convention
|
|
339
|
+
|
|
340
|
+
- **Stable versions**: `X.Y.Z` (e.g., `1.0.0`, `0.9.5`)
|
|
341
|
+
- **Release candidates**: `X.Y.Z-rc.N` (e.g., `1.0.0-rc.1`, `1.0.0-rc.2`)
|
|
342
|
+
|
|
343
|
+
When creating an RC:
|
|
344
|
+
- If the current version is `0.9.5`, the default RC version would be `0.10.0-rc.1`
|
|
345
|
+
- Multiple RCs can be created: `1.0.0-rc.1`, `1.0.0-rc.2`, etc.
|
|
346
|
+
|
|
347
|
+
## Available Tools
|
|
348
|
+
|
|
349
|
+
### MCP Tools (airbyte-ops-mcp)
|
|
350
|
+
|
|
351
|
+
| Tool | Purpose |
|
|
352
|
+
|------|---------|
|
|
353
|
+
| `query_prod_connector_rollouts` | Query rollout status and history |
|
|
354
|
+
| `query_prod_rollout_monitoring_stats` | Get rollout progress and sync stats |
|
|
355
|
+
| `finalize_connector_rollout` | Promote, rollback, or cancel a rollout |
|
|
356
|
+
| `set_workspace_connector_version_override` | Pin actors to specific versions |
|
|
357
|
+
| `start_connector_rollout` | Start the rollout workflow |
|
|
358
|
+
| `pause_rollout` | Pause an in-progress rollout <!-- TODO: Implement pause_rollout tool - https://github.com/airbytehq/airbyte-ops-mcp/issues/323 --> |
|
|
359
|
+
| `resume_rollout` | Resume a paused rollout <!-- TODO: Implement resume_rollout tool - https://github.com/airbytehq/airbyte-ops-mcp/issues/323 --> |
|
|
360
|
+
|
|
361
|
+
### CLI Tools (airbyte-ops)
|
|
362
|
+
|
|
363
|
+
| Command | Purpose |
|
|
364
|
+
|---------|---------|
|
|
365
|
+
| `airbyte-ops repo connector setup-progressive-rollout` | Configure metadata.yaml for rollout |
|
|
366
|
+
| `airbyte-ops repo connector cleanup-progressive-rollout` | Remove rollout config after completion |
|
|
367
|
+
|
|
368
|
+
## Related Resources
|
|
369
|
+
|
|
370
|
+
- [Airbyte Ops MCP Repository](https://github.com/airbytehq/airbyte-ops-mcp)
|
|
371
|
+
- [Connector Registry](https://connectors.airbyte.com/files/registries/v0/oss_registry.json)
|
|
372
|
+
- <!-- TODO: Add link to internal rollout dashboard if available - https://github.com/airbytehq/airbyte-ops-mcp/issues/322 -->
|
|
373
|
+
- <!-- TODO: Add link to connector publishing documentation - https://github.com/airbytehq/airbyte-ops-mcp/issues/322 -->
|
|
374
|
+
|
|
375
|
+
## Appendix: Approval Comment URLs
|
|
376
|
+
|
|
377
|
+
Certain high-impact operations require an "approval comment URL" as an authorization mechanism. This provides an audit trail and ensures that sensitive actions are explicitly approved by an authorized team member.
|
|
378
|
+
|
|
379
|
+
### How It Works
|
|
380
|
+
|
|
381
|
+
An approval comment URL is a direct link to a GitHub comment where an @airbyte.io team member has explicitly approved the action. The system validates that the comment author has a verified @airbyte.io email address before allowing the operation to proceed.
|
|
382
|
+
|
|
383
|
+
**Example approval comment URL:**
|
|
384
|
+
```
|
|
385
|
+
https://github.com/airbytehq/airbyte-ops-mcp/issues/310#issuecomment-3837359087
|
|
386
|
+
```
|
|
387
|
+
|
|
388
|
+
### Creating an Approval Comment
|
|
389
|
+
|
|
390
|
+
To create a valid approval comment:
|
|
391
|
+
|
|
392
|
+
1. Navigate to the relevant GitHub issue or PR tracking the rollout
|
|
393
|
+
2. Post a comment explicitly approving the action (e.g., "Approved for GA promotion")
|
|
394
|
+
3. Copy the permalink URL of that comment (click the timestamp, then copy the URL)
|
|
395
|
+
4. Give this URL to the AI agent, or if calling directly, pass as the `approval_comment_url` parameter
|
|
396
|
+
|
|
397
|
+
### Actions Requiring Approval
|
|
398
|
+
|
|
399
|
+
| Action | Tool | Why Approval Is Required |
|
|
400
|
+
|--------|------|--------------------------|
|
|
401
|
+
| Pin workspace actors | `set_workspace_connector_version_override` | Affects all actors in a workspace |
|
|
402
|
+
| Pin cloud actors | `set_cloud_connector_version_override` | Affects actors at the cloud level |
|
|
403
|
+
| Start rollout workflow | `start_connector_rollout` | Initiates customer migration to RC version |
|
|
404
|
+
| Promote RC to GA | `finalize_connector_rollout` (state: `succeeded`) | Affects all customers using the connector |
|
|
405
|
+
| Rollback RC | `finalize_connector_rollout` (state: `failed_rolled_back`) | Reverts customers to previous version |
|
|
406
|
+
| Cancel rollout | `finalize_connector_rollout` (state: `canceled`) | Terminates the rollout process |
|
|
407
|
+
|
|
408
|
+
### Additional Requirements
|
|
409
|
+
|
|
410
|
+
In addition to the approval comment URL, these operations also require the `AIRBYTE_INTERNAL_ADMIN_FLAG=airbyte.io` environment variable to be set. This two-factor authorization ensures that both the tool operator and an @airbyte.io team member have approved the action.
|
|
411
|
+
|
|
412
|
+
## Troubleshooting
|
|
413
|
+
|
|
414
|
+
### Rollout not appearing after merge
|
|
415
|
+
|
|
416
|
+
**Symptom:** The connector PR was merged but no rollout appears in the database.
|
|
417
|
+
|
|
418
|
+
**Possible causes:**
|
|
419
|
+
1. The connector publish workflow hasn't completed yet
|
|
420
|
+
2. `enableProgressiveRollout` is not set to `true` in metadata.yaml
|
|
421
|
+
3. The connector version wasn't properly tagged as an RC
|
|
422
|
+
|
|
423
|
+
**Resolution:**
|
|
424
|
+
- Wait for the publish workflow to complete (check GitHub Actions)
|
|
425
|
+
- Verify metadata.yaml has `releases.rolloutConfiguration.enableProgressiveRollout: true`
|
|
426
|
+
- Ensure `dockerImageTag` follows the RC naming convention (`X.Y.Z-rc.N`)
|
|
427
|
+
|
|
428
|
+
### High failure rate during rollout
|
|
429
|
+
|
|
430
|
+
**Symptom:** Monitoring shows significantly higher failure rates for the RC compared to stable.
|
|
431
|
+
|
|
432
|
+
**Resolution:**
|
|
433
|
+
1. Pause the rollout to prevent further customer impact
|
|
434
|
+
2. Investigate the failures using job logs
|
|
435
|
+
3. If issues are confirmed, finalize with `failed_rolled_back` state
|
|
436
|
+
4. Fix the issues and create a new RC (`X.Y.Z-rc.2`)
|
|
437
|
+
|
|
438
|
+
### Cannot finalize rollout
|
|
439
|
+
|
|
440
|
+
**Symptom:** The finalize tool returns an authorization error.
|
|
441
|
+
|
|
442
|
+
**Possible causes:**
|
|
443
|
+
1. Missing `AIRBYTE_INTERNAL_ADMIN_FLAG` environment variable
|
|
444
|
+
2. Invalid or expired GitHub comment URL
|
|
445
|
+
3. Comment author is not an @airbyte.io user
|
|
446
|
+
|
|
447
|
+
**Resolution:**
|
|
448
|
+
- Ensure `AIRBYTE_INTERNAL_ADMIN_FLAG=airbyte.io` is set
|
|
449
|
+
- Get a fresh approval comment from an @airbyte.io team member
|
|
450
|
+
- Verify the comment URL is accessible and the author's email is verified
|
|
451
|
+
|
|
452
|
+
### Actors not being migrated
|
|
453
|
+
|
|
454
|
+
**Symptom:** `num_pinned_to_rollout` stays at 0 even after starting the workflow.
|
|
455
|
+
|
|
456
|
+
**Possible causes:**
|
|
457
|
+
1. Rollout is still in `initialized` state (workflow not started)
|
|
458
|
+
2. Rollout percentage is set to 0
|
|
459
|
+
3. No eligible actors for this connector
|
|
460
|
+
|
|
461
|
+
**Resolution:**
|
|
462
|
+
- Verify the rollout state is `in_progress`
|
|
463
|
+
- Check the `current_target_rollout_pct` value
|
|
464
|
+
- Confirm there are active actors using this connector (`num_actors` > 0)
|