mca-sdk 0.9.2__tar.gz → 0.9.4.dev1__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.2 → mca_sdk-0.9.4.dev1}/CHANGELOG.md +72 -0
- {mca_sdk-0.9.2 → mca_sdk-0.9.4.dev1}/MANIFEST.in +2 -0
- {mca_sdk-0.9.2/mca_sdk.egg-info → mca_sdk-0.9.4.dev1}/PKG-INFO +25 -2
- {mca_sdk-0.9.2 → mca_sdk-0.9.4.dev1}/README.md +20 -1
- {mca_sdk-0.9.2 → mca_sdk-0.9.4.dev1}/mca_sdk/FOR_AI_ASSISTANTS.md +126 -14
- {mca_sdk-0.9.2 → mca_sdk-0.9.4.dev1}/mca_sdk/_version.py +3 -3
- mca_sdk-0.9.4.dev1/mca_sdk/ai_assist/__init__.py +149 -0
- mca_sdk-0.9.4.dev1/mca_sdk/ai_assist/cli_install.py +158 -0
- mca_sdk-0.9.4.dev1/mca_sdk/ai_assist/jupyter.py +162 -0
- mca_sdk-0.9.4.dev1/mca_sdk/ai_assist/templates/claude-code/mca-instrument.md +48 -0
- mca_sdk-0.9.4.dev1/mca_sdk/ai_assist/templates/copilot/copilot-instructions.md +37 -0
- mca_sdk-0.9.4.dev1/mca_sdk/ai_assist/templates/cursor/mca-instrument.mdc +42 -0
- mca_sdk-0.9.4.dev1/mca_sdk/ai_assist/templates/gemini/GEMINI.md +35 -0
- mca_sdk-0.9.4.dev1/mca_sdk/ai_assist/templates/notebook/mca_starter.ipynb +60 -0
- mca_sdk-0.9.4.dev1/mca_sdk/ai_assist/templates/prompts/variant_a.md +13 -0
- mca_sdk-0.9.4.dev1/mca_sdk/ai_assist/templates/prompts/variant_b.md +16 -0
- {mca_sdk-0.9.2 → mca_sdk-0.9.4.dev1}/mca_sdk/buffering/exporters.py +23 -9
- {mca_sdk-0.9.2 → mca_sdk-0.9.4.dev1}/mca_sdk/cli/init.py +13 -0
- {mca_sdk-0.9.2 → mca_sdk-0.9.4.dev1}/mca_sdk/exporters/gcp_logging.py +37 -9
- {mca_sdk-0.9.2 → mca_sdk-0.9.4.dev1/mca_sdk.egg-info}/PKG-INFO +25 -2
- {mca_sdk-0.9.2 → mca_sdk-0.9.4.dev1}/mca_sdk.egg-info/SOURCES.txt +14 -0
- {mca_sdk-0.9.2 → mca_sdk-0.9.4.dev1}/mca_sdk.egg-info/requires.txt +5 -0
- {mca_sdk-0.9.2 → mca_sdk-0.9.4.dev1}/mca_sdk.egg-info/scm_file_list.json +14 -0
- mca_sdk-0.9.4.dev1/mca_sdk.egg-info/scm_version.json +8 -0
- {mca_sdk-0.9.2 → mca_sdk-0.9.4.dev1}/pyproject.toml +5 -0
- {mca_sdk-0.9.2 → mca_sdk-0.9.4.dev1}/setup.py +14 -1
- {mca_sdk-0.9.2 → mca_sdk-0.9.4.dev1}/test-requirements.txt +4 -0
- mca_sdk-0.9.4.dev1/tests/integration/test_wheel_contents.py +78 -0
- mca_sdk-0.9.4.dev1/tests/unit/test_ai_assist_jupyter.py +164 -0
- mca_sdk-0.9.4.dev1/tests/unit/test_ai_assist_package.py +120 -0
- mca_sdk-0.9.4.dev1/tests/unit/test_cli_init_ai_assist.py +119 -0
- mca_sdk-0.9.2/mca_sdk.egg-info/scm_version.json +0 -8
- {mca_sdk-0.9.2 → mca_sdk-0.9.4.dev1}/.coveragerc +0 -0
- {mca_sdk-0.9.2 → mca_sdk-0.9.4.dev1}/.dockerignore +0 -0
- {mca_sdk-0.9.2 → mca_sdk-0.9.4.dev1}/.env.gcp-dev.example +0 -0
- {mca_sdk-0.9.2 → mca_sdk-0.9.4.dev1}/.gitignore +0 -0
- {mca_sdk-0.9.2 → mca_sdk-0.9.4.dev1}/.pip-audit-allowlist.txt +0 -0
- {mca_sdk-0.9.2 → mca_sdk-0.9.4.dev1}/.pypirc +0 -0
- {mca_sdk-0.9.2 → mca_sdk-0.9.4.dev1}/44.0.0 +0 -0
- {mca_sdk-0.9.2 → mca_sdk-0.9.4.dev1}/=0.24.0 +0 -0
- {mca_sdk-0.9.2 → mca_sdk-0.9.4.dev1}/=0.6.0 +0 -0
- {mca_sdk-0.9.2 → mca_sdk-0.9.4.dev1}/=1.11.0 +0 -0
- {mca_sdk-0.9.2 → mca_sdk-0.9.4.dev1}/=1.4.0 +0 -0
- {mca_sdk-0.9.2 → mca_sdk-0.9.4.dev1}/=2.2.0 +0 -0
- {mca_sdk-0.9.2 → mca_sdk-0.9.4.dev1}/=3.5.0 +0 -0
- {mca_sdk-0.9.2 → mca_sdk-0.9.4.dev1}/LICENSE +0 -0
- {mca_sdk-0.9.2 → mca_sdk-0.9.4.dev1}/PUBLISH_INSTRUCTIONS.md +0 -0
- {mca_sdk-0.9.2 → mca_sdk-0.9.4.dev1}/RELEASE_NOTES_v0.8.10.md +0 -0
- {mca_sdk-0.9.2 → mca_sdk-0.9.4.dev1}/RELEASE_NOTES_v0.8.21.md +0 -0
- {mca_sdk-0.9.2 → mca_sdk-0.9.4.dev1}/RELEASE_NOTES_v0.8.22.md +0 -0
- {mca_sdk-0.9.2 → mca_sdk-0.9.4.dev1}/RELEASE_NOTES_v0.8.30.md +0 -0
- {mca_sdk-0.9.2 → mca_sdk-0.9.4.dev1}/bandit-report.json +0 -0
- {mca_sdk-0.9.2 → mca_sdk-0.9.4.dev1}/baseline_report.txt +0 -0
- {mca_sdk-0.9.2 → mca_sdk-0.9.4.dev1}/config/docs/collector-metrics-guide.md +0 -0
- {mca_sdk-0.9.2 → mca_sdk-0.9.4.dev1}/config/examples/README.md +0 -0
- {mca_sdk-0.9.2 → mca_sdk-0.9.4.dev1}/config/examples/test-health-check.py +0 -0
- {mca_sdk-0.9.2 → mca_sdk-0.9.4.dev1}/config/otel-collector-config.yaml +0 -0
- {mca_sdk-0.9.2 → mca_sdk-0.9.4.dev1}/config/otel-collector-mock.yml +0 -0
- {mca_sdk-0.9.2 → mca_sdk-0.9.4.dev1}/docker-compose.gcp-dev.yml +0 -0
- {mca_sdk-0.9.2 → mca_sdk-0.9.4.dev1}/docker-compose.mock.yml +0 -0
- {mca_sdk-0.9.2 → mca_sdk-0.9.4.dev1}/docker-compose.yml +0 -0
- {mca_sdk-0.9.2 → mca_sdk-0.9.4.dev1}/fix.py +0 -0
- {mca_sdk-0.9.2 → mca_sdk-0.9.4.dev1}/fix_agentic_tests.py +0 -0
- {mca_sdk-0.9.2 → mca_sdk-0.9.4.dev1}/fix_agentic_tests2.py +0 -0
- {mca_sdk-0.9.2 → mca_sdk-0.9.4.dev1}/fix_test_basic.py +0 -0
- {mca_sdk-0.9.2 → mca_sdk-0.9.4.dev1}/mca/Dockerfile +0 -0
- {mca_sdk-0.9.2 → mca_sdk-0.9.4.dev1}/mca-sdk-go/EXAMPLES.md +0 -0
- {mca_sdk-0.9.2 → mca_sdk-0.9.4.dev1}/mca-sdk-go/KNOWN_ISSUES.md +0 -0
- {mca_sdk-0.9.2 → mca_sdk-0.9.4.dev1}/mca-sdk-go/README.md +0 -0
- {mca_sdk-0.9.2 → mca_sdk-0.9.4.dev1}/mca-sdk-go/TESTING_WORKBENCH.md +0 -0
- {mca_sdk-0.9.2 → mca_sdk-0.9.4.dev1}/mca-sdk-go/client.go +0 -0
- {mca_sdk-0.9.2 → mca_sdk-0.9.4.dev1}/mca-sdk-go/client_test.go +0 -0
- {mca_sdk-0.9.2 → mca_sdk-0.9.4.dev1}/mca-sdk-go/config/config.go +0 -0
- {mca_sdk-0.9.2 → mca_sdk-0.9.4.dev1}/mca-sdk-go/config/config_test.go +0 -0
- {mca_sdk-0.9.2 → mca_sdk-0.9.4.dev1}/mca-sdk-go/genai.go +0 -0
- {mca_sdk-0.9.2 → mca_sdk-0.9.4.dev1}/mca-sdk-go/genai_test.go +0 -0
- {mca_sdk-0.9.2 → mca_sdk-0.9.4.dev1}/mca-sdk-go/go.mod +0 -0
- {mca_sdk-0.9.2 → mca_sdk-0.9.4.dev1}/mca-sdk-go/go.sum +0 -0
- {mca_sdk-0.9.2 → mca_sdk-0.9.4.dev1}/mca-sdk-go/internal/telemetry/providers.go +0 -0
- {mca_sdk-0.9.2 → mca_sdk-0.9.4.dev1}/mca-sdk-go/prediction.go +0 -0
- {mca_sdk-0.9.2 → mca_sdk-0.9.4.dev1}/mca-sdk-go/quickstart.sh +0 -0
- {mca_sdk-0.9.2 → mca_sdk-0.9.4.dev1}/mca-sdk-go/registry.go +0 -0
- {mca_sdk-0.9.2 → mca_sdk-0.9.4.dev1}/mca-sdk-go/sanitization.go +0 -0
- {mca_sdk-0.9.2 → mca_sdk-0.9.4.dev1}/mca-sdk-go/sanitization_test.go +0 -0
- {mca_sdk-0.9.2 → mca_sdk-0.9.4.dev1}/mca-sdk-go/scripts/gen-godoc.sh +0 -0
- {mca_sdk-0.9.2 → mca_sdk-0.9.4.dev1}/mca-sdk-go/utils.go +0 -0
- {mca_sdk-0.9.2 → mca_sdk-0.9.4.dev1}/mca-sdk-go/utils_test.go +0 -0
- {mca_sdk-0.9.2 → mca_sdk-0.9.4.dev1}/mca-sdk-go/version.go +0 -0
- {mca_sdk-0.9.2 → mca_sdk-0.9.4.dev1}/mca-sdk-java/.gitignore +0 -0
- {mca_sdk-0.9.2 → mca_sdk-0.9.4.dev1}/mca-sdk-java/CHANGELOG.md +0 -0
- {mca_sdk-0.9.2 → mca_sdk-0.9.4.dev1}/mca-sdk-java/LICENSE +0 -0
- {mca_sdk-0.9.2 → mca_sdk-0.9.4.dev1}/mca-sdk-java/README.md +0 -0
- {mca_sdk-0.9.2 → mca_sdk-0.9.4.dev1}/mca-sdk-java/TESTING_WORKBENCH.md +0 -0
- {mca_sdk-0.9.2 → mca_sdk-0.9.4.dev1}/mca-sdk-java/VALIDATION_GUIDE.md +0 -0
- {mca_sdk-0.9.2 → mca_sdk-0.9.4.dev1}/mca-sdk-java/examples/AdvancedInstrumentationExample.java +0 -0
- {mca_sdk-0.9.2 → mca_sdk-0.9.4.dev1}/mca-sdk-java/examples/GCPExporterExample.java +0 -0
- {mca_sdk-0.9.2 → mca_sdk-0.9.4.dev1}/mca-sdk-java/examples/InternalModelExample.java +0 -0
- {mca_sdk-0.9.2 → mca_sdk-0.9.4.dev1}/mca-sdk-java/pom.xml +0 -0
- {mca_sdk-0.9.2 → mca_sdk-0.9.4.dev1}/mca-sdk-java/scripts/publish.sh +0 -0
- {mca_sdk-0.9.2 → mca_sdk-0.9.4.dev1}/mca-sdk-java/scripts/test-dependency.sh +0 -0
- {mca_sdk-0.9.2 → mca_sdk-0.9.4.dev1}/mca-sdk-java/scripts/verify-package.sh +0 -0
- {mca_sdk-0.9.2 → mca_sdk-0.9.4.dev1}/mca-sdk-java/src/main/java/com/bhsf/mca/sdk/MCAClient.java +0 -0
- {mca_sdk-0.9.2 → mca_sdk-0.9.4.dev1}/mca-sdk-java/src/main/java/com/bhsf/mca/sdk/RecordPredictionRequest.java +0 -0
- {mca_sdk-0.9.2 → mca_sdk-0.9.4.dev1}/mca-sdk-java/src/main/java/com/bhsf/mca/sdk/config/ConfigLoader.java +0 -0
- {mca_sdk-0.9.2 → mca_sdk-0.9.4.dev1}/mca-sdk-java/src/main/java/com/bhsf/mca/sdk/config/ConfigSource.java +0 -0
- {mca_sdk-0.9.2 → mca_sdk-0.9.4.dev1}/mca-sdk-java/src/main/java/com/bhsf/mca/sdk/config/MCAConfig.java +0 -0
- {mca_sdk-0.9.2 → mca_sdk-0.9.4.dev1}/mca-sdk-java/src/main/java/com/bhsf/mca/sdk/config/YamlConfigParser.java +0 -0
- {mca_sdk-0.9.2 → mca_sdk-0.9.4.dev1}/mca-sdk-java/src/main/java/com/bhsf/mca/sdk/exceptions/BufferingException.java +0 -0
- {mca_sdk-0.9.2 → mca_sdk-0.9.4.dev1}/mca-sdk-java/src/main/java/com/bhsf/mca/sdk/exceptions/ConfigNotFoundException.java +0 -0
- {mca_sdk-0.9.2 → mca_sdk-0.9.4.dev1}/mca-sdk-java/src/main/java/com/bhsf/mca/sdk/exceptions/ConfigurationException.java +0 -0
- {mca_sdk-0.9.2 → mca_sdk-0.9.4.dev1}/mca-sdk-java/src/main/java/com/bhsf/mca/sdk/exceptions/MCAException.java +0 -0
- {mca_sdk-0.9.2 → mca_sdk-0.9.4.dev1}/mca-sdk-java/src/main/java/com/bhsf/mca/sdk/exceptions/NonRetryableException.java +0 -0
- {mca_sdk-0.9.2 → mca_sdk-0.9.4.dev1}/mca-sdk-java/src/main/java/com/bhsf/mca/sdk/exceptions/RegistryAuthException.java +0 -0
- {mca_sdk-0.9.2 → mca_sdk-0.9.4.dev1}/mca-sdk-java/src/main/java/com/bhsf/mca/sdk/exceptions/RegistryConfigNotFoundException.java +0 -0
- {mca_sdk-0.9.2 → mca_sdk-0.9.4.dev1}/mca-sdk-java/src/main/java/com/bhsf/mca/sdk/exceptions/RegistryConnectionException.java +0 -0
- {mca_sdk-0.9.2 → mca_sdk-0.9.4.dev1}/mca-sdk-java/src/main/java/com/bhsf/mca/sdk/exceptions/RegistryException.java +0 -0
- {mca_sdk-0.9.2 → mca_sdk-0.9.4.dev1}/mca-sdk-java/src/main/java/com/bhsf/mca/sdk/exceptions/ValidationException.java +0 -0
- {mca_sdk-0.9.2 → mca_sdk-0.9.4.dev1}/mca-sdk-java/src/main/java/com/bhsf/mca/sdk/exporters/GCPLoggingExporterFactory.java +0 -0
- {mca_sdk-0.9.2 → mca_sdk-0.9.4.dev1}/mca-sdk-java/src/main/java/com/bhsf/mca/sdk/exporters/GCPLoggingExporterImpl.java +0 -0
- {mca_sdk-0.9.2 → mca_sdk-0.9.4.dev1}/mca-sdk-java/src/main/java/com/bhsf/mca/sdk/exporters/GCPTraceExporterFactory.java +0 -0
- {mca_sdk-0.9.2 → mca_sdk-0.9.4.dev1}/mca-sdk-java/src/main/java/com/bhsf/mca/sdk/exporters/GCPTraceExporterImpl.java +0 -0
- {mca_sdk-0.9.2 → mca_sdk-0.9.4.dev1}/mca-sdk-java/src/main/java/com/bhsf/mca/sdk/gcp/GCPAuthFactory.java +0 -0
- {mca_sdk-0.9.2 → mca_sdk-0.9.4.dev1}/mca-sdk-java/src/main/java/com/bhsf/mca/sdk/gcp/GCPAuthImpl.java +0 -0
- {mca_sdk-0.9.2 → mca_sdk-0.9.4.dev1}/mca-sdk-java/src/main/java/com/bhsf/mca/sdk/instrumentation/MetricRouter.java +0 -0
- {mca_sdk-0.9.2 → mca_sdk-0.9.4.dev1}/mca-sdk-java/src/main/java/com/bhsf/mca/sdk/instrumentation/SpanManager.java +0 -0
- {mca_sdk-0.9.2 → mca_sdk-0.9.4.dev1}/mca-sdk-java/src/main/java/com/bhsf/mca/sdk/integrations/AgenticTracking.java +0 -0
- {mca_sdk-0.9.2 → mca_sdk-0.9.4.dev1}/mca-sdk-java/src/main/java/com/bhsf/mca/sdk/integrations/GenAIIntegration.java +0 -0
- {mca_sdk-0.9.2 → mca_sdk-0.9.4.dev1}/mca-sdk-java/src/main/java/com/bhsf/mca/sdk/integrations/TelemetryAttributeUtil.java +0 -0
- {mca_sdk-0.9.2 → mca_sdk-0.9.4.dev1}/mca-sdk-java/src/main/java/com/bhsf/mca/sdk/providers/TelemetryProviders.java +0 -0
- {mca_sdk-0.9.2 → mca_sdk-0.9.4.dev1}/mca-sdk-java/src/main/java/com/bhsf/mca/sdk/registry/RegistryClient.java +0 -0
- {mca_sdk-0.9.2 → mca_sdk-0.9.4.dev1}/mca-sdk-java/src/main/java/com/bhsf/mca/sdk/registry/RegistryTelemetry.java +0 -0
- {mca_sdk-0.9.2 → mca_sdk-0.9.4.dev1}/mca-sdk-java/src/main/java/com/bhsf/mca/sdk/registry/RetryPolicy.java +0 -0
- {mca_sdk-0.9.2 → mca_sdk-0.9.4.dev1}/mca-sdk-java/src/main/java/com/bhsf/mca/sdk/registry/models/CacheEntry.java +0 -0
- {mca_sdk-0.9.2 → mca_sdk-0.9.4.dev1}/mca-sdk-java/src/main/java/com/bhsf/mca/sdk/registry/models/DeploymentConfig.java +0 -0
- {mca_sdk-0.9.2 → mca_sdk-0.9.4.dev1}/mca-sdk-java/src/main/java/com/bhsf/mca/sdk/registry/models/ModelConfig.java +0 -0
- {mca_sdk-0.9.2 → mca_sdk-0.9.4.dev1}/mca-sdk-java/src/main/java/com/bhsf/mca/sdk/resilience/CircuitBreaker.java +0 -0
- {mca_sdk-0.9.2 → mca_sdk-0.9.4.dev1}/mca-sdk-java/src/main/java/com/bhsf/mca/sdk/resilience/DeadLetterQueue.java +0 -0
- {mca_sdk-0.9.2 → mca_sdk-0.9.4.dev1}/mca-sdk-java/src/main/java/com/bhsf/mca/sdk/resilience/ResilienceException.java +0 -0
- {mca_sdk-0.9.2 → mca_sdk-0.9.4.dev1}/mca-sdk-java/src/main/java/com/bhsf/mca/sdk/resilience/RetryPolicy.java +0 -0
- {mca_sdk-0.9.2 → mca_sdk-0.9.4.dev1}/mca-sdk-java/src/main/java/com/bhsf/mca/sdk/resilience/TelemetryQueue.java +0 -0
- {mca_sdk-0.9.2 → mca_sdk-0.9.4.dev1}/mca-sdk-java/src/main/java/com/bhsf/mca/sdk/security/CertificateException.java +0 -0
- {mca_sdk-0.9.2 → mca_sdk-0.9.4.dev1}/mca-sdk-java/src/main/java/com/bhsf/mca/sdk/security/CertificateExpiredException.java +0 -0
- {mca_sdk-0.9.2 → mca_sdk-0.9.4.dev1}/mca-sdk-java/src/main/java/com/bhsf/mca/sdk/security/CertificateLoadException.java +0 -0
- {mca_sdk-0.9.2 → mca_sdk-0.9.4.dev1}/mca-sdk-java/src/main/java/com/bhsf/mca/sdk/security/CertificateManager.java +0 -0
- {mca_sdk-0.9.2 → mca_sdk-0.9.4.dev1}/mca-sdk-java/src/main/java/com/bhsf/mca/sdk/security/CertificateValidationException.java +0 -0
- {mca_sdk-0.9.2 → mca_sdk-0.9.4.dev1}/mca-sdk-java/src/main/java/com/bhsf/mca/sdk/security/CredentialMasking.java +0 -0
- {mca_sdk-0.9.2 → mca_sdk-0.9.4.dev1}/mca-sdk-java/src/main/java/com/bhsf/mca/sdk/security/EncryptionManager.java +0 -0
- {mca_sdk-0.9.2 → mca_sdk-0.9.4.dev1}/mca-sdk-java/src/main/java/com/bhsf/mca/sdk/security/GcpSecretProvider.java +0 -0
- {mca_sdk-0.9.2 → mca_sdk-0.9.4.dev1}/mca-sdk-java/src/main/java/com/bhsf/mca/sdk/security/QueueEncryption.java +0 -0
- {mca_sdk-0.9.2 → mca_sdk-0.9.4.dev1}/mca-sdk-java/src/main/java/com/bhsf/mca/sdk/security/SecretManager.java +0 -0
- {mca_sdk-0.9.2 → mca_sdk-0.9.4.dev1}/mca-sdk-java/src/main/java/com/bhsf/mca/sdk/security/SecurityException.java +0 -0
- {mca_sdk-0.9.2 → mca_sdk-0.9.4.dev1}/mca-sdk-java/src/main/java/com/bhsf/mca/sdk/util/Serialization.java +0 -0
- {mca_sdk-0.9.2 → mca_sdk-0.9.4.dev1}/mca-sdk-java/src/main/java/com/bhsf/mca/sdk/util/StringUtils.java +0 -0
- {mca_sdk-0.9.2 → mca_sdk-0.9.4.dev1}/mca-sdk-java/src/main/java/com/bhsf/mca/sdk/util/VersionCheck.java +0 -0
- {mca_sdk-0.9.2 → mca_sdk-0.9.4.dev1}/mca-sdk-java/src/main/java/com/bhsf/mca/sdk/validation/AttributeValidator.java +0 -0
- {mca_sdk-0.9.2 → mca_sdk-0.9.4.dev1}/mca-sdk-java/src/main/java/com/bhsf/mca/sdk/validation/MetricNamingValidator.java +0 -0
- {mca_sdk-0.9.2 → mca_sdk-0.9.4.dev1}/mca-sdk-java/src/main/java/com/bhsf/mca/sdk/validation/TelemetryAttributeValidator.java +0 -0
- {mca_sdk-0.9.2 → mca_sdk-0.9.4.dev1}/mca-sdk-java/src/main/java/com/bhsf/mca/sdk/validation/ValidationResult.java +0 -0
- {mca_sdk-0.9.2 → mca_sdk-0.9.4.dev1}/mca-sdk-java/src/main/java/com/bhsf/mca/sdk/validation/ValidationRules.java +0 -0
- {mca_sdk-0.9.2 → mca_sdk-0.9.4.dev1}/mca-sdk-java/src/main/java/examples/InternalModelExample.java +0 -0
- {mca_sdk-0.9.2 → mca_sdk-0.9.4.dev1}/mca-sdk-java/src/test/java/com/bhsf/mca/sdk/MCAClientInstrumentationTest.java +0 -0
- {mca_sdk-0.9.2 → mca_sdk-0.9.4.dev1}/mca-sdk-java/src/test/java/com/bhsf/mca/sdk/MCAClientTest.java +0 -0
- {mca_sdk-0.9.2 → mca_sdk-0.9.4.dev1}/mca-sdk-java/src/test/java/com/bhsf/mca/sdk/RecordPredictionTest.java +0 -0
- {mca_sdk-0.9.2 → mca_sdk-0.9.4.dev1}/mca-sdk-java/src/test/java/com/bhsf/mca/sdk/config/ConfigLoaderTest.java +0 -0
- {mca_sdk-0.9.2 → mca_sdk-0.9.4.dev1}/mca-sdk-java/src/test/java/com/bhsf/mca/sdk/exceptions/BufferingExceptionTest.java +0 -0
- {mca_sdk-0.9.2 → mca_sdk-0.9.4.dev1}/mca-sdk-java/src/test/java/com/bhsf/mca/sdk/exceptions/ConfigNotFoundExceptionTest.java +0 -0
- {mca_sdk-0.9.2 → mca_sdk-0.9.4.dev1}/mca-sdk-java/src/test/java/com/bhsf/mca/sdk/exceptions/ExceptionHierarchyTest.java +0 -0
- {mca_sdk-0.9.2 → mca_sdk-0.9.4.dev1}/mca-sdk-java/src/test/java/com/bhsf/mca/sdk/exceptions/MCAExceptionTest.java +0 -0
- {mca_sdk-0.9.2 → mca_sdk-0.9.4.dev1}/mca-sdk-java/src/test/java/com/bhsf/mca/sdk/exporters/GCPExportersTest.java +0 -0
- {mca_sdk-0.9.2 → mca_sdk-0.9.4.dev1}/mca-sdk-java/src/test/java/com/bhsf/mca/sdk/gcp/GCPAuthTest.java +0 -0
- {mca_sdk-0.9.2 → mca_sdk-0.9.4.dev1}/mca-sdk-java/src/test/java/com/bhsf/mca/sdk/instrumentation/MetricRouterTest.java +0 -0
- {mca_sdk-0.9.2 → mca_sdk-0.9.4.dev1}/mca-sdk-java/src/test/java/com/bhsf/mca/sdk/instrumentation/SpanManagerTest.java +0 -0
- {mca_sdk-0.9.2 → mca_sdk-0.9.4.dev1}/mca-sdk-java/src/test/java/com/bhsf/mca/sdk/integrations/AdversarialReviewFixesTest.java +0 -0
- {mca_sdk-0.9.2 → mca_sdk-0.9.4.dev1}/mca-sdk-java/src/test/java/com/bhsf/mca/sdk/integrations/AgenticTrackingTest.java +0 -0
- {mca_sdk-0.9.2 → mca_sdk-0.9.4.dev1}/mca-sdk-java/src/test/java/com/bhsf/mca/sdk/integrations/GenAIIntegrationTest.java +0 -0
- {mca_sdk-0.9.2 → mca_sdk-0.9.4.dev1}/mca-sdk-java/src/test/java/com/bhsf/mca/sdk/integrations/IntegrationTest.java +0 -0
- {mca_sdk-0.9.2 → mca_sdk-0.9.4.dev1}/mca-sdk-java/src/test/java/com/bhsf/mca/sdk/integrations/TelemetryAttributeUtilTest.java +0 -0
- {mca_sdk-0.9.2 → mca_sdk-0.9.4.dev1}/mca-sdk-java/src/test/java/com/bhsf/mca/sdk/registry/RegistryClientTest.java +0 -0
- {mca_sdk-0.9.2 → mca_sdk-0.9.4.dev1}/mca-sdk-java/src/test/java/com/bhsf/mca/sdk/registry/RetryPolicyTest.java +0 -0
- {mca_sdk-0.9.2 → mca_sdk-0.9.4.dev1}/mca-sdk-java/src/test/java/com/bhsf/mca/sdk/registry/models/CacheEntryTest.java +0 -0
- {mca_sdk-0.9.2 → mca_sdk-0.9.4.dev1}/mca-sdk-java/src/test/java/com/bhsf/mca/sdk/registry/models/ModelConfigTest.java +0 -0
- {mca_sdk-0.9.2 → mca_sdk-0.9.4.dev1}/mca-sdk-java/src/test/java/com/bhsf/mca/sdk/resilience/CircuitBreakerTest.java +0 -0
- {mca_sdk-0.9.2 → mca_sdk-0.9.4.dev1}/mca-sdk-java/src/test/java/com/bhsf/mca/sdk/resilience/DeadLetterQueueTest.java +0 -0
- {mca_sdk-0.9.2 → mca_sdk-0.9.4.dev1}/mca-sdk-java/src/test/java/com/bhsf/mca/sdk/resilience/RetryPolicyTest.java +0 -0
- {mca_sdk-0.9.2 → mca_sdk-0.9.4.dev1}/mca-sdk-java/src/test/java/com/bhsf/mca/sdk/resilience/TelemetryQueueTest.java +0 -0
- {mca_sdk-0.9.2 → mca_sdk-0.9.4.dev1}/mca-sdk-java/src/test/java/com/bhsf/mca/sdk/security/CertificateExceptionsTest.java +0 -0
- {mca_sdk-0.9.2 → mca_sdk-0.9.4.dev1}/mca-sdk-java/src/test/java/com/bhsf/mca/sdk/security/CertificateManagerTest.java +0 -0
- {mca_sdk-0.9.2 → mca_sdk-0.9.4.dev1}/mca-sdk-java/src/test/java/com/bhsf/mca/sdk/security/CredentialMaskingTest.java +0 -0
- {mca_sdk-0.9.2 → mca_sdk-0.9.4.dev1}/mca-sdk-java/src/test/java/com/bhsf/mca/sdk/security/EncryptionManagerTest.java +0 -0
- {mca_sdk-0.9.2 → mca_sdk-0.9.4.dev1}/mca-sdk-java/src/test/java/com/bhsf/mca/sdk/security/GcpSecretProviderTest.java +0 -0
- {mca_sdk-0.9.2 → mca_sdk-0.9.4.dev1}/mca-sdk-java/src/test/java/com/bhsf/mca/sdk/security/QueueEncryptionTest.java +0 -0
- {mca_sdk-0.9.2 → mca_sdk-0.9.4.dev1}/mca-sdk-java/src/test/java/com/bhsf/mca/sdk/security/SecretManagerTest.java +0 -0
- {mca_sdk-0.9.2 → mca_sdk-0.9.4.dev1}/mca-sdk-java/src/test/java/com/bhsf/mca/sdk/util/SerializationTest.java +0 -0
- {mca_sdk-0.9.2 → mca_sdk-0.9.4.dev1}/mca-sdk-java/src/test/java/com/bhsf/mca/sdk/util/StringUtilsTest.java +0 -0
- {mca_sdk-0.9.2 → mca_sdk-0.9.4.dev1}/mca-sdk-java/src/test/java/com/bhsf/mca/sdk/util/VersionCheckTest.java +0 -0
- {mca_sdk-0.9.2 → mca_sdk-0.9.4.dev1}/mca-sdk-java/src/test/java/com/bhsf/mca/sdk/validation/AttributeValidatorTest.java +0 -0
- {mca_sdk-0.9.2 → mca_sdk-0.9.4.dev1}/mca-sdk-java/src/test/java/com/bhsf/mca/sdk/validation/MetricNamingValidatorTest.java +0 -0
- {mca_sdk-0.9.2 → mca_sdk-0.9.4.dev1}/mca-sdk-java/src/test/java/com/bhsf/mca/sdk/validation/TelemetryAttributeValidatorTest.java +0 -0
- {mca_sdk-0.9.2 → mca_sdk-0.9.4.dev1}/mca-sdk-java/src/test/java/com/bhsf/mca/sdk/validation/ValidationResultTest.java +0 -0
- {mca_sdk-0.9.2 → mca_sdk-0.9.4.dev1}/mca-sdk-java/src/test/java/com/bhsf/mca/sdk/validation/ValidationRulesTest.java +0 -0
- {mca_sdk-0.9.2 → mca_sdk-0.9.4.dev1}/mca-sdk-nodejs/.eslintrc.js +0 -0
- {mca_sdk-0.9.2 → mca_sdk-0.9.4.dev1}/mca-sdk-nodejs/.gitignore +0 -0
- {mca_sdk-0.9.2 → mca_sdk-0.9.4.dev1}/mca-sdk-nodejs/.npmignore +0 -0
- {mca_sdk-0.9.2 → mca_sdk-0.9.4.dev1}/mca-sdk-nodejs/.prettierrc +0 -0
- {mca_sdk-0.9.2 → mca_sdk-0.9.4.dev1}/mca-sdk-nodejs/CHANGELOG.md +0 -0
- {mca_sdk-0.9.2 → mca_sdk-0.9.4.dev1}/mca-sdk-nodejs/LICENSE +0 -0
- {mca_sdk-0.9.2 → mca_sdk-0.9.4.dev1}/mca-sdk-nodejs/README.md +0 -0
- {mca_sdk-0.9.2 → mca_sdk-0.9.4.dev1}/mca-sdk-nodejs/examples/simple-example.ts +0 -0
- {mca_sdk-0.9.2 → mca_sdk-0.9.4.dev1}/mca-sdk-nodejs/jest.config.js +0 -0
- {mca_sdk-0.9.2 → mca_sdk-0.9.4.dev1}/mca-sdk-nodejs/package-lock.json +0 -0
- {mca_sdk-0.9.2 → mca_sdk-0.9.4.dev1}/mca-sdk-nodejs/package.json +0 -0
- {mca_sdk-0.9.2 → mca_sdk-0.9.4.dev1}/mca-sdk-nodejs/src/config/settings.ts +0 -0
- {mca_sdk-0.9.2 → mca_sdk-0.9.4.dev1}/mca-sdk-nodejs/src/core/client.ts +0 -0
- {mca_sdk-0.9.2 → mca_sdk-0.9.4.dev1}/mca-sdk-nodejs/src/core/providers.ts +0 -0
- {mca_sdk-0.9.2 → mca_sdk-0.9.4.dev1}/mca-sdk-nodejs/src/index.ts +0 -0
- {mca_sdk-0.9.2 → mca_sdk-0.9.4.dev1}/mca-sdk-nodejs/src/registry/client.ts +0 -0
- {mca_sdk-0.9.2 → mca_sdk-0.9.4.dev1}/mca-sdk-nodejs/src/registry/models.ts +0 -0
- {mca_sdk-0.9.2 → mca_sdk-0.9.4.dev1}/mca-sdk-nodejs/src/types/index.ts +0 -0
- {mca_sdk-0.9.2 → mca_sdk-0.9.4.dev1}/mca-sdk-nodejs/src/utils/context.ts +0 -0
- {mca_sdk-0.9.2 → mca_sdk-0.9.4.dev1}/mca-sdk-nodejs/src/utils/exceptions.ts +0 -0
- {mca_sdk-0.9.2 → mca_sdk-0.9.4.dev1}/mca-sdk-nodejs/src/utils/logger.ts +0 -0
- {mca_sdk-0.9.2 → mca_sdk-0.9.4.dev1}/mca-sdk-nodejs/src/utils/serialization.ts +0 -0
- {mca_sdk-0.9.2 → mca_sdk-0.9.4.dev1}/mca-sdk-nodejs/test-integration-v0.4.ts +0 -0
- {mca_sdk-0.9.2 → mca_sdk-0.9.4.dev1}/mca-sdk-nodejs/test-integration.ts +0 -0
- {mca_sdk-0.9.2 → mca_sdk-0.9.4.dev1}/mca-sdk-nodejs/test-performance.ts +0 -0
- {mca_sdk-0.9.2 → mca_sdk-0.9.4.dev1}/mca-sdk-nodejs/test-registry-integration.ts +0 -0
- {mca_sdk-0.9.2 → mca_sdk-0.9.4.dev1}/mca-sdk-nodejs/tests/integration/agentic-advanced.test.ts +0 -0
- {mca_sdk-0.9.2 → mca_sdk-0.9.4.dev1}/mca-sdk-nodejs/tests/unit/client.test.ts +0 -0
- {mca_sdk-0.9.2 → mca_sdk-0.9.4.dev1}/mca-sdk-nodejs/tests/unit/config.test.ts +0 -0
- {mca_sdk-0.9.2 → mca_sdk-0.9.4.dev1}/mca-sdk-nodejs/tests/unit/context.test.ts +0 -0
- {mca_sdk-0.9.2 → mca_sdk-0.9.4.dev1}/mca-sdk-nodejs/tests/unit/registry.test.ts +0 -0
- {mca_sdk-0.9.2 → mca_sdk-0.9.4.dev1}/mca-sdk-nodejs/tests/unit/serialization.test.ts +0 -0
- {mca_sdk-0.9.2 → mca_sdk-0.9.4.dev1}/mca-sdk-nodejs/tsconfig.eslint.json +0 -0
- {mca_sdk-0.9.2 → mca_sdk-0.9.4.dev1}/mca-sdk-nodejs/tsconfig.json +0 -0
- {mca_sdk-0.9.2 → mca_sdk-0.9.4.dev1}/mca-sdk-nodejs/typedoc.json +0 -0
- {mca_sdk-0.9.2 → mca_sdk-0.9.4.dev1}/mca_instrumentation_agent/.gitlab-ci.yml +0 -0
- {mca_sdk-0.9.2 → mca_sdk-0.9.4.dev1}/mca_instrumentation_agent/__init__.py +0 -0
- {mca_sdk-0.9.2 → mca_sdk-0.9.4.dev1}/mca_instrumentation_agent/__main__.py +0 -0
- {mca_sdk-0.9.2 → mca_sdk-0.9.4.dev1}/mca_instrumentation_agent/async_io/__init__.py +0 -0
- {mca_sdk-0.9.2 → mca_sdk-0.9.4.dev1}/mca_instrumentation_agent/async_io/py.typed +0 -0
- {mca_sdk-0.9.2 → mca_sdk-0.9.4.dev1}/mca_instrumentation_agent/audit/__init__.py +0 -0
- {mca_sdk-0.9.2 → mca_sdk-0.9.4.dev1}/mca_instrumentation_agent/audit/py.typed +0 -0
- {mca_sdk-0.9.2 → mca_sdk-0.9.4.dev1}/mca_instrumentation_agent/ci/__init__.py +0 -0
- {mca_sdk-0.9.2 → mca_sdk-0.9.4.dev1}/mca_instrumentation_agent/ci/lockfile_cadence_gate.py +0 -0
- {mca_sdk-0.9.2 → mca_sdk-0.9.4.dev1}/mca_instrumentation_agent/ci/lockfile_diff_gate.py +0 -0
- {mca_sdk-0.9.2 → mca_sdk-0.9.4.dev1}/mca_instrumentation_agent/ci/lockfile_hash_gate.py +0 -0
- {mca_sdk-0.9.2 → mca_sdk-0.9.4.dev1}/mca_instrumentation_agent/ci/py.typed +0 -0
- {mca_sdk-0.9.2 → mca_sdk-0.9.4.dev1}/mca_instrumentation_agent/ci/sdk_version_invariant_gate.py +0 -0
- {mca_sdk-0.9.2 → mca_sdk-0.9.4.dev1}/mca_instrumentation_agent/ci/vuln_scan_sla_gate.py +0 -0
- {mca_sdk-0.9.2 → mca_sdk-0.9.4.dev1}/mca_instrumentation_agent/cli.py +0 -0
- {mca_sdk-0.9.2 → mca_sdk-0.9.4.dev1}/mca_instrumentation_agent/config/__init__.py +0 -0
- {mca_sdk-0.9.2 → mca_sdk-0.9.4.dev1}/mca_instrumentation_agent/config/py.typed +0 -0
- {mca_sdk-0.9.2 → mca_sdk-0.9.4.dev1}/mca_instrumentation_agent/observability/__init__.py +0 -0
- {mca_sdk-0.9.2 → mca_sdk-0.9.4.dev1}/mca_instrumentation_agent/observability/py.typed +0 -0
- {mca_sdk-0.9.2 → mca_sdk-0.9.4.dev1}/mca_instrumentation_agent/py.typed +0 -0
- {mca_sdk-0.9.2 → mca_sdk-0.9.4.dev1}/mca_instrumentation_agent/pyproject.toml +0 -0
- {mca_sdk-0.9.2 → mca_sdk-0.9.4.dev1}/mca_instrumentation_agent/runtime/__init__.py +0 -0
- {mca_sdk-0.9.2 → mca_sdk-0.9.4.dev1}/mca_instrumentation_agent/runtime/py.typed +0 -0
- {mca_sdk-0.9.2 → mca_sdk-0.9.4.dev1}/mca_instrumentation_agent/runtime/run_state.py +0 -0
- {mca_sdk-0.9.2 → mca_sdk-0.9.4.dev1}/mca_instrumentation_agent/schemas/__init__.py +0 -0
- {mca_sdk-0.9.2 → mca_sdk-0.9.4.dev1}/mca_instrumentation_agent/schemas/error_codes.py +0 -0
- {mca_sdk-0.9.2 → mca_sdk-0.9.4.dev1}/mca_instrumentation_agent/schemas/py.typed +0 -0
- {mca_sdk-0.9.2 → mca_sdk-0.9.4.dev1}/mca_instrumentation_agent/tools/__init__.py +0 -0
- {mca_sdk-0.9.2 → mca_sdk-0.9.4.dev1}/mca_instrumentation_agent/tools/py.typed +0 -0
- {mca_sdk-0.9.2 → mca_sdk-0.9.4.dev1}/mca_instrumentation_agent/uv.lock +0 -0
- {mca_sdk-0.9.2 → mca_sdk-0.9.4.dev1}/mca_sdk/__init__.py +0 -0
- {mca_sdk-0.9.2 → mca_sdk-0.9.4.dev1}/mca_sdk/autolog/__init__.py +0 -0
- {mca_sdk-0.9.2 → mca_sdk-0.9.4.dev1}/mca_sdk/autolog/_anthropic.py +0 -0
- {mca_sdk-0.9.2 → mca_sdk-0.9.4.dev1}/mca_sdk/autolog/_base.py +0 -0
- {mca_sdk-0.9.2 → mca_sdk-0.9.4.dev1}/mca_sdk/autolog/_lightgbm.py +0 -0
- {mca_sdk-0.9.2 → mca_sdk-0.9.4.dev1}/mca_sdk/autolog/_openai.py +0 -0
- {mca_sdk-0.9.2 → mca_sdk-0.9.4.dev1}/mca_sdk/autolog/_sklearn.py +0 -0
- {mca_sdk-0.9.2 → mca_sdk-0.9.4.dev1}/mca_sdk/autolog/_xgboost.py +0 -0
- {mca_sdk-0.9.2 → mca_sdk-0.9.4.dev1}/mca_sdk/buffering/__init__.py +0 -0
- {mca_sdk-0.9.2 → mca_sdk-0.9.4.dev1}/mca_sdk/buffering/queue.py +0 -0
- {mca_sdk-0.9.2 → mca_sdk-0.9.4.dev1}/mca_sdk/buffering/queued_item.py +0 -0
- {mca_sdk-0.9.2 → mca_sdk-0.9.4.dev1}/mca_sdk/buffering/retry.py +0 -0
- {mca_sdk-0.9.2 → mca_sdk-0.9.4.dev1}/mca_sdk/cli/__init__.py +0 -0
- {mca_sdk-0.9.2 → mca_sdk-0.9.4.dev1}/mca_sdk/cli/_bootstrap.py +0 -0
- {mca_sdk-0.9.2 → mca_sdk-0.9.4.dev1}/mca_sdk/cli/instrument.py +0 -0
- {mca_sdk-0.9.2 → mca_sdk-0.9.4.dev1}/mca_sdk/cli/run.py +0 -0
- {mca_sdk-0.9.2 → mca_sdk-0.9.4.dev1}/mca_sdk/config/__init__.py +0 -0
- {mca_sdk-0.9.2 → mca_sdk-0.9.4.dev1}/mca_sdk/config/settings.py +0 -0
- {mca_sdk-0.9.2 → mca_sdk-0.9.4.dev1}/mca_sdk/core/__init__.py +0 -0
- {mca_sdk-0.9.2 → mca_sdk-0.9.4.dev1}/mca_sdk/core/client.py +0 -0
- {mca_sdk-0.9.2 → mca_sdk-0.9.4.dev1}/mca_sdk/core/gcp_auth.py +0 -0
- {mca_sdk-0.9.2 → mca_sdk-0.9.4.dev1}/mca_sdk/core/providers.py +0 -0
- {mca_sdk-0.9.2 → mca_sdk-0.9.4.dev1}/mca_sdk/exporters/__init__.py +0 -0
- {mca_sdk-0.9.2 → mca_sdk-0.9.4.dev1}/mca_sdk/exporters/gcp_trace_exporter.py +0 -0
- {mca_sdk-0.9.2 → mca_sdk-0.9.4.dev1}/mca_sdk/integrations/__init__.py +0 -0
- {mca_sdk-0.9.2 → mca_sdk-0.9.4.dev1}/mca_sdk/integrations/_genai_attrs.py +0 -0
- {mca_sdk-0.9.2 → mca_sdk-0.9.4.dev1}/mca_sdk/integrations/bridge.py +0 -0
- {mca_sdk-0.9.2 → mca_sdk-0.9.4.dev1}/mca_sdk/integrations/decorators.py +0 -0
- {mca_sdk-0.9.2 → mca_sdk-0.9.4.dev1}/mca_sdk/integrations/genai.py +0 -0
- {mca_sdk-0.9.2 → mca_sdk-0.9.4.dev1}/mca_sdk/integrations/langchain_callback.py +0 -0
- {mca_sdk-0.9.2 → mca_sdk-0.9.4.dev1}/mca_sdk/integrations/litellm_callback.py +0 -0
- {mca_sdk-0.9.2 → mca_sdk-0.9.4.dev1}/mca_sdk/integrations/llamaindex_callback.py +0 -0
- {mca_sdk-0.9.2 → mca_sdk-0.9.4.dev1}/mca_sdk/integrations/state.py +0 -0
- {mca_sdk-0.9.2 → mca_sdk-0.9.4.dev1}/mca_sdk/py.typed +0 -0
- {mca_sdk-0.9.2 → mca_sdk-0.9.4.dev1}/mca_sdk/registry/__init__.py +0 -0
- {mca_sdk-0.9.2 → mca_sdk-0.9.4.dev1}/mca_sdk/registry/client.py +0 -0
- {mca_sdk-0.9.2 → mca_sdk-0.9.4.dev1}/mca_sdk/registry/models.py +0 -0
- {mca_sdk-0.9.2 → mca_sdk-0.9.4.dev1}/mca_sdk/registry/telemetry.py +0 -0
- {mca_sdk-0.9.2 → mca_sdk-0.9.4.dev1}/mca_sdk/resilience/__init__.py +0 -0
- {mca_sdk-0.9.2 → mca_sdk-0.9.4.dev1}/mca_sdk/resilience/circuit_breaker.py +0 -0
- {mca_sdk-0.9.2 → mca_sdk-0.9.4.dev1}/mca_sdk/resilience/dead_letter_queue.py +0 -0
- {mca_sdk-0.9.2 → mca_sdk-0.9.4.dev1}/mca_sdk/security/__init__.py +0 -0
- {mca_sdk-0.9.2 → mca_sdk-0.9.4.dev1}/mca_sdk/security/_testing.py +0 -0
- {mca_sdk-0.9.2 → mca_sdk-0.9.4.dev1}/mca_sdk/security/certificate.py +0 -0
- {mca_sdk-0.9.2 → mca_sdk-0.9.4.dev1}/mca_sdk/security/certificates.py +0 -0
- {mca_sdk-0.9.2 → mca_sdk-0.9.4.dev1}/mca_sdk/security/encryption.py +0 -0
- {mca_sdk-0.9.2 → mca_sdk-0.9.4.dev1}/mca_sdk/security/migration.py +0 -0
- {mca_sdk-0.9.2 → mca_sdk-0.9.4.dev1}/mca_sdk/security/phi_filter.py +0 -0
- {mca_sdk-0.9.2 → mca_sdk-0.9.4.dev1}/mca_sdk/security/secret_filter.py +0 -0
- {mca_sdk-0.9.2 → mca_sdk-0.9.4.dev1}/mca_sdk/utils/__init__.py +0 -0
- {mca_sdk-0.9.2 → mca_sdk-0.9.4.dev1}/mca_sdk/utils/environment.py +0 -0
- {mca_sdk-0.9.2 → mca_sdk-0.9.4.dev1}/mca_sdk/utils/exceptions.py +0 -0
- {mca_sdk-0.9.2 → mca_sdk-0.9.4.dev1}/mca_sdk/utils/gcp_validators.py +0 -0
- {mca_sdk-0.9.2 → mca_sdk-0.9.4.dev1}/mca_sdk/utils/phi_safe_capture.py +0 -0
- {mca_sdk-0.9.2 → mca_sdk-0.9.4.dev1}/mca_sdk/utils/phi_utils.py +0 -0
- {mca_sdk-0.9.2 → mca_sdk-0.9.4.dev1}/mca_sdk/utils/routing.py +0 -0
- {mca_sdk-0.9.2 → mca_sdk-0.9.4.dev1}/mca_sdk/utils/serialization.py +0 -0
- {mca_sdk-0.9.2 → mca_sdk-0.9.4.dev1}/mca_sdk/utils/version_check.py +0 -0
- {mca_sdk-0.9.2 → mca_sdk-0.9.4.dev1}/mca_sdk/validation/__init__.py +0 -0
- {mca_sdk-0.9.2 → mca_sdk-0.9.4.dev1}/mca_sdk/validation/attributes.py +0 -0
- {mca_sdk-0.9.2 → mca_sdk-0.9.4.dev1}/mca_sdk/validation/naming_conventions.py +0 -0
- {mca_sdk-0.9.2 → mca_sdk-0.9.4.dev1}/mca_sdk/validation/result.py +0 -0
- {mca_sdk-0.9.2 → mca_sdk-0.9.4.dev1}/mca_sdk/validation/rules.py +0 -0
- {mca_sdk-0.9.2 → mca_sdk-0.9.4.dev1}/mca_sdk/validation/schema.py +0 -0
- {mca_sdk-0.9.2 → mca_sdk-0.9.4.dev1}/mca_sdk/validation/telemetry_attributes.py +0 -0
- {mca_sdk-0.9.2 → mca_sdk-0.9.4.dev1}/mca_sdk/validation/validator.py +0 -0
- {mca_sdk-0.9.2 → mca_sdk-0.9.4.dev1}/mca_sdk/version.py +0 -0
- {mca_sdk-0.9.2 → mca_sdk-0.9.4.dev1}/mca_sdk.egg-info/dependency_links.txt +0 -0
- {mca_sdk-0.9.2 → mca_sdk-0.9.4.dev1}/mca_sdk.egg-info/entry_points.txt +0 -0
- {mca_sdk-0.9.2 → mca_sdk-0.9.4.dev1}/mca_sdk.egg-info/top_level.txt +0 -0
- {mca_sdk-0.9.2 → mca_sdk-0.9.4.dev1}/mypy.ini +0 -0
- {mca_sdk-0.9.2 → mca_sdk-0.9.4.dev1}/notebooks/README.md +0 -0
- {mca_sdk-0.9.2 → mca_sdk-0.9.4.dev1}/notebooks/end-to-end-demo.ipynb +0 -0
- {mca_sdk-0.9.2 → mca_sdk-0.9.4.dev1}/pip-audit-report.json +0 -0
- {mca_sdk-0.9.2 → mca_sdk-0.9.4.dev1}/pip-audit-results.txt +0 -0
- {mca_sdk-0.9.2 → mca_sdk-0.9.4.dev1}/profile_output.txt +0 -0
- {mca_sdk-0.9.2 → mca_sdk-0.9.4.dev1}/pylint-report.json +0 -0
- {mca_sdk-0.9.2 → mca_sdk-0.9.4.dev1}/pytest.ini +0 -0
- {mca_sdk-0.9.2 → mca_sdk-0.9.4.dev1}/requirements-security.txt +0 -0
- {mca_sdk-0.9.2 → mca_sdk-0.9.4.dev1}/requirements.txt +0 -0
- {mca_sdk-0.9.2 → mca_sdk-0.9.4.dev1}/sdk-examples/README.md +0 -0
- {mca_sdk-0.9.2 → mca_sdk-0.9.4.dev1}/sdk-examples/autolog-demo/README.md +0 -0
- {mca_sdk-0.9.2 → mca_sdk-0.9.4.dev1}/sdk-examples/autolog-demo/requirements.txt +0 -0
- {mca_sdk-0.9.2 → mca_sdk-0.9.4.dev1}/sdk-examples/autolog-demo/sklearn_autolog_example.py +0 -0
- {mca_sdk-0.9.2 → mca_sdk-0.9.4.dev1}/sdk-examples/direct-llm/README.md +0 -0
- {mca_sdk-0.9.2 → mca_sdk-0.9.4.dev1}/sdk-examples/direct-llm/instrumented_anthropic.py +0 -0
- {mca_sdk-0.9.2 → mca_sdk-0.9.4.dev1}/sdk-examples/direct-llm/instrumented_langchain.py +0 -0
- {mca_sdk-0.9.2 → mca_sdk-0.9.4.dev1}/sdk-examples/direct-llm/instrumented_llamaindex.py +0 -0
- {mca_sdk-0.9.2 → mca_sdk-0.9.4.dev1}/sdk-examples/direct-llm/instrumented_openai.py +0 -0
- {mca_sdk-0.9.2 → mca_sdk-0.9.4.dev1}/sdk-examples/direct-llm/requirements.txt +0 -0
- {mca_sdk-0.9.2 → mca_sdk-0.9.4.dev1}/sdk-examples/internal-agentic/Dockerfile +0 -0
- {mca_sdk-0.9.2 → mca_sdk-0.9.4.dev1}/sdk-examples/internal-agentic/README.md +0 -0
- {mca_sdk-0.9.2 → mca_sdk-0.9.4.dev1}/sdk-examples/internal-agentic/agent_instrumented.py +0 -0
- {mca_sdk-0.9.2 → mca_sdk-0.9.4.dev1}/sdk-examples/internal-agentic/agent_non_instrumented.py +0 -0
- {mca_sdk-0.9.2 → mca_sdk-0.9.4.dev1}/sdk-examples/internal-agentic/requirements.txt +0 -0
- {mca_sdk-0.9.2 → mca_sdk-0.9.4.dev1}/sdk-examples/internal-agentic/tools.py +0 -0
- {mca_sdk-0.9.2 → mca_sdk-0.9.4.dev1}/sdk-examples/internal-genai/Dockerfile +0 -0
- {mca_sdk-0.9.2 → mca_sdk-0.9.4.dev1}/sdk-examples/internal-genai/README.md +0 -0
- {mca_sdk-0.9.2 → mca_sdk-0.9.4.dev1}/sdk-examples/internal-genai/litellm_instrumented.py +0 -0
- {mca_sdk-0.9.2 → mca_sdk-0.9.4.dev1}/sdk-examples/internal-genai/litellm_non_instrumented.py +0 -0
- {mca_sdk-0.9.2 → mca_sdk-0.9.4.dev1}/sdk-examples/internal-genai/requirements.txt +0 -0
- {mca_sdk-0.9.2 → mca_sdk-0.9.4.dev1}/sdk-examples/internal-model/Dockerfile +0 -0
- {mca_sdk-0.9.2 → mca_sdk-0.9.4.dev1}/sdk-examples/internal-model/README.md +0 -0
- {mca_sdk-0.9.2 → mca_sdk-0.9.4.dev1}/sdk-examples/internal-model/instrumented_model.py +0 -0
- {mca_sdk-0.9.2 → mca_sdk-0.9.4.dev1}/sdk-examples/internal-model/model_non_instrumented.py +0 -0
- {mca_sdk-0.9.2 → mca_sdk-0.9.4.dev1}/sdk-examples/internal-model/raw_model.py +0 -0
- {mca_sdk-0.9.2 → mca_sdk-0.9.4.dev1}/sdk-examples/internal-model/requirements.txt +0 -0
- {mca_sdk-0.9.2 → mca_sdk-0.9.4.dev1}/sdk-examples/internal-model/train_model.py +0 -0
- {mca_sdk-0.9.2 → mca_sdk-0.9.4.dev1}/sdk-examples/internal-model-go/README.md +0 -0
- {mca_sdk-0.9.2 → mca_sdk-0.9.4.dev1}/sdk-examples/internal-model-go/go.mod +0 -0
- {mca_sdk-0.9.2 → mca_sdk-0.9.4.dev1}/sdk-examples/internal-model-go/main.go +0 -0
- {mca_sdk-0.9.2 → mca_sdk-0.9.4.dev1}/sdk-examples/rest-api-various-vendors.py +0 -0
- {mca_sdk-0.9.2 → mca_sdk-0.9.4.dev1}/sdk-examples/rest-api-wrapper-example.py +0 -0
- {mca_sdk-0.9.2 → mca_sdk-0.9.4.dev1}/sdk-examples/shared/__init__.py +0 -0
- {mca_sdk-0.9.2 → mca_sdk-0.9.4.dev1}/sdk-examples/shared/config.py +0 -0
- {mca_sdk-0.9.2 → mca_sdk-0.9.4.dev1}/sdk-examples/shared/gcp_helpers.py +0 -0
- {mca_sdk-0.9.2 → mca_sdk-0.9.4.dev1}/sdk-examples/shared/verification.py +0 -0
- {mca_sdk-0.9.2 → mca_sdk-0.9.4.dev1}/sdk-examples/vendor-bridge/Dockerfile +0 -0
- {mca_sdk-0.9.2 → mca_sdk-0.9.4.dev1}/sdk-examples/vendor-bridge/README.md +0 -0
- {mca_sdk-0.9.2 → mca_sdk-0.9.4.dev1}/sdk-examples/vendor-bridge/api_to_otlp_bridge.py +0 -0
- {mca_sdk-0.9.2 → mca_sdk-0.9.4.dev1}/sdk-examples/vendor-bridge/mock_vendor_api.py +0 -0
- {mca_sdk-0.9.2 → mca_sdk-0.9.4.dev1}/sdk-examples/vendor-bridge/performance_validation.py +0 -0
- {mca_sdk-0.9.2 → mca_sdk-0.9.4.dev1}/sdk-examples/vendor-bridge/requirements-base.txt +0 -0
- {mca_sdk-0.9.2 → mca_sdk-0.9.4.dev1}/sdk-examples/vendor-bridge/requirements.txt +0 -0
- {mca_sdk-0.9.2 → mca_sdk-0.9.4.dev1}/sdk_profile.stats +0 -0
- {mca_sdk-0.9.2 → mca_sdk-0.9.4.dev1}/setup.cfg +0 -0
- {mca_sdk-0.9.2 → mca_sdk-0.9.4.dev1}/test_bootstrap_log.py +0 -0
- {mca_sdk-0.9.2 → mca_sdk-0.9.4.dev1}/test_import.py +0 -0
- {mca_sdk-0.9.2 → mca_sdk-0.9.4.dev1}/tests/README.md +0 -0
- {mca_sdk-0.9.2 → mca_sdk-0.9.4.dev1}/tests/__init__.py +0 -0
- {mca_sdk-0.9.2 → mca_sdk-0.9.4.dev1}/tests/ci/__init__.py +0 -0
- {mca_sdk-0.9.2 → mca_sdk-0.9.4.dev1}/tests/ci/test_security_notifications.py +0 -0
- {mca_sdk-0.9.2 → mca_sdk-0.9.4.dev1}/tests/ci/test_security_scanning.py +0 -0
- {mca_sdk-0.9.2 → mca_sdk-0.9.4.dev1}/tests/conftest.py +0 -0
- {mca_sdk-0.9.2 → mca_sdk-0.9.4.dev1}/tests/e2e/README.md +0 -0
- {mca_sdk-0.9.2 → mca_sdk-0.9.4.dev1}/tests/e2e/RUN_IN_GCP_WORKBENCH.md +0 -0
- {mca_sdk-0.9.2 → mca_sdk-0.9.4.dev1}/tests/e2e/__init__.py +0 -0
- {mca_sdk-0.9.2 → mca_sdk-0.9.4.dev1}/tests/e2e/conftest.py +0 -0
- {mca_sdk-0.9.2 → mca_sdk-0.9.4.dev1}/tests/e2e/run_e2e_tests.sh +0 -0
- {mca_sdk-0.9.2 → mca_sdk-0.9.4.dev1}/tests/e2e/test_error_scenarios_e2e.py +0 -0
- {mca_sdk-0.9.2 → mca_sdk-0.9.4.dev1}/tests/e2e/test_logs_e2e.py +0 -0
- {mca_sdk-0.9.2 → mca_sdk-0.9.4.dev1}/tests/e2e/test_metrics_e2e.py +0 -0
- {mca_sdk-0.9.2 → mca_sdk-0.9.4.dev1}/tests/e2e/test_multi_model_e2e.py +0 -0
- {mca_sdk-0.9.2 → mca_sdk-0.9.4.dev1}/tests/e2e/test_traces_e2e.py +0 -0
- {mca_sdk-0.9.2 → mca_sdk-0.9.4.dev1}/tests/fixtures/agent/__init__.py +0 -0
- {mca_sdk-0.9.2 → mca_sdk-0.9.4.dev1}/tests/fixtures/agent/advisories/p0_25h.json +0 -0
- {mca_sdk-0.9.2 → mca_sdk-0.9.4.dev1}/tests/fixtures/agent/lockfiles/all_pinned.lock +0 -0
- {mca_sdk-0.9.2 → mca_sdk-0.9.4.dev1}/tests/fixtures/agent/lockfiles/diff_drift_new.lock +0 -0
- {mca_sdk-0.9.2 → mca_sdk-0.9.4.dev1}/tests/fixtures/agent/lockfiles/diff_drift_old.lock +0 -0
- {mca_sdk-0.9.2 → mca_sdk-0.9.4.dev1}/tests/fixtures/agent/lockfiles/mca_sdk_carveout.lock +0 -0
- {mca_sdk-0.9.2 → mca_sdk-0.9.4.dev1}/tests/fixtures/agent/lockfiles/missing_hash.lock +0 -0
- {mca_sdk-0.9.2 → mca_sdk-0.9.4.dev1}/tests/fixtures/agent/lockfiles/no_hash_line.lock +0 -0
- {mca_sdk-0.9.2 → mca_sdk-0.9.4.dev1}/tests/fixtures/agent/lockfiles/partial_wheel_hash.lock +0 -0
- {mca_sdk-0.9.2 → mca_sdk-0.9.4.dev1}/tests/fixtures/agent/lockfiles/version_range.lock +0 -0
- {mca_sdk-0.9.2 → mca_sdk-0.9.4.dev1}/tests/fixtures/mock_collector.py +0 -0
- {mca_sdk-0.9.2 → mca_sdk-0.9.4.dev1}/tests/integration/__init__.py +0 -0
- {mca_sdk-0.9.2 → mca_sdk-0.9.4.dev1}/tests/integration/agent/__init__.py +0 -0
- {mca_sdk-0.9.2 → mca_sdk-0.9.4.dev1}/tests/integration/agent/test_ci_gates_e2e.py +0 -0
- {mca_sdk-0.9.2 → mca_sdk-0.9.4.dev1}/tests/integration/conftest.py +0 -0
- {mca_sdk-0.9.2 → mca_sdk-0.9.4.dev1}/tests/integration/junit.xml +0 -0
- {mca_sdk-0.9.2 → mca_sdk-0.9.4.dev1}/tests/integration/run_k8s_tests.sh +0 -0
- {mca_sdk-0.9.2 → mca_sdk-0.9.4.dev1}/tests/integration/test_agentic_example.py +0 -0
- {mca_sdk-0.9.2 → mca_sdk-0.9.4.dev1}/tests/integration/test_attributes_processor.py +0 -0
- {mca_sdk-0.9.2 → mca_sdk-0.9.4.dev1}/tests/integration/test_autolog_integration.py +0 -0
- {mca_sdk-0.9.2 → mca_sdk-0.9.4.dev1}/tests/integration/test_autolog_llm_integration.py.patch +0 -0
- {mca_sdk-0.9.2 → mca_sdk-0.9.4.dev1}/tests/integration/test_batch_processor.py +0 -0
- {mca_sdk-0.9.2 → mca_sdk-0.9.4.dev1}/tests/integration/test_buffering_integration.py +0 -0
- {mca_sdk-0.9.2 → mca_sdk-0.9.4.dev1}/tests/integration/test_circuit_breaker_integration.py +0 -0
- {mca_sdk-0.9.2 → mca_sdk-0.9.4.dev1}/tests/integration/test_collector_self_monitoring.py +0 -0
- {mca_sdk-0.9.2 → mca_sdk-0.9.4.dev1}/tests/integration/test_collector_telemetry_flow.py +0 -0
- {mca_sdk-0.9.2 → mca_sdk-0.9.4.dev1}/tests/integration/test_debug_exporter.py +0 -0
- {mca_sdk-0.9.2 → mca_sdk-0.9.4.dev1}/tests/integration/test_decorator_integration.py +0 -0
- {mca_sdk-0.9.2 → mca_sdk-0.9.4.dev1}/tests/integration/test_docker_build.py +0 -0
- {mca_sdk-0.9.2 → mca_sdk-0.9.4.dev1}/tests/integration/test_docker_compose.py +0 -0
- {mca_sdk-0.9.2 → mca_sdk-0.9.4.dev1}/tests/integration/test_docker_images.py +0 -0
- {mca_sdk-0.9.2 → mca_sdk-0.9.4.dev1}/tests/integration/test_e2e_flow.py +0 -0
- {mca_sdk-0.9.2 → mca_sdk-0.9.4.dev1}/tests/integration/test_exception_integration.py +0 -0
- {mca_sdk-0.9.2 → mca_sdk-0.9.4.dev1}/tests/integration/test_gcp_logging_integration.py +0 -0
- {mca_sdk-0.9.2 → mca_sdk-0.9.4.dev1}/tests/integration/test_gcp_trace_integration.py +0 -0
- {mca_sdk-0.9.2 → mca_sdk-0.9.4.dev1}/tests/integration/test_ha_deployment.py +0 -0
- {mca_sdk-0.9.2 → mca_sdk-0.9.4.dev1}/tests/integration/test_ha_features.py +0 -0
- {mca_sdk-0.9.2 → mca_sdk-0.9.4.dev1}/tests/integration/test_health_check.py +0 -0
- {mca_sdk-0.9.2 → mca_sdk-0.9.4.dev1}/tests/integration/test_health_check_integration.py +0 -0
- {mca_sdk-0.9.2 → mca_sdk-0.9.4.dev1}/tests/integration/test_healthcheck.py +0 -0
- {mca_sdk-0.9.2 → mca_sdk-0.9.4.dev1}/tests/integration/test_internal_model_example.py +0 -0
- {mca_sdk-0.9.2 → mca_sdk-0.9.4.dev1}/tests/integration/test_k8s_deployment.py +0 -0
- {mca_sdk-0.9.2 → mca_sdk-0.9.4.dev1}/tests/integration/test_langchain_integration.py +0 -0
- {mca_sdk-0.9.2 → mca_sdk-0.9.4.dev1}/tests/integration/test_multi_pipeline.py +0 -0
- {mca_sdk-0.9.2 → mca_sdk-0.9.4.dev1}/tests/integration/test_package_metadata.py +0 -0
- {mca_sdk-0.9.2 → mca_sdk-0.9.4.dev1}/tests/integration/test_phi_safe_integration.py +0 -0
- {mca_sdk-0.9.2 → mca_sdk-0.9.4.dev1}/tests/integration/test_prometheus_integration.py +0 -0
- {mca_sdk-0.9.2 → mca_sdk-0.9.4.dev1}/tests/integration/test_pypi_package.py +0 -0
- {mca_sdk-0.9.2 → mca_sdk-0.9.4.dev1}/tests/integration/test_queue_recovery.py +0 -0
- {mca_sdk-0.9.2 → mca_sdk-0.9.4.dev1}/tests/integration/test_rollback_failure_scenarios.py +0 -0
- {mca_sdk-0.9.2 → mca_sdk-0.9.4.dev1}/tests/integration/test_sdk_integration.py +0 -0
- {mca_sdk-0.9.2 → mca_sdk-0.9.4.dev1}/tests/integration/test_sdk_version_in_telemetry_payload.py +0 -0
- {mca_sdk-0.9.2 → mca_sdk-0.9.4.dev1}/tests/integration/test_state_persistence.py +0 -0
- {mca_sdk-0.9.2 → mca_sdk-0.9.4.dev1}/tests/integration/test_story_3_14_schema_validation.py +0 -0
- {mca_sdk-0.9.2 → mca_sdk-0.9.4.dev1}/tests/integration/test_validation_e2e.py +0 -0
- {mca_sdk-0.9.2 → mca_sdk-0.9.4.dev1}/tests/performance/README.md +0 -0
- {mca_sdk-0.9.2 → mca_sdk-0.9.4.dev1}/tests/performance/__init__.py +0 -0
- {mca_sdk-0.9.2 → mca_sdk-0.9.4.dev1}/tests/performance/_load_test_pacing.py +0 -0
- {mca_sdk-0.9.2 → mca_sdk-0.9.4.dev1}/tests/performance/assoc_kwargs.py +0 -0
- {mca_sdk-0.9.2 → mca_sdk-0.9.4.dev1}/tests/performance/baseline_profile_report.md +0 -0
- {mca_sdk-0.9.2 → mca_sdk-0.9.4.dev1}/tests/performance/benchmark_sdk.py +0 -0
- {mca_sdk-0.9.2 → mca_sdk-0.9.4.dev1}/tests/performance/collector_monitor.py +0 -0
- {mca_sdk-0.9.2 → mca_sdk-0.9.4.dev1}/tests/performance/compare_against_history.py +0 -0
- {mca_sdk-0.9.2 → mca_sdk-0.9.4.dev1}/tests/performance/conftest.py +0 -0
- {mca_sdk-0.9.2 → mca_sdk-0.9.4.dev1}/tests/performance/generate_overhead_report.py +0 -0
- {mca_sdk-0.9.2 → mca_sdk-0.9.4.dev1}/tests/performance/load_test_2000rps.py +0 -0
- {mca_sdk-0.9.2 → mca_sdk-0.9.4.dev1}/tests/performance/load_test_2000rps_report.py +0 -0
- {mca_sdk-0.9.2 → mca_sdk-0.9.4.dev1}/tests/performance/load_test_report.py +0 -0
- {mca_sdk-0.9.2 → mca_sdk-0.9.4.dev1}/tests/performance/load_test_scenarios.py +0 -0
- {mca_sdk-0.9.2 → mca_sdk-0.9.4.dev1}/tests/performance/load_test_sustained.py +0 -0
- {mca_sdk-0.9.2 → mca_sdk-0.9.4.dev1}/tests/performance/memory_leak_check.py +0 -0
- {mca_sdk-0.9.2 → mca_sdk-0.9.4.dev1}/tests/performance/memory_leak_test.py +0 -0
- {mca_sdk-0.9.2 → mca_sdk-0.9.4.dev1}/tests/performance/optimization_results.md +0 -0
- {mca_sdk-0.9.2 → mca_sdk-0.9.4.dev1}/tests/performance/performance_helpers.py +0 -0
- {mca_sdk-0.9.2 → mca_sdk-0.9.4.dev1}/tests/performance/performance_test.py +0 -0
- {mca_sdk-0.9.2 → mca_sdk-0.9.4.dev1}/tests/performance/profile_distribution.py +0 -0
- {mca_sdk-0.9.2 → mca_sdk-0.9.4.dev1}/tests/performance/profile_overhead.py +0 -0
- {mca_sdk-0.9.2 → mca_sdk-0.9.4.dev1}/tests/performance/profile_sdk.py +0 -0
- {mca_sdk-0.9.2 → mca_sdk-0.9.4.dev1}/tests/performance/results/overhead_profile.txt +0 -0
- {mca_sdk-0.9.2 → mca_sdk-0.9.4.dev1}/tests/performance/run_2000rps_load_test.sh +0 -0
- {mca_sdk-0.9.2 → mca_sdk-0.9.4.dev1}/tests/performance/run_load_tests.sh +0 -0
- {mca_sdk-0.9.2 → mca_sdk-0.9.4.dev1}/tests/performance/telemetry_completeness.py +0 -0
- {mca_sdk-0.9.2 → mca_sdk-0.9.4.dev1}/tests/performance/test_autolog_performance.py +0 -0
- {mca_sdk-0.9.2 → mca_sdk-0.9.4.dev1}/tests/performance/test_backpressure.py +0 -0
- {mca_sdk-0.9.2 → mca_sdk-0.9.4.dev1}/tests/performance/test_compare_against_history.py +0 -0
- {mca_sdk-0.9.2 → mca_sdk-0.9.4.dev1}/tests/performance/test_concurrency.py +0 -0
- {mca_sdk-0.9.2 → mca_sdk-0.9.4.dev1}/tests/performance/test_load_harness_remediation.py +0 -0
- {mca_sdk-0.9.2 → mca_sdk-0.9.4.dev1}/tests/performance/test_load_testing.py +0 -0
- {mca_sdk-0.9.2 → mca_sdk-0.9.4.dev1}/tests/performance/test_negative_cases.py +0 -0
- {mca_sdk-0.9.2 → mca_sdk-0.9.4.dev1}/tests/performance/test_performance.py +0 -0
- {mca_sdk-0.9.2 → mca_sdk-0.9.4.dev1}/tests/performance/test_performance_slo.py +0 -0
- {mca_sdk-0.9.2 → mca_sdk-0.9.4.dev1}/tests/performance/utils.py +0 -0
- {mca_sdk-0.9.2 → mca_sdk-0.9.4.dev1}/tests/security/__init__.py +0 -0
- {mca_sdk-0.9.2 → mca_sdk-0.9.4.dev1}/tests/security/test_attribute_phi_leakage.py +0 -0
- {mca_sdk-0.9.2 → mca_sdk-0.9.4.dev1}/tests/security/test_sast.py +0 -0
- {mca_sdk-0.9.2 → mca_sdk-0.9.4.dev1}/tests/security/test_secret_masking.py +0 -0
- {mca_sdk-0.9.2 → mca_sdk-0.9.4.dev1}/tests/security/test_security_requirements.py +0 -0
- {mca_sdk-0.9.2 → mca_sdk-0.9.4.dev1}/tests/support/__init__.py +0 -0
- {mca_sdk-0.9.2 → mca_sdk-0.9.4.dev1}/tests/support/logging_overhead.py +0 -0
- {mca_sdk-0.9.2 → mca_sdk-0.9.4.dev1}/tests/test_agentic.py +0 -0
- {mca_sdk-0.9.2 → mca_sdk-0.9.4.dev1}/tests/test_basic_export.py +0 -0
- {mca_sdk-0.9.2 → mca_sdk-0.9.4.dev1}/tests/test_gcp_registry_auth.py +0 -0
- {mca_sdk-0.9.2 → mca_sdk-0.9.4.dev1}/tests/test_registry_integration.py +0 -0
- {mca_sdk-0.9.2 → mca_sdk-0.9.4.dev1}/tests/unit/__init__.py +0 -0
- {mca_sdk-0.9.2 → mca_sdk-0.9.4.dev1}/tests/unit/agent/__init__.py +0 -0
- {mca_sdk-0.9.2 → mca_sdk-0.9.4.dev1}/tests/unit/agent/test_ci_gates_help.py +0 -0
- {mca_sdk-0.9.2 → mca_sdk-0.9.4.dev1}/tests/unit/agent/test_cli.py +0 -0
- {mca_sdk-0.9.2 → mca_sdk-0.9.4.dev1}/tests/unit/agent/test_layout.py +0 -0
- {mca_sdk-0.9.2 → mca_sdk-0.9.4.dev1}/tests/unit/agent/test_lockfile_cadence_gate.py +0 -0
- {mca_sdk-0.9.2 → mca_sdk-0.9.4.dev1}/tests/unit/agent/test_lockfile_diff_gate.py +0 -0
- {mca_sdk-0.9.2 → mca_sdk-0.9.4.dev1}/tests/unit/agent/test_lockfile_hash_gate.py +0 -0
- {mca_sdk-0.9.2 → mca_sdk-0.9.4.dev1}/tests/unit/agent/test_lockfile_hash_gate_mca_sdk_carveout.py +0 -0
- {mca_sdk-0.9.2 → mca_sdk-0.9.4.dev1}/tests/unit/agent/test_pyproject.py +0 -0
- {mca_sdk-0.9.2 → mca_sdk-0.9.4.dev1}/tests/unit/agent/test_sdk_version_invariant_gate.py +0 -0
- {mca_sdk-0.9.2 → mca_sdk-0.9.4.dev1}/tests/unit/agent/test_vuln_scan_sla_gate.py +0 -0
- {mca_sdk-0.9.2 → mca_sdk-0.9.4.dev1}/tests/unit/agent/test_wheel_contents.py +0 -0
- {mca_sdk-0.9.2 → mca_sdk-0.9.4.dev1}/tests/unit/agent/test_wheel_metadata.py +0 -0
- {mca_sdk-0.9.2 → mca_sdk-0.9.4.dev1}/tests/unit/test_absolute_final_85.py +0 -0
- {mca_sdk-0.9.2 → mca_sdk-0.9.4.dev1}/tests/unit/test_additional_coverage.py +0 -0
- {mca_sdk-0.9.2 → mca_sdk-0.9.4.dev1}/tests/unit/test_agentic_tracking.py +0 -0
- {mca_sdk-0.9.2 → mca_sdk-0.9.4.dev1}/tests/unit/test_async_compatibility.py +0 -0
- {mca_sdk-0.9.2 → mca_sdk-0.9.4.dev1}/tests/unit/test_attribute_validation_extra.py +0 -0
- {mca_sdk-0.9.2 → mca_sdk-0.9.4.dev1}/tests/unit/test_attribute_validator.py +0 -0
- {mca_sdk-0.9.2 → mca_sdk-0.9.4.dev1}/tests/unit/test_audit_log_async.py +0 -0
- {mca_sdk-0.9.2 → mca_sdk-0.9.4.dev1}/tests/unit/test_autoinstrument.py +0 -0
- {mca_sdk-0.9.2 → mca_sdk-0.9.4.dev1}/tests/unit/test_autoinstrument_coverage.py +0 -0
- {mca_sdk-0.9.2 → mca_sdk-0.9.4.dev1}/tests/unit/test_autolog_anthropic.py +0 -0
- {mca_sdk-0.9.2 → mca_sdk-0.9.4.dev1}/tests/unit/test_autolog_base_extra.py +0 -0
- {mca_sdk-0.9.2 → mca_sdk-0.9.4.dev1}/tests/unit/test_autolog_lightgbm.py +0 -0
- {mca_sdk-0.9.2 → mca_sdk-0.9.4.dev1}/tests/unit/test_autolog_openai.py +0 -0
- {mca_sdk-0.9.2 → mca_sdk-0.9.4.dev1}/tests/unit/test_autolog_openai_additional.py +0 -0
- {mca_sdk-0.9.2 → mca_sdk-0.9.4.dev1}/tests/unit/test_autolog_openai_coverage.py +0 -0
- {mca_sdk-0.9.2 → mca_sdk-0.9.4.dev1}/tests/unit/test_autolog_sklearn.py +0 -0
- {mca_sdk-0.9.2 → mca_sdk-0.9.4.dev1}/tests/unit/test_autolog_validation.py +0 -0
- {mca_sdk-0.9.2 → mca_sdk-0.9.4.dev1}/tests/unit/test_autolog_xgboost.py +0 -0
- {mca_sdk-0.9.2 → mca_sdk-0.9.4.dev1}/tests/unit/test_bridge_extra.py +0 -0
- {mca_sdk-0.9.2 → mca_sdk-0.9.4.dev1}/tests/unit/test_buffering_exporters.py +0 -0
- {mca_sdk-0.9.2 → mca_sdk-0.9.4.dev1}/tests/unit/test_buffering_queue.py +0 -0
- {mca_sdk-0.9.2 → mca_sdk-0.9.4.dev1}/tests/unit/test_buffering_queue_helpers.py +0 -0
- {mca_sdk-0.9.2 → mca_sdk-0.9.4.dev1}/tests/unit/test_buffering_security.py +0 -0
- {mca_sdk-0.9.2 → mca_sdk-0.9.4.dev1}/tests/unit/test_certificate_rotation.py +0 -0
- {mca_sdk-0.9.2 → mca_sdk-0.9.4.dev1}/tests/unit/test_circuit_breaker.py +0 -0
- {mca_sdk-0.9.2 → mca_sdk-0.9.4.dev1}/tests/unit/test_cli_bootstrap.py +0 -0
- {mca_sdk-0.9.2 → mca_sdk-0.9.4.dev1}/tests/unit/test_cli_instrument.py +0 -0
- {mca_sdk-0.9.2 → mca_sdk-0.9.4.dev1}/tests/unit/test_cli_instrument_helpers.py +0 -0
- {mca_sdk-0.9.2 → mca_sdk-0.9.4.dev1}/tests/unit/test_cli_run.py +0 -0
- {mca_sdk-0.9.2 → mca_sdk-0.9.4.dev1}/tests/unit/test_cli_run_helpers.py +0 -0
- {mca_sdk-0.9.2 → mca_sdk-0.9.4.dev1}/tests/unit/test_client_attribute_validation.py +0 -0
- {mca_sdk-0.9.2 → mca_sdk-0.9.4.dev1}/tests/unit/test_client_core.py +0 -0
- {mca_sdk-0.9.2 → mca_sdk-0.9.4.dev1}/tests/unit/test_client_helpers.py +0 -0
- {mca_sdk-0.9.2 → mca_sdk-0.9.4.dev1}/tests/unit/test_code_review_fixes.py +0 -0
- {mca_sdk-0.9.2 → mca_sdk-0.9.4.dev1}/tests/unit/test_config_edge_cases.py +0 -0
- {mca_sdk-0.9.2 → mca_sdk-0.9.4.dev1}/tests/unit/test_config_hardening.py +0 -0
- {mca_sdk-0.9.2 → mca_sdk-0.9.4.dev1}/tests/unit/test_config_persistence.py +0 -0
- {mca_sdk-0.9.2 → mca_sdk-0.9.4.dev1}/tests/unit/test_config_precedence.py +0 -0
- {mca_sdk-0.9.2 → mca_sdk-0.9.4.dev1}/tests/unit/test_config_security.py +0 -0
- {mca_sdk-0.9.2 → mca_sdk-0.9.4.dev1}/tests/unit/test_config_settings.py +0 -0
- {mca_sdk-0.9.2 → mca_sdk-0.9.4.dev1}/tests/unit/test_config_settings_validators.py +0 -0
- {mca_sdk-0.9.2 → mca_sdk-0.9.4.dev1}/tests/unit/test_coverage_boost.py +0 -0
- {mca_sdk-0.9.2 → mca_sdk-0.9.4.dev1}/tests/unit/test_coverage_final_push.py +0 -0
- {mca_sdk-0.9.2 → mca_sdk-0.9.4.dev1}/tests/unit/test_credential_sanitization_integration.py +0 -0
- {mca_sdk-0.9.2 → mca_sdk-0.9.4.dev1}/tests/unit/test_critical_findings.py +0 -0
- {mca_sdk-0.9.2 → mca_sdk-0.9.4.dev1}/tests/unit/test_dead_letter_queue.py +0 -0
- {mca_sdk-0.9.2 → mca_sdk-0.9.4.dev1}/tests/unit/test_debug_mode.py +0 -0
- {mca_sdk-0.9.2 → mca_sdk-0.9.4.dev1}/tests/unit/test_decorators.py +0 -0
- {mca_sdk-0.9.2 → mca_sdk-0.9.4.dev1}/tests/unit/test_decorators_extra.py +0 -0
- {mca_sdk-0.9.2 → mca_sdk-0.9.4.dev1}/tests/unit/test_disk_persistence.py +0 -0
- {mca_sdk-0.9.2 → mca_sdk-0.9.4.dev1}/tests/unit/test_dlq_encryption.py +0 -0
- {mca_sdk-0.9.2 → mca_sdk-0.9.4.dev1}/tests/unit/test_dlq_fixes_review.py +0 -0
- {mca_sdk-0.9.2 → mca_sdk-0.9.4.dev1}/tests/unit/test_dlq_persistence.py +0 -0
- {mca_sdk-0.9.2 → mca_sdk-0.9.4.dev1}/tests/unit/test_dlq_persistence_errors.py +0 -0
- {mca_sdk-0.9.2 → mca_sdk-0.9.4.dev1}/tests/unit/test_dlq_production_gating.py +0 -0
- {mca_sdk-0.9.2 → mca_sdk-0.9.4.dev1}/tests/unit/test_eighth_round_fixes.py +0 -0
- {mca_sdk-0.9.2 → mca_sdk-0.9.4.dev1}/tests/unit/test_eleventh_round_fixes.py +0 -0
- {mca_sdk-0.9.2 → mca_sdk-0.9.4.dev1}/tests/unit/test_encryption_fixes.py +0 -0
- {mca_sdk-0.9.2 → mca_sdk-0.9.4.dev1}/tests/unit/test_environment_profiles.py +0 -0
- {mca_sdk-0.9.2 → mca_sdk-0.9.4.dev1}/tests/unit/test_environment_utility.py +0 -0
- {mca_sdk-0.9.2 → mca_sdk-0.9.4.dev1}/tests/unit/test_exceptions.py +0 -0
- {mca_sdk-0.9.2 → mca_sdk-0.9.4.dev1}/tests/unit/test_exceptions_extra.py +0 -0
- {mca_sdk-0.9.2 → mca_sdk-0.9.4.dev1}/tests/unit/test_fifth_round_fixes.py +0 -0
- {mca_sdk-0.9.2 → mca_sdk-0.9.4.dev1}/tests/unit/test_final_85_coverage.py +0 -0
- {mca_sdk-0.9.2 → mca_sdk-0.9.4.dev1}/tests/unit/test_final_coverage_85.py +0 -0
- {mca_sdk-0.9.2 → mca_sdk-0.9.4.dev1}/tests/unit/test_final_coverage_push.py +0 -0
- {mca_sdk-0.9.2 → mca_sdk-0.9.4.dev1}/tests/unit/test_final_coverage_topup.py +0 -0
- {mca_sdk-0.9.2 → mca_sdk-0.9.4.dev1}/tests/unit/test_fork_safety.py +0 -0
- {mca_sdk-0.9.2 → mca_sdk-0.9.4.dev1}/tests/unit/test_fourth_round_fixes.py +0 -0
- {mca_sdk-0.9.2 → mca_sdk-0.9.4.dev1}/tests/unit/test_gcp_auth.py +0 -0
- {mca_sdk-0.9.2 → mca_sdk-0.9.4.dev1}/tests/unit/test_gcp_auth_integration.py +0 -0
- {mca_sdk-0.9.2 → mca_sdk-0.9.4.dev1}/tests/unit/test_gcp_logging_config.py +0 -0
- {mca_sdk-0.9.2 → mca_sdk-0.9.4.dev1}/tests/unit/test_gcp_logging_exporter.py +0 -0
- {mca_sdk-0.9.2 → mca_sdk-0.9.4.dev1}/tests/unit/test_gcp_logging_extra.py +0 -0
- {mca_sdk-0.9.2 → mca_sdk-0.9.4.dev1}/tests/unit/test_gcp_registry_integration.py +0 -0
- {mca_sdk-0.9.2 → mca_sdk-0.9.4.dev1}/tests/unit/test_gcp_trace_exporter.py +0 -0
- {mca_sdk-0.9.2 → mca_sdk-0.9.4.dev1}/tests/unit/test_gcp_trace_extra.py +0 -0
- {mca_sdk-0.9.2 → mca_sdk-0.9.4.dev1}/tests/unit/test_genai_attrs.py +0 -0
- {mca_sdk-0.9.2 → mca_sdk-0.9.4.dev1}/tests/unit/test_genai_helpers.py +0 -0
- {mca_sdk-0.9.2 → mca_sdk-0.9.4.dev1}/tests/unit/test_genai_metric_naming.py +0 -0
- {mca_sdk-0.9.2 → mca_sdk-0.9.4.dev1}/tests/unit/test_goal_context_token_fix.py +0 -0
- {mca_sdk-0.9.2 → mca_sdk-0.9.4.dev1}/tests/unit/test_health_check.py +0 -0
- {mca_sdk-0.9.2 → mca_sdk-0.9.4.dev1}/tests/unit/test_histogram_bucket_views.py +0 -0
- {mca_sdk-0.9.2 → mca_sdk-0.9.4.dev1}/tests/unit/test_https_enforcement.py +0 -0
- {mca_sdk-0.9.2 → mca_sdk-0.9.4.dev1}/tests/unit/test_integrations_decorators.py +0 -0
- {mca_sdk-0.9.2 → mca_sdk-0.9.4.dev1}/tests/unit/test_langchain_callback.py +0 -0
- {mca_sdk-0.9.2 → mca_sdk-0.9.4.dev1}/tests/unit/test_litellm_callback.py +0 -0
- {mca_sdk-0.9.2 → mca_sdk-0.9.4.dev1}/tests/unit/test_litellm_model_id_parity.py +0 -0
- {mca_sdk-0.9.2 → mca_sdk-0.9.4.dev1}/tests/unit/test_llamaindex_callback.py +0 -0
- {mca_sdk-0.9.2 → mca_sdk-0.9.4.dev1}/tests/unit/test_llm_generation.py +0 -0
- {mca_sdk-0.9.2 → mca_sdk-0.9.4.dev1}/tests/unit/test_log_injection.py +0 -0
- {mca_sdk-0.9.2 → mca_sdk-0.9.4.dev1}/tests/unit/test_logging_overhead_filter.py +0 -0
- {mca_sdk-0.9.2 → mca_sdk-0.9.4.dev1}/tests/unit/test_mca_client.py +0 -0
- {mca_sdk-0.9.2 → mca_sdk-0.9.4.dev1}/tests/unit/test_metric_naming.py +0 -0
- {mca_sdk-0.9.2 → mca_sdk-0.9.4.dev1}/tests/unit/test_mtls_config.py +0 -0
- {mca_sdk-0.9.2 → mca_sdk-0.9.4.dev1}/tests/unit/test_naming_conventions.py +0 -0
- {mca_sdk-0.9.2 → mca_sdk-0.9.4.dev1}/tests/unit/test_naming_conventions_extra.py +0 -0
- {mca_sdk-0.9.2 → mca_sdk-0.9.4.dev1}/tests/unit/test_negative_validation.py +0 -0
- {mca_sdk-0.9.2 → mca_sdk-0.9.4.dev1}/tests/unit/test_ninth_round_fixes.py +0 -0
- {mca_sdk-0.9.2 → mca_sdk-0.9.4.dev1}/tests/unit/test_otel_protocol_switching.py +0 -0
- {mca_sdk-0.9.2 → mca_sdk-0.9.4.dev1}/tests/unit/test_otlp_output_contracts.py +0 -0
- {mca_sdk-0.9.2 → mca_sdk-0.9.4.dev1}/tests/unit/test_persist_production_gating.py +0 -0
- {mca_sdk-0.9.2 → mca_sdk-0.9.4.dev1}/tests/unit/test_phi_filter.py +0 -0
- {mca_sdk-0.9.2 → mca_sdk-0.9.4.dev1}/tests/unit/test_phi_safe_capture.py +0 -0
- {mca_sdk-0.9.2 → mca_sdk-0.9.4.dev1}/tests/unit/test_phi_utils_dummy.py +0 -0
- {mca_sdk-0.9.2 → mca_sdk-0.9.4.dev1}/tests/unit/test_predict_decorator_backwards_compat.py +0 -0
- {mca_sdk-0.9.2 → mca_sdk-0.9.4.dev1}/tests/unit/test_production_detection.py +0 -0
- {mca_sdk-0.9.2 → mca_sdk-0.9.4.dev1}/tests/unit/test_prometheus_exporter.py +0 -0
- {mca_sdk-0.9.2 → mca_sdk-0.9.4.dev1}/tests/unit/test_providers.py +0 -0
- {mca_sdk-0.9.2 → mca_sdk-0.9.4.dev1}/tests/unit/test_providers_extra.py +0 -0
- {mca_sdk-0.9.2 → mca_sdk-0.9.4.dev1}/tests/unit/test_providers_prometheus.py +0 -0
- {mca_sdk-0.9.2 → mca_sdk-0.9.4.dev1}/tests/unit/test_providers_unregister.py +0 -0
- {mca_sdk-0.9.2 → mca_sdk-0.9.4.dev1}/tests/unit/test_public_api_surface.py +0 -0
- {mca_sdk-0.9.2 → mca_sdk-0.9.4.dev1}/tests/unit/test_queue_encryption.py +0 -0
- {mca_sdk-0.9.2 → mca_sdk-0.9.4.dev1}/tests/unit/test_rag_contract.py +0 -0
- {mca_sdk-0.9.2 → mca_sdk-0.9.4.dev1}/tests/unit/test_record_retrieval.py +0 -0
- {mca_sdk-0.9.2 → mca_sdk-0.9.4.dev1}/tests/unit/test_registry_client.py +0 -0
- {mca_sdk-0.9.2 → mca_sdk-0.9.4.dev1}/tests/unit/test_registry_client_extra.py +0 -0
- {mca_sdk-0.9.2 → mca_sdk-0.9.4.dev1}/tests/unit/test_registry_client_small_surface.py +0 -0
- {mca_sdk-0.9.2 → mca_sdk-0.9.4.dev1}/tests/unit/test_registry_hydration.py +0 -0
- {mca_sdk-0.9.2 → mca_sdk-0.9.4.dev1}/tests/unit/test_registry_models_extra.py +0 -0
- {mca_sdk-0.9.2 → mca_sdk-0.9.4.dev1}/tests/unit/test_registry_refresh.py +0 -0
- {mca_sdk-0.9.2 → mca_sdk-0.9.4.dev1}/tests/unit/test_registry_stale_cap.py +0 -0
- {mca_sdk-0.9.2 → mca_sdk-0.9.4.dev1}/tests/unit/test_registry_telemetry_and_trace.py +0 -0
- {mca_sdk-0.9.2 → mca_sdk-0.9.4.dev1}/tests/unit/test_registry_thread_safety.py +0 -0
- {mca_sdk-0.9.2 → mca_sdk-0.9.4.dev1}/tests/unit/test_registry_token_refresh.py +0 -0
- {mca_sdk-0.9.2 → mca_sdk-0.9.4.dev1}/tests/unit/test_registry_update +0 -0
- {mca_sdk-0.9.2 → mca_sdk-0.9.4.dev1}/tests/unit/test_retry_integration.py +0 -0
- {mca_sdk-0.9.2 → mca_sdk-0.9.4.dev1}/tests/unit/test_retry_policy.py +0 -0
- {mca_sdk-0.9.2 → mca_sdk-0.9.4.dev1}/tests/unit/test_retry_with_dlq.py +0 -0
- {mca_sdk-0.9.2 → mca_sdk-0.9.4.dev1}/tests/unit/test_rollback.py +0 -0
- {mca_sdk-0.9.2 → mca_sdk-0.9.4.dev1}/tests/unit/test_round_12_fixes.py +0 -0
- {mca_sdk-0.9.2 → mca_sdk-0.9.4.dev1}/tests/unit/test_round_13_fixes.py +0 -0
- {mca_sdk-0.9.2 → mca_sdk-0.9.4.dev1}/tests/unit/test_round_14_fixes.py +0 -0
- {mca_sdk-0.9.2 → mca_sdk-0.9.4.dev1}/tests/unit/test_routing.py +0 -0
- {mca_sdk-0.9.2 → mca_sdk-0.9.4.dev1}/tests/unit/test_routing_extra.py +0 -0
- {mca_sdk-0.9.2 → mca_sdk-0.9.4.dev1}/tests/unit/test_schema_injection_validation.py +0 -0
- {mca_sdk-0.9.2 → mca_sdk-0.9.4.dev1}/tests/unit/test_schema_injection_validators.py +0 -0
- {mca_sdk-0.9.2 → mca_sdk-0.9.4.dev1}/tests/unit/test_schema_naming_convention_per_prefix.py +0 -0
- {mca_sdk-0.9.2 → mca_sdk-0.9.4.dev1}/tests/unit/test_schema_validation.py +0 -0
- {mca_sdk-0.9.2 → mca_sdk-0.9.4.dev1}/tests/unit/test_secure_token_handling.py +0 -0
- {mca_sdk-0.9.2 → mca_sdk-0.9.4.dev1}/tests/unit/test_security_certificate_mtls.py +0 -0
- {mca_sdk-0.9.2 → mca_sdk-0.9.4.dev1}/tests/unit/test_security_encryption_manager.py +0 -0
- {mca_sdk-0.9.2 → mca_sdk-0.9.4.dev1}/tests/unit/test_security_migration.py +0 -0
- {mca_sdk-0.9.2 → mca_sdk-0.9.4.dev1}/tests/unit/test_serialization.py +0 -0
- {mca_sdk-0.9.2 → mca_sdk-0.9.4.dev1}/tests/unit/test_serialization_extra.py +0 -0
- {mca_sdk-0.9.2 → mca_sdk-0.9.4.dev1}/tests/unit/test_serialization_fallbacks.py +0 -0
- {mca_sdk-0.9.2 → mca_sdk-0.9.4.dev1}/tests/unit/test_serialization_poisoning.py +0 -0
- {mca_sdk-0.9.2 → mca_sdk-0.9.4.dev1}/tests/unit/test_signal_handling.py +0 -0
- {mca_sdk-0.9.2 → mca_sdk-0.9.4.dev1}/tests/unit/test_sixth_round_fixes.py +0 -0
- {mca_sdk-0.9.2 → mca_sdk-0.9.4.dev1}/tests/unit/test_small_modules_coverage.py +0 -0
- {mca_sdk-0.9.2 → mca_sdk-0.9.4.dev1}/tests/unit/test_state_manager.py +0 -0
- {mca_sdk-0.9.2 → mca_sdk-0.9.4.dev1}/tests/unit/test_state_managers.py +0 -0
- {mca_sdk-0.9.2 → mca_sdk-0.9.4.dev1}/tests/unit/test_story_8_7_metric_filtering.py +0 -0
- {mca_sdk-0.9.2 → mca_sdk-0.9.4.dev1}/tests/unit/test_story_8_9_review_regressions.py +0 -0
- {mca_sdk-0.9.2 → mca_sdk-0.9.4.dev1}/tests/unit/test_taxonomy.py +0 -0
- {mca_sdk-0.9.2 → mca_sdk-0.9.4.dev1}/tests/unit/test_telemetry_attribute_validation.py +0 -0
- {mca_sdk-0.9.2 → mca_sdk-0.9.4.dev1}/tests/unit/test_telemetry_attributes_internals.py +0 -0
- {mca_sdk-0.9.2 → mca_sdk-0.9.4.dev1}/tests/unit/test_temporality_e2e.py +0 -0
- {mca_sdk-0.9.2 → mca_sdk-0.9.4.dev1}/tests/unit/test_temporality_resolver.py +0 -0
- {mca_sdk-0.9.2 → mca_sdk-0.9.4.dev1}/tests/unit/test_tenth_round_fixes.py +0 -0
- {mca_sdk-0.9.2 → mca_sdk-0.9.4.dev1}/tests/unit/test_ultimate_final_85.py +0 -0
- {mca_sdk-0.9.2 → mca_sdk-0.9.4.dev1}/tests/unit/test_validation_attributes.py +0 -0
- {mca_sdk-0.9.2 → mca_sdk-0.9.4.dev1}/tests/unit/test_validation_attributes_low_level.py +0 -0
- {mca_sdk-0.9.2 → mca_sdk-0.9.4.dev1}/tests/unit/test_validation_init.py +0 -0
- {mca_sdk-0.9.2 → mca_sdk-0.9.4.dev1}/tests/unit/test_validation_result_extra.py +0 -0
- {mca_sdk-0.9.2 → mca_sdk-0.9.4.dev1}/tests/unit/test_validation_rules_extra.py +0 -0
- {mca_sdk-0.9.2 → mca_sdk-0.9.4.dev1}/tests/unit/test_vendor_bridge.py +0 -0
- {mca_sdk-0.9.2 → mca_sdk-0.9.4.dev1}/tests/unit/test_vendor_bridge_ac.py +0 -0
- {mca_sdk-0.9.2 → mca_sdk-0.9.4.dev1}/tests/unit/test_vendor_bridge_internals.py +0 -0
- {mca_sdk-0.9.2 → mca_sdk-0.9.4.dev1}/tests/unit/test_vendor_bridge_state.py +0 -0
- {mca_sdk-0.9.2 → mca_sdk-0.9.4.dev1}/tests/unit/test_version_check.py +0 -0
- {mca_sdk-0.9.2 → mca_sdk-0.9.4.dev1}/tox.ini +0 -0
- {mca_sdk-0.9.2 → mca_sdk-0.9.4.dev1}/updated-versions.txt +0 -0
|
@@ -4,6 +4,78 @@ All notable changes to the MCA SDK will be documented in this file.
|
|
|
4
4
|
|
|
5
5
|
## [Unreleased]
|
|
6
6
|
|
|
7
|
+
## [0.9.3] - 2026-07-08
|
|
8
|
+
|
|
9
|
+
### Added
|
|
10
|
+
- **`mca_sdk.ai_assist` subpackage** — public API for end-user data
|
|
11
|
+
scientists to program against the AI-assistant surface. Exposes
|
|
12
|
+
`get_guide_path()`, `read_guide()`, `render_prompt(variant, **fields)`,
|
|
13
|
+
`list_assistants()`, and `install(assistant, dest, force=False)`.
|
|
14
|
+
- **`%mca_instrument` / `%mca_prompt` IPython magics** —
|
|
15
|
+
`%load_ext mca_sdk.ai_assist.jupyter` registers a notebook-native
|
|
16
|
+
onboarding path. `%mca_instrument` reuses the same `_auto_init` /
|
|
17
|
+
`_shutdown_with_timeout` bootstrap as `mca-instrument` / `mca-run`, so
|
|
18
|
+
env-var semantics are identical across surfaces. IPython is optional
|
|
19
|
+
(`pip install "mca-sdk[jupyter]"`); the module raises a clear error if
|
|
20
|
+
IPython is missing.
|
|
21
|
+
- **`mca-init ai-assist` subcommand** — scaffolds per-assistant config
|
|
22
|
+
files into the caller's repo at each assistant's canonical location:
|
|
23
|
+
Claude Code (`.claude/skills/mca-instrument.md`), Cursor
|
|
24
|
+
(`.cursor/rules/mca-instrument.mdc`), Copilot
|
|
25
|
+
(`.github/copilot-instructions.md`), Gemini CLI (`GEMINI.md`). Also
|
|
26
|
+
supports `mca-init ai-assist prompt --model-id ... --type ...` to
|
|
27
|
+
render a fully-filled Variant A/B paste-in prompt to stdout. Every
|
|
28
|
+
template LINKS to `FOR_AI_ASSISTANTS.md` inside the wheel — none
|
|
29
|
+
duplicate pattern content.
|
|
30
|
+
- Notebook starter template shipped in the wheel at
|
|
31
|
+
`mca_sdk/ai_assist/templates/notebook/mca_starter.ipynb`.
|
|
32
|
+
|
|
33
|
+
### Changed
|
|
34
|
+
- **`FOR_AI_ASSISTANTS.md`** received three rounds of post-0.9.2
|
|
35
|
+
corrections from live instrumentation observations: six additional
|
|
36
|
+
pattern gaps closed (association-id join keys, batch-vs-per-instance
|
|
37
|
+
`record_*` rules, and related edge cases); `model_types` values
|
|
38
|
+
corrected to the canonical set; and a new section covering MLOps
|
|
39
|
+
pipeline usage and dependency-installation guidance.
|
|
40
|
+
|
|
41
|
+
### Fixed
|
|
42
|
+
- **OTel SDK 1.35–1.38 import compatibility** — `mca_sdk` no longer
|
|
43
|
+
raises `ImportError: cannot import name 'ReadableLogRecord' from
|
|
44
|
+
'opentelemetry.sdk._logs'` when installed against `opentelemetry-sdk`
|
|
45
|
+
releases in the 1.35 through 1.38 window (where the symbol did not
|
|
46
|
+
exist). `mca_sdk/exporters/gcp_logging.py` and
|
|
47
|
+
`mca_sdk/buffering/exporters.py` now use try/except fallback chains
|
|
48
|
+
to import `LogRecord`, `LogRecordExporter`, and
|
|
49
|
+
`LogRecordExportResult` from whichever module path the installed
|
|
50
|
+
OTel version exposes them at (`_logs`, `_logs._internal`, or the
|
|
51
|
+
older `LogExporter` / `LogExportResult` aliases). Verified against
|
|
52
|
+
OTel 1.35.0, 1.36.0, and 1.43.0. Type annotations changed from
|
|
53
|
+
`Sequence[ReadableLogRecord]` to `Sequence[LogRecord]`; runtime
|
|
54
|
+
behavior is unchanged.
|
|
55
|
+
- **MANIFEST.in** now includes `FOR_AI_ASSISTANTS.md` and all
|
|
56
|
+
`ai_assist/templates/*` files in sdists. The guide previously shipped
|
|
57
|
+
only in wheels via `setup.py package_data`; sdist consumers
|
|
58
|
+
(`pip install --no-binary`) lost it.
|
|
59
|
+
- Lint and mypy strict-mode errors resolved across
|
|
60
|
+
`mca_sdk/ai_assist/cli_install.py`, `mca_sdk/ai_assist/jupyter.py`,
|
|
61
|
+
`mca_sdk/buffering/exporters.py`, and
|
|
62
|
+
`mca_sdk/exporters/gcp_logging.py`. No behavior change.
|
|
63
|
+
- **Sphinx docs build** — `IPython` is now mocked in `docs/conf.py`
|
|
64
|
+
so the `mca_sdk.ai_assist.jupyter` autosummary page builds cleanly
|
|
65
|
+
in docs environments without IPython installed.
|
|
66
|
+
|
|
67
|
+
### Security
|
|
68
|
+
- **cryptography** upgraded to 48.0.1. Expired CVE-2026-4539 entry
|
|
69
|
+
removed from `.pip-audit-allowlist.txt`.
|
|
70
|
+
|
|
71
|
+
### Notes
|
|
72
|
+
- The `mca-init <project_dir>` invocation is unchanged. The new
|
|
73
|
+
`ai-assist` action is pre-dispatched in `main()` before argparse sees
|
|
74
|
+
the positional arg, so no argparse restructure was needed.
|
|
75
|
+
- **PHI is still the application's responsibility.** Every template
|
|
76
|
+
body carries the "warn, do not auto-mask" language from
|
|
77
|
+
FOR_AI_ASSISTANTS.md §6.
|
|
78
|
+
|
|
7
79
|
## [0.9.2] - 2026-06-30
|
|
8
80
|
|
|
9
81
|
### Changed
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: mca-sdk
|
|
3
|
-
Version: 0.9.
|
|
3
|
+
Version: 0.9.4.dev1
|
|
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
|
|
@@ -50,12 +50,15 @@ Requires-Dist: numpy>=1.24.0; extra == "autolog"
|
|
|
50
50
|
Provides-Extra: instrument
|
|
51
51
|
Requires-Dist: opentelemetry-instrumentation>=0.48b0; extra == "instrument"
|
|
52
52
|
Requires-Dist: opentelemetry-distro>=0.48b0; extra == "instrument"
|
|
53
|
+
Provides-Extra: jupyter
|
|
54
|
+
Requires-Dist: ipython>=7.0; extra == "jupyter"
|
|
53
55
|
Provides-Extra: test
|
|
54
56
|
Requires-Dist: pytest>=7.4.0; extra == "test"
|
|
55
57
|
Requires-Dist: pytest-cov>=4.1.0; extra == "test"
|
|
56
58
|
Requires-Dist: pytest-mock>=3.12.0; extra == "test"
|
|
57
59
|
Requires-Dist: pytest-asyncio>=0.23.0; extra == "test"
|
|
58
60
|
Requires-Dist: opentelemetry-exporter-prometheus>=0.48b0; extra == "test"
|
|
61
|
+
Requires-Dist: ipython>=7.0; extra == "test"
|
|
59
62
|
Provides-Extra: dev
|
|
60
63
|
Requires-Dist: black>=24.0.0; extra == "dev"
|
|
61
64
|
Requires-Dist: mypy>=1.8.0; extra == "dev"
|
|
@@ -66,6 +69,7 @@ Requires-Dist: pytest-mock>=3.12.0; extra == "dev"
|
|
|
66
69
|
Requires-Dist: pytest-asyncio>=0.23.0; extra == "dev"
|
|
67
70
|
Requires-Dist: opentelemetry-exporter-prometheus>=0.48b0; extra == "dev"
|
|
68
71
|
Requires-Dist: pdoc>=14.0.0; extra == "dev"
|
|
72
|
+
Requires-Dist: ipython>=7.0; extra == "dev"
|
|
69
73
|
Provides-Extra: docs
|
|
70
74
|
Requires-Dist: pdoc>=14.0.0; extra == "docs"
|
|
71
75
|
Provides-Extra: all
|
|
@@ -296,6 +300,25 @@ If you are using an agentic coding assistant (like Claude Code, Gemini CLI, Curs
|
|
|
296
300
|
Simply paste this prompt to your AI assistant:
|
|
297
301
|
> "Please review my codebase and instrument my models using the MCA SDK. You can find the instructions on how to do this by reading the guide located at `mca_sdk/FOR_AI_ASSISTANTS.md` within the installed package."
|
|
298
302
|
|
|
303
|
+
**Drop assistant configs into your repo with one command:**
|
|
304
|
+
```bash
|
|
305
|
+
mca-init ai-assist install --assistant all # Claude Code + Cursor + Copilot + Gemini CLI
|
|
306
|
+
mca-init ai-assist install --assistant cursor # just Cursor rules
|
|
307
|
+
mca-init ai-assist prompt --model-id mdl-001 --type predictive --shape script # print a ready-to-paste prompt
|
|
308
|
+
```
|
|
309
|
+
|
|
310
|
+
**In a Jupyter notebook** (see also the `mca_starter.ipynb` template shipped with the SDK):
|
|
311
|
+
```python
|
|
312
|
+
%load_ext mca_sdk.ai_assist.jupyter
|
|
313
|
+
%mca_instrument --model-id mdl-001 --team clinical-ai
|
|
314
|
+
```
|
|
315
|
+
|
|
316
|
+
**Programmatic access to the guide:**
|
|
317
|
+
```python
|
|
318
|
+
from mca_sdk.ai_assist import get_guide_path, read_guide
|
|
319
|
+
print(get_guide_path())
|
|
320
|
+
```
|
|
321
|
+
|
|
299
322
|
### Approach 2: Zero-Code Auto-Instrumentation (Recommended)
|
|
300
323
|
This approach utilizes the `mca-instrument` CLI wrapper to automatically instrument your application's external calls and supported framework inferences without touching your source code.
|
|
301
324
|
**Prerequisites**: Install the SDK with instrumentation dependencies: `pip install "mca-sdk[instrument]"` and run `opentelemetry-bootstrap -a install`.
|
|
@@ -323,7 +346,7 @@ Provide configuration via environment variables in your deployment manifest. The
|
|
|
323
346
|
- **GCP Exporters**: To route telemetry to GCP buckets, you must set `MCA_GCP_LOGGING_ENABLED=true` and `MCA_GCP_TRACE_ENABLED=true` environment variables.
|
|
324
347
|
|
|
325
348
|
### Approach 3: Manual Instrumentation
|
|
326
|
-
If you are not using standard HTTP/DB frameworks,
|
|
349
|
+
If you are not using standard HTTP/DB frameworks, or if you need precise programmatic control, use the SDK's Python API directly in your code. (In a Jupyter notebook, prefer the `%mca_instrument` magic under Approach 1.)
|
|
327
350
|
|
|
328
351
|
```python
|
|
329
352
|
from mca_sdk import MCAClient
|
|
@@ -209,6 +209,25 @@ If you are using an agentic coding assistant (like Claude Code, Gemini CLI, Curs
|
|
|
209
209
|
Simply paste this prompt to your AI assistant:
|
|
210
210
|
> "Please review my codebase and instrument my models using the MCA SDK. You can find the instructions on how to do this by reading the guide located at `mca_sdk/FOR_AI_ASSISTANTS.md` within the installed package."
|
|
211
211
|
|
|
212
|
+
**Drop assistant configs into your repo with one command:**
|
|
213
|
+
```bash
|
|
214
|
+
mca-init ai-assist install --assistant all # Claude Code + Cursor + Copilot + Gemini CLI
|
|
215
|
+
mca-init ai-assist install --assistant cursor # just Cursor rules
|
|
216
|
+
mca-init ai-assist prompt --model-id mdl-001 --type predictive --shape script # print a ready-to-paste prompt
|
|
217
|
+
```
|
|
218
|
+
|
|
219
|
+
**In a Jupyter notebook** (see also the `mca_starter.ipynb` template shipped with the SDK):
|
|
220
|
+
```python
|
|
221
|
+
%load_ext mca_sdk.ai_assist.jupyter
|
|
222
|
+
%mca_instrument --model-id mdl-001 --team clinical-ai
|
|
223
|
+
```
|
|
224
|
+
|
|
225
|
+
**Programmatic access to the guide:**
|
|
226
|
+
```python
|
|
227
|
+
from mca_sdk.ai_assist import get_guide_path, read_guide
|
|
228
|
+
print(get_guide_path())
|
|
229
|
+
```
|
|
230
|
+
|
|
212
231
|
### Approach 2: Zero-Code Auto-Instrumentation (Recommended)
|
|
213
232
|
This approach utilizes the `mca-instrument` CLI wrapper to automatically instrument your application's external calls and supported framework inferences without touching your source code.
|
|
214
233
|
**Prerequisites**: Install the SDK with instrumentation dependencies: `pip install "mca-sdk[instrument]"` and run `opentelemetry-bootstrap -a install`.
|
|
@@ -236,7 +255,7 @@ Provide configuration via environment variables in your deployment manifest. The
|
|
|
236
255
|
- **GCP Exporters**: To route telemetry to GCP buckets, you must set `MCA_GCP_LOGGING_ENABLED=true` and `MCA_GCP_TRACE_ENABLED=true` environment variables.
|
|
237
256
|
|
|
238
257
|
### Approach 3: Manual Instrumentation
|
|
239
|
-
If you are not using standard HTTP/DB frameworks,
|
|
258
|
+
If you are not using standard HTTP/DB frameworks, or if you need precise programmatic control, use the SDK's Python API directly in your code. (In a Jupyter notebook, prefer the `%mca_instrument` magic under Approach 1.)
|
|
240
259
|
|
|
241
260
|
```python
|
|
242
261
|
from mca_sdk import MCAClient
|
|
@@ -20,7 +20,7 @@ prompt at the bottom of this file (or one like it).
|
|
|
20
20
|
The data scientist MUST tell you (or have written in the repo, e.g. a
|
|
21
21
|
README, model card, or `mca.yaml`) two things:
|
|
22
22
|
|
|
23
|
-
1. **`model_type`** — one of `
|
|
23
|
+
1. **`model_type`** — one of `regression`, `time-series`, `classification`, `generative`, `agentic`.
|
|
24
24
|
2. **`model_category`** — one of `internal`, `vendor`.
|
|
25
25
|
|
|
26
26
|
You also need to infer (or ask):
|
|
@@ -62,6 +62,16 @@ underneath it — both can coexist.
|
|
|
62
62
|
|
|
63
63
|
## 1. Universal startup — pick one
|
|
64
64
|
|
|
65
|
+
### 1.0 Internal HTTP collector — set `allow_insecure_collector=True`
|
|
66
|
+
|
|
67
|
+
The fleet collector runs at `http://10.164.76.55:4318` (see
|
|
68
|
+
`example_deployed/shared/config.py`). The SDK enforces HTTPS on non-localhost
|
|
69
|
+
endpoints by default and will refuse to initialize against a bare `http://…`
|
|
70
|
+
URL. Pass `allow_insecure_collector=True` to `MCAClient(...)` whenever
|
|
71
|
+
`collector_endpoint` starts with `http://` and isn't `localhost` — every
|
|
72
|
+
`example_deployed/*` client does this. Omit the flag only when the endpoint
|
|
73
|
+
is `https://…` or `http://localhost:…`.
|
|
74
|
+
|
|
65
75
|
### 1.1 Vertex AI / Cloud Run FastAPI container (the production case)
|
|
66
76
|
|
|
67
77
|
Use `lifespan` so startup runs inside the event loop and `asyncio.to_thread`
|
|
@@ -114,10 +124,13 @@ wraps any blocking I/O. This is what every container in
|
|
|
114
124
|
MCAClient,
|
|
115
125
|
service_name=service_name,
|
|
116
126
|
model_id=model_id,
|
|
117
|
-
model_type="
|
|
127
|
+
model_type="classification", # set to the declared type
|
|
118
128
|
model_category="internal", # set to the declared category
|
|
119
129
|
team_name=team_name,
|
|
130
|
+
llm_provider="google", # or "openai" | "anthropic" | "litellm"
|
|
131
|
+
llm_model="gemini-2.0-flash-001", # whatever the model resolves to
|
|
120
132
|
collector_endpoint=collector_endpoint,
|
|
133
|
+
allow_insecure_collector=True, # required if collector is http://…
|
|
121
134
|
registry_url=registry_url,
|
|
122
135
|
use_gcp_auth=True,
|
|
123
136
|
refresh_interval_secs=300,
|
|
@@ -125,6 +138,11 @@ wraps any blocking I/O. This is what every container in
|
|
|
125
138
|
capture_output_data=True,
|
|
126
139
|
)
|
|
127
140
|
|
|
141
|
+
`llm_provider` / `llm_model` dimension GenAI metrics on the collector. Set
|
|
142
|
+
them even when your agent talks to the LLM indirectly (LiteLLM proxy,
|
|
143
|
+
LangChain wrapper) — otherwise the dashboard groups everything as
|
|
144
|
+
`unknown/unknown` and per-model latency/cost splits are gone.
|
|
145
|
+
|
|
128
146
|
yield
|
|
129
147
|
|
|
130
148
|
if mca_client:
|
|
@@ -142,7 +160,7 @@ wraps any blocking I/O. This is what every container in
|
|
|
142
160
|
client = MCAClient(
|
|
143
161
|
service_name="readmission-predictor",
|
|
144
162
|
model_id="mdl-001",
|
|
145
|
-
model_type="
|
|
163
|
+
model_type="classification",
|
|
146
164
|
model_category="internal",
|
|
147
165
|
team_name="clinical-ai",
|
|
148
166
|
)
|
|
@@ -257,6 +275,20 @@ not hand-wrap. Call `autolog()` once and let the patchers handle it.
|
|
|
257
275
|
from llama_index.core import Settings
|
|
258
276
|
Settings.callback_manager.add_handler(MCALlamaIndexCallback(mca_client))
|
|
259
277
|
|
|
278
|
+
**Build the callback in its own try-block.** `MCALangChainCallback` imports
|
|
279
|
+
`langchain-core` at construction time. If that extra isn't installed, the
|
|
280
|
+
constructor raises — and if you built the client and the callback in the
|
|
281
|
+
same `try`, the exception unwinds the whole init, losing the agentic client
|
|
282
|
+
that would have worked on its own. Split them:
|
|
283
|
+
|
|
284
|
+
client = MCAClient(...) # required
|
|
285
|
+
try:
|
|
286
|
+
from mca_sdk.integrations import MCALangChainCallback
|
|
287
|
+
callbacks = [MCALangChainCallback(client)]
|
|
288
|
+
except Exception:
|
|
289
|
+
callbacks = [] # LLM-call telemetry off;
|
|
290
|
+
# agent traces (§2.6) still flow
|
|
291
|
+
|
|
260
292
|
### 2.6 Agentic (multi-step reasoning)
|
|
261
293
|
|
|
262
294
|
One outer trace per user request; one `record_prediction` per agent
|
|
@@ -280,6 +312,55 @@ metrics underneath. Pattern is
|
|
|
280
312
|
},
|
|
281
313
|
)
|
|
282
314
|
|
|
315
|
+
#### 2.6.1 Agentic on LangGraph (`StateGraph.astream`)
|
|
316
|
+
|
|
317
|
+
When the agent is a LangGraph `StateGraph` (increasingly the default),
|
|
318
|
+
you don't have a hand-rolled `for step in plan` loop — you have
|
|
319
|
+
`app.astream(state, config)` yielding `{node_name: node_state}` events.
|
|
320
|
+
Wrap the streaming loop instead:
|
|
321
|
+
|
|
322
|
+
with mca_client.trace("agent.run", attributes={
|
|
323
|
+
"agent.goal": "deploy_application",
|
|
324
|
+
"agent.request_id": request_id, # also your association_id
|
|
325
|
+
}):
|
|
326
|
+
last_tick = time.perf_counter()
|
|
327
|
+
prev_error_count = 0
|
|
328
|
+
step_idx = 0
|
|
329
|
+
async for event in app.astream(initial_state, config):
|
|
330
|
+
for node_name, node_state in event.items():
|
|
331
|
+
if not isinstance(node_state, dict):
|
|
332
|
+
continue
|
|
333
|
+
now = time.perf_counter()
|
|
334
|
+
err_n = len(node_state.get("errors", []) or [])
|
|
335
|
+
mca_client.record_prediction(
|
|
336
|
+
latency=now - last_tick, # per-step wall time
|
|
337
|
+
prediction_id=f"{request_id}.{step_idx}",
|
|
338
|
+
span_attributes={
|
|
339
|
+
"agent.step.index": step_idx,
|
|
340
|
+
"agent.step.node": node_name,
|
|
341
|
+
"agent.step.success": err_n == prev_error_count,
|
|
342
|
+
},
|
|
343
|
+
)
|
|
344
|
+
prev_error_count = err_n
|
|
345
|
+
last_tick = now
|
|
346
|
+
step_idx += 1
|
|
347
|
+
mca_client.flush(timeout_millis=2000)
|
|
348
|
+
|
|
349
|
+
Notes:
|
|
350
|
+
|
|
351
|
+
- Use the `thread_id` you already pass to LangGraph as your
|
|
352
|
+
`association_id` — it's the natural join key for downstream outcomes,
|
|
353
|
+
don't invent a second one.
|
|
354
|
+
- Measure per-step latency between yields. LangGraph doesn't expose
|
|
355
|
+
per-node start times in the event stream; `now - last_tick` is the
|
|
356
|
+
right approximation.
|
|
357
|
+
- Derive per-step success by comparing `len(errors)` before and after.
|
|
358
|
+
The `add_error()` helpers in most projects append without decrementing,
|
|
359
|
+
so growth ⇒ that node failed.
|
|
360
|
+
- The LangChain callback (§2.5) still attaches to your `ChatLiteLLM` /
|
|
361
|
+
`ChatOpenAI` instances underneath and captures per-LLM-call
|
|
362
|
+
telemetry — the agent trace is one layer up, not a replacement.
|
|
363
|
+
|
|
283
364
|
### 2.7 Vendor model (you do not own the inference code)
|
|
284
365
|
|
|
285
366
|
Two sub-cases:
|
|
@@ -317,6 +398,16 @@ Use `model_category="vendor"` on the `MCAClient` in both sub-cases.
|
|
|
317
398
|
anything to `record_prediction`, `record_llm_generation`, trace
|
|
318
399
|
attributes, or log `extra` fields. If the owner wants belt-and-braces
|
|
319
400
|
filtering, set `MCA_ENABLE_PHI_FILTER=1` — it is opt-in.
|
|
401
|
+
|
|
402
|
+
**Free-form user input is a landmine.** If your model's input is a
|
|
403
|
+
natural-language field (chat prompt, ticket description, deploy
|
|
404
|
+
request, search query, free-text note), do **not** set
|
|
405
|
+
`capture_input_data=True` blindly — it ships the raw text into span
|
|
406
|
+
attributes where a downstream viewer with dashboard access will read
|
|
407
|
+
it. Default to `False`; only enable after you've written an
|
|
408
|
+
application-side scrubber, or after confirming the field truly can't
|
|
409
|
+
hold PHI. The same warning applies to `capture_output_data=True` when
|
|
410
|
+
the model returns generated text.
|
|
320
411
|
2. **`association_id` is the join key** between prediction and outcome.
|
|
321
412
|
Forward it from the request payload into per-row logs (see §2.1) so
|
|
322
413
|
ground-truth labels can be joined later. Never use PHI as the
|
|
@@ -331,7 +422,22 @@ Use `model_category="vendor"` on the `MCAClient` in both sub-cases.
|
|
|
331
422
|
|
|
332
423
|
---
|
|
333
424
|
|
|
334
|
-
## 4.
|
|
425
|
+
## 4. MLOps Pipelines & Dependencies
|
|
426
|
+
|
|
427
|
+
To ensure telemetry successfully reaches the collector in production, you MUST instrument the build and deployment environment alongside the Python code. Do not skip this step.
|
|
428
|
+
|
|
429
|
+
### 4.1 Dependency Management
|
|
430
|
+
Search the project tree for `requirements.txt` or `pyproject.toml` files located within the serving or inference directories (e.g., `serve_image/requirements.txt`).
|
|
431
|
+
Append `mca_sdk` to these files. If the repository has separate training and serving dependencies, ensure it is added to the serving dependencies at a minimum.
|
|
432
|
+
|
|
433
|
+
### 4.2 Environment Orchestration
|
|
434
|
+
The production container needs the telemetry environment variables injected at deployment time.
|
|
435
|
+
Search the project for Vertex AI pipeline definitions (e.g., `pipeline.py`, `pipeline.json`), deployment shell scripts (e.g., `bootstrap.sh`), or environment configuration files (e.g., `config.env`).
|
|
436
|
+
Ensure that `MCA_OTEL_ENDPOINT`, `MCA_SERVICE_NAME`, `MCA_MODEL_ID`, and `MCA_TEAM_NAME` are explicitly passed into the serving container's configuration (e.g., via `serving_container_environment_variables` in Vertex AI's `ModelDeployOp` or equivalent).
|
|
437
|
+
|
|
438
|
+
---
|
|
439
|
+
|
|
440
|
+
## 5. Environment variables (canonical names)
|
|
335
441
|
|
|
336
442
|
| Var | Required? | Default | Notes |
|
|
337
443
|
|------------------------------------|-----------|--------------------------|-------|
|
|
@@ -347,6 +453,9 @@ Use `model_category="vendor"` on the `MCAClient` in both sub-cases.
|
|
|
347
453
|
| `MCA_REGISTRY_REFRESH_INTERVAL` | no | `600` | Seconds |
|
|
348
454
|
| `MCA_ENABLE_PHI_FILTER` | no | `0` | Opt-in PHI scrubbing |
|
|
349
455
|
| `MCA_DEBUG_MODE` | no | `false` | Verbose logs |
|
|
456
|
+
| `MCA_ENV` | no | `production` | Fleet mock-switch. `dev` / `development` / `mock` / `local` disable real telemetry (init a no-op client); anything else means production. Mirrors `example_deployed/*/main.py`. Also honor `MCA_DISABLED=true` for the same effect. |
|
|
457
|
+
| `MCA_LLM_PROVIDER` | no | — | GenAI metric dimension. Set to `google` / `openai` / `anthropic` / `litellm` etc. Pass into `MCAClient(llm_provider=...)`. |
|
|
458
|
+
| `MCA_LLM_MODEL` | no | — | GenAI metric dimension. Pass into `MCAClient(llm_model=...)`. Without both, dashboards group everything as `unknown/unknown`. |
|
|
350
459
|
|
|
351
460
|
Earlier versions of this guide listed `MCA_COLLECTOR_ENDPOINT` as the
|
|
352
461
|
primary endpoint variable. That is wrong. Use `MCA_OTEL_ENDPOINT` in new
|
|
@@ -355,24 +464,26 @@ manifests.
|
|
|
355
464
|
|
|
356
465
|
---
|
|
357
466
|
|
|
358
|
-
##
|
|
467
|
+
## 6. Verification
|
|
359
468
|
|
|
360
|
-
After instrumenting, do all
|
|
469
|
+
After instrumenting, do all six:
|
|
361
470
|
|
|
362
471
|
1. **Import test** — `python -c "from mca_sdk import MCAClient; print('ok')"`.
|
|
363
|
-
2. **
|
|
472
|
+
2. **Dependencies check** — Confirm `mca_sdk` is added to the serving `requirements.txt` or `pyproject.toml`.
|
|
473
|
+
3. **Pipeline config check** — Confirm pipeline deployment files (e.g., `pipeline.py`) explicitly inject `MCA_OTEL_ENDPOINT` and registry vars into the serving container.
|
|
474
|
+
4. **Local collector** —
|
|
364
475
|
docker-compose up -d otel-collector
|
|
365
476
|
python <their_entrypoint>.py # or hit the FastAPI endpoint
|
|
366
477
|
docker logs -f otel-collector # expect "exporting metrics"
|
|
367
|
-
|
|
478
|
+
5. **Unit smoke** — call the instrumented function once with a tiny
|
|
368
479
|
synthetic input, confirm no exception, confirm collector received a
|
|
369
480
|
span with `service.name`, `model.id`, `model.type`, `model.category`.
|
|
370
|
-
|
|
481
|
+
6. **Owner sign-off question** — confirm with the data scientist that the
|
|
371
482
|
`model_type` and `model_category` you set match what they declared.
|
|
372
483
|
|
|
373
484
|
---
|
|
374
485
|
|
|
375
|
-
##
|
|
486
|
+
## 7. When to refuse / escalate
|
|
376
487
|
|
|
377
488
|
Stop and ask the owner if any of these are true:
|
|
378
489
|
|
|
@@ -388,19 +499,20 @@ Stop and ask the owner if any of these are true:
|
|
|
388
499
|
|
|
389
500
|
---
|
|
390
501
|
|
|
391
|
-
##
|
|
502
|
+
## 8. One-page summary you can paste back to the data scientist
|
|
392
503
|
|
|
393
504
|
1. Confirm `model_type`, `model_category`, deployment shape, LLM access path.
|
|
394
505
|
2. Pick the matching section above (§2.1 – §2.7).
|
|
395
506
|
3. Copy the universal startup block (§1.1 for Vertex/Cloud Run, §1.2 for scripts).
|
|
396
507
|
4. Apply the pattern. Strip PHI. Use `association_id` for joins.
|
|
397
|
-
5.
|
|
508
|
+
5. Update MLOps configuration (§4) by injecting `MCA_*` environment variables in pipeline scripts and adding `mca_sdk` to `requirements.txt`.
|
|
509
|
+
6. Verify with §6.
|
|
398
510
|
|
|
399
511
|
That is the entire workflow.
|
|
400
512
|
|
|
401
513
|
---
|
|
402
514
|
|
|
403
|
-
##
|
|
515
|
+
## 9. Prompt templates for data scientists
|
|
404
516
|
|
|
405
517
|
Paste one of the following into your AI coding assistant to start an
|
|
406
518
|
instrumentation session.
|
|
@@ -409,7 +521,7 @@ instrumentation session.
|
|
|
409
521
|
|
|
410
522
|
> Please instrument my model with the MCA SDK.
|
|
411
523
|
>
|
|
412
|
-
> - **model_type:** `<
|
|
524
|
+
> - **model_type:** `<regression | time-series | classification | generative | agentic>`
|
|
413
525
|
> - **model_category:** `<internal | vendor>`
|
|
414
526
|
> - **Deployment shape:** `<vertex-fastapi | cloud-run-fastapi | script | notebook | cli-batch>`
|
|
415
527
|
> - **LLM access path** (only if generative or agentic):
|
|
@@ -18,7 +18,7 @@ version_tuple: tuple[int | str, ...]
|
|
|
18
18
|
commit_id: str | None
|
|
19
19
|
__commit_id__: str | None
|
|
20
20
|
|
|
21
|
-
__version__ = version = '0.9.
|
|
22
|
-
__version_tuple__ = version_tuple = (0, 9,
|
|
21
|
+
__version__ = version = '0.9.4.dev1'
|
|
22
|
+
__version_tuple__ = version_tuple = (0, 9, 4, 'dev1')
|
|
23
23
|
|
|
24
|
-
__commit_id__ = commit_id = '
|
|
24
|
+
__commit_id__ = commit_id = 'gb4af42fa0'
|
|
@@ -0,0 +1,149 @@
|
|
|
1
|
+
"""AI-assistant packaging for MCA SDK end users.
|
|
2
|
+
|
|
3
|
+
Exposes a small public API that lets a data scientist:
|
|
4
|
+
- read the in-wheel FOR_AI_ASSISTANTS.md guide programmatically
|
|
5
|
+
- render the Variant A/B paste-in prompts with model_id/team/etc filled in
|
|
6
|
+
- install per-assistant config files (Cursor / Copilot / Gemini / Claude Code)
|
|
7
|
+
into their own repo via `mca-init ai-assist install ...`
|
|
8
|
+
|
|
9
|
+
The Jupyter magic (`%mca_instrument`, `%mca_prompt`) lives in
|
|
10
|
+
`mca_sdk.ai_assist.jupyter` and is not imported here so IPython stays optional.
|
|
11
|
+
|
|
12
|
+
The guide (FOR_AI_ASSISTANTS.md) remains the single source of truth for
|
|
13
|
+
instrumentation patterns; every template in this subpackage links back to
|
|
14
|
+
it rather than duplicating pattern content.
|
|
15
|
+
"""
|
|
16
|
+
|
|
17
|
+
from __future__ import annotations
|
|
18
|
+
|
|
19
|
+
import shutil
|
|
20
|
+
import sys
|
|
21
|
+
from pathlib import Path
|
|
22
|
+
from typing import List
|
|
23
|
+
|
|
24
|
+
if sys.version_info >= (3, 9):
|
|
25
|
+
from importlib.resources import files as _pkg_files
|
|
26
|
+
else: # pragma: no cover - project targets 3.10+
|
|
27
|
+
from importlib_resources import files as _pkg_files # type: ignore[no-redef]
|
|
28
|
+
|
|
29
|
+
__all__ = [
|
|
30
|
+
"get_guide_path",
|
|
31
|
+
"read_guide",
|
|
32
|
+
"render_prompt",
|
|
33
|
+
"list_assistants",
|
|
34
|
+
"install",
|
|
35
|
+
"ASSISTANT_TARGETS",
|
|
36
|
+
]
|
|
37
|
+
|
|
38
|
+
_KNOWN_ASSISTANTS = ("claude-code", "cursor", "copilot", "gemini")
|
|
39
|
+
|
|
40
|
+
ASSISTANT_TARGETS: dict[str, str] = {
|
|
41
|
+
"claude-code": ".claude/skills/mca-instrument.md",
|
|
42
|
+
"cursor": ".cursor/rules/mca-instrument.mdc",
|
|
43
|
+
"copilot": ".github/copilot-instructions.md",
|
|
44
|
+
"gemini": "GEMINI.md",
|
|
45
|
+
}
|
|
46
|
+
|
|
47
|
+
_PROMPT_FIELDS = (
|
|
48
|
+
"model_type",
|
|
49
|
+
"model_category",
|
|
50
|
+
"deployment_shape",
|
|
51
|
+
"llm_access_path",
|
|
52
|
+
"model_id",
|
|
53
|
+
"service_name",
|
|
54
|
+
"team_name",
|
|
55
|
+
)
|
|
56
|
+
|
|
57
|
+
|
|
58
|
+
def get_guide_path() -> Path:
|
|
59
|
+
"""Return the absolute filesystem path to FOR_AI_ASSISTANTS.md."""
|
|
60
|
+
return Path(str(_pkg_files("mca_sdk").joinpath("FOR_AI_ASSISTANTS.md")))
|
|
61
|
+
|
|
62
|
+
|
|
63
|
+
def read_guide() -> str:
|
|
64
|
+
"""Return the full text of the in-wheel FOR_AI_ASSISTANTS.md guide."""
|
|
65
|
+
return _pkg_files("mca_sdk").joinpath("FOR_AI_ASSISTANTS.md").read_text(encoding="utf-8")
|
|
66
|
+
|
|
67
|
+
|
|
68
|
+
def list_assistants() -> List[str]:
|
|
69
|
+
"""Return the assistant slugs this package can scaffold configs for."""
|
|
70
|
+
return list(_KNOWN_ASSISTANTS)
|
|
71
|
+
|
|
72
|
+
|
|
73
|
+
def render_prompt(variant: str = "a", **fields: str) -> str:
|
|
74
|
+
"""Render a Variant A or B prompt from §8 of the guide with fields filled in.
|
|
75
|
+
|
|
76
|
+
Args:
|
|
77
|
+
variant: "a" (owner-stated) or "b" (fallback classification).
|
|
78
|
+
**fields: Any of model_type, model_category, deployment_shape,
|
|
79
|
+
llm_access_path, model_id, service_name, team_name. Missing
|
|
80
|
+
fields are left as `<placeholder>` so the user can fill them.
|
|
81
|
+
|
|
82
|
+
Returns:
|
|
83
|
+
The rendered prompt as a string.
|
|
84
|
+
|
|
85
|
+
Raises:
|
|
86
|
+
ValueError: if variant is not one of {"a", "b"}.
|
|
87
|
+
"""
|
|
88
|
+
variant = variant.lower().strip()
|
|
89
|
+
if variant not in {"a", "b"}:
|
|
90
|
+
raise ValueError(f"variant must be 'a' or 'b', got: {variant!r}")
|
|
91
|
+
|
|
92
|
+
template_path = (
|
|
93
|
+
_pkg_files("mca_sdk.ai_assist")
|
|
94
|
+
.joinpath("templates")
|
|
95
|
+
.joinpath("prompts")
|
|
96
|
+
.joinpath(f"variant_{variant}.md")
|
|
97
|
+
)
|
|
98
|
+
template = template_path.read_text(encoding="utf-8")
|
|
99
|
+
|
|
100
|
+
substitutions = {k: fields.get(k, f"<{k}>") for k in _PROMPT_FIELDS}
|
|
101
|
+
for placeholder, value in substitutions.items():
|
|
102
|
+
template = template.replace("{" + placeholder + "}", value)
|
|
103
|
+
return template
|
|
104
|
+
|
|
105
|
+
|
|
106
|
+
def install(assistant: str, dest: Path, force: bool = False) -> List[Path]:
|
|
107
|
+
"""Copy a template file for `assistant` into `dest` at its canonical location.
|
|
108
|
+
|
|
109
|
+
Args:
|
|
110
|
+
assistant: One of "claude-code", "cursor", "copilot", "gemini", or "all".
|
|
111
|
+
dest: Repository root to install into. The canonical relative path
|
|
112
|
+
(e.g. `.cursor/rules/mca-instrument.mdc`) is appended.
|
|
113
|
+
force: If True, overwrite existing files. Otherwise skip and log.
|
|
114
|
+
|
|
115
|
+
Returns:
|
|
116
|
+
List of absolute paths that were written.
|
|
117
|
+
|
|
118
|
+
Raises:
|
|
119
|
+
ValueError: if `assistant` is unknown.
|
|
120
|
+
FileExistsError: if the target file exists and `force` is False.
|
|
121
|
+
"""
|
|
122
|
+
if assistant == "all":
|
|
123
|
+
written: List[Path] = []
|
|
124
|
+
for slug in _KNOWN_ASSISTANTS:
|
|
125
|
+
written.extend(install(slug, dest, force=force))
|
|
126
|
+
return written
|
|
127
|
+
|
|
128
|
+
if assistant not in ASSISTANT_TARGETS:
|
|
129
|
+
raise ValueError(
|
|
130
|
+
f"Unknown assistant: {assistant!r}. "
|
|
131
|
+
f"Expected one of {list(ASSISTANT_TARGETS)} or 'all'."
|
|
132
|
+
)
|
|
133
|
+
|
|
134
|
+
rel_path = ASSISTANT_TARGETS[assistant]
|
|
135
|
+
target = Path(dest).resolve() / rel_path
|
|
136
|
+
src_resource = (
|
|
137
|
+
_pkg_files("mca_sdk.ai_assist")
|
|
138
|
+
.joinpath("templates")
|
|
139
|
+
.joinpath(assistant)
|
|
140
|
+
.joinpath(Path(rel_path).name)
|
|
141
|
+
)
|
|
142
|
+
|
|
143
|
+
if target.exists() and not force:
|
|
144
|
+
raise FileExistsError(f"{target} already exists (pass force=True to overwrite)")
|
|
145
|
+
|
|
146
|
+
target.parent.mkdir(parents=True, exist_ok=True)
|
|
147
|
+
with src_resource.open("rb") as src, open(target, "wb") as dst:
|
|
148
|
+
shutil.copyfileobj(src, dst)
|
|
149
|
+
return [target]
|