mca-sdk 0.9.4.dev1__tar.gz → 0.9.7__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 (735) hide show
  1. {mca_sdk-0.9.4.dev1 → mca_sdk-0.9.7}/CHANGELOG.md +384 -2
  2. {mca_sdk-0.9.4.dev1/mca_sdk.egg-info → mca_sdk-0.9.7}/PKG-INFO +12 -5
  3. {mca_sdk-0.9.4.dev1 → mca_sdk-0.9.7}/README.md +7 -4
  4. {mca_sdk-0.9.4.dev1 → mca_sdk-0.9.7}/mca-sdk-nodejs/package-lock.json +163 -180
  5. mca_sdk-0.9.7/mca_sdk/FOR_AI_ASSISTANTS.md +1157 -0
  6. {mca_sdk-0.9.4.dev1 → mca_sdk-0.9.7}/mca_sdk/__init__.py +6 -0
  7. {mca_sdk-0.9.4.dev1 → mca_sdk-0.9.7}/mca_sdk/_version.py +3 -3
  8. {mca_sdk-0.9.4.dev1 → mca_sdk-0.9.7}/mca_sdk/ai_assist/jupyter.py +2 -2
  9. {mca_sdk-0.9.4.dev1 → mca_sdk-0.9.7}/mca_sdk/autolog/__init__.py +20 -1
  10. {mca_sdk-0.9.4.dev1 → mca_sdk-0.9.7}/mca_sdk/autolog/_anthropic.py +9 -11
  11. {mca_sdk-0.9.4.dev1 → mca_sdk-0.9.7}/mca_sdk/autolog/_base.py +42 -9
  12. {mca_sdk-0.9.4.dev1 → mca_sdk-0.9.7}/mca_sdk/autolog/_openai.py +8 -10
  13. {mca_sdk-0.9.4.dev1 → mca_sdk-0.9.7}/mca_sdk/cli/_bootstrap.py +19 -0
  14. {mca_sdk-0.9.4.dev1 → mca_sdk-0.9.7}/mca_sdk/cli/init.py +12 -6
  15. {mca_sdk-0.9.4.dev1 → mca_sdk-0.9.7}/mca_sdk/cli/run.py +4 -2
  16. mca_sdk-0.9.7/mca_sdk/cli/verify.py +226 -0
  17. mca_sdk-0.9.7/mca_sdk/compatibility.py +47 -0
  18. {mca_sdk-0.9.4.dev1 → mca_sdk-0.9.7}/mca_sdk/config/settings.py +79 -7
  19. {mca_sdk-0.9.4.dev1 → mca_sdk-0.9.7}/mca_sdk/core/client.py +761 -41
  20. {mca_sdk-0.9.4.dev1 → mca_sdk-0.9.7}/mca_sdk/core/providers.py +81 -0
  21. mca_sdk-0.9.7/mca_sdk/instrumentation/__init__.py +1 -0
  22. mca_sdk-0.9.7/mca_sdk/instrumentation/adk_poc.py +193 -0
  23. mca_sdk-0.9.7/mca_sdk/instrumentation/litellm/__init__.py +4 -0
  24. mca_sdk-0.9.7/mca_sdk/instrumentation/litellm/instrumentor.py +379 -0
  25. mca_sdk-0.9.7/mca_sdk/instrumentation/litellm/package.py +2 -0
  26. mca_sdk-0.9.7/mca_sdk/instrumentation/litellm/version.py +2 -0
  27. mca_sdk-0.9.7/mca_sdk/integrations/__init__.py +112 -0
  28. mca_sdk-0.9.7/mca_sdk/integrations/_autoregister.py +180 -0
  29. {mca_sdk-0.9.4.dev1 → mca_sdk-0.9.7}/mca_sdk/integrations/_genai_attrs.py +109 -14
  30. mca_sdk-0.9.7/mca_sdk/integrations/airflow.py +192 -0
  31. {mca_sdk-0.9.4.dev1 → mca_sdk-0.9.7}/mca_sdk/integrations/decorators.py +71 -52
  32. {mca_sdk-0.9.4.dev1 → mca_sdk-0.9.7}/mca_sdk/integrations/genai.py +97 -49
  33. mca_sdk-0.9.7/mca_sdk/integrations/kubeflow.py +134 -0
  34. {mca_sdk-0.9.4.dev1 → mca_sdk-0.9.7}/mca_sdk/integrations/langchain_callback.py +108 -84
  35. {mca_sdk-0.9.4.dev1 → mca_sdk-0.9.7}/mca_sdk/integrations/litellm_callback.py +25 -21
  36. {mca_sdk-0.9.4.dev1 → mca_sdk-0.9.7}/mca_sdk/integrations/llamaindex_callback.py +71 -31
  37. {mca_sdk-0.9.4.dev1 → mca_sdk-0.9.7}/mca_sdk/integrations/state.py +8 -4
  38. mca_sdk-0.9.7/mca_sdk/magics/__init__.py +112 -0
  39. {mca_sdk-0.9.4.dev1 → mca_sdk-0.9.7}/mca_sdk/registry/client.py +104 -4
  40. {mca_sdk-0.9.4.dev1 → mca_sdk-0.9.7}/mca_sdk/registry/models.py +38 -0
  41. {mca_sdk-0.9.4.dev1 → mca_sdk-0.9.7}/mca_sdk/registry/telemetry.py +38 -0
  42. {mca_sdk-0.9.4.dev1 → mca_sdk-0.9.7}/mca_sdk/security/secret_filter.py +142 -43
  43. {mca_sdk-0.9.4.dev1 → mca_sdk-0.9.7}/mca_sdk/utils/exceptions.py +92 -0
  44. mca_sdk-0.9.7/mca_sdk/utils/network.py +90 -0
  45. mca_sdk-0.9.7/mca_sdk/validation/baseline.py +401 -0
  46. mca_sdk-0.9.7/mca_sdk/validation/observation_buffer.py +309 -0
  47. {mca_sdk-0.9.4.dev1 → mca_sdk-0.9.7/mca_sdk.egg-info}/PKG-INFO +12 -5
  48. {mca_sdk-0.9.4.dev1 → mca_sdk-0.9.7}/mca_sdk.egg-info/SOURCES.txt +32 -0
  49. {mca_sdk-0.9.4.dev1 → mca_sdk-0.9.7}/mca_sdk.egg-info/entry_points.txt +1 -0
  50. {mca_sdk-0.9.4.dev1 → mca_sdk-0.9.7}/mca_sdk.egg-info/requires.txt +4 -0
  51. {mca_sdk-0.9.4.dev1 → mca_sdk-0.9.7}/mca_sdk.egg-info/scm_file_list.json +595 -563
  52. mca_sdk-0.9.7/mca_sdk.egg-info/scm_version.json +8 -0
  53. {mca_sdk-0.9.4.dev1 → mca_sdk-0.9.7}/pyproject.toml +5 -1
  54. {mca_sdk-0.9.4.dev1 → mca_sdk-0.9.7}/pytest.ini +14 -0
  55. {mca_sdk-0.9.4.dev1 → mca_sdk-0.9.7}/sdk-examples/internal-agentic/Dockerfile +29 -1
  56. {mca_sdk-0.9.4.dev1 → mca_sdk-0.9.7}/sdk-examples/internal-agentic/agent_instrumented.py +7 -0
  57. {mca_sdk-0.9.4.dev1 → mca_sdk-0.9.7}/sdk-examples/internal-genai/Dockerfile +29 -1
  58. {mca_sdk-0.9.4.dev1 → mca_sdk-0.9.7}/sdk-examples/internal-genai/litellm_instrumented.py +16 -4
  59. {mca_sdk-0.9.4.dev1 → mca_sdk-0.9.7}/sdk-examples/internal-model/Dockerfile +29 -1
  60. {mca_sdk-0.9.4.dev1 → mca_sdk-0.9.7}/sdk-examples/internal-model/instrumented_model.py +7 -0
  61. {mca_sdk-0.9.4.dev1 → mca_sdk-0.9.7}/sdk-examples/rest-api-various-vendors.py +31 -24
  62. {mca_sdk-0.9.4.dev1 → mca_sdk-0.9.7}/sdk-examples/rest-api-wrapper-example.py +28 -43
  63. {mca_sdk-0.9.4.dev1 → mca_sdk-0.9.7}/sdk-examples/shared/__init__.py +2 -0
  64. mca_sdk-0.9.7/sdk-examples/shared/smoke_test.py +56 -0
  65. {mca_sdk-0.9.4.dev1 → mca_sdk-0.9.7}/sdk-examples/vendor-bridge/Dockerfile +24 -0
  66. {mca_sdk-0.9.4.dev1 → mca_sdk-0.9.7}/setup.py +29 -0
  67. {mca_sdk-0.9.4.dev1 → mca_sdk-0.9.7}/test-requirements.txt +2 -0
  68. mca_sdk-0.9.7/tests/integration/test_baseline_verify_e2e.py +95 -0
  69. mca_sdk-0.9.7/tests/integration/test_litellm_zero_code.py +45 -0
  70. {mca_sdk-0.9.4.dev1 → mca_sdk-0.9.7}/tests/security/test_secret_masking.py +423 -7
  71. mca_sdk-0.9.7/tests/unit/test_adk_poc.py +130 -0
  72. mca_sdk-0.9.7/tests/unit/test_airflow_integration.py +140 -0
  73. {mca_sdk-0.9.4.dev1 → mca_sdk-0.9.7}/tests/unit/test_autolog_anthropic.py +7 -4
  74. {mca_sdk-0.9.4.dev1 → mca_sdk-0.9.7}/tests/unit/test_autolog_base_extra.py +114 -0
  75. {mca_sdk-0.9.4.dev1 → mca_sdk-0.9.7}/tests/unit/test_autolog_lightgbm.py +106 -0
  76. {mca_sdk-0.9.4.dev1 → mca_sdk-0.9.7}/tests/unit/test_autolog_openai.py +21 -0
  77. {mca_sdk-0.9.4.dev1 → mca_sdk-0.9.7}/tests/unit/test_autolog_sklearn.py +102 -2
  78. {mca_sdk-0.9.4.dev1 → mca_sdk-0.9.7}/tests/unit/test_autolog_validation.py +8 -2
  79. {mca_sdk-0.9.4.dev1 → mca_sdk-0.9.7}/tests/unit/test_autolog_xgboost.py +81 -2
  80. mca_sdk-0.9.7/tests/unit/test_autoregister.py +173 -0
  81. mca_sdk-0.9.7/tests/unit/test_baseline_verify.py +325 -0
  82. mca_sdk-0.9.7/tests/unit/test_baseline_verify_phi.py +139 -0
  83. {mca_sdk-0.9.4.dev1 → mca_sdk-0.9.7}/tests/unit/test_buffering_queue_helpers.py +1 -0
  84. mca_sdk-0.9.7/tests/unit/test_cli_verify.py +127 -0
  85. {mca_sdk-0.9.4.dev1 → mca_sdk-0.9.7}/tests/unit/test_client_core.py +188 -0
  86. {mca_sdk-0.9.4.dev1 → mca_sdk-0.9.7}/tests/unit/test_config_precedence.py +36 -18
  87. {mca_sdk-0.9.4.dev1 → mca_sdk-0.9.7}/tests/unit/test_config_security.py +20 -10
  88. {mca_sdk-0.9.4.dev1 → mca_sdk-0.9.7}/tests/unit/test_config_settings.py +5 -1
  89. {mca_sdk-0.9.4.dev1 → mca_sdk-0.9.7}/tests/unit/test_coverage_boost.py +3 -1
  90. mca_sdk-0.9.7/tests/unit/test_for_ai_assistants_doc_lint.py +446 -0
  91. {mca_sdk-0.9.4.dev1 → mca_sdk-0.9.7}/tests/unit/test_gcp_registry_integration.py +9 -2
  92. {mca_sdk-0.9.4.dev1 → mca_sdk-0.9.7}/tests/unit/test_genai_attrs.py +48 -4
  93. {mca_sdk-0.9.4.dev1 → mca_sdk-0.9.7}/tests/unit/test_genai_helpers.py +210 -6
  94. {mca_sdk-0.9.4.dev1 → mca_sdk-0.9.7}/tests/unit/test_genai_metric_naming.py +105 -6
  95. mca_sdk-0.9.7/tests/unit/test_kubeflow_hook.py +162 -0
  96. {mca_sdk-0.9.4.dev1 → mca_sdk-0.9.7}/tests/unit/test_langchain_callback.py +304 -25
  97. {mca_sdk-0.9.4.dev1 → mca_sdk-0.9.7}/tests/unit/test_litellm_callback.py +86 -11
  98. mca_sdk-0.9.7/tests/unit/test_litellm_instrumentor.py +447 -0
  99. {mca_sdk-0.9.4.dev1 → mca_sdk-0.9.7}/tests/unit/test_litellm_model_id_parity.py +9 -1
  100. {mca_sdk-0.9.4.dev1 → mca_sdk-0.9.7}/tests/unit/test_llamaindex_callback.py +77 -1
  101. mca_sdk-0.9.7/tests/unit/test_llm_generation.py +318 -0
  102. mca_sdk-0.9.7/tests/unit/test_magics.py +107 -0
  103. {mca_sdk-0.9.4.dev1 → mca_sdk-0.9.7}/tests/unit/test_mca_client.py +223 -0
  104. mca_sdk-0.9.7/tests/unit/test_observation_buffer.py +137 -0
  105. mca_sdk-0.9.7/tests/unit/test_predictive_counter_cumulative.py +130 -0
  106. {mca_sdk-0.9.4.dev1 → mca_sdk-0.9.7}/tests/unit/test_registry_hydration.py +1 -0
  107. mca_sdk-0.9.7/tests/unit/test_registry_rfc1918_softdefault.py +223 -0
  108. mca_sdk-0.9.7/tests/unit/test_sdk_version_pin.py +736 -0
  109. {mca_sdk-0.9.4.dev1 → mca_sdk-0.9.7}/tests/unit/test_secure_token_handling.py +16 -8
  110. {mca_sdk-0.9.4.dev1 → mca_sdk-0.9.7}/tests/unit/test_temporality_resolver.py +82 -0
  111. mca_sdk-0.9.4.dev1/mca_sdk/FOR_AI_ASSISTANTS.md +0 -552
  112. mca_sdk-0.9.4.dev1/mca_sdk/integrations/__init__.py +0 -65
  113. mca_sdk-0.9.4.dev1/mca_sdk.egg-info/scm_version.json +0 -8
  114. mca_sdk-0.9.4.dev1/tests/unit/test_llm_generation.py +0 -119
  115. {mca_sdk-0.9.4.dev1 → mca_sdk-0.9.7}/.coveragerc +0 -0
  116. {mca_sdk-0.9.4.dev1 → mca_sdk-0.9.7}/.dockerignore +0 -0
  117. {mca_sdk-0.9.4.dev1 → mca_sdk-0.9.7}/.env.gcp-dev.example +0 -0
  118. {mca_sdk-0.9.4.dev1 → mca_sdk-0.9.7}/.gitignore +0 -0
  119. {mca_sdk-0.9.4.dev1 → mca_sdk-0.9.7}/.pip-audit-allowlist.txt +0 -0
  120. {mca_sdk-0.9.4.dev1 → mca_sdk-0.9.7}/.pypirc +0 -0
  121. {mca_sdk-0.9.4.dev1 → mca_sdk-0.9.7}/44.0.0 +0 -0
  122. {mca_sdk-0.9.4.dev1 → mca_sdk-0.9.7}/=0.24.0 +0 -0
  123. {mca_sdk-0.9.4.dev1 → mca_sdk-0.9.7}/=0.6.0 +0 -0
  124. {mca_sdk-0.9.4.dev1 → mca_sdk-0.9.7}/=1.11.0 +0 -0
  125. {mca_sdk-0.9.4.dev1 → mca_sdk-0.9.7}/=1.4.0 +0 -0
  126. {mca_sdk-0.9.4.dev1 → mca_sdk-0.9.7}/=2.2.0 +0 -0
  127. {mca_sdk-0.9.4.dev1 → mca_sdk-0.9.7}/=3.5.0 +0 -0
  128. {mca_sdk-0.9.4.dev1 → mca_sdk-0.9.7}/LICENSE +0 -0
  129. {mca_sdk-0.9.4.dev1 → mca_sdk-0.9.7}/MANIFEST.in +0 -0
  130. {mca_sdk-0.9.4.dev1 → mca_sdk-0.9.7}/PUBLISH_INSTRUCTIONS.md +0 -0
  131. {mca_sdk-0.9.4.dev1 → mca_sdk-0.9.7}/RELEASE_NOTES_v0.8.10.md +0 -0
  132. {mca_sdk-0.9.4.dev1 → mca_sdk-0.9.7}/RELEASE_NOTES_v0.8.21.md +0 -0
  133. {mca_sdk-0.9.4.dev1 → mca_sdk-0.9.7}/RELEASE_NOTES_v0.8.22.md +0 -0
  134. {mca_sdk-0.9.4.dev1 → mca_sdk-0.9.7}/RELEASE_NOTES_v0.8.30.md +0 -0
  135. {mca_sdk-0.9.4.dev1 → mca_sdk-0.9.7}/bandit-report.json +0 -0
  136. {mca_sdk-0.9.4.dev1 → mca_sdk-0.9.7}/baseline_report.txt +0 -0
  137. {mca_sdk-0.9.4.dev1 → mca_sdk-0.9.7}/config/docs/collector-metrics-guide.md +0 -0
  138. {mca_sdk-0.9.4.dev1 → mca_sdk-0.9.7}/config/examples/README.md +0 -0
  139. {mca_sdk-0.9.4.dev1 → mca_sdk-0.9.7}/config/examples/test-health-check.py +0 -0
  140. {mca_sdk-0.9.4.dev1 → mca_sdk-0.9.7}/config/otel-collector-config.yaml +0 -0
  141. {mca_sdk-0.9.4.dev1 → mca_sdk-0.9.7}/config/otel-collector-mock.yml +0 -0
  142. {mca_sdk-0.9.4.dev1 → mca_sdk-0.9.7}/docker-compose.gcp-dev.yml +0 -0
  143. {mca_sdk-0.9.4.dev1 → mca_sdk-0.9.7}/docker-compose.mock.yml +0 -0
  144. {mca_sdk-0.9.4.dev1 → mca_sdk-0.9.7}/docker-compose.yml +0 -0
  145. {mca_sdk-0.9.4.dev1 → mca_sdk-0.9.7}/fix.py +0 -0
  146. {mca_sdk-0.9.4.dev1 → mca_sdk-0.9.7}/fix_agentic_tests.py +0 -0
  147. {mca_sdk-0.9.4.dev1 → mca_sdk-0.9.7}/fix_agentic_tests2.py +0 -0
  148. {mca_sdk-0.9.4.dev1 → mca_sdk-0.9.7}/fix_test_basic.py +0 -0
  149. {mca_sdk-0.9.4.dev1 → mca_sdk-0.9.7}/mca/Dockerfile +0 -0
  150. {mca_sdk-0.9.4.dev1 → mca_sdk-0.9.7}/mca-sdk-go/EXAMPLES.md +0 -0
  151. {mca_sdk-0.9.4.dev1 → mca_sdk-0.9.7}/mca-sdk-go/KNOWN_ISSUES.md +0 -0
  152. {mca_sdk-0.9.4.dev1 → mca_sdk-0.9.7}/mca-sdk-go/README.md +0 -0
  153. {mca_sdk-0.9.4.dev1 → mca_sdk-0.9.7}/mca-sdk-go/TESTING_WORKBENCH.md +0 -0
  154. {mca_sdk-0.9.4.dev1 → mca_sdk-0.9.7}/mca-sdk-go/client.go +0 -0
  155. {mca_sdk-0.9.4.dev1 → mca_sdk-0.9.7}/mca-sdk-go/client_test.go +0 -0
  156. {mca_sdk-0.9.4.dev1 → mca_sdk-0.9.7}/mca-sdk-go/config/config.go +0 -0
  157. {mca_sdk-0.9.4.dev1 → mca_sdk-0.9.7}/mca-sdk-go/config/config_test.go +0 -0
  158. {mca_sdk-0.9.4.dev1 → mca_sdk-0.9.7}/mca-sdk-go/genai.go +0 -0
  159. {mca_sdk-0.9.4.dev1 → mca_sdk-0.9.7}/mca-sdk-go/genai_test.go +0 -0
  160. {mca_sdk-0.9.4.dev1 → mca_sdk-0.9.7}/mca-sdk-go/go.mod +0 -0
  161. {mca_sdk-0.9.4.dev1 → mca_sdk-0.9.7}/mca-sdk-go/go.sum +0 -0
  162. {mca_sdk-0.9.4.dev1 → mca_sdk-0.9.7}/mca-sdk-go/internal/telemetry/providers.go +0 -0
  163. {mca_sdk-0.9.4.dev1 → mca_sdk-0.9.7}/mca-sdk-go/prediction.go +0 -0
  164. {mca_sdk-0.9.4.dev1 → mca_sdk-0.9.7}/mca-sdk-go/quickstart.sh +0 -0
  165. {mca_sdk-0.9.4.dev1 → mca_sdk-0.9.7}/mca-sdk-go/registry.go +0 -0
  166. {mca_sdk-0.9.4.dev1 → mca_sdk-0.9.7}/mca-sdk-go/sanitization.go +0 -0
  167. {mca_sdk-0.9.4.dev1 → mca_sdk-0.9.7}/mca-sdk-go/sanitization_test.go +0 -0
  168. {mca_sdk-0.9.4.dev1 → mca_sdk-0.9.7}/mca-sdk-go/scripts/gen-godoc.sh +0 -0
  169. {mca_sdk-0.9.4.dev1 → mca_sdk-0.9.7}/mca-sdk-go/utils.go +0 -0
  170. {mca_sdk-0.9.4.dev1 → mca_sdk-0.9.7}/mca-sdk-go/utils_test.go +0 -0
  171. {mca_sdk-0.9.4.dev1 → mca_sdk-0.9.7}/mca-sdk-go/version.go +0 -0
  172. {mca_sdk-0.9.4.dev1 → mca_sdk-0.9.7}/mca-sdk-java/.gitignore +0 -0
  173. {mca_sdk-0.9.4.dev1 → mca_sdk-0.9.7}/mca-sdk-java/CHANGELOG.md +0 -0
  174. {mca_sdk-0.9.4.dev1 → mca_sdk-0.9.7}/mca-sdk-java/LICENSE +0 -0
  175. {mca_sdk-0.9.4.dev1 → mca_sdk-0.9.7}/mca-sdk-java/README.md +0 -0
  176. {mca_sdk-0.9.4.dev1 → mca_sdk-0.9.7}/mca-sdk-java/TESTING_WORKBENCH.md +0 -0
  177. {mca_sdk-0.9.4.dev1 → mca_sdk-0.9.7}/mca-sdk-java/VALIDATION_GUIDE.md +0 -0
  178. {mca_sdk-0.9.4.dev1 → mca_sdk-0.9.7}/mca-sdk-java/examples/AdvancedInstrumentationExample.java +0 -0
  179. {mca_sdk-0.9.4.dev1 → mca_sdk-0.9.7}/mca-sdk-java/examples/GCPExporterExample.java +0 -0
  180. {mca_sdk-0.9.4.dev1 → mca_sdk-0.9.7}/mca-sdk-java/examples/InternalModelExample.java +0 -0
  181. {mca_sdk-0.9.4.dev1 → mca_sdk-0.9.7}/mca-sdk-java/pom.xml +0 -0
  182. {mca_sdk-0.9.4.dev1 → mca_sdk-0.9.7}/mca-sdk-java/scripts/publish.sh +0 -0
  183. {mca_sdk-0.9.4.dev1 → mca_sdk-0.9.7}/mca-sdk-java/scripts/test-dependency.sh +0 -0
  184. {mca_sdk-0.9.4.dev1 → mca_sdk-0.9.7}/mca-sdk-java/scripts/verify-package.sh +0 -0
  185. {mca_sdk-0.9.4.dev1 → mca_sdk-0.9.7}/mca-sdk-java/src/main/java/com/bhsf/mca/sdk/MCAClient.java +0 -0
  186. {mca_sdk-0.9.4.dev1 → mca_sdk-0.9.7}/mca-sdk-java/src/main/java/com/bhsf/mca/sdk/RecordPredictionRequest.java +0 -0
  187. {mca_sdk-0.9.4.dev1 → mca_sdk-0.9.7}/mca-sdk-java/src/main/java/com/bhsf/mca/sdk/config/ConfigLoader.java +0 -0
  188. {mca_sdk-0.9.4.dev1 → mca_sdk-0.9.7}/mca-sdk-java/src/main/java/com/bhsf/mca/sdk/config/ConfigSource.java +0 -0
  189. {mca_sdk-0.9.4.dev1 → mca_sdk-0.9.7}/mca-sdk-java/src/main/java/com/bhsf/mca/sdk/config/MCAConfig.java +0 -0
  190. {mca_sdk-0.9.4.dev1 → mca_sdk-0.9.7}/mca-sdk-java/src/main/java/com/bhsf/mca/sdk/config/YamlConfigParser.java +0 -0
  191. {mca_sdk-0.9.4.dev1 → mca_sdk-0.9.7}/mca-sdk-java/src/main/java/com/bhsf/mca/sdk/exceptions/BufferingException.java +0 -0
  192. {mca_sdk-0.9.4.dev1 → mca_sdk-0.9.7}/mca-sdk-java/src/main/java/com/bhsf/mca/sdk/exceptions/ConfigNotFoundException.java +0 -0
  193. {mca_sdk-0.9.4.dev1 → mca_sdk-0.9.7}/mca-sdk-java/src/main/java/com/bhsf/mca/sdk/exceptions/ConfigurationException.java +0 -0
  194. {mca_sdk-0.9.4.dev1 → mca_sdk-0.9.7}/mca-sdk-java/src/main/java/com/bhsf/mca/sdk/exceptions/MCAException.java +0 -0
  195. {mca_sdk-0.9.4.dev1 → mca_sdk-0.9.7}/mca-sdk-java/src/main/java/com/bhsf/mca/sdk/exceptions/NonRetryableException.java +0 -0
  196. {mca_sdk-0.9.4.dev1 → mca_sdk-0.9.7}/mca-sdk-java/src/main/java/com/bhsf/mca/sdk/exceptions/RegistryAuthException.java +0 -0
  197. {mca_sdk-0.9.4.dev1 → mca_sdk-0.9.7}/mca-sdk-java/src/main/java/com/bhsf/mca/sdk/exceptions/RegistryConfigNotFoundException.java +0 -0
  198. {mca_sdk-0.9.4.dev1 → mca_sdk-0.9.7}/mca-sdk-java/src/main/java/com/bhsf/mca/sdk/exceptions/RegistryConnectionException.java +0 -0
  199. {mca_sdk-0.9.4.dev1 → mca_sdk-0.9.7}/mca-sdk-java/src/main/java/com/bhsf/mca/sdk/exceptions/RegistryException.java +0 -0
  200. {mca_sdk-0.9.4.dev1 → mca_sdk-0.9.7}/mca-sdk-java/src/main/java/com/bhsf/mca/sdk/exceptions/ValidationException.java +0 -0
  201. {mca_sdk-0.9.4.dev1 → mca_sdk-0.9.7}/mca-sdk-java/src/main/java/com/bhsf/mca/sdk/exporters/GCPLoggingExporterFactory.java +0 -0
  202. {mca_sdk-0.9.4.dev1 → mca_sdk-0.9.7}/mca-sdk-java/src/main/java/com/bhsf/mca/sdk/exporters/GCPLoggingExporterImpl.java +0 -0
  203. {mca_sdk-0.9.4.dev1 → mca_sdk-0.9.7}/mca-sdk-java/src/main/java/com/bhsf/mca/sdk/exporters/GCPTraceExporterFactory.java +0 -0
  204. {mca_sdk-0.9.4.dev1 → mca_sdk-0.9.7}/mca-sdk-java/src/main/java/com/bhsf/mca/sdk/exporters/GCPTraceExporterImpl.java +0 -0
  205. {mca_sdk-0.9.4.dev1 → mca_sdk-0.9.7}/mca-sdk-java/src/main/java/com/bhsf/mca/sdk/gcp/GCPAuthFactory.java +0 -0
  206. {mca_sdk-0.9.4.dev1 → mca_sdk-0.9.7}/mca-sdk-java/src/main/java/com/bhsf/mca/sdk/gcp/GCPAuthImpl.java +0 -0
  207. {mca_sdk-0.9.4.dev1 → mca_sdk-0.9.7}/mca-sdk-java/src/main/java/com/bhsf/mca/sdk/instrumentation/MetricRouter.java +0 -0
  208. {mca_sdk-0.9.4.dev1 → mca_sdk-0.9.7}/mca-sdk-java/src/main/java/com/bhsf/mca/sdk/instrumentation/SpanManager.java +0 -0
  209. {mca_sdk-0.9.4.dev1 → mca_sdk-0.9.7}/mca-sdk-java/src/main/java/com/bhsf/mca/sdk/integrations/AgenticTracking.java +0 -0
  210. {mca_sdk-0.9.4.dev1 → mca_sdk-0.9.7}/mca-sdk-java/src/main/java/com/bhsf/mca/sdk/integrations/GenAIIntegration.java +0 -0
  211. {mca_sdk-0.9.4.dev1 → mca_sdk-0.9.7}/mca-sdk-java/src/main/java/com/bhsf/mca/sdk/integrations/TelemetryAttributeUtil.java +0 -0
  212. {mca_sdk-0.9.4.dev1 → mca_sdk-0.9.7}/mca-sdk-java/src/main/java/com/bhsf/mca/sdk/providers/TelemetryProviders.java +0 -0
  213. {mca_sdk-0.9.4.dev1 → mca_sdk-0.9.7}/mca-sdk-java/src/main/java/com/bhsf/mca/sdk/registry/RegistryClient.java +0 -0
  214. {mca_sdk-0.9.4.dev1 → mca_sdk-0.9.7}/mca-sdk-java/src/main/java/com/bhsf/mca/sdk/registry/RegistryTelemetry.java +0 -0
  215. {mca_sdk-0.9.4.dev1 → mca_sdk-0.9.7}/mca-sdk-java/src/main/java/com/bhsf/mca/sdk/registry/RetryPolicy.java +0 -0
  216. {mca_sdk-0.9.4.dev1 → mca_sdk-0.9.7}/mca-sdk-java/src/main/java/com/bhsf/mca/sdk/registry/models/CacheEntry.java +0 -0
  217. {mca_sdk-0.9.4.dev1 → mca_sdk-0.9.7}/mca-sdk-java/src/main/java/com/bhsf/mca/sdk/registry/models/DeploymentConfig.java +0 -0
  218. {mca_sdk-0.9.4.dev1 → mca_sdk-0.9.7}/mca-sdk-java/src/main/java/com/bhsf/mca/sdk/registry/models/ModelConfig.java +0 -0
  219. {mca_sdk-0.9.4.dev1 → mca_sdk-0.9.7}/mca-sdk-java/src/main/java/com/bhsf/mca/sdk/resilience/CircuitBreaker.java +0 -0
  220. {mca_sdk-0.9.4.dev1 → mca_sdk-0.9.7}/mca-sdk-java/src/main/java/com/bhsf/mca/sdk/resilience/DeadLetterQueue.java +0 -0
  221. {mca_sdk-0.9.4.dev1 → mca_sdk-0.9.7}/mca-sdk-java/src/main/java/com/bhsf/mca/sdk/resilience/ResilienceException.java +0 -0
  222. {mca_sdk-0.9.4.dev1 → mca_sdk-0.9.7}/mca-sdk-java/src/main/java/com/bhsf/mca/sdk/resilience/RetryPolicy.java +0 -0
  223. {mca_sdk-0.9.4.dev1 → mca_sdk-0.9.7}/mca-sdk-java/src/main/java/com/bhsf/mca/sdk/resilience/TelemetryQueue.java +0 -0
  224. {mca_sdk-0.9.4.dev1 → mca_sdk-0.9.7}/mca-sdk-java/src/main/java/com/bhsf/mca/sdk/security/CertificateException.java +0 -0
  225. {mca_sdk-0.9.4.dev1 → mca_sdk-0.9.7}/mca-sdk-java/src/main/java/com/bhsf/mca/sdk/security/CertificateExpiredException.java +0 -0
  226. {mca_sdk-0.9.4.dev1 → mca_sdk-0.9.7}/mca-sdk-java/src/main/java/com/bhsf/mca/sdk/security/CertificateLoadException.java +0 -0
  227. {mca_sdk-0.9.4.dev1 → mca_sdk-0.9.7}/mca-sdk-java/src/main/java/com/bhsf/mca/sdk/security/CertificateManager.java +0 -0
  228. {mca_sdk-0.9.4.dev1 → mca_sdk-0.9.7}/mca-sdk-java/src/main/java/com/bhsf/mca/sdk/security/CertificateValidationException.java +0 -0
  229. {mca_sdk-0.9.4.dev1 → mca_sdk-0.9.7}/mca-sdk-java/src/main/java/com/bhsf/mca/sdk/security/CredentialMasking.java +0 -0
  230. {mca_sdk-0.9.4.dev1 → mca_sdk-0.9.7}/mca-sdk-java/src/main/java/com/bhsf/mca/sdk/security/EncryptionManager.java +0 -0
  231. {mca_sdk-0.9.4.dev1 → mca_sdk-0.9.7}/mca-sdk-java/src/main/java/com/bhsf/mca/sdk/security/GcpSecretProvider.java +0 -0
  232. {mca_sdk-0.9.4.dev1 → mca_sdk-0.9.7}/mca-sdk-java/src/main/java/com/bhsf/mca/sdk/security/QueueEncryption.java +0 -0
  233. {mca_sdk-0.9.4.dev1 → mca_sdk-0.9.7}/mca-sdk-java/src/main/java/com/bhsf/mca/sdk/security/SecretManager.java +0 -0
  234. {mca_sdk-0.9.4.dev1 → mca_sdk-0.9.7}/mca-sdk-java/src/main/java/com/bhsf/mca/sdk/security/SecurityException.java +0 -0
  235. {mca_sdk-0.9.4.dev1 → mca_sdk-0.9.7}/mca-sdk-java/src/main/java/com/bhsf/mca/sdk/util/Serialization.java +0 -0
  236. {mca_sdk-0.9.4.dev1 → mca_sdk-0.9.7}/mca-sdk-java/src/main/java/com/bhsf/mca/sdk/util/StringUtils.java +0 -0
  237. {mca_sdk-0.9.4.dev1 → mca_sdk-0.9.7}/mca-sdk-java/src/main/java/com/bhsf/mca/sdk/util/VersionCheck.java +0 -0
  238. {mca_sdk-0.9.4.dev1 → mca_sdk-0.9.7}/mca-sdk-java/src/main/java/com/bhsf/mca/sdk/validation/AttributeValidator.java +0 -0
  239. {mca_sdk-0.9.4.dev1 → mca_sdk-0.9.7}/mca-sdk-java/src/main/java/com/bhsf/mca/sdk/validation/MetricNamingValidator.java +0 -0
  240. {mca_sdk-0.9.4.dev1 → mca_sdk-0.9.7}/mca-sdk-java/src/main/java/com/bhsf/mca/sdk/validation/TelemetryAttributeValidator.java +0 -0
  241. {mca_sdk-0.9.4.dev1 → mca_sdk-0.9.7}/mca-sdk-java/src/main/java/com/bhsf/mca/sdk/validation/ValidationResult.java +0 -0
  242. {mca_sdk-0.9.4.dev1 → mca_sdk-0.9.7}/mca-sdk-java/src/main/java/com/bhsf/mca/sdk/validation/ValidationRules.java +0 -0
  243. {mca_sdk-0.9.4.dev1 → mca_sdk-0.9.7}/mca-sdk-java/src/main/java/examples/InternalModelExample.java +0 -0
  244. {mca_sdk-0.9.4.dev1 → mca_sdk-0.9.7}/mca-sdk-java/src/test/java/com/bhsf/mca/sdk/MCAClientInstrumentationTest.java +0 -0
  245. {mca_sdk-0.9.4.dev1 → mca_sdk-0.9.7}/mca-sdk-java/src/test/java/com/bhsf/mca/sdk/MCAClientTest.java +0 -0
  246. {mca_sdk-0.9.4.dev1 → mca_sdk-0.9.7}/mca-sdk-java/src/test/java/com/bhsf/mca/sdk/RecordPredictionTest.java +0 -0
  247. {mca_sdk-0.9.4.dev1 → mca_sdk-0.9.7}/mca-sdk-java/src/test/java/com/bhsf/mca/sdk/config/ConfigLoaderTest.java +0 -0
  248. {mca_sdk-0.9.4.dev1 → mca_sdk-0.9.7}/mca-sdk-java/src/test/java/com/bhsf/mca/sdk/exceptions/BufferingExceptionTest.java +0 -0
  249. {mca_sdk-0.9.4.dev1 → mca_sdk-0.9.7}/mca-sdk-java/src/test/java/com/bhsf/mca/sdk/exceptions/ConfigNotFoundExceptionTest.java +0 -0
  250. {mca_sdk-0.9.4.dev1 → mca_sdk-0.9.7}/mca-sdk-java/src/test/java/com/bhsf/mca/sdk/exceptions/ExceptionHierarchyTest.java +0 -0
  251. {mca_sdk-0.9.4.dev1 → mca_sdk-0.9.7}/mca-sdk-java/src/test/java/com/bhsf/mca/sdk/exceptions/MCAExceptionTest.java +0 -0
  252. {mca_sdk-0.9.4.dev1 → mca_sdk-0.9.7}/mca-sdk-java/src/test/java/com/bhsf/mca/sdk/exporters/GCPExportersTest.java +0 -0
  253. {mca_sdk-0.9.4.dev1 → mca_sdk-0.9.7}/mca-sdk-java/src/test/java/com/bhsf/mca/sdk/gcp/GCPAuthTest.java +0 -0
  254. {mca_sdk-0.9.4.dev1 → mca_sdk-0.9.7}/mca-sdk-java/src/test/java/com/bhsf/mca/sdk/instrumentation/MetricRouterTest.java +0 -0
  255. {mca_sdk-0.9.4.dev1 → mca_sdk-0.9.7}/mca-sdk-java/src/test/java/com/bhsf/mca/sdk/instrumentation/SpanManagerTest.java +0 -0
  256. {mca_sdk-0.9.4.dev1 → mca_sdk-0.9.7}/mca-sdk-java/src/test/java/com/bhsf/mca/sdk/integrations/AdversarialReviewFixesTest.java +0 -0
  257. {mca_sdk-0.9.4.dev1 → mca_sdk-0.9.7}/mca-sdk-java/src/test/java/com/bhsf/mca/sdk/integrations/AgenticTrackingTest.java +0 -0
  258. {mca_sdk-0.9.4.dev1 → mca_sdk-0.9.7}/mca-sdk-java/src/test/java/com/bhsf/mca/sdk/integrations/GenAIIntegrationTest.java +0 -0
  259. {mca_sdk-0.9.4.dev1 → mca_sdk-0.9.7}/mca-sdk-java/src/test/java/com/bhsf/mca/sdk/integrations/IntegrationTest.java +0 -0
  260. {mca_sdk-0.9.4.dev1 → mca_sdk-0.9.7}/mca-sdk-java/src/test/java/com/bhsf/mca/sdk/integrations/TelemetryAttributeUtilTest.java +0 -0
  261. {mca_sdk-0.9.4.dev1 → mca_sdk-0.9.7}/mca-sdk-java/src/test/java/com/bhsf/mca/sdk/registry/RegistryClientTest.java +0 -0
  262. {mca_sdk-0.9.4.dev1 → mca_sdk-0.9.7}/mca-sdk-java/src/test/java/com/bhsf/mca/sdk/registry/RetryPolicyTest.java +0 -0
  263. {mca_sdk-0.9.4.dev1 → mca_sdk-0.9.7}/mca-sdk-java/src/test/java/com/bhsf/mca/sdk/registry/models/CacheEntryTest.java +0 -0
  264. {mca_sdk-0.9.4.dev1 → mca_sdk-0.9.7}/mca-sdk-java/src/test/java/com/bhsf/mca/sdk/registry/models/ModelConfigTest.java +0 -0
  265. {mca_sdk-0.9.4.dev1 → mca_sdk-0.9.7}/mca-sdk-java/src/test/java/com/bhsf/mca/sdk/resilience/CircuitBreakerTest.java +0 -0
  266. {mca_sdk-0.9.4.dev1 → mca_sdk-0.9.7}/mca-sdk-java/src/test/java/com/bhsf/mca/sdk/resilience/DeadLetterQueueTest.java +0 -0
  267. {mca_sdk-0.9.4.dev1 → mca_sdk-0.9.7}/mca-sdk-java/src/test/java/com/bhsf/mca/sdk/resilience/RetryPolicyTest.java +0 -0
  268. {mca_sdk-0.9.4.dev1 → mca_sdk-0.9.7}/mca-sdk-java/src/test/java/com/bhsf/mca/sdk/resilience/TelemetryQueueTest.java +0 -0
  269. {mca_sdk-0.9.4.dev1 → mca_sdk-0.9.7}/mca-sdk-java/src/test/java/com/bhsf/mca/sdk/security/CertificateExceptionsTest.java +0 -0
  270. {mca_sdk-0.9.4.dev1 → mca_sdk-0.9.7}/mca-sdk-java/src/test/java/com/bhsf/mca/sdk/security/CertificateManagerTest.java +0 -0
  271. {mca_sdk-0.9.4.dev1 → mca_sdk-0.9.7}/mca-sdk-java/src/test/java/com/bhsf/mca/sdk/security/CredentialMaskingTest.java +0 -0
  272. {mca_sdk-0.9.4.dev1 → mca_sdk-0.9.7}/mca-sdk-java/src/test/java/com/bhsf/mca/sdk/security/EncryptionManagerTest.java +0 -0
  273. {mca_sdk-0.9.4.dev1 → mca_sdk-0.9.7}/mca-sdk-java/src/test/java/com/bhsf/mca/sdk/security/GcpSecretProviderTest.java +0 -0
  274. {mca_sdk-0.9.4.dev1 → mca_sdk-0.9.7}/mca-sdk-java/src/test/java/com/bhsf/mca/sdk/security/QueueEncryptionTest.java +0 -0
  275. {mca_sdk-0.9.4.dev1 → mca_sdk-0.9.7}/mca-sdk-java/src/test/java/com/bhsf/mca/sdk/security/SecretManagerTest.java +0 -0
  276. {mca_sdk-0.9.4.dev1 → mca_sdk-0.9.7}/mca-sdk-java/src/test/java/com/bhsf/mca/sdk/util/SerializationTest.java +0 -0
  277. {mca_sdk-0.9.4.dev1 → mca_sdk-0.9.7}/mca-sdk-java/src/test/java/com/bhsf/mca/sdk/util/StringUtilsTest.java +0 -0
  278. {mca_sdk-0.9.4.dev1 → mca_sdk-0.9.7}/mca-sdk-java/src/test/java/com/bhsf/mca/sdk/util/VersionCheckTest.java +0 -0
  279. {mca_sdk-0.9.4.dev1 → mca_sdk-0.9.7}/mca-sdk-java/src/test/java/com/bhsf/mca/sdk/validation/AttributeValidatorTest.java +0 -0
  280. {mca_sdk-0.9.4.dev1 → mca_sdk-0.9.7}/mca-sdk-java/src/test/java/com/bhsf/mca/sdk/validation/MetricNamingValidatorTest.java +0 -0
  281. {mca_sdk-0.9.4.dev1 → mca_sdk-0.9.7}/mca-sdk-java/src/test/java/com/bhsf/mca/sdk/validation/TelemetryAttributeValidatorTest.java +0 -0
  282. {mca_sdk-0.9.4.dev1 → mca_sdk-0.9.7}/mca-sdk-java/src/test/java/com/bhsf/mca/sdk/validation/ValidationResultTest.java +0 -0
  283. {mca_sdk-0.9.4.dev1 → mca_sdk-0.9.7}/mca-sdk-java/src/test/java/com/bhsf/mca/sdk/validation/ValidationRulesTest.java +0 -0
  284. {mca_sdk-0.9.4.dev1 → mca_sdk-0.9.7}/mca-sdk-nodejs/.eslintrc.js +0 -0
  285. {mca_sdk-0.9.4.dev1 → mca_sdk-0.9.7}/mca-sdk-nodejs/.gitignore +0 -0
  286. {mca_sdk-0.9.4.dev1 → mca_sdk-0.9.7}/mca-sdk-nodejs/.npmignore +0 -0
  287. {mca_sdk-0.9.4.dev1 → mca_sdk-0.9.7}/mca-sdk-nodejs/.prettierrc +0 -0
  288. {mca_sdk-0.9.4.dev1 → mca_sdk-0.9.7}/mca-sdk-nodejs/CHANGELOG.md +0 -0
  289. {mca_sdk-0.9.4.dev1 → mca_sdk-0.9.7}/mca-sdk-nodejs/LICENSE +0 -0
  290. {mca_sdk-0.9.4.dev1 → mca_sdk-0.9.7}/mca-sdk-nodejs/README.md +0 -0
  291. {mca_sdk-0.9.4.dev1 → mca_sdk-0.9.7}/mca-sdk-nodejs/examples/simple-example.ts +0 -0
  292. {mca_sdk-0.9.4.dev1 → mca_sdk-0.9.7}/mca-sdk-nodejs/jest.config.js +0 -0
  293. {mca_sdk-0.9.4.dev1 → mca_sdk-0.9.7}/mca-sdk-nodejs/package.json +0 -0
  294. {mca_sdk-0.9.4.dev1 → mca_sdk-0.9.7}/mca-sdk-nodejs/src/config/settings.ts +0 -0
  295. {mca_sdk-0.9.4.dev1 → mca_sdk-0.9.7}/mca-sdk-nodejs/src/core/client.ts +0 -0
  296. {mca_sdk-0.9.4.dev1 → mca_sdk-0.9.7}/mca-sdk-nodejs/src/core/providers.ts +0 -0
  297. {mca_sdk-0.9.4.dev1 → mca_sdk-0.9.7}/mca-sdk-nodejs/src/index.ts +0 -0
  298. {mca_sdk-0.9.4.dev1 → mca_sdk-0.9.7}/mca-sdk-nodejs/src/registry/client.ts +0 -0
  299. {mca_sdk-0.9.4.dev1 → mca_sdk-0.9.7}/mca-sdk-nodejs/src/registry/models.ts +0 -0
  300. {mca_sdk-0.9.4.dev1 → mca_sdk-0.9.7}/mca-sdk-nodejs/src/types/index.ts +0 -0
  301. {mca_sdk-0.9.4.dev1 → mca_sdk-0.9.7}/mca-sdk-nodejs/src/utils/context.ts +0 -0
  302. {mca_sdk-0.9.4.dev1 → mca_sdk-0.9.7}/mca-sdk-nodejs/src/utils/exceptions.ts +0 -0
  303. {mca_sdk-0.9.4.dev1 → mca_sdk-0.9.7}/mca-sdk-nodejs/src/utils/logger.ts +0 -0
  304. {mca_sdk-0.9.4.dev1 → mca_sdk-0.9.7}/mca-sdk-nodejs/src/utils/serialization.ts +0 -0
  305. {mca_sdk-0.9.4.dev1 → mca_sdk-0.9.7}/mca-sdk-nodejs/test-integration-v0.4.ts +0 -0
  306. {mca_sdk-0.9.4.dev1 → mca_sdk-0.9.7}/mca-sdk-nodejs/test-integration.ts +0 -0
  307. {mca_sdk-0.9.4.dev1 → mca_sdk-0.9.7}/mca-sdk-nodejs/test-performance.ts +0 -0
  308. {mca_sdk-0.9.4.dev1 → mca_sdk-0.9.7}/mca-sdk-nodejs/test-registry-integration.ts +0 -0
  309. {mca_sdk-0.9.4.dev1 → mca_sdk-0.9.7}/mca-sdk-nodejs/tests/integration/agentic-advanced.test.ts +0 -0
  310. {mca_sdk-0.9.4.dev1 → mca_sdk-0.9.7}/mca-sdk-nodejs/tests/unit/client.test.ts +0 -0
  311. {mca_sdk-0.9.4.dev1 → mca_sdk-0.9.7}/mca-sdk-nodejs/tests/unit/config.test.ts +0 -0
  312. {mca_sdk-0.9.4.dev1 → mca_sdk-0.9.7}/mca-sdk-nodejs/tests/unit/context.test.ts +0 -0
  313. {mca_sdk-0.9.4.dev1 → mca_sdk-0.9.7}/mca-sdk-nodejs/tests/unit/registry.test.ts +0 -0
  314. {mca_sdk-0.9.4.dev1 → mca_sdk-0.9.7}/mca-sdk-nodejs/tests/unit/serialization.test.ts +0 -0
  315. {mca_sdk-0.9.4.dev1 → mca_sdk-0.9.7}/mca-sdk-nodejs/tsconfig.eslint.json +0 -0
  316. {mca_sdk-0.9.4.dev1 → mca_sdk-0.9.7}/mca-sdk-nodejs/tsconfig.json +0 -0
  317. {mca_sdk-0.9.4.dev1 → mca_sdk-0.9.7}/mca-sdk-nodejs/typedoc.json +0 -0
  318. {mca_sdk-0.9.4.dev1 → mca_sdk-0.9.7}/mca_instrumentation_agent/.gitlab-ci.yml +0 -0
  319. {mca_sdk-0.9.4.dev1 → mca_sdk-0.9.7}/mca_instrumentation_agent/__init__.py +0 -0
  320. {mca_sdk-0.9.4.dev1 → mca_sdk-0.9.7}/mca_instrumentation_agent/__main__.py +0 -0
  321. {mca_sdk-0.9.4.dev1 → mca_sdk-0.9.7}/mca_instrumentation_agent/async_io/__init__.py +0 -0
  322. {mca_sdk-0.9.4.dev1 → mca_sdk-0.9.7}/mca_instrumentation_agent/async_io/py.typed +0 -0
  323. {mca_sdk-0.9.4.dev1 → mca_sdk-0.9.7}/mca_instrumentation_agent/audit/__init__.py +0 -0
  324. {mca_sdk-0.9.4.dev1 → mca_sdk-0.9.7}/mca_instrumentation_agent/audit/py.typed +0 -0
  325. {mca_sdk-0.9.4.dev1 → mca_sdk-0.9.7}/mca_instrumentation_agent/ci/__init__.py +0 -0
  326. {mca_sdk-0.9.4.dev1 → mca_sdk-0.9.7}/mca_instrumentation_agent/ci/lockfile_cadence_gate.py +0 -0
  327. {mca_sdk-0.9.4.dev1 → mca_sdk-0.9.7}/mca_instrumentation_agent/ci/lockfile_diff_gate.py +0 -0
  328. {mca_sdk-0.9.4.dev1 → mca_sdk-0.9.7}/mca_instrumentation_agent/ci/lockfile_hash_gate.py +0 -0
  329. {mca_sdk-0.9.4.dev1 → mca_sdk-0.9.7}/mca_instrumentation_agent/ci/py.typed +0 -0
  330. {mca_sdk-0.9.4.dev1 → mca_sdk-0.9.7}/mca_instrumentation_agent/ci/sdk_version_invariant_gate.py +0 -0
  331. {mca_sdk-0.9.4.dev1 → mca_sdk-0.9.7}/mca_instrumentation_agent/ci/vuln_scan_sla_gate.py +0 -0
  332. {mca_sdk-0.9.4.dev1 → mca_sdk-0.9.7}/mca_instrumentation_agent/cli.py +0 -0
  333. {mca_sdk-0.9.4.dev1 → mca_sdk-0.9.7}/mca_instrumentation_agent/config/__init__.py +0 -0
  334. {mca_sdk-0.9.4.dev1 → mca_sdk-0.9.7}/mca_instrumentation_agent/config/py.typed +0 -0
  335. {mca_sdk-0.9.4.dev1 → mca_sdk-0.9.7}/mca_instrumentation_agent/observability/__init__.py +0 -0
  336. {mca_sdk-0.9.4.dev1 → mca_sdk-0.9.7}/mca_instrumentation_agent/observability/py.typed +0 -0
  337. {mca_sdk-0.9.4.dev1 → mca_sdk-0.9.7}/mca_instrumentation_agent/py.typed +0 -0
  338. {mca_sdk-0.9.4.dev1 → mca_sdk-0.9.7}/mca_instrumentation_agent/pyproject.toml +0 -0
  339. {mca_sdk-0.9.4.dev1 → mca_sdk-0.9.7}/mca_instrumentation_agent/runtime/__init__.py +0 -0
  340. {mca_sdk-0.9.4.dev1 → mca_sdk-0.9.7}/mca_instrumentation_agent/runtime/py.typed +0 -0
  341. {mca_sdk-0.9.4.dev1 → mca_sdk-0.9.7}/mca_instrumentation_agent/runtime/run_state.py +0 -0
  342. {mca_sdk-0.9.4.dev1 → mca_sdk-0.9.7}/mca_instrumentation_agent/schemas/__init__.py +0 -0
  343. {mca_sdk-0.9.4.dev1 → mca_sdk-0.9.7}/mca_instrumentation_agent/schemas/error_codes.py +0 -0
  344. {mca_sdk-0.9.4.dev1 → mca_sdk-0.9.7}/mca_instrumentation_agent/schemas/py.typed +0 -0
  345. {mca_sdk-0.9.4.dev1 → mca_sdk-0.9.7}/mca_instrumentation_agent/tools/__init__.py +0 -0
  346. {mca_sdk-0.9.4.dev1 → mca_sdk-0.9.7}/mca_instrumentation_agent/tools/py.typed +0 -0
  347. {mca_sdk-0.9.4.dev1 → mca_sdk-0.9.7}/mca_instrumentation_agent/uv.lock +0 -0
  348. {mca_sdk-0.9.4.dev1 → mca_sdk-0.9.7}/mca_sdk/ai_assist/__init__.py +0 -0
  349. {mca_sdk-0.9.4.dev1 → mca_sdk-0.9.7}/mca_sdk/ai_assist/cli_install.py +0 -0
  350. {mca_sdk-0.9.4.dev1 → mca_sdk-0.9.7}/mca_sdk/ai_assist/templates/claude-code/mca-instrument.md +0 -0
  351. {mca_sdk-0.9.4.dev1 → mca_sdk-0.9.7}/mca_sdk/ai_assist/templates/copilot/copilot-instructions.md +0 -0
  352. {mca_sdk-0.9.4.dev1 → mca_sdk-0.9.7}/mca_sdk/ai_assist/templates/cursor/mca-instrument.mdc +0 -0
  353. {mca_sdk-0.9.4.dev1 → mca_sdk-0.9.7}/mca_sdk/ai_assist/templates/gemini/GEMINI.md +0 -0
  354. {mca_sdk-0.9.4.dev1 → mca_sdk-0.9.7}/mca_sdk/ai_assist/templates/notebook/mca_starter.ipynb +0 -0
  355. {mca_sdk-0.9.4.dev1 → mca_sdk-0.9.7}/mca_sdk/ai_assist/templates/prompts/variant_a.md +0 -0
  356. {mca_sdk-0.9.4.dev1 → mca_sdk-0.9.7}/mca_sdk/ai_assist/templates/prompts/variant_b.md +0 -0
  357. {mca_sdk-0.9.4.dev1 → mca_sdk-0.9.7}/mca_sdk/autolog/_lightgbm.py +0 -0
  358. {mca_sdk-0.9.4.dev1 → mca_sdk-0.9.7}/mca_sdk/autolog/_sklearn.py +0 -0
  359. {mca_sdk-0.9.4.dev1 → mca_sdk-0.9.7}/mca_sdk/autolog/_xgboost.py +0 -0
  360. {mca_sdk-0.9.4.dev1 → mca_sdk-0.9.7}/mca_sdk/buffering/__init__.py +0 -0
  361. {mca_sdk-0.9.4.dev1 → mca_sdk-0.9.7}/mca_sdk/buffering/exporters.py +0 -0
  362. {mca_sdk-0.9.4.dev1 → mca_sdk-0.9.7}/mca_sdk/buffering/queue.py +0 -0
  363. {mca_sdk-0.9.4.dev1 → mca_sdk-0.9.7}/mca_sdk/buffering/queued_item.py +0 -0
  364. {mca_sdk-0.9.4.dev1 → mca_sdk-0.9.7}/mca_sdk/buffering/retry.py +0 -0
  365. {mca_sdk-0.9.4.dev1 → mca_sdk-0.9.7}/mca_sdk/cli/__init__.py +0 -0
  366. {mca_sdk-0.9.4.dev1 → mca_sdk-0.9.7}/mca_sdk/cli/instrument.py +0 -0
  367. {mca_sdk-0.9.4.dev1 → mca_sdk-0.9.7}/mca_sdk/config/__init__.py +0 -0
  368. {mca_sdk-0.9.4.dev1 → mca_sdk-0.9.7}/mca_sdk/core/__init__.py +0 -0
  369. {mca_sdk-0.9.4.dev1 → mca_sdk-0.9.7}/mca_sdk/core/gcp_auth.py +0 -0
  370. {mca_sdk-0.9.4.dev1 → mca_sdk-0.9.7}/mca_sdk/exporters/__init__.py +0 -0
  371. {mca_sdk-0.9.4.dev1 → mca_sdk-0.9.7}/mca_sdk/exporters/gcp_logging.py +0 -0
  372. {mca_sdk-0.9.4.dev1 → mca_sdk-0.9.7}/mca_sdk/exporters/gcp_trace_exporter.py +0 -0
  373. {mca_sdk-0.9.4.dev1 → mca_sdk-0.9.7}/mca_sdk/integrations/bridge.py +0 -0
  374. {mca_sdk-0.9.4.dev1 → mca_sdk-0.9.7}/mca_sdk/py.typed +0 -0
  375. {mca_sdk-0.9.4.dev1 → mca_sdk-0.9.7}/mca_sdk/registry/__init__.py +0 -0
  376. {mca_sdk-0.9.4.dev1 → mca_sdk-0.9.7}/mca_sdk/resilience/__init__.py +0 -0
  377. {mca_sdk-0.9.4.dev1 → mca_sdk-0.9.7}/mca_sdk/resilience/circuit_breaker.py +0 -0
  378. {mca_sdk-0.9.4.dev1 → mca_sdk-0.9.7}/mca_sdk/resilience/dead_letter_queue.py +0 -0
  379. {mca_sdk-0.9.4.dev1 → mca_sdk-0.9.7}/mca_sdk/security/__init__.py +0 -0
  380. {mca_sdk-0.9.4.dev1 → mca_sdk-0.9.7}/mca_sdk/security/_testing.py +0 -0
  381. {mca_sdk-0.9.4.dev1 → mca_sdk-0.9.7}/mca_sdk/security/certificate.py +0 -0
  382. {mca_sdk-0.9.4.dev1 → mca_sdk-0.9.7}/mca_sdk/security/certificates.py +0 -0
  383. {mca_sdk-0.9.4.dev1 → mca_sdk-0.9.7}/mca_sdk/security/encryption.py +0 -0
  384. {mca_sdk-0.9.4.dev1 → mca_sdk-0.9.7}/mca_sdk/security/migration.py +0 -0
  385. {mca_sdk-0.9.4.dev1 → mca_sdk-0.9.7}/mca_sdk/security/phi_filter.py +0 -0
  386. {mca_sdk-0.9.4.dev1 → mca_sdk-0.9.7}/mca_sdk/utils/__init__.py +0 -0
  387. {mca_sdk-0.9.4.dev1 → mca_sdk-0.9.7}/mca_sdk/utils/environment.py +0 -0
  388. {mca_sdk-0.9.4.dev1 → mca_sdk-0.9.7}/mca_sdk/utils/gcp_validators.py +0 -0
  389. {mca_sdk-0.9.4.dev1 → mca_sdk-0.9.7}/mca_sdk/utils/phi_safe_capture.py +0 -0
  390. {mca_sdk-0.9.4.dev1 → mca_sdk-0.9.7}/mca_sdk/utils/phi_utils.py +0 -0
  391. {mca_sdk-0.9.4.dev1 → mca_sdk-0.9.7}/mca_sdk/utils/routing.py +0 -0
  392. {mca_sdk-0.9.4.dev1 → mca_sdk-0.9.7}/mca_sdk/utils/serialization.py +0 -0
  393. {mca_sdk-0.9.4.dev1 → mca_sdk-0.9.7}/mca_sdk/utils/version_check.py +0 -0
  394. {mca_sdk-0.9.4.dev1 → mca_sdk-0.9.7}/mca_sdk/validation/__init__.py +0 -0
  395. {mca_sdk-0.9.4.dev1 → mca_sdk-0.9.7}/mca_sdk/validation/attributes.py +0 -0
  396. {mca_sdk-0.9.4.dev1 → mca_sdk-0.9.7}/mca_sdk/validation/naming_conventions.py +0 -0
  397. {mca_sdk-0.9.4.dev1 → mca_sdk-0.9.7}/mca_sdk/validation/result.py +0 -0
  398. {mca_sdk-0.9.4.dev1 → mca_sdk-0.9.7}/mca_sdk/validation/rules.py +0 -0
  399. {mca_sdk-0.9.4.dev1 → mca_sdk-0.9.7}/mca_sdk/validation/schema.py +0 -0
  400. {mca_sdk-0.9.4.dev1 → mca_sdk-0.9.7}/mca_sdk/validation/telemetry_attributes.py +0 -0
  401. {mca_sdk-0.9.4.dev1 → mca_sdk-0.9.7}/mca_sdk/validation/validator.py +0 -0
  402. {mca_sdk-0.9.4.dev1 → mca_sdk-0.9.7}/mca_sdk/version.py +0 -0
  403. {mca_sdk-0.9.4.dev1 → mca_sdk-0.9.7}/mca_sdk.egg-info/dependency_links.txt +0 -0
  404. {mca_sdk-0.9.4.dev1 → mca_sdk-0.9.7}/mca_sdk.egg-info/top_level.txt +0 -0
  405. {mca_sdk-0.9.4.dev1 → mca_sdk-0.9.7}/mypy.ini +0 -0
  406. {mca_sdk-0.9.4.dev1 → mca_sdk-0.9.7}/notebooks/README.md +0 -0
  407. {mca_sdk-0.9.4.dev1 → mca_sdk-0.9.7}/notebooks/end-to-end-demo.ipynb +0 -0
  408. {mca_sdk-0.9.4.dev1 → mca_sdk-0.9.7}/pip-audit-report.json +0 -0
  409. {mca_sdk-0.9.4.dev1 → mca_sdk-0.9.7}/pip-audit-results.txt +0 -0
  410. {mca_sdk-0.9.4.dev1 → mca_sdk-0.9.7}/profile_output.txt +0 -0
  411. {mca_sdk-0.9.4.dev1 → mca_sdk-0.9.7}/pylint-report.json +0 -0
  412. {mca_sdk-0.9.4.dev1 → mca_sdk-0.9.7}/requirements-security.txt +0 -0
  413. {mca_sdk-0.9.4.dev1 → mca_sdk-0.9.7}/requirements.txt +0 -0
  414. {mca_sdk-0.9.4.dev1 → mca_sdk-0.9.7}/sdk-examples/README.md +0 -0
  415. {mca_sdk-0.9.4.dev1 → mca_sdk-0.9.7}/sdk-examples/autolog-demo/README.md +0 -0
  416. {mca_sdk-0.9.4.dev1 → mca_sdk-0.9.7}/sdk-examples/autolog-demo/requirements.txt +0 -0
  417. {mca_sdk-0.9.4.dev1 → mca_sdk-0.9.7}/sdk-examples/autolog-demo/sklearn_autolog_example.py +0 -0
  418. {mca_sdk-0.9.4.dev1 → mca_sdk-0.9.7}/sdk-examples/direct-llm/README.md +0 -0
  419. {mca_sdk-0.9.4.dev1 → mca_sdk-0.9.7}/sdk-examples/direct-llm/instrumented_anthropic.py +0 -0
  420. {mca_sdk-0.9.4.dev1 → mca_sdk-0.9.7}/sdk-examples/direct-llm/instrumented_langchain.py +0 -0
  421. {mca_sdk-0.9.4.dev1 → mca_sdk-0.9.7}/sdk-examples/direct-llm/instrumented_llamaindex.py +0 -0
  422. {mca_sdk-0.9.4.dev1 → mca_sdk-0.9.7}/sdk-examples/direct-llm/instrumented_openai.py +0 -0
  423. {mca_sdk-0.9.4.dev1 → mca_sdk-0.9.7}/sdk-examples/direct-llm/requirements.txt +0 -0
  424. {mca_sdk-0.9.4.dev1 → mca_sdk-0.9.7}/sdk-examples/internal-agentic/README.md +0 -0
  425. {mca_sdk-0.9.4.dev1 → mca_sdk-0.9.7}/sdk-examples/internal-agentic/agent_non_instrumented.py +0 -0
  426. {mca_sdk-0.9.4.dev1 → mca_sdk-0.9.7}/sdk-examples/internal-agentic/requirements.txt +0 -0
  427. {mca_sdk-0.9.4.dev1 → mca_sdk-0.9.7}/sdk-examples/internal-agentic/tools.py +0 -0
  428. {mca_sdk-0.9.4.dev1 → mca_sdk-0.9.7}/sdk-examples/internal-genai/README.md +0 -0
  429. {mca_sdk-0.9.4.dev1 → mca_sdk-0.9.7}/sdk-examples/internal-genai/litellm_non_instrumented.py +0 -0
  430. {mca_sdk-0.9.4.dev1 → mca_sdk-0.9.7}/sdk-examples/internal-genai/requirements.txt +0 -0
  431. {mca_sdk-0.9.4.dev1 → mca_sdk-0.9.7}/sdk-examples/internal-model/README.md +0 -0
  432. {mca_sdk-0.9.4.dev1 → mca_sdk-0.9.7}/sdk-examples/internal-model/model_non_instrumented.py +0 -0
  433. {mca_sdk-0.9.4.dev1 → mca_sdk-0.9.7}/sdk-examples/internal-model/raw_model.py +0 -0
  434. {mca_sdk-0.9.4.dev1 → mca_sdk-0.9.7}/sdk-examples/internal-model/requirements.txt +0 -0
  435. {mca_sdk-0.9.4.dev1 → mca_sdk-0.9.7}/sdk-examples/internal-model/train_model.py +0 -0
  436. {mca_sdk-0.9.4.dev1 → mca_sdk-0.9.7}/sdk-examples/internal-model-go/README.md +0 -0
  437. {mca_sdk-0.9.4.dev1 → mca_sdk-0.9.7}/sdk-examples/internal-model-go/go.mod +0 -0
  438. {mca_sdk-0.9.4.dev1 → mca_sdk-0.9.7}/sdk-examples/internal-model-go/main.go +0 -0
  439. {mca_sdk-0.9.4.dev1 → mca_sdk-0.9.7}/sdk-examples/shared/config.py +0 -0
  440. {mca_sdk-0.9.4.dev1 → mca_sdk-0.9.7}/sdk-examples/shared/gcp_helpers.py +0 -0
  441. {mca_sdk-0.9.4.dev1 → mca_sdk-0.9.7}/sdk-examples/shared/verification.py +0 -0
  442. {mca_sdk-0.9.4.dev1 → mca_sdk-0.9.7}/sdk-examples/vendor-bridge/README.md +0 -0
  443. {mca_sdk-0.9.4.dev1 → mca_sdk-0.9.7}/sdk-examples/vendor-bridge/api_to_otlp_bridge.py +0 -0
  444. {mca_sdk-0.9.4.dev1 → mca_sdk-0.9.7}/sdk-examples/vendor-bridge/mock_vendor_api.py +0 -0
  445. {mca_sdk-0.9.4.dev1 → mca_sdk-0.9.7}/sdk-examples/vendor-bridge/performance_validation.py +0 -0
  446. {mca_sdk-0.9.4.dev1 → mca_sdk-0.9.7}/sdk-examples/vendor-bridge/requirements-base.txt +0 -0
  447. {mca_sdk-0.9.4.dev1 → mca_sdk-0.9.7}/sdk-examples/vendor-bridge/requirements.txt +0 -0
  448. {mca_sdk-0.9.4.dev1 → mca_sdk-0.9.7}/sdk_profile.stats +0 -0
  449. {mca_sdk-0.9.4.dev1 → mca_sdk-0.9.7}/setup.cfg +0 -0
  450. {mca_sdk-0.9.4.dev1 → mca_sdk-0.9.7}/test_bootstrap_log.py +0 -0
  451. {mca_sdk-0.9.4.dev1 → mca_sdk-0.9.7}/test_import.py +0 -0
  452. {mca_sdk-0.9.4.dev1 → mca_sdk-0.9.7}/tests/README.md +0 -0
  453. {mca_sdk-0.9.4.dev1 → mca_sdk-0.9.7}/tests/__init__.py +0 -0
  454. {mca_sdk-0.9.4.dev1 → mca_sdk-0.9.7}/tests/ci/__init__.py +0 -0
  455. {mca_sdk-0.9.4.dev1 → mca_sdk-0.9.7}/tests/ci/test_security_notifications.py +0 -0
  456. {mca_sdk-0.9.4.dev1 → mca_sdk-0.9.7}/tests/ci/test_security_scanning.py +0 -0
  457. {mca_sdk-0.9.4.dev1 → mca_sdk-0.9.7}/tests/conftest.py +0 -0
  458. {mca_sdk-0.9.4.dev1 → mca_sdk-0.9.7}/tests/e2e/README.md +0 -0
  459. {mca_sdk-0.9.4.dev1 → mca_sdk-0.9.7}/tests/e2e/RUN_IN_GCP_WORKBENCH.md +0 -0
  460. {mca_sdk-0.9.4.dev1 → mca_sdk-0.9.7}/tests/e2e/__init__.py +0 -0
  461. {mca_sdk-0.9.4.dev1 → mca_sdk-0.9.7}/tests/e2e/conftest.py +0 -0
  462. {mca_sdk-0.9.4.dev1 → mca_sdk-0.9.7}/tests/e2e/run_e2e_tests.sh +0 -0
  463. {mca_sdk-0.9.4.dev1 → mca_sdk-0.9.7}/tests/e2e/test_error_scenarios_e2e.py +0 -0
  464. {mca_sdk-0.9.4.dev1 → mca_sdk-0.9.7}/tests/e2e/test_logs_e2e.py +0 -0
  465. {mca_sdk-0.9.4.dev1 → mca_sdk-0.9.7}/tests/e2e/test_metrics_e2e.py +0 -0
  466. {mca_sdk-0.9.4.dev1 → mca_sdk-0.9.7}/tests/e2e/test_multi_model_e2e.py +0 -0
  467. {mca_sdk-0.9.4.dev1 → mca_sdk-0.9.7}/tests/e2e/test_traces_e2e.py +0 -0
  468. {mca_sdk-0.9.4.dev1 → mca_sdk-0.9.7}/tests/fixtures/agent/__init__.py +0 -0
  469. {mca_sdk-0.9.4.dev1 → mca_sdk-0.9.7}/tests/fixtures/agent/advisories/p0_25h.json +0 -0
  470. {mca_sdk-0.9.4.dev1 → mca_sdk-0.9.7}/tests/fixtures/agent/lockfiles/all_pinned.lock +0 -0
  471. {mca_sdk-0.9.4.dev1 → mca_sdk-0.9.7}/tests/fixtures/agent/lockfiles/diff_drift_new.lock +0 -0
  472. {mca_sdk-0.9.4.dev1 → mca_sdk-0.9.7}/tests/fixtures/agent/lockfiles/diff_drift_old.lock +0 -0
  473. {mca_sdk-0.9.4.dev1 → mca_sdk-0.9.7}/tests/fixtures/agent/lockfiles/mca_sdk_carveout.lock +0 -0
  474. {mca_sdk-0.9.4.dev1 → mca_sdk-0.9.7}/tests/fixtures/agent/lockfiles/missing_hash.lock +0 -0
  475. {mca_sdk-0.9.4.dev1 → mca_sdk-0.9.7}/tests/fixtures/agent/lockfiles/no_hash_line.lock +0 -0
  476. {mca_sdk-0.9.4.dev1 → mca_sdk-0.9.7}/tests/fixtures/agent/lockfiles/partial_wheel_hash.lock +0 -0
  477. {mca_sdk-0.9.4.dev1 → mca_sdk-0.9.7}/tests/fixtures/agent/lockfiles/version_range.lock +0 -0
  478. {mca_sdk-0.9.4.dev1 → mca_sdk-0.9.7}/tests/fixtures/mock_collector.py +0 -0
  479. {mca_sdk-0.9.4.dev1 → mca_sdk-0.9.7}/tests/integration/__init__.py +0 -0
  480. {mca_sdk-0.9.4.dev1 → mca_sdk-0.9.7}/tests/integration/agent/__init__.py +0 -0
  481. {mca_sdk-0.9.4.dev1 → mca_sdk-0.9.7}/tests/integration/agent/test_ci_gates_e2e.py +0 -0
  482. {mca_sdk-0.9.4.dev1 → mca_sdk-0.9.7}/tests/integration/conftest.py +0 -0
  483. {mca_sdk-0.9.4.dev1 → mca_sdk-0.9.7}/tests/integration/junit.xml +0 -0
  484. {mca_sdk-0.9.4.dev1 → mca_sdk-0.9.7}/tests/integration/run_k8s_tests.sh +0 -0
  485. {mca_sdk-0.9.4.dev1 → mca_sdk-0.9.7}/tests/integration/test_agentic_example.py +0 -0
  486. {mca_sdk-0.9.4.dev1 → mca_sdk-0.9.7}/tests/integration/test_attributes_processor.py +0 -0
  487. {mca_sdk-0.9.4.dev1 → mca_sdk-0.9.7}/tests/integration/test_autolog_integration.py +0 -0
  488. {mca_sdk-0.9.4.dev1 → mca_sdk-0.9.7}/tests/integration/test_autolog_llm_integration.py.patch +0 -0
  489. {mca_sdk-0.9.4.dev1 → mca_sdk-0.9.7}/tests/integration/test_batch_processor.py +0 -0
  490. {mca_sdk-0.9.4.dev1 → mca_sdk-0.9.7}/tests/integration/test_buffering_integration.py +0 -0
  491. {mca_sdk-0.9.4.dev1 → mca_sdk-0.9.7}/tests/integration/test_circuit_breaker_integration.py +0 -0
  492. {mca_sdk-0.9.4.dev1 → mca_sdk-0.9.7}/tests/integration/test_collector_self_monitoring.py +0 -0
  493. {mca_sdk-0.9.4.dev1 → mca_sdk-0.9.7}/tests/integration/test_collector_telemetry_flow.py +0 -0
  494. {mca_sdk-0.9.4.dev1 → mca_sdk-0.9.7}/tests/integration/test_debug_exporter.py +0 -0
  495. {mca_sdk-0.9.4.dev1 → mca_sdk-0.9.7}/tests/integration/test_decorator_integration.py +0 -0
  496. {mca_sdk-0.9.4.dev1 → mca_sdk-0.9.7}/tests/integration/test_docker_build.py +0 -0
  497. {mca_sdk-0.9.4.dev1 → mca_sdk-0.9.7}/tests/integration/test_docker_compose.py +0 -0
  498. {mca_sdk-0.9.4.dev1 → mca_sdk-0.9.7}/tests/integration/test_docker_images.py +0 -0
  499. {mca_sdk-0.9.4.dev1 → mca_sdk-0.9.7}/tests/integration/test_e2e_flow.py +0 -0
  500. {mca_sdk-0.9.4.dev1 → mca_sdk-0.9.7}/tests/integration/test_exception_integration.py +0 -0
  501. {mca_sdk-0.9.4.dev1 → mca_sdk-0.9.7}/tests/integration/test_gcp_logging_integration.py +0 -0
  502. {mca_sdk-0.9.4.dev1 → mca_sdk-0.9.7}/tests/integration/test_gcp_trace_integration.py +0 -0
  503. {mca_sdk-0.9.4.dev1 → mca_sdk-0.9.7}/tests/integration/test_ha_deployment.py +0 -0
  504. {mca_sdk-0.9.4.dev1 → mca_sdk-0.9.7}/tests/integration/test_ha_features.py +0 -0
  505. {mca_sdk-0.9.4.dev1 → mca_sdk-0.9.7}/tests/integration/test_health_check.py +0 -0
  506. {mca_sdk-0.9.4.dev1 → mca_sdk-0.9.7}/tests/integration/test_health_check_integration.py +0 -0
  507. {mca_sdk-0.9.4.dev1 → mca_sdk-0.9.7}/tests/integration/test_healthcheck.py +0 -0
  508. {mca_sdk-0.9.4.dev1 → mca_sdk-0.9.7}/tests/integration/test_internal_model_example.py +0 -0
  509. {mca_sdk-0.9.4.dev1 → mca_sdk-0.9.7}/tests/integration/test_k8s_deployment.py +0 -0
  510. {mca_sdk-0.9.4.dev1 → mca_sdk-0.9.7}/tests/integration/test_langchain_integration.py +0 -0
  511. {mca_sdk-0.9.4.dev1 → mca_sdk-0.9.7}/tests/integration/test_multi_pipeline.py +0 -0
  512. {mca_sdk-0.9.4.dev1 → mca_sdk-0.9.7}/tests/integration/test_package_metadata.py +0 -0
  513. {mca_sdk-0.9.4.dev1 → mca_sdk-0.9.7}/tests/integration/test_phi_safe_integration.py +0 -0
  514. {mca_sdk-0.9.4.dev1 → mca_sdk-0.9.7}/tests/integration/test_prometheus_integration.py +0 -0
  515. {mca_sdk-0.9.4.dev1 → mca_sdk-0.9.7}/tests/integration/test_pypi_package.py +0 -0
  516. {mca_sdk-0.9.4.dev1 → mca_sdk-0.9.7}/tests/integration/test_queue_recovery.py +0 -0
  517. {mca_sdk-0.9.4.dev1 → mca_sdk-0.9.7}/tests/integration/test_rollback_failure_scenarios.py +0 -0
  518. {mca_sdk-0.9.4.dev1 → mca_sdk-0.9.7}/tests/integration/test_sdk_integration.py +0 -0
  519. {mca_sdk-0.9.4.dev1 → mca_sdk-0.9.7}/tests/integration/test_sdk_version_in_telemetry_payload.py +0 -0
  520. {mca_sdk-0.9.4.dev1 → mca_sdk-0.9.7}/tests/integration/test_state_persistence.py +0 -0
  521. {mca_sdk-0.9.4.dev1 → mca_sdk-0.9.7}/tests/integration/test_story_3_14_schema_validation.py +0 -0
  522. {mca_sdk-0.9.4.dev1 → mca_sdk-0.9.7}/tests/integration/test_validation_e2e.py +0 -0
  523. {mca_sdk-0.9.4.dev1 → mca_sdk-0.9.7}/tests/integration/test_wheel_contents.py +0 -0
  524. {mca_sdk-0.9.4.dev1 → mca_sdk-0.9.7}/tests/performance/README.md +0 -0
  525. {mca_sdk-0.9.4.dev1 → mca_sdk-0.9.7}/tests/performance/__init__.py +0 -0
  526. {mca_sdk-0.9.4.dev1 → mca_sdk-0.9.7}/tests/performance/_load_test_pacing.py +0 -0
  527. {mca_sdk-0.9.4.dev1 → mca_sdk-0.9.7}/tests/performance/assoc_kwargs.py +0 -0
  528. {mca_sdk-0.9.4.dev1 → mca_sdk-0.9.7}/tests/performance/baseline_profile_report.md +0 -0
  529. {mca_sdk-0.9.4.dev1 → mca_sdk-0.9.7}/tests/performance/benchmark_sdk.py +0 -0
  530. {mca_sdk-0.9.4.dev1 → mca_sdk-0.9.7}/tests/performance/collector_monitor.py +0 -0
  531. {mca_sdk-0.9.4.dev1 → mca_sdk-0.9.7}/tests/performance/compare_against_history.py +0 -0
  532. {mca_sdk-0.9.4.dev1 → mca_sdk-0.9.7}/tests/performance/conftest.py +0 -0
  533. {mca_sdk-0.9.4.dev1 → mca_sdk-0.9.7}/tests/performance/generate_overhead_report.py +0 -0
  534. {mca_sdk-0.9.4.dev1 → mca_sdk-0.9.7}/tests/performance/load_test_2000rps.py +0 -0
  535. {mca_sdk-0.9.4.dev1 → mca_sdk-0.9.7}/tests/performance/load_test_2000rps_report.py +0 -0
  536. {mca_sdk-0.9.4.dev1 → mca_sdk-0.9.7}/tests/performance/load_test_report.py +0 -0
  537. {mca_sdk-0.9.4.dev1 → mca_sdk-0.9.7}/tests/performance/load_test_scenarios.py +0 -0
  538. {mca_sdk-0.9.4.dev1 → mca_sdk-0.9.7}/tests/performance/load_test_sustained.py +0 -0
  539. {mca_sdk-0.9.4.dev1 → mca_sdk-0.9.7}/tests/performance/memory_leak_check.py +0 -0
  540. {mca_sdk-0.9.4.dev1 → mca_sdk-0.9.7}/tests/performance/memory_leak_test.py +0 -0
  541. {mca_sdk-0.9.4.dev1 → mca_sdk-0.9.7}/tests/performance/optimization_results.md +0 -0
  542. {mca_sdk-0.9.4.dev1 → mca_sdk-0.9.7}/tests/performance/performance_helpers.py +0 -0
  543. {mca_sdk-0.9.4.dev1 → mca_sdk-0.9.7}/tests/performance/performance_test.py +0 -0
  544. {mca_sdk-0.9.4.dev1 → mca_sdk-0.9.7}/tests/performance/profile_distribution.py +0 -0
  545. {mca_sdk-0.9.4.dev1 → mca_sdk-0.9.7}/tests/performance/profile_overhead.py +0 -0
  546. {mca_sdk-0.9.4.dev1 → mca_sdk-0.9.7}/tests/performance/profile_sdk.py +0 -0
  547. {mca_sdk-0.9.4.dev1 → mca_sdk-0.9.7}/tests/performance/results/overhead_profile.txt +0 -0
  548. {mca_sdk-0.9.4.dev1 → mca_sdk-0.9.7}/tests/performance/run_2000rps_load_test.sh +0 -0
  549. {mca_sdk-0.9.4.dev1 → mca_sdk-0.9.7}/tests/performance/run_load_tests.sh +0 -0
  550. {mca_sdk-0.9.4.dev1 → mca_sdk-0.9.7}/tests/performance/telemetry_completeness.py +0 -0
  551. {mca_sdk-0.9.4.dev1 → mca_sdk-0.9.7}/tests/performance/test_autolog_performance.py +0 -0
  552. {mca_sdk-0.9.4.dev1 → mca_sdk-0.9.7}/tests/performance/test_backpressure.py +0 -0
  553. {mca_sdk-0.9.4.dev1 → mca_sdk-0.9.7}/tests/performance/test_compare_against_history.py +0 -0
  554. {mca_sdk-0.9.4.dev1 → mca_sdk-0.9.7}/tests/performance/test_concurrency.py +0 -0
  555. {mca_sdk-0.9.4.dev1 → mca_sdk-0.9.7}/tests/performance/test_load_harness_remediation.py +0 -0
  556. {mca_sdk-0.9.4.dev1 → mca_sdk-0.9.7}/tests/performance/test_load_testing.py +0 -0
  557. {mca_sdk-0.9.4.dev1 → mca_sdk-0.9.7}/tests/performance/test_negative_cases.py +0 -0
  558. {mca_sdk-0.9.4.dev1 → mca_sdk-0.9.7}/tests/performance/test_performance.py +0 -0
  559. {mca_sdk-0.9.4.dev1 → mca_sdk-0.9.7}/tests/performance/test_performance_slo.py +0 -0
  560. {mca_sdk-0.9.4.dev1 → mca_sdk-0.9.7}/tests/performance/utils.py +0 -0
  561. {mca_sdk-0.9.4.dev1 → mca_sdk-0.9.7}/tests/security/__init__.py +0 -0
  562. {mca_sdk-0.9.4.dev1 → mca_sdk-0.9.7}/tests/security/test_attribute_phi_leakage.py +0 -0
  563. {mca_sdk-0.9.4.dev1 → mca_sdk-0.9.7}/tests/security/test_sast.py +0 -0
  564. {mca_sdk-0.9.4.dev1 → mca_sdk-0.9.7}/tests/security/test_security_requirements.py +0 -0
  565. {mca_sdk-0.9.4.dev1 → mca_sdk-0.9.7}/tests/support/__init__.py +0 -0
  566. {mca_sdk-0.9.4.dev1 → mca_sdk-0.9.7}/tests/support/logging_overhead.py +0 -0
  567. {mca_sdk-0.9.4.dev1 → mca_sdk-0.9.7}/tests/test_agentic.py +0 -0
  568. {mca_sdk-0.9.4.dev1 → mca_sdk-0.9.7}/tests/test_basic_export.py +0 -0
  569. {mca_sdk-0.9.4.dev1 → mca_sdk-0.9.7}/tests/test_gcp_registry_auth.py +0 -0
  570. {mca_sdk-0.9.4.dev1 → mca_sdk-0.9.7}/tests/test_registry_integration.py +0 -0
  571. {mca_sdk-0.9.4.dev1 → mca_sdk-0.9.7}/tests/unit/__init__.py +0 -0
  572. {mca_sdk-0.9.4.dev1 → mca_sdk-0.9.7}/tests/unit/agent/__init__.py +0 -0
  573. {mca_sdk-0.9.4.dev1 → mca_sdk-0.9.7}/tests/unit/agent/test_ci_gates_help.py +0 -0
  574. {mca_sdk-0.9.4.dev1 → mca_sdk-0.9.7}/tests/unit/agent/test_cli.py +0 -0
  575. {mca_sdk-0.9.4.dev1 → mca_sdk-0.9.7}/tests/unit/agent/test_layout.py +0 -0
  576. {mca_sdk-0.9.4.dev1 → mca_sdk-0.9.7}/tests/unit/agent/test_lockfile_cadence_gate.py +0 -0
  577. {mca_sdk-0.9.4.dev1 → mca_sdk-0.9.7}/tests/unit/agent/test_lockfile_diff_gate.py +0 -0
  578. {mca_sdk-0.9.4.dev1 → mca_sdk-0.9.7}/tests/unit/agent/test_lockfile_hash_gate.py +0 -0
  579. {mca_sdk-0.9.4.dev1 → mca_sdk-0.9.7}/tests/unit/agent/test_lockfile_hash_gate_mca_sdk_carveout.py +0 -0
  580. {mca_sdk-0.9.4.dev1 → mca_sdk-0.9.7}/tests/unit/agent/test_pyproject.py +0 -0
  581. {mca_sdk-0.9.4.dev1 → mca_sdk-0.9.7}/tests/unit/agent/test_sdk_version_invariant_gate.py +0 -0
  582. {mca_sdk-0.9.4.dev1 → mca_sdk-0.9.7}/tests/unit/agent/test_vuln_scan_sla_gate.py +0 -0
  583. {mca_sdk-0.9.4.dev1 → mca_sdk-0.9.7}/tests/unit/agent/test_wheel_contents.py +0 -0
  584. {mca_sdk-0.9.4.dev1 → mca_sdk-0.9.7}/tests/unit/agent/test_wheel_metadata.py +0 -0
  585. {mca_sdk-0.9.4.dev1 → mca_sdk-0.9.7}/tests/unit/test_absolute_final_85.py +0 -0
  586. {mca_sdk-0.9.4.dev1 → mca_sdk-0.9.7}/tests/unit/test_additional_coverage.py +0 -0
  587. {mca_sdk-0.9.4.dev1 → mca_sdk-0.9.7}/tests/unit/test_agentic_tracking.py +0 -0
  588. {mca_sdk-0.9.4.dev1 → mca_sdk-0.9.7}/tests/unit/test_ai_assist_jupyter.py +0 -0
  589. {mca_sdk-0.9.4.dev1 → mca_sdk-0.9.7}/tests/unit/test_ai_assist_package.py +0 -0
  590. {mca_sdk-0.9.4.dev1 → mca_sdk-0.9.7}/tests/unit/test_async_compatibility.py +0 -0
  591. {mca_sdk-0.9.4.dev1 → mca_sdk-0.9.7}/tests/unit/test_attribute_validation_extra.py +0 -0
  592. {mca_sdk-0.9.4.dev1 → mca_sdk-0.9.7}/tests/unit/test_attribute_validator.py +0 -0
  593. {mca_sdk-0.9.4.dev1 → mca_sdk-0.9.7}/tests/unit/test_audit_log_async.py +0 -0
  594. {mca_sdk-0.9.4.dev1 → mca_sdk-0.9.7}/tests/unit/test_autoinstrument.py +0 -0
  595. {mca_sdk-0.9.4.dev1 → mca_sdk-0.9.7}/tests/unit/test_autoinstrument_coverage.py +0 -0
  596. {mca_sdk-0.9.4.dev1 → mca_sdk-0.9.7}/tests/unit/test_autolog_openai_additional.py +0 -0
  597. {mca_sdk-0.9.4.dev1 → mca_sdk-0.9.7}/tests/unit/test_autolog_openai_coverage.py +0 -0
  598. {mca_sdk-0.9.4.dev1 → mca_sdk-0.9.7}/tests/unit/test_bridge_extra.py +0 -0
  599. {mca_sdk-0.9.4.dev1 → mca_sdk-0.9.7}/tests/unit/test_buffering_exporters.py +0 -0
  600. {mca_sdk-0.9.4.dev1 → mca_sdk-0.9.7}/tests/unit/test_buffering_queue.py +0 -0
  601. {mca_sdk-0.9.4.dev1 → mca_sdk-0.9.7}/tests/unit/test_buffering_security.py +0 -0
  602. {mca_sdk-0.9.4.dev1 → mca_sdk-0.9.7}/tests/unit/test_certificate_rotation.py +0 -0
  603. {mca_sdk-0.9.4.dev1 → mca_sdk-0.9.7}/tests/unit/test_circuit_breaker.py +0 -0
  604. {mca_sdk-0.9.4.dev1 → mca_sdk-0.9.7}/tests/unit/test_cli_bootstrap.py +0 -0
  605. {mca_sdk-0.9.4.dev1 → mca_sdk-0.9.7}/tests/unit/test_cli_init_ai_assist.py +0 -0
  606. {mca_sdk-0.9.4.dev1 → mca_sdk-0.9.7}/tests/unit/test_cli_instrument.py +0 -0
  607. {mca_sdk-0.9.4.dev1 → mca_sdk-0.9.7}/tests/unit/test_cli_instrument_helpers.py +0 -0
  608. {mca_sdk-0.9.4.dev1 → mca_sdk-0.9.7}/tests/unit/test_cli_run.py +0 -0
  609. {mca_sdk-0.9.4.dev1 → mca_sdk-0.9.7}/tests/unit/test_cli_run_helpers.py +0 -0
  610. {mca_sdk-0.9.4.dev1 → mca_sdk-0.9.7}/tests/unit/test_client_attribute_validation.py +0 -0
  611. {mca_sdk-0.9.4.dev1 → mca_sdk-0.9.7}/tests/unit/test_client_helpers.py +0 -0
  612. {mca_sdk-0.9.4.dev1 → mca_sdk-0.9.7}/tests/unit/test_code_review_fixes.py +0 -0
  613. {mca_sdk-0.9.4.dev1 → mca_sdk-0.9.7}/tests/unit/test_config_edge_cases.py +0 -0
  614. {mca_sdk-0.9.4.dev1 → mca_sdk-0.9.7}/tests/unit/test_config_hardening.py +0 -0
  615. {mca_sdk-0.9.4.dev1 → mca_sdk-0.9.7}/tests/unit/test_config_persistence.py +0 -0
  616. {mca_sdk-0.9.4.dev1 → mca_sdk-0.9.7}/tests/unit/test_config_settings_validators.py +0 -0
  617. {mca_sdk-0.9.4.dev1 → mca_sdk-0.9.7}/tests/unit/test_coverage_final_push.py +0 -0
  618. {mca_sdk-0.9.4.dev1 → mca_sdk-0.9.7}/tests/unit/test_credential_sanitization_integration.py +0 -0
  619. {mca_sdk-0.9.4.dev1 → mca_sdk-0.9.7}/tests/unit/test_critical_findings.py +0 -0
  620. {mca_sdk-0.9.4.dev1 → mca_sdk-0.9.7}/tests/unit/test_dead_letter_queue.py +0 -0
  621. {mca_sdk-0.9.4.dev1 → mca_sdk-0.9.7}/tests/unit/test_debug_mode.py +0 -0
  622. {mca_sdk-0.9.4.dev1 → mca_sdk-0.9.7}/tests/unit/test_decorators.py +0 -0
  623. {mca_sdk-0.9.4.dev1 → mca_sdk-0.9.7}/tests/unit/test_decorators_extra.py +0 -0
  624. {mca_sdk-0.9.4.dev1 → mca_sdk-0.9.7}/tests/unit/test_disk_persistence.py +0 -0
  625. {mca_sdk-0.9.4.dev1 → mca_sdk-0.9.7}/tests/unit/test_dlq_encryption.py +0 -0
  626. {mca_sdk-0.9.4.dev1 → mca_sdk-0.9.7}/tests/unit/test_dlq_fixes_review.py +0 -0
  627. {mca_sdk-0.9.4.dev1 → mca_sdk-0.9.7}/tests/unit/test_dlq_persistence.py +0 -0
  628. {mca_sdk-0.9.4.dev1 → mca_sdk-0.9.7}/tests/unit/test_dlq_persistence_errors.py +0 -0
  629. {mca_sdk-0.9.4.dev1 → mca_sdk-0.9.7}/tests/unit/test_dlq_production_gating.py +0 -0
  630. {mca_sdk-0.9.4.dev1 → mca_sdk-0.9.7}/tests/unit/test_eighth_round_fixes.py +0 -0
  631. {mca_sdk-0.9.4.dev1 → mca_sdk-0.9.7}/tests/unit/test_eleventh_round_fixes.py +0 -0
  632. {mca_sdk-0.9.4.dev1 → mca_sdk-0.9.7}/tests/unit/test_encryption_fixes.py +0 -0
  633. {mca_sdk-0.9.4.dev1 → mca_sdk-0.9.7}/tests/unit/test_environment_profiles.py +0 -0
  634. {mca_sdk-0.9.4.dev1 → mca_sdk-0.9.7}/tests/unit/test_environment_utility.py +0 -0
  635. {mca_sdk-0.9.4.dev1 → mca_sdk-0.9.7}/tests/unit/test_exceptions.py +0 -0
  636. {mca_sdk-0.9.4.dev1 → mca_sdk-0.9.7}/tests/unit/test_exceptions_extra.py +0 -0
  637. {mca_sdk-0.9.4.dev1 → mca_sdk-0.9.7}/tests/unit/test_fifth_round_fixes.py +0 -0
  638. {mca_sdk-0.9.4.dev1 → mca_sdk-0.9.7}/tests/unit/test_final_85_coverage.py +0 -0
  639. {mca_sdk-0.9.4.dev1 → mca_sdk-0.9.7}/tests/unit/test_final_coverage_85.py +0 -0
  640. {mca_sdk-0.9.4.dev1 → mca_sdk-0.9.7}/tests/unit/test_final_coverage_push.py +0 -0
  641. {mca_sdk-0.9.4.dev1 → mca_sdk-0.9.7}/tests/unit/test_final_coverage_topup.py +0 -0
  642. {mca_sdk-0.9.4.dev1 → mca_sdk-0.9.7}/tests/unit/test_fork_safety.py +0 -0
  643. {mca_sdk-0.9.4.dev1 → mca_sdk-0.9.7}/tests/unit/test_fourth_round_fixes.py +0 -0
  644. {mca_sdk-0.9.4.dev1 → mca_sdk-0.9.7}/tests/unit/test_gcp_auth.py +0 -0
  645. {mca_sdk-0.9.4.dev1 → mca_sdk-0.9.7}/tests/unit/test_gcp_auth_integration.py +0 -0
  646. {mca_sdk-0.9.4.dev1 → mca_sdk-0.9.7}/tests/unit/test_gcp_logging_config.py +0 -0
  647. {mca_sdk-0.9.4.dev1 → mca_sdk-0.9.7}/tests/unit/test_gcp_logging_exporter.py +0 -0
  648. {mca_sdk-0.9.4.dev1 → mca_sdk-0.9.7}/tests/unit/test_gcp_logging_extra.py +0 -0
  649. {mca_sdk-0.9.4.dev1 → mca_sdk-0.9.7}/tests/unit/test_gcp_trace_exporter.py +0 -0
  650. {mca_sdk-0.9.4.dev1 → mca_sdk-0.9.7}/tests/unit/test_gcp_trace_extra.py +0 -0
  651. {mca_sdk-0.9.4.dev1 → mca_sdk-0.9.7}/tests/unit/test_goal_context_token_fix.py +0 -0
  652. {mca_sdk-0.9.4.dev1 → mca_sdk-0.9.7}/tests/unit/test_health_check.py +0 -0
  653. {mca_sdk-0.9.4.dev1 → mca_sdk-0.9.7}/tests/unit/test_histogram_bucket_views.py +0 -0
  654. {mca_sdk-0.9.4.dev1 → mca_sdk-0.9.7}/tests/unit/test_https_enforcement.py +0 -0
  655. {mca_sdk-0.9.4.dev1 → mca_sdk-0.9.7}/tests/unit/test_integrations_decorators.py +0 -0
  656. {mca_sdk-0.9.4.dev1 → mca_sdk-0.9.7}/tests/unit/test_log_injection.py +0 -0
  657. {mca_sdk-0.9.4.dev1 → mca_sdk-0.9.7}/tests/unit/test_logging_overhead_filter.py +0 -0
  658. {mca_sdk-0.9.4.dev1 → mca_sdk-0.9.7}/tests/unit/test_metric_naming.py +0 -0
  659. {mca_sdk-0.9.4.dev1 → mca_sdk-0.9.7}/tests/unit/test_mtls_config.py +0 -0
  660. {mca_sdk-0.9.4.dev1 → mca_sdk-0.9.7}/tests/unit/test_naming_conventions.py +0 -0
  661. {mca_sdk-0.9.4.dev1 → mca_sdk-0.9.7}/tests/unit/test_naming_conventions_extra.py +0 -0
  662. {mca_sdk-0.9.4.dev1 → mca_sdk-0.9.7}/tests/unit/test_negative_validation.py +0 -0
  663. {mca_sdk-0.9.4.dev1 → mca_sdk-0.9.7}/tests/unit/test_ninth_round_fixes.py +0 -0
  664. {mca_sdk-0.9.4.dev1 → mca_sdk-0.9.7}/tests/unit/test_otel_protocol_switching.py +0 -0
  665. {mca_sdk-0.9.4.dev1 → mca_sdk-0.9.7}/tests/unit/test_otlp_output_contracts.py +0 -0
  666. {mca_sdk-0.9.4.dev1 → mca_sdk-0.9.7}/tests/unit/test_persist_production_gating.py +0 -0
  667. {mca_sdk-0.9.4.dev1 → mca_sdk-0.9.7}/tests/unit/test_phi_filter.py +0 -0
  668. {mca_sdk-0.9.4.dev1 → mca_sdk-0.9.7}/tests/unit/test_phi_safe_capture.py +0 -0
  669. {mca_sdk-0.9.4.dev1 → mca_sdk-0.9.7}/tests/unit/test_phi_utils_dummy.py +0 -0
  670. {mca_sdk-0.9.4.dev1 → mca_sdk-0.9.7}/tests/unit/test_predict_decorator_backwards_compat.py +0 -0
  671. {mca_sdk-0.9.4.dev1 → mca_sdk-0.9.7}/tests/unit/test_production_detection.py +0 -0
  672. {mca_sdk-0.9.4.dev1 → mca_sdk-0.9.7}/tests/unit/test_prometheus_exporter.py +0 -0
  673. {mca_sdk-0.9.4.dev1 → mca_sdk-0.9.7}/tests/unit/test_providers.py +0 -0
  674. {mca_sdk-0.9.4.dev1 → mca_sdk-0.9.7}/tests/unit/test_providers_extra.py +0 -0
  675. {mca_sdk-0.9.4.dev1 → mca_sdk-0.9.7}/tests/unit/test_providers_prometheus.py +0 -0
  676. {mca_sdk-0.9.4.dev1 → mca_sdk-0.9.7}/tests/unit/test_providers_unregister.py +0 -0
  677. {mca_sdk-0.9.4.dev1 → mca_sdk-0.9.7}/tests/unit/test_public_api_surface.py +0 -0
  678. {mca_sdk-0.9.4.dev1 → mca_sdk-0.9.7}/tests/unit/test_queue_encryption.py +0 -0
  679. {mca_sdk-0.9.4.dev1 → mca_sdk-0.9.7}/tests/unit/test_rag_contract.py +0 -0
  680. {mca_sdk-0.9.4.dev1 → mca_sdk-0.9.7}/tests/unit/test_record_retrieval.py +0 -0
  681. {mca_sdk-0.9.4.dev1 → mca_sdk-0.9.7}/tests/unit/test_registry_client.py +0 -0
  682. {mca_sdk-0.9.4.dev1 → mca_sdk-0.9.7}/tests/unit/test_registry_client_extra.py +0 -0
  683. {mca_sdk-0.9.4.dev1 → mca_sdk-0.9.7}/tests/unit/test_registry_client_small_surface.py +0 -0
  684. {mca_sdk-0.9.4.dev1 → mca_sdk-0.9.7}/tests/unit/test_registry_models_extra.py +0 -0
  685. {mca_sdk-0.9.4.dev1 → mca_sdk-0.9.7}/tests/unit/test_registry_refresh.py +0 -0
  686. {mca_sdk-0.9.4.dev1 → mca_sdk-0.9.7}/tests/unit/test_registry_stale_cap.py +0 -0
  687. {mca_sdk-0.9.4.dev1 → mca_sdk-0.9.7}/tests/unit/test_registry_telemetry_and_trace.py +0 -0
  688. {mca_sdk-0.9.4.dev1 → mca_sdk-0.9.7}/tests/unit/test_registry_thread_safety.py +0 -0
  689. {mca_sdk-0.9.4.dev1 → mca_sdk-0.9.7}/tests/unit/test_registry_token_refresh.py +0 -0
  690. {mca_sdk-0.9.4.dev1 → mca_sdk-0.9.7}/tests/unit/test_registry_update +0 -0
  691. {mca_sdk-0.9.4.dev1 → mca_sdk-0.9.7}/tests/unit/test_retry_integration.py +0 -0
  692. {mca_sdk-0.9.4.dev1 → mca_sdk-0.9.7}/tests/unit/test_retry_policy.py +0 -0
  693. {mca_sdk-0.9.4.dev1 → mca_sdk-0.9.7}/tests/unit/test_retry_with_dlq.py +0 -0
  694. {mca_sdk-0.9.4.dev1 → mca_sdk-0.9.7}/tests/unit/test_rollback.py +0 -0
  695. {mca_sdk-0.9.4.dev1 → mca_sdk-0.9.7}/tests/unit/test_round_12_fixes.py +0 -0
  696. {mca_sdk-0.9.4.dev1 → mca_sdk-0.9.7}/tests/unit/test_round_13_fixes.py +0 -0
  697. {mca_sdk-0.9.4.dev1 → mca_sdk-0.9.7}/tests/unit/test_round_14_fixes.py +0 -0
  698. {mca_sdk-0.9.4.dev1 → mca_sdk-0.9.7}/tests/unit/test_routing.py +0 -0
  699. {mca_sdk-0.9.4.dev1 → mca_sdk-0.9.7}/tests/unit/test_routing_extra.py +0 -0
  700. {mca_sdk-0.9.4.dev1 → mca_sdk-0.9.7}/tests/unit/test_schema_injection_validation.py +0 -0
  701. {mca_sdk-0.9.4.dev1 → mca_sdk-0.9.7}/tests/unit/test_schema_injection_validators.py +0 -0
  702. {mca_sdk-0.9.4.dev1 → mca_sdk-0.9.7}/tests/unit/test_schema_naming_convention_per_prefix.py +0 -0
  703. {mca_sdk-0.9.4.dev1 → mca_sdk-0.9.7}/tests/unit/test_schema_validation.py +0 -0
  704. {mca_sdk-0.9.4.dev1 → mca_sdk-0.9.7}/tests/unit/test_security_certificate_mtls.py +0 -0
  705. {mca_sdk-0.9.4.dev1 → mca_sdk-0.9.7}/tests/unit/test_security_encryption_manager.py +0 -0
  706. {mca_sdk-0.9.4.dev1 → mca_sdk-0.9.7}/tests/unit/test_security_migration.py +0 -0
  707. {mca_sdk-0.9.4.dev1 → mca_sdk-0.9.7}/tests/unit/test_serialization.py +0 -0
  708. {mca_sdk-0.9.4.dev1 → mca_sdk-0.9.7}/tests/unit/test_serialization_extra.py +0 -0
  709. {mca_sdk-0.9.4.dev1 → mca_sdk-0.9.7}/tests/unit/test_serialization_fallbacks.py +0 -0
  710. {mca_sdk-0.9.4.dev1 → mca_sdk-0.9.7}/tests/unit/test_serialization_poisoning.py +0 -0
  711. {mca_sdk-0.9.4.dev1 → mca_sdk-0.9.7}/tests/unit/test_signal_handling.py +0 -0
  712. {mca_sdk-0.9.4.dev1 → mca_sdk-0.9.7}/tests/unit/test_sixth_round_fixes.py +0 -0
  713. {mca_sdk-0.9.4.dev1 → mca_sdk-0.9.7}/tests/unit/test_small_modules_coverage.py +0 -0
  714. {mca_sdk-0.9.4.dev1 → mca_sdk-0.9.7}/tests/unit/test_state_manager.py +0 -0
  715. {mca_sdk-0.9.4.dev1 → mca_sdk-0.9.7}/tests/unit/test_state_managers.py +0 -0
  716. {mca_sdk-0.9.4.dev1 → mca_sdk-0.9.7}/tests/unit/test_story_8_7_metric_filtering.py +0 -0
  717. {mca_sdk-0.9.4.dev1 → mca_sdk-0.9.7}/tests/unit/test_story_8_9_review_regressions.py +0 -0
  718. {mca_sdk-0.9.4.dev1 → mca_sdk-0.9.7}/tests/unit/test_taxonomy.py +0 -0
  719. {mca_sdk-0.9.4.dev1 → mca_sdk-0.9.7}/tests/unit/test_telemetry_attribute_validation.py +0 -0
  720. {mca_sdk-0.9.4.dev1 → mca_sdk-0.9.7}/tests/unit/test_telemetry_attributes_internals.py +0 -0
  721. {mca_sdk-0.9.4.dev1 → mca_sdk-0.9.7}/tests/unit/test_temporality_e2e.py +0 -0
  722. {mca_sdk-0.9.4.dev1 → mca_sdk-0.9.7}/tests/unit/test_tenth_round_fixes.py +0 -0
  723. {mca_sdk-0.9.4.dev1 → mca_sdk-0.9.7}/tests/unit/test_ultimate_final_85.py +0 -0
  724. {mca_sdk-0.9.4.dev1 → mca_sdk-0.9.7}/tests/unit/test_validation_attributes.py +0 -0
  725. {mca_sdk-0.9.4.dev1 → mca_sdk-0.9.7}/tests/unit/test_validation_attributes_low_level.py +0 -0
  726. {mca_sdk-0.9.4.dev1 → mca_sdk-0.9.7}/tests/unit/test_validation_init.py +0 -0
  727. {mca_sdk-0.9.4.dev1 → mca_sdk-0.9.7}/tests/unit/test_validation_result_extra.py +0 -0
  728. {mca_sdk-0.9.4.dev1 → mca_sdk-0.9.7}/tests/unit/test_validation_rules_extra.py +0 -0
  729. {mca_sdk-0.9.4.dev1 → mca_sdk-0.9.7}/tests/unit/test_vendor_bridge.py +0 -0
  730. {mca_sdk-0.9.4.dev1 → mca_sdk-0.9.7}/tests/unit/test_vendor_bridge_ac.py +0 -0
  731. {mca_sdk-0.9.4.dev1 → mca_sdk-0.9.7}/tests/unit/test_vendor_bridge_internals.py +0 -0
  732. {mca_sdk-0.9.4.dev1 → mca_sdk-0.9.7}/tests/unit/test_vendor_bridge_state.py +0 -0
  733. {mca_sdk-0.9.4.dev1 → mca_sdk-0.9.7}/tests/unit/test_version_check.py +0 -0
  734. {mca_sdk-0.9.4.dev1 → mca_sdk-0.9.7}/tox.ini +0 -0
  735. {mca_sdk-0.9.4.dev1 → mca_sdk-0.9.7}/updated-versions.txt +0 -0
@@ -2,7 +2,389 @@
2
2
 
3
3
  All notable changes to the MCA SDK will be documented in this file.
4
4
 
5
- ## [Unreleased]
5
+ ## [0.9.7] - 2026-07-25
6
+ ### Fixed
7
+ - `mca-verify` console script is now installed by `pip install mca-sdk`. The v0.9.6 wheel advertised the CLI in its release notes but never registered it in `pyproject.toml`'s `[project.scripts]` table, so the entry point was silently dropped by the setuptools build backend (`pyproject.toml` wins over `setup.py`'s `entry_points`). `MCAClient.verify_baseline_emissions()` (the Python API surface) was unaffected in v0.9.6 and remains unchanged in v0.9.7.
8
+ - `pip install mca-sdk[test]` and `[dev]` now pull `mistune>=3.0.0` so `tests/unit/test_for_ai_assistants_doc_lint.py` runs instead of `pytest.importorskip`-skipping when consumers run the SDK's test suite against the sdist.
9
+
10
+ ## [0.9.6] - 2026-07-24
11
+ ### Added
12
+ - `MCAClient.verify_baseline_emissions(*, sample_size=10, timeout_seconds=5.0, strict=False) -> BaselineVerificationReport` — inspects the last-emitted metrics/logs/spans against the §2A baseline emission contract keyed off `(model_category, model_type)` and returns a structured report. Backed by a presence-only in-memory `ObservationBuffer` (256 items/signal) that records attribute-key names and datapoint counts but never attribute values, so the serialized report is PHI-safe by construction. Gated by a new `baseline_verify_enabled` config field (env `MCA_BASELINE_VERIFY_ENABLED`); off by default. Bypasses `flush()` coalescing via a `force_flush` under `_shutdown_lock` — if `shutdown()` has already run, raises the new `SDKShutdownError` rather than NPE. A new `mca-verify` console script (`mca_sdk.cli.verify:main`) wraps the same check for CI, exit codes 0/2/3 (`--strict`, `--format {text,json}`). New public exceptions `BaselineVerificationError` (inherits `MCASDKError` directly, NOT `ValidationError`, so existing `except ValidationError` handlers do not silently swallow verify failures) and `SDKShutdownError`. The verify path is additive — the OTLP export path is untouched when the flag is off.
13
+ - `MCAClient.record_error(err, ..., input_data=None)` — new keyword. When set, the failing input flows through the same `_safe_sanitize_for_telemetry` size-cap / secret-scrubber pipeline `record_prediction` uses and lands in `log_extra["input_data"]` with matching `input_shape` / `input_truncated` metadata. Gated by the existing `capture_input_data` flag. Restores Evidently drift coverage on the failure path once autolog's error branch swaps to `record_error` (see the `### Changed` entry below).
14
+
15
+ ### Fixed
16
+ - `MCALangChainCallback._extract_model_name` no longer returns the LangChain constructor class (`ChatOpenAI`, `AzureChatOpenAI`, ...) as a model identifier. Lookup now walks `serialized["kwargs"]["model_name"]` → `kwargs["model"]` → `kwargs["deployment_name"]` (Azure), falling through to `"unknown"`; `serialized["name"]` is ignored because LangChain populates it with the class name. Dashboards and cost slices keyed on the real deployed model (`gpt-4o-mini`, `claude-3-sonnet`, ...) now receive the correct value for LangChain traffic (tk_faffe8808cf5444c).
17
+ - `MCALangChainCallback` now emits the OpenTelemetry GenAI semantic-convention attributes on LLM spans by delegating to the shared `build_request_attributes` / `build_usage_attributes` in `_genai_attrs.py` — the same builders `MCALiteLLMCallback` and `MCAClient.record_llm_generation` use. Start spans gain `gen_ai.system`, `gen_ai.request.model`, `gen_ai.operation.name` (`chat` for chat models, `text_completion` for LLMs), `gen_ai.request.temperature|max_tokens|top_p`, and `langfuse.observation.type="generation"`. End spans gain `gen_ai.usage.input_tokens`, `gen_ai.usage.output_tokens`, `gen_ai.usage.total_tokens`, `gen_ai.response.model` (from `llm_output.model_name` or `llm_output.model`), and `gen_ai.latency_seconds` (mirrors LiteLLM callback). Legacy `langchain.*` and `genai.*` attributes — including `genai.tokens_prompt|completion|total` and `genai.latency_seconds` — remain for backward compatibility with dashboards and trace filters keyed on the pre-PR names. The `genai.cost_dollars` span attribute is dropped as of tk_e0237bafa19a4365 in the same `[Unreleased]` window because Langfuse now prices generation spans server-side; dashboards must migrate to `gen_ai.usage.input_tokens` × Langfuse pricing (tk_faffe8808cf5444c).
18
+ - `MCALlamaIndexCallback` now emits OpenTelemetry GenAI semantic-convention attributes by delegating to the shared `build_request_attributes` / `build_usage_attributes` builders in `_genai_attrs.py` — the same source of truth `MCALiteLLMCallback`, `MCALangChainCallback`, and `MCAClient.record_llm_generation` use. Start spans gain `gen_ai.system`, `gen_ai.provider.name`, `gen_ai.request.model`, `gen_ai.operation.name="chat"`, and `langfuse.observation.type="generation"`; end spans gain `gen_ai.usage.input_tokens|output_tokens|total_tokens` (with the transitional `prompt_tokens|completion_tokens|total_tokens` legacy aliases dual-emitted by the builder). `gen_ai.latency_seconds` and the legacy `genai.latency_seconds` are both written for the one-release compat window; `genai.cost_dollars` is retained on LlamaIndex spans for the same window pending the Langfuse pricing handoff. `_extract_provider` now delegates to the shared `extract_provider` helper, so LiteLLM-style prefixes (`openai/gpt-4`, `vertex_ai/gemini-1.5-pro`) resolve correctly instead of returning `"unknown"`. The legacy `genai.tokens_prompt|completion|total` span attributes are NOT re-emitted alongside the builder output (would triple-stack under the `tk_e0237bafa19a4365` deprecation window).
19
+ - `MCALangChainCallback._extract_provider` now delegates to the shared `extract_provider` helper in `mca_sdk/integrations/_genai_attrs.py` (a one-line body replacing the 22-line local implementation). Fixes LiteLLM-style provider prefixes on LangChain spans — `openai/gpt-4`, `vertex_ai/gemini-2.0-flash-001`, `bedrock/anthropic.claude-3-sonnet-20240229-v1:0` now resolve to their prefix instead of returning `"unknown"`, so Langfuse pricing and provider slices work for LangChain traffic that flows through LiteLLM. Narrow intentional regression: substring fallback matches (`"my-openai-fork"` → `"openai"`, `"foo-anthropic-bar"` → `"anthropic"`, `"google-x"` → `"google"`, `"meta-y"` → `"meta"`) now return `"unknown"`; callers relying on this ambiguous behavior should switch to explicit `provider/model` naming.
20
+ - Consolidated the `genai.latency_seconds` histogram registration onto a single canonical instrument via a new `MCAClient._get_or_create_histogram` accessor. `_initialize_standard_metrics`, `MCALiteLLMCallback.__init__`, the shared GenAI instrument cache in `integrations/genai.py`, and `MCAClient.record_metric`'s lazy histogram path all now resolve to the same instrument object, eliminating the duplicate-TimeSeries rejection GCP produced when `model_type="generative"` was combined with the LiteLLM callback. Description text on later registrations is discarded (first-caller-wins on metadata).
21
+ - `MCAClient.flush()` now coalesces force-flushes that arrive within one metric-export-interval window (plus 0-10% jitter). Explicit flushes overlapping the periodic reader's export tick no longer produce two CUMULATIVE datapoints for the same `(metric, labels, resource)` tuple. Suppressed calls are logged at DEBUG and return `True` because the datapoint is already in flight via the periodic reader. `shutdown()` bypasses this method and drains providers directly, so the exit path is unaffected.
22
+ - example_deployed/internal-agentic-vertex: /predict handler now fans instances out via asyncio.gather + asyncio.to_thread instead of a serial sync loop inside async def, unblocking the Vertex 60s per-request ceiling for batch_size>1 (root cause of mca-predict-agentic 504 outage on 2026-07-23).
23
+ - example_deployed/internal-agentic-vertex: removed per-instance record_prediction calls from agent_instrumented.research_question in favor of one batch-level record_prediction, matching the canonical shape in FOR_AI_ASSISTANTS.md 2.1.
24
+ - example_deployed/internal-agentic-vertex: dropped synthetic time.sleep from tools.py mock implementations that added 1.5-3.5 s per instance to the request path.
25
+ - example_deployed/internal-genai-vertex, example_deployed/autolog-demo-vertex: /predict handlers converted to asyncio.gather fan-out; flush moved out of per-instance loops.
26
+ - example_deployed/data-generation-automation/cloudrun_server.py: endpoint.predict now uses timeout=55 so a client-side deadline fires before Vertex's 60s ceiling with a clean DeadlineExceeded stack trace; batch_size default lowered from 10 to 1.
27
+
28
+ ### Changed
29
+ - `mca_sdk.autolog._base._instrumented_call` now routes the exception branch through `MCAClient.record_error(...)` instead of `MCAClient.record_prediction(output=None, ...)`. Failed `sklearn`, `xgboost`, and `lightgbm` predictions therefore emit `{prefix}.predictions_total{status="error"}` and `{prefix}.errors_total` rather than incrementing the success counter. This is a **breaking dashboard behavior** change for any Grafana / Cloud Monitoring panel, alert policy, or SLO burn calculation keyed on `status="success"` for the prediction counter — success rate will drop for models whose failed predictions were previously mis-bucketed as success. A dual-emit compatibility flag `MCA_AUTOLOG_LEGACY_ERROR_COUNTER` (defaults to `1` in v0.10.x, flips to `0` in v0.11.x, removed in v0.12.x) preserves the legacy emission while dashboards migrate. See [`docs/migration-guides/autolog-error-counter.md`](../../docs/migration-guides/autolog-error-counter.md) for the alert-policy rewrite recipes and the release schedule. `mca_sdk.autolog._openai` and `mca_sdk.autolog._anthropic` are unaffected — they use `_record_genai_metrics` against a different metric family.
30
+ - example_deployed/internal-agentic-vertex, example_deployed/internal-genai-vertex, example_deployed/autolog-demo-vertex: capture_input_data and capture_output_data now default to False for generative/agentic model_types (they still work when explicitly enabled after an application-side scrubber is in place).
31
+ - example_deployed/data-generation-automation: new README.md runbook for cadence + batch_size changes via gcloud (Dockerfile already had PYTHONUNBUFFERED=1).
32
+ - `MCALangChainCallback` no longer computes cost client-side. The `genai.cost_dollars` histogram, the matching span attribute, and the `cost_dollars` field in the success log record are all removed; `_estimate_cost` and the callback's `_cost_histogram` instrument have been deleted. Cost is now resolved by Langfuse server-side from `gen_ai.provider.name` + `gen_ai.request.model` + `gen_ai.usage.input_tokens|output_tokens` via its per-model price registry. The unnamespaced `model` and `provider` span attributes are also dropped in the same pass — consumers should key on `gen_ai.request.model` and `gen_ai.system` (and, transitionally, `gen_ai.provider.name`) instead. `MCALiteLLMCallback`'s local `genai.cost_usd` histogram is retained because its value is provider-computed via `litellm.completion_cost()`, not derived from the deprecated static pricing tables (tk_e0237bafa19a4365).
33
+ - `build_request_attributes` in `mca_sdk/integrations/_genai_attrs.py` now dual-emits `gen_ai.provider.name` alongside `gen_ai.system` during the OTel semantic-conventions 1.34+ transition window. Consumers keyed on either name see the same value. `gen_ai.system` is scheduled for removal in v0.11.0 once Langfuse's OTLP mapper picks up the new attribute name (tk_e0237bafa19a4365).
34
+
35
+ ### Deprecated
36
+ - `mca_sdk.integrations.genai.estimate_openai_cost`, `estimate_anthropic_cost`, `OPENAI_PRICING`, and `ANTHROPIC_PRICING` are deprecated. Access via `from mca_sdk.integrations.genai import ...` (all four names) or `from mca_sdk.integrations import estimate_openai_cost` (only the historically re-exported name) now emits a `DeprecationWarning` routed through a PEP 562 module `__getattr__` shim; the underlying values continue to work correctly for one release. Langfuse's per-model price registry supersedes them — callers should emit tokens only and let Langfuse compute cost from `gen_ai.provider.name` + `gen_ai.request.model` + `gen_ai.usage.*_tokens`. Callers with irregular provider/model combos should upstream pricing entries to Langfuse rather than pin the SDK's static tables. Removal target: v0.11.0 (tk_e0237bafa19a4365).
37
+ - `MCAClient.record_llm_generation` yields an `_LLMGenerationRecorder` whose `.set_cost(cost_usd)` handle is deprecated for the same reason; the call still works and emits a `DeprecationWarning` (`stacklevel=2`, so the warning is attributed to the caller). Emit tokens via `gen.set_usage` / `gen.set_usage_from_response` and let Langfuse price the span server-side. Removal target: v0.11.0 (tk_e0237bafa19a4365).
38
+ - Follow-up: `mca_sdk.autolog._openai`, `mca_sdk.autolog._anthropic`, and `MCALlamaIndexCallback` still call the legacy pricing helpers via the private aliases (`_estimate_openai_cost_impl`, `_estimate_anthropic_cost_impl`) so this release does not spam DeprecationWarnings on downstream unit tests. Their migration to token-only emission (Langfuse handoff) is tracked as a separate ticket and lands ahead of the v0.11.0 removal (tk_e0237bafa19a4365).
39
+
40
+ ### Docs
41
+ - `mca_sdk/FOR_AI_ASSISTANTS.md`: added §2A "Required baseline emission contract" — a 7-row table (regression×internal, classification×internal, time-series×internal, generative×internal, agentic×internal, vendor in-process wrapper, vendor out-of-process bridge) declaring the metrics, log-extras, per-emission attributes, and downstream failure modes each `(model_type, model_category)` shape MUST produce regardless of which AI coding assistant runs the instrumentation prompt. Row 4 mandates `gen_ai.response.model` for OpenAI ChatCompletion auto-fallback paths. Row 5 phrases `association_id` as a stable run-scoped identifier (LangGraph `thread_id` given as one example, not a hard bind). Row 7 explicitly disclaims `record_prediction` for out-of-process vendor bridges. Added §2A.1 declaring three known SDK deviations that assistants must NOT hand-work-around (LlamaIndex legacy-only span attrs — now fixed above; LangChain deprecated key dual-emit; autolog OpenAI/Anthropic emitting `openai.*` / `anthropic.*` metric families). Stamped `> Baseline: §2A row N` back-references at the top of every §2.x pattern subsection. Replaced §6 with a two-layer verification checklist (universal items 1–4 preserved; per-type OTLP grep sub-checklists layer 2 including a `gen_ai.response.model` auto-fallback check). Appended one cross-reference sentence to §10 Variant A and Variant B. A new mistune-based doc-lint test (`tests/unit/test_for_ai_assistants_doc_lint.py`, 19 tests) asserts the table row set matches `METRIC_PREFIX_ROUTING` in `utils/routing.py`, each row's `metric_prefix` cell matches `get_metric_prefix()`, row 4's per-emission attrs match `build_request_attributes` / `build_usage_attributes` output, row 5 names every `agent.*` counter in `core/client.py`, row 7 disclaims `record_prediction` (verified against `integrations/bridge.py`), and every §2.x heading is followed by a §2A back-reference. Follow-up: `mistune>=3.0.0` needs adding to `setup.py`'s `extras_require["dev"]`.
42
+ - `docs/integration-guides/ai-assistant-guide.md`: appended a §2A cross-reference sentence to both Variant A and Variant B prompts so downstream assistants cross-check emitted OTLP against the baseline contract before signing off.
43
+ - `docs/integration-guides/{predictive,agentic,genai,vendor}-models.md` and `vendor-models-playbook.md`: one-line pointer added to the top of each: "Required baseline emissions per model type: see `mca_sdk/FOR_AI_ASSISTANTS.md` §2A."
44
+ - mca_sdk/FOR_AI_ASSISTANTS.md: added section 2.8 (Vertex online prediction batching), a new flush-placement rule in section 3, a new capture-flag rule in section 7, and section 8 (escape hatches: rawPredict, BatchPredictionJob).
45
+
46
+ ## [0.9.5] - 2026-07-20
47
+ ### Added
48
+ - Zero-code LiteLLM auto-instrumentation via LiteLLMInstrumentor BaseInstrumentor (registered as opentelemetry_instrumentor entry point).
49
+ - mca_sdk.integrations._autoregister helper: mca-instrument now auto-registers MCALiteLLMCallback / MCALangChainCallback / MCALlamaIndexCallback when the respective libraries are installed. Opt-out via MCA_DISABLE_LLM_CALLBACKS.
50
+ - Experimental Google ADK PoC instrumentation (opt-in via MCA_ENABLE_ADK_POC=1) in mca_sdk.instrumentation.adk_poc.
51
+ - Jupyter IPython magics (%load_ext mca_sdk.magics) - %mca_init line magic and %%mca_instrument cell magic.
52
+ - Apache Airflow integration (mca_sdk.integrations.airflow): MCAAirflowHook, @mca_task decorator, MCAOnSuccessCallback, MCAOnFailureCallback.
53
+ - KubeFlow Pipelines compile-time hook (mca_sdk.integrations.kubeflow.instrument_pipeline_yaml).
54
+ - New integration guides: jupyter-notebooks, airflow, kubeflow, time-series-models, time-series-models-playbook, adk-poc.
55
+ - New extras: otel-litellm, airflow, kubeflow.
56
+ ### Changed
57
+ - autolog() now logs discovered opentelemetry_instrumentor entry points at INFO for observability.
58
+ - GenAI integration guides note auto-registration; manual callback wiring no longer required under mca-instrument.
59
+ - mca-instrument bootstrap invokes autoregister_llm_callbacks() after autolog().
60
+ - Time-series forecasting integration docs restructured. Standalone
61
+ `time-series-models.md` and `time-series-models-playbook.md` are folded
62
+ into a dedicated §Time-Series Forecasting section of
63
+ `docs/integration-guides/predictive-models.md`. Two SDK-supported
64
+ emission patterns are now documented: Pattern A (per-step
65
+ `record_prediction` with per-step future ISO 8601 `association_id` and
66
+ 1-based `forecast_horizon_step`) is the recommended shape and matches
67
+ `example_deployed/uc-brickell-wait-time/main.py:143-163`; Pattern B
68
+ (per-run metric + per-step logs) remains as an alternative. The
69
+ zero-code exemption rationale and the Path B envelope-middleware ADR
70
+ are preserved. Cross-references in the integration-guides README,
71
+ `predictive-models-playbook.md`, `zero-code.md`, and
72
+ `zero-code-playbook.md` are repointed to the new section anchor.
73
+ - `mca_sdk/FOR_AI_ASSISTANTS.md` (guide shipped inside the wheel) gains a
74
+ §2.1.1 that routes Prophet / ARIMA / SARIMAX / multi-step-return code
75
+ signals to Pattern A, with the five per-step rules (1-based
76
+ `forecast_horizon_step`; ISO 8601 UTC `association_id` stored
77
+ verbatim, no SDK-side timezone interpretation; no caller-supplied
78
+ `timestamp` kwarg; per-step-varying `association_id`; flat kwargs on
79
+ `client.trace`). §2.1's batch rationale and §3 rule 3 are qualified to
80
+ acknowledge time-series as the intentional exception to the
81
+ one-metric-per-batch rule.
82
+ ### Fixed
83
+ - Zero-code integration modules now pass the SDK's strict mypy and Black CI gates.
84
+ - Airflow 3 uses its supported `airflow.sdk` hook import while retaining the Airflow 2 fallback.
85
+ - The docs extra now installs the OpenTelemetry instrumentation dependency required to import
86
+ and document the LiteLLM instrumentor.
87
+ - ADK positional tool calls now record the actual tool name instead of `unknown`.
88
+ - Direct-provider and LiteLLM generation spans now distinguish missing usage
89
+ and cost from genuine numeric zero using controlled `mca.*.status`
90
+ attributes and provide `set_usage_from_response()` for common Vertex,
91
+ OpenAI/LiteLLM, Anthropic, and Bedrock response shapes without estimating
92
+ missing tokens.
93
+ Usage emits current OTel input/output aliases and the `gen_ai.usage.cost`
94
+ attribute consumed by deployed Langfuse v3, while retaining legacy names.
95
+ ### Notes
96
+ - Time-series forecasting models remain exempt from the zero-code path - see the §Time-Series Forecasting section of `docs/integration-guides/predictive-models.md`. FastAPI/Flask response-parsing middleware (Path B in to-do.md) was intentionally deferred.
97
+ - Standalone apache-airflow-providers-mca PyPI package is planned as follow-up work.
98
+
99
+ ## [0.9.4] - 2026-07-16
100
+
101
+ ### Added
102
+ - **`MCA_STRICT_REGISTRY_AUTH` env var** (config field
103
+ `strict_registry_auth: bool = False` in `MCAConfig`, auto-wired through
104
+ `_load_from_env` and `from_env` in `mca_sdk/config/settings.py`). Set to
105
+ `true` (or any truthy `1` / `yes` / `on`) to restore the pre-
106
+ tk_dcaefe49fd364823 fail-closed contract: `MCAClient(...)` will raise
107
+ `ConfigurationError` when `registry_url` + `model_id` are provided without
108
+ an explicit `registry_token` / `use_gcp_auth` / `tls_insecure_registry`,
109
+ even if `registry_url` resolves to an RFC1918 / loopback / IPv6 ULA host.
110
+ Default is `False` so the soft-default from tk_dcaefe49fd364823 continues
111
+ to apply — see the `### Fixed` entry below.
112
+
113
+ ### Breaking
114
+ - **Metric shape** — `genai.tokens_total` (and its `vendor.*` / `emms_*`
115
+ renderings) is now emitted with two `token_type` values only: `prompt` and
116
+ `completion` (or `input` / `output` on the Anthropic autolog path). The
117
+ redundant `token_type="total"` bucket that previously accompanied every
118
+ request was removed. Consumer migration: dashboards that filtered
119
+ `token_type != "total"` can drop the filter; dashboards that summed
120
+ `token_type == "total"` alone must switch to a filterless
121
+ `sum by(...) (rate(genai_tokens_total[5m]))` or equivalent. Prior behavior
122
+ aggregated to `prompt + completion + total = 2 × actual`, so this is a
123
+ correctness fix but any dashboard that depended on the old shape needs to
124
+ be updated. Full detail and rationale in the `### Changed` entry below.
125
+ Fixes tk_e9e917c20ce34be9.
126
+
127
+ ### Known issues
128
+ - **`registry_token` as a kwarg is a hard `ConfigurationError`** ("Security violation: registry_token must be provided via environment variable (MCA_REGISTRY_TOKEN) only, not kwargs"). The intent — prevent tokens ending up in source control — is sound, but the implementation is a footgun for anyone reading `MCAClient.__init__` and trying to be explicit about auth wiring. **Proposed fix:** downgrade to a `DeprecationWarning` on kwarg use, still honor the value, and refuse only when the passed literal is a string literal at the call site (detectable by inspecting the caller frame, or by requiring an opt-in `MCA_ALLOW_REGISTRY_TOKEN_KWARG=true` env for kwarg use in prod-detected environments — mirrors the `MCA_ALLOW_ENV_KEYS_IN_PROD=true` pattern already in [0.8.31]). Document the env-var preference in the `MCAClient` docstring so IDE tooltips surface it before the caller writes the kwarg.
129
+ - **`MCA_USE_GCP_AUTH` env var has no native support.** `MCAConfig.from_env` (`mca_sdk/config/settings.py::_load_from_env`) reads `MCA_REGISTRY_TOKEN`, `MCA_REGISTRY_URL`, `MCA_TLS_INSECURE_REGISTRY`, etc., but there is no env-driven path to enable `use_gcp_auth`. This forces every consumer app that wants ADC-based registry auth (the pattern in `sdk-examples/internal-agentic-vertex/agent_instrumented.py:354`) to either hard-code `use_gcp_auth=True` in code or reinvent the env-var read. Parity with the existing `MCA_REGISTRY_TOKEN` env would let ops flip auth modes across environments via helm values without a code change. **Proposed fix:** add `MCA_USE_GCP_AUTH` (truthy: `1`/`true`/`yes`/`on`, case-insensitive) to `_load_from_env`, mapping to `MCAConfig.use_gcp_auth`. Precedence: explicit `use_gcp_auth=True` kwarg wins over env; env wins over the default `False`.
130
+ - **Init failure surfacing is the caller's problem.** Every consumer app that wraps `MCAClient(...)` in a `try/except Exception` re-implements the same pattern: log at ERROR with a distinctive marker, optionally re-raise for fail-fast in prod. The 2026-07-14 outage is a case study — the app-level `try/except` swallowed a `ConfigurationError` with only a `logger.warning`, and the eventual diagnosis required an SDK-source-code trace to figure out which of four possible failure modes had actually fired. **Proposed fix:** expose an `MCA_STRICT_INIT` env var (or equivalent `MCAClient(strict_init=True)` kwarg) that turns SDK-detected init-time errors into a re-raise instead of the current behavior. Complementary: add a positive-signal API (`MCAClient.is_telemetry_active() -> bool`) so consumer health checks can wire "telemetry disabled" into the same probe surface without duplicating the init try/except state. Reduces the swallow-and-log pattern to a two-line block in every consumer.
131
+
132
+ ### Fixed
133
+ - `_validate_registry_requirements` in `mca_sdk/core/client.py` no
134
+ longer fail-closes with `ConfigurationError` when `registry_url`
135
+ resolves to a private endpoint (RFC1918 10/8, 172.16/12, 192.168/16,
136
+ IPv4 loopback 127/8, IPv6 loopback `::1`, IPv6 ULA `fc00::/7`, or the
137
+ literal `localhost`) and none of `registry_token` / `use_gcp_auth` /
138
+ `tls_insecure_registry` is set. IPv4 link-local `169.254/16` and IPv6
139
+ link-local `fe80::/10` are deliberately **excluded** from the soft-
140
+ default because those ranges host cloud instance-metadata endpoints
141
+ (IMDS at `169.254.169.254` on GCE / GKE / EKS / AKS) — auto-enabling
142
+ `tls_insecure_registry` for such a URL would create an SSRF-adjacent
143
+ footgun when `MCA_REGISTRY_URL` is derived from user-controlled
144
+ config. The SDK now auto-selects `tls_insecure_registry=True` for the
145
+ supported private classes and emits a WARNING that names the parsed
146
+ host (URL redacted) plus the three explicit-auth kwargs the caller
147
+ could set for production. The WARNING fires on **every** construction
148
+ even when `tls_insecure_registry` is already True (defense against
149
+ the shared-`MCAConfig` factory pattern that used to silently short-
150
+ circuit the branch on the second init). Public URLs still raise the pre-fix
151
+ `ConfigurationError` unchanged. New env
152
+ `MCA_STRICT_REGISTRY_AUTH=true` (config field
153
+ `strict_registry_auth: bool = False`) restores the pre-fix
154
+ fail-closed behavior for operators who want the old contract.
155
+ Endpoint classification lives in a new module
156
+ `mca_sdk/utils/network.py` (`_is_private_endpoint`,
157
+ `_extract_host`) so IPv6 ULA and link-local support are covered by
158
+ Python's stdlib `ipaddress` module — no bespoke CIDR parsing.
159
+ Motivating incident: deployment-agent 2026-07-14 17:38 UTC outage —
160
+ `MCA_REGISTRY_URL=https://10.164.76.59` was added without auth
161
+ kwargs; the caller's `try/except Exception` swallowed the
162
+ `ConfigurationError` and left `_client=None` for the whole pod
163
+ lifetime. Regression tests at
164
+ `tests/unit/test_registry_rfc1918_softdefault.py` cover 10 private
165
+ and 3 public URL classes, the strict-mode escape hatch, and the
166
+ explicit-token bypass. Fixes tk_dcaefe49fd364823.
167
+ - `record_policy_violation` in `mca_sdk/core/client.py:4886` now
168
+ increments a new `agent.policy_violations_total` counter (created in
169
+ `_initialize_agentic_metrics` at `client.py:2256-2324`) on every call.
170
+ Previously the method emitted only a `genai.agent.policy_violation`
171
+ span event, forcing the V1 agentic dashboard's "Unauthorized actions"
172
+ tile to scan trace/span-event storage — slow and coupled to trace
173
+ retention. The counter fires unconditionally, including when there is
174
+ no active recording span (auth checks, request validators outside a
175
+ goal context), so consumers can build the rate metric purely from the
176
+ metric surface. The span event is preserved unchanged inside the
177
+ existing `is_recording()` branch. Metric label is `policy_type`,
178
+ sanitized to 100 chars (matching the existing span-event
179
+ sanitization). Documented in `docs/data-models.md` and
180
+ `docs/integration-guides/agentic-models.md`. Fixes tk_5faf104898aa4db3.
181
+ - `_resolve_temporality_preference` in `mca_sdk/core/providers.py:389-476`
182
+ now auto-selects CUMULATIVE for sum-type instruments on Cloud Run
183
+ (detected via the `K_SERVICE` env var the runtime injects on every
184
+ container) when neither `MCA_OTEL_TEMPORALITY` nor
185
+ `OTEL_EXPORTER_OTLP_METRICS_TEMPORALITY_PREFERENCE` is set. Root
186
+ cause: sum-type instruments (Counter, UpDownCounter, ObservableCounter,
187
+ ObservableUpDownCounter) previously exported as DELTA unconditionally
188
+ — `SumAggregator.collect()` resets to 0 on every export cycle. On
189
+ Cloud Run Gen2 with `cpu-throttling=true` and `minScale=0`, the
190
+ `PeriodicExportingMetricReader`'s daemon worker is starved during
191
+ the post-request throttle window, `BufferedOTLPMetricExporter`
192
+ exhausts retries at three drop points (`exporters.py:178-188`,
193
+ `exporters.py:207`, `exporters.py:518-526`), and every dropped delta
194
+ is permanently lost — counters stuck at 0 in Cloud Monitoring despite
195
+ verified `.add(1)` calls. Cumulative histograms survive because they
196
+ don't reset on collect. Under CUMULATIVE, a dropped export just
197
+ means the next export re-sends the same absolute value. Diagnostic
198
+ visibility added: `setup_meter_provider` in `providers.py:943` now
199
+ emits a startup INFO log with `service.instance.id`, resolved
200
+ counter temporality, and Cloud Run detection state — closes the
201
+ "can't tell which hypothesis is real from container logs" gap.
202
+ Overrides preserved: `MCA_OTEL_TEMPORALITY=delta` or
203
+ `OTEL_EXPORTER_OTLP_METRICS_TEMPORALITY_PREFERENCE=delta` restore
204
+ DELTA behavior; `MCA_DISABLE_CLOUD_RUN_TEMPORALITY_AUTOTUNE=true`
205
+ disables the auto-tune branch entirely for operators whose
206
+ collector expects DELTA-only ingestion. No regression: GKE
207
+ long-running pods and local development (neither injects
208
+ `K_SERVICE`) continue to receive the DELTA default and are
209
+ unaffected by this change. Fixes tk_e65bfdf5eae7431c and
210
+ tk_f033a2d1f0cc4d34 (predictive counter
211
+ `emms_model_predictions_total` shared the same root cause and
212
+ is closed by the same autotune; regression test at
213
+ `tests/unit/test_predictive_counter_cumulative.py` pins the
214
+ `model.predictions_total` cumulative behavior specifically).
215
+ - `_detect_staging_collector_endpoint` in `mca_sdk.config.settings` now
216
+ falls back to `http://localhost:4318` for any socket-layer failure,
217
+ not just `socket.gaierror`. The prior narrow except clause let
218
+ `pytest_socket`'s `SocketBlockedError` — which inherits from
219
+ `RuntimeError` and whose `__init__` calls `warnings.warn(...)` before
220
+ raising — escape the handler and abort `MCAConfig` construction under
221
+ the test conftest that sets `MCA_ENV=staging`. Under `pytest.ini`'s
222
+ `filterwarnings = error`, the `warnings.warn` is promoted to a raised
223
+ `UserWarning` before the outer `RuntimeError` surfaces; under a
224
+ relaxed warning filter, the raw `RuntimeError` surfaces instead.
225
+ Result: 34 pre-existing failures in `tests/unit/test_attribute_validator.py`
226
+ (and additional cascaded failures across the suite) that all shared
227
+ this single root cause. The docstring already promised graceful
228
+ fallback; the except clause now catches `(OSError, RuntimeError, Warning)`
229
+ to cover all three surfaces (`socket.gaierror` real DNS miss,
230
+ `SocketBlockedError` raw, and warning-promoted-to-error). Real
231
+ DNS-miss behavior is unchanged because `socket.gaierror` is a
232
+ subclass of `OSError`. Fixes tk_a2fac7d943ed4b22.
233
+ - `secret_filter` no longer over-redacts metric labels whose key name
234
+ merely contains a credential word as a substring. The previous
235
+ `_key_matches_secret` used plain substring containment against a
236
+ fragment list that included bare `"token"`, so `token_type=prompt`
237
+ was wholesale-replaced with `[REDACTED:SECRET]`, collapsing every
238
+ `emms_*_tokens_total` series into a single indistinguishable label
239
+ and destroying the prompt-vs-completion breakdown at Cloud Monitoring
240
+ and ClickStack. The predicate now matches on a normalized key against
241
+ a two-tier vocabulary: `_SECRET_KEY_EXACT` (frozenset, whole-key
242
+ equality — covers bare credential words `password`, `passwd`,
243
+ `password_hash`, `secret`, `token`, `bearer`, `authorization`,
244
+ `credential`, `credentials` plus underscore-form and no-separator
245
+ compounds `api_key`, `apikey`, `private_key`, `access_key`,
246
+ `secret_key`, `signing_key`, `session_key`, `encryption_key`,
247
+ `apitoken`, `authtoken`, `accesstoken`, `refreshtoken`, `idtoken`,
248
+ `bearertoken`, `secretkey`, `accesskey`, `privatekey`, `signingkey`,
249
+ `sessionkey`, `encryptionkey`, `credentialsfile`, `credentialscache`,
250
+ `credentialsjson`) and `_SECRET_KEY_SUFFIXES` (underscore-anchored
251
+ `endswith` — covers compound keys `_password`, `_password_hash`,
252
+ `_passwd`, `_secret`, `_token`, `_bearer`, `_authorization`,
253
+ `_apikey`, `_api_key`, `_credential`, `_credentials`, `_private_key`,
254
+ `_access_key`, `_secret_key`, `_signing_key`, `_encryption_key`,
255
+ `_session_key`). A bare `_key` suffix is deliberately absent to
256
+ avoid over-matching legitimate labels like `partition_key`,
257
+ `sort_key`, `foreign_key`, `cache_key`, and `safe_key`. Key
258
+ normalization folds camelCase (`authToken` → `auth_token`),
259
+ hyphenated headers (`x-authorization`), dotted paths
260
+ (`oauth.access.token`), whitespace-separated
261
+ (`API KEY`), and leading/trailing whitespace into the same shape
262
+ before matching. Fixes tk_e02c93d75a9d4e78.
263
+ - `vendor.tokens_total` (and the peer `*.embedding_requests_total`,
264
+ `*.embedding_tokens_total`) were being emitted as a Histogram in
265
+ addition to their pre-cached Counter, because `track_llm_completion`
266
+ and `track_llm_embedding` in `mca_sdk.integrations.genai` called
267
+ `record_metric` without `instrument_type="counter"` and inherited
268
+ the default `"histogram"`. Two instruments registered on the same
269
+ Meter under the same name caused a descriptor collision: Cloud
270
+ Monitoring locked the descriptor to whichever type it observed
271
+ first and rejected the other, and in ClickStack the same MetricName
272
+ split across `otel_metrics_sum` and `otel_metrics_histogram`. The
273
+ fix also passes `instrument_type="counter"` to the
274
+ `embedding_errors_total` call site; that name did not have a
275
+ pre-cached Counter to collide with, but it was being registered as
276
+ a histogram under a `*_total` name, which is misleading. `record_metric`
277
+ now also defensively rejects NaN/Inf and coerces integer-valued
278
+ floats (e.g. `1234.0` from a vendor-bridge `transform_metrics()`)
279
+ to `int` on the **counter** path only, so gauge/up_down_counter
280
+ precision on values like `accuracy=0.92` is preserved. Fixes
281
+ tk_4b30e228b16f4cae; supersedes the "out of scope" note in the
282
+ [0.8.27] entry.
283
+
284
+ ### Changed
285
+ - **Metric shape** — `genai.tokens_total` (and its `vendor.*` /
286
+ `emms_*` renderings) is now emitted with two `token_type` values
287
+ only: `prompt` and `completion` (or `input` / `output` on the
288
+ Anthropic autolog path). The redundant `token_type="total"` bucket
289
+ that previously accompanied every request was removed so
290
+ `sum(genai.tokens_total)` without a `token_type` filter equals
291
+ actual tokens consumed. Prior behavior was
292
+ `sum = prompt + completion + total = 2 × actual`. Affected call
293
+ sites: `mca_sdk/integrations/genai.py:track_llm_completion`,
294
+ `mca_sdk/integrations/litellm_callback.py:log_success_event`,
295
+ `mca_sdk/integrations/langchain_callback.py`,
296
+ `mca_sdk/integrations/llamaindex_callback.py`,
297
+ `mca_sdk/autolog/_openai.py`, `mca_sdk/autolog/_anthropic.py`, and
298
+ the `sdk-examples/rest-api-wrapper-example.py` example. Instrument
299
+ descriptions and `MCALiteLLMCallback` docstrings updated to remove
300
+ the "always filter by token_type" warning. Consumer migration:
301
+ dashboards that filtered `token_type != "total"` can drop the
302
+ filter; dashboards that summed `token_type == "total"` alone must
303
+ switch to a filterless `sum by(...) (rate(genai_tokens_total[5m]))`
304
+ or equivalent. Regression coverage in
305
+ `tests/unit/test_genai_helpers.py`,
306
+ `tests/unit/test_litellm_callback.py`,
307
+ `tests/unit/test_genai_metric_naming.py`, and
308
+ `tests/unit/test_autolog_anthropic.py` — each asserts no emission
309
+ carries `token_type="total"`. Documented in
310
+ `docs/api-contracts.md` and
311
+ `docs/integration-guides/genai-models.md`. Fixes
312
+ tk_e9e917c20ce34be9.
313
+ - `secret_filter` internals: `_SECRET_KEY_SUBSTRINGS` is replaced by
314
+ `_SECRET_KEY_EXACT` (frozenset) plus `_SECRET_KEY_SUFFIXES` (tuple);
315
+ `_SECRET_KEY_ALLOWLIST` is removed because every prior entry
316
+ (`prediction_id`, `association_id`, `user_id`, `session_id`,
317
+ `request_id`, `trace_id`, `span_id`) ends in `_id` and structurally
318
+ misses both the exact set and the suffix tuple — no bespoke carve-out
319
+ needed. Documented behavior change: `aws_access_key_id` (and any
320
+ bare `_id`-suffixed key) no longer redacts on the key name alone.
321
+ There is no downstream safety net for this class: AWS access-key
322
+ IDs (`AKIA…`, `ASIA…`, `AGPA…`, `AIDA…`) are 20-char alphanumeric
323
+ strings and match none of the `sk-*` / JWT / PEM value-shape
324
+ patterns. Callers that pass AWS-style identifiers as attribute
325
+ keys MUST either rename the key to a covered suffix
326
+ (e.g. `aws_access_key`) or scrub upstream. Value-shape redaction
327
+ is unchanged and still catches `sk-*`, JWT, and PEM material
328
+ stored under any key, so
329
+ callers that emit credential-shaped AWS keys as values are unaffected.
330
+ Callers depending on key-only redaction for AWS-style identifiers
331
+ should rename the key to end in a covered suffix or scrub upstream.
332
+
333
+ ### SDK version pinning (previously staged as 0.9.4)
334
+
335
+ **Added**
336
+
337
+ - `PinnedVersionError` exception in `mca_sdk.utils.exceptions`, exported
338
+ from the top-level `mca_sdk` package. Raised at MCAClient bootstrap
339
+ when the running SDK version does not satisfy a registry- or
340
+ config-declared pin.
341
+ - `ModelConfig` (registry response) now carries optional
342
+ `pinned_sdk_version`, `sdk_version_spec`, and `sdk_compat_notes`
343
+ fields for per-model SDK version control. Backward compatible: older
344
+ registries that omit these keys parse cleanly with the fields
345
+ defaulting to None.
346
+ - `MCAConfig` gains three fields: `sdk_version_enforcement`
347
+ (`"off"`|`"warn"`|`"fail"`, defaults to `"warn"` in all
348
+ environments; explicit opt-in via
349
+ `MCA_SDK_VERSION_ENFORCEMENT=fail`), `local_pinned_sdk_version`,
350
+ and `local_sdk_version_spec`. Corresponding env vars:
351
+ `MCA_SDK_VERSION_ENFORCEMENT`, `MCA_LOCAL_PINNED_SDK_VERSION`,
352
+ `MCA_LOCAL_SDK_VERSION_SPEC`. A future 0.10.0 release will
353
+ consider making `fail` the prod default after warn-mode
354
+ dashboards prove out.
355
+ - `mca.registry.sdk_version_mismatch_total` counter on
356
+ RegistryTelemetry with attributes `expected`, `actual`, `source`,
357
+ `mode`. Emitted in both warn and fail modes when the running SDK
358
+ version does not satisfy the resolved pin.
359
+ - `X-Mca-Sdk-Version` and `User-Agent: mca-sdk/{version} python/{X.Y}`
360
+ headers are attached to every registry HTTP request so the backend
361
+ can record which SDK version is calling.
362
+ - New module `mca_sdk.compatibility` exposing
363
+ `MODEL_VERSION_SDK_MATRIX` and `lookup_spec(model_version)` as a
364
+ last-resort fallback when neither the registry nor local config
365
+ declares a pin. Ships empty; ops populates via PR review.
366
+
367
+ **Changed**
368
+
369
+ - `_validate_sdk_version` runs at MCAClient bootstrap between registry
370
+ hydration and configuration validation. Precedence: registry pin >
371
+ registry spec > config pin > config spec > shipped matrix.
372
+ Enforcement is opt-in (`sdk_version_enforcement` defaults to
373
+ `"warn"` outside prod so existing users see no change beyond a log
374
+ line on mismatch).
375
+ - `packaging>=21.0` added to install_requires. Already a transitive
376
+ dep of pip; making it explicit is a safe promotion.
377
+
378
+ **Notes**
379
+
380
+ - Registry SDK-compat fields (`pinned_sdk_version`,
381
+ `sdk_version_spec`) that arrive as non-string types are logged
382
+ and dropped; the client does not fail.
383
+ - PEP 440 prerelease semantics apply: a spec like `>=0.9,<0.11`
384
+ rejects `0.10.0.dev0`; declare prereleases explicitly (e.g.
385
+ `>=0.9.4rc1`) if you need them.
386
+ - Exact pins compare by release tuple, so `0.9.4+editable` and
387
+ `0.9.4.post1` satisfy a pin of `0.9.4`.
6
388
 
7
389
  ## [0.9.3] - 2026-07-08
8
390
 
@@ -1455,4 +1837,4 @@ client = MCAClient(service_name="my-model") # Works!
1455
1837
 
1456
1838
  [unreleased]: https://gitlab.com/bhsf/ai_ml/mca-sdk/compare/v0.8.0...HEAD
1457
1839
  [0.8.0]: https://gitlab.com/bhsf/ai_ml/mca-sdk/releases/tag/v0.8.0
1458
- [0.1.0]: https://gitlab.com/bhsf/ai_ml/mca-sdk/releases/tag/v0.1.0
1840
+ [0.1.0]: https://gitlab.com/bhsf/ai_ml/mca-sdk/releases/tag/v0.1.0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: mca-sdk
3
- Version: 0.9.4.dev1
3
+ Version: 0.9.7
4
4
  Summary: Model Collector Agent SDK for OpenTelemetry monitoring
5
5
  Author-email: Baptist Health South Florida <ai-ml@baptisthealth.net>
6
6
  License: Apache-2.0
@@ -22,6 +22,7 @@ Requires-Dist: pyyaml>=6.0
22
22
  Requires-Dist: pybreaker>=1.4.1
23
23
  Requires-Dist: cryptography>=46.0.5
24
24
  Requires-Dist: requests>=2.31.0
25
+ Requires-Dist: packaging>=21.0
25
26
  Provides-Extra: genai
26
27
  Requires-Dist: litellm>=1.17.0; extra == "genai"
27
28
  Provides-Extra: vendor
@@ -59,6 +60,7 @@ Requires-Dist: pytest-mock>=3.12.0; extra == "test"
59
60
  Requires-Dist: pytest-asyncio>=0.23.0; extra == "test"
60
61
  Requires-Dist: opentelemetry-exporter-prometheus>=0.48b0; extra == "test"
61
62
  Requires-Dist: ipython>=7.0; extra == "test"
63
+ Requires-Dist: mistune>=3.0.0; extra == "test"
62
64
  Provides-Extra: dev
63
65
  Requires-Dist: black>=24.0.0; extra == "dev"
64
66
  Requires-Dist: mypy>=1.8.0; extra == "dev"
@@ -70,8 +72,10 @@ Requires-Dist: pytest-asyncio>=0.23.0; extra == "dev"
70
72
  Requires-Dist: opentelemetry-exporter-prometheus>=0.48b0; extra == "dev"
71
73
  Requires-Dist: pdoc>=14.0.0; extra == "dev"
72
74
  Requires-Dist: ipython>=7.0; extra == "dev"
75
+ Requires-Dist: mistune>=3.0.0; extra == "dev"
73
76
  Provides-Extra: docs
74
77
  Requires-Dist: pdoc>=14.0.0; extra == "docs"
78
+ Requires-Dist: opentelemetry-instrumentation>=0.48b0; extra == "docs"
75
79
  Provides-Extra: all
76
80
  Requires-Dist: litellm>=1.17.0; extra == "all"
77
81
  Requires-Dist: flask>=3.0.0; extra == "all"
@@ -289,6 +293,11 @@ make dev-setup
289
293
  python -m venv venv
290
294
  source venv/bin/activate
291
295
  pip install -e ".[dev]"
296
+
297
+ # Install pre-commit hooks so black, ruff, and mypy run on every commit.
298
+ # CI enforces the same checks (see .gitlab-ci.yml python:lint / python:typecheck),
299
+ # so skipping this step will surface failures at MR time instead of commit time.
300
+ pre-commit install
292
301
  ```
293
302
 
294
303
  ## Instrumentation Approaches
@@ -1150,11 +1159,8 @@ volumes:
1150
1159
  ### Running Tests
1151
1160
 
1152
1161
  ```bash
1153
- # Run all tests with coverage (requires 85% coverage)
1162
+ # Run all tests with coverage
1154
1163
  make test
1155
-
1156
- # Run tests manually
1157
- pytest tests/ -v --cov=mca-prototype/mca_sdk --cov-fail-under=85
1158
1164
  ```
1159
1165
 
1160
1166
  ### Code Quality & Linting
@@ -1428,6 +1434,7 @@ See `.env.example` for all available configuration options.
1428
1434
  - `agent.tool_latency_seconds` (histogram per tool)
1429
1435
  - `agent.human_interventions_total` (counter)
1430
1436
  - `agent.reasoning_steps_total` (counter)
1437
+ - `agent.policy_violations_total` (counter with policy_type label)
1431
1438
  - Traces:
1432
1439
  - `agent.goal` (parent span for entire goal)
1433
1440
  - `agent.planning` (search strategy)
@@ -198,6 +198,11 @@ make dev-setup
198
198
  python -m venv venv
199
199
  source venv/bin/activate
200
200
  pip install -e ".[dev]"
201
+
202
+ # Install pre-commit hooks so black, ruff, and mypy run on every commit.
203
+ # CI enforces the same checks (see .gitlab-ci.yml python:lint / python:typecheck),
204
+ # so skipping this step will surface failures at MR time instead of commit time.
205
+ pre-commit install
201
206
  ```
202
207
 
203
208
  ## Instrumentation Approaches
@@ -1059,11 +1064,8 @@ volumes:
1059
1064
  ### Running Tests
1060
1065
 
1061
1066
  ```bash
1062
- # Run all tests with coverage (requires 85% coverage)
1067
+ # Run all tests with coverage
1063
1068
  make test
1064
-
1065
- # Run tests manually
1066
- pytest tests/ -v --cov=mca-prototype/mca_sdk --cov-fail-under=85
1067
1069
  ```
1068
1070
 
1069
1071
  ### Code Quality & Linting
@@ -1337,6 +1339,7 @@ See `.env.example` for all available configuration options.
1337
1339
  - `agent.tool_latency_seconds` (histogram per tool)
1338
1340
  - `agent.human_interventions_total` (counter)
1339
1341
  - `agent.reasoning_steps_total` (counter)
1342
+ - `agent.policy_violations_total` (counter with policy_type label)
1340
1343
  - Traces:
1341
1344
  - `agent.goal` (parent span for entire goal)
1342
1345
  - `agent.planning` (search strategy)