airbyte-internal-ops 0.3.0__tar.gz → 0.3.1__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 (562) hide show
  1. {airbyte_internal_ops-0.3.0 → airbyte_internal_ops-0.3.1}/.github/workflows/connector-regression-test.yml +2 -0
  2. {airbyte_internal_ops-0.3.0 → airbyte_internal_ops-0.3.1}/CONTRIBUTING.md +33 -0
  3. {airbyte_internal_ops-0.3.0 → airbyte_internal_ops-0.3.1}/PKG-INFO +1 -1
  4. {airbyte_internal_ops-0.3.0 → airbyte_internal_ops-0.3.1}/src/airbyte_ops_mcp/connection_config_retriever/audit_logging.py +4 -8
  5. airbyte_internal_ops-0.3.1/src/airbyte_ops_mcp/gcp_auth.py +192 -0
  6. {airbyte_internal_ops-0.3.0 → airbyte_internal_ops-0.3.1}/src/airbyte_ops_mcp/gcp_logs/error_lookup.py +6 -5
  7. {airbyte_internal_ops-0.3.0 → airbyte_internal_ops-0.3.1}/src/airbyte_ops_mcp/mcp/prod_db_queries.py +180 -7
  8. {airbyte_internal_ops-0.3.0 → airbyte_internal_ops-0.3.1}/src/airbyte_ops_mcp/prod_db_access/queries.py +82 -1
  9. {airbyte_internal_ops-0.3.0 → airbyte_internal_ops-0.3.1}/src/airbyte_ops_mcp/prod_db_access/sql.py +299 -0
  10. {airbyte_internal_ops-0.3.0 → airbyte_internal_ops-0.3.1}/src/airbyte_ops_mcp/regression_tests/connection_secret_retriever.py +0 -4
  11. airbyte_internal_ops-0.3.0/.github/workflows/test-connection-retriever.yml +0 -84
  12. airbyte_internal_ops-0.3.0/src/airbyte_ops_mcp/gcp_auth.py +0 -99
  13. {airbyte_internal_ops-0.3.0 → airbyte_internal_ops-0.3.1}/.env.template +0 -0
  14. {airbyte_internal_ops-0.3.0 → airbyte_internal_ops-0.3.1}/.github/copilot-instructions.md +0 -0
  15. {airbyte_internal_ops-0.3.0 → airbyte_internal_ops-0.3.1}/.github/dependabot.yml +0 -0
  16. {airbyte_internal_ops-0.3.0 → airbyte_internal_ops-0.3.1}/.github/pr-welcome-message.md +0 -0
  17. {airbyte_internal_ops-0.3.0 → airbyte_internal_ops-0.3.1}/.github/release-drafter.yml +0 -0
  18. {airbyte_internal_ops-0.3.0 → airbyte_internal_ops-0.3.1}/.github/workflows/autofix-command.yml +0 -0
  19. {airbyte_internal_ops-0.3.0 → airbyte_internal_ops-0.3.1}/.github/workflows/format-check.yml +0 -0
  20. {airbyte_internal_ops-0.3.0 → airbyte_internal_ops-0.3.1}/.github/workflows/lint-check.yml +0 -0
  21. {airbyte_internal_ops-0.3.0 → airbyte_internal_ops-0.3.1}/.github/workflows/lock-command.yml +0 -0
  22. {airbyte_internal_ops-0.3.0 → airbyte_internal_ops-0.3.1}/.github/workflows/pdoc_preview.yml +0 -0
  23. {airbyte_internal_ops-0.3.0 → airbyte_internal_ops-0.3.1}/.github/workflows/pdoc_publish.yml +0 -0
  24. {airbyte_internal_ops-0.3.0 → airbyte_internal_ops-0.3.1}/.github/workflows/poe-command.yml +0 -0
  25. {airbyte_internal_ops-0.3.0 → airbyte_internal_ops-0.3.1}/.github/workflows/pr-welcome.yml +0 -0
  26. {airbyte_internal_ops-0.3.0 → airbyte_internal_ops-0.3.1}/.github/workflows/publish.yml +0 -0
  27. {airbyte_internal_ops-0.3.0 → airbyte_internal_ops-0.3.1}/.github/workflows/pytest-fast.yml +0 -0
  28. {airbyte_internal_ops-0.3.0 → airbyte_internal_ops-0.3.1}/.github/workflows/pytest-matrix.yml +0 -0
  29. {airbyte_internal_ops-0.3.0 → airbyte_internal_ops-0.3.1}/.github/workflows/regression-tests-ci.yml +0 -0
  30. {airbyte_internal_ops-0.3.0 → airbyte_internal_ops-0.3.1}/.github/workflows/release-drafter.yml +0 -0
  31. {airbyte_internal_ops-0.3.0 → airbyte_internal_ops-0.3.1}/.github/workflows/semantic-pr-check.yml +0 -0
  32. {airbyte_internal_ops-0.3.0 → airbyte_internal_ops-0.3.1}/.github/workflows/sentry-apply-command.yml +0 -0
  33. {airbyte_internal_ops-0.3.0 → airbyte_internal_ops-0.3.1}/.github/workflows/sentry-preview.yml +0 -0
  34. {airbyte_internal_ops-0.3.0 → airbyte_internal_ops-0.3.1}/.github/workflows/slash-command-dispatch.yml +0 -0
  35. {airbyte_internal_ops-0.3.0 → airbyte_internal_ops-0.3.1}/.github/workflows/tk-todo-check.yml +0 -0
  36. {airbyte_internal_ops-0.3.0 → airbyte_internal_ops-0.3.1}/.gitignore +0 -0
  37. {airbyte_internal_ops-0.3.0 → airbyte_internal_ops-0.3.1}/.mcp.json.template +0 -0
  38. {airbyte_internal_ops-0.3.0 → airbyte_internal_ops-0.3.1}/README.md +0 -0
  39. {airbyte_internal_ops-0.3.0 → airbyte_internal_ops-0.3.1}/bin/test_mcp_tool.py +0 -0
  40. {airbyte_internal_ops-0.3.0 → airbyte_internal_ops-0.3.1}/bin/test_mcp_tool_http.py +0 -0
  41. {airbyte_internal_ops-0.3.0 → airbyte_internal_ops-0.3.1}/conftest.py +0 -0
  42. {airbyte_internal_ops-0.3.0 → airbyte_internal_ops-0.3.1}/docs/.gitignore +0 -0
  43. {airbyte_internal_ops-0.3.0 → airbyte_internal_ops-0.3.1}/docs/generate.py +0 -0
  44. {airbyte_internal_ops-0.3.0 → airbyte_internal_ops-0.3.1}/docs/templates/custom.css +0 -0
  45. {airbyte_internal_ops-0.3.0 → airbyte_internal_ops-0.3.1}/docs/templates/theme.css +0 -0
  46. {airbyte_internal_ops-0.3.0 → airbyte_internal_ops-0.3.1}/infra/sentry/.gitignore +0 -0
  47. {airbyte_internal_ops-0.3.0 → airbyte_internal_ops-0.3.1}/infra/sentry/Pulumi.prod.yaml +0 -0
  48. {airbyte_internal_ops-0.3.0 → airbyte_internal_ops-0.3.1}/infra/sentry/Pulumi.yaml +0 -0
  49. {airbyte_internal_ops-0.3.0 → airbyte_internal_ops-0.3.1}/infra/sentry/README.md +0 -0
  50. {airbyte_internal_ops-0.3.0 → airbyte_internal_ops-0.3.1}/infra/sentry/__main__.py +0 -0
  51. {airbyte_internal_ops-0.3.0 → airbyte_internal_ops-0.3.1}/infra/sentry/docs/CONTRIBUTING.md +0 -0
  52. {airbyte_internal_ops-0.3.0 → airbyte_internal_ops-0.3.1}/infra/sentry/requirements.txt +0 -0
  53. {airbyte_internal_ops-0.3.0 → airbyte_internal_ops-0.3.1}/poe_tasks.toml +0 -0
  54. {airbyte_internal_ops-0.3.0 → airbyte_internal_ops-0.3.1}/pyproject.toml +0 -0
  55. {airbyte_internal_ops-0.3.0 → airbyte_internal_ops-0.3.1}/pyrefly.toml +0 -0
  56. {airbyte_internal_ops-0.3.0 → airbyte_internal_ops-0.3.1}/pytest.ini +0 -0
  57. {airbyte_internal_ops-0.3.0 → airbyte_internal_ops-0.3.1}/ruff.toml +0 -0
  58. {airbyte_internal_ops-0.3.0 → airbyte_internal_ops-0.3.1}/src/airbyte_ops_mcp/__init__.py +0 -0
  59. {airbyte_internal_ops-0.3.0 → airbyte_internal_ops-0.3.1}/src/airbyte_ops_mcp/_annotations.py +0 -0
  60. {airbyte_internal_ops-0.3.0 → airbyte_internal_ops-0.3.1}/src/airbyte_ops_mcp/_legacy/__init__.py +0 -0
  61. {airbyte_internal_ops-0.3.0 → airbyte_internal_ops-0.3.1}/src/airbyte_ops_mcp/_legacy/airbyte_ci/README.md +0 -0
  62. {airbyte_internal_ops-0.3.0 → airbyte_internal_ops-0.3.1}/src/airbyte_ops_mcp/_legacy/airbyte_ci/connector_erd_generator/README.md +0 -0
  63. {airbyte_internal_ops-0.3.0 → airbyte_internal_ops-0.3.1}/src/airbyte_ops_mcp/_legacy/airbyte_ci/connector_erd_generator/__init__.py +0 -0
  64. {airbyte_internal_ops-0.3.0 → airbyte_internal_ops-0.3.1}/src/airbyte_ops_mcp/_legacy/airbyte_ci/connector_erd_generator/dbml_assembler.py +0 -0
  65. {airbyte_internal_ops-0.3.0 → airbyte_internal_ops-0.3.1}/src/airbyte_ops_mcp/_legacy/airbyte_ci/connector_erd_generator/erd_service.py +0 -0
  66. {airbyte_internal_ops-0.3.0 → airbyte_internal_ops-0.3.1}/src/airbyte_ops_mcp/_legacy/airbyte_ci/connector_erd_generator/relationships.py +0 -0
  67. {airbyte_internal_ops-0.3.0 → airbyte_internal_ops-0.3.1}/src/airbyte_ops_mcp/_legacy/airbyte_ci/connector_insights/README.md +0 -0
  68. {airbyte_internal_ops-0.3.0 → airbyte_internal_ops-0.3.1}/src/airbyte_ops_mcp/_legacy/airbyte_ci/connector_insights/__init__.py +0 -0
  69. {airbyte_internal_ops-0.3.0 → airbyte_internal_ops-0.3.1}/src/airbyte_ops_mcp/_legacy/airbyte_ci/connector_insights/cli.py +0 -0
  70. {airbyte_internal_ops-0.3.0 → airbyte_internal_ops-0.3.1}/src/airbyte_ops_mcp/_legacy/airbyte_ci/connector_insights/hacks.py +0 -0
  71. {airbyte_internal_ops-0.3.0 → airbyte_internal_ops-0.3.1}/src/airbyte_ops_mcp/_legacy/airbyte_ci/connector_insights/insights.py +0 -0
  72. {airbyte_internal_ops-0.3.0 → airbyte_internal_ops-0.3.1}/src/airbyte_ops_mcp/_legacy/airbyte_ci/connector_insights/models.py +0 -0
  73. {airbyte_internal_ops-0.3.0 → airbyte_internal_ops-0.3.1}/src/airbyte_ops_mcp/_legacy/airbyte_ci/connector_insights/pylint.py +0 -0
  74. {airbyte_internal_ops-0.3.0 → airbyte_internal_ops-0.3.1}/src/airbyte_ops_mcp/_legacy/airbyte_ci/connector_insights/pylint_plugins/cdk_deprecation_checkers.py +0 -0
  75. {airbyte_internal_ops-0.3.0 → airbyte_internal_ops-0.3.1}/src/airbyte_ops_mcp/_legacy/airbyte_ci/connector_insights/result_backends.py +0 -0
  76. {airbyte_internal_ops-0.3.0 → airbyte_internal_ops-0.3.1}/src/airbyte_ops_mcp/_legacy/airbyte_ci/connector_insights/utils.py +0 -0
  77. {airbyte_internal_ops-0.3.0 → airbyte_internal_ops-0.3.1}/src/airbyte_ops_mcp/_legacy/airbyte_ci/connector_live_tests/.gitignore +0 -0
  78. {airbyte_internal_ops-0.3.0 → airbyte_internal_ops-0.3.1}/src/airbyte_ops_mcp/_legacy/airbyte_ci/connector_live_tests/README.md +0 -0
  79. {airbyte_internal_ops-0.3.0 → airbyte_internal_ops-0.3.1}/src/airbyte_ops_mcp/_legacy/airbyte_ci/connector_live_tests/__init__.py +0 -0
  80. {airbyte_internal_ops-0.3.0 → airbyte_internal_ops-0.3.1}/src/airbyte_ops_mcp/_legacy/airbyte_ci/connector_live_tests/commons/__init__.py +0 -0
  81. {airbyte_internal_ops-0.3.0 → airbyte_internal_ops-0.3.1}/src/airbyte_ops_mcp/_legacy/airbyte_ci/connector_live_tests/commons/backends/__init__.py +0 -0
  82. {airbyte_internal_ops-0.3.0 → airbyte_internal_ops-0.3.1}/src/airbyte_ops_mcp/_legacy/airbyte_ci/connector_live_tests/commons/backends/base_backend.py +0 -0
  83. {airbyte_internal_ops-0.3.0 → airbyte_internal_ops-0.3.1}/src/airbyte_ops_mcp/_legacy/airbyte_ci/connector_live_tests/commons/backends/duckdb_backend.py +0 -0
  84. {airbyte_internal_ops-0.3.0 → airbyte_internal_ops-0.3.1}/src/airbyte_ops_mcp/_legacy/airbyte_ci/connector_live_tests/commons/backends/file_backend.py +0 -0
  85. {airbyte_internal_ops-0.3.0 → airbyte_internal_ops-0.3.1}/src/airbyte_ops_mcp/_legacy/airbyte_ci/connector_live_tests/commons/connection_objects_retrieval.py +0 -0
  86. {airbyte_internal_ops-0.3.0 → airbyte_internal_ops-0.3.1}/src/airbyte_ops_mcp/_legacy/airbyte_ci/connector_live_tests/commons/connector_runner.py +0 -0
  87. {airbyte_internal_ops-0.3.0 → airbyte_internal_ops-0.3.1}/src/airbyte_ops_mcp/_legacy/airbyte_ci/connector_live_tests/commons/errors.py +0 -0
  88. {airbyte_internal_ops-0.3.0 → airbyte_internal_ops-0.3.1}/src/airbyte_ops_mcp/_legacy/airbyte_ci/connector_live_tests/commons/evaluation_modes.py +0 -0
  89. {airbyte_internal_ops-0.3.0 → airbyte_internal_ops-0.3.1}/src/airbyte_ops_mcp/_legacy/airbyte_ci/connector_live_tests/commons/hacks.py +0 -0
  90. {airbyte_internal_ops-0.3.0 → airbyte_internal_ops-0.3.1}/src/airbyte_ops_mcp/_legacy/airbyte_ci/connector_live_tests/commons/json_schema_helper.py +0 -0
  91. {airbyte_internal_ops-0.3.0 → airbyte_internal_ops-0.3.1}/src/airbyte_ops_mcp/_legacy/airbyte_ci/connector_live_tests/commons/mitm_addons.py +0 -0
  92. {airbyte_internal_ops-0.3.0 → airbyte_internal_ops-0.3.1}/src/airbyte_ops_mcp/_legacy/airbyte_ci/connector_live_tests/commons/models.py +0 -0
  93. {airbyte_internal_ops-0.3.0 → airbyte_internal_ops-0.3.1}/src/airbyte_ops_mcp/_legacy/airbyte_ci/connector_live_tests/commons/proxy.py +0 -0
  94. {airbyte_internal_ops-0.3.0 → airbyte_internal_ops-0.3.1}/src/airbyte_ops_mcp/_legacy/airbyte_ci/connector_live_tests/commons/secret_access.py +0 -0
  95. {airbyte_internal_ops-0.3.0 → airbyte_internal_ops-0.3.1}/src/airbyte_ops_mcp/_legacy/airbyte_ci/connector_live_tests/commons/segment_tracking.py +0 -0
  96. {airbyte_internal_ops-0.3.0 → airbyte_internal_ops-0.3.1}/src/airbyte_ops_mcp/_legacy/airbyte_ci/connector_live_tests/commons/utils.py +0 -0
  97. {airbyte_internal_ops-0.3.0 → airbyte_internal_ops-0.3.1}/src/airbyte_ops_mcp/_legacy/airbyte_ci/connector_live_tests/conftest.py.disabled +0 -0
  98. {airbyte_internal_ops-0.3.0 → airbyte_internal_ops-0.3.1}/src/airbyte_ops_mcp/_legacy/airbyte_ci/connector_live_tests/consts.py +0 -0
  99. {airbyte_internal_ops-0.3.0 → airbyte_internal_ops-0.3.1}/src/airbyte_ops_mcp/_legacy/airbyte_ci/connector_live_tests/poetry.lock +0 -0
  100. {airbyte_internal_ops-0.3.0 → airbyte_internal_ops-0.3.1}/src/airbyte_ops_mcp/_legacy/airbyte_ci/connector_live_tests/pytest.ini +0 -0
  101. {airbyte_internal_ops-0.3.0 → airbyte_internal_ops-0.3.1}/src/airbyte_ops_mcp/_legacy/airbyte_ci/connector_live_tests/regression_tests/__init__.py +0 -0
  102. {airbyte_internal_ops-0.3.0 → airbyte_internal_ops-0.3.1}/src/airbyte_ops_mcp/_legacy/airbyte_ci/connector_live_tests/regression_tests/test_check.py +0 -0
  103. {airbyte_internal_ops-0.3.0 → airbyte_internal_ops-0.3.1}/src/airbyte_ops_mcp/_legacy/airbyte_ci/connector_live_tests/regression_tests/test_discover.py +0 -0
  104. {airbyte_internal_ops-0.3.0 → airbyte_internal_ops-0.3.1}/src/airbyte_ops_mcp/_legacy/airbyte_ci/connector_live_tests/regression_tests/test_read.py +0 -0
  105. {airbyte_internal_ops-0.3.0 → airbyte_internal_ops-0.3.1}/src/airbyte_ops_mcp/_legacy/airbyte_ci/connector_live_tests/regression_tests/test_spec.py +0 -0
  106. {airbyte_internal_ops-0.3.0 → airbyte_internal_ops-0.3.1}/src/airbyte_ops_mcp/_legacy/airbyte_ci/connector_live_tests/report.py +0 -0
  107. {airbyte_internal_ops-0.3.0 → airbyte_internal_ops-0.3.1}/src/airbyte_ops_mcp/_legacy/airbyte_ci/connector_live_tests/stash_keys.py +0 -0
  108. {airbyte_internal_ops-0.3.0 → airbyte_internal_ops-0.3.1}/src/airbyte_ops_mcp/_legacy/airbyte_ci/connector_live_tests/templates/__init__.py +0 -0
  109. {airbyte_internal_ops-0.3.0 → airbyte_internal_ops-0.3.1}/src/airbyte_ops_mcp/_legacy/airbyte_ci/connector_live_tests/templates/private_details.html.j2 +0 -0
  110. {airbyte_internal_ops-0.3.0 → airbyte_internal_ops-0.3.1}/src/airbyte_ops_mcp/_legacy/airbyte_ci/connector_live_tests/templates/report.html.j2 +0 -0
  111. {airbyte_internal_ops-0.3.0 → airbyte_internal_ops-0.3.1}/src/airbyte_ops_mcp/_legacy/airbyte_ci/connector_live_tests/utils.py +0 -0
  112. {airbyte_internal_ops-0.3.0 → airbyte_internal_ops-0.3.1}/src/airbyte_ops_mcp/_legacy/airbyte_ci/connector_live_tests/validation_tests/__init__.py +0 -0
  113. {airbyte_internal_ops-0.3.0 → airbyte_internal_ops-0.3.1}/src/airbyte_ops_mcp/_legacy/airbyte_ci/connector_live_tests/validation_tests/test_check.py +0 -0
  114. {airbyte_internal_ops-0.3.0 → airbyte_internal_ops-0.3.1}/src/airbyte_ops_mcp/_legacy/airbyte_ci/connector_live_tests/validation_tests/test_discover.py +0 -0
  115. {airbyte_internal_ops-0.3.0 → airbyte_internal_ops-0.3.1}/src/airbyte_ops_mcp/_legacy/airbyte_ci/connector_live_tests/validation_tests/test_read.py +0 -0
  116. {airbyte_internal_ops-0.3.0 → airbyte_internal_ops-0.3.1}/src/airbyte_ops_mcp/_legacy/airbyte_ci/connector_live_tests/validation_tests/test_spec.py +0 -0
  117. {airbyte_internal_ops-0.3.0 → airbyte_internal_ops-0.3.1}/src/airbyte_ops_mcp/_legacy/airbyte_ci/connector_ops/README.md +0 -0
  118. {airbyte_internal_ops-0.3.0 → airbyte_internal_ops-0.3.1}/src/airbyte_ops_mcp/_legacy/airbyte_ci/connector_ops/__init__.py +0 -0
  119. {airbyte_internal_ops-0.3.0 → airbyte_internal_ops-0.3.1}/src/airbyte_ops_mcp/_legacy/airbyte_ci/connector_ops/utils.py +0 -0
  120. {airbyte_internal_ops-0.3.0 → airbyte_internal_ops-0.3.1}/src/airbyte_ops_mcp/_legacy/airbyte_ci/connector_pipelines/DELETEME-dagger/README.md +0 -0
  121. {airbyte_internal_ops-0.3.0 → airbyte_internal_ops-0.3.1}/src/airbyte_ops_mcp/_legacy/airbyte_ci/connector_pipelines/DELETEME-dagger/actions/__init__.py +0 -0
  122. {airbyte_internal_ops-0.3.0 → airbyte_internal_ops-0.3.1}/src/airbyte_ops_mcp/_legacy/airbyte_ci/connector_pipelines/DELETEME-dagger/actions/connector/hooks.py +0 -0
  123. {airbyte_internal_ops-0.3.0 → airbyte_internal_ops-0.3.1}/src/airbyte_ops_mcp/_legacy/airbyte_ci/connector_pipelines/DELETEME-dagger/actions/connector/normalization.py +0 -0
  124. {airbyte_internal_ops-0.3.0 → airbyte_internal_ops-0.3.1}/src/airbyte_ops_mcp/_legacy/airbyte_ci/connector_pipelines/DELETEME-dagger/actions/python/common.py +0 -0
  125. {airbyte_internal_ops-0.3.0 → airbyte_internal_ops-0.3.1}/src/airbyte_ops_mcp/_legacy/airbyte_ci/connector_pipelines/DELETEME-dagger/actions/python/pipx.py +0 -0
  126. {airbyte_internal_ops-0.3.0 → airbyte_internal_ops-0.3.1}/src/airbyte_ops_mcp/_legacy/airbyte_ci/connector_pipelines/DELETEME-dagger/actions/python/poetry.py +0 -0
  127. {airbyte_internal_ops-0.3.0 → airbyte_internal_ops-0.3.1}/src/airbyte_ops_mcp/_legacy/airbyte_ci/connector_pipelines/DELETEME-dagger/actions/remote_storage.py +0 -0
  128. {airbyte_internal_ops-0.3.0 → airbyte_internal_ops-0.3.1}/src/airbyte_ops_mcp/_legacy/airbyte_ci/connector_pipelines/DELETEME-dagger/actions/secrets.py +0 -0
  129. {airbyte_internal_ops-0.3.0 → airbyte_internal_ops-0.3.1}/src/airbyte_ops_mcp/_legacy/airbyte_ci/connector_pipelines/DELETEME-dagger/actions/system/common.py +0 -0
  130. {airbyte_internal_ops-0.3.0 → airbyte_internal_ops-0.3.1}/src/airbyte_ops_mcp/_legacy/airbyte_ci/connector_pipelines/DELETEME-dagger/actions/system/docker.py +0 -0
  131. {airbyte_internal_ops-0.3.0 → airbyte_internal_ops-0.3.1}/src/airbyte_ops_mcp/_legacy/airbyte_ci/connector_pipelines/DELETEME-dagger/containers/git.py +0 -0
  132. {airbyte_internal_ops-0.3.0 → airbyte_internal_ops-0.3.1}/src/airbyte_ops_mcp/_legacy/airbyte_ci/connector_pipelines/DELETEME-dagger/containers/internal_tools.py +0 -0
  133. {airbyte_internal_ops-0.3.0 → airbyte_internal_ops-0.3.1}/src/airbyte_ops_mcp/_legacy/airbyte_ci/connector_pipelines/DELETEME-dagger/containers/java.py +0 -0
  134. {airbyte_internal_ops-0.3.0 → airbyte_internal_ops-0.3.1}/src/airbyte_ops_mcp/_legacy/airbyte_ci/connector_pipelines/DELETEME-dagger/containers/python.py +0 -0
  135. {airbyte_internal_ops-0.3.0 → airbyte_internal_ops-0.3.1}/src/airbyte_ops_mcp/_legacy/airbyte_ci/connector_pipelines/DELETEME-dagger-helpers/__init__.py +0 -0
  136. {airbyte_internal_ops-0.3.0 → airbyte_internal_ops-0.3.1}/src/airbyte_ops_mcp/_legacy/airbyte_ci/connector_pipelines/DELETEME-dagger-helpers/cache_keys.py +0 -0
  137. {airbyte_internal_ops-0.3.0 → airbyte_internal_ops-0.3.1}/src/airbyte_ops_mcp/_legacy/airbyte_ci/connector_pipelines/DELETEME-dagger-helpers/cli.py +0 -0
  138. {airbyte_internal_ops-0.3.0 → airbyte_internal_ops-0.3.1}/src/airbyte_ops_mcp/_legacy/airbyte_ci/connector_pipelines/DELETEME-dagger-helpers/connectors/__init__.py +0 -0
  139. {airbyte_internal_ops-0.3.0 → airbyte_internal_ops-0.3.1}/src/airbyte_ops_mcp/_legacy/airbyte_ci/connector_pipelines/DELETEME-dagger-helpers/connectors/cdk_helpers.py +0 -0
  140. {airbyte_internal_ops-0.3.0 → airbyte_internal_ops-0.3.1}/src/airbyte_ops_mcp/_legacy/airbyte_ci/connector_pipelines/DELETEME-dagger-helpers/connectors/command.py +0 -0
  141. {airbyte_internal_ops-0.3.0 → airbyte_internal_ops-0.3.1}/src/airbyte_ops_mcp/_legacy/airbyte_ci/connector_pipelines/DELETEME-dagger-helpers/connectors/dagger_fs.py +0 -0
  142. {airbyte_internal_ops-0.3.0 → airbyte_internal_ops-0.3.1}/src/airbyte_ops_mcp/_legacy/airbyte_ci/connector_pipelines/DELETEME-dagger-helpers/connectors/format.py +0 -0
  143. {airbyte_internal_ops-0.3.0 → airbyte_internal_ops-0.3.1}/src/airbyte_ops_mcp/_legacy/airbyte_ci/connector_pipelines/DELETEME-dagger-helpers/connectors/modifed.py +0 -0
  144. {airbyte_internal_ops-0.3.0 → airbyte_internal_ops-0.3.1}/src/airbyte_ops_mcp/_legacy/airbyte_ci/connector_pipelines/DELETEME-dagger-helpers/connectors/yaml.py +0 -0
  145. {airbyte_internal_ops-0.3.0 → airbyte_internal_ops-0.3.1}/src/airbyte_ops_mcp/_legacy/airbyte_ci/connector_pipelines/DELETEME-dagger-helpers/execution/__init__.py +0 -0
  146. {airbyte_internal_ops-0.3.0 → airbyte_internal_ops-0.3.1}/src/airbyte_ops_mcp/_legacy/airbyte_ci/connector_pipelines/DELETEME-dagger-helpers/execution/argument_parsing.py +0 -0
  147. {airbyte_internal_ops-0.3.0 → airbyte_internal_ops-0.3.1}/src/airbyte_ops_mcp/_legacy/airbyte_ci/connector_pipelines/DELETEME-dagger-helpers/execution/run_steps.py +0 -0
  148. {airbyte_internal_ops-0.3.0 → airbyte_internal_ops-0.3.1}/src/airbyte_ops_mcp/_legacy/airbyte_ci/connector_pipelines/DELETEME-dagger-helpers/gcs.py +0 -0
  149. {airbyte_internal_ops-0.3.0 → airbyte_internal_ops-0.3.1}/src/airbyte_ops_mcp/_legacy/airbyte_ci/connector_pipelines/DELETEME-dagger-helpers/git.py +0 -0
  150. {airbyte_internal_ops-0.3.0 → airbyte_internal_ops-0.3.1}/src/airbyte_ops_mcp/_legacy/airbyte_ci/connector_pipelines/DELETEME-dagger-helpers/github.py +0 -0
  151. {airbyte_internal_ops-0.3.0 → airbyte_internal_ops-0.3.1}/src/airbyte_ops_mcp/_legacy/airbyte_ci/connector_pipelines/DELETEME-dagger-helpers/pip.py +0 -0
  152. {airbyte_internal_ops-0.3.0 → airbyte_internal_ops-0.3.1}/src/airbyte_ops_mcp/_legacy/airbyte_ci/connector_pipelines/DELETEME-dagger-helpers/sentry_utils.py +0 -0
  153. {airbyte_internal_ops-0.3.0 → airbyte_internal_ops-0.3.1}/src/airbyte_ops_mcp/_legacy/airbyte_ci/connector_pipelines/DELETEME-dagger-helpers/slack.py +0 -0
  154. {airbyte_internal_ops-0.3.0 → airbyte_internal_ops-0.3.1}/src/airbyte_ops_mcp/_legacy/airbyte_ci/connector_pipelines/DELETEME-dagger-helpers/utils.py +0 -0
  155. {airbyte_internal_ops-0.3.0 → airbyte_internal_ops-0.3.1}/src/airbyte_ops_mcp/_legacy/airbyte_ci/connector_pipelines/README.md +0 -0
  156. {airbyte_internal_ops-0.3.0 → airbyte_internal_ops-0.3.1}/src/airbyte_ops_mcp/_legacy/airbyte_ci/connector_pipelines/__init__.py +0 -0
  157. {airbyte_internal_ops-0.3.0 → airbyte_internal_ops-0.3.1}/src/airbyte_ops_mcp/_legacy/airbyte_ci/connector_pipelines/airbyte_ci/__init__.py +0 -0
  158. {airbyte_internal_ops-0.3.0 → airbyte_internal_ops-0.3.1}/src/airbyte_ops_mcp/_legacy/airbyte_ci/connector_pipelines/airbyte_ci/connectors/__init__.py +0 -0
  159. {airbyte_internal_ops-0.3.0 → airbyte_internal_ops-0.3.1}/src/airbyte_ops_mcp/_legacy/airbyte_ci/connector_pipelines/airbyte_ci/connectors/build_image/__init__.py +0 -0
  160. {airbyte_internal_ops-0.3.0 → airbyte_internal_ops-0.3.1}/src/airbyte_ops_mcp/_legacy/airbyte_ci/connector_pipelines/airbyte_ci/connectors/build_image/commands.py +0 -0
  161. {airbyte_internal_ops-0.3.0 → airbyte_internal_ops-0.3.1}/src/airbyte_ops_mcp/_legacy/airbyte_ci/connector_pipelines/airbyte_ci/connectors/build_image/pipeline.py +0 -0
  162. {airbyte_internal_ops-0.3.0 → airbyte_internal_ops-0.3.1}/src/airbyte_ops_mcp/_legacy/airbyte_ci/connector_pipelines/airbyte_ci/connectors/build_image/steps/__init__.py +0 -0
  163. {airbyte_internal_ops-0.3.0 → airbyte_internal_ops-0.3.1}/src/airbyte_ops_mcp/_legacy/airbyte_ci/connector_pipelines/airbyte_ci/connectors/build_image/steps/build_customization.py +0 -0
  164. {airbyte_internal_ops-0.3.0 → airbyte_internal_ops-0.3.1}/src/airbyte_ops_mcp/_legacy/airbyte_ci/connector_pipelines/airbyte_ci/connectors/build_image/steps/common.py +0 -0
  165. {airbyte_internal_ops-0.3.0 → airbyte_internal_ops-0.3.1}/src/airbyte_ops_mcp/_legacy/airbyte_ci/connector_pipelines/airbyte_ci/connectors/build_image/steps/java_connectors.py +0 -0
  166. {airbyte_internal_ops-0.3.0 → airbyte_internal_ops-0.3.1}/src/airbyte_ops_mcp/_legacy/airbyte_ci/connector_pipelines/airbyte_ci/connectors/build_image/steps/manifest_only_connectors.py +0 -0
  167. {airbyte_internal_ops-0.3.0 → airbyte_internal_ops-0.3.1}/src/airbyte_ops_mcp/_legacy/airbyte_ci/connector_pipelines/airbyte_ci/connectors/build_image/steps/normalization.py +0 -0
  168. {airbyte_internal_ops-0.3.0 → airbyte_internal_ops-0.3.1}/src/airbyte_ops_mcp/_legacy/airbyte_ci/connector_pipelines/airbyte_ci/connectors/build_image/steps/python_connectors.py +0 -0
  169. {airbyte_internal_ops-0.3.0 → airbyte_internal_ops-0.3.1}/src/airbyte_ops_mcp/_legacy/airbyte_ci/connector_pipelines/airbyte_ci/connectors/commands.py +0 -0
  170. {airbyte_internal_ops-0.3.0 → airbyte_internal_ops-0.3.1}/src/airbyte_ops_mcp/_legacy/airbyte_ci/connector_pipelines/airbyte_ci/connectors/consts.py +0 -0
  171. {airbyte_internal_ops-0.3.0 → airbyte_internal_ops-0.3.1}/src/airbyte_ops_mcp/_legacy/airbyte_ci/connector_pipelines/airbyte_ci/connectors/context.py +0 -0
  172. {airbyte_internal_ops-0.3.0 → airbyte_internal_ops-0.3.1}/src/airbyte_ops_mcp/_legacy/airbyte_ci/connector_pipelines/airbyte_ci/connectors/generate_erd/__init__.py +0 -0
  173. {airbyte_internal_ops-0.3.0 → airbyte_internal_ops-0.3.1}/src/airbyte_ops_mcp/_legacy/airbyte_ci/connector_pipelines/airbyte_ci/connectors/generate_erd/commands.py +0 -0
  174. {airbyte_internal_ops-0.3.0 → airbyte_internal_ops-0.3.1}/src/airbyte_ops_mcp/_legacy/airbyte_ci/connector_pipelines/airbyte_ci/connectors/generate_erd/pipeline.py +0 -0
  175. {airbyte_internal_ops-0.3.0 → airbyte_internal_ops-0.3.1}/src/airbyte_ops_mcp/_legacy/airbyte_ci/connector_pipelines/airbyte_ci/connectors/list/__init__.py +0 -0
  176. {airbyte_internal_ops-0.3.0 → airbyte_internal_ops-0.3.1}/src/airbyte_ops_mcp/_legacy/airbyte_ci/connector_pipelines/airbyte_ci/connectors/list/commands.py +0 -0
  177. {airbyte_internal_ops-0.3.0 → airbyte_internal_ops-0.3.1}/src/airbyte_ops_mcp/_legacy/airbyte_ci/connector_pipelines/airbyte_ci/connectors/migrate_to_inline_schemas/__init__.py +0 -0
  178. {airbyte_internal_ops-0.3.0 → airbyte_internal_ops-0.3.1}/src/airbyte_ops_mcp/_legacy/airbyte_ci/connector_pipelines/airbyte_ci/connectors/migrate_to_inline_schemas/commands.py +0 -0
  179. {airbyte_internal_ops-0.3.0 → airbyte_internal_ops-0.3.1}/src/airbyte_ops_mcp/_legacy/airbyte_ci/connector_pipelines/airbyte_ci/connectors/migrate_to_inline_schemas/pipeline.py +0 -0
  180. {airbyte_internal_ops-0.3.0 → airbyte_internal_ops-0.3.1}/src/airbyte_ops_mcp/_legacy/airbyte_ci/connector_pipelines/airbyte_ci/connectors/pipeline.py +0 -0
  181. {airbyte_internal_ops-0.3.0 → airbyte_internal_ops-0.3.1}/src/airbyte_ops_mcp/_legacy/airbyte_ci/connector_pipelines/airbyte_ci/connectors/pull_request/__init__.py +0 -0
  182. {airbyte_internal_ops-0.3.0 → airbyte_internal_ops-0.3.1}/src/airbyte_ops_mcp/_legacy/airbyte_ci/connector_pipelines/airbyte_ci/connectors/pull_request/commands.py +0 -0
  183. {airbyte_internal_ops-0.3.0 → airbyte_internal_ops-0.3.1}/src/airbyte_ops_mcp/_legacy/airbyte_ci/connector_pipelines/airbyte_ci/connectors/pull_request/pipeline.py +0 -0
  184. {airbyte_internal_ops-0.3.0 → airbyte_internal_ops-0.3.1}/src/airbyte_ops_mcp/_legacy/airbyte_ci/connector_pipelines/airbyte_ci/connectors/reports.py +0 -0
  185. {airbyte_internal_ops-0.3.0 → airbyte_internal_ops-0.3.1}/src/airbyte_ops_mcp/_legacy/airbyte_ci/connector_pipelines/airbyte_ci/connectors/test/__init__.py +0 -0
  186. {airbyte_internal_ops-0.3.0 → airbyte_internal_ops-0.3.1}/src/airbyte_ops_mcp/_legacy/airbyte_ci/connector_pipelines/airbyte_ci/connectors/test/commands.py +0 -0
  187. {airbyte_internal_ops-0.3.0 → airbyte_internal_ops-0.3.1}/src/airbyte_ops_mcp/_legacy/airbyte_ci/connector_pipelines/airbyte_ci/connectors/test/context.py +0 -0
  188. {airbyte_internal_ops-0.3.0 → airbyte_internal_ops-0.3.1}/src/airbyte_ops_mcp/_legacy/airbyte_ci/connector_pipelines/airbyte_ci/connectors/test/pipeline.py +0 -0
  189. {airbyte_internal_ops-0.3.0 → airbyte_internal_ops-0.3.1}/src/airbyte_ops_mcp/_legacy/airbyte_ci/connector_pipelines/airbyte_ci/connectors/test/steps/__init__.py +0 -0
  190. {airbyte_internal_ops-0.3.0 → airbyte_internal_ops-0.3.1}/src/airbyte_ops_mcp/_legacy/airbyte_ci/connector_pipelines/airbyte_ci/connectors/test/steps/common.py +0 -0
  191. {airbyte_internal_ops-0.3.0 → airbyte_internal_ops-0.3.1}/src/airbyte_ops_mcp/_legacy/airbyte_ci/connector_pipelines/airbyte_ci/connectors/test/steps/java_connectors.py +0 -0
  192. {airbyte_internal_ops-0.3.0 → airbyte_internal_ops-0.3.1}/src/airbyte_ops_mcp/_legacy/airbyte_ci/connector_pipelines/airbyte_ci/connectors/test/steps/manifest_only_connectors.py +0 -0
  193. {airbyte_internal_ops-0.3.0 → airbyte_internal_ops-0.3.1}/src/airbyte_ops_mcp/_legacy/airbyte_ci/connector_pipelines/airbyte_ci/connectors/test/steps/python_connectors.py +0 -0
  194. {airbyte_internal_ops-0.3.0 → airbyte_internal_ops-0.3.1}/src/airbyte_ops_mcp/_legacy/airbyte_ci/connector_pipelines/airbyte_ci/connectors/test/steps/templates/test_report.html.j2 +0 -0
  195. {airbyte_internal_ops-0.3.0 → airbyte_internal_ops-0.3.1}/src/airbyte_ops_mcp/_legacy/airbyte_ci/connector_pipelines/airbyte_ci/connectors/up_to_date/__init__.py +0 -0
  196. {airbyte_internal_ops-0.3.0 → airbyte_internal_ops-0.3.1}/src/airbyte_ops_mcp/_legacy/airbyte_ci/connector_pipelines/airbyte_ci/connectors/up_to_date/commands.py +0 -0
  197. {airbyte_internal_ops-0.3.0 → airbyte_internal_ops-0.3.1}/src/airbyte_ops_mcp/_legacy/airbyte_ci/connector_pipelines/airbyte_ci/connectors/up_to_date/pipeline.py +0 -0
  198. {airbyte_internal_ops-0.3.0 → airbyte_internal_ops-0.3.1}/src/airbyte_ops_mcp/_legacy/airbyte_ci/connector_pipelines/airbyte_ci/connectors/up_to_date/steps.py +0 -0
  199. {airbyte_internal_ops-0.3.0 → airbyte_internal_ops-0.3.1}/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
  200. {airbyte_internal_ops-0.3.0 → airbyte_internal_ops-0.3.1}/src/airbyte_ops_mcp/_legacy/airbyte_ci/connector_pipelines/airbyte_ci/connectors/upgrade_cdk/__init__.py +0 -0
  201. {airbyte_internal_ops-0.3.0 → airbyte_internal_ops-0.3.1}/src/airbyte_ops_mcp/_legacy/airbyte_ci/connector_pipelines/airbyte_ci/connectors/upgrade_cdk/commands.py +0 -0
  202. {airbyte_internal_ops-0.3.0 → airbyte_internal_ops-0.3.1}/src/airbyte_ops_mcp/_legacy/airbyte_ci/connector_pipelines/airbyte_ci/connectors/upgrade_cdk/pipeline.py +0 -0
  203. {airbyte_internal_ops-0.3.0 → airbyte_internal_ops-0.3.1}/src/airbyte_ops_mcp/_legacy/airbyte_ci/connector_pipelines/airbyte_ci/metadata/__init__.py +0 -0
  204. {airbyte_internal_ops-0.3.0 → airbyte_internal_ops-0.3.1}/src/airbyte_ops_mcp/_legacy/airbyte_ci/connector_pipelines/airbyte_ci/metadata/commands.py +0 -0
  205. {airbyte_internal_ops-0.3.0 → airbyte_internal_ops-0.3.1}/src/airbyte_ops_mcp/_legacy/airbyte_ci/connector_pipelines/airbyte_ci/metadata/pipeline.py +0 -0
  206. {airbyte_internal_ops-0.3.0 → airbyte_internal_ops-0.3.1}/src/airbyte_ops_mcp/_legacy/airbyte_ci/connector_pipelines/airbyte_ci/poetry/__init__.py +0 -0
  207. {airbyte_internal_ops-0.3.0 → airbyte_internal_ops-0.3.1}/src/airbyte_ops_mcp/_legacy/airbyte_ci/connector_pipelines/airbyte_ci/poetry/commands.py +0 -0
  208. {airbyte_internal_ops-0.3.0 → airbyte_internal_ops-0.3.1}/src/airbyte_ops_mcp/_legacy/airbyte_ci/connector_pipelines/airbyte_ci/steps/__init__.py +0 -0
  209. {airbyte_internal_ops-0.3.0 → airbyte_internal_ops-0.3.1}/src/airbyte_ops_mcp/_legacy/airbyte_ci/connector_pipelines/airbyte_ci/steps/base_image.py +0 -0
  210. {airbyte_internal_ops-0.3.0 → airbyte_internal_ops-0.3.1}/src/airbyte_ops_mcp/_legacy/airbyte_ci/connector_pipelines/airbyte_ci/steps/docker.py +0 -0
  211. {airbyte_internal_ops-0.3.0 → airbyte_internal_ops-0.3.1}/src/airbyte_ops_mcp/_legacy/airbyte_ci/connector_pipelines/airbyte_ci/steps/gradle.py +0 -0
  212. {airbyte_internal_ops-0.3.0 → airbyte_internal_ops-0.3.1}/src/airbyte_ops_mcp/_legacy/airbyte_ci/connector_pipelines/airbyte_ci/steps/no_op.py +0 -0
  213. {airbyte_internal_ops-0.3.0 → airbyte_internal_ops-0.3.1}/src/airbyte_ops_mcp/_legacy/airbyte_ci/connector_pipelines/airbyte_ci/steps/poetry.py +0 -0
  214. {airbyte_internal_ops-0.3.0 → airbyte_internal_ops-0.3.1}/src/airbyte_ops_mcp/_legacy/airbyte_ci/connector_pipelines/airbyte_ci/steps/pull_request.py +0 -0
  215. {airbyte_internal_ops-0.3.0 → airbyte_internal_ops-0.3.1}/src/airbyte_ops_mcp/_legacy/airbyte_ci/connector_pipelines/airbyte_ci/test/__init__.py +0 -0
  216. {airbyte_internal_ops-0.3.0 → airbyte_internal_ops-0.3.1}/src/airbyte_ops_mcp/_legacy/airbyte_ci/connector_pipelines/airbyte_ci/test/commands.py +0 -0
  217. {airbyte_internal_ops-0.3.0 → airbyte_internal_ops-0.3.1}/src/airbyte_ops_mcp/_legacy/airbyte_ci/connector_pipelines/airbyte_ci/test/models.py +0 -0
  218. {airbyte_internal_ops-0.3.0 → airbyte_internal_ops-0.3.1}/src/airbyte_ops_mcp/_legacy/airbyte_ci/connector_pipelines/airbyte_ci/test/pipeline.py +0 -0
  219. {airbyte_internal_ops-0.3.0 → airbyte_internal_ops-0.3.1}/src/airbyte_ops_mcp/_legacy/airbyte_ci/connector_pipelines/airbyte_ci/update/__init__.py +0 -0
  220. {airbyte_internal_ops-0.3.0 → airbyte_internal_ops-0.3.1}/src/airbyte_ops_mcp/_legacy/airbyte_ci/connector_pipelines/airbyte_ci/update/commands.py +0 -0
  221. {airbyte_internal_ops-0.3.0 → airbyte_internal_ops-0.3.1}/src/airbyte_ops_mcp/_legacy/airbyte_ci/connector_pipelines/cli/airbyte_ci.py +0 -0
  222. {airbyte_internal_ops-0.3.0 → airbyte_internal_ops-0.3.1}/src/airbyte_ops_mcp/_legacy/airbyte_ci/connector_pipelines/cli/auto_update.py +0 -0
  223. {airbyte_internal_ops-0.3.0 → airbyte_internal_ops-0.3.1}/src/airbyte_ops_mcp/_legacy/airbyte_ci/connector_pipelines/cli/click_decorators.py +0 -0
  224. {airbyte_internal_ops-0.3.0 → airbyte_internal_ops-0.3.1}/src/airbyte_ops_mcp/_legacy/airbyte_ci/connector_pipelines/cli/confirm_prompt.py +0 -0
  225. {airbyte_internal_ops-0.3.0 → airbyte_internal_ops-0.3.1}/src/airbyte_ops_mcp/_legacy/airbyte_ci/connector_pipelines/cli/dagger_pipeline_command.py +0 -0
  226. {airbyte_internal_ops-0.3.0 → airbyte_internal_ops-0.3.1}/src/airbyte_ops_mcp/_legacy/airbyte_ci/connector_pipelines/cli/dagger_run.py +0 -0
  227. {airbyte_internal_ops-0.3.0 → airbyte_internal_ops-0.3.1}/src/airbyte_ops_mcp/_legacy/airbyte_ci/connector_pipelines/cli/ensure_repo_root.py +0 -0
  228. {airbyte_internal_ops-0.3.0 → airbyte_internal_ops-0.3.1}/src/airbyte_ops_mcp/_legacy/airbyte_ci/connector_pipelines/cli/lazy_group.py +0 -0
  229. {airbyte_internal_ops-0.3.0 → airbyte_internal_ops-0.3.1}/src/airbyte_ops_mcp/_legacy/airbyte_ci/connector_pipelines/cli/secrets.py +0 -0
  230. {airbyte_internal_ops-0.3.0 → airbyte_internal_ops-0.3.1}/src/airbyte_ops_mcp/_legacy/airbyte_ci/connector_pipelines/cli/telemetry.py +0 -0
  231. {airbyte_internal_ops-0.3.0 → airbyte_internal_ops-0.3.1}/src/airbyte_ops_mcp/_legacy/airbyte_ci/connector_pipelines/consts.py +0 -0
  232. {airbyte_internal_ops-0.3.0 → airbyte_internal_ops-0.3.1}/src/airbyte_ops_mcp/_legacy/airbyte_ci/connector_pipelines/hacks.py +0 -0
  233. {airbyte_internal_ops-0.3.0 → airbyte_internal_ops-0.3.1}/src/airbyte_ops_mcp/_legacy/airbyte_ci/connector_pipelines/models/__init__.py +0 -0
  234. {airbyte_internal_ops-0.3.0 → airbyte_internal_ops-0.3.1}/src/airbyte_ops_mcp/_legacy/airbyte_ci/connector_pipelines/models/artifacts.py +0 -0
  235. {airbyte_internal_ops-0.3.0 → airbyte_internal_ops-0.3.1}/src/airbyte_ops_mcp/_legacy/airbyte_ci/connector_pipelines/models/ci_requirements.py +0 -0
  236. {airbyte_internal_ops-0.3.0 → airbyte_internal_ops-0.3.1}/src/airbyte_ops_mcp/_legacy/airbyte_ci/connector_pipelines/models/contexts/__init__.py +0 -0
  237. {airbyte_internal_ops-0.3.0 → airbyte_internal_ops-0.3.1}/src/airbyte_ops_mcp/_legacy/airbyte_ci/connector_pipelines/models/contexts/click_pipeline_context.py +0 -0
  238. {airbyte_internal_ops-0.3.0 → airbyte_internal_ops-0.3.1}/src/airbyte_ops_mcp/_legacy/airbyte_ci/connector_pipelines/models/contexts/pipeline_context.py +0 -0
  239. {airbyte_internal_ops-0.3.0 → airbyte_internal_ops-0.3.1}/src/airbyte_ops_mcp/_legacy/airbyte_ci/connector_pipelines/models/reports.py +0 -0
  240. {airbyte_internal_ops-0.3.0 → airbyte_internal_ops-0.3.1}/src/airbyte_ops_mcp/_legacy/airbyte_ci/connector_pipelines/models/secrets.py +0 -0
  241. {airbyte_internal_ops-0.3.0 → airbyte_internal_ops-0.3.1}/src/airbyte_ops_mcp/_legacy/airbyte_ci/connector_pipelines/models/singleton.py +0 -0
  242. {airbyte_internal_ops-0.3.0 → airbyte_internal_ops-0.3.1}/src/airbyte_ops_mcp/_legacy/airbyte_ci/connector_pipelines/models/steps.py +0 -0
  243. {airbyte_internal_ops-0.3.0 → airbyte_internal_ops-0.3.1}/src/airbyte_ops_mcp/_legacy/airbyte_ci/connector_qa/README.md +0 -0
  244. {airbyte_internal_ops-0.3.0 → airbyte_internal_ops-0.3.1}/src/airbyte_ops_mcp/_legacy/airbyte_ci/connector_qa/__init__.py +0 -0
  245. {airbyte_internal_ops-0.3.0 → airbyte_internal_ops-0.3.1}/src/airbyte_ops_mcp/_legacy/airbyte_ci/connector_qa/checks/__init__.py +0 -0
  246. {airbyte_internal_ops-0.3.0 → airbyte_internal_ops-0.3.1}/src/airbyte_ops_mcp/_legacy/airbyte_ci/connector_qa/checks/assets.py +0 -0
  247. {airbyte_internal_ops-0.3.0 → airbyte_internal_ops-0.3.1}/src/airbyte_ops_mcp/_legacy/airbyte_ci/connector_qa/checks/documentation/__init__.py +0 -0
  248. {airbyte_internal_ops-0.3.0 → airbyte_internal_ops-0.3.1}/src/airbyte_ops_mcp/_legacy/airbyte_ci/connector_qa/checks/documentation/documentation.py +0 -0
  249. {airbyte_internal_ops-0.3.0 → airbyte_internal_ops-0.3.1}/src/airbyte_ops_mcp/_legacy/airbyte_ci/connector_qa/checks/documentation/helpers.py +0 -0
  250. {airbyte_internal_ops-0.3.0 → airbyte_internal_ops-0.3.1}/src/airbyte_ops_mcp/_legacy/airbyte_ci/connector_qa/checks/documentation/models.py +0 -0
  251. {airbyte_internal_ops-0.3.0 → airbyte_internal_ops-0.3.1}/src/airbyte_ops_mcp/_legacy/airbyte_ci/connector_qa/checks/documentation/templates/documentation_headers_check_description.md.j2 +0 -0
  252. {airbyte_internal_ops-0.3.0 → airbyte_internal_ops-0.3.1}/src/airbyte_ops_mcp/_legacy/airbyte_ci/connector_qa/checks/documentation/templates/section_content_description.md.j2 +0 -0
  253. {airbyte_internal_ops-0.3.0 → airbyte_internal_ops-0.3.1}/src/airbyte_ops_mcp/_legacy/airbyte_ci/connector_qa/checks/documentation/templates/template.md.j2 +0 -0
  254. {airbyte_internal_ops-0.3.0 → airbyte_internal_ops-0.3.1}/src/airbyte_ops_mcp/_legacy/airbyte_ci/connector_qa/checks/metadata.py +0 -0
  255. {airbyte_internal_ops-0.3.0 → airbyte_internal_ops-0.3.1}/src/airbyte_ops_mcp/_legacy/airbyte_ci/connector_qa/checks/packaging.py +0 -0
  256. {airbyte_internal_ops-0.3.0 → airbyte_internal_ops-0.3.1}/src/airbyte_ops_mcp/_legacy/airbyte_ci/connector_qa/checks/security.py +0 -0
  257. {airbyte_internal_ops-0.3.0 → airbyte_internal_ops-0.3.1}/src/airbyte_ops_mcp/_legacy/airbyte_ci/connector_qa/checks/version.py +0 -0
  258. {airbyte_internal_ops-0.3.0 → airbyte_internal_ops-0.3.1}/src/airbyte_ops_mcp/_legacy/airbyte_ci/connector_qa/cli.py +0 -0
  259. {airbyte_internal_ops-0.3.0 → airbyte_internal_ops-0.3.1}/src/airbyte_ops_mcp/_legacy/airbyte_ci/connector_qa/consts.py +0 -0
  260. {airbyte_internal_ops-0.3.0 → airbyte_internal_ops-0.3.1}/src/airbyte_ops_mcp/_legacy/airbyte_ci/connector_qa/models.py +0 -0
  261. {airbyte_internal_ops-0.3.0 → airbyte_internal_ops-0.3.1}/src/airbyte_ops_mcp/_legacy/airbyte_ci/connector_qa/templates/__init__.py +0 -0
  262. {airbyte_internal_ops-0.3.0 → airbyte_internal_ops-0.3.1}/src/airbyte_ops_mcp/_legacy/airbyte_ci/connector_qa/templates/qa_checks.md.j2 +0 -0
  263. {airbyte_internal_ops-0.3.0 → airbyte_internal_ops-0.3.1}/src/airbyte_ops_mcp/_legacy/airbyte_ci/connector_qa/utils.py +0 -0
  264. {airbyte_internal_ops-0.3.0 → airbyte_internal_ops-0.3.1}/src/airbyte_ops_mcp/_legacy/airbyte_ci/metadata_models/README.md +0 -0
  265. {airbyte_internal_ops-0.3.0 → airbyte_internal_ops-0.3.1}/src/airbyte_ops_mcp/_legacy/airbyte_ci/metadata_models/bin/bundle-schemas.js +0 -0
  266. {airbyte_internal_ops-0.3.0 → airbyte_internal_ops-0.3.1}/src/airbyte_ops_mcp/_legacy/airbyte_ci/metadata_models/bin/generate-metadata-models.sh +0 -0
  267. {airbyte_internal_ops-0.3.0 → airbyte_internal_ops-0.3.1}/src/airbyte_ops_mcp/_legacy/airbyte_ci/metadata_models/generated/ActorDefinitionResourceRequirements.py +0 -0
  268. {airbyte_internal_ops-0.3.0 → airbyte_internal_ops-0.3.1}/src/airbyte_ops_mcp/_legacy/airbyte_ci/metadata_models/generated/AirbyteInternal.py +0 -0
  269. {airbyte_internal_ops-0.3.0 → airbyte_internal_ops-0.3.1}/src/airbyte_ops_mcp/_legacy/airbyte_ci/metadata_models/generated/AllowedHosts.py +0 -0
  270. {airbyte_internal_ops-0.3.0 → airbyte_internal_ops-0.3.1}/src/airbyte_ops_mcp/_legacy/airbyte_ci/metadata_models/generated/ConnectorBreakingChanges.py +0 -0
  271. {airbyte_internal_ops-0.3.0 → airbyte_internal_ops-0.3.1}/src/airbyte_ops_mcp/_legacy/airbyte_ci/metadata_models/generated/ConnectorBuildOptions.py +0 -0
  272. {airbyte_internal_ops-0.3.0 → airbyte_internal_ops-0.3.1}/src/airbyte_ops_mcp/_legacy/airbyte_ci/metadata_models/generated/ConnectorIPCOptions.py +0 -0
  273. {airbyte_internal_ops-0.3.0 → airbyte_internal_ops-0.3.1}/src/airbyte_ops_mcp/_legacy/airbyte_ci/metadata_models/generated/ConnectorMetadataDefinitionV0.json +0 -0
  274. {airbyte_internal_ops-0.3.0 → airbyte_internal_ops-0.3.1}/src/airbyte_ops_mcp/_legacy/airbyte_ci/metadata_models/generated/ConnectorMetadataDefinitionV0.py +0 -0
  275. {airbyte_internal_ops-0.3.0 → airbyte_internal_ops-0.3.1}/src/airbyte_ops_mcp/_legacy/airbyte_ci/metadata_models/generated/ConnectorMetrics.py +0 -0
  276. {airbyte_internal_ops-0.3.0 → airbyte_internal_ops-0.3.1}/src/airbyte_ops_mcp/_legacy/airbyte_ci/metadata_models/generated/ConnectorPackageInfo.py +0 -0
  277. {airbyte_internal_ops-0.3.0 → airbyte_internal_ops-0.3.1}/src/airbyte_ops_mcp/_legacy/airbyte_ci/metadata_models/generated/ConnectorRegistryDestinationDefinition.py +0 -0
  278. {airbyte_internal_ops-0.3.0 → airbyte_internal_ops-0.3.1}/src/airbyte_ops_mcp/_legacy/airbyte_ci/metadata_models/generated/ConnectorRegistryReleases.py +0 -0
  279. {airbyte_internal_ops-0.3.0 → airbyte_internal_ops-0.3.1}/src/airbyte_ops_mcp/_legacy/airbyte_ci/metadata_models/generated/ConnectorRegistrySourceDefinition.py +0 -0
  280. {airbyte_internal_ops-0.3.0 → airbyte_internal_ops-0.3.1}/src/airbyte_ops_mcp/_legacy/airbyte_ci/metadata_models/generated/ConnectorRegistryV0.py +0 -0
  281. {airbyte_internal_ops-0.3.0 → airbyte_internal_ops-0.3.1}/src/airbyte_ops_mcp/_legacy/airbyte_ci/metadata_models/generated/ConnectorReleases.py +0 -0
  282. {airbyte_internal_ops-0.3.0 → airbyte_internal_ops-0.3.1}/src/airbyte_ops_mcp/_legacy/airbyte_ci/metadata_models/generated/ConnectorTestSuiteOptions.py +0 -0
  283. {airbyte_internal_ops-0.3.0 → airbyte_internal_ops-0.3.1}/src/airbyte_ops_mcp/_legacy/airbyte_ci/metadata_models/generated/GeneratedFields.py +0 -0
  284. {airbyte_internal_ops-0.3.0 → airbyte_internal_ops-0.3.1}/src/airbyte_ops_mcp/_legacy/airbyte_ci/metadata_models/generated/GitInfo.py +0 -0
  285. {airbyte_internal_ops-0.3.0 → airbyte_internal_ops-0.3.1}/src/airbyte_ops_mcp/_legacy/airbyte_ci/metadata_models/generated/JobType.py +0 -0
  286. {airbyte_internal_ops-0.3.0 → airbyte_internal_ops-0.3.1}/src/airbyte_ops_mcp/_legacy/airbyte_ci/metadata_models/generated/NormalizationDestinationDefinitionConfig.py +0 -0
  287. {airbyte_internal_ops-0.3.0 → airbyte_internal_ops-0.3.1}/src/airbyte_ops_mcp/_legacy/airbyte_ci/metadata_models/generated/RegistryOverrides.py +0 -0
  288. {airbyte_internal_ops-0.3.0 → airbyte_internal_ops-0.3.1}/src/airbyte_ops_mcp/_legacy/airbyte_ci/metadata_models/generated/ReleaseStage.py +0 -0
  289. {airbyte_internal_ops-0.3.0 → airbyte_internal_ops-0.3.1}/src/airbyte_ops_mcp/_legacy/airbyte_ci/metadata_models/generated/RemoteRegistries.py +0 -0
  290. {airbyte_internal_ops-0.3.0 → airbyte_internal_ops-0.3.1}/src/airbyte_ops_mcp/_legacy/airbyte_ci/metadata_models/generated/ResourceRequirements.py +0 -0
  291. {airbyte_internal_ops-0.3.0 → airbyte_internal_ops-0.3.1}/src/airbyte_ops_mcp/_legacy/airbyte_ci/metadata_models/generated/RolloutConfiguration.py +0 -0
  292. {airbyte_internal_ops-0.3.0 → airbyte_internal_ops-0.3.1}/src/airbyte_ops_mcp/_legacy/airbyte_ci/metadata_models/generated/Secret.py +0 -0
  293. {airbyte_internal_ops-0.3.0 → airbyte_internal_ops-0.3.1}/src/airbyte_ops_mcp/_legacy/airbyte_ci/metadata_models/generated/SecretStore.py +0 -0
  294. {airbyte_internal_ops-0.3.0 → airbyte_internal_ops-0.3.1}/src/airbyte_ops_mcp/_legacy/airbyte_ci/metadata_models/generated/SourceFileInfo.py +0 -0
  295. {airbyte_internal_ops-0.3.0 → airbyte_internal_ops-0.3.1}/src/airbyte_ops_mcp/_legacy/airbyte_ci/metadata_models/generated/SuggestedStreams.py +0 -0
  296. {airbyte_internal_ops-0.3.0 → airbyte_internal_ops-0.3.1}/src/airbyte_ops_mcp/_legacy/airbyte_ci/metadata_models/generated/SupportLevel.py +0 -0
  297. {airbyte_internal_ops-0.3.0 → airbyte_internal_ops-0.3.1}/src/airbyte_ops_mcp/_legacy/airbyte_ci/metadata_models/generated/TestConnections.py +0 -0
  298. {airbyte_internal_ops-0.3.0 → airbyte_internal_ops-0.3.1}/src/airbyte_ops_mcp/_legacy/airbyte_ci/metadata_models/generated/__init__.py +0 -0
  299. {airbyte_internal_ops-0.3.0 → airbyte_internal_ops-0.3.1}/src/airbyte_ops_mcp/_legacy/airbyte_ci/metadata_models/generated/airbyte-connector-metadata-schema.json +0 -0
  300. {airbyte_internal_ops-0.3.0 → airbyte_internal_ops-0.3.1}/src/airbyte_ops_mcp/_legacy/airbyte_ci/metadata_models/models/ActorDefinitionResourceRequirements.yaml +0 -0
  301. {airbyte_internal_ops-0.3.0 → airbyte_internal_ops-0.3.1}/src/airbyte_ops_mcp/_legacy/airbyte_ci/metadata_models/models/AirbyteInternal.yaml +0 -0
  302. {airbyte_internal_ops-0.3.0 → airbyte_internal_ops-0.3.1}/src/airbyte_ops_mcp/_legacy/airbyte_ci/metadata_models/models/AllowedHosts.yaml +0 -0
  303. {airbyte_internal_ops-0.3.0 → airbyte_internal_ops-0.3.1}/src/airbyte_ops_mcp/_legacy/airbyte_ci/metadata_models/models/ConnectorBreakingChanges.yaml +0 -0
  304. {airbyte_internal_ops-0.3.0 → airbyte_internal_ops-0.3.1}/src/airbyte_ops_mcp/_legacy/airbyte_ci/metadata_models/models/ConnectorBuildOptions.yaml +0 -0
  305. {airbyte_internal_ops-0.3.0 → airbyte_internal_ops-0.3.1}/src/airbyte_ops_mcp/_legacy/airbyte_ci/metadata_models/models/ConnectorIPCOptions.yaml +0 -0
  306. {airbyte_internal_ops-0.3.0 → airbyte_internal_ops-0.3.1}/src/airbyte_ops_mcp/_legacy/airbyte_ci/metadata_models/models/ConnectorMetadataDefinitionV0.yaml +0 -0
  307. {airbyte_internal_ops-0.3.0 → airbyte_internal_ops-0.3.1}/src/airbyte_ops_mcp/_legacy/airbyte_ci/metadata_models/models/ConnectorMetrics.yaml +0 -0
  308. {airbyte_internal_ops-0.3.0 → airbyte_internal_ops-0.3.1}/src/airbyte_ops_mcp/_legacy/airbyte_ci/metadata_models/models/ConnectorPackageInfo.yaml +0 -0
  309. {airbyte_internal_ops-0.3.0 → airbyte_internal_ops-0.3.1}/src/airbyte_ops_mcp/_legacy/airbyte_ci/metadata_models/models/ConnectorRegistryDestinationDefinition.yaml +0 -0
  310. {airbyte_internal_ops-0.3.0 → airbyte_internal_ops-0.3.1}/src/airbyte_ops_mcp/_legacy/airbyte_ci/metadata_models/models/ConnectorRegistryReleases.yaml +0 -0
  311. {airbyte_internal_ops-0.3.0 → airbyte_internal_ops-0.3.1}/src/airbyte_ops_mcp/_legacy/airbyte_ci/metadata_models/models/ConnectorRegistrySourceDefinition.yaml +0 -0
  312. {airbyte_internal_ops-0.3.0 → airbyte_internal_ops-0.3.1}/src/airbyte_ops_mcp/_legacy/airbyte_ci/metadata_models/models/ConnectorRegistryV0.yaml +0 -0
  313. {airbyte_internal_ops-0.3.0 → airbyte_internal_ops-0.3.1}/src/airbyte_ops_mcp/_legacy/airbyte_ci/metadata_models/models/ConnectorReleases.yaml +0 -0
  314. {airbyte_internal_ops-0.3.0 → airbyte_internal_ops-0.3.1}/src/airbyte_ops_mcp/_legacy/airbyte_ci/metadata_models/models/ConnectorTestSuiteOptions.yaml +0 -0
  315. {airbyte_internal_ops-0.3.0 → airbyte_internal_ops-0.3.1}/src/airbyte_ops_mcp/_legacy/airbyte_ci/metadata_models/models/GeneratedFields.yaml +0 -0
  316. {airbyte_internal_ops-0.3.0 → airbyte_internal_ops-0.3.1}/src/airbyte_ops_mcp/_legacy/airbyte_ci/metadata_models/models/GitInfo.yaml +0 -0
  317. {airbyte_internal_ops-0.3.0 → airbyte_internal_ops-0.3.1}/src/airbyte_ops_mcp/_legacy/airbyte_ci/metadata_models/models/JobType.yaml +0 -0
  318. {airbyte_internal_ops-0.3.0 → airbyte_internal_ops-0.3.1}/src/airbyte_ops_mcp/_legacy/airbyte_ci/metadata_models/models/NormalizationDestinationDefinitionConfig.yaml +0 -0
  319. {airbyte_internal_ops-0.3.0 → airbyte_internal_ops-0.3.1}/src/airbyte_ops_mcp/_legacy/airbyte_ci/metadata_models/models/RegistryOverrides.yaml +0 -0
  320. {airbyte_internal_ops-0.3.0 → airbyte_internal_ops-0.3.1}/src/airbyte_ops_mcp/_legacy/airbyte_ci/metadata_models/models/ReleaseStage.yaml +0 -0
  321. {airbyte_internal_ops-0.3.0 → airbyte_internal_ops-0.3.1}/src/airbyte_ops_mcp/_legacy/airbyte_ci/metadata_models/models/RemoteRegistries.yaml +0 -0
  322. {airbyte_internal_ops-0.3.0 → airbyte_internal_ops-0.3.1}/src/airbyte_ops_mcp/_legacy/airbyte_ci/metadata_models/models/ResourceRequirements.yaml +0 -0
  323. {airbyte_internal_ops-0.3.0 → airbyte_internal_ops-0.3.1}/src/airbyte_ops_mcp/_legacy/airbyte_ci/metadata_models/models/RolloutConfiguration.yaml +0 -0
  324. {airbyte_internal_ops-0.3.0 → airbyte_internal_ops-0.3.1}/src/airbyte_ops_mcp/_legacy/airbyte_ci/metadata_models/models/Secret.yaml +0 -0
  325. {airbyte_internal_ops-0.3.0 → airbyte_internal_ops-0.3.1}/src/airbyte_ops_mcp/_legacy/airbyte_ci/metadata_models/models/SecretStore.yaml +0 -0
  326. {airbyte_internal_ops-0.3.0 → airbyte_internal_ops-0.3.1}/src/airbyte_ops_mcp/_legacy/airbyte_ci/metadata_models/models/SourceFileInfo.yaml +0 -0
  327. {airbyte_internal_ops-0.3.0 → airbyte_internal_ops-0.3.1}/src/airbyte_ops_mcp/_legacy/airbyte_ci/metadata_models/models/SuggestedStreams.yaml +0 -0
  328. {airbyte_internal_ops-0.3.0 → airbyte_internal_ops-0.3.1}/src/airbyte_ops_mcp/_legacy/airbyte_ci/metadata_models/models/SupportLevel.yaml +0 -0
  329. {airbyte_internal_ops-0.3.0 → airbyte_internal_ops-0.3.1}/src/airbyte_ops_mcp/_legacy/airbyte_ci/metadata_models/models/TestConnections.yaml +0 -0
  330. {airbyte_internal_ops-0.3.0 → airbyte_internal_ops-0.3.1}/src/airbyte_ops_mcp/_legacy/airbyte_ci/metadata_models/package-lock.json +0 -0
  331. {airbyte_internal_ops-0.3.0 → airbyte_internal_ops-0.3.1}/src/airbyte_ops_mcp/_legacy/airbyte_ci/metadata_models/package.json +0 -0
  332. {airbyte_internal_ops-0.3.0 → airbyte_internal_ops-0.3.1}/src/airbyte_ops_mcp/_legacy/airbyte_ci/metadata_models/transform.py +0 -0
  333. {airbyte_internal_ops-0.3.0 → airbyte_internal_ops-0.3.1}/src/airbyte_ops_mcp/_legacy/airbyte_ci/metadata_service/README.md +0 -0
  334. {airbyte_internal_ops-0.3.0 → airbyte_internal_ops-0.3.1}/src/airbyte_ops_mcp/_legacy/airbyte_ci/metadata_service/commands.py +0 -0
  335. {airbyte_internal_ops-0.3.0 → airbyte_internal_ops-0.3.1}/src/airbyte_ops_mcp/_legacy/airbyte_ci/metadata_service/constants.py +0 -0
  336. {airbyte_internal_ops-0.3.0 → airbyte_internal_ops-0.3.1}/src/airbyte_ops_mcp/_legacy/airbyte_ci/metadata_service/docker_hub.py +0 -0
  337. {airbyte_internal_ops-0.3.0 → airbyte_internal_ops-0.3.1}/src/airbyte_ops_mcp/_legacy/airbyte_ci/metadata_service/docs/external_documentation_urls.md +0 -0
  338. {airbyte_internal_ops-0.3.0 → airbyte_internal_ops-0.3.1}/src/airbyte_ops_mcp/_legacy/airbyte_ci/metadata_service/gcs_upload.py +0 -0
  339. {airbyte_internal_ops-0.3.0 → airbyte_internal_ops-0.3.1}/src/airbyte_ops_mcp/_legacy/airbyte_ci/metadata_service/helpers/files.py +0 -0
  340. {airbyte_internal_ops-0.3.0 → airbyte_internal_ops-0.3.1}/src/airbyte_ops_mcp/_legacy/airbyte_ci/metadata_service/helpers/gcs.py +0 -0
  341. {airbyte_internal_ops-0.3.0 → airbyte_internal_ops-0.3.1}/src/airbyte_ops_mcp/_legacy/airbyte_ci/metadata_service/helpers/object_helpers.py +0 -0
  342. {airbyte_internal_ops-0.3.0 → airbyte_internal_ops-0.3.1}/src/airbyte_ops_mcp/_legacy/airbyte_ci/metadata_service/helpers/slack.py +0 -0
  343. {airbyte_internal_ops-0.3.0 → airbyte_internal_ops-0.3.1}/src/airbyte_ops_mcp/_legacy/airbyte_ci/metadata_service/orchestrator/.env.template +0 -0
  344. {airbyte_internal_ops-0.3.0 → airbyte_internal_ops-0.3.1}/src/airbyte_ops_mcp/_legacy/airbyte_ci/metadata_service/orchestrator/README.md +0 -0
  345. {airbyte_internal_ops-0.3.0 → airbyte_internal_ops-0.3.1}/src/airbyte_ops_mcp/_legacy/airbyte_ci/metadata_service/orchestrator/dagster_cloud.yaml +0 -0
  346. {airbyte_internal_ops-0.3.0 → airbyte_internal_ops-0.3.1}/src/airbyte_ops_mcp/_legacy/airbyte_ci/metadata_service/orchestrator/orchestrator/__init__.py +0 -0
  347. {airbyte_internal_ops-0.3.0 → airbyte_internal_ops-0.3.1}/src/airbyte_ops_mcp/_legacy/airbyte_ci/metadata_service/orchestrator/orchestrator/assets/connector_metrics.py +0 -0
  348. {airbyte_internal_ops-0.3.0 → airbyte_internal_ops-0.3.1}/src/airbyte_ops_mcp/_legacy/airbyte_ci/metadata_service/orchestrator/orchestrator/assets/github.py +0 -0
  349. {airbyte_internal_ops-0.3.0 → airbyte_internal_ops-0.3.1}/src/airbyte_ops_mcp/_legacy/airbyte_ci/metadata_service/orchestrator/orchestrator/assets/metadata.py +0 -0
  350. {airbyte_internal_ops-0.3.0 → airbyte_internal_ops-0.3.1}/src/airbyte_ops_mcp/_legacy/airbyte_ci/metadata_service/orchestrator/orchestrator/assets/registry.py +0 -0
  351. {airbyte_internal_ops-0.3.0 → airbyte_internal_ops-0.3.1}/src/airbyte_ops_mcp/_legacy/airbyte_ci/metadata_service/orchestrator/orchestrator/assets/registry_entry.py +0 -0
  352. {airbyte_internal_ops-0.3.0 → airbyte_internal_ops-0.3.1}/src/airbyte_ops_mcp/_legacy/airbyte_ci/metadata_service/orchestrator/orchestrator/assets/registry_report.py +0 -0
  353. {airbyte_internal_ops-0.3.0 → airbyte_internal_ops-0.3.1}/src/airbyte_ops_mcp/_legacy/airbyte_ci/metadata_service/orchestrator/orchestrator/assets/slack.py +0 -0
  354. {airbyte_internal_ops-0.3.0 → airbyte_internal_ops-0.3.1}/src/airbyte_ops_mcp/_legacy/airbyte_ci/metadata_service/orchestrator/orchestrator/assets/specs_secrets_mask.py +0 -0
  355. {airbyte_internal_ops-0.3.0 → airbyte_internal_ops-0.3.1}/src/airbyte_ops_mcp/_legacy/airbyte_ci/metadata_service/orchestrator/orchestrator/config.py +0 -0
  356. {airbyte_internal_ops-0.3.0 → airbyte_internal_ops-0.3.1}/src/airbyte_ops_mcp/_legacy/airbyte_ci/metadata_service/orchestrator/orchestrator/fetcher/connector_cdk_version.py +0 -0
  357. {airbyte_internal_ops-0.3.0 → airbyte_internal_ops-0.3.1}/src/airbyte_ops_mcp/_legacy/airbyte_ci/metadata_service/orchestrator/orchestrator/hacks.py +0 -0
  358. {airbyte_internal_ops-0.3.0 → airbyte_internal_ops-0.3.1}/src/airbyte_ops_mcp/_legacy/airbyte_ci/metadata_service/orchestrator/orchestrator/jobs/registry.py +0 -0
  359. {airbyte_internal_ops-0.3.0 → airbyte_internal_ops-0.3.1}/src/airbyte_ops_mcp/_legacy/airbyte_ci/metadata_service/orchestrator/orchestrator/logging/publish_connector_lifecycle.py +0 -0
  360. {airbyte_internal_ops-0.3.0 → airbyte_internal_ops-0.3.1}/src/airbyte_ops_mcp/_legacy/airbyte_ci/metadata_service/orchestrator/orchestrator/logging/sentry.py +0 -0
  361. {airbyte_internal_ops-0.3.0 → airbyte_internal_ops-0.3.1}/src/airbyte_ops_mcp/_legacy/airbyte_ci/metadata_service/orchestrator/orchestrator/models/ci_report.py +0 -0
  362. {airbyte_internal_ops-0.3.0 → airbyte_internal_ops-0.3.1}/src/airbyte_ops_mcp/_legacy/airbyte_ci/metadata_service/orchestrator/orchestrator/models/metadata.py +0 -0
  363. {airbyte_internal_ops-0.3.0 → airbyte_internal_ops-0.3.1}/src/airbyte_ops_mcp/_legacy/airbyte_ci/metadata_service/orchestrator/orchestrator/ops/slack.py +0 -0
  364. {airbyte_internal_ops-0.3.0 → airbyte_internal_ops-0.3.1}/src/airbyte_ops_mcp/_legacy/airbyte_ci/metadata_service/orchestrator/orchestrator/resources/file_managers/local_file_manager.py +0 -0
  365. {airbyte_internal_ops-0.3.0 → airbyte_internal_ops-0.3.1}/src/airbyte_ops_mcp/_legacy/airbyte_ci/metadata_service/orchestrator/orchestrator/resources/gcp.py +0 -0
  366. {airbyte_internal_ops-0.3.0 → airbyte_internal_ops-0.3.1}/src/airbyte_ops_mcp/_legacy/airbyte_ci/metadata_service/orchestrator/orchestrator/resources/github.py +0 -0
  367. {airbyte_internal_ops-0.3.0 → airbyte_internal_ops-0.3.1}/src/airbyte_ops_mcp/_legacy/airbyte_ci/metadata_service/orchestrator/orchestrator/resources/local.py +0 -0
  368. {airbyte_internal_ops-0.3.0 → airbyte_internal_ops-0.3.1}/src/airbyte_ops_mcp/_legacy/airbyte_ci/metadata_service/orchestrator/orchestrator/sensors/gcs.py +0 -0
  369. {airbyte_internal_ops-0.3.0 → airbyte_internal_ops-0.3.1}/src/airbyte_ops_mcp/_legacy/airbyte_ci/metadata_service/orchestrator/orchestrator/sensors/github.py +0 -0
  370. {airbyte_internal_ops-0.3.0 → airbyte_internal_ops-0.3.1}/src/airbyte_ops_mcp/_legacy/airbyte_ci/metadata_service/orchestrator/orchestrator/sensors/registry.py +0 -0
  371. {airbyte_internal_ops-0.3.0 → airbyte_internal_ops-0.3.1}/src/airbyte_ops_mcp/_legacy/airbyte_ci/metadata_service/orchestrator/orchestrator/templates/base.html +0 -0
  372. {airbyte_internal_ops-0.3.0 → airbyte_internal_ops-0.3.1}/src/airbyte_ops_mcp/_legacy/airbyte_ci/metadata_service/orchestrator/orchestrator/templates/connector_registry_locations.html +0 -0
  373. {airbyte_internal_ops-0.3.0 → airbyte_internal_ops-0.3.1}/src/airbyte_ops_mcp/_legacy/airbyte_ci/metadata_service/orchestrator/orchestrator/templates/render.py +0 -0
  374. {airbyte_internal_ops-0.3.0 → airbyte_internal_ops-0.3.1}/src/airbyte_ops_mcp/_legacy/airbyte_ci/metadata_service/orchestrator/orchestrator/utils/blob_helpers.py +0 -0
  375. {airbyte_internal_ops-0.3.0 → airbyte_internal_ops-0.3.1}/src/airbyte_ops_mcp/_legacy/airbyte_ci/metadata_service/orchestrator/orchestrator/utils/dagster_helpers.py +0 -0
  376. {airbyte_internal_ops-0.3.0 → airbyte_internal_ops-0.3.1}/src/airbyte_ops_mcp/_legacy/airbyte_ci/metadata_service/orchestrator/orchestrator/utils/object_helpers.py +0 -0
  377. {airbyte_internal_ops-0.3.0 → airbyte_internal_ops-0.3.1}/src/airbyte_ops_mcp/_legacy/airbyte_ci/metadata_service/orchestrator/poetry.lock +0 -0
  378. {airbyte_internal_ops-0.3.0 → airbyte_internal_ops-0.3.1}/src/airbyte_ops_mcp/_legacy/airbyte_ci/metadata_service/orchestrator/tests/__init__.py +0 -0
  379. {airbyte_internal_ops-0.3.0 → airbyte_internal_ops-0.3.1}/src/airbyte_ops_mcp/_legacy/airbyte_ci/metadata_service/orchestrator/tests/conftest.py.disabled +0 -0
  380. {airbyte_internal_ops-0.3.0 → airbyte_internal_ops-0.3.1}/src/airbyte_ops_mcp/_legacy/airbyte_ci/metadata_service/orchestrator/tests/fixtures/__init__.py +0 -0
  381. {airbyte_internal_ops-0.3.0 → airbyte_internal_ops-0.3.1}/src/airbyte_ops_mcp/_legacy/airbyte_ci/metadata_service/orchestrator/tests/fixtures/cloud_registry.json +0 -0
  382. {airbyte_internal_ops-0.3.0 → airbyte_internal_ops-0.3.1}/src/airbyte_ops_mcp/_legacy/airbyte_ci/metadata_service/orchestrator/tests/fixtures/oss_registry.json +0 -0
  383. {airbyte_internal_ops-0.3.0 → airbyte_internal_ops-0.3.1}/src/airbyte_ops_mcp/_legacy/airbyte_ci/metadata_service/orchestrator/tests/test_connector_metrics.py +0 -0
  384. {airbyte_internal_ops-0.3.0 → airbyte_internal_ops-0.3.1}/src/airbyte_ops_mcp/_legacy/airbyte_ci/metadata_service/orchestrator/tests/test_dagster_helpers.py +0 -0
  385. {airbyte_internal_ops-0.3.0 → airbyte_internal_ops-0.3.1}/src/airbyte_ops_mcp/_legacy/airbyte_ci/metadata_service/orchestrator/tests/test_debug.py +0 -0
  386. {airbyte_internal_ops-0.3.0 → airbyte_internal_ops-0.3.1}/src/airbyte_ops_mcp/_legacy/airbyte_ci/metadata_service/orchestrator/tests/test_partition_jobs.py +0 -0
  387. {airbyte_internal_ops-0.3.0 → airbyte_internal_ops-0.3.1}/src/airbyte_ops_mcp/_legacy/airbyte_ci/metadata_service/orchestrator/tests/test_registry.py +0 -0
  388. {airbyte_internal_ops-0.3.0 → airbyte_internal_ops-0.3.1}/src/airbyte_ops_mcp/_legacy/airbyte_ci/metadata_service/orchestrator/tests/test_specs_secrets_mask.py +0 -0
  389. {airbyte_internal_ops-0.3.0 → airbyte_internal_ops-0.3.1}/src/airbyte_ops_mcp/_legacy/airbyte_ci/metadata_service/registry.py +0 -0
  390. {airbyte_internal_ops-0.3.0 → airbyte_internal_ops-0.3.1}/src/airbyte_ops_mcp/_legacy/airbyte_ci/metadata_service/registry_entry.py +0 -0
  391. {airbyte_internal_ops-0.3.0 → airbyte_internal_ops-0.3.1}/src/airbyte_ops_mcp/_legacy/airbyte_ci/metadata_service/registry_report.py +0 -0
  392. {airbyte_internal_ops-0.3.0 → airbyte_internal_ops-0.3.1}/src/airbyte_ops_mcp/_legacy/airbyte_ci/metadata_service/sentry.py +0 -0
  393. {airbyte_internal_ops-0.3.0 → airbyte_internal_ops-0.3.1}/src/airbyte_ops_mcp/_legacy/airbyte_ci/metadata_service/spec_cache.py +0 -0
  394. {airbyte_internal_ops-0.3.0 → airbyte_internal_ops-0.3.1}/src/airbyte_ops_mcp/_legacy/airbyte_ci/metadata_service/specs_secrets_mask.py +0 -0
  395. {airbyte_internal_ops-0.3.0 → airbyte_internal_ops-0.3.1}/src/airbyte_ops_mcp/_legacy/airbyte_ci/metadata_service/stale_metadata_report.py +0 -0
  396. {airbyte_internal_ops-0.3.0 → airbyte_internal_ops-0.3.1}/src/airbyte_ops_mcp/_legacy/airbyte_ci/metadata_service/templates/base.html +0 -0
  397. {airbyte_internal_ops-0.3.0 → airbyte_internal_ops-0.3.1}/src/airbyte_ops_mcp/_legacy/airbyte_ci/metadata_service/templates/connector_registry_locations.html +0 -0
  398. {airbyte_internal_ops-0.3.0 → airbyte_internal_ops-0.3.1}/src/airbyte_ops_mcp/_legacy/airbyte_ci/metadata_service/templates/render.py +0 -0
  399. {airbyte_internal_ops-0.3.0 → airbyte_internal_ops-0.3.1}/src/airbyte_ops_mcp/_legacy/airbyte_ci/metadata_service/validators/metadata_validator.py +0 -0
  400. {airbyte_internal_ops-0.3.0 → airbyte_internal_ops-0.3.1}/src/airbyte_ops_mcp/airbyte_repo/__init__.py +0 -0
  401. {airbyte_internal_ops-0.3.0 → airbyte_internal_ops-0.3.1}/src/airbyte_ops_mcp/airbyte_repo/bump_version.py +0 -0
  402. {airbyte_internal_ops-0.3.0 → airbyte_internal_ops-0.3.1}/src/airbyte_ops_mcp/airbyte_repo/list_connectors.py +0 -0
  403. {airbyte_internal_ops-0.3.0 → airbyte_internal_ops-0.3.1}/src/airbyte_ops_mcp/airbyte_repo/utils.py +0 -0
  404. {airbyte_internal_ops-0.3.0 → airbyte_internal_ops-0.3.1}/src/airbyte_ops_mcp/cli/__init__.py +0 -0
  405. {airbyte_internal_ops-0.3.0 → airbyte_internal_ops-0.3.1}/src/airbyte_ops_mcp/cli/_base.py +0 -0
  406. {airbyte_internal_ops-0.3.0 → airbyte_internal_ops-0.3.1}/src/airbyte_ops_mcp/cli/_shared.py +0 -0
  407. {airbyte_internal_ops-0.3.0 → airbyte_internal_ops-0.3.1}/src/airbyte_ops_mcp/cli/app.py +0 -0
  408. {airbyte_internal_ops-0.3.0 → airbyte_internal_ops-0.3.1}/src/airbyte_ops_mcp/cli/cloud.py +0 -0
  409. {airbyte_internal_ops-0.3.0 → airbyte_internal_ops-0.3.1}/src/airbyte_ops_mcp/cli/gh.py +0 -0
  410. {airbyte_internal_ops-0.3.0 → airbyte_internal_ops-0.3.1}/src/airbyte_ops_mcp/cli/registry.py +0 -0
  411. {airbyte_internal_ops-0.3.0 → airbyte_internal_ops-0.3.1}/src/airbyte_ops_mcp/cli/repo.py +0 -0
  412. {airbyte_internal_ops-0.3.0 → airbyte_internal_ops-0.3.1}/src/airbyte_ops_mcp/cloud_admin/__init__.py +0 -0
  413. {airbyte_internal_ops-0.3.0 → airbyte_internal_ops-0.3.1}/src/airbyte_ops_mcp/cloud_admin/api_client.py +0 -0
  414. {airbyte_internal_ops-0.3.0 → airbyte_internal_ops-0.3.1}/src/airbyte_ops_mcp/cloud_admin/auth.py +0 -0
  415. {airbyte_internal_ops-0.3.0 → airbyte_internal_ops-0.3.1}/src/airbyte_ops_mcp/cloud_admin/connection_config.py +0 -0
  416. {airbyte_internal_ops-0.3.0 → airbyte_internal_ops-0.3.1}/src/airbyte_ops_mcp/cloud_admin/models.py +0 -0
  417. {airbyte_internal_ops-0.3.0 → airbyte_internal_ops-0.3.1}/src/airbyte_ops_mcp/connection_config_retriever/__init__.py +0 -0
  418. {airbyte_internal_ops-0.3.0 → airbyte_internal_ops-0.3.1}/src/airbyte_ops_mcp/connection_config_retriever/retrieval.py +0 -0
  419. {airbyte_internal_ops-0.3.0 → airbyte_internal_ops-0.3.1}/src/airbyte_ops_mcp/connection_config_retriever/secrets_resolution.py +0 -0
  420. {airbyte_internal_ops-0.3.0 → airbyte_internal_ops-0.3.1}/src/airbyte_ops_mcp/constants.py +0 -0
  421. {airbyte_internal_ops-0.3.0 → airbyte_internal_ops-0.3.1}/src/airbyte_ops_mcp/gcp_logs/__init__.py +0 -0
  422. {airbyte_internal_ops-0.3.0 → airbyte_internal_ops-0.3.1}/src/airbyte_ops_mcp/github_actions.py +0 -0
  423. {airbyte_internal_ops-0.3.0 → airbyte_internal_ops-0.3.1}/src/airbyte_ops_mcp/github_api.py +0 -0
  424. {airbyte_internal_ops-0.3.0 → airbyte_internal_ops-0.3.1}/src/airbyte_ops_mcp/mcp/__init__.py +0 -0
  425. {airbyte_internal_ops-0.3.0 → airbyte_internal_ops-0.3.1}/src/airbyte_ops_mcp/mcp/_guidance.py +0 -0
  426. {airbyte_internal_ops-0.3.0 → airbyte_internal_ops-0.3.1}/src/airbyte_ops_mcp/mcp/_http_headers.py +0 -0
  427. {airbyte_internal_ops-0.3.0 → airbyte_internal_ops-0.3.1}/src/airbyte_ops_mcp/mcp/_mcp_utils.py +0 -0
  428. {airbyte_internal_ops-0.3.0 → airbyte_internal_ops-0.3.1}/src/airbyte_ops_mcp/mcp/cloud_connector_versions.py +0 -0
  429. {airbyte_internal_ops-0.3.0 → airbyte_internal_ops-0.3.1}/src/airbyte_ops_mcp/mcp/connector_analysis.py +0 -0
  430. {airbyte_internal_ops-0.3.0 → airbyte_internal_ops-0.3.1}/src/airbyte_ops_mcp/mcp/connector_qa.py +0 -0
  431. {airbyte_internal_ops-0.3.0 → airbyte_internal_ops-0.3.1}/src/airbyte_ops_mcp/mcp/gcp_logs.py +0 -0
  432. {airbyte_internal_ops-0.3.0 → airbyte_internal_ops-0.3.1}/src/airbyte_ops_mcp/mcp/github.py +0 -0
  433. {airbyte_internal_ops-0.3.0 → airbyte_internal_ops-0.3.1}/src/airbyte_ops_mcp/mcp/github_repo_ops.py +0 -0
  434. {airbyte_internal_ops-0.3.0 → airbyte_internal_ops-0.3.1}/src/airbyte_ops_mcp/mcp/metadata.py +0 -0
  435. {airbyte_internal_ops-0.3.0 → airbyte_internal_ops-0.3.1}/src/airbyte_ops_mcp/mcp/prerelease.py +0 -0
  436. {airbyte_internal_ops-0.3.0 → airbyte_internal_ops-0.3.1}/src/airbyte_ops_mcp/mcp/prompts.py +0 -0
  437. {airbyte_internal_ops-0.3.0 → airbyte_internal_ops-0.3.1}/src/airbyte_ops_mcp/mcp/registry.py +0 -0
  438. {airbyte_internal_ops-0.3.0 → airbyte_internal_ops-0.3.1}/src/airbyte_ops_mcp/mcp/regression_tests.py +0 -0
  439. {airbyte_internal_ops-0.3.0 → airbyte_internal_ops-0.3.1}/src/airbyte_ops_mcp/mcp/server.py +0 -0
  440. {airbyte_internal_ops-0.3.0 → airbyte_internal_ops-0.3.1}/src/airbyte_ops_mcp/mcp/server_info.py +0 -0
  441. {airbyte_internal_ops-0.3.0 → airbyte_internal_ops-0.3.1}/src/airbyte_ops_mcp/prod_db_access/__init__.py +0 -0
  442. {airbyte_internal_ops-0.3.0 → airbyte_internal_ops-0.3.1}/src/airbyte_ops_mcp/prod_db_access/db_engine.py +0 -0
  443. {airbyte_internal_ops-0.3.0 → airbyte_internal_ops-0.3.1}/src/airbyte_ops_mcp/prod_db_access/py.typed +0 -0
  444. {airbyte_internal_ops-0.3.0 → airbyte_internal_ops-0.3.1}/src/airbyte_ops_mcp/py.typed +0 -0
  445. {airbyte_internal_ops-0.3.0 → airbyte_internal_ops-0.3.1}/src/airbyte_ops_mcp/registry/__init__.py +0 -0
  446. {airbyte_internal_ops-0.3.0 → airbyte_internal_ops-0.3.1}/src/airbyte_ops_mcp/registry/models.py +0 -0
  447. {airbyte_internal_ops-0.3.0 → airbyte_internal_ops-0.3.1}/src/airbyte_ops_mcp/registry/publish.py +0 -0
  448. {airbyte_internal_ops-0.3.0 → airbyte_internal_ops-0.3.1}/src/airbyte_ops_mcp/regression_tests/__init__.py +0 -0
  449. {airbyte_internal_ops-0.3.0 → airbyte_internal_ops-0.3.1}/src/airbyte_ops_mcp/regression_tests/cdk_secrets.py +0 -0
  450. {airbyte_internal_ops-0.3.0 → airbyte_internal_ops-0.3.1}/src/airbyte_ops_mcp/regression_tests/ci_output.py +0 -0
  451. {airbyte_internal_ops-0.3.0 → airbyte_internal_ops-0.3.1}/src/airbyte_ops_mcp/regression_tests/commons/__init__.py +0 -0
  452. {airbyte_internal_ops-0.3.0 → airbyte_internal_ops-0.3.1}/src/airbyte_ops_mcp/regression_tests/config.py +0 -0
  453. {airbyte_internal_ops-0.3.0 → airbyte_internal_ops-0.3.1}/src/airbyte_ops_mcp/regression_tests/connection_fetcher.py +0 -0
  454. {airbyte_internal_ops-0.3.0 → airbyte_internal_ops-0.3.1}/src/airbyte_ops_mcp/regression_tests/connector_runner.py +0 -0
  455. {airbyte_internal_ops-0.3.0 → airbyte_internal_ops-0.3.1}/src/airbyte_ops_mcp/regression_tests/evaluation_modes.py +0 -0
  456. {airbyte_internal_ops-0.3.0 → airbyte_internal_ops-0.3.1}/src/airbyte_ops_mcp/regression_tests/http_metrics.py +0 -0
  457. {airbyte_internal_ops-0.3.0 → airbyte_internal_ops-0.3.1}/src/airbyte_ops_mcp/regression_tests/message_cache/__init__.py +0 -0
  458. {airbyte_internal_ops-0.3.0 → airbyte_internal_ops-0.3.1}/src/airbyte_ops_mcp/regression_tests/message_cache/duckdb_cache.py +0 -0
  459. {airbyte_internal_ops-0.3.0 → airbyte_internal_ops-0.3.1}/src/airbyte_ops_mcp/regression_tests/models.py +0 -0
  460. {airbyte_internal_ops-0.3.0 → airbyte_internal_ops-0.3.1}/src/airbyte_ops_mcp/regression_tests/obfuscation.py +0 -0
  461. {airbyte_internal_ops-0.3.0 → airbyte_internal_ops-0.3.1}/src/airbyte_ops_mcp/regression_tests/regression/__init__.py +0 -0
  462. {airbyte_internal_ops-0.3.0 → airbyte_internal_ops-0.3.1}/src/airbyte_ops_mcp/regression_tests/regression/comparators.py +0 -0
  463. {airbyte_internal_ops-0.3.0 → airbyte_internal_ops-0.3.1}/src/airbyte_ops_mcp/regression_tests/schema_generation.py +0 -0
  464. {airbyte_internal_ops-0.3.0 → airbyte_internal_ops-0.3.1}/src/airbyte_ops_mcp/regression_tests/validation/__init__.py +0 -0
  465. {airbyte_internal_ops-0.3.0 → airbyte_internal_ops-0.3.1}/src/airbyte_ops_mcp/regression_tests/validation/catalog_validators.py +0 -0
  466. {airbyte_internal_ops-0.3.0 → airbyte_internal_ops-0.3.1}/src/airbyte_ops_mcp/regression_tests/validation/record_validators.py +0 -0
  467. {airbyte_internal_ops-0.3.0 → airbyte_internal_ops-0.3.1}/tests/__init__.py +0 -0
  468. {airbyte_internal_ops-0.3.0 → airbyte_internal_ops-0.3.1}/tests/legacy/airbyte_ci/connector_erd_generator/__init__.py +0 -0
  469. {airbyte_internal_ops-0.3.0 → airbyte_internal_ops-0.3.1}/tests/legacy/airbyte_ci/connector_erd_generator/builder.py +0 -0
  470. {airbyte_internal_ops-0.3.0 → airbyte_internal_ops-0.3.1}/tests/legacy/airbyte_ci/connector_erd_generator/test_dbml_assembler.py +0 -0
  471. {airbyte_internal_ops-0.3.0 → airbyte_internal_ops-0.3.1}/tests/legacy/airbyte_ci/connector_erd_generator/test_relationships.py +0 -0
  472. {airbyte_internal_ops-0.3.0 → airbyte_internal_ops-0.3.1}/tests/legacy/airbyte_ci/connector_live_tests/__init__.py +0 -0
  473. {airbyte_internal_ops-0.3.0 → airbyte_internal_ops-0.3.1}/tests/legacy/airbyte_ci/connector_live_tests/backends/__init__.py +0 -0
  474. {airbyte_internal_ops-0.3.0 → airbyte_internal_ops-0.3.1}/tests/legacy/airbyte_ci/connector_live_tests/backends/test_file_backend.py +0 -0
  475. {airbyte_internal_ops-0.3.0 → airbyte_internal_ops-0.3.1}/tests/legacy/airbyte_ci/connector_live_tests/test_get_connection_objects_retrieval.py +0 -0
  476. {airbyte_internal_ops-0.3.0 → airbyte_internal_ops-0.3.1}/tests/legacy/airbyte_ci/connector_live_tests/test_json_schema_helper.py +0 -0
  477. {airbyte_internal_ops-0.3.0 → airbyte_internal_ops-0.3.1}/tests/legacy/airbyte_ci/connector_ops/conftest.py +0 -0
  478. {airbyte_internal_ops-0.3.0 → airbyte_internal_ops-0.3.1}/tests/legacy/airbyte_ci/connector_ops/test_migration_files/bad-header.md +0 -0
  479. {airbyte_internal_ops-0.3.0 → airbyte_internal_ops-0.3.1}/tests/legacy/airbyte_ci/connector_ops/test_migration_files/bad-title.md +0 -0
  480. {airbyte_internal_ops-0.3.0 → airbyte_internal_ops-0.3.1}/tests/legacy/airbyte_ci/connector_ops/test_migration_files/extra-header.md +0 -0
  481. {airbyte_internal_ops-0.3.0 → airbyte_internal_ops-0.3.1}/tests/legacy/airbyte_ci/connector_ops/test_migration_files/missing-entry.md +0 -0
  482. {airbyte_internal_ops-0.3.0 → airbyte_internal_ops-0.3.1}/tests/legacy/airbyte_ci/connector_ops/test_migration_files/out-of-order.md +0 -0
  483. {airbyte_internal_ops-0.3.0 → airbyte_internal_ops-0.3.1}/tests/legacy/airbyte_ci/connector_ops/test_utils.py +0 -0
  484. {airbyte_internal_ops-0.3.0 → airbyte_internal_ops-0.3.1}/tests/legacy/airbyte_ci/connector_qa/__init__.py +0 -0
  485. {airbyte_internal_ops-0.3.0 → airbyte_internal_ops-0.3.1}/tests/legacy/airbyte_ci/connector_qa/conftest.py +0 -0
  486. {airbyte_internal_ops-0.3.0 → airbyte_internal_ops-0.3.1}/tests/legacy/airbyte_ci/connector_qa/integration_tests/__init__.py +0 -0
  487. {airbyte_internal_ops-0.3.0 → airbyte_internal_ops-0.3.1}/tests/legacy/airbyte_ci/connector_qa/integration_tests/test_documentation.py +0 -0
  488. {airbyte_internal_ops-0.3.0 → airbyte_internal_ops-0.3.1}/tests/legacy/airbyte_ci/connector_qa/unit_tests/__init__.py +0 -0
  489. {airbyte_internal_ops-0.3.0 → airbyte_internal_ops-0.3.1}/tests/legacy/airbyte_ci/connector_qa/unit_tests/test_checks/__init__.py +0 -0
  490. {airbyte_internal_ops-0.3.0 → airbyte_internal_ops-0.3.1}/tests/legacy/airbyte_ci/connector_qa/unit_tests/test_checks/data/docs/correct.md +0 -0
  491. {airbyte_internal_ops-0.3.0 → airbyte_internal_ops-0.3.1}/tests/legacy/airbyte_ci/connector_qa/unit_tests/test_checks/data/docs/incorrect_not_all_structure.md +0 -0
  492. {airbyte_internal_ops-0.3.0 → airbyte_internal_ops-0.3.1}/tests/legacy/airbyte_ci/connector_qa/unit_tests/test_checks/data/docs/invalid_links.md +0 -0
  493. {airbyte_internal_ops-0.3.0 → airbyte_internal_ops-0.3.1}/tests/legacy/airbyte_ci/connector_qa/unit_tests/test_checks/test_assets.py +0 -0
  494. {airbyte_internal_ops-0.3.0 → airbyte_internal_ops-0.3.1}/tests/legacy/airbyte_ci/connector_qa/unit_tests/test_checks/test_documentation.py +0 -0
  495. {airbyte_internal_ops-0.3.0 → airbyte_internal_ops-0.3.1}/tests/legacy/airbyte_ci/connector_qa/unit_tests/test_checks/test_metadata.py +0 -0
  496. {airbyte_internal_ops-0.3.0 → airbyte_internal_ops-0.3.1}/tests/legacy/airbyte_ci/connector_qa/unit_tests/test_checks/test_packaging.py +0 -0
  497. {airbyte_internal_ops-0.3.0 → airbyte_internal_ops-0.3.1}/tests/legacy/airbyte_ci/connector_qa/unit_tests/test_checks/test_security.py +0 -0
  498. {airbyte_internal_ops-0.3.0 → airbyte_internal_ops-0.3.1}/tests/legacy/airbyte_ci/connector_qa/unit_tests/test_checks/test_version.py +0 -0
  499. {airbyte_internal_ops-0.3.0 → airbyte_internal_ops-0.3.1}/tests/legacy/airbyte_ci/connector_qa/unit_tests/test_models.py +0 -0
  500. {airbyte_internal_ops-0.3.0 → airbyte_internal_ops-0.3.1}/tests/legacy/airbyte_ci/pipelines/__init__.py +0 -0
  501. {airbyte_internal_ops-0.3.0 → airbyte_internal_ops-0.3.1}/tests/legacy/airbyte_ci/pipelines/conftest.py +0 -0
  502. {airbyte_internal_ops-0.3.0 → airbyte_internal_ops-0.3.1}/tests/legacy/airbyte_ci/pipelines/test_actions/test_environments.py +0 -0
  503. {airbyte_internal_ops-0.3.0 → airbyte_internal_ops-0.3.1}/tests/legacy/airbyte_ci/pipelines/test_bases.py +0 -0
  504. {airbyte_internal_ops-0.3.0 → airbyte_internal_ops-0.3.1}/tests/legacy/airbyte_ci/pipelines/test_build_image/__init__.py +0 -0
  505. {airbyte_internal_ops-0.3.0 → airbyte_internal_ops-0.3.1}/tests/legacy/airbyte_ci/pipelines/test_build_image/dummy_build_customization.py +0 -0
  506. {airbyte_internal_ops-0.3.0 → airbyte_internal_ops-0.3.1}/tests/legacy/airbyte_ci/pipelines/test_build_image/test_manifest_only_connectors.py +0 -0
  507. {airbyte_internal_ops-0.3.0 → airbyte_internal_ops-0.3.1}/tests/legacy/airbyte_ci/pipelines/test_build_image/test_python_connectors.py +0 -0
  508. {airbyte_internal_ops-0.3.0 → airbyte_internal_ops-0.3.1}/tests/legacy/airbyte_ci/pipelines/test_build_image/test_steps/test_common.py +0 -0
  509. {airbyte_internal_ops-0.3.0 → airbyte_internal_ops-0.3.1}/tests/legacy/airbyte_ci/pipelines/test_changelog/initial_files/changelog_header_no_newline.md +0 -0
  510. {airbyte_internal_ops-0.3.0 → airbyte_internal_ops-0.3.1}/tests/legacy/airbyte_ci/pipelines/test_changelog/initial_files/changelog_header_no_separator.md +0 -0
  511. {airbyte_internal_ops-0.3.0 → airbyte_internal_ops-0.3.1}/tests/legacy/airbyte_ci/pipelines/test_changelog/initial_files/no_changelog_header.md +0 -0
  512. {airbyte_internal_ops-0.3.0 → airbyte_internal_ops-0.3.1}/tests/legacy/airbyte_ci/pipelines/test_changelog/initial_files/valid_changelog_at_end.md +0 -0
  513. {airbyte_internal_ops-0.3.0 → airbyte_internal_ops-0.3.1}/tests/legacy/airbyte_ci/pipelines/test_changelog/initial_files/valid_changelog_in_middle.md +0 -0
  514. {airbyte_internal_ops-0.3.0 → airbyte_internal_ops-0.3.1}/tests/legacy/airbyte_ci/pipelines/test_changelog/result_files/changelog_header_no_newline.md +0 -0
  515. {airbyte_internal_ops-0.3.0 → airbyte_internal_ops-0.3.1}/tests/legacy/airbyte_ci/pipelines/test_changelog/result_files/changelog_header_no_separator.md +0 -0
  516. {airbyte_internal_ops-0.3.0 → airbyte_internal_ops-0.3.1}/tests/legacy/airbyte_ci/pipelines/test_changelog/result_files/dupicate_version_date_valid_changelog_at_end.md +0 -0
  517. {airbyte_internal_ops-0.3.0 → airbyte_internal_ops-0.3.1}/tests/legacy/airbyte_ci/pipelines/test_changelog/result_files/dupicate_version_date_valid_changelog_in_middle.md +0 -0
  518. {airbyte_internal_ops-0.3.0 → airbyte_internal_ops-0.3.1}/tests/legacy/airbyte_ci/pipelines/test_changelog/result_files/dupicate_versions_valid_changelog_at_end.md +0 -0
  519. {airbyte_internal_ops-0.3.0 → airbyte_internal_ops-0.3.1}/tests/legacy/airbyte_ci/pipelines/test_changelog/result_files/dupicate_versions_valid_changelog_in_middle.md +0 -0
  520. {airbyte_internal_ops-0.3.0 → airbyte_internal_ops-0.3.1}/tests/legacy/airbyte_ci/pipelines/test_changelog/result_files/duplicate_entry_valid_changelog_at_end.md +0 -0
  521. {airbyte_internal_ops-0.3.0 → airbyte_internal_ops-0.3.1}/tests/legacy/airbyte_ci/pipelines/test_changelog/result_files/duplicate_entry_valid_changelog_in_middle.md +0 -0
  522. {airbyte_internal_ops-0.3.0 → airbyte_internal_ops-0.3.1}/tests/legacy/airbyte_ci/pipelines/test_changelog/result_files/existing_entries_valid_changelog_at_end.md +0 -0
  523. {airbyte_internal_ops-0.3.0 → airbyte_internal_ops-0.3.1}/tests/legacy/airbyte_ci/pipelines/test_changelog/result_files/existing_entries_valid_changelog_in_middle.md +0 -0
  524. {airbyte_internal_ops-0.3.0 → airbyte_internal_ops-0.3.1}/tests/legacy/airbyte_ci/pipelines/test_changelog/result_files/no_changelog_header.md +0 -0
  525. {airbyte_internal_ops-0.3.0 → airbyte_internal_ops-0.3.1}/tests/legacy/airbyte_ci/pipelines/test_changelog/result_files/single_insert_valid_changelog_at_end.md +0 -0
  526. {airbyte_internal_ops-0.3.0 → airbyte_internal_ops-0.3.1}/tests/legacy/airbyte_ci/pipelines/test_changelog/result_files/single_insert_valid_changelog_in_middle.md +0 -0
  527. {airbyte_internal_ops-0.3.0 → airbyte_internal_ops-0.3.1}/tests/legacy/airbyte_ci/pipelines/test_changelog.py +0 -0
  528. {airbyte_internal_ops-0.3.0 → airbyte_internal_ops-0.3.1}/tests/legacy/airbyte_ci/pipelines/test_cli/__init__.py +0 -0
  529. {airbyte_internal_ops-0.3.0 → airbyte_internal_ops-0.3.1}/tests/legacy/airbyte_ci/pipelines/test_cli/test_click_decorators.py +0 -0
  530. {airbyte_internal_ops-0.3.0 → airbyte_internal_ops-0.3.1}/tests/legacy/airbyte_ci/pipelines/test_commands/__init__.py +0 -0
  531. {airbyte_internal_ops-0.3.0 → airbyte_internal_ops-0.3.1}/tests/legacy/airbyte_ci/pipelines/test_commands/test_groups/__init__.py +0 -0
  532. {airbyte_internal_ops-0.3.0 → airbyte_internal_ops-0.3.1}/tests/legacy/airbyte_ci/pipelines/test_commands/test_groups/test_connectors.py +0 -0
  533. {airbyte_internal_ops-0.3.0 → airbyte_internal_ops-0.3.1}/tests/legacy/airbyte_ci/pipelines/test_dagger/__init__.py +0 -0
  534. {airbyte_internal_ops-0.3.0 → airbyte_internal_ops-0.3.1}/tests/legacy/airbyte_ci/pipelines/test_dagger/test_actions/__init__.py +0 -0
  535. {airbyte_internal_ops-0.3.0 → airbyte_internal_ops-0.3.1}/tests/legacy/airbyte_ci/pipelines/test_dagger/test_actions/test_python/__init__.py +0 -0
  536. {airbyte_internal_ops-0.3.0 → airbyte_internal_ops-0.3.1}/tests/legacy/airbyte_ci/pipelines/test_dagger/test_actions/test_python/test_common.py +0 -0
  537. {airbyte_internal_ops-0.3.0 → airbyte_internal_ops-0.3.1}/tests/legacy/airbyte_ci/pipelines/test_gradle.py +0 -0
  538. {airbyte_internal_ops-0.3.0 → airbyte_internal_ops-0.3.1}/tests/legacy/airbyte_ci/pipelines/test_helpers/__init__.py +0 -0
  539. {airbyte_internal_ops-0.3.0 → airbyte_internal_ops-0.3.1}/tests/legacy/airbyte_ci/pipelines/test_helpers/test_execution/__init__.py +0 -0
  540. {airbyte_internal_ops-0.3.0 → airbyte_internal_ops-0.3.1}/tests/legacy/airbyte_ci/pipelines/test_helpers/test_execution/test_argument_parsing.py +0 -0
  541. {airbyte_internal_ops-0.3.0 → airbyte_internal_ops-0.3.1}/tests/legacy/airbyte_ci/pipelines/test_helpers/test_execution/test_run_steps.py +0 -0
  542. {airbyte_internal_ops-0.3.0 → airbyte_internal_ops-0.3.1}/tests/legacy/airbyte_ci/pipelines/test_helpers/test_pip.py +0 -0
  543. {airbyte_internal_ops-0.3.0 → airbyte_internal_ops-0.3.1}/tests/legacy/airbyte_ci/pipelines/test_helpers/test_utils.py +0 -0
  544. {airbyte_internal_ops-0.3.0 → airbyte_internal_ops-0.3.1}/tests/legacy/airbyte_ci/pipelines/test_models/__init__.py +0 -0
  545. {airbyte_internal_ops-0.3.0 → airbyte_internal_ops-0.3.1}/tests/legacy/airbyte_ci/pipelines/test_models/test_click_pipeline_context.py +0 -0
  546. {airbyte_internal_ops-0.3.0 → airbyte_internal_ops-0.3.1}/tests/legacy/airbyte_ci/pipelines/test_models/test_singleton.py +0 -0
  547. {airbyte_internal_ops-0.3.0 → airbyte_internal_ops-0.3.1}/tests/legacy/airbyte_ci/pipelines/test_poetry/test_poetry_publish.py +0 -0
  548. {airbyte_internal_ops-0.3.0 → airbyte_internal_ops-0.3.1}/tests/legacy/airbyte_ci/pipelines/test_publish.py +0 -0
  549. {airbyte_internal_ops-0.3.0 → airbyte_internal_ops-0.3.1}/tests/legacy/airbyte_ci/pipelines/test_steps/__init__.py +0 -0
  550. {airbyte_internal_ops-0.3.0 → airbyte_internal_ops-0.3.1}/tests/legacy/airbyte_ci/pipelines/test_steps/test_simple_docker_step.py +0 -0
  551. {airbyte_internal_ops-0.3.0 → airbyte_internal_ops-0.3.1}/tests/legacy/airbyte_ci/pipelines/test_steps/test_version_check.py +0 -0
  552. {airbyte_internal_ops-0.3.0 → airbyte_internal_ops-0.3.1}/tests/legacy/airbyte_ci/pipelines/test_tests/__init__.py +0 -0
  553. {airbyte_internal_ops-0.3.0 → airbyte_internal_ops-0.3.1}/tests/legacy/airbyte_ci/pipelines/test_tests/test_common.py +0 -0
  554. {airbyte_internal_ops-0.3.0 → airbyte_internal_ops-0.3.1}/tests/legacy/airbyte_ci/pipelines/test_tests/test_python_connectors.py +0 -0
  555. {airbyte_internal_ops-0.3.0 → airbyte_internal_ops-0.3.1}/tests/legacy/airbyte_ci/pipelines/test_upgrade_java_cdk.py +0 -0
  556. {airbyte_internal_ops-0.3.0 → airbyte_internal_ops-0.3.1}/tests/legacy/airbyte_ci/pipelines/utils.py +0 -0
  557. {airbyte_internal_ops-0.3.0 → airbyte_internal_ops-0.3.1}/tests/test_airbyte_admin_mcp.py +0 -0
  558. {airbyte_internal_ops-0.3.0 → airbyte_internal_ops-0.3.1}/tests/test_bump_version.py +0 -0
  559. {airbyte_internal_ops-0.3.0 → airbyte_internal_ops-0.3.1}/tests/test_cli_registry.py +0 -0
  560. {airbyte_internal_ops-0.3.0 → airbyte_internal_ops-0.3.1}/tests/test_list_connectors.py +0 -0
  561. {airbyte_internal_ops-0.3.0 → airbyte_internal_ops-0.3.1}/tests/test_prerelease.py +0 -0
  562. {airbyte_internal_ops-0.3.0 → airbyte_internal_ops-0.3.1}/uv.lock +0 -0
@@ -86,6 +86,8 @@ on:
86
86
  required: false
87
87
  GCP_GSM_CREDENTIALS:
88
88
  required: false
89
+ GCP_GSM_CREDENTIALS_FOR_TESTING_TOOL:
90
+ required: false
89
91
 
90
92
  jobs:
91
93
  # Determine which commands to run based on inputs
@@ -87,6 +87,39 @@ gcloud projects add-iam-policy-binding prod-ab-cloud-proj \
87
87
 
88
88
  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.
89
89
 
90
+ #### Cloud Logging Permissions
91
+
92
+ For tools that query GCP Cloud Logging (e.g., `lookup_cloud_backend_error`), grant the Logs Viewer role at the project level:
93
+
94
+ ```bash
95
+ # Grant Logs Viewer role (for reading log entries)
96
+ # Note: --condition=None is required to avoid interactive prompts when the project has conditional bindings
97
+ gcloud projects add-iam-policy-binding prod-ab-cloud-proj \
98
+ --member="serviceAccount:YOUR_SERVICE_ACCOUNT@prod-ab-cloud-proj.iam.gserviceaccount.com" \
99
+ --role="roles/logging.viewer" \
100
+ --condition=None
101
+ ```
102
+
103
+ For tools that retrieve connection secrets with audit logging (e.g., `fetch-connection-config --with-secrets`), also grant the Logs Writer role:
104
+
105
+ ```bash
106
+ # Grant Logs Writer role (for writing audit log entries when retrieving secrets)
107
+ gcloud projects add-iam-policy-binding prod-ab-cloud-proj \
108
+ --member="serviceAccount:YOUR_SERVICE_ACCOUNT@prod-ab-cloud-proj.iam.gserviceaccount.com" \
109
+ --role="roles/logging.logWriter" \
110
+ --condition=None
111
+ ```
112
+
113
+ To check if the permission is already granted:
114
+
115
+ ```bash
116
+ # List all IAM bindings for the project and filter for the service account
117
+ gcloud projects get-iam-policy prod-ab-cloud-proj \
118
+ --flatten="bindings[].members" \
119
+ --filter="bindings.members:YOUR_SERVICE_ACCOUNT@prod-ab-cloud-proj.iam.gserviceaccount.com" \
120
+ --format="table(bindings.role)"
121
+ ```
122
+
90
123
  ### Verifying Permissions
91
124
 
92
125
  To check existing permissions on the secret:
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: airbyte-internal-ops
3
- Version: 0.3.0
3
+ Version: 0.3.1
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
 
@@ -0,0 +1,192 @@
1
+ # Copyright (c) 2025 Airbyte, Inc., all rights reserved.
2
+ """Centralized GCP authentication utilities.
3
+
4
+ This module provides a single code path for GCP credential handling across
5
+ the airbyte-ops-mcp codebase. It supports both standard Application Default
6
+ Credentials (ADC) and the GCP_PROD_DB_ACCESS_CREDENTIALS environment variable
7
+ used internally at Airbyte.
8
+
9
+ The preferred approach is to pass credentials directly to GCP client constructors
10
+ rather than relying on file-based ADC discovery. This module provides helpers
11
+ that construct credentials from JSON content in environment variables.
12
+
13
+ Usage:
14
+ from airbyte_ops_mcp.gcp_auth import get_gcp_credentials, get_secret_manager_client
15
+
16
+ # Get credentials object to pass to any GCP client
17
+ credentials = get_gcp_credentials()
18
+ client = logging.Client(project="my-project", credentials=credentials)
19
+
20
+ # Or use the convenience helper for Secret Manager
21
+ client = get_secret_manager_client()
22
+ """
23
+
24
+ from __future__ import annotations
25
+
26
+ import json
27
+ import logging
28
+ import os
29
+ import sys
30
+ import threading
31
+
32
+ import google.auth
33
+ from google.cloud import logging as gcp_logging
34
+ from google.cloud import secretmanager
35
+ from google.oauth2 import service_account
36
+
37
+ from airbyte_ops_mcp.constants import ENV_GCP_PROD_DB_ACCESS_CREDENTIALS
38
+
39
+ logger = logging.getLogger(__name__)
40
+
41
+
42
+ def _get_identity_from_service_account_info(info: dict) -> str | None:
43
+ """Extract service account identity from parsed JSON info.
44
+
45
+ Only accesses the 'client_email' key to avoid any risk of leaking
46
+ other credential material.
47
+
48
+ Args:
49
+ info: Parsed service account JSON as a dict.
50
+
51
+ Returns:
52
+ The client_email if present and a string, otherwise None.
53
+ """
54
+ client_email = info.get("client_email")
55
+ if isinstance(client_email, str):
56
+ return client_email
57
+ return None
58
+
59
+
60
+ def _get_identity_from_credentials(
61
+ credentials: google.auth.credentials.Credentials,
62
+ ) -> str | None:
63
+ """Extract identity from a credentials object using safe attribute access.
64
+
65
+ Only accesses known-safe attributes that don't trigger network calls
66
+ or token refresh.
67
+
68
+ Args:
69
+ credentials: A GCP credentials object.
70
+
71
+ Returns:
72
+ The service account email if available, otherwise None.
73
+ """
74
+ # Try service_account_email first (most common for service accounts)
75
+ identity = getattr(credentials, "service_account_email", None)
76
+ if isinstance(identity, str):
77
+ return identity
78
+
79
+ # Try signer_email as fallback (sometimes present on impersonated creds)
80
+ identity = getattr(credentials, "signer_email", None)
81
+ if isinstance(identity, str):
82
+ return identity
83
+
84
+ return None
85
+
86
+
87
+ # Default scopes for GCP services used by this module
88
+ DEFAULT_GCP_SCOPES = ["https://www.googleapis.com/auth/cloud-platform"]
89
+
90
+ # Module-level cache for credentials (thread-safe)
91
+ _cached_credentials: google.auth.credentials.Credentials | None = None
92
+ _credentials_lock = threading.Lock()
93
+
94
+
95
+ def get_gcp_credentials() -> google.auth.credentials.Credentials:
96
+ """Get GCP credentials, preferring direct JSON parsing over file-based ADC.
97
+
98
+ This function resolves credentials in the following order:
99
+ 1. GCP_PROD_DB_ACCESS_CREDENTIALS env var (JSON content) - parsed directly
100
+ 2. Standard ADC discovery (workload identity, gcloud auth, GOOGLE_APPLICATION_CREDENTIALS)
101
+
102
+ The credentials are cached after first resolution for efficiency.
103
+ Uses the cloud-platform scope which provides access to all GCP services.
104
+
105
+ Returns:
106
+ A Credentials object that can be passed to any GCP client constructor.
107
+
108
+ Raises:
109
+ google.auth.exceptions.DefaultCredentialsError: If no credentials can be found.
110
+ """
111
+ global _cached_credentials
112
+
113
+ # Return cached credentials if available (fast path without lock)
114
+ if _cached_credentials is not None:
115
+ return _cached_credentials
116
+
117
+ # Acquire lock for thread-safe credential initialization
118
+ with _credentials_lock:
119
+ # Double-check after acquiring lock (another thread may have initialized)
120
+ if _cached_credentials is not None:
121
+ return _cached_credentials
122
+
123
+ # Try GCP_PROD_DB_ACCESS_CREDENTIALS first (JSON content in env var)
124
+ creds_json = os.getenv(ENV_GCP_PROD_DB_ACCESS_CREDENTIALS)
125
+ if creds_json:
126
+ try:
127
+ creds_dict = json.loads(creds_json)
128
+ credentials = service_account.Credentials.from_service_account_info(
129
+ creds_dict,
130
+ scopes=DEFAULT_GCP_SCOPES,
131
+ )
132
+ # Extract identity safely (only after successful credential creation)
133
+ identity = _get_identity_from_service_account_info(creds_dict)
134
+ identity_str = f" (identity: {identity})" if identity else ""
135
+ print(
136
+ f"GCP credentials loaded from {ENV_GCP_PROD_DB_ACCESS_CREDENTIALS}{identity_str}",
137
+ file=sys.stderr,
138
+ )
139
+ logger.debug(
140
+ f"Loaded GCP credentials from {ENV_GCP_PROD_DB_ACCESS_CREDENTIALS} env var"
141
+ )
142
+ _cached_credentials = credentials
143
+ return credentials
144
+ except (json.JSONDecodeError, ValueError) as e:
145
+ # Log only exception type to avoid any risk of leaking credential content
146
+ logger.warning(
147
+ f"Failed to parse {ENV_GCP_PROD_DB_ACCESS_CREDENTIALS}: "
148
+ f"{type(e).__name__}. Falling back to ADC discovery."
149
+ )
150
+
151
+ # Fall back to standard ADC discovery
152
+ credentials, project = google.auth.default(scopes=DEFAULT_GCP_SCOPES)
153
+ # Extract identity safely from ADC credentials
154
+ identity = _get_identity_from_credentials(credentials)
155
+ identity_str = f" (identity: {identity})" if identity else ""
156
+ project_str = f" (project: {project})" if project else ""
157
+ print(
158
+ f"GCP credentials loaded via ADC{project_str}{identity_str}",
159
+ file=sys.stderr,
160
+ )
161
+ logger.debug(f"Loaded GCP credentials via ADC discovery (project: {project})")
162
+ _cached_credentials = credentials
163
+ return credentials
164
+
165
+
166
+ def get_secret_manager_client() -> secretmanager.SecretManagerServiceClient:
167
+ """Get a Secret Manager client with proper credential handling.
168
+
169
+ This function uses get_gcp_credentials() to resolve credentials and passes
170
+ them directly to the client constructor.
171
+
172
+ Returns:
173
+ A configured SecretManagerServiceClient instance.
174
+ """
175
+ credentials = get_gcp_credentials()
176
+ return secretmanager.SecretManagerServiceClient(credentials=credentials)
177
+
178
+
179
+ def get_logging_client(project: str) -> gcp_logging.Client:
180
+ """Get a Cloud Logging client with proper credential handling.
181
+
182
+ This function uses get_gcp_credentials() to resolve credentials and passes
183
+ them directly to the client constructor.
184
+
185
+ Args:
186
+ project: The GCP project ID to use for logging operations.
187
+
188
+ Returns:
189
+ A configured Cloud Logging Client instance.
190
+ """
191
+ credentials = get_gcp_credentials()
192
+ return gcp_logging.Client(project=project, credentials=credentials)
@@ -24,10 +24,12 @@ from datetime import UTC, datetime, timedelta
24
24
  from enum import StrEnum
25
25
  from typing import Any
26
26
 
27
- from google.cloud import logging
27
+ from google.cloud import logging as gcp_logging
28
28
  from google.cloud.logging_v2 import entries
29
29
  from pydantic import BaseModel, Field
30
30
 
31
+ from airbyte_ops_mcp.gcp_auth import get_logging_client
32
+
31
33
  # Default GCP project for Airbyte Cloud
32
34
  DEFAULT_GCP_PROJECT = "prod-ab-cloud-proj"
33
35
 
@@ -291,14 +293,13 @@ def fetch_error_logs(
291
293
  specified error ID, then fetches related log entries (multi-line stack traces)
292
294
  from the same timestamp and resource.
293
295
  """
294
- client_options = {"quota_project_id": project}
295
- client = logging.Client(project=project, client_options=client_options)
296
+ client = get_logging_client(project)
296
297
 
297
298
  filter_str = _build_filter(error_id, lookback_days, min_severity_filter)
298
299
 
299
300
  entries_iterator = client.list_entries(
300
301
  filter_=filter_str,
301
- order_by=logging.DESCENDING,
302
+ order_by=gcp_logging.DESCENDING,
302
303
  )
303
304
 
304
305
  initial_matches = list(entries_iterator)
@@ -356,7 +357,7 @@ def fetch_error_logs(
356
357
 
357
358
  related_entries = client.list_entries(
358
359
  filter_=related_filter,
359
- order_by=logging.ASCENDING,
360
+ order_by=gcp_logging.ASCENDING,
360
361
  )
361
362
 
362
363
  for entry in related_entries:
@@ -8,6 +8,7 @@ airbyte_ops_mcp.prod_db_access.queries for use by AI agents.
8
8
  from __future__ import annotations
9
9
 
10
10
  from datetime import datetime
11
+ from enum import StrEnum
11
12
  from typing import Annotated, Any
12
13
 
13
14
  import requests
@@ -25,11 +26,21 @@ from airbyte_ops_mcp.prod_db_access.queries import (
25
26
  query_dataplanes_list,
26
27
  query_failed_sync_attempts_for_connector,
27
28
  query_new_connector_releases,
28
- query_sync_results_for_version,
29
+ query_recent_syncs_for_connector,
30
+ query_syncs_for_version_pinned_connector,
29
31
  query_workspace_info,
30
32
  query_workspaces_by_email_domain,
31
33
  )
32
34
 
35
+
36
+ class StatusFilter(StrEnum):
37
+ """Filter for job status in sync queries."""
38
+
39
+ ALL = "all"
40
+ SUCCEEDED = "succeeded"
41
+ FAILED = "failed"
42
+
43
+
33
44
  # Cloud UI base URL for building connection URLs
34
45
  CLOUD_UI_BASE_URL = "https://cloud.airbyte.com"
35
46
 
@@ -293,7 +304,7 @@ def query_prod_actors_by_connector_version(
293
304
  read_only=True,
294
305
  idempotent=True,
295
306
  )
296
- def query_prod_connector_version_sync_results(
307
+ def query_prod_recent_syncs_for_version_pinned_connector(
297
308
  connector_version_id: Annotated[
298
309
  str,
299
310
  Field(description="Connector version UUID to find sync results for"),
@@ -314,11 +325,16 @@ def query_prod_connector_version_sync_results(
314
325
  ),
315
326
  ] = False,
316
327
  ) -> list[dict[str, Any]]:
317
- """List sync job results for actors pinned to a specific connector version.
328
+ """List sync job results for actors PINNED to a specific connector version.
318
329
 
319
- Returns sync job results for connections using actors that are pinned
320
- to the specified version. Useful for monitoring rollout health and
321
- identifying issues with specific connector versions.
330
+ IMPORTANT: This tool ONLY returns results for actors that have been explicitly
331
+ pinned to the specified version via scoped_configuration. Most connections run
332
+ unpinned and will NOT appear in these results.
333
+
334
+ Use this tool when you want to monitor rollout health for actors that have been
335
+ explicitly pinned to a pre-release or specific version. For finding healthy
336
+ connections across ALL actors using a connector type (regardless of pinning),
337
+ use query_prod_recent_syncs_for_connector instead.
322
338
 
323
339
  The actor_id field is the actor ID (superset of source_id/destination_id).
324
340
 
@@ -327,7 +343,7 @@ def query_prod_connector_version_sync_results(
327
343
  pin_origin_type, pin_origin, workspace_id, workspace_name, organization_id,
328
344
  dataplane_group_id, dataplane_name
329
345
  """
330
- return query_sync_results_for_version(
346
+ return query_syncs_for_version_pinned_connector(
331
347
  connector_version_id,
332
348
  days=days,
333
349
  limit=limit,
@@ -335,6 +351,163 @@ def query_prod_connector_version_sync_results(
335
351
  )
336
352
 
337
353
 
354
+ @mcp_tool(
355
+ read_only=True,
356
+ idempotent=True,
357
+ open_world=True,
358
+ )
359
+ def query_prod_recent_syncs_for_connector(
360
+ source_definition_id: Annotated[
361
+ str | None,
362
+ Field(
363
+ description=(
364
+ "Source connector definition ID (UUID) to search for. "
365
+ "Provide this OR source_canonical_name OR destination_definition_id "
366
+ "OR destination_canonical_name (exactly one required). "
367
+ "Example: 'afa734e4-3571-11ec-991a-1e0031268139' for YouTube Analytics."
368
+ ),
369
+ default=None,
370
+ ),
371
+ ],
372
+ source_canonical_name: Annotated[
373
+ str | None,
374
+ Field(
375
+ description=(
376
+ "Canonical source connector name to search for. "
377
+ "Provide this OR source_definition_id OR destination_definition_id "
378
+ "OR destination_canonical_name (exactly one required). "
379
+ "Examples: 'source-youtube-analytics', 'YouTube Analytics'."
380
+ ),
381
+ default=None,
382
+ ),
383
+ ],
384
+ destination_definition_id: Annotated[
385
+ str | None,
386
+ Field(
387
+ description=(
388
+ "Destination connector definition ID (UUID) to search for. "
389
+ "Provide this OR destination_canonical_name OR source_definition_id "
390
+ "OR source_canonical_name (exactly one required). "
391
+ "Example: '94bd199c-2ff0-4aa2-b98e-17f0acb72610' for DuckDB."
392
+ ),
393
+ default=None,
394
+ ),
395
+ ],
396
+ destination_canonical_name: Annotated[
397
+ str | None,
398
+ Field(
399
+ description=(
400
+ "Canonical destination connector name to search for. "
401
+ "Provide this OR destination_definition_id OR source_definition_id "
402
+ "OR source_canonical_name (exactly one required). "
403
+ "Examples: 'destination-duckdb', 'DuckDB'."
404
+ ),
405
+ default=None,
406
+ ),
407
+ ],
408
+ status_filter: Annotated[
409
+ StatusFilter,
410
+ Field(
411
+ description=(
412
+ "Filter by job status: 'all' (default), 'succeeded', or 'failed'. "
413
+ "Use 'succeeded' to find healthy connections with recent successful syncs. "
414
+ "Use 'failed' to find connections with recent failures."
415
+ ),
416
+ default=StatusFilter.ALL,
417
+ ),
418
+ ],
419
+ organization_id: Annotated[
420
+ str | OrganizationAliasEnum | None,
421
+ Field(
422
+ description=(
423
+ "Optional organization ID (UUID) or alias to filter results. "
424
+ "If provided, only syncs from this organization will be returned. "
425
+ "Accepts '@airbyte-internal' as an alias for the Airbyte internal org."
426
+ ),
427
+ default=None,
428
+ ),
429
+ ],
430
+ lookback_days: Annotated[
431
+ int,
432
+ Field(description="Number of days to look back (default: 7)", default=7),
433
+ ],
434
+ limit: Annotated[
435
+ int,
436
+ Field(description="Maximum number of results (default: 100)", default=100),
437
+ ],
438
+ ) -> list[dict[str, Any]]:
439
+ """List recent sync jobs for ALL actors using a connector type.
440
+
441
+ This tool finds all actors with the given connector definition and returns their
442
+ recent sync jobs, regardless of whether they have explicit version pins. It filters
443
+ out deleted actors, deleted workspaces, and deprecated connections.
444
+
445
+ Use this tool to:
446
+ - Find healthy connections with recent successful syncs (status_filter='succeeded')
447
+ - Investigate connector issues across all users (status_filter='failed')
448
+ - Get an overview of all recent sync activity (status_filter='all')
449
+
450
+ Supports both SOURCE and DESTINATION connectors. Provide exactly one of:
451
+ source_definition_id, source_canonical_name, destination_definition_id,
452
+ or destination_canonical_name.
453
+
454
+ Key fields in results:
455
+ - job_status: 'succeeded', 'failed', 'cancelled', etc.
456
+ - connection_id, connection_name: The connection that ran the sync
457
+ - actor_id, actor_name: The source or destination actor
458
+ - pin_origin_type, pin_origin, pinned_version_id: Version pin context (NULL if not pinned)
459
+ """
460
+ # Validate that exactly one connector parameter is provided
461
+ provided_params = [
462
+ source_definition_id,
463
+ source_canonical_name,
464
+ destination_definition_id,
465
+ destination_canonical_name,
466
+ ]
467
+ num_provided = sum(p is not None for p in provided_params)
468
+ if num_provided != 1:
469
+ raise PyAirbyteInputError(
470
+ message=(
471
+ "Exactly one of source_definition_id, source_canonical_name, "
472
+ "destination_definition_id, or destination_canonical_name must be provided."
473
+ ),
474
+ )
475
+
476
+ # Determine if this is a destination connector
477
+ is_destination = (
478
+ destination_definition_id is not None or destination_canonical_name is not None
479
+ )
480
+
481
+ # Resolve canonical name to definition ID if needed
482
+ resolved_definition_id: str
483
+ if source_canonical_name:
484
+ resolved_definition_id = _resolve_canonical_name_to_definition_id(
485
+ canonical_name=source_canonical_name,
486
+ )
487
+ elif destination_canonical_name:
488
+ resolved_definition_id = _resolve_canonical_name_to_definition_id(
489
+ canonical_name=destination_canonical_name,
490
+ )
491
+ elif source_definition_id:
492
+ resolved_definition_id = source_definition_id
493
+ else:
494
+ # We've validated exactly one param is provided, so this must be set
495
+ assert destination_definition_id is not None
496
+ resolved_definition_id = destination_definition_id
497
+
498
+ # Resolve organization ID alias
499
+ resolved_organization_id = OrganizationAliasEnum.resolve(organization_id)
500
+
501
+ return query_recent_syncs_for_connector(
502
+ connector_definition_id=resolved_definition_id,
503
+ is_destination=is_destination,
504
+ status_filter=status_filter,
505
+ organization_id=resolved_organization_id,
506
+ days=lookback_days,
507
+ limit=limit,
508
+ )
509
+
510
+
338
511
  @mcp_tool(
339
512
  read_only=True,
340
513
  idempotent=True,
@@ -29,6 +29,12 @@ from airbyte_ops_mcp.prod_db_access.sql import (
29
29
  SELECT_FAILED_SYNC_ATTEMPTS_FOR_CONNECTOR,
30
30
  SELECT_NEW_CONNECTOR_RELEASES,
31
31
  SELECT_ORG_WORKSPACES,
32
+ SELECT_RECENT_FAILED_SYNCS_FOR_DESTINATION_CONNECTOR,
33
+ SELECT_RECENT_FAILED_SYNCS_FOR_SOURCE_CONNECTOR,
34
+ SELECT_RECENT_SUCCESSFUL_SYNCS_FOR_DESTINATION_CONNECTOR,
35
+ SELECT_RECENT_SUCCESSFUL_SYNCS_FOR_SOURCE_CONNECTOR,
36
+ SELECT_RECENT_SYNCS_FOR_DESTINATION_CONNECTOR,
37
+ SELECT_RECENT_SYNCS_FOR_SOURCE_CONNECTOR,
32
38
  SELECT_SUCCESSFUL_SYNCS_FOR_VERSION,
33
39
  SELECT_SYNC_RESULTS_FOR_VERSION,
34
40
  SELECT_WORKSPACE_INFO,
@@ -227,7 +233,7 @@ def query_actors_pinned_to_version(
227
233
  )
228
234
 
229
235
 
230
- def query_sync_results_for_version(
236
+ def query_syncs_for_version_pinned_connector(
231
237
  connector_version_id: str,
232
238
  days: int = 7,
233
239
  limit: int = 100,
@@ -320,6 +326,81 @@ def query_failed_sync_attempts_for_connector(
320
326
  return results
321
327
 
322
328
 
329
+ def query_recent_syncs_for_connector(
330
+ connector_definition_id: str,
331
+ is_destination: bool = False,
332
+ status_filter: str = "all",
333
+ organization_id: str | None = None,
334
+ days: int = 7,
335
+ limit: int = 100,
336
+ *,
337
+ gsm_client: secretmanager.SecretManagerServiceClient | None = None,
338
+ ) -> list[dict[str, Any]]:
339
+ """Query recent sync jobs for ALL actors using a connector definition.
340
+
341
+ Finds all actors with the given actor_definition_id and returns their sync jobs,
342
+ regardless of whether they have explicit version pins. Filters out deleted actors,
343
+ deleted workspaces, and deprecated connections.
344
+
345
+ This is useful for finding healthy connections with recent successful syncs,
346
+ or for investigating connector issues across all users.
347
+
348
+ Args:
349
+ connector_definition_id: Connector definition UUID to filter by
350
+ is_destination: If True, query destination connectors; if False, query sources
351
+ status_filter: Filter by job status - "all", "succeeded", or "failed"
352
+ organization_id: Optional organization UUID to filter results by (post-query filter)
353
+ days: Number of days to look back (default: 7)
354
+ limit: Maximum number of results (default: 100)
355
+ gsm_client: GCP Secret Manager client. If None, a new client will be instantiated.
356
+
357
+ Returns:
358
+ List of sync job records with workspace info and optional pin context
359
+ """
360
+ cutoff_date = datetime.now(timezone.utc) - timedelta(days=days)
361
+
362
+ # Select the appropriate query based on connector type and status filter
363
+ if is_destination:
364
+ if status_filter == "succeeded":
365
+ query = SELECT_RECENT_SUCCESSFUL_SYNCS_FOR_DESTINATION_CONNECTOR
366
+ query_name = "SELECT_RECENT_SUCCESSFUL_SYNCS_FOR_DESTINATION_CONNECTOR"
367
+ elif status_filter == "failed":
368
+ query = SELECT_RECENT_FAILED_SYNCS_FOR_DESTINATION_CONNECTOR
369
+ query_name = "SELECT_RECENT_FAILED_SYNCS_FOR_DESTINATION_CONNECTOR"
370
+ else:
371
+ query = SELECT_RECENT_SYNCS_FOR_DESTINATION_CONNECTOR
372
+ query_name = "SELECT_RECENT_SYNCS_FOR_DESTINATION_CONNECTOR"
373
+ else:
374
+ if status_filter == "succeeded":
375
+ query = SELECT_RECENT_SUCCESSFUL_SYNCS_FOR_SOURCE_CONNECTOR
376
+ query_name = "SELECT_RECENT_SUCCESSFUL_SYNCS_FOR_SOURCE_CONNECTOR"
377
+ elif status_filter == "failed":
378
+ query = SELECT_RECENT_FAILED_SYNCS_FOR_SOURCE_CONNECTOR
379
+ query_name = "SELECT_RECENT_FAILED_SYNCS_FOR_SOURCE_CONNECTOR"
380
+ else:
381
+ query = SELECT_RECENT_SYNCS_FOR_SOURCE_CONNECTOR
382
+ query_name = "SELECT_RECENT_SYNCS_FOR_SOURCE_CONNECTOR"
383
+
384
+ results = _run_sql_query(
385
+ query,
386
+ parameters={
387
+ "connector_definition_id": connector_definition_id,
388
+ "cutoff_date": cutoff_date,
389
+ "limit": limit,
390
+ },
391
+ query_name=query_name,
392
+ gsm_client=gsm_client,
393
+ )
394
+
395
+ # Post-query filter by organization_id if provided
396
+ if organization_id is not None:
397
+ results = [
398
+ r for r in results if str(r.get("organization_id")) == organization_id
399
+ ]
400
+
401
+ return results
402
+
403
+
323
404
  def query_dataplanes_list(
324
405
  *,
325
406
  gsm_client: secretmanager.SecretManagerServiceClient | None = None,