airbyte-internal-ops 0.3.0__tar.gz → 0.4.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.
Files changed (564) hide show
  1. airbyte_internal_ops-0.4.0/.github/workflows/connector-regression-test.yml +407 -0
  2. airbyte_internal_ops-0.4.0/CONTRIBUTING.md +219 -0
  3. {airbyte_internal_ops-0.3.0 → airbyte_internal_ops-0.4.0}/PKG-INFO +1 -1
  4. {airbyte_internal_ops-0.3.0 → airbyte_internal_ops-0.4.0}/src/airbyte_ops_mcp/connection_config_retriever/audit_logging.py +4 -8
  5. airbyte_internal_ops-0.4.0/src/airbyte_ops_mcp/gcp_auth.py +192 -0
  6. {airbyte_internal_ops-0.3.0 → airbyte_internal_ops-0.4.0}/src/airbyte_ops_mcp/gcp_logs/error_lookup.py +6 -5
  7. {airbyte_internal_ops-0.3.0 → airbyte_internal_ops-0.4.0}/src/airbyte_ops_mcp/mcp/prerelease.py +48 -11
  8. {airbyte_internal_ops-0.3.0 → airbyte_internal_ops-0.4.0}/src/airbyte_ops_mcp/mcp/prod_db_queries.py +478 -8
  9. {airbyte_internal_ops-0.3.0 → airbyte_internal_ops-0.4.0}/src/airbyte_ops_mcp/mcp/regression_tests.py +16 -3
  10. {airbyte_internal_ops-0.3.0 → airbyte_internal_ops-0.4.0}/src/airbyte_ops_mcp/prod_db_access/queries.py +150 -1
  11. {airbyte_internal_ops-0.3.0 → airbyte_internal_ops-0.4.0}/src/airbyte_ops_mcp/prod_db_access/sql.py +407 -0
  12. {airbyte_internal_ops-0.3.0 → airbyte_internal_ops-0.4.0}/src/airbyte_ops_mcp/regression_tests/connection_secret_retriever.py +0 -4
  13. {airbyte_internal_ops-0.3.0 → airbyte_internal_ops-0.4.0}/src/airbyte_ops_mcp/regression_tests/connector_runner.py +8 -4
  14. airbyte_internal_ops-0.3.0/.github/workflows/connector-regression-test.yml +0 -251
  15. airbyte_internal_ops-0.3.0/.github/workflows/test-connection-retriever.yml +0 -84
  16. airbyte_internal_ops-0.3.0/CONTRIBUTING.md +0 -127
  17. airbyte_internal_ops-0.3.0/src/airbyte_ops_mcp/gcp_auth.py +0 -99
  18. {airbyte_internal_ops-0.3.0 → airbyte_internal_ops-0.4.0}/.env.template +0 -0
  19. {airbyte_internal_ops-0.3.0 → airbyte_internal_ops-0.4.0}/.github/copilot-instructions.md +0 -0
  20. {airbyte_internal_ops-0.3.0 → airbyte_internal_ops-0.4.0}/.github/dependabot.yml +0 -0
  21. {airbyte_internal_ops-0.3.0 → airbyte_internal_ops-0.4.0}/.github/pr-welcome-message.md +0 -0
  22. {airbyte_internal_ops-0.3.0 → airbyte_internal_ops-0.4.0}/.github/release-drafter.yml +0 -0
  23. {airbyte_internal_ops-0.3.0 → airbyte_internal_ops-0.4.0}/.github/workflows/autofix-command.yml +0 -0
  24. {airbyte_internal_ops-0.3.0 → airbyte_internal_ops-0.4.0}/.github/workflows/format-check.yml +0 -0
  25. {airbyte_internal_ops-0.3.0 → airbyte_internal_ops-0.4.0}/.github/workflows/lint-check.yml +0 -0
  26. {airbyte_internal_ops-0.3.0 → airbyte_internal_ops-0.4.0}/.github/workflows/lock-command.yml +0 -0
  27. {airbyte_internal_ops-0.3.0 → airbyte_internal_ops-0.4.0}/.github/workflows/pdoc_preview.yml +0 -0
  28. {airbyte_internal_ops-0.3.0 → airbyte_internal_ops-0.4.0}/.github/workflows/pdoc_publish.yml +0 -0
  29. {airbyte_internal_ops-0.3.0 → airbyte_internal_ops-0.4.0}/.github/workflows/poe-command.yml +0 -0
  30. {airbyte_internal_ops-0.3.0 → airbyte_internal_ops-0.4.0}/.github/workflows/pr-welcome.yml +0 -0
  31. {airbyte_internal_ops-0.3.0 → airbyte_internal_ops-0.4.0}/.github/workflows/publish.yml +0 -0
  32. {airbyte_internal_ops-0.3.0 → airbyte_internal_ops-0.4.0}/.github/workflows/pytest-fast.yml +0 -0
  33. {airbyte_internal_ops-0.3.0 → airbyte_internal_ops-0.4.0}/.github/workflows/pytest-matrix.yml +0 -0
  34. {airbyte_internal_ops-0.3.0 → airbyte_internal_ops-0.4.0}/.github/workflows/regression-tests-ci.yml +0 -0
  35. {airbyte_internal_ops-0.3.0 → airbyte_internal_ops-0.4.0}/.github/workflows/release-drafter.yml +0 -0
  36. {airbyte_internal_ops-0.3.0 → airbyte_internal_ops-0.4.0}/.github/workflows/semantic-pr-check.yml +0 -0
  37. {airbyte_internal_ops-0.3.0 → airbyte_internal_ops-0.4.0}/.github/workflows/sentry-apply-command.yml +0 -0
  38. {airbyte_internal_ops-0.3.0 → airbyte_internal_ops-0.4.0}/.github/workflows/sentry-preview.yml +0 -0
  39. {airbyte_internal_ops-0.3.0 → airbyte_internal_ops-0.4.0}/.github/workflows/slash-command-dispatch.yml +0 -0
  40. {airbyte_internal_ops-0.3.0 → airbyte_internal_ops-0.4.0}/.github/workflows/tk-todo-check.yml +0 -0
  41. {airbyte_internal_ops-0.3.0 → airbyte_internal_ops-0.4.0}/.gitignore +0 -0
  42. {airbyte_internal_ops-0.3.0 → airbyte_internal_ops-0.4.0}/.mcp.json.template +0 -0
  43. {airbyte_internal_ops-0.3.0 → airbyte_internal_ops-0.4.0}/README.md +0 -0
  44. {airbyte_internal_ops-0.3.0 → airbyte_internal_ops-0.4.0}/bin/test_mcp_tool.py +0 -0
  45. {airbyte_internal_ops-0.3.0 → airbyte_internal_ops-0.4.0}/bin/test_mcp_tool_http.py +0 -0
  46. {airbyte_internal_ops-0.3.0 → airbyte_internal_ops-0.4.0}/conftest.py +0 -0
  47. {airbyte_internal_ops-0.3.0 → airbyte_internal_ops-0.4.0}/docs/.gitignore +0 -0
  48. {airbyte_internal_ops-0.3.0 → airbyte_internal_ops-0.4.0}/docs/generate.py +0 -0
  49. {airbyte_internal_ops-0.3.0 → airbyte_internal_ops-0.4.0}/docs/templates/custom.css +0 -0
  50. {airbyte_internal_ops-0.3.0 → airbyte_internal_ops-0.4.0}/docs/templates/theme.css +0 -0
  51. {airbyte_internal_ops-0.3.0 → airbyte_internal_ops-0.4.0}/infra/sentry/.gitignore +0 -0
  52. {airbyte_internal_ops-0.3.0 → airbyte_internal_ops-0.4.0}/infra/sentry/Pulumi.prod.yaml +0 -0
  53. {airbyte_internal_ops-0.3.0 → airbyte_internal_ops-0.4.0}/infra/sentry/Pulumi.yaml +0 -0
  54. {airbyte_internal_ops-0.3.0 → airbyte_internal_ops-0.4.0}/infra/sentry/README.md +0 -0
  55. {airbyte_internal_ops-0.3.0 → airbyte_internal_ops-0.4.0}/infra/sentry/__main__.py +0 -0
  56. {airbyte_internal_ops-0.3.0 → airbyte_internal_ops-0.4.0}/infra/sentry/docs/CONTRIBUTING.md +0 -0
  57. {airbyte_internal_ops-0.3.0 → airbyte_internal_ops-0.4.0}/infra/sentry/requirements.txt +0 -0
  58. {airbyte_internal_ops-0.3.0 → airbyte_internal_ops-0.4.0}/poe_tasks.toml +0 -0
  59. {airbyte_internal_ops-0.3.0 → airbyte_internal_ops-0.4.0}/pyproject.toml +0 -0
  60. {airbyte_internal_ops-0.3.0 → airbyte_internal_ops-0.4.0}/pyrefly.toml +0 -0
  61. {airbyte_internal_ops-0.3.0 → airbyte_internal_ops-0.4.0}/pytest.ini +0 -0
  62. {airbyte_internal_ops-0.3.0 → airbyte_internal_ops-0.4.0}/ruff.toml +0 -0
  63. {airbyte_internal_ops-0.3.0 → airbyte_internal_ops-0.4.0}/src/airbyte_ops_mcp/__init__.py +0 -0
  64. {airbyte_internal_ops-0.3.0 → airbyte_internal_ops-0.4.0}/src/airbyte_ops_mcp/_annotations.py +0 -0
  65. {airbyte_internal_ops-0.3.0 → airbyte_internal_ops-0.4.0}/src/airbyte_ops_mcp/_legacy/__init__.py +0 -0
  66. {airbyte_internal_ops-0.3.0 → airbyte_internal_ops-0.4.0}/src/airbyte_ops_mcp/_legacy/airbyte_ci/README.md +0 -0
  67. {airbyte_internal_ops-0.3.0 → airbyte_internal_ops-0.4.0}/src/airbyte_ops_mcp/_legacy/airbyte_ci/connector_erd_generator/README.md +0 -0
  68. {airbyte_internal_ops-0.3.0 → airbyte_internal_ops-0.4.0}/src/airbyte_ops_mcp/_legacy/airbyte_ci/connector_erd_generator/__init__.py +0 -0
  69. {airbyte_internal_ops-0.3.0 → airbyte_internal_ops-0.4.0}/src/airbyte_ops_mcp/_legacy/airbyte_ci/connector_erd_generator/dbml_assembler.py +0 -0
  70. {airbyte_internal_ops-0.3.0 → airbyte_internal_ops-0.4.0}/src/airbyte_ops_mcp/_legacy/airbyte_ci/connector_erd_generator/erd_service.py +0 -0
  71. {airbyte_internal_ops-0.3.0 → airbyte_internal_ops-0.4.0}/src/airbyte_ops_mcp/_legacy/airbyte_ci/connector_erd_generator/relationships.py +0 -0
  72. {airbyte_internal_ops-0.3.0 → airbyte_internal_ops-0.4.0}/src/airbyte_ops_mcp/_legacy/airbyte_ci/connector_insights/README.md +0 -0
  73. {airbyte_internal_ops-0.3.0 → airbyte_internal_ops-0.4.0}/src/airbyte_ops_mcp/_legacy/airbyte_ci/connector_insights/__init__.py +0 -0
  74. {airbyte_internal_ops-0.3.0 → airbyte_internal_ops-0.4.0}/src/airbyte_ops_mcp/_legacy/airbyte_ci/connector_insights/cli.py +0 -0
  75. {airbyte_internal_ops-0.3.0 → airbyte_internal_ops-0.4.0}/src/airbyte_ops_mcp/_legacy/airbyte_ci/connector_insights/hacks.py +0 -0
  76. {airbyte_internal_ops-0.3.0 → airbyte_internal_ops-0.4.0}/src/airbyte_ops_mcp/_legacy/airbyte_ci/connector_insights/insights.py +0 -0
  77. {airbyte_internal_ops-0.3.0 → airbyte_internal_ops-0.4.0}/src/airbyte_ops_mcp/_legacy/airbyte_ci/connector_insights/models.py +0 -0
  78. {airbyte_internal_ops-0.3.0 → airbyte_internal_ops-0.4.0}/src/airbyte_ops_mcp/_legacy/airbyte_ci/connector_insights/pylint.py +0 -0
  79. {airbyte_internal_ops-0.3.0 → airbyte_internal_ops-0.4.0}/src/airbyte_ops_mcp/_legacy/airbyte_ci/connector_insights/pylint_plugins/cdk_deprecation_checkers.py +0 -0
  80. {airbyte_internal_ops-0.3.0 → airbyte_internal_ops-0.4.0}/src/airbyte_ops_mcp/_legacy/airbyte_ci/connector_insights/result_backends.py +0 -0
  81. {airbyte_internal_ops-0.3.0 → airbyte_internal_ops-0.4.0}/src/airbyte_ops_mcp/_legacy/airbyte_ci/connector_insights/utils.py +0 -0
  82. {airbyte_internal_ops-0.3.0 → airbyte_internal_ops-0.4.0}/src/airbyte_ops_mcp/_legacy/airbyte_ci/connector_live_tests/.gitignore +0 -0
  83. {airbyte_internal_ops-0.3.0 → airbyte_internal_ops-0.4.0}/src/airbyte_ops_mcp/_legacy/airbyte_ci/connector_live_tests/README.md +0 -0
  84. {airbyte_internal_ops-0.3.0 → airbyte_internal_ops-0.4.0}/src/airbyte_ops_mcp/_legacy/airbyte_ci/connector_live_tests/__init__.py +0 -0
  85. {airbyte_internal_ops-0.3.0 → airbyte_internal_ops-0.4.0}/src/airbyte_ops_mcp/_legacy/airbyte_ci/connector_live_tests/commons/__init__.py +0 -0
  86. {airbyte_internal_ops-0.3.0 → airbyte_internal_ops-0.4.0}/src/airbyte_ops_mcp/_legacy/airbyte_ci/connector_live_tests/commons/backends/__init__.py +0 -0
  87. {airbyte_internal_ops-0.3.0 → airbyte_internal_ops-0.4.0}/src/airbyte_ops_mcp/_legacy/airbyte_ci/connector_live_tests/commons/backends/base_backend.py +0 -0
  88. {airbyte_internal_ops-0.3.0 → airbyte_internal_ops-0.4.0}/src/airbyte_ops_mcp/_legacy/airbyte_ci/connector_live_tests/commons/backends/duckdb_backend.py +0 -0
  89. {airbyte_internal_ops-0.3.0 → airbyte_internal_ops-0.4.0}/src/airbyte_ops_mcp/_legacy/airbyte_ci/connector_live_tests/commons/backends/file_backend.py +0 -0
  90. {airbyte_internal_ops-0.3.0 → airbyte_internal_ops-0.4.0}/src/airbyte_ops_mcp/_legacy/airbyte_ci/connector_live_tests/commons/connection_objects_retrieval.py +0 -0
  91. {airbyte_internal_ops-0.3.0 → airbyte_internal_ops-0.4.0}/src/airbyte_ops_mcp/_legacy/airbyte_ci/connector_live_tests/commons/connector_runner.py +0 -0
  92. {airbyte_internal_ops-0.3.0 → airbyte_internal_ops-0.4.0}/src/airbyte_ops_mcp/_legacy/airbyte_ci/connector_live_tests/commons/errors.py +0 -0
  93. {airbyte_internal_ops-0.3.0 → airbyte_internal_ops-0.4.0}/src/airbyte_ops_mcp/_legacy/airbyte_ci/connector_live_tests/commons/evaluation_modes.py +0 -0
  94. {airbyte_internal_ops-0.3.0 → airbyte_internal_ops-0.4.0}/src/airbyte_ops_mcp/_legacy/airbyte_ci/connector_live_tests/commons/hacks.py +0 -0
  95. {airbyte_internal_ops-0.3.0 → airbyte_internal_ops-0.4.0}/src/airbyte_ops_mcp/_legacy/airbyte_ci/connector_live_tests/commons/json_schema_helper.py +0 -0
  96. {airbyte_internal_ops-0.3.0 → airbyte_internal_ops-0.4.0}/src/airbyte_ops_mcp/_legacy/airbyte_ci/connector_live_tests/commons/mitm_addons.py +0 -0
  97. {airbyte_internal_ops-0.3.0 → airbyte_internal_ops-0.4.0}/src/airbyte_ops_mcp/_legacy/airbyte_ci/connector_live_tests/commons/models.py +0 -0
  98. {airbyte_internal_ops-0.3.0 → airbyte_internal_ops-0.4.0}/src/airbyte_ops_mcp/_legacy/airbyte_ci/connector_live_tests/commons/proxy.py +0 -0
  99. {airbyte_internal_ops-0.3.0 → airbyte_internal_ops-0.4.0}/src/airbyte_ops_mcp/_legacy/airbyte_ci/connector_live_tests/commons/secret_access.py +0 -0
  100. {airbyte_internal_ops-0.3.0 → airbyte_internal_ops-0.4.0}/src/airbyte_ops_mcp/_legacy/airbyte_ci/connector_live_tests/commons/segment_tracking.py +0 -0
  101. {airbyte_internal_ops-0.3.0 → airbyte_internal_ops-0.4.0}/src/airbyte_ops_mcp/_legacy/airbyte_ci/connector_live_tests/commons/utils.py +0 -0
  102. {airbyte_internal_ops-0.3.0 → airbyte_internal_ops-0.4.0}/src/airbyte_ops_mcp/_legacy/airbyte_ci/connector_live_tests/conftest.py.disabled +0 -0
  103. {airbyte_internal_ops-0.3.0 → airbyte_internal_ops-0.4.0}/src/airbyte_ops_mcp/_legacy/airbyte_ci/connector_live_tests/consts.py +0 -0
  104. {airbyte_internal_ops-0.3.0 → airbyte_internal_ops-0.4.0}/src/airbyte_ops_mcp/_legacy/airbyte_ci/connector_live_tests/poetry.lock +0 -0
  105. {airbyte_internal_ops-0.3.0 → airbyte_internal_ops-0.4.0}/src/airbyte_ops_mcp/_legacy/airbyte_ci/connector_live_tests/pytest.ini +0 -0
  106. {airbyte_internal_ops-0.3.0 → airbyte_internal_ops-0.4.0}/src/airbyte_ops_mcp/_legacy/airbyte_ci/connector_live_tests/regression_tests/__init__.py +0 -0
  107. {airbyte_internal_ops-0.3.0 → airbyte_internal_ops-0.4.0}/src/airbyte_ops_mcp/_legacy/airbyte_ci/connector_live_tests/regression_tests/test_check.py +0 -0
  108. {airbyte_internal_ops-0.3.0 → airbyte_internal_ops-0.4.0}/src/airbyte_ops_mcp/_legacy/airbyte_ci/connector_live_tests/regression_tests/test_discover.py +0 -0
  109. {airbyte_internal_ops-0.3.0 → airbyte_internal_ops-0.4.0}/src/airbyte_ops_mcp/_legacy/airbyte_ci/connector_live_tests/regression_tests/test_read.py +0 -0
  110. {airbyte_internal_ops-0.3.0 → airbyte_internal_ops-0.4.0}/src/airbyte_ops_mcp/_legacy/airbyte_ci/connector_live_tests/regression_tests/test_spec.py +0 -0
  111. {airbyte_internal_ops-0.3.0 → airbyte_internal_ops-0.4.0}/src/airbyte_ops_mcp/_legacy/airbyte_ci/connector_live_tests/report.py +0 -0
  112. {airbyte_internal_ops-0.3.0 → airbyte_internal_ops-0.4.0}/src/airbyte_ops_mcp/_legacy/airbyte_ci/connector_live_tests/stash_keys.py +0 -0
  113. {airbyte_internal_ops-0.3.0 → airbyte_internal_ops-0.4.0}/src/airbyte_ops_mcp/_legacy/airbyte_ci/connector_live_tests/templates/__init__.py +0 -0
  114. {airbyte_internal_ops-0.3.0 → airbyte_internal_ops-0.4.0}/src/airbyte_ops_mcp/_legacy/airbyte_ci/connector_live_tests/templates/private_details.html.j2 +0 -0
  115. {airbyte_internal_ops-0.3.0 → airbyte_internal_ops-0.4.0}/src/airbyte_ops_mcp/_legacy/airbyte_ci/connector_live_tests/templates/report.html.j2 +0 -0
  116. {airbyte_internal_ops-0.3.0 → airbyte_internal_ops-0.4.0}/src/airbyte_ops_mcp/_legacy/airbyte_ci/connector_live_tests/utils.py +0 -0
  117. {airbyte_internal_ops-0.3.0 → airbyte_internal_ops-0.4.0}/src/airbyte_ops_mcp/_legacy/airbyte_ci/connector_live_tests/validation_tests/__init__.py +0 -0
  118. {airbyte_internal_ops-0.3.0 → airbyte_internal_ops-0.4.0}/src/airbyte_ops_mcp/_legacy/airbyte_ci/connector_live_tests/validation_tests/test_check.py +0 -0
  119. {airbyte_internal_ops-0.3.0 → airbyte_internal_ops-0.4.0}/src/airbyte_ops_mcp/_legacy/airbyte_ci/connector_live_tests/validation_tests/test_discover.py +0 -0
  120. {airbyte_internal_ops-0.3.0 → airbyte_internal_ops-0.4.0}/src/airbyte_ops_mcp/_legacy/airbyte_ci/connector_live_tests/validation_tests/test_read.py +0 -0
  121. {airbyte_internal_ops-0.3.0 → airbyte_internal_ops-0.4.0}/src/airbyte_ops_mcp/_legacy/airbyte_ci/connector_live_tests/validation_tests/test_spec.py +0 -0
  122. {airbyte_internal_ops-0.3.0 → airbyte_internal_ops-0.4.0}/src/airbyte_ops_mcp/_legacy/airbyte_ci/connector_ops/README.md +0 -0
  123. {airbyte_internal_ops-0.3.0 → airbyte_internal_ops-0.4.0}/src/airbyte_ops_mcp/_legacy/airbyte_ci/connector_ops/__init__.py +0 -0
  124. {airbyte_internal_ops-0.3.0 → airbyte_internal_ops-0.4.0}/src/airbyte_ops_mcp/_legacy/airbyte_ci/connector_ops/utils.py +0 -0
  125. {airbyte_internal_ops-0.3.0 → airbyte_internal_ops-0.4.0}/src/airbyte_ops_mcp/_legacy/airbyte_ci/connector_pipelines/DELETEME-dagger/README.md +0 -0
  126. {airbyte_internal_ops-0.3.0 → airbyte_internal_ops-0.4.0}/src/airbyte_ops_mcp/_legacy/airbyte_ci/connector_pipelines/DELETEME-dagger/actions/__init__.py +0 -0
  127. {airbyte_internal_ops-0.3.0 → airbyte_internal_ops-0.4.0}/src/airbyte_ops_mcp/_legacy/airbyte_ci/connector_pipelines/DELETEME-dagger/actions/connector/hooks.py +0 -0
  128. {airbyte_internal_ops-0.3.0 → airbyte_internal_ops-0.4.0}/src/airbyte_ops_mcp/_legacy/airbyte_ci/connector_pipelines/DELETEME-dagger/actions/connector/normalization.py +0 -0
  129. {airbyte_internal_ops-0.3.0 → airbyte_internal_ops-0.4.0}/src/airbyte_ops_mcp/_legacy/airbyte_ci/connector_pipelines/DELETEME-dagger/actions/python/common.py +0 -0
  130. {airbyte_internal_ops-0.3.0 → airbyte_internal_ops-0.4.0}/src/airbyte_ops_mcp/_legacy/airbyte_ci/connector_pipelines/DELETEME-dagger/actions/python/pipx.py +0 -0
  131. {airbyte_internal_ops-0.3.0 → airbyte_internal_ops-0.4.0}/src/airbyte_ops_mcp/_legacy/airbyte_ci/connector_pipelines/DELETEME-dagger/actions/python/poetry.py +0 -0
  132. {airbyte_internal_ops-0.3.0 → airbyte_internal_ops-0.4.0}/src/airbyte_ops_mcp/_legacy/airbyte_ci/connector_pipelines/DELETEME-dagger/actions/remote_storage.py +0 -0
  133. {airbyte_internal_ops-0.3.0 → airbyte_internal_ops-0.4.0}/src/airbyte_ops_mcp/_legacy/airbyte_ci/connector_pipelines/DELETEME-dagger/actions/secrets.py +0 -0
  134. {airbyte_internal_ops-0.3.0 → airbyte_internal_ops-0.4.0}/src/airbyte_ops_mcp/_legacy/airbyte_ci/connector_pipelines/DELETEME-dagger/actions/system/common.py +0 -0
  135. {airbyte_internal_ops-0.3.0 → airbyte_internal_ops-0.4.0}/src/airbyte_ops_mcp/_legacy/airbyte_ci/connector_pipelines/DELETEME-dagger/actions/system/docker.py +0 -0
  136. {airbyte_internal_ops-0.3.0 → airbyte_internal_ops-0.4.0}/src/airbyte_ops_mcp/_legacy/airbyte_ci/connector_pipelines/DELETEME-dagger/containers/git.py +0 -0
  137. {airbyte_internal_ops-0.3.0 → airbyte_internal_ops-0.4.0}/src/airbyte_ops_mcp/_legacy/airbyte_ci/connector_pipelines/DELETEME-dagger/containers/internal_tools.py +0 -0
  138. {airbyte_internal_ops-0.3.0 → airbyte_internal_ops-0.4.0}/src/airbyte_ops_mcp/_legacy/airbyte_ci/connector_pipelines/DELETEME-dagger/containers/java.py +0 -0
  139. {airbyte_internal_ops-0.3.0 → airbyte_internal_ops-0.4.0}/src/airbyte_ops_mcp/_legacy/airbyte_ci/connector_pipelines/DELETEME-dagger/containers/python.py +0 -0
  140. {airbyte_internal_ops-0.3.0 → airbyte_internal_ops-0.4.0}/src/airbyte_ops_mcp/_legacy/airbyte_ci/connector_pipelines/DELETEME-dagger-helpers/__init__.py +0 -0
  141. {airbyte_internal_ops-0.3.0 → airbyte_internal_ops-0.4.0}/src/airbyte_ops_mcp/_legacy/airbyte_ci/connector_pipelines/DELETEME-dagger-helpers/cache_keys.py +0 -0
  142. {airbyte_internal_ops-0.3.0 → airbyte_internal_ops-0.4.0}/src/airbyte_ops_mcp/_legacy/airbyte_ci/connector_pipelines/DELETEME-dagger-helpers/cli.py +0 -0
  143. {airbyte_internal_ops-0.3.0 → airbyte_internal_ops-0.4.0}/src/airbyte_ops_mcp/_legacy/airbyte_ci/connector_pipelines/DELETEME-dagger-helpers/connectors/__init__.py +0 -0
  144. {airbyte_internal_ops-0.3.0 → airbyte_internal_ops-0.4.0}/src/airbyte_ops_mcp/_legacy/airbyte_ci/connector_pipelines/DELETEME-dagger-helpers/connectors/cdk_helpers.py +0 -0
  145. {airbyte_internal_ops-0.3.0 → airbyte_internal_ops-0.4.0}/src/airbyte_ops_mcp/_legacy/airbyte_ci/connector_pipelines/DELETEME-dagger-helpers/connectors/command.py +0 -0
  146. {airbyte_internal_ops-0.3.0 → airbyte_internal_ops-0.4.0}/src/airbyte_ops_mcp/_legacy/airbyte_ci/connector_pipelines/DELETEME-dagger-helpers/connectors/dagger_fs.py +0 -0
  147. {airbyte_internal_ops-0.3.0 → airbyte_internal_ops-0.4.0}/src/airbyte_ops_mcp/_legacy/airbyte_ci/connector_pipelines/DELETEME-dagger-helpers/connectors/format.py +0 -0
  148. {airbyte_internal_ops-0.3.0 → airbyte_internal_ops-0.4.0}/src/airbyte_ops_mcp/_legacy/airbyte_ci/connector_pipelines/DELETEME-dagger-helpers/connectors/modifed.py +0 -0
  149. {airbyte_internal_ops-0.3.0 → airbyte_internal_ops-0.4.0}/src/airbyte_ops_mcp/_legacy/airbyte_ci/connector_pipelines/DELETEME-dagger-helpers/connectors/yaml.py +0 -0
  150. {airbyte_internal_ops-0.3.0 → airbyte_internal_ops-0.4.0}/src/airbyte_ops_mcp/_legacy/airbyte_ci/connector_pipelines/DELETEME-dagger-helpers/execution/__init__.py +0 -0
  151. {airbyte_internal_ops-0.3.0 → airbyte_internal_ops-0.4.0}/src/airbyte_ops_mcp/_legacy/airbyte_ci/connector_pipelines/DELETEME-dagger-helpers/execution/argument_parsing.py +0 -0
  152. {airbyte_internal_ops-0.3.0 → airbyte_internal_ops-0.4.0}/src/airbyte_ops_mcp/_legacy/airbyte_ci/connector_pipelines/DELETEME-dagger-helpers/execution/run_steps.py +0 -0
  153. {airbyte_internal_ops-0.3.0 → airbyte_internal_ops-0.4.0}/src/airbyte_ops_mcp/_legacy/airbyte_ci/connector_pipelines/DELETEME-dagger-helpers/gcs.py +0 -0
  154. {airbyte_internal_ops-0.3.0 → airbyte_internal_ops-0.4.0}/src/airbyte_ops_mcp/_legacy/airbyte_ci/connector_pipelines/DELETEME-dagger-helpers/git.py +0 -0
  155. {airbyte_internal_ops-0.3.0 → airbyte_internal_ops-0.4.0}/src/airbyte_ops_mcp/_legacy/airbyte_ci/connector_pipelines/DELETEME-dagger-helpers/github.py +0 -0
  156. {airbyte_internal_ops-0.3.0 → airbyte_internal_ops-0.4.0}/src/airbyte_ops_mcp/_legacy/airbyte_ci/connector_pipelines/DELETEME-dagger-helpers/pip.py +0 -0
  157. {airbyte_internal_ops-0.3.0 → airbyte_internal_ops-0.4.0}/src/airbyte_ops_mcp/_legacy/airbyte_ci/connector_pipelines/DELETEME-dagger-helpers/sentry_utils.py +0 -0
  158. {airbyte_internal_ops-0.3.0 → airbyte_internal_ops-0.4.0}/src/airbyte_ops_mcp/_legacy/airbyte_ci/connector_pipelines/DELETEME-dagger-helpers/slack.py +0 -0
  159. {airbyte_internal_ops-0.3.0 → airbyte_internal_ops-0.4.0}/src/airbyte_ops_mcp/_legacy/airbyte_ci/connector_pipelines/DELETEME-dagger-helpers/utils.py +0 -0
  160. {airbyte_internal_ops-0.3.0 → airbyte_internal_ops-0.4.0}/src/airbyte_ops_mcp/_legacy/airbyte_ci/connector_pipelines/README.md +0 -0
  161. {airbyte_internal_ops-0.3.0 → airbyte_internal_ops-0.4.0}/src/airbyte_ops_mcp/_legacy/airbyte_ci/connector_pipelines/__init__.py +0 -0
  162. {airbyte_internal_ops-0.3.0 → airbyte_internal_ops-0.4.0}/src/airbyte_ops_mcp/_legacy/airbyte_ci/connector_pipelines/airbyte_ci/__init__.py +0 -0
  163. {airbyte_internal_ops-0.3.0 → airbyte_internal_ops-0.4.0}/src/airbyte_ops_mcp/_legacy/airbyte_ci/connector_pipelines/airbyte_ci/connectors/__init__.py +0 -0
  164. {airbyte_internal_ops-0.3.0 → airbyte_internal_ops-0.4.0}/src/airbyte_ops_mcp/_legacy/airbyte_ci/connector_pipelines/airbyte_ci/connectors/build_image/__init__.py +0 -0
  165. {airbyte_internal_ops-0.3.0 → airbyte_internal_ops-0.4.0}/src/airbyte_ops_mcp/_legacy/airbyte_ci/connector_pipelines/airbyte_ci/connectors/build_image/commands.py +0 -0
  166. {airbyte_internal_ops-0.3.0 → airbyte_internal_ops-0.4.0}/src/airbyte_ops_mcp/_legacy/airbyte_ci/connector_pipelines/airbyte_ci/connectors/build_image/pipeline.py +0 -0
  167. {airbyte_internal_ops-0.3.0 → airbyte_internal_ops-0.4.0}/src/airbyte_ops_mcp/_legacy/airbyte_ci/connector_pipelines/airbyte_ci/connectors/build_image/steps/__init__.py +0 -0
  168. {airbyte_internal_ops-0.3.0 → airbyte_internal_ops-0.4.0}/src/airbyte_ops_mcp/_legacy/airbyte_ci/connector_pipelines/airbyte_ci/connectors/build_image/steps/build_customization.py +0 -0
  169. {airbyte_internal_ops-0.3.0 → airbyte_internal_ops-0.4.0}/src/airbyte_ops_mcp/_legacy/airbyte_ci/connector_pipelines/airbyte_ci/connectors/build_image/steps/common.py +0 -0
  170. {airbyte_internal_ops-0.3.0 → airbyte_internal_ops-0.4.0}/src/airbyte_ops_mcp/_legacy/airbyte_ci/connector_pipelines/airbyte_ci/connectors/build_image/steps/java_connectors.py +0 -0
  171. {airbyte_internal_ops-0.3.0 → airbyte_internal_ops-0.4.0}/src/airbyte_ops_mcp/_legacy/airbyte_ci/connector_pipelines/airbyte_ci/connectors/build_image/steps/manifest_only_connectors.py +0 -0
  172. {airbyte_internal_ops-0.3.0 → airbyte_internal_ops-0.4.0}/src/airbyte_ops_mcp/_legacy/airbyte_ci/connector_pipelines/airbyte_ci/connectors/build_image/steps/normalization.py +0 -0
  173. {airbyte_internal_ops-0.3.0 → airbyte_internal_ops-0.4.0}/src/airbyte_ops_mcp/_legacy/airbyte_ci/connector_pipelines/airbyte_ci/connectors/build_image/steps/python_connectors.py +0 -0
  174. {airbyte_internal_ops-0.3.0 → airbyte_internal_ops-0.4.0}/src/airbyte_ops_mcp/_legacy/airbyte_ci/connector_pipelines/airbyte_ci/connectors/commands.py +0 -0
  175. {airbyte_internal_ops-0.3.0 → airbyte_internal_ops-0.4.0}/src/airbyte_ops_mcp/_legacy/airbyte_ci/connector_pipelines/airbyte_ci/connectors/consts.py +0 -0
  176. {airbyte_internal_ops-0.3.0 → airbyte_internal_ops-0.4.0}/src/airbyte_ops_mcp/_legacy/airbyte_ci/connector_pipelines/airbyte_ci/connectors/context.py +0 -0
  177. {airbyte_internal_ops-0.3.0 → airbyte_internal_ops-0.4.0}/src/airbyte_ops_mcp/_legacy/airbyte_ci/connector_pipelines/airbyte_ci/connectors/generate_erd/__init__.py +0 -0
  178. {airbyte_internal_ops-0.3.0 → airbyte_internal_ops-0.4.0}/src/airbyte_ops_mcp/_legacy/airbyte_ci/connector_pipelines/airbyte_ci/connectors/generate_erd/commands.py +0 -0
  179. {airbyte_internal_ops-0.3.0 → airbyte_internal_ops-0.4.0}/src/airbyte_ops_mcp/_legacy/airbyte_ci/connector_pipelines/airbyte_ci/connectors/generate_erd/pipeline.py +0 -0
  180. {airbyte_internal_ops-0.3.0 → airbyte_internal_ops-0.4.0}/src/airbyte_ops_mcp/_legacy/airbyte_ci/connector_pipelines/airbyte_ci/connectors/list/__init__.py +0 -0
  181. {airbyte_internal_ops-0.3.0 → airbyte_internal_ops-0.4.0}/src/airbyte_ops_mcp/_legacy/airbyte_ci/connector_pipelines/airbyte_ci/connectors/list/commands.py +0 -0
  182. {airbyte_internal_ops-0.3.0 → airbyte_internal_ops-0.4.0}/src/airbyte_ops_mcp/_legacy/airbyte_ci/connector_pipelines/airbyte_ci/connectors/migrate_to_inline_schemas/__init__.py +0 -0
  183. {airbyte_internal_ops-0.3.0 → airbyte_internal_ops-0.4.0}/src/airbyte_ops_mcp/_legacy/airbyte_ci/connector_pipelines/airbyte_ci/connectors/migrate_to_inline_schemas/commands.py +0 -0
  184. {airbyte_internal_ops-0.3.0 → airbyte_internal_ops-0.4.0}/src/airbyte_ops_mcp/_legacy/airbyte_ci/connector_pipelines/airbyte_ci/connectors/migrate_to_inline_schemas/pipeline.py +0 -0
  185. {airbyte_internal_ops-0.3.0 → airbyte_internal_ops-0.4.0}/src/airbyte_ops_mcp/_legacy/airbyte_ci/connector_pipelines/airbyte_ci/connectors/pipeline.py +0 -0
  186. {airbyte_internal_ops-0.3.0 → airbyte_internal_ops-0.4.0}/src/airbyte_ops_mcp/_legacy/airbyte_ci/connector_pipelines/airbyte_ci/connectors/pull_request/__init__.py +0 -0
  187. {airbyte_internal_ops-0.3.0 → airbyte_internal_ops-0.4.0}/src/airbyte_ops_mcp/_legacy/airbyte_ci/connector_pipelines/airbyte_ci/connectors/pull_request/commands.py +0 -0
  188. {airbyte_internal_ops-0.3.0 → airbyte_internal_ops-0.4.0}/src/airbyte_ops_mcp/_legacy/airbyte_ci/connector_pipelines/airbyte_ci/connectors/pull_request/pipeline.py +0 -0
  189. {airbyte_internal_ops-0.3.0 → airbyte_internal_ops-0.4.0}/src/airbyte_ops_mcp/_legacy/airbyte_ci/connector_pipelines/airbyte_ci/connectors/reports.py +0 -0
  190. {airbyte_internal_ops-0.3.0 → airbyte_internal_ops-0.4.0}/src/airbyte_ops_mcp/_legacy/airbyte_ci/connector_pipelines/airbyte_ci/connectors/test/__init__.py +0 -0
  191. {airbyte_internal_ops-0.3.0 → airbyte_internal_ops-0.4.0}/src/airbyte_ops_mcp/_legacy/airbyte_ci/connector_pipelines/airbyte_ci/connectors/test/commands.py +0 -0
  192. {airbyte_internal_ops-0.3.0 → airbyte_internal_ops-0.4.0}/src/airbyte_ops_mcp/_legacy/airbyte_ci/connector_pipelines/airbyte_ci/connectors/test/context.py +0 -0
  193. {airbyte_internal_ops-0.3.0 → airbyte_internal_ops-0.4.0}/src/airbyte_ops_mcp/_legacy/airbyte_ci/connector_pipelines/airbyte_ci/connectors/test/pipeline.py +0 -0
  194. {airbyte_internal_ops-0.3.0 → airbyte_internal_ops-0.4.0}/src/airbyte_ops_mcp/_legacy/airbyte_ci/connector_pipelines/airbyte_ci/connectors/test/steps/__init__.py +0 -0
  195. {airbyte_internal_ops-0.3.0 → airbyte_internal_ops-0.4.0}/src/airbyte_ops_mcp/_legacy/airbyte_ci/connector_pipelines/airbyte_ci/connectors/test/steps/common.py +0 -0
  196. {airbyte_internal_ops-0.3.0 → airbyte_internal_ops-0.4.0}/src/airbyte_ops_mcp/_legacy/airbyte_ci/connector_pipelines/airbyte_ci/connectors/test/steps/java_connectors.py +0 -0
  197. {airbyte_internal_ops-0.3.0 → airbyte_internal_ops-0.4.0}/src/airbyte_ops_mcp/_legacy/airbyte_ci/connector_pipelines/airbyte_ci/connectors/test/steps/manifest_only_connectors.py +0 -0
  198. {airbyte_internal_ops-0.3.0 → airbyte_internal_ops-0.4.0}/src/airbyte_ops_mcp/_legacy/airbyte_ci/connector_pipelines/airbyte_ci/connectors/test/steps/python_connectors.py +0 -0
  199. {airbyte_internal_ops-0.3.0 → airbyte_internal_ops-0.4.0}/src/airbyte_ops_mcp/_legacy/airbyte_ci/connector_pipelines/airbyte_ci/connectors/test/steps/templates/test_report.html.j2 +0 -0
  200. {airbyte_internal_ops-0.3.0 → airbyte_internal_ops-0.4.0}/src/airbyte_ops_mcp/_legacy/airbyte_ci/connector_pipelines/airbyte_ci/connectors/up_to_date/__init__.py +0 -0
  201. {airbyte_internal_ops-0.3.0 → airbyte_internal_ops-0.4.0}/src/airbyte_ops_mcp/_legacy/airbyte_ci/connector_pipelines/airbyte_ci/connectors/up_to_date/commands.py +0 -0
  202. {airbyte_internal_ops-0.3.0 → airbyte_internal_ops-0.4.0}/src/airbyte_ops_mcp/_legacy/airbyte_ci/connector_pipelines/airbyte_ci/connectors/up_to_date/pipeline.py +0 -0
  203. {airbyte_internal_ops-0.3.0 → airbyte_internal_ops-0.4.0}/src/airbyte_ops_mcp/_legacy/airbyte_ci/connector_pipelines/airbyte_ci/connectors/up_to_date/steps.py +0 -0
  204. {airbyte_internal_ops-0.3.0 → airbyte_internal_ops-0.4.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
  205. {airbyte_internal_ops-0.3.0 → airbyte_internal_ops-0.4.0}/src/airbyte_ops_mcp/_legacy/airbyte_ci/connector_pipelines/airbyte_ci/connectors/upgrade_cdk/__init__.py +0 -0
  206. {airbyte_internal_ops-0.3.0 → airbyte_internal_ops-0.4.0}/src/airbyte_ops_mcp/_legacy/airbyte_ci/connector_pipelines/airbyte_ci/connectors/upgrade_cdk/commands.py +0 -0
  207. {airbyte_internal_ops-0.3.0 → airbyte_internal_ops-0.4.0}/src/airbyte_ops_mcp/_legacy/airbyte_ci/connector_pipelines/airbyte_ci/connectors/upgrade_cdk/pipeline.py +0 -0
  208. {airbyte_internal_ops-0.3.0 → airbyte_internal_ops-0.4.0}/src/airbyte_ops_mcp/_legacy/airbyte_ci/connector_pipelines/airbyte_ci/metadata/__init__.py +0 -0
  209. {airbyte_internal_ops-0.3.0 → airbyte_internal_ops-0.4.0}/src/airbyte_ops_mcp/_legacy/airbyte_ci/connector_pipelines/airbyte_ci/metadata/commands.py +0 -0
  210. {airbyte_internal_ops-0.3.0 → airbyte_internal_ops-0.4.0}/src/airbyte_ops_mcp/_legacy/airbyte_ci/connector_pipelines/airbyte_ci/metadata/pipeline.py +0 -0
  211. {airbyte_internal_ops-0.3.0 → airbyte_internal_ops-0.4.0}/src/airbyte_ops_mcp/_legacy/airbyte_ci/connector_pipelines/airbyte_ci/poetry/__init__.py +0 -0
  212. {airbyte_internal_ops-0.3.0 → airbyte_internal_ops-0.4.0}/src/airbyte_ops_mcp/_legacy/airbyte_ci/connector_pipelines/airbyte_ci/poetry/commands.py +0 -0
  213. {airbyte_internal_ops-0.3.0 → airbyte_internal_ops-0.4.0}/src/airbyte_ops_mcp/_legacy/airbyte_ci/connector_pipelines/airbyte_ci/steps/__init__.py +0 -0
  214. {airbyte_internal_ops-0.3.0 → airbyte_internal_ops-0.4.0}/src/airbyte_ops_mcp/_legacy/airbyte_ci/connector_pipelines/airbyte_ci/steps/base_image.py +0 -0
  215. {airbyte_internal_ops-0.3.0 → airbyte_internal_ops-0.4.0}/src/airbyte_ops_mcp/_legacy/airbyte_ci/connector_pipelines/airbyte_ci/steps/docker.py +0 -0
  216. {airbyte_internal_ops-0.3.0 → airbyte_internal_ops-0.4.0}/src/airbyte_ops_mcp/_legacy/airbyte_ci/connector_pipelines/airbyte_ci/steps/gradle.py +0 -0
  217. {airbyte_internal_ops-0.3.0 → airbyte_internal_ops-0.4.0}/src/airbyte_ops_mcp/_legacy/airbyte_ci/connector_pipelines/airbyte_ci/steps/no_op.py +0 -0
  218. {airbyte_internal_ops-0.3.0 → airbyte_internal_ops-0.4.0}/src/airbyte_ops_mcp/_legacy/airbyte_ci/connector_pipelines/airbyte_ci/steps/poetry.py +0 -0
  219. {airbyte_internal_ops-0.3.0 → airbyte_internal_ops-0.4.0}/src/airbyte_ops_mcp/_legacy/airbyte_ci/connector_pipelines/airbyte_ci/steps/pull_request.py +0 -0
  220. {airbyte_internal_ops-0.3.0 → airbyte_internal_ops-0.4.0}/src/airbyte_ops_mcp/_legacy/airbyte_ci/connector_pipelines/airbyte_ci/test/__init__.py +0 -0
  221. {airbyte_internal_ops-0.3.0 → airbyte_internal_ops-0.4.0}/src/airbyte_ops_mcp/_legacy/airbyte_ci/connector_pipelines/airbyte_ci/test/commands.py +0 -0
  222. {airbyte_internal_ops-0.3.0 → airbyte_internal_ops-0.4.0}/src/airbyte_ops_mcp/_legacy/airbyte_ci/connector_pipelines/airbyte_ci/test/models.py +0 -0
  223. {airbyte_internal_ops-0.3.0 → airbyte_internal_ops-0.4.0}/src/airbyte_ops_mcp/_legacy/airbyte_ci/connector_pipelines/airbyte_ci/test/pipeline.py +0 -0
  224. {airbyte_internal_ops-0.3.0 → airbyte_internal_ops-0.4.0}/src/airbyte_ops_mcp/_legacy/airbyte_ci/connector_pipelines/airbyte_ci/update/__init__.py +0 -0
  225. {airbyte_internal_ops-0.3.0 → airbyte_internal_ops-0.4.0}/src/airbyte_ops_mcp/_legacy/airbyte_ci/connector_pipelines/airbyte_ci/update/commands.py +0 -0
  226. {airbyte_internal_ops-0.3.0 → airbyte_internal_ops-0.4.0}/src/airbyte_ops_mcp/_legacy/airbyte_ci/connector_pipelines/cli/airbyte_ci.py +0 -0
  227. {airbyte_internal_ops-0.3.0 → airbyte_internal_ops-0.4.0}/src/airbyte_ops_mcp/_legacy/airbyte_ci/connector_pipelines/cli/auto_update.py +0 -0
  228. {airbyte_internal_ops-0.3.0 → airbyte_internal_ops-0.4.0}/src/airbyte_ops_mcp/_legacy/airbyte_ci/connector_pipelines/cli/click_decorators.py +0 -0
  229. {airbyte_internal_ops-0.3.0 → airbyte_internal_ops-0.4.0}/src/airbyte_ops_mcp/_legacy/airbyte_ci/connector_pipelines/cli/confirm_prompt.py +0 -0
  230. {airbyte_internal_ops-0.3.0 → airbyte_internal_ops-0.4.0}/src/airbyte_ops_mcp/_legacy/airbyte_ci/connector_pipelines/cli/dagger_pipeline_command.py +0 -0
  231. {airbyte_internal_ops-0.3.0 → airbyte_internal_ops-0.4.0}/src/airbyte_ops_mcp/_legacy/airbyte_ci/connector_pipelines/cli/dagger_run.py +0 -0
  232. {airbyte_internal_ops-0.3.0 → airbyte_internal_ops-0.4.0}/src/airbyte_ops_mcp/_legacy/airbyte_ci/connector_pipelines/cli/ensure_repo_root.py +0 -0
  233. {airbyte_internal_ops-0.3.0 → airbyte_internal_ops-0.4.0}/src/airbyte_ops_mcp/_legacy/airbyte_ci/connector_pipelines/cli/lazy_group.py +0 -0
  234. {airbyte_internal_ops-0.3.0 → airbyte_internal_ops-0.4.0}/src/airbyte_ops_mcp/_legacy/airbyte_ci/connector_pipelines/cli/secrets.py +0 -0
  235. {airbyte_internal_ops-0.3.0 → airbyte_internal_ops-0.4.0}/src/airbyte_ops_mcp/_legacy/airbyte_ci/connector_pipelines/cli/telemetry.py +0 -0
  236. {airbyte_internal_ops-0.3.0 → airbyte_internal_ops-0.4.0}/src/airbyte_ops_mcp/_legacy/airbyte_ci/connector_pipelines/consts.py +0 -0
  237. {airbyte_internal_ops-0.3.0 → airbyte_internal_ops-0.4.0}/src/airbyte_ops_mcp/_legacy/airbyte_ci/connector_pipelines/hacks.py +0 -0
  238. {airbyte_internal_ops-0.3.0 → airbyte_internal_ops-0.4.0}/src/airbyte_ops_mcp/_legacy/airbyte_ci/connector_pipelines/models/__init__.py +0 -0
  239. {airbyte_internal_ops-0.3.0 → airbyte_internal_ops-0.4.0}/src/airbyte_ops_mcp/_legacy/airbyte_ci/connector_pipelines/models/artifacts.py +0 -0
  240. {airbyte_internal_ops-0.3.0 → airbyte_internal_ops-0.4.0}/src/airbyte_ops_mcp/_legacy/airbyte_ci/connector_pipelines/models/ci_requirements.py +0 -0
  241. {airbyte_internal_ops-0.3.0 → airbyte_internal_ops-0.4.0}/src/airbyte_ops_mcp/_legacy/airbyte_ci/connector_pipelines/models/contexts/__init__.py +0 -0
  242. {airbyte_internal_ops-0.3.0 → airbyte_internal_ops-0.4.0}/src/airbyte_ops_mcp/_legacy/airbyte_ci/connector_pipelines/models/contexts/click_pipeline_context.py +0 -0
  243. {airbyte_internal_ops-0.3.0 → airbyte_internal_ops-0.4.0}/src/airbyte_ops_mcp/_legacy/airbyte_ci/connector_pipelines/models/contexts/pipeline_context.py +0 -0
  244. {airbyte_internal_ops-0.3.0 → airbyte_internal_ops-0.4.0}/src/airbyte_ops_mcp/_legacy/airbyte_ci/connector_pipelines/models/reports.py +0 -0
  245. {airbyte_internal_ops-0.3.0 → airbyte_internal_ops-0.4.0}/src/airbyte_ops_mcp/_legacy/airbyte_ci/connector_pipelines/models/secrets.py +0 -0
  246. {airbyte_internal_ops-0.3.0 → airbyte_internal_ops-0.4.0}/src/airbyte_ops_mcp/_legacy/airbyte_ci/connector_pipelines/models/singleton.py +0 -0
  247. {airbyte_internal_ops-0.3.0 → airbyte_internal_ops-0.4.0}/src/airbyte_ops_mcp/_legacy/airbyte_ci/connector_pipelines/models/steps.py +0 -0
  248. {airbyte_internal_ops-0.3.0 → airbyte_internal_ops-0.4.0}/src/airbyte_ops_mcp/_legacy/airbyte_ci/connector_qa/README.md +0 -0
  249. {airbyte_internal_ops-0.3.0 → airbyte_internal_ops-0.4.0}/src/airbyte_ops_mcp/_legacy/airbyte_ci/connector_qa/__init__.py +0 -0
  250. {airbyte_internal_ops-0.3.0 → airbyte_internal_ops-0.4.0}/src/airbyte_ops_mcp/_legacy/airbyte_ci/connector_qa/checks/__init__.py +0 -0
  251. {airbyte_internal_ops-0.3.0 → airbyte_internal_ops-0.4.0}/src/airbyte_ops_mcp/_legacy/airbyte_ci/connector_qa/checks/assets.py +0 -0
  252. {airbyte_internal_ops-0.3.0 → airbyte_internal_ops-0.4.0}/src/airbyte_ops_mcp/_legacy/airbyte_ci/connector_qa/checks/documentation/__init__.py +0 -0
  253. {airbyte_internal_ops-0.3.0 → airbyte_internal_ops-0.4.0}/src/airbyte_ops_mcp/_legacy/airbyte_ci/connector_qa/checks/documentation/documentation.py +0 -0
  254. {airbyte_internal_ops-0.3.0 → airbyte_internal_ops-0.4.0}/src/airbyte_ops_mcp/_legacy/airbyte_ci/connector_qa/checks/documentation/helpers.py +0 -0
  255. {airbyte_internal_ops-0.3.0 → airbyte_internal_ops-0.4.0}/src/airbyte_ops_mcp/_legacy/airbyte_ci/connector_qa/checks/documentation/models.py +0 -0
  256. {airbyte_internal_ops-0.3.0 → airbyte_internal_ops-0.4.0}/src/airbyte_ops_mcp/_legacy/airbyte_ci/connector_qa/checks/documentation/templates/documentation_headers_check_description.md.j2 +0 -0
  257. {airbyte_internal_ops-0.3.0 → airbyte_internal_ops-0.4.0}/src/airbyte_ops_mcp/_legacy/airbyte_ci/connector_qa/checks/documentation/templates/section_content_description.md.j2 +0 -0
  258. {airbyte_internal_ops-0.3.0 → airbyte_internal_ops-0.4.0}/src/airbyte_ops_mcp/_legacy/airbyte_ci/connector_qa/checks/documentation/templates/template.md.j2 +0 -0
  259. {airbyte_internal_ops-0.3.0 → airbyte_internal_ops-0.4.0}/src/airbyte_ops_mcp/_legacy/airbyte_ci/connector_qa/checks/metadata.py +0 -0
  260. {airbyte_internal_ops-0.3.0 → airbyte_internal_ops-0.4.0}/src/airbyte_ops_mcp/_legacy/airbyte_ci/connector_qa/checks/packaging.py +0 -0
  261. {airbyte_internal_ops-0.3.0 → airbyte_internal_ops-0.4.0}/src/airbyte_ops_mcp/_legacy/airbyte_ci/connector_qa/checks/security.py +0 -0
  262. {airbyte_internal_ops-0.3.0 → airbyte_internal_ops-0.4.0}/src/airbyte_ops_mcp/_legacy/airbyte_ci/connector_qa/checks/version.py +0 -0
  263. {airbyte_internal_ops-0.3.0 → airbyte_internal_ops-0.4.0}/src/airbyte_ops_mcp/_legacy/airbyte_ci/connector_qa/cli.py +0 -0
  264. {airbyte_internal_ops-0.3.0 → airbyte_internal_ops-0.4.0}/src/airbyte_ops_mcp/_legacy/airbyte_ci/connector_qa/consts.py +0 -0
  265. {airbyte_internal_ops-0.3.0 → airbyte_internal_ops-0.4.0}/src/airbyte_ops_mcp/_legacy/airbyte_ci/connector_qa/models.py +0 -0
  266. {airbyte_internal_ops-0.3.0 → airbyte_internal_ops-0.4.0}/src/airbyte_ops_mcp/_legacy/airbyte_ci/connector_qa/templates/__init__.py +0 -0
  267. {airbyte_internal_ops-0.3.0 → airbyte_internal_ops-0.4.0}/src/airbyte_ops_mcp/_legacy/airbyte_ci/connector_qa/templates/qa_checks.md.j2 +0 -0
  268. {airbyte_internal_ops-0.3.0 → airbyte_internal_ops-0.4.0}/src/airbyte_ops_mcp/_legacy/airbyte_ci/connector_qa/utils.py +0 -0
  269. {airbyte_internal_ops-0.3.0 → airbyte_internal_ops-0.4.0}/src/airbyte_ops_mcp/_legacy/airbyte_ci/metadata_models/README.md +0 -0
  270. {airbyte_internal_ops-0.3.0 → airbyte_internal_ops-0.4.0}/src/airbyte_ops_mcp/_legacy/airbyte_ci/metadata_models/bin/bundle-schemas.js +0 -0
  271. {airbyte_internal_ops-0.3.0 → airbyte_internal_ops-0.4.0}/src/airbyte_ops_mcp/_legacy/airbyte_ci/metadata_models/bin/generate-metadata-models.sh +0 -0
  272. {airbyte_internal_ops-0.3.0 → airbyte_internal_ops-0.4.0}/src/airbyte_ops_mcp/_legacy/airbyte_ci/metadata_models/generated/ActorDefinitionResourceRequirements.py +0 -0
  273. {airbyte_internal_ops-0.3.0 → airbyte_internal_ops-0.4.0}/src/airbyte_ops_mcp/_legacy/airbyte_ci/metadata_models/generated/AirbyteInternal.py +0 -0
  274. {airbyte_internal_ops-0.3.0 → airbyte_internal_ops-0.4.0}/src/airbyte_ops_mcp/_legacy/airbyte_ci/metadata_models/generated/AllowedHosts.py +0 -0
  275. {airbyte_internal_ops-0.3.0 → airbyte_internal_ops-0.4.0}/src/airbyte_ops_mcp/_legacy/airbyte_ci/metadata_models/generated/ConnectorBreakingChanges.py +0 -0
  276. {airbyte_internal_ops-0.3.0 → airbyte_internal_ops-0.4.0}/src/airbyte_ops_mcp/_legacy/airbyte_ci/metadata_models/generated/ConnectorBuildOptions.py +0 -0
  277. {airbyte_internal_ops-0.3.0 → airbyte_internal_ops-0.4.0}/src/airbyte_ops_mcp/_legacy/airbyte_ci/metadata_models/generated/ConnectorIPCOptions.py +0 -0
  278. {airbyte_internal_ops-0.3.0 → airbyte_internal_ops-0.4.0}/src/airbyte_ops_mcp/_legacy/airbyte_ci/metadata_models/generated/ConnectorMetadataDefinitionV0.json +0 -0
  279. {airbyte_internal_ops-0.3.0 → airbyte_internal_ops-0.4.0}/src/airbyte_ops_mcp/_legacy/airbyte_ci/metadata_models/generated/ConnectorMetadataDefinitionV0.py +0 -0
  280. {airbyte_internal_ops-0.3.0 → airbyte_internal_ops-0.4.0}/src/airbyte_ops_mcp/_legacy/airbyte_ci/metadata_models/generated/ConnectorMetrics.py +0 -0
  281. {airbyte_internal_ops-0.3.0 → airbyte_internal_ops-0.4.0}/src/airbyte_ops_mcp/_legacy/airbyte_ci/metadata_models/generated/ConnectorPackageInfo.py +0 -0
  282. {airbyte_internal_ops-0.3.0 → airbyte_internal_ops-0.4.0}/src/airbyte_ops_mcp/_legacy/airbyte_ci/metadata_models/generated/ConnectorRegistryDestinationDefinition.py +0 -0
  283. {airbyte_internal_ops-0.3.0 → airbyte_internal_ops-0.4.0}/src/airbyte_ops_mcp/_legacy/airbyte_ci/metadata_models/generated/ConnectorRegistryReleases.py +0 -0
  284. {airbyte_internal_ops-0.3.0 → airbyte_internal_ops-0.4.0}/src/airbyte_ops_mcp/_legacy/airbyte_ci/metadata_models/generated/ConnectorRegistrySourceDefinition.py +0 -0
  285. {airbyte_internal_ops-0.3.0 → airbyte_internal_ops-0.4.0}/src/airbyte_ops_mcp/_legacy/airbyte_ci/metadata_models/generated/ConnectorRegistryV0.py +0 -0
  286. {airbyte_internal_ops-0.3.0 → airbyte_internal_ops-0.4.0}/src/airbyte_ops_mcp/_legacy/airbyte_ci/metadata_models/generated/ConnectorReleases.py +0 -0
  287. {airbyte_internal_ops-0.3.0 → airbyte_internal_ops-0.4.0}/src/airbyte_ops_mcp/_legacy/airbyte_ci/metadata_models/generated/ConnectorTestSuiteOptions.py +0 -0
  288. {airbyte_internal_ops-0.3.0 → airbyte_internal_ops-0.4.0}/src/airbyte_ops_mcp/_legacy/airbyte_ci/metadata_models/generated/GeneratedFields.py +0 -0
  289. {airbyte_internal_ops-0.3.0 → airbyte_internal_ops-0.4.0}/src/airbyte_ops_mcp/_legacy/airbyte_ci/metadata_models/generated/GitInfo.py +0 -0
  290. {airbyte_internal_ops-0.3.0 → airbyte_internal_ops-0.4.0}/src/airbyte_ops_mcp/_legacy/airbyte_ci/metadata_models/generated/JobType.py +0 -0
  291. {airbyte_internal_ops-0.3.0 → airbyte_internal_ops-0.4.0}/src/airbyte_ops_mcp/_legacy/airbyte_ci/metadata_models/generated/NormalizationDestinationDefinitionConfig.py +0 -0
  292. {airbyte_internal_ops-0.3.0 → airbyte_internal_ops-0.4.0}/src/airbyte_ops_mcp/_legacy/airbyte_ci/metadata_models/generated/RegistryOverrides.py +0 -0
  293. {airbyte_internal_ops-0.3.0 → airbyte_internal_ops-0.4.0}/src/airbyte_ops_mcp/_legacy/airbyte_ci/metadata_models/generated/ReleaseStage.py +0 -0
  294. {airbyte_internal_ops-0.3.0 → airbyte_internal_ops-0.4.0}/src/airbyte_ops_mcp/_legacy/airbyte_ci/metadata_models/generated/RemoteRegistries.py +0 -0
  295. {airbyte_internal_ops-0.3.0 → airbyte_internal_ops-0.4.0}/src/airbyte_ops_mcp/_legacy/airbyte_ci/metadata_models/generated/ResourceRequirements.py +0 -0
  296. {airbyte_internal_ops-0.3.0 → airbyte_internal_ops-0.4.0}/src/airbyte_ops_mcp/_legacy/airbyte_ci/metadata_models/generated/RolloutConfiguration.py +0 -0
  297. {airbyte_internal_ops-0.3.0 → airbyte_internal_ops-0.4.0}/src/airbyte_ops_mcp/_legacy/airbyte_ci/metadata_models/generated/Secret.py +0 -0
  298. {airbyte_internal_ops-0.3.0 → airbyte_internal_ops-0.4.0}/src/airbyte_ops_mcp/_legacy/airbyte_ci/metadata_models/generated/SecretStore.py +0 -0
  299. {airbyte_internal_ops-0.3.0 → airbyte_internal_ops-0.4.0}/src/airbyte_ops_mcp/_legacy/airbyte_ci/metadata_models/generated/SourceFileInfo.py +0 -0
  300. {airbyte_internal_ops-0.3.0 → airbyte_internal_ops-0.4.0}/src/airbyte_ops_mcp/_legacy/airbyte_ci/metadata_models/generated/SuggestedStreams.py +0 -0
  301. {airbyte_internal_ops-0.3.0 → airbyte_internal_ops-0.4.0}/src/airbyte_ops_mcp/_legacy/airbyte_ci/metadata_models/generated/SupportLevel.py +0 -0
  302. {airbyte_internal_ops-0.3.0 → airbyte_internal_ops-0.4.0}/src/airbyte_ops_mcp/_legacy/airbyte_ci/metadata_models/generated/TestConnections.py +0 -0
  303. {airbyte_internal_ops-0.3.0 → airbyte_internal_ops-0.4.0}/src/airbyte_ops_mcp/_legacy/airbyte_ci/metadata_models/generated/__init__.py +0 -0
  304. {airbyte_internal_ops-0.3.0 → airbyte_internal_ops-0.4.0}/src/airbyte_ops_mcp/_legacy/airbyte_ci/metadata_models/generated/airbyte-connector-metadata-schema.json +0 -0
  305. {airbyte_internal_ops-0.3.0 → airbyte_internal_ops-0.4.0}/src/airbyte_ops_mcp/_legacy/airbyte_ci/metadata_models/models/ActorDefinitionResourceRequirements.yaml +0 -0
  306. {airbyte_internal_ops-0.3.0 → airbyte_internal_ops-0.4.0}/src/airbyte_ops_mcp/_legacy/airbyte_ci/metadata_models/models/AirbyteInternal.yaml +0 -0
  307. {airbyte_internal_ops-0.3.0 → airbyte_internal_ops-0.4.0}/src/airbyte_ops_mcp/_legacy/airbyte_ci/metadata_models/models/AllowedHosts.yaml +0 -0
  308. {airbyte_internal_ops-0.3.0 → airbyte_internal_ops-0.4.0}/src/airbyte_ops_mcp/_legacy/airbyte_ci/metadata_models/models/ConnectorBreakingChanges.yaml +0 -0
  309. {airbyte_internal_ops-0.3.0 → airbyte_internal_ops-0.4.0}/src/airbyte_ops_mcp/_legacy/airbyte_ci/metadata_models/models/ConnectorBuildOptions.yaml +0 -0
  310. {airbyte_internal_ops-0.3.0 → airbyte_internal_ops-0.4.0}/src/airbyte_ops_mcp/_legacy/airbyte_ci/metadata_models/models/ConnectorIPCOptions.yaml +0 -0
  311. {airbyte_internal_ops-0.3.0 → airbyte_internal_ops-0.4.0}/src/airbyte_ops_mcp/_legacy/airbyte_ci/metadata_models/models/ConnectorMetadataDefinitionV0.yaml +0 -0
  312. {airbyte_internal_ops-0.3.0 → airbyte_internal_ops-0.4.0}/src/airbyte_ops_mcp/_legacy/airbyte_ci/metadata_models/models/ConnectorMetrics.yaml +0 -0
  313. {airbyte_internal_ops-0.3.0 → airbyte_internal_ops-0.4.0}/src/airbyte_ops_mcp/_legacy/airbyte_ci/metadata_models/models/ConnectorPackageInfo.yaml +0 -0
  314. {airbyte_internal_ops-0.3.0 → airbyte_internal_ops-0.4.0}/src/airbyte_ops_mcp/_legacy/airbyte_ci/metadata_models/models/ConnectorRegistryDestinationDefinition.yaml +0 -0
  315. {airbyte_internal_ops-0.3.0 → airbyte_internal_ops-0.4.0}/src/airbyte_ops_mcp/_legacy/airbyte_ci/metadata_models/models/ConnectorRegistryReleases.yaml +0 -0
  316. {airbyte_internal_ops-0.3.0 → airbyte_internal_ops-0.4.0}/src/airbyte_ops_mcp/_legacy/airbyte_ci/metadata_models/models/ConnectorRegistrySourceDefinition.yaml +0 -0
  317. {airbyte_internal_ops-0.3.0 → airbyte_internal_ops-0.4.0}/src/airbyte_ops_mcp/_legacy/airbyte_ci/metadata_models/models/ConnectorRegistryV0.yaml +0 -0
  318. {airbyte_internal_ops-0.3.0 → airbyte_internal_ops-0.4.0}/src/airbyte_ops_mcp/_legacy/airbyte_ci/metadata_models/models/ConnectorReleases.yaml +0 -0
  319. {airbyte_internal_ops-0.3.0 → airbyte_internal_ops-0.4.0}/src/airbyte_ops_mcp/_legacy/airbyte_ci/metadata_models/models/ConnectorTestSuiteOptions.yaml +0 -0
  320. {airbyte_internal_ops-0.3.0 → airbyte_internal_ops-0.4.0}/src/airbyte_ops_mcp/_legacy/airbyte_ci/metadata_models/models/GeneratedFields.yaml +0 -0
  321. {airbyte_internal_ops-0.3.0 → airbyte_internal_ops-0.4.0}/src/airbyte_ops_mcp/_legacy/airbyte_ci/metadata_models/models/GitInfo.yaml +0 -0
  322. {airbyte_internal_ops-0.3.0 → airbyte_internal_ops-0.4.0}/src/airbyte_ops_mcp/_legacy/airbyte_ci/metadata_models/models/JobType.yaml +0 -0
  323. {airbyte_internal_ops-0.3.0 → airbyte_internal_ops-0.4.0}/src/airbyte_ops_mcp/_legacy/airbyte_ci/metadata_models/models/NormalizationDestinationDefinitionConfig.yaml +0 -0
  324. {airbyte_internal_ops-0.3.0 → airbyte_internal_ops-0.4.0}/src/airbyte_ops_mcp/_legacy/airbyte_ci/metadata_models/models/RegistryOverrides.yaml +0 -0
  325. {airbyte_internal_ops-0.3.0 → airbyte_internal_ops-0.4.0}/src/airbyte_ops_mcp/_legacy/airbyte_ci/metadata_models/models/ReleaseStage.yaml +0 -0
  326. {airbyte_internal_ops-0.3.0 → airbyte_internal_ops-0.4.0}/src/airbyte_ops_mcp/_legacy/airbyte_ci/metadata_models/models/RemoteRegistries.yaml +0 -0
  327. {airbyte_internal_ops-0.3.0 → airbyte_internal_ops-0.4.0}/src/airbyte_ops_mcp/_legacy/airbyte_ci/metadata_models/models/ResourceRequirements.yaml +0 -0
  328. {airbyte_internal_ops-0.3.0 → airbyte_internal_ops-0.4.0}/src/airbyte_ops_mcp/_legacy/airbyte_ci/metadata_models/models/RolloutConfiguration.yaml +0 -0
  329. {airbyte_internal_ops-0.3.0 → airbyte_internal_ops-0.4.0}/src/airbyte_ops_mcp/_legacy/airbyte_ci/metadata_models/models/Secret.yaml +0 -0
  330. {airbyte_internal_ops-0.3.0 → airbyte_internal_ops-0.4.0}/src/airbyte_ops_mcp/_legacy/airbyte_ci/metadata_models/models/SecretStore.yaml +0 -0
  331. {airbyte_internal_ops-0.3.0 → airbyte_internal_ops-0.4.0}/src/airbyte_ops_mcp/_legacy/airbyte_ci/metadata_models/models/SourceFileInfo.yaml +0 -0
  332. {airbyte_internal_ops-0.3.0 → airbyte_internal_ops-0.4.0}/src/airbyte_ops_mcp/_legacy/airbyte_ci/metadata_models/models/SuggestedStreams.yaml +0 -0
  333. {airbyte_internal_ops-0.3.0 → airbyte_internal_ops-0.4.0}/src/airbyte_ops_mcp/_legacy/airbyte_ci/metadata_models/models/SupportLevel.yaml +0 -0
  334. {airbyte_internal_ops-0.3.0 → airbyte_internal_ops-0.4.0}/src/airbyte_ops_mcp/_legacy/airbyte_ci/metadata_models/models/TestConnections.yaml +0 -0
  335. {airbyte_internal_ops-0.3.0 → airbyte_internal_ops-0.4.0}/src/airbyte_ops_mcp/_legacy/airbyte_ci/metadata_models/package-lock.json +0 -0
  336. {airbyte_internal_ops-0.3.0 → airbyte_internal_ops-0.4.0}/src/airbyte_ops_mcp/_legacy/airbyte_ci/metadata_models/package.json +0 -0
  337. {airbyte_internal_ops-0.3.0 → airbyte_internal_ops-0.4.0}/src/airbyte_ops_mcp/_legacy/airbyte_ci/metadata_models/transform.py +0 -0
  338. {airbyte_internal_ops-0.3.0 → airbyte_internal_ops-0.4.0}/src/airbyte_ops_mcp/_legacy/airbyte_ci/metadata_service/README.md +0 -0
  339. {airbyte_internal_ops-0.3.0 → airbyte_internal_ops-0.4.0}/src/airbyte_ops_mcp/_legacy/airbyte_ci/metadata_service/commands.py +0 -0
  340. {airbyte_internal_ops-0.3.0 → airbyte_internal_ops-0.4.0}/src/airbyte_ops_mcp/_legacy/airbyte_ci/metadata_service/constants.py +0 -0
  341. {airbyte_internal_ops-0.3.0 → airbyte_internal_ops-0.4.0}/src/airbyte_ops_mcp/_legacy/airbyte_ci/metadata_service/docker_hub.py +0 -0
  342. {airbyte_internal_ops-0.3.0 → airbyte_internal_ops-0.4.0}/src/airbyte_ops_mcp/_legacy/airbyte_ci/metadata_service/docs/external_documentation_urls.md +0 -0
  343. {airbyte_internal_ops-0.3.0 → airbyte_internal_ops-0.4.0}/src/airbyte_ops_mcp/_legacy/airbyte_ci/metadata_service/gcs_upload.py +0 -0
  344. {airbyte_internal_ops-0.3.0 → airbyte_internal_ops-0.4.0}/src/airbyte_ops_mcp/_legacy/airbyte_ci/metadata_service/helpers/files.py +0 -0
  345. {airbyte_internal_ops-0.3.0 → airbyte_internal_ops-0.4.0}/src/airbyte_ops_mcp/_legacy/airbyte_ci/metadata_service/helpers/gcs.py +0 -0
  346. {airbyte_internal_ops-0.3.0 → airbyte_internal_ops-0.4.0}/src/airbyte_ops_mcp/_legacy/airbyte_ci/metadata_service/helpers/object_helpers.py +0 -0
  347. {airbyte_internal_ops-0.3.0 → airbyte_internal_ops-0.4.0}/src/airbyte_ops_mcp/_legacy/airbyte_ci/metadata_service/helpers/slack.py +0 -0
  348. {airbyte_internal_ops-0.3.0 → airbyte_internal_ops-0.4.0}/src/airbyte_ops_mcp/_legacy/airbyte_ci/metadata_service/orchestrator/.env.template +0 -0
  349. {airbyte_internal_ops-0.3.0 → airbyte_internal_ops-0.4.0}/src/airbyte_ops_mcp/_legacy/airbyte_ci/metadata_service/orchestrator/README.md +0 -0
  350. {airbyte_internal_ops-0.3.0 → airbyte_internal_ops-0.4.0}/src/airbyte_ops_mcp/_legacy/airbyte_ci/metadata_service/orchestrator/dagster_cloud.yaml +0 -0
  351. {airbyte_internal_ops-0.3.0 → airbyte_internal_ops-0.4.0}/src/airbyte_ops_mcp/_legacy/airbyte_ci/metadata_service/orchestrator/orchestrator/__init__.py +0 -0
  352. {airbyte_internal_ops-0.3.0 → airbyte_internal_ops-0.4.0}/src/airbyte_ops_mcp/_legacy/airbyte_ci/metadata_service/orchestrator/orchestrator/assets/connector_metrics.py +0 -0
  353. {airbyte_internal_ops-0.3.0 → airbyte_internal_ops-0.4.0}/src/airbyte_ops_mcp/_legacy/airbyte_ci/metadata_service/orchestrator/orchestrator/assets/github.py +0 -0
  354. {airbyte_internal_ops-0.3.0 → airbyte_internal_ops-0.4.0}/src/airbyte_ops_mcp/_legacy/airbyte_ci/metadata_service/orchestrator/orchestrator/assets/metadata.py +0 -0
  355. {airbyte_internal_ops-0.3.0 → airbyte_internal_ops-0.4.0}/src/airbyte_ops_mcp/_legacy/airbyte_ci/metadata_service/orchestrator/orchestrator/assets/registry.py +0 -0
  356. {airbyte_internal_ops-0.3.0 → airbyte_internal_ops-0.4.0}/src/airbyte_ops_mcp/_legacy/airbyte_ci/metadata_service/orchestrator/orchestrator/assets/registry_entry.py +0 -0
  357. {airbyte_internal_ops-0.3.0 → airbyte_internal_ops-0.4.0}/src/airbyte_ops_mcp/_legacy/airbyte_ci/metadata_service/orchestrator/orchestrator/assets/registry_report.py +0 -0
  358. {airbyte_internal_ops-0.3.0 → airbyte_internal_ops-0.4.0}/src/airbyte_ops_mcp/_legacy/airbyte_ci/metadata_service/orchestrator/orchestrator/assets/slack.py +0 -0
  359. {airbyte_internal_ops-0.3.0 → airbyte_internal_ops-0.4.0}/src/airbyte_ops_mcp/_legacy/airbyte_ci/metadata_service/orchestrator/orchestrator/assets/specs_secrets_mask.py +0 -0
  360. {airbyte_internal_ops-0.3.0 → airbyte_internal_ops-0.4.0}/src/airbyte_ops_mcp/_legacy/airbyte_ci/metadata_service/orchestrator/orchestrator/config.py +0 -0
  361. {airbyte_internal_ops-0.3.0 → airbyte_internal_ops-0.4.0}/src/airbyte_ops_mcp/_legacy/airbyte_ci/metadata_service/orchestrator/orchestrator/fetcher/connector_cdk_version.py +0 -0
  362. {airbyte_internal_ops-0.3.0 → airbyte_internal_ops-0.4.0}/src/airbyte_ops_mcp/_legacy/airbyte_ci/metadata_service/orchestrator/orchestrator/hacks.py +0 -0
  363. {airbyte_internal_ops-0.3.0 → airbyte_internal_ops-0.4.0}/src/airbyte_ops_mcp/_legacy/airbyte_ci/metadata_service/orchestrator/orchestrator/jobs/registry.py +0 -0
  364. {airbyte_internal_ops-0.3.0 → airbyte_internal_ops-0.4.0}/src/airbyte_ops_mcp/_legacy/airbyte_ci/metadata_service/orchestrator/orchestrator/logging/publish_connector_lifecycle.py +0 -0
  365. {airbyte_internal_ops-0.3.0 → airbyte_internal_ops-0.4.0}/src/airbyte_ops_mcp/_legacy/airbyte_ci/metadata_service/orchestrator/orchestrator/logging/sentry.py +0 -0
  366. {airbyte_internal_ops-0.3.0 → airbyte_internal_ops-0.4.0}/src/airbyte_ops_mcp/_legacy/airbyte_ci/metadata_service/orchestrator/orchestrator/models/ci_report.py +0 -0
  367. {airbyte_internal_ops-0.3.0 → airbyte_internal_ops-0.4.0}/src/airbyte_ops_mcp/_legacy/airbyte_ci/metadata_service/orchestrator/orchestrator/models/metadata.py +0 -0
  368. {airbyte_internal_ops-0.3.0 → airbyte_internal_ops-0.4.0}/src/airbyte_ops_mcp/_legacy/airbyte_ci/metadata_service/orchestrator/orchestrator/ops/slack.py +0 -0
  369. {airbyte_internal_ops-0.3.0 → airbyte_internal_ops-0.4.0}/src/airbyte_ops_mcp/_legacy/airbyte_ci/metadata_service/orchestrator/orchestrator/resources/file_managers/local_file_manager.py +0 -0
  370. {airbyte_internal_ops-0.3.0 → airbyte_internal_ops-0.4.0}/src/airbyte_ops_mcp/_legacy/airbyte_ci/metadata_service/orchestrator/orchestrator/resources/gcp.py +0 -0
  371. {airbyte_internal_ops-0.3.0 → airbyte_internal_ops-0.4.0}/src/airbyte_ops_mcp/_legacy/airbyte_ci/metadata_service/orchestrator/orchestrator/resources/github.py +0 -0
  372. {airbyte_internal_ops-0.3.0 → airbyte_internal_ops-0.4.0}/src/airbyte_ops_mcp/_legacy/airbyte_ci/metadata_service/orchestrator/orchestrator/resources/local.py +0 -0
  373. {airbyte_internal_ops-0.3.0 → airbyte_internal_ops-0.4.0}/src/airbyte_ops_mcp/_legacy/airbyte_ci/metadata_service/orchestrator/orchestrator/sensors/gcs.py +0 -0
  374. {airbyte_internal_ops-0.3.0 → airbyte_internal_ops-0.4.0}/src/airbyte_ops_mcp/_legacy/airbyte_ci/metadata_service/orchestrator/orchestrator/sensors/github.py +0 -0
  375. {airbyte_internal_ops-0.3.0 → airbyte_internal_ops-0.4.0}/src/airbyte_ops_mcp/_legacy/airbyte_ci/metadata_service/orchestrator/orchestrator/sensors/registry.py +0 -0
  376. {airbyte_internal_ops-0.3.0 → airbyte_internal_ops-0.4.0}/src/airbyte_ops_mcp/_legacy/airbyte_ci/metadata_service/orchestrator/orchestrator/templates/base.html +0 -0
  377. {airbyte_internal_ops-0.3.0 → airbyte_internal_ops-0.4.0}/src/airbyte_ops_mcp/_legacy/airbyte_ci/metadata_service/orchestrator/orchestrator/templates/connector_registry_locations.html +0 -0
  378. {airbyte_internal_ops-0.3.0 → airbyte_internal_ops-0.4.0}/src/airbyte_ops_mcp/_legacy/airbyte_ci/metadata_service/orchestrator/orchestrator/templates/render.py +0 -0
  379. {airbyte_internal_ops-0.3.0 → airbyte_internal_ops-0.4.0}/src/airbyte_ops_mcp/_legacy/airbyte_ci/metadata_service/orchestrator/orchestrator/utils/blob_helpers.py +0 -0
  380. {airbyte_internal_ops-0.3.0 → airbyte_internal_ops-0.4.0}/src/airbyte_ops_mcp/_legacy/airbyte_ci/metadata_service/orchestrator/orchestrator/utils/dagster_helpers.py +0 -0
  381. {airbyte_internal_ops-0.3.0 → airbyte_internal_ops-0.4.0}/src/airbyte_ops_mcp/_legacy/airbyte_ci/metadata_service/orchestrator/orchestrator/utils/object_helpers.py +0 -0
  382. {airbyte_internal_ops-0.3.0 → airbyte_internal_ops-0.4.0}/src/airbyte_ops_mcp/_legacy/airbyte_ci/metadata_service/orchestrator/poetry.lock +0 -0
  383. {airbyte_internal_ops-0.3.0 → airbyte_internal_ops-0.4.0}/src/airbyte_ops_mcp/_legacy/airbyte_ci/metadata_service/orchestrator/tests/__init__.py +0 -0
  384. {airbyte_internal_ops-0.3.0 → airbyte_internal_ops-0.4.0}/src/airbyte_ops_mcp/_legacy/airbyte_ci/metadata_service/orchestrator/tests/conftest.py.disabled +0 -0
  385. {airbyte_internal_ops-0.3.0 → airbyte_internal_ops-0.4.0}/src/airbyte_ops_mcp/_legacy/airbyte_ci/metadata_service/orchestrator/tests/fixtures/__init__.py +0 -0
  386. {airbyte_internal_ops-0.3.0 → airbyte_internal_ops-0.4.0}/src/airbyte_ops_mcp/_legacy/airbyte_ci/metadata_service/orchestrator/tests/fixtures/cloud_registry.json +0 -0
  387. {airbyte_internal_ops-0.3.0 → airbyte_internal_ops-0.4.0}/src/airbyte_ops_mcp/_legacy/airbyte_ci/metadata_service/orchestrator/tests/fixtures/oss_registry.json +0 -0
  388. {airbyte_internal_ops-0.3.0 → airbyte_internal_ops-0.4.0}/src/airbyte_ops_mcp/_legacy/airbyte_ci/metadata_service/orchestrator/tests/test_connector_metrics.py +0 -0
  389. {airbyte_internal_ops-0.3.0 → airbyte_internal_ops-0.4.0}/src/airbyte_ops_mcp/_legacy/airbyte_ci/metadata_service/orchestrator/tests/test_dagster_helpers.py +0 -0
  390. {airbyte_internal_ops-0.3.0 → airbyte_internal_ops-0.4.0}/src/airbyte_ops_mcp/_legacy/airbyte_ci/metadata_service/orchestrator/tests/test_debug.py +0 -0
  391. {airbyte_internal_ops-0.3.0 → airbyte_internal_ops-0.4.0}/src/airbyte_ops_mcp/_legacy/airbyte_ci/metadata_service/orchestrator/tests/test_partition_jobs.py +0 -0
  392. {airbyte_internal_ops-0.3.0 → airbyte_internal_ops-0.4.0}/src/airbyte_ops_mcp/_legacy/airbyte_ci/metadata_service/orchestrator/tests/test_registry.py +0 -0
  393. {airbyte_internal_ops-0.3.0 → airbyte_internal_ops-0.4.0}/src/airbyte_ops_mcp/_legacy/airbyte_ci/metadata_service/orchestrator/tests/test_specs_secrets_mask.py +0 -0
  394. {airbyte_internal_ops-0.3.0 → airbyte_internal_ops-0.4.0}/src/airbyte_ops_mcp/_legacy/airbyte_ci/metadata_service/registry.py +0 -0
  395. {airbyte_internal_ops-0.3.0 → airbyte_internal_ops-0.4.0}/src/airbyte_ops_mcp/_legacy/airbyte_ci/metadata_service/registry_entry.py +0 -0
  396. {airbyte_internal_ops-0.3.0 → airbyte_internal_ops-0.4.0}/src/airbyte_ops_mcp/_legacy/airbyte_ci/metadata_service/registry_report.py +0 -0
  397. {airbyte_internal_ops-0.3.0 → airbyte_internal_ops-0.4.0}/src/airbyte_ops_mcp/_legacy/airbyte_ci/metadata_service/sentry.py +0 -0
  398. {airbyte_internal_ops-0.3.0 → airbyte_internal_ops-0.4.0}/src/airbyte_ops_mcp/_legacy/airbyte_ci/metadata_service/spec_cache.py +0 -0
  399. {airbyte_internal_ops-0.3.0 → airbyte_internal_ops-0.4.0}/src/airbyte_ops_mcp/_legacy/airbyte_ci/metadata_service/specs_secrets_mask.py +0 -0
  400. {airbyte_internal_ops-0.3.0 → airbyte_internal_ops-0.4.0}/src/airbyte_ops_mcp/_legacy/airbyte_ci/metadata_service/stale_metadata_report.py +0 -0
  401. {airbyte_internal_ops-0.3.0 → airbyte_internal_ops-0.4.0}/src/airbyte_ops_mcp/_legacy/airbyte_ci/metadata_service/templates/base.html +0 -0
  402. {airbyte_internal_ops-0.3.0 → airbyte_internal_ops-0.4.0}/src/airbyte_ops_mcp/_legacy/airbyte_ci/metadata_service/templates/connector_registry_locations.html +0 -0
  403. {airbyte_internal_ops-0.3.0 → airbyte_internal_ops-0.4.0}/src/airbyte_ops_mcp/_legacy/airbyte_ci/metadata_service/templates/render.py +0 -0
  404. {airbyte_internal_ops-0.3.0 → airbyte_internal_ops-0.4.0}/src/airbyte_ops_mcp/_legacy/airbyte_ci/metadata_service/validators/metadata_validator.py +0 -0
  405. {airbyte_internal_ops-0.3.0 → airbyte_internal_ops-0.4.0}/src/airbyte_ops_mcp/airbyte_repo/__init__.py +0 -0
  406. {airbyte_internal_ops-0.3.0 → airbyte_internal_ops-0.4.0}/src/airbyte_ops_mcp/airbyte_repo/bump_version.py +0 -0
  407. {airbyte_internal_ops-0.3.0 → airbyte_internal_ops-0.4.0}/src/airbyte_ops_mcp/airbyte_repo/list_connectors.py +0 -0
  408. {airbyte_internal_ops-0.3.0 → airbyte_internal_ops-0.4.0}/src/airbyte_ops_mcp/airbyte_repo/utils.py +0 -0
  409. {airbyte_internal_ops-0.3.0 → airbyte_internal_ops-0.4.0}/src/airbyte_ops_mcp/cli/__init__.py +0 -0
  410. {airbyte_internal_ops-0.3.0 → airbyte_internal_ops-0.4.0}/src/airbyte_ops_mcp/cli/_base.py +0 -0
  411. {airbyte_internal_ops-0.3.0 → airbyte_internal_ops-0.4.0}/src/airbyte_ops_mcp/cli/_shared.py +0 -0
  412. {airbyte_internal_ops-0.3.0 → airbyte_internal_ops-0.4.0}/src/airbyte_ops_mcp/cli/app.py +0 -0
  413. {airbyte_internal_ops-0.3.0 → airbyte_internal_ops-0.4.0}/src/airbyte_ops_mcp/cli/cloud.py +0 -0
  414. {airbyte_internal_ops-0.3.0 → airbyte_internal_ops-0.4.0}/src/airbyte_ops_mcp/cli/gh.py +0 -0
  415. {airbyte_internal_ops-0.3.0 → airbyte_internal_ops-0.4.0}/src/airbyte_ops_mcp/cli/registry.py +0 -0
  416. {airbyte_internal_ops-0.3.0 → airbyte_internal_ops-0.4.0}/src/airbyte_ops_mcp/cli/repo.py +0 -0
  417. {airbyte_internal_ops-0.3.0 → airbyte_internal_ops-0.4.0}/src/airbyte_ops_mcp/cloud_admin/__init__.py +0 -0
  418. {airbyte_internal_ops-0.3.0 → airbyte_internal_ops-0.4.0}/src/airbyte_ops_mcp/cloud_admin/api_client.py +0 -0
  419. {airbyte_internal_ops-0.3.0 → airbyte_internal_ops-0.4.0}/src/airbyte_ops_mcp/cloud_admin/auth.py +0 -0
  420. {airbyte_internal_ops-0.3.0 → airbyte_internal_ops-0.4.0}/src/airbyte_ops_mcp/cloud_admin/connection_config.py +0 -0
  421. {airbyte_internal_ops-0.3.0 → airbyte_internal_ops-0.4.0}/src/airbyte_ops_mcp/cloud_admin/models.py +0 -0
  422. {airbyte_internal_ops-0.3.0 → airbyte_internal_ops-0.4.0}/src/airbyte_ops_mcp/connection_config_retriever/__init__.py +0 -0
  423. {airbyte_internal_ops-0.3.0 → airbyte_internal_ops-0.4.0}/src/airbyte_ops_mcp/connection_config_retriever/retrieval.py +0 -0
  424. {airbyte_internal_ops-0.3.0 → airbyte_internal_ops-0.4.0}/src/airbyte_ops_mcp/connection_config_retriever/secrets_resolution.py +0 -0
  425. {airbyte_internal_ops-0.3.0 → airbyte_internal_ops-0.4.0}/src/airbyte_ops_mcp/constants.py +0 -0
  426. {airbyte_internal_ops-0.3.0 → airbyte_internal_ops-0.4.0}/src/airbyte_ops_mcp/gcp_logs/__init__.py +0 -0
  427. {airbyte_internal_ops-0.3.0 → airbyte_internal_ops-0.4.0}/src/airbyte_ops_mcp/github_actions.py +0 -0
  428. {airbyte_internal_ops-0.3.0 → airbyte_internal_ops-0.4.0}/src/airbyte_ops_mcp/github_api.py +0 -0
  429. {airbyte_internal_ops-0.3.0 → airbyte_internal_ops-0.4.0}/src/airbyte_ops_mcp/mcp/__init__.py +0 -0
  430. {airbyte_internal_ops-0.3.0 → airbyte_internal_ops-0.4.0}/src/airbyte_ops_mcp/mcp/_guidance.py +0 -0
  431. {airbyte_internal_ops-0.3.0 → airbyte_internal_ops-0.4.0}/src/airbyte_ops_mcp/mcp/_http_headers.py +0 -0
  432. {airbyte_internal_ops-0.3.0 → airbyte_internal_ops-0.4.0}/src/airbyte_ops_mcp/mcp/_mcp_utils.py +0 -0
  433. {airbyte_internal_ops-0.3.0 → airbyte_internal_ops-0.4.0}/src/airbyte_ops_mcp/mcp/cloud_connector_versions.py +0 -0
  434. {airbyte_internal_ops-0.3.0 → airbyte_internal_ops-0.4.0}/src/airbyte_ops_mcp/mcp/connector_analysis.py +0 -0
  435. {airbyte_internal_ops-0.3.0 → airbyte_internal_ops-0.4.0}/src/airbyte_ops_mcp/mcp/connector_qa.py +0 -0
  436. {airbyte_internal_ops-0.3.0 → airbyte_internal_ops-0.4.0}/src/airbyte_ops_mcp/mcp/gcp_logs.py +0 -0
  437. {airbyte_internal_ops-0.3.0 → airbyte_internal_ops-0.4.0}/src/airbyte_ops_mcp/mcp/github.py +0 -0
  438. {airbyte_internal_ops-0.3.0 → airbyte_internal_ops-0.4.0}/src/airbyte_ops_mcp/mcp/github_repo_ops.py +0 -0
  439. {airbyte_internal_ops-0.3.0 → airbyte_internal_ops-0.4.0}/src/airbyte_ops_mcp/mcp/metadata.py +0 -0
  440. {airbyte_internal_ops-0.3.0 → airbyte_internal_ops-0.4.0}/src/airbyte_ops_mcp/mcp/prompts.py +0 -0
  441. {airbyte_internal_ops-0.3.0 → airbyte_internal_ops-0.4.0}/src/airbyte_ops_mcp/mcp/registry.py +0 -0
  442. {airbyte_internal_ops-0.3.0 → airbyte_internal_ops-0.4.0}/src/airbyte_ops_mcp/mcp/server.py +0 -0
  443. {airbyte_internal_ops-0.3.0 → airbyte_internal_ops-0.4.0}/src/airbyte_ops_mcp/mcp/server_info.py +0 -0
  444. {airbyte_internal_ops-0.3.0 → airbyte_internal_ops-0.4.0}/src/airbyte_ops_mcp/prod_db_access/__init__.py +0 -0
  445. {airbyte_internal_ops-0.3.0 → airbyte_internal_ops-0.4.0}/src/airbyte_ops_mcp/prod_db_access/db_engine.py +0 -0
  446. {airbyte_internal_ops-0.3.0 → airbyte_internal_ops-0.4.0}/src/airbyte_ops_mcp/prod_db_access/py.typed +0 -0
  447. {airbyte_internal_ops-0.3.0 → airbyte_internal_ops-0.4.0}/src/airbyte_ops_mcp/py.typed +0 -0
  448. {airbyte_internal_ops-0.3.0 → airbyte_internal_ops-0.4.0}/src/airbyte_ops_mcp/registry/__init__.py +0 -0
  449. {airbyte_internal_ops-0.3.0 → airbyte_internal_ops-0.4.0}/src/airbyte_ops_mcp/registry/models.py +0 -0
  450. {airbyte_internal_ops-0.3.0 → airbyte_internal_ops-0.4.0}/src/airbyte_ops_mcp/registry/publish.py +0 -0
  451. {airbyte_internal_ops-0.3.0 → airbyte_internal_ops-0.4.0}/src/airbyte_ops_mcp/regression_tests/__init__.py +0 -0
  452. {airbyte_internal_ops-0.3.0 → airbyte_internal_ops-0.4.0}/src/airbyte_ops_mcp/regression_tests/cdk_secrets.py +0 -0
  453. {airbyte_internal_ops-0.3.0 → airbyte_internal_ops-0.4.0}/src/airbyte_ops_mcp/regression_tests/ci_output.py +0 -0
  454. {airbyte_internal_ops-0.3.0 → airbyte_internal_ops-0.4.0}/src/airbyte_ops_mcp/regression_tests/commons/__init__.py +0 -0
  455. {airbyte_internal_ops-0.3.0 → airbyte_internal_ops-0.4.0}/src/airbyte_ops_mcp/regression_tests/config.py +0 -0
  456. {airbyte_internal_ops-0.3.0 → airbyte_internal_ops-0.4.0}/src/airbyte_ops_mcp/regression_tests/connection_fetcher.py +0 -0
  457. {airbyte_internal_ops-0.3.0 → airbyte_internal_ops-0.4.0}/src/airbyte_ops_mcp/regression_tests/evaluation_modes.py +0 -0
  458. {airbyte_internal_ops-0.3.0 → airbyte_internal_ops-0.4.0}/src/airbyte_ops_mcp/regression_tests/http_metrics.py +0 -0
  459. {airbyte_internal_ops-0.3.0 → airbyte_internal_ops-0.4.0}/src/airbyte_ops_mcp/regression_tests/message_cache/__init__.py +0 -0
  460. {airbyte_internal_ops-0.3.0 → airbyte_internal_ops-0.4.0}/src/airbyte_ops_mcp/regression_tests/message_cache/duckdb_cache.py +0 -0
  461. {airbyte_internal_ops-0.3.0 → airbyte_internal_ops-0.4.0}/src/airbyte_ops_mcp/regression_tests/models.py +0 -0
  462. {airbyte_internal_ops-0.3.0 → airbyte_internal_ops-0.4.0}/src/airbyte_ops_mcp/regression_tests/obfuscation.py +0 -0
  463. {airbyte_internal_ops-0.3.0 → airbyte_internal_ops-0.4.0}/src/airbyte_ops_mcp/regression_tests/regression/__init__.py +0 -0
  464. {airbyte_internal_ops-0.3.0 → airbyte_internal_ops-0.4.0}/src/airbyte_ops_mcp/regression_tests/regression/comparators.py +0 -0
  465. {airbyte_internal_ops-0.3.0 → airbyte_internal_ops-0.4.0}/src/airbyte_ops_mcp/regression_tests/schema_generation.py +0 -0
  466. {airbyte_internal_ops-0.3.0 → airbyte_internal_ops-0.4.0}/src/airbyte_ops_mcp/regression_tests/validation/__init__.py +0 -0
  467. {airbyte_internal_ops-0.3.0 → airbyte_internal_ops-0.4.0}/src/airbyte_ops_mcp/regression_tests/validation/catalog_validators.py +0 -0
  468. {airbyte_internal_ops-0.3.0 → airbyte_internal_ops-0.4.0}/src/airbyte_ops_mcp/regression_tests/validation/record_validators.py +0 -0
  469. {airbyte_internal_ops-0.3.0 → airbyte_internal_ops-0.4.0}/tests/__init__.py +0 -0
  470. {airbyte_internal_ops-0.3.0 → airbyte_internal_ops-0.4.0}/tests/legacy/airbyte_ci/connector_erd_generator/__init__.py +0 -0
  471. {airbyte_internal_ops-0.3.0 → airbyte_internal_ops-0.4.0}/tests/legacy/airbyte_ci/connector_erd_generator/builder.py +0 -0
  472. {airbyte_internal_ops-0.3.0 → airbyte_internal_ops-0.4.0}/tests/legacy/airbyte_ci/connector_erd_generator/test_dbml_assembler.py +0 -0
  473. {airbyte_internal_ops-0.3.0 → airbyte_internal_ops-0.4.0}/tests/legacy/airbyte_ci/connector_erd_generator/test_relationships.py +0 -0
  474. {airbyte_internal_ops-0.3.0 → airbyte_internal_ops-0.4.0}/tests/legacy/airbyte_ci/connector_live_tests/__init__.py +0 -0
  475. {airbyte_internal_ops-0.3.0 → airbyte_internal_ops-0.4.0}/tests/legacy/airbyte_ci/connector_live_tests/backends/__init__.py +0 -0
  476. {airbyte_internal_ops-0.3.0 → airbyte_internal_ops-0.4.0}/tests/legacy/airbyte_ci/connector_live_tests/backends/test_file_backend.py +0 -0
  477. {airbyte_internal_ops-0.3.0 → airbyte_internal_ops-0.4.0}/tests/legacy/airbyte_ci/connector_live_tests/test_get_connection_objects_retrieval.py +0 -0
  478. {airbyte_internal_ops-0.3.0 → airbyte_internal_ops-0.4.0}/tests/legacy/airbyte_ci/connector_live_tests/test_json_schema_helper.py +0 -0
  479. {airbyte_internal_ops-0.3.0 → airbyte_internal_ops-0.4.0}/tests/legacy/airbyte_ci/connector_ops/conftest.py +0 -0
  480. {airbyte_internal_ops-0.3.0 → airbyte_internal_ops-0.4.0}/tests/legacy/airbyte_ci/connector_ops/test_migration_files/bad-header.md +0 -0
  481. {airbyte_internal_ops-0.3.0 → airbyte_internal_ops-0.4.0}/tests/legacy/airbyte_ci/connector_ops/test_migration_files/bad-title.md +0 -0
  482. {airbyte_internal_ops-0.3.0 → airbyte_internal_ops-0.4.0}/tests/legacy/airbyte_ci/connector_ops/test_migration_files/extra-header.md +0 -0
  483. {airbyte_internal_ops-0.3.0 → airbyte_internal_ops-0.4.0}/tests/legacy/airbyte_ci/connector_ops/test_migration_files/missing-entry.md +0 -0
  484. {airbyte_internal_ops-0.3.0 → airbyte_internal_ops-0.4.0}/tests/legacy/airbyte_ci/connector_ops/test_migration_files/out-of-order.md +0 -0
  485. {airbyte_internal_ops-0.3.0 → airbyte_internal_ops-0.4.0}/tests/legacy/airbyte_ci/connector_ops/test_utils.py +0 -0
  486. {airbyte_internal_ops-0.3.0 → airbyte_internal_ops-0.4.0}/tests/legacy/airbyte_ci/connector_qa/__init__.py +0 -0
  487. {airbyte_internal_ops-0.3.0 → airbyte_internal_ops-0.4.0}/tests/legacy/airbyte_ci/connector_qa/conftest.py +0 -0
  488. {airbyte_internal_ops-0.3.0 → airbyte_internal_ops-0.4.0}/tests/legacy/airbyte_ci/connector_qa/integration_tests/__init__.py +0 -0
  489. {airbyte_internal_ops-0.3.0 → airbyte_internal_ops-0.4.0}/tests/legacy/airbyte_ci/connector_qa/integration_tests/test_documentation.py +0 -0
  490. {airbyte_internal_ops-0.3.0 → airbyte_internal_ops-0.4.0}/tests/legacy/airbyte_ci/connector_qa/unit_tests/__init__.py +0 -0
  491. {airbyte_internal_ops-0.3.0 → airbyte_internal_ops-0.4.0}/tests/legacy/airbyte_ci/connector_qa/unit_tests/test_checks/__init__.py +0 -0
  492. {airbyte_internal_ops-0.3.0 → airbyte_internal_ops-0.4.0}/tests/legacy/airbyte_ci/connector_qa/unit_tests/test_checks/data/docs/correct.md +0 -0
  493. {airbyte_internal_ops-0.3.0 → airbyte_internal_ops-0.4.0}/tests/legacy/airbyte_ci/connector_qa/unit_tests/test_checks/data/docs/incorrect_not_all_structure.md +0 -0
  494. {airbyte_internal_ops-0.3.0 → airbyte_internal_ops-0.4.0}/tests/legacy/airbyte_ci/connector_qa/unit_tests/test_checks/data/docs/invalid_links.md +0 -0
  495. {airbyte_internal_ops-0.3.0 → airbyte_internal_ops-0.4.0}/tests/legacy/airbyte_ci/connector_qa/unit_tests/test_checks/test_assets.py +0 -0
  496. {airbyte_internal_ops-0.3.0 → airbyte_internal_ops-0.4.0}/tests/legacy/airbyte_ci/connector_qa/unit_tests/test_checks/test_documentation.py +0 -0
  497. {airbyte_internal_ops-0.3.0 → airbyte_internal_ops-0.4.0}/tests/legacy/airbyte_ci/connector_qa/unit_tests/test_checks/test_metadata.py +0 -0
  498. {airbyte_internal_ops-0.3.0 → airbyte_internal_ops-0.4.0}/tests/legacy/airbyte_ci/connector_qa/unit_tests/test_checks/test_packaging.py +0 -0
  499. {airbyte_internal_ops-0.3.0 → airbyte_internal_ops-0.4.0}/tests/legacy/airbyte_ci/connector_qa/unit_tests/test_checks/test_security.py +0 -0
  500. {airbyte_internal_ops-0.3.0 → airbyte_internal_ops-0.4.0}/tests/legacy/airbyte_ci/connector_qa/unit_tests/test_checks/test_version.py +0 -0
  501. {airbyte_internal_ops-0.3.0 → airbyte_internal_ops-0.4.0}/tests/legacy/airbyte_ci/connector_qa/unit_tests/test_models.py +0 -0
  502. {airbyte_internal_ops-0.3.0 → airbyte_internal_ops-0.4.0}/tests/legacy/airbyte_ci/pipelines/__init__.py +0 -0
  503. {airbyte_internal_ops-0.3.0 → airbyte_internal_ops-0.4.0}/tests/legacy/airbyte_ci/pipelines/conftest.py +0 -0
  504. {airbyte_internal_ops-0.3.0 → airbyte_internal_ops-0.4.0}/tests/legacy/airbyte_ci/pipelines/test_actions/test_environments.py +0 -0
  505. {airbyte_internal_ops-0.3.0 → airbyte_internal_ops-0.4.0}/tests/legacy/airbyte_ci/pipelines/test_bases.py +0 -0
  506. {airbyte_internal_ops-0.3.0 → airbyte_internal_ops-0.4.0}/tests/legacy/airbyte_ci/pipelines/test_build_image/__init__.py +0 -0
  507. {airbyte_internal_ops-0.3.0 → airbyte_internal_ops-0.4.0}/tests/legacy/airbyte_ci/pipelines/test_build_image/dummy_build_customization.py +0 -0
  508. {airbyte_internal_ops-0.3.0 → airbyte_internal_ops-0.4.0}/tests/legacy/airbyte_ci/pipelines/test_build_image/test_manifest_only_connectors.py +0 -0
  509. {airbyte_internal_ops-0.3.0 → airbyte_internal_ops-0.4.0}/tests/legacy/airbyte_ci/pipelines/test_build_image/test_python_connectors.py +0 -0
  510. {airbyte_internal_ops-0.3.0 → airbyte_internal_ops-0.4.0}/tests/legacy/airbyte_ci/pipelines/test_build_image/test_steps/test_common.py +0 -0
  511. {airbyte_internal_ops-0.3.0 → airbyte_internal_ops-0.4.0}/tests/legacy/airbyte_ci/pipelines/test_changelog/initial_files/changelog_header_no_newline.md +0 -0
  512. {airbyte_internal_ops-0.3.0 → airbyte_internal_ops-0.4.0}/tests/legacy/airbyte_ci/pipelines/test_changelog/initial_files/changelog_header_no_separator.md +0 -0
  513. {airbyte_internal_ops-0.3.0 → airbyte_internal_ops-0.4.0}/tests/legacy/airbyte_ci/pipelines/test_changelog/initial_files/no_changelog_header.md +0 -0
  514. {airbyte_internal_ops-0.3.0 → airbyte_internal_ops-0.4.0}/tests/legacy/airbyte_ci/pipelines/test_changelog/initial_files/valid_changelog_at_end.md +0 -0
  515. {airbyte_internal_ops-0.3.0 → airbyte_internal_ops-0.4.0}/tests/legacy/airbyte_ci/pipelines/test_changelog/initial_files/valid_changelog_in_middle.md +0 -0
  516. {airbyte_internal_ops-0.3.0 → airbyte_internal_ops-0.4.0}/tests/legacy/airbyte_ci/pipelines/test_changelog/result_files/changelog_header_no_newline.md +0 -0
  517. {airbyte_internal_ops-0.3.0 → airbyte_internal_ops-0.4.0}/tests/legacy/airbyte_ci/pipelines/test_changelog/result_files/changelog_header_no_separator.md +0 -0
  518. {airbyte_internal_ops-0.3.0 → airbyte_internal_ops-0.4.0}/tests/legacy/airbyte_ci/pipelines/test_changelog/result_files/dupicate_version_date_valid_changelog_at_end.md +0 -0
  519. {airbyte_internal_ops-0.3.0 → airbyte_internal_ops-0.4.0}/tests/legacy/airbyte_ci/pipelines/test_changelog/result_files/dupicate_version_date_valid_changelog_in_middle.md +0 -0
  520. {airbyte_internal_ops-0.3.0 → airbyte_internal_ops-0.4.0}/tests/legacy/airbyte_ci/pipelines/test_changelog/result_files/dupicate_versions_valid_changelog_at_end.md +0 -0
  521. {airbyte_internal_ops-0.3.0 → airbyte_internal_ops-0.4.0}/tests/legacy/airbyte_ci/pipelines/test_changelog/result_files/dupicate_versions_valid_changelog_in_middle.md +0 -0
  522. {airbyte_internal_ops-0.3.0 → airbyte_internal_ops-0.4.0}/tests/legacy/airbyte_ci/pipelines/test_changelog/result_files/duplicate_entry_valid_changelog_at_end.md +0 -0
  523. {airbyte_internal_ops-0.3.0 → airbyte_internal_ops-0.4.0}/tests/legacy/airbyte_ci/pipelines/test_changelog/result_files/duplicate_entry_valid_changelog_in_middle.md +0 -0
  524. {airbyte_internal_ops-0.3.0 → airbyte_internal_ops-0.4.0}/tests/legacy/airbyte_ci/pipelines/test_changelog/result_files/existing_entries_valid_changelog_at_end.md +0 -0
  525. {airbyte_internal_ops-0.3.0 → airbyte_internal_ops-0.4.0}/tests/legacy/airbyte_ci/pipelines/test_changelog/result_files/existing_entries_valid_changelog_in_middle.md +0 -0
  526. {airbyte_internal_ops-0.3.0 → airbyte_internal_ops-0.4.0}/tests/legacy/airbyte_ci/pipelines/test_changelog/result_files/no_changelog_header.md +0 -0
  527. {airbyte_internal_ops-0.3.0 → airbyte_internal_ops-0.4.0}/tests/legacy/airbyte_ci/pipelines/test_changelog/result_files/single_insert_valid_changelog_at_end.md +0 -0
  528. {airbyte_internal_ops-0.3.0 → airbyte_internal_ops-0.4.0}/tests/legacy/airbyte_ci/pipelines/test_changelog/result_files/single_insert_valid_changelog_in_middle.md +0 -0
  529. {airbyte_internal_ops-0.3.0 → airbyte_internal_ops-0.4.0}/tests/legacy/airbyte_ci/pipelines/test_changelog.py +0 -0
  530. {airbyte_internal_ops-0.3.0 → airbyte_internal_ops-0.4.0}/tests/legacy/airbyte_ci/pipelines/test_cli/__init__.py +0 -0
  531. {airbyte_internal_ops-0.3.0 → airbyte_internal_ops-0.4.0}/tests/legacy/airbyte_ci/pipelines/test_cli/test_click_decorators.py +0 -0
  532. {airbyte_internal_ops-0.3.0 → airbyte_internal_ops-0.4.0}/tests/legacy/airbyte_ci/pipelines/test_commands/__init__.py +0 -0
  533. {airbyte_internal_ops-0.3.0 → airbyte_internal_ops-0.4.0}/tests/legacy/airbyte_ci/pipelines/test_commands/test_groups/__init__.py +0 -0
  534. {airbyte_internal_ops-0.3.0 → airbyte_internal_ops-0.4.0}/tests/legacy/airbyte_ci/pipelines/test_commands/test_groups/test_connectors.py +0 -0
  535. {airbyte_internal_ops-0.3.0 → airbyte_internal_ops-0.4.0}/tests/legacy/airbyte_ci/pipelines/test_dagger/__init__.py +0 -0
  536. {airbyte_internal_ops-0.3.0 → airbyte_internal_ops-0.4.0}/tests/legacy/airbyte_ci/pipelines/test_dagger/test_actions/__init__.py +0 -0
  537. {airbyte_internal_ops-0.3.0 → airbyte_internal_ops-0.4.0}/tests/legacy/airbyte_ci/pipelines/test_dagger/test_actions/test_python/__init__.py +0 -0
  538. {airbyte_internal_ops-0.3.0 → airbyte_internal_ops-0.4.0}/tests/legacy/airbyte_ci/pipelines/test_dagger/test_actions/test_python/test_common.py +0 -0
  539. {airbyte_internal_ops-0.3.0 → airbyte_internal_ops-0.4.0}/tests/legacy/airbyte_ci/pipelines/test_gradle.py +0 -0
  540. {airbyte_internal_ops-0.3.0 → airbyte_internal_ops-0.4.0}/tests/legacy/airbyte_ci/pipelines/test_helpers/__init__.py +0 -0
  541. {airbyte_internal_ops-0.3.0 → airbyte_internal_ops-0.4.0}/tests/legacy/airbyte_ci/pipelines/test_helpers/test_execution/__init__.py +0 -0
  542. {airbyte_internal_ops-0.3.0 → airbyte_internal_ops-0.4.0}/tests/legacy/airbyte_ci/pipelines/test_helpers/test_execution/test_argument_parsing.py +0 -0
  543. {airbyte_internal_ops-0.3.0 → airbyte_internal_ops-0.4.0}/tests/legacy/airbyte_ci/pipelines/test_helpers/test_execution/test_run_steps.py +0 -0
  544. {airbyte_internal_ops-0.3.0 → airbyte_internal_ops-0.4.0}/tests/legacy/airbyte_ci/pipelines/test_helpers/test_pip.py +0 -0
  545. {airbyte_internal_ops-0.3.0 → airbyte_internal_ops-0.4.0}/tests/legacy/airbyte_ci/pipelines/test_helpers/test_utils.py +0 -0
  546. {airbyte_internal_ops-0.3.0 → airbyte_internal_ops-0.4.0}/tests/legacy/airbyte_ci/pipelines/test_models/__init__.py +0 -0
  547. {airbyte_internal_ops-0.3.0 → airbyte_internal_ops-0.4.0}/tests/legacy/airbyte_ci/pipelines/test_models/test_click_pipeline_context.py +0 -0
  548. {airbyte_internal_ops-0.3.0 → airbyte_internal_ops-0.4.0}/tests/legacy/airbyte_ci/pipelines/test_models/test_singleton.py +0 -0
  549. {airbyte_internal_ops-0.3.0 → airbyte_internal_ops-0.4.0}/tests/legacy/airbyte_ci/pipelines/test_poetry/test_poetry_publish.py +0 -0
  550. {airbyte_internal_ops-0.3.0 → airbyte_internal_ops-0.4.0}/tests/legacy/airbyte_ci/pipelines/test_publish.py +0 -0
  551. {airbyte_internal_ops-0.3.0 → airbyte_internal_ops-0.4.0}/tests/legacy/airbyte_ci/pipelines/test_steps/__init__.py +0 -0
  552. {airbyte_internal_ops-0.3.0 → airbyte_internal_ops-0.4.0}/tests/legacy/airbyte_ci/pipelines/test_steps/test_simple_docker_step.py +0 -0
  553. {airbyte_internal_ops-0.3.0 → airbyte_internal_ops-0.4.0}/tests/legacy/airbyte_ci/pipelines/test_steps/test_version_check.py +0 -0
  554. {airbyte_internal_ops-0.3.0 → airbyte_internal_ops-0.4.0}/tests/legacy/airbyte_ci/pipelines/test_tests/__init__.py +0 -0
  555. {airbyte_internal_ops-0.3.0 → airbyte_internal_ops-0.4.0}/tests/legacy/airbyte_ci/pipelines/test_tests/test_common.py +0 -0
  556. {airbyte_internal_ops-0.3.0 → airbyte_internal_ops-0.4.0}/tests/legacy/airbyte_ci/pipelines/test_tests/test_python_connectors.py +0 -0
  557. {airbyte_internal_ops-0.3.0 → airbyte_internal_ops-0.4.0}/tests/legacy/airbyte_ci/pipelines/test_upgrade_java_cdk.py +0 -0
  558. {airbyte_internal_ops-0.3.0 → airbyte_internal_ops-0.4.0}/tests/legacy/airbyte_ci/pipelines/utils.py +0 -0
  559. {airbyte_internal_ops-0.3.0 → airbyte_internal_ops-0.4.0}/tests/test_airbyte_admin_mcp.py +0 -0
  560. {airbyte_internal_ops-0.3.0 → airbyte_internal_ops-0.4.0}/tests/test_bump_version.py +0 -0
  561. {airbyte_internal_ops-0.3.0 → airbyte_internal_ops-0.4.0}/tests/test_cli_registry.py +0 -0
  562. {airbyte_internal_ops-0.3.0 → airbyte_internal_ops-0.4.0}/tests/test_list_connectors.py +0 -0
  563. {airbyte_internal_ops-0.3.0 → airbyte_internal_ops-0.4.0}/tests/test_prerelease.py +0 -0
  564. {airbyte_internal_ops-0.3.0 → airbyte_internal_ops-0.4.0}/uv.lock +0 -0
@@ -0,0 +1,407 @@
1
+ name: Connector Regression Test
2
+ permissions:
3
+ contents: read
4
+ checks: write
5
+
6
+ on:
7
+ workflow_dispatch:
8
+ inputs:
9
+ connector_name:
10
+ description: "Connector name to build from source (e.g., 'source-pokeapi')."
11
+ required: true
12
+ type: string
13
+ pr:
14
+ description: "PR number to checkout and build from (e.g., 70847). Must be from the repository specified by 'repo'."
15
+ required: true
16
+ type: string
17
+ repo:
18
+ description: "Repository where the connector PR is located."
19
+ required: false
20
+ type: choice
21
+ options:
22
+ - airbyte
23
+ - airbyte-enterprise
24
+ default: "airbyte"
25
+ connection_id:
26
+ description: "Airbyte Cloud connection ID to fetch config/catalog from."
27
+ required: false
28
+ type: string
29
+ skip_compare:
30
+ description: "If true, skip comparison and run single-version tests only. If false (default), run comparison tests (target vs control)."
31
+ required: false
32
+ type: boolean
33
+ default: false
34
+ skip_read_action:
35
+ description: "If true, skip the read action (run only spec, check, discover)."
36
+ required: false
37
+ type: boolean
38
+ default: false
39
+ override_test_image:
40
+ description: "Override test connector image with tag (e.g., airbyte/source-github:1.0.0). Ignored if skip_compare=false."
41
+ required: false
42
+ type: string
43
+ override_control_image:
44
+ description: "Override control connector image (baseline version) with tag. Ignored if skip_compare=true."
45
+ required: false
46
+ type: string
47
+
48
+ workflow_call:
49
+ inputs:
50
+ connector_name:
51
+ description: "Connector name to build from source (e.g., 'source-pokeapi')."
52
+ required: true
53
+ type: string
54
+ pr:
55
+ description: "PR number to checkout and build from. Must be from the repository specified by 'repo'."
56
+ required: true
57
+ type: string
58
+ repo:
59
+ description: "Repository where the connector PR is located. Use 'airbyte' or 'airbyte-enterprise'."
60
+ required: false
61
+ type: string
62
+ default: "airbyte"
63
+ connection_id:
64
+ description: "Airbyte Cloud connection ID to fetch config/catalog from."
65
+ required: false
66
+ type: string
67
+ skip_compare:
68
+ description: "If true, skip comparison and run single-version tests only. If false (default), run comparison tests (target vs control)."
69
+ required: false
70
+ type: boolean
71
+ default: false
72
+ skip_read_action:
73
+ description: "If true, skip the read action (run only spec, check, discover)."
74
+ required: false
75
+ type: boolean
76
+ default: false
77
+ override_test_image:
78
+ description: "Override test connector image with tag. Ignored if skip_compare=false."
79
+ required: false
80
+ type: string
81
+ override_control_image:
82
+ description: "Override control connector image (baseline version) with tag. Ignored if skip_compare=true."
83
+ required: false
84
+ type: string
85
+ outputs:
86
+ success:
87
+ description: "True if regression test passed (no regression detected)"
88
+ value: ${{ jobs.regression-test.outputs.success }}
89
+ summary_url:
90
+ description: "GitHub Actions run summary URL"
91
+ value: ${{ jobs.regression-test.outputs.summary_url }}
92
+ report_url:
93
+ description: "Detailed regression report (GitHub Check URL)"
94
+ value: ${{ jobs.regression-test.outputs.report_url }}
95
+ secrets:
96
+ AIRBYTE_CLOUD_CLIENT_ID:
97
+ required: false
98
+ AIRBYTE_CLOUD_CLIENT_SECRET:
99
+ required: false
100
+ GCP_GSM_CREDENTIALS:
101
+ required: false
102
+ GCP_GSM_CREDENTIALS_FOR_TESTING_TOOL:
103
+ required: false
104
+
105
+ jobs:
106
+ regression-test:
107
+ name: Regression Test: '${{ inputs.connector_name }}'
108
+ runs-on: ubuntu-latest
109
+ steps:
110
+ - name: Checkout code
111
+ uses: actions/checkout@v6
112
+
113
+ - name: Install uv
114
+ uses: astral-sh/setup-uv@v7
115
+ with:
116
+ version: "latest"
117
+
118
+ - name: Set up Python
119
+ uses: actions/setup-python@v6
120
+ with:
121
+ python-version: "3.11"
122
+
123
+ - name: Install dependencies
124
+ run: uv sync --group dev
125
+
126
+ - name: Resolve connector repo ref
127
+ id: resolve-connector-ref
128
+ run: |
129
+ REPO="${{ inputs.repo }}"
130
+ # Default to 'airbyte' if not specified
131
+ if [ -z "$REPO" ]; then
132
+ REPO="airbyte"
133
+ fi
134
+ echo "repo=$REPO" >> "$GITHUB_OUTPUT"
135
+ echo "resolved_ref=refs/pull/${{ inputs.pr }}/head" >> "$GITHUB_OUTPUT"
136
+ echo "Using PR ${{ inputs.pr }} from airbytehq/$REPO -> refs/pull/${{ inputs.pr }}/head"
137
+
138
+ - name: Checkout connector repo
139
+ uses: actions/checkout@v6
140
+ with:
141
+ repository: airbytehq/${{ steps.resolve-connector-ref.outputs.repo }}
142
+ ref: ${{ steps.resolve-connector-ref.outputs.resolved_ref }}
143
+ path: connector-repo
144
+ fetch-depth: 1
145
+
146
+ - name: Install Cloud SQL Proxy
147
+ if: ${{ inputs.connection_id != '' }}
148
+ run: |
149
+ set -euo pipefail
150
+ echo "Installing Cloud SQL Proxy..."
151
+ VERSION="v2.15.0"
152
+ BASE_URL="https://storage.googleapis.com/cloud-sql-connectors/cloud-sql-proxy/${VERSION}"
153
+ BINARY_NAME="cloud-sql-proxy.linux.amd64"
154
+ # Checksum from GitHub release: https://github.com/GoogleCloudPlatform/cloud-sql-proxy/releases/tag/v2.15.0
155
+ EXPECTED_SHA256="cf3e9d069ea0d09cdfddce77daa36811bb0b963b1169e9c3f1586433ca7325fa"
156
+
157
+ echo "Downloading Cloud SQL Proxy binary..."
158
+ curl -fsSLO "${BASE_URL}/${BINARY_NAME}"
159
+
160
+ echo "Verifying Cloud SQL Proxy checksum..."
161
+ echo "${EXPECTED_SHA256} ${BINARY_NAME}" | sha256sum -c -
162
+
163
+ chmod +x "${BINARY_NAME}"
164
+ sudo mv "${BINARY_NAME}" /usr/local/bin/cloud-sql-proxy
165
+ cloud-sql-proxy --version
166
+
167
+ - name: Start Cloud SQL Proxy
168
+ if: ${{ inputs.connection_id != '' }}
169
+ env:
170
+ GCP_PROD_DB_ACCESS_CREDENTIALS: ${{ secrets.GCP_GSM_CREDENTIALS_FOR_TESTING_TOOL }}
171
+ run: |
172
+ echo "Starting Cloud SQL Proxy for connection secret retrieval..."
173
+ # Start proxy in background on port 15432
174
+ uv run airbyte-ops cloud db start-proxy --port 15432 &
175
+ # Wait for proxy to be ready
176
+ for i in {1..30}; do
177
+ if nc -z localhost 15432 2>/dev/null; then
178
+ echo "Cloud SQL Proxy is ready on port 15432"
179
+ break
180
+ fi
181
+ echo "Waiting for proxy to start... ($i/30)"
182
+ sleep 1
183
+ done
184
+ if ! nc -z localhost 15432 2>/dev/null; then
185
+ echo "ERROR: Cloud SQL Proxy failed to start"
186
+ exit 1
187
+ fi
188
+
189
+ - name: Build common args
190
+ id: build-args
191
+ run: |
192
+ SKIP_COMPARE="${{ inputs.skip_compare }}"
193
+ ARGS=""
194
+
195
+ # Always add connector_name and repo-root (both are required)
196
+ ARGS+=" --connector-name ${{ inputs.connector_name }}"
197
+ ARGS+=" --repo-root ${{ github.workspace }}/connector-repo"
198
+
199
+ # Add connection_id if provided
200
+ if [ -n "${{ inputs.connection_id }}" ]; then
201
+ ARGS+=" --connection-id ${{ inputs.connection_id }}"
202
+ fi
203
+
204
+ if [ "$SKIP_COMPARE" = "true" ]; then
205
+ # Single-version mode: use --skip-compare flag
206
+ ARGS+=" --skip-compare"
207
+
208
+ if [ -n "${{ inputs.override_test_image }}" ]; then
209
+ ARGS+=" --test-image ${{ inputs.override_test_image }}"
210
+ fi
211
+ else
212
+ # Comparison mode (default): run target vs control
213
+ if [ -n "${{ inputs.override_control_image }}" ]; then
214
+ ARGS+=" --control-image ${{ inputs.override_control_image }}"
215
+ fi
216
+ fi
217
+
218
+ echo "common_args=$ARGS" >> "$GITHUB_OUTPUT"
219
+
220
+ - name: Run SPEC
221
+ id: run-spec
222
+ env:
223
+ AIRBYTE_CLOUD_CLIENT_ID: ${{ secrets.AIRBYTE_CLOUD_CLIENT_ID }}
224
+ AIRBYTE_CLOUD_CLIENT_SECRET: ${{ secrets.AIRBYTE_CLOUD_CLIENT_SECRET }}
225
+ GCP_GSM_CREDENTIALS: ${{ secrets.GCP_GSM_CREDENTIALS }}
226
+ GCP_PROD_DB_ACCESS_CREDENTIALS: ${{ secrets.GCP_GSM_CREDENTIALS_FOR_TESTING_TOOL }}
227
+ USE_CONNECTION_SECRET_RETRIEVER: "true"
228
+ run: |
229
+ echo "Running: uv run airbyte-ops cloud connector regression-test --command spec ${{ steps.build-args.outputs.common_args }} --output-dir /tmp/regression_test_artifacts/spec"
230
+ uv run airbyte-ops cloud connector regression-test --command spec ${{ steps.build-args.outputs.common_args }} --output-dir /tmp/regression_test_artifacts/spec
231
+
232
+ - name: Upload SPEC Artifacts
233
+ if: always()
234
+ uses: actions/upload-artifact@v5
235
+ with:
236
+ name: regression-test-artifacts-spec-${{ github.run_id }}
237
+ path: /tmp/regression_test_artifacts/spec/
238
+ retention-days: 7
239
+
240
+ - name: Run CHECK
241
+ id: run-check
242
+ env:
243
+ AIRBYTE_CLOUD_CLIENT_ID: ${{ secrets.AIRBYTE_CLOUD_CLIENT_ID }}
244
+ AIRBYTE_CLOUD_CLIENT_SECRET: ${{ secrets.AIRBYTE_CLOUD_CLIENT_SECRET }}
245
+ GCP_GSM_CREDENTIALS: ${{ secrets.GCP_GSM_CREDENTIALS }}
246
+ GCP_PROD_DB_ACCESS_CREDENTIALS: ${{ secrets.GCP_GSM_CREDENTIALS_FOR_TESTING_TOOL }}
247
+ USE_CONNECTION_SECRET_RETRIEVER: "true"
248
+ run: |
249
+ echo "Running: uv run airbyte-ops cloud connector regression-test --command check ${{ steps.build-args.outputs.common_args }} --output-dir /tmp/regression_test_artifacts/check"
250
+ uv run airbyte-ops cloud connector regression-test --command check ${{ steps.build-args.outputs.common_args }} --output-dir /tmp/regression_test_artifacts/check
251
+
252
+ - name: Upload CHECK Artifacts
253
+ if: always()
254
+ uses: actions/upload-artifact@v5
255
+ with:
256
+ name: regression-test-artifacts-check-${{ github.run_id }}
257
+ path: /tmp/regression_test_artifacts/check/
258
+ retention-days: 7
259
+
260
+ - name: Run DISCOVER
261
+ id: run-discover
262
+ env:
263
+ AIRBYTE_CLOUD_CLIENT_ID: ${{ secrets.AIRBYTE_CLOUD_CLIENT_ID }}
264
+ AIRBYTE_CLOUD_CLIENT_SECRET: ${{ secrets.AIRBYTE_CLOUD_CLIENT_SECRET }}
265
+ GCP_GSM_CREDENTIALS: ${{ secrets.GCP_GSM_CREDENTIALS }}
266
+ GCP_PROD_DB_ACCESS_CREDENTIALS: ${{ secrets.GCP_GSM_CREDENTIALS_FOR_TESTING_TOOL }}
267
+ USE_CONNECTION_SECRET_RETRIEVER: "true"
268
+ run: |
269
+ echo "Running: uv run airbyte-ops cloud connector regression-test --command discover ${{ steps.build-args.outputs.common_args }} --output-dir /tmp/regression_test_artifacts/discover"
270
+ uv run airbyte-ops cloud connector regression-test --command discover ${{ steps.build-args.outputs.common_args }} --output-dir /tmp/regression_test_artifacts/discover
271
+
272
+ - name: Upload DISCOVER Artifacts
273
+ if: always()
274
+ uses: actions/upload-artifact@v5
275
+ with:
276
+ name: regression-test-artifacts-discover-${{ github.run_id }}
277
+ path: /tmp/regression_test_artifacts/discover/
278
+ retention-days: 7
279
+
280
+ - name: Run READ
281
+ id: run-read
282
+ if: inputs.skip_read_action != true
283
+ env:
284
+ AIRBYTE_CLOUD_CLIENT_ID: ${{ secrets.AIRBYTE_CLOUD_CLIENT_ID }}
285
+ AIRBYTE_CLOUD_CLIENT_SECRET: ${{ secrets.AIRBYTE_CLOUD_CLIENT_SECRET }}
286
+ GCP_GSM_CREDENTIALS: ${{ secrets.GCP_GSM_CREDENTIALS }}
287
+ GCP_PROD_DB_ACCESS_CREDENTIALS: ${{ secrets.GCP_GSM_CREDENTIALS_FOR_TESTING_TOOL }}
288
+ USE_CONNECTION_SECRET_RETRIEVER: "true"
289
+ run: |
290
+ echo "Running: uv run airbyte-ops cloud connector regression-test --command read ${{ steps.build-args.outputs.common_args }} --output-dir /tmp/regression_test_artifacts/read"
291
+ uv run airbyte-ops cloud connector regression-test --command read ${{ steps.build-args.outputs.common_args }} --output-dir /tmp/regression_test_artifacts/read
292
+
293
+ - name: Upload READ Artifacts
294
+ if: always() && inputs.skip_read_action != true
295
+ uses: actions/upload-artifact@v5
296
+ with:
297
+ name: regression-test-artifacts-read-${{ github.run_id }}
298
+ path: /tmp/regression_test_artifacts/read/
299
+ retention-days: 7
300
+
301
+ - name: Determine Final Status
302
+ id: final-status
303
+ if: always()
304
+ run: |
305
+ SPEC_RESULT="${{ steps.run-spec.outcome }}"
306
+ CHECK_RESULT="${{ steps.run-check.outcome }}"
307
+ DISCOVER_RESULT="${{ steps.run-discover.outcome }}"
308
+ READ_RESULT="${{ steps.run-read.outcome }}"
309
+ SKIP_READ="${{ inputs.skip_read_action }}"
310
+
311
+ echo "SPEC: $SPEC_RESULT"
312
+ echo "CHECK: $CHECK_RESULT"
313
+ echo "DISCOVER: $DISCOVER_RESULT"
314
+ echo "READ: $READ_RESULT (skip_read=$SKIP_READ)"
315
+
316
+ if [ "$SPEC_RESULT" != "success" ] || [ "$CHECK_RESULT" != "success" ] || [ "$DISCOVER_RESULT" != "success" ]; then
317
+ echo "success=false" >> "$GITHUB_OUTPUT"
318
+ exit 0
319
+ fi
320
+
321
+ if [ "$SKIP_READ" != "true" ] && [ "$READ_RESULT" != "success" ]; then
322
+ echo "success=false" >> "$GITHUB_OUTPUT"
323
+ exit 0
324
+ fi
325
+
326
+ echo "success=true" >> "$GITHUB_OUTPUT"
327
+
328
+ - name: Create Regression Test Report Check
329
+ id: create-report-check
330
+ if: always()
331
+ uses: actions/github-script@v7
332
+ with:
333
+ script: |
334
+ const fs = require('fs');
335
+
336
+ // Collect results from each command
337
+ const specResult = '${{ steps.run-spec.outcome }}';
338
+ const checkResult = '${{ steps.run-check.outcome }}';
339
+ const discoverResult = '${{ steps.run-discover.outcome }}';
340
+ const readResult = '${{ steps.run-read.outcome }}';
341
+ const skipRead = '${{ inputs.skip_read_action }}' === 'true';
342
+
343
+ const results = [
344
+ { command: 'spec', result: specResult },
345
+ { command: 'check', result: checkResult },
346
+ { command: 'discover', result: discoverResult },
347
+ ];
348
+ if (!skipRead) {
349
+ results.push({ command: 'read', result: readResult });
350
+ }
351
+
352
+ // Build report content
353
+ let reportContent = '# Sequential Regression Test Report\n\n';
354
+ reportContent += '| Command | Result |\n';
355
+ reportContent += '|---------|--------|\n';
356
+ for (const r of results) {
357
+ const status = r.result === 'success' ? 'PASS' : 'FAIL';
358
+ reportContent += `| ${r.command.toUpperCase()} | ${status} |\n`;
359
+ }
360
+
361
+ const allPassed = results.every(r => r.result === 'success');
362
+ const conclusion = allPassed ? 'success' : 'failure';
363
+
364
+ const skipCompare = '${{ inputs.skip_compare }}' === 'true';
365
+ const connectorName = '${{ inputs.connector_name }}';
366
+ const prNumber = '${{ inputs.pr }}';
367
+ const commands = skipRead ? 'spec, check, discover' : 'spec, check, discover, read';
368
+ let summary;
369
+ if (skipCompare) {
370
+ const image = '${{ inputs.override_test_image }}' || `(built from ${connectorName} PR #${prNumber})`;
371
+ summary = `Single-version sequential regression test: \`${image}\` running \`${commands}\` commands.`;
372
+ } else {
373
+ const controlImage = '${{ inputs.override_control_image }}' || '(auto-detected)';
374
+ summary = `Comparison sequential regression test: \`${connectorName}\` (PR #${prNumber}) vs \`${controlImage}\` running \`${commands}\` commands.`;
375
+ }
376
+
377
+ const check = await github.rest.checks.create({
378
+ owner: context.repo.owner,
379
+ repo: context.repo.repo,
380
+ name: 'Regression Test Report',
381
+ head_sha: context.sha,
382
+ status: 'completed',
383
+ conclusion: conclusion,
384
+ output: {
385
+ title: 'Regression Test Report',
386
+ summary: summary,
387
+ text: reportContent
388
+ }
389
+ });
390
+
391
+ core.setOutput('report_url', check.data.html_url);
392
+
393
+ - name: Add Report Link to Summary
394
+ if: always()
395
+ run: |
396
+ {
397
+ echo ""
398
+ echo "---"
399
+ echo ""
400
+ echo "### View Full Report"
401
+ echo ""
402
+ echo "[Open Regression Test Report](${{ steps.create-report-check.outputs.report_url }})"
403
+ } >> "$GITHUB_STEP_SUMMARY"
404
+ outputs:
405
+ success: ${{ steps.final-status.outputs.success }}
406
+ summary_url: ${{ github.server_url }}/${{ github.repository }}/actions/runs/${{ github.run_id }}
407
+ report_url: ${{ steps.create-report-check.outputs.report_url }}
@@ -0,0 +1,219 @@
1
+ # Contributing
2
+
3
+ First clone the repo, then use something like the following MCP config.
4
+
5
+ ```json
6
+ {
7
+ "mcpServers": {
8
+ "airbyte-ops-mcp": {
9
+ "type": "stdio",
10
+ "command": "uv",
11
+ "args": [
12
+ "run",
13
+ "--project=/Users/{my-user-id}/repos/airbyte-ops-mcp/",
14
+ "airbyte-ops-mcp"
15
+ ],
16
+ "env": {
17
+ "AIRBYTE_MCP_ENV_FILE": "/path/to/airbyte-ops-mcp/.env"
18
+ }
19
+ },
20
+ "airbyte-coral-mcp": {
21
+ "type": "stdio",
22
+ "command": "uvx",
23
+ "args": [
24
+ "--python=3.11",
25
+ "--from=airbyte@latest",
26
+ "airbyte-mcp"
27
+ ],
28
+ "env": {
29
+ "AIRBYTE_MCP_ENV_FILE": "/Users/{user-id}/.mcp/airbyte_mcp.env"
30
+ }
31
+ }
32
+ }
33
+ }
34
+ ```
35
+
36
+ ## Internal Secrets for Live Tests
37
+
38
+ The live tests feature can retrieve unmasked connection secrets from Airbyte Cloud's internal database. This requires:
39
+
40
+ - **GCP_PROD_DB_ACCESS_CREDENTIALS** - Access to prod Cloud SQL and Google Secret Manager for DB connection details
41
+
42
+ To test locally:
43
+
44
+ 1. Set up GCP Application Default Credentials: `gcloud auth application-default login`
45
+ 2. Ensure you have access to the `prod-ab-cloud-proj` project
46
+ 3. Connect to Tailscale (required for private network access)
47
+
48
+ In CI, these secrets are available at the org level and a Cloud SQL Auth Proxy handles connectivity.
49
+
50
+ ## Authorizing Service Accounts
51
+
52
+ To grant a service account access to the prod database query tools, you need to grant permissions on the `CONNECTION_RETRIEVER_PG_CONNECTION_DETAILS` secret in Google Secret Manager (see `CONNECTION_RETRIEVER_PG_CONNECTION_DETAILS_SECRET_ID` in `src/airbyte_ops_mcp/constants.py`). The service account needs both `secretAccessor` (to read the secret value) and `viewer` (to list secret versions) roles.
53
+
54
+ ### Known Service Accounts
55
+
56
+ The following service accounts are currently used for specific purposes:
57
+
58
+ - **`devin-ai-support-service@prod-ab-cloud-proj.iam.gserviceaccount.com`** - Used by Devin AI for interactive development and testing
59
+ - **`e2e-testing-gsm-reader@dataline-integration-testing.iam.gserviceaccount.com`** - Used by CI workflows for regression testing (note: this is a cross-project service account from `dataline-integration-testing`)
60
+
61
+ ### Required Permissions
62
+
63
+ #### Secret Manager Permissions
64
+
65
+ Grant both roles scoped to the specific secret:
66
+
67
+ ```bash
68
+ # Grant secretAccessor role (for reading secret values)
69
+ gcloud secrets add-iam-policy-binding projects/587336813068/secrets/CONNECTION_RETRIEVER_PG_CONNECTION_DETAILS \
70
+ --member="serviceAccount:YOUR_SERVICE_ACCOUNT@prod-ab-cloud-proj.iam.gserviceaccount.com" \
71
+ --role="roles/secretmanager.secretAccessor"
72
+
73
+ # Grant viewer role (for listing secret versions)
74
+ gcloud secrets add-iam-policy-binding projects/587336813068/secrets/CONNECTION_RETRIEVER_PG_CONNECTION_DETAILS \
75
+ --member="serviceAccount:YOUR_SERVICE_ACCOUNT@prod-ab-cloud-proj.iam.gserviceaccount.com" \
76
+ --role="roles/secretmanager.viewer"
77
+ ```
78
+
79
+ #### Cloud SQL Permissions
80
+
81
+ Grant Cloud SQL access at the project level:
82
+
83
+ ```bash
84
+ # Grant Cloud SQL Client role (required for connecting via Cloud SQL Proxy or Python Connector)
85
+ gcloud projects add-iam-policy-binding prod-ab-cloud-proj \
86
+ --member="serviceAccount:YOUR_SERVICE_ACCOUNT@prod-ab-cloud-proj.iam.gserviceaccount.com" \
87
+ --role="roles/cloudsql.client"
88
+
89
+ # Grant Cloud SQL Instance User role (may be required depending on org policies)
90
+ gcloud projects add-iam-policy-binding prod-ab-cloud-proj \
91
+ --member="serviceAccount:YOUR_SERVICE_ACCOUNT@prod-ab-cloud-proj.iam.gserviceaccount.com" \
92
+ --role="roles/cloudsql.instanceUser"
93
+ ```
94
+
95
+ Note: `roles/cloudsql.client` is required for the Cloud SQL Python Connector and Cloud SQL Auth Proxy to establish connections. `roles/cloudsql.instanceUser` is typically needed for IAM database authentication; it may be redundant when using username/password authentication (as this codebase does), but some environments may still require it.
96
+
97
+ #### Cloud Logging Permissions
98
+
99
+ For tools that query GCP Cloud Logging (e.g., `lookup_cloud_backend_error`), grant the Logs Viewer role at the project level:
100
+
101
+ ```bash
102
+ # Grant Logs Viewer role (for reading log entries)
103
+ # Note: --condition=None is required to avoid interactive prompts when the project has conditional bindings
104
+ gcloud projects add-iam-policy-binding prod-ab-cloud-proj \
105
+ --member="serviceAccount:YOUR_SERVICE_ACCOUNT@prod-ab-cloud-proj.iam.gserviceaccount.com" \
106
+ --role="roles/logging.viewer" \
107
+ --condition=None
108
+ ```
109
+
110
+ For tools that retrieve connection secrets with audit logging (e.g., `fetch-connection-config --with-secrets`), also grant the Logs Writer role:
111
+
112
+ ```bash
113
+ # Grant Logs Writer role (for writing audit log entries when retrieving secrets)
114
+ gcloud projects add-iam-policy-binding prod-ab-cloud-proj \
115
+ --member="serviceAccount:YOUR_SERVICE_ACCOUNT@prod-ab-cloud-proj.iam.gserviceaccount.com" \
116
+ --role="roles/logging.logWriter" \
117
+ --condition=None
118
+ ```
119
+
120
+ #### Workspace-Specific Secrets (for `--with-secrets`)
121
+
122
+ The `fetch-connection-config --with-secrets` feature retrieves unmasked connector credentials. This requires access to **two types of secrets**:
123
+
124
+ 1. **`CONNECTION_RETRIEVER_PG_CONNECTION_DETAILS`** - Database connection details (documented above)
125
+ 2. **Workspace-specific secrets** - The actual connector credentials stored in Secret Manager with names like `airbyte_workspace_{workspace_id}_secret_{secret_id}_v1`
126
+
127
+ The permissions documented above only grant access to the database connection secret. To retrieve actual connector credentials, the service account also needs Secret Manager access to the workspace-specific secrets. This can be granted in two ways:
128
+
129
+ **Option A: Project-level access (broad)**
130
+ ```bash
131
+ # Grant project-level Secret Manager access (allows reading ALL secrets in the project)
132
+ gcloud projects add-iam-policy-binding prod-ab-cloud-proj \
133
+ --member="serviceAccount:YOUR_SERVICE_ACCOUNT@prod-ab-cloud-proj.iam.gserviceaccount.com" \
134
+ --role="roles/secretmanager.secretAccessor" \
135
+ --condition=None
136
+
137
+ gcloud projects add-iam-policy-binding prod-ab-cloud-proj \
138
+ --member="serviceAccount:YOUR_SERVICE_ACCOUNT@prod-ab-cloud-proj.iam.gserviceaccount.com" \
139
+ --role="roles/secretmanager.viewer" \
140
+ --condition=None
141
+ ```
142
+
143
+ **Option B: Scoped access with IAM conditions (recommended for production)**
144
+
145
+ Use IAM conditions to restrict access to secrets matching a specific pattern (e.g., only secrets for certain workspaces). This requires setting up conditional IAM bindings - consult GCP documentation for details.
146
+
147
+ **Note:** Without workspace-specific secret access, `fetch-connection-config` will work but `--with-secrets` will fail with a "Permission denied" error when trying to resolve the actual credentials.
148
+
149
+ To check if the permission is already granted:
150
+
151
+ ```bash
152
+ # List all IAM bindings for the project and filter for the service account
153
+ gcloud projects get-iam-policy prod-ab-cloud-proj \
154
+ --flatten="bindings[].members" \
155
+ --filter="bindings.members:YOUR_SERVICE_ACCOUNT@prod-ab-cloud-proj.iam.gserviceaccount.com" \
156
+ --format="table(bindings.role)"
157
+ ```
158
+
159
+ ### Verifying Permissions
160
+
161
+ To check existing permissions on the secret:
162
+
163
+ ```bash
164
+ gcloud secrets get-iam-policy projects/587336813068/secrets/CONNECTION_RETRIEVER_PG_CONNECTION_DETAILS
165
+ ```
166
+
167
+ ### Using Cloud SQL Proxy
168
+
169
+ When running outside of the VPC (without Tailscale), use the Cloud SQL Auth Proxy:
170
+
171
+ **Option A: Using the CLI (Recommended)**
172
+
173
+ Pre-install the CLI tool:
174
+ ```bash
175
+ uv tool install airbyte-internal-ops
176
+ airbyte-ops cloud db start-proxy --port=5433
177
+ ```
178
+
179
+ Or use as a single-step command:
180
+ ```bash
181
+ uvx --from=airbyte-internal-ops airbyte-ops cloud db start-proxy --port=5433
182
+ ```
183
+
184
+ **Option B: Manual startup**
185
+
186
+ ```bash
187
+ # Start the proxy on port 5433 (avoids conflicts with default PostgreSQL port 5432)
188
+ cloud-sql-proxy prod-ab-cloud-proj:us-west3:prod-pgsql-replica --port=5433
189
+ ```
190
+
191
+ Then set environment variables for your application:
192
+ ```bash
193
+ export USE_CLOUD_SQL_PROXY=1
194
+ export DB_PORT=5433
195
+ export GOOGLE_APPLICATION_CREDENTIALS=/path/to/service-account-key.json
196
+ ```
197
+
198
+ ## Regression Test Workflow
199
+
200
+ The [Connector Regression Test workflow](https://github.com/airbytehq/airbyte-ops-mcp/actions/workflows/connector-regression-test.yml) can be triggered manually or via the `run_regression_tests` MCP tool.
201
+
202
+ ### Workflow Parameters
203
+
204
+ | Parameter | Required | Description |
205
+ |-----------|----------|-------------|
206
+ | `connector_name` | Yes | Connector name (e.g., `source-amazon-seller-partner`) |
207
+ | `pr` | Yes | PR number from the airbyte repo to build from (e.g., `71055`) |
208
+ | `connection_id` | No | Airbyte Cloud connection ID to fetch config/catalog from |
209
+ | `skip_compare` | No | If true, run single-version tests only (default: false) |
210
+ | `skip_read_action` | No | If true, skip the read action (default: false) |
211
+ | `override_test_image` | No | Override test connector image with tag |
212
+ | `override_control_image` | No | Override control connector image (baseline version) |
213
+
214
+ ### Required CI Secrets
215
+
216
+ The workflow requires these secrets (configured at the org level):
217
+ - `AIRBYTE_CLOUD_CLIENT_ID` / `AIRBYTE_CLOUD_CLIENT_SECRET` - For Airbyte Cloud API access
218
+ - `GCP_GSM_CREDENTIALS` - For GCP Secret Manager access
219
+ - `GCP_GSM_CREDENTIALS_FOR_TESTING_TOOL` - For prod database access (mapped to `GCP_PROD_DB_ACCESS_CREDENTIALS`)
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: airbyte-internal-ops
3
- Version: 0.3.0
3
+ Version: 0.4.0
4
4
  Summary: MCP and API interfaces that let the agents do the admin work
5
5
  Author-email: Aaron Steers <aj@airbyte.io>
6
6
  Keywords: admin,airbyte,api,mcp
@@ -11,9 +11,8 @@ import logging
11
11
  import subprocess
12
12
  from typing import TYPE_CHECKING, Any, Callable
13
13
 
14
- from google.cloud import logging as gcloud_logging
15
-
16
14
  from airbyte_ops_mcp.constants import GCP_PROJECT_NAME
15
+ from airbyte_ops_mcp.gcp_auth import get_logging_client
17
16
 
18
17
  if TYPE_CHECKING:
19
18
  from airbyte_ops_mcp.connection_config_retriever.retrieval import (
@@ -23,21 +22,18 @@ if TYPE_CHECKING:
23
22
  LOGGER = logging.getLogger(__name__)
24
23
 
25
24
  # Lazy-initialized to avoid import-time GCP calls
26
- _logging_client: gcloud_logging.Client | None = None
27
25
  _airbyte_gcloud_logger: Any = None
28
26
 
29
27
 
30
28
  def _get_logger() -> Any:
31
29
  """Get the GCP Cloud Logger, initializing lazily on first use."""
32
- global _logging_client, _airbyte_gcloud_logger
30
+ global _airbyte_gcloud_logger
33
31
 
34
32
  if _airbyte_gcloud_logger is not None:
35
33
  return _airbyte_gcloud_logger
36
34
 
37
- _logging_client = gcloud_logging.Client(project=GCP_PROJECT_NAME)
38
- _airbyte_gcloud_logger = _logging_client.logger(
39
- "airbyte-cloud-connection-retriever"
40
- )
35
+ logging_client = get_logging_client(GCP_PROJECT_NAME)
36
+ _airbyte_gcloud_logger = logging_client.logger("airbyte-cloud-connection-retriever")
41
37
  return _airbyte_gcloud_logger
42
38
 
43
39