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.
- {mca_sdk-0.9.4.dev1 → mca_sdk-0.9.7}/CHANGELOG.md +384 -2
- {mca_sdk-0.9.4.dev1/mca_sdk.egg-info → mca_sdk-0.9.7}/PKG-INFO +12 -5
- {mca_sdk-0.9.4.dev1 → mca_sdk-0.9.7}/README.md +7 -4
- {mca_sdk-0.9.4.dev1 → mca_sdk-0.9.7}/mca-sdk-nodejs/package-lock.json +163 -180
- mca_sdk-0.9.7/mca_sdk/FOR_AI_ASSISTANTS.md +1157 -0
- {mca_sdk-0.9.4.dev1 → mca_sdk-0.9.7}/mca_sdk/__init__.py +6 -0
- {mca_sdk-0.9.4.dev1 → mca_sdk-0.9.7}/mca_sdk/_version.py +3 -3
- {mca_sdk-0.9.4.dev1 → mca_sdk-0.9.7}/mca_sdk/ai_assist/jupyter.py +2 -2
- {mca_sdk-0.9.4.dev1 → mca_sdk-0.9.7}/mca_sdk/autolog/__init__.py +20 -1
- {mca_sdk-0.9.4.dev1 → mca_sdk-0.9.7}/mca_sdk/autolog/_anthropic.py +9 -11
- {mca_sdk-0.9.4.dev1 → mca_sdk-0.9.7}/mca_sdk/autolog/_base.py +42 -9
- {mca_sdk-0.9.4.dev1 → mca_sdk-0.9.7}/mca_sdk/autolog/_openai.py +8 -10
- {mca_sdk-0.9.4.dev1 → mca_sdk-0.9.7}/mca_sdk/cli/_bootstrap.py +19 -0
- {mca_sdk-0.9.4.dev1 → mca_sdk-0.9.7}/mca_sdk/cli/init.py +12 -6
- {mca_sdk-0.9.4.dev1 → mca_sdk-0.9.7}/mca_sdk/cli/run.py +4 -2
- mca_sdk-0.9.7/mca_sdk/cli/verify.py +226 -0
- mca_sdk-0.9.7/mca_sdk/compatibility.py +47 -0
- {mca_sdk-0.9.4.dev1 → mca_sdk-0.9.7}/mca_sdk/config/settings.py +79 -7
- {mca_sdk-0.9.4.dev1 → mca_sdk-0.9.7}/mca_sdk/core/client.py +761 -41
- {mca_sdk-0.9.4.dev1 → mca_sdk-0.9.7}/mca_sdk/core/providers.py +81 -0
- mca_sdk-0.9.7/mca_sdk/instrumentation/__init__.py +1 -0
- mca_sdk-0.9.7/mca_sdk/instrumentation/adk_poc.py +193 -0
- mca_sdk-0.9.7/mca_sdk/instrumentation/litellm/__init__.py +4 -0
- mca_sdk-0.9.7/mca_sdk/instrumentation/litellm/instrumentor.py +379 -0
- mca_sdk-0.9.7/mca_sdk/instrumentation/litellm/package.py +2 -0
- mca_sdk-0.9.7/mca_sdk/instrumentation/litellm/version.py +2 -0
- mca_sdk-0.9.7/mca_sdk/integrations/__init__.py +112 -0
- mca_sdk-0.9.7/mca_sdk/integrations/_autoregister.py +180 -0
- {mca_sdk-0.9.4.dev1 → mca_sdk-0.9.7}/mca_sdk/integrations/_genai_attrs.py +109 -14
- mca_sdk-0.9.7/mca_sdk/integrations/airflow.py +192 -0
- {mca_sdk-0.9.4.dev1 → mca_sdk-0.9.7}/mca_sdk/integrations/decorators.py +71 -52
- {mca_sdk-0.9.4.dev1 → mca_sdk-0.9.7}/mca_sdk/integrations/genai.py +97 -49
- mca_sdk-0.9.7/mca_sdk/integrations/kubeflow.py +134 -0
- {mca_sdk-0.9.4.dev1 → mca_sdk-0.9.7}/mca_sdk/integrations/langchain_callback.py +108 -84
- {mca_sdk-0.9.4.dev1 → mca_sdk-0.9.7}/mca_sdk/integrations/litellm_callback.py +25 -21
- {mca_sdk-0.9.4.dev1 → mca_sdk-0.9.7}/mca_sdk/integrations/llamaindex_callback.py +71 -31
- {mca_sdk-0.9.4.dev1 → mca_sdk-0.9.7}/mca_sdk/integrations/state.py +8 -4
- mca_sdk-0.9.7/mca_sdk/magics/__init__.py +112 -0
- {mca_sdk-0.9.4.dev1 → mca_sdk-0.9.7}/mca_sdk/registry/client.py +104 -4
- {mca_sdk-0.9.4.dev1 → mca_sdk-0.9.7}/mca_sdk/registry/models.py +38 -0
- {mca_sdk-0.9.4.dev1 → mca_sdk-0.9.7}/mca_sdk/registry/telemetry.py +38 -0
- {mca_sdk-0.9.4.dev1 → mca_sdk-0.9.7}/mca_sdk/security/secret_filter.py +142 -43
- {mca_sdk-0.9.4.dev1 → mca_sdk-0.9.7}/mca_sdk/utils/exceptions.py +92 -0
- mca_sdk-0.9.7/mca_sdk/utils/network.py +90 -0
- mca_sdk-0.9.7/mca_sdk/validation/baseline.py +401 -0
- mca_sdk-0.9.7/mca_sdk/validation/observation_buffer.py +309 -0
- {mca_sdk-0.9.4.dev1 → mca_sdk-0.9.7/mca_sdk.egg-info}/PKG-INFO +12 -5
- {mca_sdk-0.9.4.dev1 → mca_sdk-0.9.7}/mca_sdk.egg-info/SOURCES.txt +32 -0
- {mca_sdk-0.9.4.dev1 → mca_sdk-0.9.7}/mca_sdk.egg-info/entry_points.txt +1 -0
- {mca_sdk-0.9.4.dev1 → mca_sdk-0.9.7}/mca_sdk.egg-info/requires.txt +4 -0
- {mca_sdk-0.9.4.dev1 → mca_sdk-0.9.7}/mca_sdk.egg-info/scm_file_list.json +595 -563
- mca_sdk-0.9.7/mca_sdk.egg-info/scm_version.json +8 -0
- {mca_sdk-0.9.4.dev1 → mca_sdk-0.9.7}/pyproject.toml +5 -1
- {mca_sdk-0.9.4.dev1 → mca_sdk-0.9.7}/pytest.ini +14 -0
- {mca_sdk-0.9.4.dev1 → mca_sdk-0.9.7}/sdk-examples/internal-agentic/Dockerfile +29 -1
- {mca_sdk-0.9.4.dev1 → mca_sdk-0.9.7}/sdk-examples/internal-agentic/agent_instrumented.py +7 -0
- {mca_sdk-0.9.4.dev1 → mca_sdk-0.9.7}/sdk-examples/internal-genai/Dockerfile +29 -1
- {mca_sdk-0.9.4.dev1 → mca_sdk-0.9.7}/sdk-examples/internal-genai/litellm_instrumented.py +16 -4
- {mca_sdk-0.9.4.dev1 → mca_sdk-0.9.7}/sdk-examples/internal-model/Dockerfile +29 -1
- {mca_sdk-0.9.4.dev1 → mca_sdk-0.9.7}/sdk-examples/internal-model/instrumented_model.py +7 -0
- {mca_sdk-0.9.4.dev1 → mca_sdk-0.9.7}/sdk-examples/rest-api-various-vendors.py +31 -24
- {mca_sdk-0.9.4.dev1 → mca_sdk-0.9.7}/sdk-examples/rest-api-wrapper-example.py +28 -43
- {mca_sdk-0.9.4.dev1 → mca_sdk-0.9.7}/sdk-examples/shared/__init__.py +2 -0
- mca_sdk-0.9.7/sdk-examples/shared/smoke_test.py +56 -0
- {mca_sdk-0.9.4.dev1 → mca_sdk-0.9.7}/sdk-examples/vendor-bridge/Dockerfile +24 -0
- {mca_sdk-0.9.4.dev1 → mca_sdk-0.9.7}/setup.py +29 -0
- {mca_sdk-0.9.4.dev1 → mca_sdk-0.9.7}/test-requirements.txt +2 -0
- mca_sdk-0.9.7/tests/integration/test_baseline_verify_e2e.py +95 -0
- mca_sdk-0.9.7/tests/integration/test_litellm_zero_code.py +45 -0
- {mca_sdk-0.9.4.dev1 → mca_sdk-0.9.7}/tests/security/test_secret_masking.py +423 -7
- mca_sdk-0.9.7/tests/unit/test_adk_poc.py +130 -0
- mca_sdk-0.9.7/tests/unit/test_airflow_integration.py +140 -0
- {mca_sdk-0.9.4.dev1 → mca_sdk-0.9.7}/tests/unit/test_autolog_anthropic.py +7 -4
- {mca_sdk-0.9.4.dev1 → mca_sdk-0.9.7}/tests/unit/test_autolog_base_extra.py +114 -0
- {mca_sdk-0.9.4.dev1 → mca_sdk-0.9.7}/tests/unit/test_autolog_lightgbm.py +106 -0
- {mca_sdk-0.9.4.dev1 → mca_sdk-0.9.7}/tests/unit/test_autolog_openai.py +21 -0
- {mca_sdk-0.9.4.dev1 → mca_sdk-0.9.7}/tests/unit/test_autolog_sklearn.py +102 -2
- {mca_sdk-0.9.4.dev1 → mca_sdk-0.9.7}/tests/unit/test_autolog_validation.py +8 -2
- {mca_sdk-0.9.4.dev1 → mca_sdk-0.9.7}/tests/unit/test_autolog_xgboost.py +81 -2
- mca_sdk-0.9.7/tests/unit/test_autoregister.py +173 -0
- mca_sdk-0.9.7/tests/unit/test_baseline_verify.py +325 -0
- mca_sdk-0.9.7/tests/unit/test_baseline_verify_phi.py +139 -0
- {mca_sdk-0.9.4.dev1 → mca_sdk-0.9.7}/tests/unit/test_buffering_queue_helpers.py +1 -0
- mca_sdk-0.9.7/tests/unit/test_cli_verify.py +127 -0
- {mca_sdk-0.9.4.dev1 → mca_sdk-0.9.7}/tests/unit/test_client_core.py +188 -0
- {mca_sdk-0.9.4.dev1 → mca_sdk-0.9.7}/tests/unit/test_config_precedence.py +36 -18
- {mca_sdk-0.9.4.dev1 → mca_sdk-0.9.7}/tests/unit/test_config_security.py +20 -10
- {mca_sdk-0.9.4.dev1 → mca_sdk-0.9.7}/tests/unit/test_config_settings.py +5 -1
- {mca_sdk-0.9.4.dev1 → mca_sdk-0.9.7}/tests/unit/test_coverage_boost.py +3 -1
- mca_sdk-0.9.7/tests/unit/test_for_ai_assistants_doc_lint.py +446 -0
- {mca_sdk-0.9.4.dev1 → mca_sdk-0.9.7}/tests/unit/test_gcp_registry_integration.py +9 -2
- {mca_sdk-0.9.4.dev1 → mca_sdk-0.9.7}/tests/unit/test_genai_attrs.py +48 -4
- {mca_sdk-0.9.4.dev1 → mca_sdk-0.9.7}/tests/unit/test_genai_helpers.py +210 -6
- {mca_sdk-0.9.4.dev1 → mca_sdk-0.9.7}/tests/unit/test_genai_metric_naming.py +105 -6
- mca_sdk-0.9.7/tests/unit/test_kubeflow_hook.py +162 -0
- {mca_sdk-0.9.4.dev1 → mca_sdk-0.9.7}/tests/unit/test_langchain_callback.py +304 -25
- {mca_sdk-0.9.4.dev1 → mca_sdk-0.9.7}/tests/unit/test_litellm_callback.py +86 -11
- mca_sdk-0.9.7/tests/unit/test_litellm_instrumentor.py +447 -0
- {mca_sdk-0.9.4.dev1 → mca_sdk-0.9.7}/tests/unit/test_litellm_model_id_parity.py +9 -1
- {mca_sdk-0.9.4.dev1 → mca_sdk-0.9.7}/tests/unit/test_llamaindex_callback.py +77 -1
- mca_sdk-0.9.7/tests/unit/test_llm_generation.py +318 -0
- mca_sdk-0.9.7/tests/unit/test_magics.py +107 -0
- {mca_sdk-0.9.4.dev1 → mca_sdk-0.9.7}/tests/unit/test_mca_client.py +223 -0
- mca_sdk-0.9.7/tests/unit/test_observation_buffer.py +137 -0
- mca_sdk-0.9.7/tests/unit/test_predictive_counter_cumulative.py +130 -0
- {mca_sdk-0.9.4.dev1 → mca_sdk-0.9.7}/tests/unit/test_registry_hydration.py +1 -0
- mca_sdk-0.9.7/tests/unit/test_registry_rfc1918_softdefault.py +223 -0
- mca_sdk-0.9.7/tests/unit/test_sdk_version_pin.py +736 -0
- {mca_sdk-0.9.4.dev1 → mca_sdk-0.9.7}/tests/unit/test_secure_token_handling.py +16 -8
- {mca_sdk-0.9.4.dev1 → mca_sdk-0.9.7}/tests/unit/test_temporality_resolver.py +82 -0
- mca_sdk-0.9.4.dev1/mca_sdk/FOR_AI_ASSISTANTS.md +0 -552
- mca_sdk-0.9.4.dev1/mca_sdk/integrations/__init__.py +0 -65
- mca_sdk-0.9.4.dev1/mca_sdk.egg-info/scm_version.json +0 -8
- mca_sdk-0.9.4.dev1/tests/unit/test_llm_generation.py +0 -119
- {mca_sdk-0.9.4.dev1 → mca_sdk-0.9.7}/.coveragerc +0 -0
- {mca_sdk-0.9.4.dev1 → mca_sdk-0.9.7}/.dockerignore +0 -0
- {mca_sdk-0.9.4.dev1 → mca_sdk-0.9.7}/.env.gcp-dev.example +0 -0
- {mca_sdk-0.9.4.dev1 → mca_sdk-0.9.7}/.gitignore +0 -0
- {mca_sdk-0.9.4.dev1 → mca_sdk-0.9.7}/.pip-audit-allowlist.txt +0 -0
- {mca_sdk-0.9.4.dev1 → mca_sdk-0.9.7}/.pypirc +0 -0
- {mca_sdk-0.9.4.dev1 → mca_sdk-0.9.7}/44.0.0 +0 -0
- {mca_sdk-0.9.4.dev1 → mca_sdk-0.9.7}/=0.24.0 +0 -0
- {mca_sdk-0.9.4.dev1 → mca_sdk-0.9.7}/=0.6.0 +0 -0
- {mca_sdk-0.9.4.dev1 → mca_sdk-0.9.7}/=1.11.0 +0 -0
- {mca_sdk-0.9.4.dev1 → mca_sdk-0.9.7}/=1.4.0 +0 -0
- {mca_sdk-0.9.4.dev1 → mca_sdk-0.9.7}/=2.2.0 +0 -0
- {mca_sdk-0.9.4.dev1 → mca_sdk-0.9.7}/=3.5.0 +0 -0
- {mca_sdk-0.9.4.dev1 → mca_sdk-0.9.7}/LICENSE +0 -0
- {mca_sdk-0.9.4.dev1 → mca_sdk-0.9.7}/MANIFEST.in +0 -0
- {mca_sdk-0.9.4.dev1 → mca_sdk-0.9.7}/PUBLISH_INSTRUCTIONS.md +0 -0
- {mca_sdk-0.9.4.dev1 → mca_sdk-0.9.7}/RELEASE_NOTES_v0.8.10.md +0 -0
- {mca_sdk-0.9.4.dev1 → mca_sdk-0.9.7}/RELEASE_NOTES_v0.8.21.md +0 -0
- {mca_sdk-0.9.4.dev1 → mca_sdk-0.9.7}/RELEASE_NOTES_v0.8.22.md +0 -0
- {mca_sdk-0.9.4.dev1 → mca_sdk-0.9.7}/RELEASE_NOTES_v0.8.30.md +0 -0
- {mca_sdk-0.9.4.dev1 → mca_sdk-0.9.7}/bandit-report.json +0 -0
- {mca_sdk-0.9.4.dev1 → mca_sdk-0.9.7}/baseline_report.txt +0 -0
- {mca_sdk-0.9.4.dev1 → mca_sdk-0.9.7}/config/docs/collector-metrics-guide.md +0 -0
- {mca_sdk-0.9.4.dev1 → mca_sdk-0.9.7}/config/examples/README.md +0 -0
- {mca_sdk-0.9.4.dev1 → mca_sdk-0.9.7}/config/examples/test-health-check.py +0 -0
- {mca_sdk-0.9.4.dev1 → mca_sdk-0.9.7}/config/otel-collector-config.yaml +0 -0
- {mca_sdk-0.9.4.dev1 → mca_sdk-0.9.7}/config/otel-collector-mock.yml +0 -0
- {mca_sdk-0.9.4.dev1 → mca_sdk-0.9.7}/docker-compose.gcp-dev.yml +0 -0
- {mca_sdk-0.9.4.dev1 → mca_sdk-0.9.7}/docker-compose.mock.yml +0 -0
- {mca_sdk-0.9.4.dev1 → mca_sdk-0.9.7}/docker-compose.yml +0 -0
- {mca_sdk-0.9.4.dev1 → mca_sdk-0.9.7}/fix.py +0 -0
- {mca_sdk-0.9.4.dev1 → mca_sdk-0.9.7}/fix_agentic_tests.py +0 -0
- {mca_sdk-0.9.4.dev1 → mca_sdk-0.9.7}/fix_agentic_tests2.py +0 -0
- {mca_sdk-0.9.4.dev1 → mca_sdk-0.9.7}/fix_test_basic.py +0 -0
- {mca_sdk-0.9.4.dev1 → mca_sdk-0.9.7}/mca/Dockerfile +0 -0
- {mca_sdk-0.9.4.dev1 → mca_sdk-0.9.7}/mca-sdk-go/EXAMPLES.md +0 -0
- {mca_sdk-0.9.4.dev1 → mca_sdk-0.9.7}/mca-sdk-go/KNOWN_ISSUES.md +0 -0
- {mca_sdk-0.9.4.dev1 → mca_sdk-0.9.7}/mca-sdk-go/README.md +0 -0
- {mca_sdk-0.9.4.dev1 → mca_sdk-0.9.7}/mca-sdk-go/TESTING_WORKBENCH.md +0 -0
- {mca_sdk-0.9.4.dev1 → mca_sdk-0.9.7}/mca-sdk-go/client.go +0 -0
- {mca_sdk-0.9.4.dev1 → mca_sdk-0.9.7}/mca-sdk-go/client_test.go +0 -0
- {mca_sdk-0.9.4.dev1 → mca_sdk-0.9.7}/mca-sdk-go/config/config.go +0 -0
- {mca_sdk-0.9.4.dev1 → mca_sdk-0.9.7}/mca-sdk-go/config/config_test.go +0 -0
- {mca_sdk-0.9.4.dev1 → mca_sdk-0.9.7}/mca-sdk-go/genai.go +0 -0
- {mca_sdk-0.9.4.dev1 → mca_sdk-0.9.7}/mca-sdk-go/genai_test.go +0 -0
- {mca_sdk-0.9.4.dev1 → mca_sdk-0.9.7}/mca-sdk-go/go.mod +0 -0
- {mca_sdk-0.9.4.dev1 → mca_sdk-0.9.7}/mca-sdk-go/go.sum +0 -0
- {mca_sdk-0.9.4.dev1 → mca_sdk-0.9.7}/mca-sdk-go/internal/telemetry/providers.go +0 -0
- {mca_sdk-0.9.4.dev1 → mca_sdk-0.9.7}/mca-sdk-go/prediction.go +0 -0
- {mca_sdk-0.9.4.dev1 → mca_sdk-0.9.7}/mca-sdk-go/quickstart.sh +0 -0
- {mca_sdk-0.9.4.dev1 → mca_sdk-0.9.7}/mca-sdk-go/registry.go +0 -0
- {mca_sdk-0.9.4.dev1 → mca_sdk-0.9.7}/mca-sdk-go/sanitization.go +0 -0
- {mca_sdk-0.9.4.dev1 → mca_sdk-0.9.7}/mca-sdk-go/sanitization_test.go +0 -0
- {mca_sdk-0.9.4.dev1 → mca_sdk-0.9.7}/mca-sdk-go/scripts/gen-godoc.sh +0 -0
- {mca_sdk-0.9.4.dev1 → mca_sdk-0.9.7}/mca-sdk-go/utils.go +0 -0
- {mca_sdk-0.9.4.dev1 → mca_sdk-0.9.7}/mca-sdk-go/utils_test.go +0 -0
- {mca_sdk-0.9.4.dev1 → mca_sdk-0.9.7}/mca-sdk-go/version.go +0 -0
- {mca_sdk-0.9.4.dev1 → mca_sdk-0.9.7}/mca-sdk-java/.gitignore +0 -0
- {mca_sdk-0.9.4.dev1 → mca_sdk-0.9.7}/mca-sdk-java/CHANGELOG.md +0 -0
- {mca_sdk-0.9.4.dev1 → mca_sdk-0.9.7}/mca-sdk-java/LICENSE +0 -0
- {mca_sdk-0.9.4.dev1 → mca_sdk-0.9.7}/mca-sdk-java/README.md +0 -0
- {mca_sdk-0.9.4.dev1 → mca_sdk-0.9.7}/mca-sdk-java/TESTING_WORKBENCH.md +0 -0
- {mca_sdk-0.9.4.dev1 → mca_sdk-0.9.7}/mca-sdk-java/VALIDATION_GUIDE.md +0 -0
- {mca_sdk-0.9.4.dev1 → mca_sdk-0.9.7}/mca-sdk-java/examples/AdvancedInstrumentationExample.java +0 -0
- {mca_sdk-0.9.4.dev1 → mca_sdk-0.9.7}/mca-sdk-java/examples/GCPExporterExample.java +0 -0
- {mca_sdk-0.9.4.dev1 → mca_sdk-0.9.7}/mca-sdk-java/examples/InternalModelExample.java +0 -0
- {mca_sdk-0.9.4.dev1 → mca_sdk-0.9.7}/mca-sdk-java/pom.xml +0 -0
- {mca_sdk-0.9.4.dev1 → mca_sdk-0.9.7}/mca-sdk-java/scripts/publish.sh +0 -0
- {mca_sdk-0.9.4.dev1 → mca_sdk-0.9.7}/mca-sdk-java/scripts/test-dependency.sh +0 -0
- {mca_sdk-0.9.4.dev1 → mca_sdk-0.9.7}/mca-sdk-java/scripts/verify-package.sh +0 -0
- {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
- {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
- {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
- {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
- {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
- {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
- {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
- {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
- {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
- {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
- {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
- {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
- {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
- {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
- {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
- {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
- {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
- {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
- {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
- {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
- {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
- {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
- {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
- {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
- {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
- {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
- {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
- {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
- {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
- {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
- {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
- {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
- {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
- {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
- {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
- {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
- {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
- {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
- {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
- {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
- {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
- {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
- {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
- {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
- {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
- {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
- {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
- {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
- {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
- {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
- {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
- {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
- {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
- {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
- {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
- {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
- {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
- {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
- {mca_sdk-0.9.4.dev1 → mca_sdk-0.9.7}/mca-sdk-java/src/main/java/examples/InternalModelExample.java +0 -0
- {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
- {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
- {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
- {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
- {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
- {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
- {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
- {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
- {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
- {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
- {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
- {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
- {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
- {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
- {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
- {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
- {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
- {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
- {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
- {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
- {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
- {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
- {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
- {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
- {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
- {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
- {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
- {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
- {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
- {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
- {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
- {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
- {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
- {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
- {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
- {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
- {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
- {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
- {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
- {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
- {mca_sdk-0.9.4.dev1 → mca_sdk-0.9.7}/mca-sdk-nodejs/.eslintrc.js +0 -0
- {mca_sdk-0.9.4.dev1 → mca_sdk-0.9.7}/mca-sdk-nodejs/.gitignore +0 -0
- {mca_sdk-0.9.4.dev1 → mca_sdk-0.9.7}/mca-sdk-nodejs/.npmignore +0 -0
- {mca_sdk-0.9.4.dev1 → mca_sdk-0.9.7}/mca-sdk-nodejs/.prettierrc +0 -0
- {mca_sdk-0.9.4.dev1 → mca_sdk-0.9.7}/mca-sdk-nodejs/CHANGELOG.md +0 -0
- {mca_sdk-0.9.4.dev1 → mca_sdk-0.9.7}/mca-sdk-nodejs/LICENSE +0 -0
- {mca_sdk-0.9.4.dev1 → mca_sdk-0.9.7}/mca-sdk-nodejs/README.md +0 -0
- {mca_sdk-0.9.4.dev1 → mca_sdk-0.9.7}/mca-sdk-nodejs/examples/simple-example.ts +0 -0
- {mca_sdk-0.9.4.dev1 → mca_sdk-0.9.7}/mca-sdk-nodejs/jest.config.js +0 -0
- {mca_sdk-0.9.4.dev1 → mca_sdk-0.9.7}/mca-sdk-nodejs/package.json +0 -0
- {mca_sdk-0.9.4.dev1 → mca_sdk-0.9.7}/mca-sdk-nodejs/src/config/settings.ts +0 -0
- {mca_sdk-0.9.4.dev1 → mca_sdk-0.9.7}/mca-sdk-nodejs/src/core/client.ts +0 -0
- {mca_sdk-0.9.4.dev1 → mca_sdk-0.9.7}/mca-sdk-nodejs/src/core/providers.ts +0 -0
- {mca_sdk-0.9.4.dev1 → mca_sdk-0.9.7}/mca-sdk-nodejs/src/index.ts +0 -0
- {mca_sdk-0.9.4.dev1 → mca_sdk-0.9.7}/mca-sdk-nodejs/src/registry/client.ts +0 -0
- {mca_sdk-0.9.4.dev1 → mca_sdk-0.9.7}/mca-sdk-nodejs/src/registry/models.ts +0 -0
- {mca_sdk-0.9.4.dev1 → mca_sdk-0.9.7}/mca-sdk-nodejs/src/types/index.ts +0 -0
- {mca_sdk-0.9.4.dev1 → mca_sdk-0.9.7}/mca-sdk-nodejs/src/utils/context.ts +0 -0
- {mca_sdk-0.9.4.dev1 → mca_sdk-0.9.7}/mca-sdk-nodejs/src/utils/exceptions.ts +0 -0
- {mca_sdk-0.9.4.dev1 → mca_sdk-0.9.7}/mca-sdk-nodejs/src/utils/logger.ts +0 -0
- {mca_sdk-0.9.4.dev1 → mca_sdk-0.9.7}/mca-sdk-nodejs/src/utils/serialization.ts +0 -0
- {mca_sdk-0.9.4.dev1 → mca_sdk-0.9.7}/mca-sdk-nodejs/test-integration-v0.4.ts +0 -0
- {mca_sdk-0.9.4.dev1 → mca_sdk-0.9.7}/mca-sdk-nodejs/test-integration.ts +0 -0
- {mca_sdk-0.9.4.dev1 → mca_sdk-0.9.7}/mca-sdk-nodejs/test-performance.ts +0 -0
- {mca_sdk-0.9.4.dev1 → mca_sdk-0.9.7}/mca-sdk-nodejs/test-registry-integration.ts +0 -0
- {mca_sdk-0.9.4.dev1 → mca_sdk-0.9.7}/mca-sdk-nodejs/tests/integration/agentic-advanced.test.ts +0 -0
- {mca_sdk-0.9.4.dev1 → mca_sdk-0.9.7}/mca-sdk-nodejs/tests/unit/client.test.ts +0 -0
- {mca_sdk-0.9.4.dev1 → mca_sdk-0.9.7}/mca-sdk-nodejs/tests/unit/config.test.ts +0 -0
- {mca_sdk-0.9.4.dev1 → mca_sdk-0.9.7}/mca-sdk-nodejs/tests/unit/context.test.ts +0 -0
- {mca_sdk-0.9.4.dev1 → mca_sdk-0.9.7}/mca-sdk-nodejs/tests/unit/registry.test.ts +0 -0
- {mca_sdk-0.9.4.dev1 → mca_sdk-0.9.7}/mca-sdk-nodejs/tests/unit/serialization.test.ts +0 -0
- {mca_sdk-0.9.4.dev1 → mca_sdk-0.9.7}/mca-sdk-nodejs/tsconfig.eslint.json +0 -0
- {mca_sdk-0.9.4.dev1 → mca_sdk-0.9.7}/mca-sdk-nodejs/tsconfig.json +0 -0
- {mca_sdk-0.9.4.dev1 → mca_sdk-0.9.7}/mca-sdk-nodejs/typedoc.json +0 -0
- {mca_sdk-0.9.4.dev1 → mca_sdk-0.9.7}/mca_instrumentation_agent/.gitlab-ci.yml +0 -0
- {mca_sdk-0.9.4.dev1 → mca_sdk-0.9.7}/mca_instrumentation_agent/__init__.py +0 -0
- {mca_sdk-0.9.4.dev1 → mca_sdk-0.9.7}/mca_instrumentation_agent/__main__.py +0 -0
- {mca_sdk-0.9.4.dev1 → mca_sdk-0.9.7}/mca_instrumentation_agent/async_io/__init__.py +0 -0
- {mca_sdk-0.9.4.dev1 → mca_sdk-0.9.7}/mca_instrumentation_agent/async_io/py.typed +0 -0
- {mca_sdk-0.9.4.dev1 → mca_sdk-0.9.7}/mca_instrumentation_agent/audit/__init__.py +0 -0
- {mca_sdk-0.9.4.dev1 → mca_sdk-0.9.7}/mca_instrumentation_agent/audit/py.typed +0 -0
- {mca_sdk-0.9.4.dev1 → mca_sdk-0.9.7}/mca_instrumentation_agent/ci/__init__.py +0 -0
- {mca_sdk-0.9.4.dev1 → mca_sdk-0.9.7}/mca_instrumentation_agent/ci/lockfile_cadence_gate.py +0 -0
- {mca_sdk-0.9.4.dev1 → mca_sdk-0.9.7}/mca_instrumentation_agent/ci/lockfile_diff_gate.py +0 -0
- {mca_sdk-0.9.4.dev1 → mca_sdk-0.9.7}/mca_instrumentation_agent/ci/lockfile_hash_gate.py +0 -0
- {mca_sdk-0.9.4.dev1 → mca_sdk-0.9.7}/mca_instrumentation_agent/ci/py.typed +0 -0
- {mca_sdk-0.9.4.dev1 → mca_sdk-0.9.7}/mca_instrumentation_agent/ci/sdk_version_invariant_gate.py +0 -0
- {mca_sdk-0.9.4.dev1 → mca_sdk-0.9.7}/mca_instrumentation_agent/ci/vuln_scan_sla_gate.py +0 -0
- {mca_sdk-0.9.4.dev1 → mca_sdk-0.9.7}/mca_instrumentation_agent/cli.py +0 -0
- {mca_sdk-0.9.4.dev1 → mca_sdk-0.9.7}/mca_instrumentation_agent/config/__init__.py +0 -0
- {mca_sdk-0.9.4.dev1 → mca_sdk-0.9.7}/mca_instrumentation_agent/config/py.typed +0 -0
- {mca_sdk-0.9.4.dev1 → mca_sdk-0.9.7}/mca_instrumentation_agent/observability/__init__.py +0 -0
- {mca_sdk-0.9.4.dev1 → mca_sdk-0.9.7}/mca_instrumentation_agent/observability/py.typed +0 -0
- {mca_sdk-0.9.4.dev1 → mca_sdk-0.9.7}/mca_instrumentation_agent/py.typed +0 -0
- {mca_sdk-0.9.4.dev1 → mca_sdk-0.9.7}/mca_instrumentation_agent/pyproject.toml +0 -0
- {mca_sdk-0.9.4.dev1 → mca_sdk-0.9.7}/mca_instrumentation_agent/runtime/__init__.py +0 -0
- {mca_sdk-0.9.4.dev1 → mca_sdk-0.9.7}/mca_instrumentation_agent/runtime/py.typed +0 -0
- {mca_sdk-0.9.4.dev1 → mca_sdk-0.9.7}/mca_instrumentation_agent/runtime/run_state.py +0 -0
- {mca_sdk-0.9.4.dev1 → mca_sdk-0.9.7}/mca_instrumentation_agent/schemas/__init__.py +0 -0
- {mca_sdk-0.9.4.dev1 → mca_sdk-0.9.7}/mca_instrumentation_agent/schemas/error_codes.py +0 -0
- {mca_sdk-0.9.4.dev1 → mca_sdk-0.9.7}/mca_instrumentation_agent/schemas/py.typed +0 -0
- {mca_sdk-0.9.4.dev1 → mca_sdk-0.9.7}/mca_instrumentation_agent/tools/__init__.py +0 -0
- {mca_sdk-0.9.4.dev1 → mca_sdk-0.9.7}/mca_instrumentation_agent/tools/py.typed +0 -0
- {mca_sdk-0.9.4.dev1 → mca_sdk-0.9.7}/mca_instrumentation_agent/uv.lock +0 -0
- {mca_sdk-0.9.4.dev1 → mca_sdk-0.9.7}/mca_sdk/ai_assist/__init__.py +0 -0
- {mca_sdk-0.9.4.dev1 → mca_sdk-0.9.7}/mca_sdk/ai_assist/cli_install.py +0 -0
- {mca_sdk-0.9.4.dev1 → mca_sdk-0.9.7}/mca_sdk/ai_assist/templates/claude-code/mca-instrument.md +0 -0
- {mca_sdk-0.9.4.dev1 → mca_sdk-0.9.7}/mca_sdk/ai_assist/templates/copilot/copilot-instructions.md +0 -0
- {mca_sdk-0.9.4.dev1 → mca_sdk-0.9.7}/mca_sdk/ai_assist/templates/cursor/mca-instrument.mdc +0 -0
- {mca_sdk-0.9.4.dev1 → mca_sdk-0.9.7}/mca_sdk/ai_assist/templates/gemini/GEMINI.md +0 -0
- {mca_sdk-0.9.4.dev1 → mca_sdk-0.9.7}/mca_sdk/ai_assist/templates/notebook/mca_starter.ipynb +0 -0
- {mca_sdk-0.9.4.dev1 → mca_sdk-0.9.7}/mca_sdk/ai_assist/templates/prompts/variant_a.md +0 -0
- {mca_sdk-0.9.4.dev1 → mca_sdk-0.9.7}/mca_sdk/ai_assist/templates/prompts/variant_b.md +0 -0
- {mca_sdk-0.9.4.dev1 → mca_sdk-0.9.7}/mca_sdk/autolog/_lightgbm.py +0 -0
- {mca_sdk-0.9.4.dev1 → mca_sdk-0.9.7}/mca_sdk/autolog/_sklearn.py +0 -0
- {mca_sdk-0.9.4.dev1 → mca_sdk-0.9.7}/mca_sdk/autolog/_xgboost.py +0 -0
- {mca_sdk-0.9.4.dev1 → mca_sdk-0.9.7}/mca_sdk/buffering/__init__.py +0 -0
- {mca_sdk-0.9.4.dev1 → mca_sdk-0.9.7}/mca_sdk/buffering/exporters.py +0 -0
- {mca_sdk-0.9.4.dev1 → mca_sdk-0.9.7}/mca_sdk/buffering/queue.py +0 -0
- {mca_sdk-0.9.4.dev1 → mca_sdk-0.9.7}/mca_sdk/buffering/queued_item.py +0 -0
- {mca_sdk-0.9.4.dev1 → mca_sdk-0.9.7}/mca_sdk/buffering/retry.py +0 -0
- {mca_sdk-0.9.4.dev1 → mca_sdk-0.9.7}/mca_sdk/cli/__init__.py +0 -0
- {mca_sdk-0.9.4.dev1 → mca_sdk-0.9.7}/mca_sdk/cli/instrument.py +0 -0
- {mca_sdk-0.9.4.dev1 → mca_sdk-0.9.7}/mca_sdk/config/__init__.py +0 -0
- {mca_sdk-0.9.4.dev1 → mca_sdk-0.9.7}/mca_sdk/core/__init__.py +0 -0
- {mca_sdk-0.9.4.dev1 → mca_sdk-0.9.7}/mca_sdk/core/gcp_auth.py +0 -0
- {mca_sdk-0.9.4.dev1 → mca_sdk-0.9.7}/mca_sdk/exporters/__init__.py +0 -0
- {mca_sdk-0.9.4.dev1 → mca_sdk-0.9.7}/mca_sdk/exporters/gcp_logging.py +0 -0
- {mca_sdk-0.9.4.dev1 → mca_sdk-0.9.7}/mca_sdk/exporters/gcp_trace_exporter.py +0 -0
- {mca_sdk-0.9.4.dev1 → mca_sdk-0.9.7}/mca_sdk/integrations/bridge.py +0 -0
- {mca_sdk-0.9.4.dev1 → mca_sdk-0.9.7}/mca_sdk/py.typed +0 -0
- {mca_sdk-0.9.4.dev1 → mca_sdk-0.9.7}/mca_sdk/registry/__init__.py +0 -0
- {mca_sdk-0.9.4.dev1 → mca_sdk-0.9.7}/mca_sdk/resilience/__init__.py +0 -0
- {mca_sdk-0.9.4.dev1 → mca_sdk-0.9.7}/mca_sdk/resilience/circuit_breaker.py +0 -0
- {mca_sdk-0.9.4.dev1 → mca_sdk-0.9.7}/mca_sdk/resilience/dead_letter_queue.py +0 -0
- {mca_sdk-0.9.4.dev1 → mca_sdk-0.9.7}/mca_sdk/security/__init__.py +0 -0
- {mca_sdk-0.9.4.dev1 → mca_sdk-0.9.7}/mca_sdk/security/_testing.py +0 -0
- {mca_sdk-0.9.4.dev1 → mca_sdk-0.9.7}/mca_sdk/security/certificate.py +0 -0
- {mca_sdk-0.9.4.dev1 → mca_sdk-0.9.7}/mca_sdk/security/certificates.py +0 -0
- {mca_sdk-0.9.4.dev1 → mca_sdk-0.9.7}/mca_sdk/security/encryption.py +0 -0
- {mca_sdk-0.9.4.dev1 → mca_sdk-0.9.7}/mca_sdk/security/migration.py +0 -0
- {mca_sdk-0.9.4.dev1 → mca_sdk-0.9.7}/mca_sdk/security/phi_filter.py +0 -0
- {mca_sdk-0.9.4.dev1 → mca_sdk-0.9.7}/mca_sdk/utils/__init__.py +0 -0
- {mca_sdk-0.9.4.dev1 → mca_sdk-0.9.7}/mca_sdk/utils/environment.py +0 -0
- {mca_sdk-0.9.4.dev1 → mca_sdk-0.9.7}/mca_sdk/utils/gcp_validators.py +0 -0
- {mca_sdk-0.9.4.dev1 → mca_sdk-0.9.7}/mca_sdk/utils/phi_safe_capture.py +0 -0
- {mca_sdk-0.9.4.dev1 → mca_sdk-0.9.7}/mca_sdk/utils/phi_utils.py +0 -0
- {mca_sdk-0.9.4.dev1 → mca_sdk-0.9.7}/mca_sdk/utils/routing.py +0 -0
- {mca_sdk-0.9.4.dev1 → mca_sdk-0.9.7}/mca_sdk/utils/serialization.py +0 -0
- {mca_sdk-0.9.4.dev1 → mca_sdk-0.9.7}/mca_sdk/utils/version_check.py +0 -0
- {mca_sdk-0.9.4.dev1 → mca_sdk-0.9.7}/mca_sdk/validation/__init__.py +0 -0
- {mca_sdk-0.9.4.dev1 → mca_sdk-0.9.7}/mca_sdk/validation/attributes.py +0 -0
- {mca_sdk-0.9.4.dev1 → mca_sdk-0.9.7}/mca_sdk/validation/naming_conventions.py +0 -0
- {mca_sdk-0.9.4.dev1 → mca_sdk-0.9.7}/mca_sdk/validation/result.py +0 -0
- {mca_sdk-0.9.4.dev1 → mca_sdk-0.9.7}/mca_sdk/validation/rules.py +0 -0
- {mca_sdk-0.9.4.dev1 → mca_sdk-0.9.7}/mca_sdk/validation/schema.py +0 -0
- {mca_sdk-0.9.4.dev1 → mca_sdk-0.9.7}/mca_sdk/validation/telemetry_attributes.py +0 -0
- {mca_sdk-0.9.4.dev1 → mca_sdk-0.9.7}/mca_sdk/validation/validator.py +0 -0
- {mca_sdk-0.9.4.dev1 → mca_sdk-0.9.7}/mca_sdk/version.py +0 -0
- {mca_sdk-0.9.4.dev1 → mca_sdk-0.9.7}/mca_sdk.egg-info/dependency_links.txt +0 -0
- {mca_sdk-0.9.4.dev1 → mca_sdk-0.9.7}/mca_sdk.egg-info/top_level.txt +0 -0
- {mca_sdk-0.9.4.dev1 → mca_sdk-0.9.7}/mypy.ini +0 -0
- {mca_sdk-0.9.4.dev1 → mca_sdk-0.9.7}/notebooks/README.md +0 -0
- {mca_sdk-0.9.4.dev1 → mca_sdk-0.9.7}/notebooks/end-to-end-demo.ipynb +0 -0
- {mca_sdk-0.9.4.dev1 → mca_sdk-0.9.7}/pip-audit-report.json +0 -0
- {mca_sdk-0.9.4.dev1 → mca_sdk-0.9.7}/pip-audit-results.txt +0 -0
- {mca_sdk-0.9.4.dev1 → mca_sdk-0.9.7}/profile_output.txt +0 -0
- {mca_sdk-0.9.4.dev1 → mca_sdk-0.9.7}/pylint-report.json +0 -0
- {mca_sdk-0.9.4.dev1 → mca_sdk-0.9.7}/requirements-security.txt +0 -0
- {mca_sdk-0.9.4.dev1 → mca_sdk-0.9.7}/requirements.txt +0 -0
- {mca_sdk-0.9.4.dev1 → mca_sdk-0.9.7}/sdk-examples/README.md +0 -0
- {mca_sdk-0.9.4.dev1 → mca_sdk-0.9.7}/sdk-examples/autolog-demo/README.md +0 -0
- {mca_sdk-0.9.4.dev1 → mca_sdk-0.9.7}/sdk-examples/autolog-demo/requirements.txt +0 -0
- {mca_sdk-0.9.4.dev1 → mca_sdk-0.9.7}/sdk-examples/autolog-demo/sklearn_autolog_example.py +0 -0
- {mca_sdk-0.9.4.dev1 → mca_sdk-0.9.7}/sdk-examples/direct-llm/README.md +0 -0
- {mca_sdk-0.9.4.dev1 → mca_sdk-0.9.7}/sdk-examples/direct-llm/instrumented_anthropic.py +0 -0
- {mca_sdk-0.9.4.dev1 → mca_sdk-0.9.7}/sdk-examples/direct-llm/instrumented_langchain.py +0 -0
- {mca_sdk-0.9.4.dev1 → mca_sdk-0.9.7}/sdk-examples/direct-llm/instrumented_llamaindex.py +0 -0
- {mca_sdk-0.9.4.dev1 → mca_sdk-0.9.7}/sdk-examples/direct-llm/instrumented_openai.py +0 -0
- {mca_sdk-0.9.4.dev1 → mca_sdk-0.9.7}/sdk-examples/direct-llm/requirements.txt +0 -0
- {mca_sdk-0.9.4.dev1 → mca_sdk-0.9.7}/sdk-examples/internal-agentic/README.md +0 -0
- {mca_sdk-0.9.4.dev1 → mca_sdk-0.9.7}/sdk-examples/internal-agentic/agent_non_instrumented.py +0 -0
- {mca_sdk-0.9.4.dev1 → mca_sdk-0.9.7}/sdk-examples/internal-agentic/requirements.txt +0 -0
- {mca_sdk-0.9.4.dev1 → mca_sdk-0.9.7}/sdk-examples/internal-agentic/tools.py +0 -0
- {mca_sdk-0.9.4.dev1 → mca_sdk-0.9.7}/sdk-examples/internal-genai/README.md +0 -0
- {mca_sdk-0.9.4.dev1 → mca_sdk-0.9.7}/sdk-examples/internal-genai/litellm_non_instrumented.py +0 -0
- {mca_sdk-0.9.4.dev1 → mca_sdk-0.9.7}/sdk-examples/internal-genai/requirements.txt +0 -0
- {mca_sdk-0.9.4.dev1 → mca_sdk-0.9.7}/sdk-examples/internal-model/README.md +0 -0
- {mca_sdk-0.9.4.dev1 → mca_sdk-0.9.7}/sdk-examples/internal-model/model_non_instrumented.py +0 -0
- {mca_sdk-0.9.4.dev1 → mca_sdk-0.9.7}/sdk-examples/internal-model/raw_model.py +0 -0
- {mca_sdk-0.9.4.dev1 → mca_sdk-0.9.7}/sdk-examples/internal-model/requirements.txt +0 -0
- {mca_sdk-0.9.4.dev1 → mca_sdk-0.9.7}/sdk-examples/internal-model/train_model.py +0 -0
- {mca_sdk-0.9.4.dev1 → mca_sdk-0.9.7}/sdk-examples/internal-model-go/README.md +0 -0
- {mca_sdk-0.9.4.dev1 → mca_sdk-0.9.7}/sdk-examples/internal-model-go/go.mod +0 -0
- {mca_sdk-0.9.4.dev1 → mca_sdk-0.9.7}/sdk-examples/internal-model-go/main.go +0 -0
- {mca_sdk-0.9.4.dev1 → mca_sdk-0.9.7}/sdk-examples/shared/config.py +0 -0
- {mca_sdk-0.9.4.dev1 → mca_sdk-0.9.7}/sdk-examples/shared/gcp_helpers.py +0 -0
- {mca_sdk-0.9.4.dev1 → mca_sdk-0.9.7}/sdk-examples/shared/verification.py +0 -0
- {mca_sdk-0.9.4.dev1 → mca_sdk-0.9.7}/sdk-examples/vendor-bridge/README.md +0 -0
- {mca_sdk-0.9.4.dev1 → mca_sdk-0.9.7}/sdk-examples/vendor-bridge/api_to_otlp_bridge.py +0 -0
- {mca_sdk-0.9.4.dev1 → mca_sdk-0.9.7}/sdk-examples/vendor-bridge/mock_vendor_api.py +0 -0
- {mca_sdk-0.9.4.dev1 → mca_sdk-0.9.7}/sdk-examples/vendor-bridge/performance_validation.py +0 -0
- {mca_sdk-0.9.4.dev1 → mca_sdk-0.9.7}/sdk-examples/vendor-bridge/requirements-base.txt +0 -0
- {mca_sdk-0.9.4.dev1 → mca_sdk-0.9.7}/sdk-examples/vendor-bridge/requirements.txt +0 -0
- {mca_sdk-0.9.4.dev1 → mca_sdk-0.9.7}/sdk_profile.stats +0 -0
- {mca_sdk-0.9.4.dev1 → mca_sdk-0.9.7}/setup.cfg +0 -0
- {mca_sdk-0.9.4.dev1 → mca_sdk-0.9.7}/test_bootstrap_log.py +0 -0
- {mca_sdk-0.9.4.dev1 → mca_sdk-0.9.7}/test_import.py +0 -0
- {mca_sdk-0.9.4.dev1 → mca_sdk-0.9.7}/tests/README.md +0 -0
- {mca_sdk-0.9.4.dev1 → mca_sdk-0.9.7}/tests/__init__.py +0 -0
- {mca_sdk-0.9.4.dev1 → mca_sdk-0.9.7}/tests/ci/__init__.py +0 -0
- {mca_sdk-0.9.4.dev1 → mca_sdk-0.9.7}/tests/ci/test_security_notifications.py +0 -0
- {mca_sdk-0.9.4.dev1 → mca_sdk-0.9.7}/tests/ci/test_security_scanning.py +0 -0
- {mca_sdk-0.9.4.dev1 → mca_sdk-0.9.7}/tests/conftest.py +0 -0
- {mca_sdk-0.9.4.dev1 → mca_sdk-0.9.7}/tests/e2e/README.md +0 -0
- {mca_sdk-0.9.4.dev1 → mca_sdk-0.9.7}/tests/e2e/RUN_IN_GCP_WORKBENCH.md +0 -0
- {mca_sdk-0.9.4.dev1 → mca_sdk-0.9.7}/tests/e2e/__init__.py +0 -0
- {mca_sdk-0.9.4.dev1 → mca_sdk-0.9.7}/tests/e2e/conftest.py +0 -0
- {mca_sdk-0.9.4.dev1 → mca_sdk-0.9.7}/tests/e2e/run_e2e_tests.sh +0 -0
- {mca_sdk-0.9.4.dev1 → mca_sdk-0.9.7}/tests/e2e/test_error_scenarios_e2e.py +0 -0
- {mca_sdk-0.9.4.dev1 → mca_sdk-0.9.7}/tests/e2e/test_logs_e2e.py +0 -0
- {mca_sdk-0.9.4.dev1 → mca_sdk-0.9.7}/tests/e2e/test_metrics_e2e.py +0 -0
- {mca_sdk-0.9.4.dev1 → mca_sdk-0.9.7}/tests/e2e/test_multi_model_e2e.py +0 -0
- {mca_sdk-0.9.4.dev1 → mca_sdk-0.9.7}/tests/e2e/test_traces_e2e.py +0 -0
- {mca_sdk-0.9.4.dev1 → mca_sdk-0.9.7}/tests/fixtures/agent/__init__.py +0 -0
- {mca_sdk-0.9.4.dev1 → mca_sdk-0.9.7}/tests/fixtures/agent/advisories/p0_25h.json +0 -0
- {mca_sdk-0.9.4.dev1 → mca_sdk-0.9.7}/tests/fixtures/agent/lockfiles/all_pinned.lock +0 -0
- {mca_sdk-0.9.4.dev1 → mca_sdk-0.9.7}/tests/fixtures/agent/lockfiles/diff_drift_new.lock +0 -0
- {mca_sdk-0.9.4.dev1 → mca_sdk-0.9.7}/tests/fixtures/agent/lockfiles/diff_drift_old.lock +0 -0
- {mca_sdk-0.9.4.dev1 → mca_sdk-0.9.7}/tests/fixtures/agent/lockfiles/mca_sdk_carveout.lock +0 -0
- {mca_sdk-0.9.4.dev1 → mca_sdk-0.9.7}/tests/fixtures/agent/lockfiles/missing_hash.lock +0 -0
- {mca_sdk-0.9.4.dev1 → mca_sdk-0.9.7}/tests/fixtures/agent/lockfiles/no_hash_line.lock +0 -0
- {mca_sdk-0.9.4.dev1 → mca_sdk-0.9.7}/tests/fixtures/agent/lockfiles/partial_wheel_hash.lock +0 -0
- {mca_sdk-0.9.4.dev1 → mca_sdk-0.9.7}/tests/fixtures/agent/lockfiles/version_range.lock +0 -0
- {mca_sdk-0.9.4.dev1 → mca_sdk-0.9.7}/tests/fixtures/mock_collector.py +0 -0
- {mca_sdk-0.9.4.dev1 → mca_sdk-0.9.7}/tests/integration/__init__.py +0 -0
- {mca_sdk-0.9.4.dev1 → mca_sdk-0.9.7}/tests/integration/agent/__init__.py +0 -0
- {mca_sdk-0.9.4.dev1 → mca_sdk-0.9.7}/tests/integration/agent/test_ci_gates_e2e.py +0 -0
- {mca_sdk-0.9.4.dev1 → mca_sdk-0.9.7}/tests/integration/conftest.py +0 -0
- {mca_sdk-0.9.4.dev1 → mca_sdk-0.9.7}/tests/integration/junit.xml +0 -0
- {mca_sdk-0.9.4.dev1 → mca_sdk-0.9.7}/tests/integration/run_k8s_tests.sh +0 -0
- {mca_sdk-0.9.4.dev1 → mca_sdk-0.9.7}/tests/integration/test_agentic_example.py +0 -0
- {mca_sdk-0.9.4.dev1 → mca_sdk-0.9.7}/tests/integration/test_attributes_processor.py +0 -0
- {mca_sdk-0.9.4.dev1 → mca_sdk-0.9.7}/tests/integration/test_autolog_integration.py +0 -0
- {mca_sdk-0.9.4.dev1 → mca_sdk-0.9.7}/tests/integration/test_autolog_llm_integration.py.patch +0 -0
- {mca_sdk-0.9.4.dev1 → mca_sdk-0.9.7}/tests/integration/test_batch_processor.py +0 -0
- {mca_sdk-0.9.4.dev1 → mca_sdk-0.9.7}/tests/integration/test_buffering_integration.py +0 -0
- {mca_sdk-0.9.4.dev1 → mca_sdk-0.9.7}/tests/integration/test_circuit_breaker_integration.py +0 -0
- {mca_sdk-0.9.4.dev1 → mca_sdk-0.9.7}/tests/integration/test_collector_self_monitoring.py +0 -0
- {mca_sdk-0.9.4.dev1 → mca_sdk-0.9.7}/tests/integration/test_collector_telemetry_flow.py +0 -0
- {mca_sdk-0.9.4.dev1 → mca_sdk-0.9.7}/tests/integration/test_debug_exporter.py +0 -0
- {mca_sdk-0.9.4.dev1 → mca_sdk-0.9.7}/tests/integration/test_decorator_integration.py +0 -0
- {mca_sdk-0.9.4.dev1 → mca_sdk-0.9.7}/tests/integration/test_docker_build.py +0 -0
- {mca_sdk-0.9.4.dev1 → mca_sdk-0.9.7}/tests/integration/test_docker_compose.py +0 -0
- {mca_sdk-0.9.4.dev1 → mca_sdk-0.9.7}/tests/integration/test_docker_images.py +0 -0
- {mca_sdk-0.9.4.dev1 → mca_sdk-0.9.7}/tests/integration/test_e2e_flow.py +0 -0
- {mca_sdk-0.9.4.dev1 → mca_sdk-0.9.7}/tests/integration/test_exception_integration.py +0 -0
- {mca_sdk-0.9.4.dev1 → mca_sdk-0.9.7}/tests/integration/test_gcp_logging_integration.py +0 -0
- {mca_sdk-0.9.4.dev1 → mca_sdk-0.9.7}/tests/integration/test_gcp_trace_integration.py +0 -0
- {mca_sdk-0.9.4.dev1 → mca_sdk-0.9.7}/tests/integration/test_ha_deployment.py +0 -0
- {mca_sdk-0.9.4.dev1 → mca_sdk-0.9.7}/tests/integration/test_ha_features.py +0 -0
- {mca_sdk-0.9.4.dev1 → mca_sdk-0.9.7}/tests/integration/test_health_check.py +0 -0
- {mca_sdk-0.9.4.dev1 → mca_sdk-0.9.7}/tests/integration/test_health_check_integration.py +0 -0
- {mca_sdk-0.9.4.dev1 → mca_sdk-0.9.7}/tests/integration/test_healthcheck.py +0 -0
- {mca_sdk-0.9.4.dev1 → mca_sdk-0.9.7}/tests/integration/test_internal_model_example.py +0 -0
- {mca_sdk-0.9.4.dev1 → mca_sdk-0.9.7}/tests/integration/test_k8s_deployment.py +0 -0
- {mca_sdk-0.9.4.dev1 → mca_sdk-0.9.7}/tests/integration/test_langchain_integration.py +0 -0
- {mca_sdk-0.9.4.dev1 → mca_sdk-0.9.7}/tests/integration/test_multi_pipeline.py +0 -0
- {mca_sdk-0.9.4.dev1 → mca_sdk-0.9.7}/tests/integration/test_package_metadata.py +0 -0
- {mca_sdk-0.9.4.dev1 → mca_sdk-0.9.7}/tests/integration/test_phi_safe_integration.py +0 -0
- {mca_sdk-0.9.4.dev1 → mca_sdk-0.9.7}/tests/integration/test_prometheus_integration.py +0 -0
- {mca_sdk-0.9.4.dev1 → mca_sdk-0.9.7}/tests/integration/test_pypi_package.py +0 -0
- {mca_sdk-0.9.4.dev1 → mca_sdk-0.9.7}/tests/integration/test_queue_recovery.py +0 -0
- {mca_sdk-0.9.4.dev1 → mca_sdk-0.9.7}/tests/integration/test_rollback_failure_scenarios.py +0 -0
- {mca_sdk-0.9.4.dev1 → mca_sdk-0.9.7}/tests/integration/test_sdk_integration.py +0 -0
- {mca_sdk-0.9.4.dev1 → mca_sdk-0.9.7}/tests/integration/test_sdk_version_in_telemetry_payload.py +0 -0
- {mca_sdk-0.9.4.dev1 → mca_sdk-0.9.7}/tests/integration/test_state_persistence.py +0 -0
- {mca_sdk-0.9.4.dev1 → mca_sdk-0.9.7}/tests/integration/test_story_3_14_schema_validation.py +0 -0
- {mca_sdk-0.9.4.dev1 → mca_sdk-0.9.7}/tests/integration/test_validation_e2e.py +0 -0
- {mca_sdk-0.9.4.dev1 → mca_sdk-0.9.7}/tests/integration/test_wheel_contents.py +0 -0
- {mca_sdk-0.9.4.dev1 → mca_sdk-0.9.7}/tests/performance/README.md +0 -0
- {mca_sdk-0.9.4.dev1 → mca_sdk-0.9.7}/tests/performance/__init__.py +0 -0
- {mca_sdk-0.9.4.dev1 → mca_sdk-0.9.7}/tests/performance/_load_test_pacing.py +0 -0
- {mca_sdk-0.9.4.dev1 → mca_sdk-0.9.7}/tests/performance/assoc_kwargs.py +0 -0
- {mca_sdk-0.9.4.dev1 → mca_sdk-0.9.7}/tests/performance/baseline_profile_report.md +0 -0
- {mca_sdk-0.9.4.dev1 → mca_sdk-0.9.7}/tests/performance/benchmark_sdk.py +0 -0
- {mca_sdk-0.9.4.dev1 → mca_sdk-0.9.7}/tests/performance/collector_monitor.py +0 -0
- {mca_sdk-0.9.4.dev1 → mca_sdk-0.9.7}/tests/performance/compare_against_history.py +0 -0
- {mca_sdk-0.9.4.dev1 → mca_sdk-0.9.7}/tests/performance/conftest.py +0 -0
- {mca_sdk-0.9.4.dev1 → mca_sdk-0.9.7}/tests/performance/generate_overhead_report.py +0 -0
- {mca_sdk-0.9.4.dev1 → mca_sdk-0.9.7}/tests/performance/load_test_2000rps.py +0 -0
- {mca_sdk-0.9.4.dev1 → mca_sdk-0.9.7}/tests/performance/load_test_2000rps_report.py +0 -0
- {mca_sdk-0.9.4.dev1 → mca_sdk-0.9.7}/tests/performance/load_test_report.py +0 -0
- {mca_sdk-0.9.4.dev1 → mca_sdk-0.9.7}/tests/performance/load_test_scenarios.py +0 -0
- {mca_sdk-0.9.4.dev1 → mca_sdk-0.9.7}/tests/performance/load_test_sustained.py +0 -0
- {mca_sdk-0.9.4.dev1 → mca_sdk-0.9.7}/tests/performance/memory_leak_check.py +0 -0
- {mca_sdk-0.9.4.dev1 → mca_sdk-0.9.7}/tests/performance/memory_leak_test.py +0 -0
- {mca_sdk-0.9.4.dev1 → mca_sdk-0.9.7}/tests/performance/optimization_results.md +0 -0
- {mca_sdk-0.9.4.dev1 → mca_sdk-0.9.7}/tests/performance/performance_helpers.py +0 -0
- {mca_sdk-0.9.4.dev1 → mca_sdk-0.9.7}/tests/performance/performance_test.py +0 -0
- {mca_sdk-0.9.4.dev1 → mca_sdk-0.9.7}/tests/performance/profile_distribution.py +0 -0
- {mca_sdk-0.9.4.dev1 → mca_sdk-0.9.7}/tests/performance/profile_overhead.py +0 -0
- {mca_sdk-0.9.4.dev1 → mca_sdk-0.9.7}/tests/performance/profile_sdk.py +0 -0
- {mca_sdk-0.9.4.dev1 → mca_sdk-0.9.7}/tests/performance/results/overhead_profile.txt +0 -0
- {mca_sdk-0.9.4.dev1 → mca_sdk-0.9.7}/tests/performance/run_2000rps_load_test.sh +0 -0
- {mca_sdk-0.9.4.dev1 → mca_sdk-0.9.7}/tests/performance/run_load_tests.sh +0 -0
- {mca_sdk-0.9.4.dev1 → mca_sdk-0.9.7}/tests/performance/telemetry_completeness.py +0 -0
- {mca_sdk-0.9.4.dev1 → mca_sdk-0.9.7}/tests/performance/test_autolog_performance.py +0 -0
- {mca_sdk-0.9.4.dev1 → mca_sdk-0.9.7}/tests/performance/test_backpressure.py +0 -0
- {mca_sdk-0.9.4.dev1 → mca_sdk-0.9.7}/tests/performance/test_compare_against_history.py +0 -0
- {mca_sdk-0.9.4.dev1 → mca_sdk-0.9.7}/tests/performance/test_concurrency.py +0 -0
- {mca_sdk-0.9.4.dev1 → mca_sdk-0.9.7}/tests/performance/test_load_harness_remediation.py +0 -0
- {mca_sdk-0.9.4.dev1 → mca_sdk-0.9.7}/tests/performance/test_load_testing.py +0 -0
- {mca_sdk-0.9.4.dev1 → mca_sdk-0.9.7}/tests/performance/test_negative_cases.py +0 -0
- {mca_sdk-0.9.4.dev1 → mca_sdk-0.9.7}/tests/performance/test_performance.py +0 -0
- {mca_sdk-0.9.4.dev1 → mca_sdk-0.9.7}/tests/performance/test_performance_slo.py +0 -0
- {mca_sdk-0.9.4.dev1 → mca_sdk-0.9.7}/tests/performance/utils.py +0 -0
- {mca_sdk-0.9.4.dev1 → mca_sdk-0.9.7}/tests/security/__init__.py +0 -0
- {mca_sdk-0.9.4.dev1 → mca_sdk-0.9.7}/tests/security/test_attribute_phi_leakage.py +0 -0
- {mca_sdk-0.9.4.dev1 → mca_sdk-0.9.7}/tests/security/test_sast.py +0 -0
- {mca_sdk-0.9.4.dev1 → mca_sdk-0.9.7}/tests/security/test_security_requirements.py +0 -0
- {mca_sdk-0.9.4.dev1 → mca_sdk-0.9.7}/tests/support/__init__.py +0 -0
- {mca_sdk-0.9.4.dev1 → mca_sdk-0.9.7}/tests/support/logging_overhead.py +0 -0
- {mca_sdk-0.9.4.dev1 → mca_sdk-0.9.7}/tests/test_agentic.py +0 -0
- {mca_sdk-0.9.4.dev1 → mca_sdk-0.9.7}/tests/test_basic_export.py +0 -0
- {mca_sdk-0.9.4.dev1 → mca_sdk-0.9.7}/tests/test_gcp_registry_auth.py +0 -0
- {mca_sdk-0.9.4.dev1 → mca_sdk-0.9.7}/tests/test_registry_integration.py +0 -0
- {mca_sdk-0.9.4.dev1 → mca_sdk-0.9.7}/tests/unit/__init__.py +0 -0
- {mca_sdk-0.9.4.dev1 → mca_sdk-0.9.7}/tests/unit/agent/__init__.py +0 -0
- {mca_sdk-0.9.4.dev1 → mca_sdk-0.9.7}/tests/unit/agent/test_ci_gates_help.py +0 -0
- {mca_sdk-0.9.4.dev1 → mca_sdk-0.9.7}/tests/unit/agent/test_cli.py +0 -0
- {mca_sdk-0.9.4.dev1 → mca_sdk-0.9.7}/tests/unit/agent/test_layout.py +0 -0
- {mca_sdk-0.9.4.dev1 → mca_sdk-0.9.7}/tests/unit/agent/test_lockfile_cadence_gate.py +0 -0
- {mca_sdk-0.9.4.dev1 → mca_sdk-0.9.7}/tests/unit/agent/test_lockfile_diff_gate.py +0 -0
- {mca_sdk-0.9.4.dev1 → mca_sdk-0.9.7}/tests/unit/agent/test_lockfile_hash_gate.py +0 -0
- {mca_sdk-0.9.4.dev1 → mca_sdk-0.9.7}/tests/unit/agent/test_lockfile_hash_gate_mca_sdk_carveout.py +0 -0
- {mca_sdk-0.9.4.dev1 → mca_sdk-0.9.7}/tests/unit/agent/test_pyproject.py +0 -0
- {mca_sdk-0.9.4.dev1 → mca_sdk-0.9.7}/tests/unit/agent/test_sdk_version_invariant_gate.py +0 -0
- {mca_sdk-0.9.4.dev1 → mca_sdk-0.9.7}/tests/unit/agent/test_vuln_scan_sla_gate.py +0 -0
- {mca_sdk-0.9.4.dev1 → mca_sdk-0.9.7}/tests/unit/agent/test_wheel_contents.py +0 -0
- {mca_sdk-0.9.4.dev1 → mca_sdk-0.9.7}/tests/unit/agent/test_wheel_metadata.py +0 -0
- {mca_sdk-0.9.4.dev1 → mca_sdk-0.9.7}/tests/unit/test_absolute_final_85.py +0 -0
- {mca_sdk-0.9.4.dev1 → mca_sdk-0.9.7}/tests/unit/test_additional_coverage.py +0 -0
- {mca_sdk-0.9.4.dev1 → mca_sdk-0.9.7}/tests/unit/test_agentic_tracking.py +0 -0
- {mca_sdk-0.9.4.dev1 → mca_sdk-0.9.7}/tests/unit/test_ai_assist_jupyter.py +0 -0
- {mca_sdk-0.9.4.dev1 → mca_sdk-0.9.7}/tests/unit/test_ai_assist_package.py +0 -0
- {mca_sdk-0.9.4.dev1 → mca_sdk-0.9.7}/tests/unit/test_async_compatibility.py +0 -0
- {mca_sdk-0.9.4.dev1 → mca_sdk-0.9.7}/tests/unit/test_attribute_validation_extra.py +0 -0
- {mca_sdk-0.9.4.dev1 → mca_sdk-0.9.7}/tests/unit/test_attribute_validator.py +0 -0
- {mca_sdk-0.9.4.dev1 → mca_sdk-0.9.7}/tests/unit/test_audit_log_async.py +0 -0
- {mca_sdk-0.9.4.dev1 → mca_sdk-0.9.7}/tests/unit/test_autoinstrument.py +0 -0
- {mca_sdk-0.9.4.dev1 → mca_sdk-0.9.7}/tests/unit/test_autoinstrument_coverage.py +0 -0
- {mca_sdk-0.9.4.dev1 → mca_sdk-0.9.7}/tests/unit/test_autolog_openai_additional.py +0 -0
- {mca_sdk-0.9.4.dev1 → mca_sdk-0.9.7}/tests/unit/test_autolog_openai_coverage.py +0 -0
- {mca_sdk-0.9.4.dev1 → mca_sdk-0.9.7}/tests/unit/test_bridge_extra.py +0 -0
- {mca_sdk-0.9.4.dev1 → mca_sdk-0.9.7}/tests/unit/test_buffering_exporters.py +0 -0
- {mca_sdk-0.9.4.dev1 → mca_sdk-0.9.7}/tests/unit/test_buffering_queue.py +0 -0
- {mca_sdk-0.9.4.dev1 → mca_sdk-0.9.7}/tests/unit/test_buffering_security.py +0 -0
- {mca_sdk-0.9.4.dev1 → mca_sdk-0.9.7}/tests/unit/test_certificate_rotation.py +0 -0
- {mca_sdk-0.9.4.dev1 → mca_sdk-0.9.7}/tests/unit/test_circuit_breaker.py +0 -0
- {mca_sdk-0.9.4.dev1 → mca_sdk-0.9.7}/tests/unit/test_cli_bootstrap.py +0 -0
- {mca_sdk-0.9.4.dev1 → mca_sdk-0.9.7}/tests/unit/test_cli_init_ai_assist.py +0 -0
- {mca_sdk-0.9.4.dev1 → mca_sdk-0.9.7}/tests/unit/test_cli_instrument.py +0 -0
- {mca_sdk-0.9.4.dev1 → mca_sdk-0.9.7}/tests/unit/test_cli_instrument_helpers.py +0 -0
- {mca_sdk-0.9.4.dev1 → mca_sdk-0.9.7}/tests/unit/test_cli_run.py +0 -0
- {mca_sdk-0.9.4.dev1 → mca_sdk-0.9.7}/tests/unit/test_cli_run_helpers.py +0 -0
- {mca_sdk-0.9.4.dev1 → mca_sdk-0.9.7}/tests/unit/test_client_attribute_validation.py +0 -0
- {mca_sdk-0.9.4.dev1 → mca_sdk-0.9.7}/tests/unit/test_client_helpers.py +0 -0
- {mca_sdk-0.9.4.dev1 → mca_sdk-0.9.7}/tests/unit/test_code_review_fixes.py +0 -0
- {mca_sdk-0.9.4.dev1 → mca_sdk-0.9.7}/tests/unit/test_config_edge_cases.py +0 -0
- {mca_sdk-0.9.4.dev1 → mca_sdk-0.9.7}/tests/unit/test_config_hardening.py +0 -0
- {mca_sdk-0.9.4.dev1 → mca_sdk-0.9.7}/tests/unit/test_config_persistence.py +0 -0
- {mca_sdk-0.9.4.dev1 → mca_sdk-0.9.7}/tests/unit/test_config_settings_validators.py +0 -0
- {mca_sdk-0.9.4.dev1 → mca_sdk-0.9.7}/tests/unit/test_coverage_final_push.py +0 -0
- {mca_sdk-0.9.4.dev1 → mca_sdk-0.9.7}/tests/unit/test_credential_sanitization_integration.py +0 -0
- {mca_sdk-0.9.4.dev1 → mca_sdk-0.9.7}/tests/unit/test_critical_findings.py +0 -0
- {mca_sdk-0.9.4.dev1 → mca_sdk-0.9.7}/tests/unit/test_dead_letter_queue.py +0 -0
- {mca_sdk-0.9.4.dev1 → mca_sdk-0.9.7}/tests/unit/test_debug_mode.py +0 -0
- {mca_sdk-0.9.4.dev1 → mca_sdk-0.9.7}/tests/unit/test_decorators.py +0 -0
- {mca_sdk-0.9.4.dev1 → mca_sdk-0.9.7}/tests/unit/test_decorators_extra.py +0 -0
- {mca_sdk-0.9.4.dev1 → mca_sdk-0.9.7}/tests/unit/test_disk_persistence.py +0 -0
- {mca_sdk-0.9.4.dev1 → mca_sdk-0.9.7}/tests/unit/test_dlq_encryption.py +0 -0
- {mca_sdk-0.9.4.dev1 → mca_sdk-0.9.7}/tests/unit/test_dlq_fixes_review.py +0 -0
- {mca_sdk-0.9.4.dev1 → mca_sdk-0.9.7}/tests/unit/test_dlq_persistence.py +0 -0
- {mca_sdk-0.9.4.dev1 → mca_sdk-0.9.7}/tests/unit/test_dlq_persistence_errors.py +0 -0
- {mca_sdk-0.9.4.dev1 → mca_sdk-0.9.7}/tests/unit/test_dlq_production_gating.py +0 -0
- {mca_sdk-0.9.4.dev1 → mca_sdk-0.9.7}/tests/unit/test_eighth_round_fixes.py +0 -0
- {mca_sdk-0.9.4.dev1 → mca_sdk-0.9.7}/tests/unit/test_eleventh_round_fixes.py +0 -0
- {mca_sdk-0.9.4.dev1 → mca_sdk-0.9.7}/tests/unit/test_encryption_fixes.py +0 -0
- {mca_sdk-0.9.4.dev1 → mca_sdk-0.9.7}/tests/unit/test_environment_profiles.py +0 -0
- {mca_sdk-0.9.4.dev1 → mca_sdk-0.9.7}/tests/unit/test_environment_utility.py +0 -0
- {mca_sdk-0.9.4.dev1 → mca_sdk-0.9.7}/tests/unit/test_exceptions.py +0 -0
- {mca_sdk-0.9.4.dev1 → mca_sdk-0.9.7}/tests/unit/test_exceptions_extra.py +0 -0
- {mca_sdk-0.9.4.dev1 → mca_sdk-0.9.7}/tests/unit/test_fifth_round_fixes.py +0 -0
- {mca_sdk-0.9.4.dev1 → mca_sdk-0.9.7}/tests/unit/test_final_85_coverage.py +0 -0
- {mca_sdk-0.9.4.dev1 → mca_sdk-0.9.7}/tests/unit/test_final_coverage_85.py +0 -0
- {mca_sdk-0.9.4.dev1 → mca_sdk-0.9.7}/tests/unit/test_final_coverage_push.py +0 -0
- {mca_sdk-0.9.4.dev1 → mca_sdk-0.9.7}/tests/unit/test_final_coverage_topup.py +0 -0
- {mca_sdk-0.9.4.dev1 → mca_sdk-0.9.7}/tests/unit/test_fork_safety.py +0 -0
- {mca_sdk-0.9.4.dev1 → mca_sdk-0.9.7}/tests/unit/test_fourth_round_fixes.py +0 -0
- {mca_sdk-0.9.4.dev1 → mca_sdk-0.9.7}/tests/unit/test_gcp_auth.py +0 -0
- {mca_sdk-0.9.4.dev1 → mca_sdk-0.9.7}/tests/unit/test_gcp_auth_integration.py +0 -0
- {mca_sdk-0.9.4.dev1 → mca_sdk-0.9.7}/tests/unit/test_gcp_logging_config.py +0 -0
- {mca_sdk-0.9.4.dev1 → mca_sdk-0.9.7}/tests/unit/test_gcp_logging_exporter.py +0 -0
- {mca_sdk-0.9.4.dev1 → mca_sdk-0.9.7}/tests/unit/test_gcp_logging_extra.py +0 -0
- {mca_sdk-0.9.4.dev1 → mca_sdk-0.9.7}/tests/unit/test_gcp_trace_exporter.py +0 -0
- {mca_sdk-0.9.4.dev1 → mca_sdk-0.9.7}/tests/unit/test_gcp_trace_extra.py +0 -0
- {mca_sdk-0.9.4.dev1 → mca_sdk-0.9.7}/tests/unit/test_goal_context_token_fix.py +0 -0
- {mca_sdk-0.9.4.dev1 → mca_sdk-0.9.7}/tests/unit/test_health_check.py +0 -0
- {mca_sdk-0.9.4.dev1 → mca_sdk-0.9.7}/tests/unit/test_histogram_bucket_views.py +0 -0
- {mca_sdk-0.9.4.dev1 → mca_sdk-0.9.7}/tests/unit/test_https_enforcement.py +0 -0
- {mca_sdk-0.9.4.dev1 → mca_sdk-0.9.7}/tests/unit/test_integrations_decorators.py +0 -0
- {mca_sdk-0.9.4.dev1 → mca_sdk-0.9.7}/tests/unit/test_log_injection.py +0 -0
- {mca_sdk-0.9.4.dev1 → mca_sdk-0.9.7}/tests/unit/test_logging_overhead_filter.py +0 -0
- {mca_sdk-0.9.4.dev1 → mca_sdk-0.9.7}/tests/unit/test_metric_naming.py +0 -0
- {mca_sdk-0.9.4.dev1 → mca_sdk-0.9.7}/tests/unit/test_mtls_config.py +0 -0
- {mca_sdk-0.9.4.dev1 → mca_sdk-0.9.7}/tests/unit/test_naming_conventions.py +0 -0
- {mca_sdk-0.9.4.dev1 → mca_sdk-0.9.7}/tests/unit/test_naming_conventions_extra.py +0 -0
- {mca_sdk-0.9.4.dev1 → mca_sdk-0.9.7}/tests/unit/test_negative_validation.py +0 -0
- {mca_sdk-0.9.4.dev1 → mca_sdk-0.9.7}/tests/unit/test_ninth_round_fixes.py +0 -0
- {mca_sdk-0.9.4.dev1 → mca_sdk-0.9.7}/tests/unit/test_otel_protocol_switching.py +0 -0
- {mca_sdk-0.9.4.dev1 → mca_sdk-0.9.7}/tests/unit/test_otlp_output_contracts.py +0 -0
- {mca_sdk-0.9.4.dev1 → mca_sdk-0.9.7}/tests/unit/test_persist_production_gating.py +0 -0
- {mca_sdk-0.9.4.dev1 → mca_sdk-0.9.7}/tests/unit/test_phi_filter.py +0 -0
- {mca_sdk-0.9.4.dev1 → mca_sdk-0.9.7}/tests/unit/test_phi_safe_capture.py +0 -0
- {mca_sdk-0.9.4.dev1 → mca_sdk-0.9.7}/tests/unit/test_phi_utils_dummy.py +0 -0
- {mca_sdk-0.9.4.dev1 → mca_sdk-0.9.7}/tests/unit/test_predict_decorator_backwards_compat.py +0 -0
- {mca_sdk-0.9.4.dev1 → mca_sdk-0.9.7}/tests/unit/test_production_detection.py +0 -0
- {mca_sdk-0.9.4.dev1 → mca_sdk-0.9.7}/tests/unit/test_prometheus_exporter.py +0 -0
- {mca_sdk-0.9.4.dev1 → mca_sdk-0.9.7}/tests/unit/test_providers.py +0 -0
- {mca_sdk-0.9.4.dev1 → mca_sdk-0.9.7}/tests/unit/test_providers_extra.py +0 -0
- {mca_sdk-0.9.4.dev1 → mca_sdk-0.9.7}/tests/unit/test_providers_prometheus.py +0 -0
- {mca_sdk-0.9.4.dev1 → mca_sdk-0.9.7}/tests/unit/test_providers_unregister.py +0 -0
- {mca_sdk-0.9.4.dev1 → mca_sdk-0.9.7}/tests/unit/test_public_api_surface.py +0 -0
- {mca_sdk-0.9.4.dev1 → mca_sdk-0.9.7}/tests/unit/test_queue_encryption.py +0 -0
- {mca_sdk-0.9.4.dev1 → mca_sdk-0.9.7}/tests/unit/test_rag_contract.py +0 -0
- {mca_sdk-0.9.4.dev1 → mca_sdk-0.9.7}/tests/unit/test_record_retrieval.py +0 -0
- {mca_sdk-0.9.4.dev1 → mca_sdk-0.9.7}/tests/unit/test_registry_client.py +0 -0
- {mca_sdk-0.9.4.dev1 → mca_sdk-0.9.7}/tests/unit/test_registry_client_extra.py +0 -0
- {mca_sdk-0.9.4.dev1 → mca_sdk-0.9.7}/tests/unit/test_registry_client_small_surface.py +0 -0
- {mca_sdk-0.9.4.dev1 → mca_sdk-0.9.7}/tests/unit/test_registry_models_extra.py +0 -0
- {mca_sdk-0.9.4.dev1 → mca_sdk-0.9.7}/tests/unit/test_registry_refresh.py +0 -0
- {mca_sdk-0.9.4.dev1 → mca_sdk-0.9.7}/tests/unit/test_registry_stale_cap.py +0 -0
- {mca_sdk-0.9.4.dev1 → mca_sdk-0.9.7}/tests/unit/test_registry_telemetry_and_trace.py +0 -0
- {mca_sdk-0.9.4.dev1 → mca_sdk-0.9.7}/tests/unit/test_registry_thread_safety.py +0 -0
- {mca_sdk-0.9.4.dev1 → mca_sdk-0.9.7}/tests/unit/test_registry_token_refresh.py +0 -0
- {mca_sdk-0.9.4.dev1 → mca_sdk-0.9.7}/tests/unit/test_registry_update +0 -0
- {mca_sdk-0.9.4.dev1 → mca_sdk-0.9.7}/tests/unit/test_retry_integration.py +0 -0
- {mca_sdk-0.9.4.dev1 → mca_sdk-0.9.7}/tests/unit/test_retry_policy.py +0 -0
- {mca_sdk-0.9.4.dev1 → mca_sdk-0.9.7}/tests/unit/test_retry_with_dlq.py +0 -0
- {mca_sdk-0.9.4.dev1 → mca_sdk-0.9.7}/tests/unit/test_rollback.py +0 -0
- {mca_sdk-0.9.4.dev1 → mca_sdk-0.9.7}/tests/unit/test_round_12_fixes.py +0 -0
- {mca_sdk-0.9.4.dev1 → mca_sdk-0.9.7}/tests/unit/test_round_13_fixes.py +0 -0
- {mca_sdk-0.9.4.dev1 → mca_sdk-0.9.7}/tests/unit/test_round_14_fixes.py +0 -0
- {mca_sdk-0.9.4.dev1 → mca_sdk-0.9.7}/tests/unit/test_routing.py +0 -0
- {mca_sdk-0.9.4.dev1 → mca_sdk-0.9.7}/tests/unit/test_routing_extra.py +0 -0
- {mca_sdk-0.9.4.dev1 → mca_sdk-0.9.7}/tests/unit/test_schema_injection_validation.py +0 -0
- {mca_sdk-0.9.4.dev1 → mca_sdk-0.9.7}/tests/unit/test_schema_injection_validators.py +0 -0
- {mca_sdk-0.9.4.dev1 → mca_sdk-0.9.7}/tests/unit/test_schema_naming_convention_per_prefix.py +0 -0
- {mca_sdk-0.9.4.dev1 → mca_sdk-0.9.7}/tests/unit/test_schema_validation.py +0 -0
- {mca_sdk-0.9.4.dev1 → mca_sdk-0.9.7}/tests/unit/test_security_certificate_mtls.py +0 -0
- {mca_sdk-0.9.4.dev1 → mca_sdk-0.9.7}/tests/unit/test_security_encryption_manager.py +0 -0
- {mca_sdk-0.9.4.dev1 → mca_sdk-0.9.7}/tests/unit/test_security_migration.py +0 -0
- {mca_sdk-0.9.4.dev1 → mca_sdk-0.9.7}/tests/unit/test_serialization.py +0 -0
- {mca_sdk-0.9.4.dev1 → mca_sdk-0.9.7}/tests/unit/test_serialization_extra.py +0 -0
- {mca_sdk-0.9.4.dev1 → mca_sdk-0.9.7}/tests/unit/test_serialization_fallbacks.py +0 -0
- {mca_sdk-0.9.4.dev1 → mca_sdk-0.9.7}/tests/unit/test_serialization_poisoning.py +0 -0
- {mca_sdk-0.9.4.dev1 → mca_sdk-0.9.7}/tests/unit/test_signal_handling.py +0 -0
- {mca_sdk-0.9.4.dev1 → mca_sdk-0.9.7}/tests/unit/test_sixth_round_fixes.py +0 -0
- {mca_sdk-0.9.4.dev1 → mca_sdk-0.9.7}/tests/unit/test_small_modules_coverage.py +0 -0
- {mca_sdk-0.9.4.dev1 → mca_sdk-0.9.7}/tests/unit/test_state_manager.py +0 -0
- {mca_sdk-0.9.4.dev1 → mca_sdk-0.9.7}/tests/unit/test_state_managers.py +0 -0
- {mca_sdk-0.9.4.dev1 → mca_sdk-0.9.7}/tests/unit/test_story_8_7_metric_filtering.py +0 -0
- {mca_sdk-0.9.4.dev1 → mca_sdk-0.9.7}/tests/unit/test_story_8_9_review_regressions.py +0 -0
- {mca_sdk-0.9.4.dev1 → mca_sdk-0.9.7}/tests/unit/test_taxonomy.py +0 -0
- {mca_sdk-0.9.4.dev1 → mca_sdk-0.9.7}/tests/unit/test_telemetry_attribute_validation.py +0 -0
- {mca_sdk-0.9.4.dev1 → mca_sdk-0.9.7}/tests/unit/test_telemetry_attributes_internals.py +0 -0
- {mca_sdk-0.9.4.dev1 → mca_sdk-0.9.7}/tests/unit/test_temporality_e2e.py +0 -0
- {mca_sdk-0.9.4.dev1 → mca_sdk-0.9.7}/tests/unit/test_tenth_round_fixes.py +0 -0
- {mca_sdk-0.9.4.dev1 → mca_sdk-0.9.7}/tests/unit/test_ultimate_final_85.py +0 -0
- {mca_sdk-0.9.4.dev1 → mca_sdk-0.9.7}/tests/unit/test_validation_attributes.py +0 -0
- {mca_sdk-0.9.4.dev1 → mca_sdk-0.9.7}/tests/unit/test_validation_attributes_low_level.py +0 -0
- {mca_sdk-0.9.4.dev1 → mca_sdk-0.9.7}/tests/unit/test_validation_init.py +0 -0
- {mca_sdk-0.9.4.dev1 → mca_sdk-0.9.7}/tests/unit/test_validation_result_extra.py +0 -0
- {mca_sdk-0.9.4.dev1 → mca_sdk-0.9.7}/tests/unit/test_validation_rules_extra.py +0 -0
- {mca_sdk-0.9.4.dev1 → mca_sdk-0.9.7}/tests/unit/test_vendor_bridge.py +0 -0
- {mca_sdk-0.9.4.dev1 → mca_sdk-0.9.7}/tests/unit/test_vendor_bridge_ac.py +0 -0
- {mca_sdk-0.9.4.dev1 → mca_sdk-0.9.7}/tests/unit/test_vendor_bridge_internals.py +0 -0
- {mca_sdk-0.9.4.dev1 → mca_sdk-0.9.7}/tests/unit/test_vendor_bridge_state.py +0 -0
- {mca_sdk-0.9.4.dev1 → mca_sdk-0.9.7}/tests/unit/test_version_check.py +0 -0
- {mca_sdk-0.9.4.dev1 → mca_sdk-0.9.7}/tox.ini +0 -0
- {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
|
-
## [
|
|
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.
|
|
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
|
|
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
|
|
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)
|