cloud-dog-api-kit 0.13.0__tar.gz
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- cloud_dog_api_kit-0.13.0/.gitignore +16 -0
- cloud_dog_api_kit-0.13.0/AGENT-INSTRUCTION-FIX-API-KIT.md +163 -0
- cloud_dog_api_kit-0.13.0/ARCHITECTURE.md +864 -0
- cloud_dog_api_kit-0.13.0/BUILD.md +74 -0
- cloud_dog_api_kit-0.13.0/CHANGELOG.md +15 -0
- cloud_dog_api_kit-0.13.0/LICENCE +190 -0
- cloud_dog_api_kit-0.13.0/LICENSE +176 -0
- cloud_dog_api_kit-0.13.0/NOTICE +7 -0
- cloud_dog_api_kit-0.13.0/PKG-INFO +27 -0
- cloud_dog_api_kit-0.13.0/README.md +142 -0
- cloud_dog_api_kit-0.13.0/REQUIREMENTS.md +727 -0
- cloud_dog_api_kit-0.13.0/TESTS.md +576 -0
- cloud_dog_api_kit-0.13.0/adoption_test.py +98 -0
- cloud_dog_api_kit-0.13.0/cloud_dog_api_kit/__init__.py +170 -0
- cloud_dog_api_kit-0.13.0/cloud_dog_api_kit/a2a/__init__.py +53 -0
- cloud_dog_api_kit-0.13.0/cloud_dog_api_kit/a2a/card.py +138 -0
- cloud_dog_api_kit-0.13.0/cloud_dog_api_kit/a2a/events.py +1123 -0
- cloud_dog_api_kit-0.13.0/cloud_dog_api_kit/a2a/gateway.py +105 -0
- cloud_dog_api_kit-0.13.0/cloud_dog_api_kit/a2a/skill_audit.py +107 -0
- cloud_dog_api_kit-0.13.0/cloud_dog_api_kit/auth/__init__.py +35 -0
- cloud_dog_api_kit-0.13.0/cloud_dog_api_kit/auth/dependency.py +121 -0
- cloud_dog_api_kit-0.13.0/cloud_dog_api_kit/auth/rbac.py +107 -0
- cloud_dog_api_kit-0.13.0/cloud_dog_api_kit/auth/service_auth.py +54 -0
- cloud_dog_api_kit-0.13.0/cloud_dog_api_kit/clients/__init__.py +29 -0
- cloud_dog_api_kit-0.13.0/cloud_dog_api_kit/clients/circuit_breaker.py +39 -0
- cloud_dog_api_kit-0.13.0/cloud_dog_api_kit/clients/http_client.py +127 -0
- cloud_dog_api_kit-0.13.0/cloud_dog_api_kit/clients/retry.py +83 -0
- cloud_dog_api_kit-0.13.0/cloud_dog_api_kit/compat/__init__.py +37 -0
- cloud_dog_api_kit-0.13.0/cloud_dog_api_kit/compat/envelope.py +120 -0
- cloud_dog_api_kit-0.13.0/cloud_dog_api_kit/compat/profile.py +102 -0
- cloud_dog_api_kit-0.13.0/cloud_dog_api_kit/compat/routes.py +90 -0
- cloud_dog_api_kit-0.13.0/cloud_dog_api_kit/config.py +54 -0
- cloud_dog_api_kit-0.13.0/cloud_dog_api_kit/correlation/__init__.py +50 -0
- cloud_dog_api_kit-0.13.0/cloud_dog_api_kit/correlation/context.py +118 -0
- cloud_dog_api_kit-0.13.0/cloud_dog_api_kit/correlation/middleware.py +133 -0
- cloud_dog_api_kit-0.13.0/cloud_dog_api_kit/envelopes/__init__.py +37 -0
- cloud_dog_api_kit-0.13.0/cloud_dog_api_kit/envelopes/error.py +87 -0
- cloud_dog_api_kit-0.13.0/cloud_dog_api_kit/envelopes/success.py +84 -0
- cloud_dog_api_kit-0.13.0/cloud_dog_api_kit/errors/__init__.py +51 -0
- cloud_dog_api_kit-0.13.0/cloud_dog_api_kit/errors/exceptions.py +184 -0
- cloud_dog_api_kit-0.13.0/cloud_dog_api_kit/errors/handler.py +102 -0
- cloud_dog_api_kit-0.13.0/cloud_dog_api_kit/errors/taxonomy.py +62 -0
- cloud_dog_api_kit-0.13.0/cloud_dog_api_kit/factory.py +157 -0
- cloud_dog_api_kit-0.13.0/cloud_dog_api_kit/idempotency/__init__.py +28 -0
- cloud_dog_api_kit-0.13.0/cloud_dog_api_kit/idempotency/middleware.py +118 -0
- cloud_dog_api_kit-0.13.0/cloud_dog_api_kit/idempotency/store.py +100 -0
- cloud_dog_api_kit-0.13.0/cloud_dog_api_kit/lifecycle/__init__.py +39 -0
- cloud_dog_api_kit-0.13.0/cloud_dog_api_kit/lifecycle/hooks.py +75 -0
- cloud_dog_api_kit-0.13.0/cloud_dog_api_kit/lifecycle/shutdown.py +178 -0
- cloud_dog_api_kit-0.13.0/cloud_dog_api_kit/mcp/__init__.py +122 -0
- cloud_dog_api_kit-0.13.0/cloud_dog_api_kit/mcp/async_jobs.py +126 -0
- cloud_dog_api_kit-0.13.0/cloud_dog_api_kit/mcp/client_sdk.py +235 -0
- cloud_dog_api_kit-0.13.0/cloud_dog_api_kit/mcp/client_transport/__init__.py +47 -0
- cloud_dog_api_kit-0.13.0/cloud_dog_api_kit/mcp/client_transport/base.py +98 -0
- cloud_dog_api_kit-0.13.0/cloud_dog_api_kit/mcp/client_transport/exceptions.py +37 -0
- cloud_dog_api_kit-0.13.0/cloud_dog_api_kit/mcp/client_transport/http_jsonrpc.py +405 -0
- cloud_dog_api_kit-0.13.0/cloud_dog_api_kit/mcp/client_transport/legacy_sse.py +320 -0
- cloud_dog_api_kit-0.13.0/cloud_dog_api_kit/mcp/client_transport/stdio.py +322 -0
- cloud_dog_api_kit-0.13.0/cloud_dog_api_kit/mcp/client_transport/streamable_http.py +748 -0
- cloud_dog_api_kit-0.13.0/cloud_dog_api_kit/mcp/contract.py +113 -0
- cloud_dog_api_kit-0.13.0/cloud_dog_api_kit/mcp/error_mapper.py +84 -0
- cloud_dog_api_kit-0.13.0/cloud_dog_api_kit/mcp/gateway.py +117 -0
- cloud_dog_api_kit-0.13.0/cloud_dog_api_kit/mcp/legacy_sse.py +129 -0
- cloud_dog_api_kit-0.13.0/cloud_dog_api_kit/mcp/session.py +96 -0
- cloud_dog_api_kit-0.13.0/cloud_dog_api_kit/mcp/sync_handler.py +269 -0
- cloud_dog_api_kit-0.13.0/cloud_dog_api_kit/mcp/tool_audit.py +136 -0
- cloud_dog_api_kit-0.13.0/cloud_dog_api_kit/mcp/tool_router.py +180 -0
- cloud_dog_api_kit-0.13.0/cloud_dog_api_kit/mcp/transport.py +1041 -0
- cloud_dog_api_kit-0.13.0/cloud_dog_api_kit/middleware/__init__.py +39 -0
- cloud_dog_api_kit-0.13.0/cloud_dog_api_kit/middleware/cors.py +74 -0
- cloud_dog_api_kit-0.13.0/cloud_dog_api_kit/middleware/logging.py +98 -0
- cloud_dog_api_kit-0.13.0/cloud_dog_api_kit/middleware/request_size_limit.py +86 -0
- cloud_dog_api_kit-0.13.0/cloud_dog_api_kit/middleware/timeout.py +78 -0
- cloud_dog_api_kit-0.13.0/cloud_dog_api_kit/middleware/timing.py +52 -0
- cloud_dog_api_kit-0.13.0/cloud_dog_api_kit/openapi/__init__.py +30 -0
- cloud_dog_api_kit-0.13.0/cloud_dog_api_kit/openapi/customise.py +69 -0
- cloud_dog_api_kit-0.13.0/cloud_dog_api_kit/openapi/route.py +46 -0
- cloud_dog_api_kit-0.13.0/cloud_dog_api_kit/routers/__init__.py +41 -0
- cloud_dog_api_kit-0.13.0/cloud_dog_api_kit/routers/crud.py +173 -0
- cloud_dog_api_kit-0.13.0/cloud_dog_api_kit/routers/health.py +160 -0
- cloud_dog_api_kit-0.13.0/cloud_dog_api_kit/routers/jobs.py +69 -0
- cloud_dog_api_kit-0.13.0/cloud_dog_api_kit/routers/version.py +46 -0
- cloud_dog_api_kit-0.13.0/cloud_dog_api_kit/schemas/__init__.py +36 -0
- cloud_dog_api_kit-0.13.0/cloud_dog_api_kit/schemas/envelopes.py +37 -0
- cloud_dog_api_kit-0.13.0/cloud_dog_api_kit/schemas/filters.py +103 -0
- cloud_dog_api_kit-0.13.0/cloud_dog_api_kit/schemas/pagination.py +148 -0
- cloud_dog_api_kit-0.13.0/cloud_dog_api_kit/streaming/__init__.py +28 -0
- cloud_dog_api_kit-0.13.0/cloud_dog_api_kit/streaming/events.py +47 -0
- cloud_dog_api_kit-0.13.0/cloud_dog_api_kit/streaming/jsonl.py +68 -0
- cloud_dog_api_kit-0.13.0/cloud_dog_api_kit/streaming/sse.py +102 -0
- cloud_dog_api_kit-0.13.0/cloud_dog_api_kit/testing/__init__.py +46 -0
- cloud_dog_api_kit-0.13.0/cloud_dog_api_kit/testing/conformance.py +156 -0
- cloud_dog_api_kit-0.13.0/cloud_dog_api_kit/testing/fixtures.py +90 -0
- cloud_dog_api_kit-0.13.0/cloud_dog_api_kit/testing/flows/__init__.py +32 -0
- cloud_dog_api_kit-0.13.0/cloud_dog_api_kit/testing/flows/auth_flow.py +41 -0
- cloud_dog_api_kit-0.13.0/cloud_dog_api_kit/testing/flows/crud_flow.py +50 -0
- cloud_dog_api_kit-0.13.0/cloud_dog_api_kit/testing/flows/job_flow.py +42 -0
- cloud_dog_api_kit-0.13.0/cloud_dog_api_kit/testing/flows/streaming_flow.py +42 -0
- cloud_dog_api_kit-0.13.0/cloud_dog_api_kit/traceability_ids.py +84 -0
- cloud_dog_api_kit-0.13.0/cloud_dog_api_kit/versioning/__init__.py +30 -0
- cloud_dog_api_kit-0.13.0/cloud_dog_api_kit/versioning/header.py +52 -0
- cloud_dog_api_kit-0.13.0/cloud_dog_api_kit/web/__init__.py +7 -0
- cloud_dog_api_kit-0.13.0/cloud_dog_api_kit/web/proxy.py +222 -0
- cloud_dog_api_kit-0.13.0/cloud_dog_api_kit/webhook/__init__.py +29 -0
- cloud_dog_api_kit-0.13.0/cloud_dog_api_kit/webhook/signature.py +149 -0
- cloud_dog_api_kit-0.13.0/docs/ARCHITECTURE.md +17 -0
- cloud_dog_api_kit-0.13.0/docs/CONFIGURATION.md +11 -0
- cloud_dog_api_kit-0.13.0/docs/EXAMPLES.md +13 -0
- cloud_dog_api_kit-0.13.0/examples/__init__.py +15 -0
- cloud_dog_api_kit-0.13.0/examples/fastapi_app/README.md +22 -0
- cloud_dog_api_kit-0.13.0/examples/fastapi_app/__init__.py +15 -0
- cloud_dog_api_kit-0.13.0/examples/fastapi_app/app.py +76 -0
- cloud_dog_api_kit-0.13.0/pyproject.toml +37 -0
- cloud_dog_api_kit-0.13.0/tests/__init__.py +13 -0
- cloud_dog_api_kit-0.13.0/tests/application/AT1.7_MigrationPatternLegacyToVersioned/test_migration_pattern.py +56 -0
- cloud_dog_api_kit-0.13.0/tests/conftest.py +158 -0
- cloud_dog_api_kit-0.13.0/tests/env-AT +7 -0
- cloud_dog_api_kit-0.13.0/tests/env-IT +9 -0
- cloud_dog_api_kit-0.13.0/tests/env-ST +7 -0
- cloud_dog_api_kit-0.13.0/tests/env-UT +7 -0
- cloud_dog_api_kit-0.13.0/tests/integration/IT1.8_MCPGatewayIntegration/test_mcp_gateway_integration.py +532 -0
- cloud_dog_api_kit-0.13.0/tests/integration/IT1.9_MCPClientTransports/test_mcp_client_transports.py +284 -0
- cloud_dog_api_kit-0.13.0/tests/integration/IT1_10_A2AEventsCommonPackage/__init__.py +0 -0
- cloud_dog_api_kit-0.13.0/tests/integration/IT1_10_A2AEventsCommonPackage/test_a2a_events_common_package.py +447 -0
- cloud_dog_api_kit-0.13.0/tests/quality/QT_PUBLISH_COMPLIANCE/__init__.py +2 -0
- cloud_dog_api_kit-0.13.0/tests/quality/QT_PUBLISH_COMPLIANCE/test_publish_compliance.py +58 -0
- cloud_dog_api_kit-0.13.0/tests/quality/__init__.py +2 -0
- cloud_dog_api_kit-0.13.0/tests/security/SEC1.1_AuthEnforcement/test_auth_enforcement.py +67 -0
- cloud_dog_api_kit-0.13.0/tests/security/SEC1.2_RBACEnforcement/test_rbac_enforcement.py +78 -0
- cloud_dog_api_kit-0.13.0/tests/security/SEC1.3_TenantIsolation/test_tenant_sec.py +64 -0
- cloud_dog_api_kit-0.13.0/tests/security/SEC1.4_InputValidation/test_input_validation.py +73 -0
- cloud_dog_api_kit-0.13.0/tests/security/SEC1.5_SecretRedaction/test_secret_redaction.py +62 -0
- cloud_dog_api_kit-0.13.0/tests/security/SEC1.6_ErrorSanitisation/test_error_sanitisation.py +54 -0
- cloud_dog_api_kit-0.13.0/tests/system/ST1.10_IdempotencyEndToEnd/test_idempotency_e2e.py +43 -0
- cloud_dog_api_kit-0.13.0/tests/system/ST1.11_HTTPClientEndToEnd/test_http_client_e2e.py +39 -0
- cloud_dog_api_kit-0.13.0/tests/system/ST1.12_MCPFullTransportFlow/test_mcp_transport_flow.py +66 -0
- cloud_dog_api_kit-0.13.0/tests/system/ST1.13_StartupLifecycleIntegration/test_startup_lifecycle_integration.py +74 -0
- cloud_dog_api_kit-0.13.0/tests/system/ST1.1_FullMiddlewareStack/test_full_stack.py +59 -0
- cloud_dog_api_kit-0.13.0/tests/system/ST1.2_ErrorFlowEndToEnd/test_error_flow.py +86 -0
- cloud_dog_api_kit-0.13.0/tests/system/ST1.3_PaginationEndToEnd/test_pagination_e2e.py +57 -0
- cloud_dog_api_kit-0.13.0/tests/system/ST1.4_AuthEndToEnd/test_auth_e2e.py +56 -0
- cloud_dog_api_kit-0.13.0/tests/system/ST1.5_HealthStatusEndToEnd/test_health_e2e.py +42 -0
- cloud_dog_api_kit-0.13.0/tests/system/ST1.6_AppFactory/test_app_factory.py +68 -0
- cloud_dog_api_kit-0.13.0/tests/system/ST1.7_CRUDFlowEndToEnd/test_crud_e2e.py +78 -0
- cloud_dog_api_kit-0.13.0/tests/system/ST1.8_JobFlowEndToEnd/test_job_e2e.py +39 -0
- cloud_dog_api_kit-0.13.0/tests/system/ST1.9_StreamingEndToEnd/test_streaming_e2e.py +60 -0
- cloud_dog_api_kit-0.13.0/tests/test_traceability_ids.py +29 -0
- cloud_dog_api_kit-0.13.0/tests/unit/UT1.10_ServiceAuth/test_service_auth.py +60 -0
- cloud_dog_api_kit-0.13.0/tests/unit/UT1.11_CorrelationContext/test_correlation_context.py +73 -0
- cloud_dog_api_kit-0.13.0/tests/unit/UT1.12_CorrelationMiddleware/test_correlation_middleware.py +80 -0
- cloud_dog_api_kit-0.13.0/tests/unit/UT1.13_PaginationModels/test_pagination_models.py +48 -0
- cloud_dog_api_kit-0.13.0/tests/unit/UT1.14_PaginationDependency/test_pagination_dep.py +34 -0
- cloud_dog_api_kit-0.13.0/tests/unit/UT1.15_FilterHelpers/test_filters.py +52 -0
- cloud_dog_api_kit-0.13.0/tests/unit/UT1.16_CRUDRouter/test_crud_router.py +97 -0
- cloud_dog_api_kit-0.13.0/tests/unit/UT1.17_HealthRouter/test_health_router.py +81 -0
- cloud_dog_api_kit-0.13.0/tests/unit/UT1.18_ReadyLiveEndpoints/test_ready_live.py +40 -0
- cloud_dog_api_kit-0.13.0/tests/unit/UT1.19_JobRouter/test_job_router.py +40 -0
- cloud_dog_api_kit-0.13.0/tests/unit/UT1.1_SuccessEnvelope/test_success_envelope.py +53 -0
- cloud_dog_api_kit-0.13.0/tests/unit/UT1.20_SSEStreaming/test_sse.py +51 -0
- cloud_dog_api_kit-0.13.0/tests/unit/UT1.21_JSONLStreaming/test_jsonl.py +32 -0
- cloud_dog_api_kit-0.13.0/tests/unit/UT1.22_SSEEventModel/test_sse_event.py +48 -0
- cloud_dog_api_kit-0.13.0/tests/unit/UT1.23_HTTPClient/test_http_client.py +46 -0
- cloud_dog_api_kit-0.13.0/tests/unit/UT1.24_RetryPolicy/test_retry_policy.py +52 -0
- cloud_dog_api_kit-0.13.0/tests/unit/UT1.25_CORSHelper/test_cors.py +61 -0
- cloud_dog_api_kit-0.13.0/tests/unit/UT1.26_RequestLogging/test_request_logging.py +52 -0
- cloud_dog_api_kit-0.13.0/tests/unit/UT1.27_TimeoutMiddleware/test_timeout.py +57 -0
- cloud_dog_api_kit-0.13.0/tests/unit/UT1.28_IdempotencyMiddleware/test_idempotency.py +77 -0
- cloud_dog_api_kit-0.13.0/tests/unit/UT1.29_IdempotencyStore/test_idem_store.py +48 -0
- cloud_dog_api_kit-0.13.0/tests/unit/UT1.2_ErrorEnvelope/test_error_envelope.py +54 -0
- cloud_dog_api_kit-0.13.0/tests/unit/UT1.30_VersionHeader/test_version_header.py +48 -0
- cloud_dog_api_kit-0.13.0/tests/unit/UT1.31_OpenAPICustomise/test_openapi.py +40 -0
- cloud_dog_api_kit-0.13.0/tests/unit/UT1.32_MCPGateway/test_mcp_gateway.py +68 -0
- cloud_dog_api_kit-0.13.0/tests/unit/UT1.33_A2AGateway/test_a2a_gateway.py +39 -0
- cloud_dog_api_kit-0.13.0/tests/unit/UT1.34_TestFixtures/test_fixtures.py +73 -0
- cloud_dog_api_kit-0.13.0/tests/unit/UT1.35_ConformanceValidators/test_conformance.py +72 -0
- cloud_dog_api_kit-0.13.0/tests/unit/UT1.36_MCPTransportHelpers/test_mcp_transport.py +2295 -0
- cloud_dog_api_kit-0.13.0/tests/unit/UT1.37_MCPClientTransports/test_base.py +93 -0
- cloud_dog_api_kit-0.13.0/tests/unit/UT1.37_MCPClientTransports/test_http_jsonrpc.py +269 -0
- cloud_dog_api_kit-0.13.0/tests/unit/UT1.37_MCPClientTransports/test_legacy_sse.py +101 -0
- cloud_dog_api_kit-0.13.0/tests/unit/UT1.37_MCPClientTransports/test_stdio.py +109 -0
- cloud_dog_api_kit-0.13.0/tests/unit/UT1.37_MCPClientTransports/test_streamable_http.py +111 -0
- cloud_dog_api_kit-0.13.0/tests/unit/UT1.37_MCPToolRouter/test_mcp_tool_router.py +73 -0
- cloud_dog_api_kit-0.13.0/tests/unit/UT1.38_StartupLifecycleHooks/test_lifecycle_hooks.py +66 -0
- cloud_dog_api_kit-0.13.0/tests/unit/UT1.39_LegacyEnvelopeMiddleware/test_legacy_envelope.py +78 -0
- cloud_dog_api_kit-0.13.0/tests/unit/UT1.3_ErrorTaxonomy/test_error_taxonomy.py +102 -0
- cloud_dog_api_kit-0.13.0/tests/unit/UT1.40_LegacyRouteAdapter/test_legacy_route_adapter.py +63 -0
- cloud_dog_api_kit-0.13.0/tests/unit/UT1.41_MCPSessionLifecycle/test_mcp_session.py +36 -0
- cloud_dog_api_kit-0.13.0/tests/unit/UT1.42_ProfileContextMiddleware/test_profile_context.py +65 -0
- cloud_dog_api_kit-0.13.0/tests/unit/UT1.43_WebhookSignatureVerification/test_webhook_signature.py +102 -0
- cloud_dog_api_kit-0.13.0/tests/unit/UT1.44_RequestSizeLimit/test_request_size_limit.py +57 -0
- cloud_dog_api_kit-0.13.0/tests/unit/UT1.45_GracefulShutdown/test_graceful_shutdown.py +67 -0
- cloud_dog_api_kit-0.13.0/tests/unit/UT1.46_MCPContractRegistration/test_mcp_contract_registration.py +65 -0
- cloud_dog_api_kit-0.13.0/tests/unit/UT1.47_WebApiProxyHeaders/test_web_proxy_headers.py +75 -0
- cloud_dog_api_kit-0.13.0/tests/unit/UT1.4_ErrorExceptions/test_error_exceptions.py +94 -0
- cloud_dog_api_kit-0.13.0/tests/unit/UT1.5_ErrorHandler/test_error_handler.py +78 -0
- cloud_dog_api_kit-0.13.0/tests/unit/UT1.6_AuthDependency/test_auth_dependency.py +88 -0
- cloud_dog_api_kit-0.13.0/tests/unit/UT1.7_BearerAuth/test_bearer_auth.py +69 -0
- cloud_dog_api_kit-0.13.0/tests/unit/UT1.8_RBACHelpers/test_rbac.py +93 -0
- cloud_dog_api_kit-0.13.0/tests/unit/UT1.9_TenantIsolation/test_tenant.py +85 -0
- cloud_dog_api_kit-0.13.0/tests/unit/UT_A2AEvents/test_a2a_events.py +448 -0
- cloud_dog_api_kit-0.13.0/tests/unit/UT_A2AEvents/test_http_ingest_adapter.py +282 -0
- cloud_dog_api_kit-0.13.0/tests/unit/UT_A2AEvents/test_persistent_event_broadcaster.py +239 -0
- cloud_dog_api_kit-0.13.0/tests/unit/UT_A2AEvents/test_rest_poll_adapter.py +394 -0
- cloud_dog_api_kit-0.13.0/tests/unit/UT_A2AEvents/test_websocket_adapter.py +189 -0
- cloud_dog_api_kit-0.13.0/tests/unit/UT_A2aSkillAudit/test_a2a_skill_audit.py +65 -0
- cloud_dog_api_kit-0.13.0/tests/unit/UT_B5A_SyncClass/__init__.py +0 -0
- cloud_dog_api_kit-0.13.0/tests/unit/UT_B5A_SyncClass/test_sync_class.py +423 -0
- cloud_dog_api_kit-0.13.0/tests/unit/UT_B5B_ClientSDK/test_client_sdk.py +200 -0
- cloud_dog_api_kit-0.13.0/tests/unit/UT_McpToolAudit/test_mcp_tool_audit.py +81 -0
|
@@ -0,0 +1,163 @@
|
|
|
1
|
+
# Agent Instruction — Fix cloud_dog_api_kit (v0.2.0)
|
|
2
|
+
|
|
3
|
+
**Package:** `cloud_dog_api_kit`
|
|
4
|
+
**Target version:** 0.2.0
|
|
5
|
+
**Date:** 2026-02-18 (updated after stability fix and SA1 example closure)
|
|
6
|
+
**Scope:** 9 new features (FR18.1–FR18.9) — **ALL DELIVERED AND VERIFIED**
|
|
7
|
+
|
|
8
|
+
---
|
|
9
|
+
|
|
10
|
+
## Status: ✅ COMPLETE (No known gaps)
|
|
11
|
+
|
|
12
|
+
All 9 issues from cross-project impact assessment have been implemented, tested, and verified. This document is retained for reference and future maintenance.
|
|
13
|
+
|
|
14
|
+
**Verified on 2026-02-18:**
|
|
15
|
+
- 231 tests passed (full suite), 0 failed, 0 skipped
|
|
16
|
+
- FR18 targeted scope: 29 passed (v0.2.0 tests only)
|
|
17
|
+
- Lint and format clean (`ruff check cloud_dog_api_kit tests examples` + `ruff format --check cloud_dog_api_kit tests examples`)
|
|
18
|
+
- Build produces `cloud_dog_api_kit-0.2.0.tar.gz` + `cloud_dog_api_kit-0.2.0-py3-none-any.whl` via non-isolated build command
|
|
19
|
+
- All SA1 modules present including `examples/fastapi_app/`
|
|
20
|
+
- All 66 test directories present and matching TESTS.md (45 UT + 13 ST + 1 IT + 1 AT + 6 SEC)
|
|
21
|
+
- Zero config-delegation violations (no `os.environ`/`hvac`/Vault reads)
|
|
22
|
+
|
|
23
|
+
**Governing documents:**
|
|
24
|
+
1. `platform-api-kit/REQUIREMENTS.md` (v0.2.0) — FR18.1–FR18.9
|
|
25
|
+
2. `platform-api-kit/ARCHITECTURE.md` (v0.2.0) — SA1 module layout
|
|
26
|
+
3. `platform-api-kit/TESTS.md` (v0.2.0) — UT1.36–UT1.45, ST1.12–ST1.13, IT1.8, AT1.7
|
|
27
|
+
4. `packages/backend/AGENT-INSTRUCTION.md` — Integrity Warranty and Config Delegation — ZERO TOLERANCE (MANDATORY)
|
|
28
|
+
|
|
29
|
+
---
|
|
30
|
+
|
|
31
|
+
## Delivery Summary
|
|
32
|
+
|
|
33
|
+
### Issue 1 — MCP Transport Helpers ✅ DELIVERED
|
|
34
|
+
|
|
35
|
+
**FR:** FR18.1 | **Tests:** UT1.36, UT1.37
|
|
36
|
+
|
|
37
|
+
- `cloud_dog_api_kit/mcp/transport.py` (174 lines) — `register_mcp_routes(app, tools, transport_modes)` registering `POST /mcp`, `POST /messages`, `GET /mcp` (SSE); supports all 4 transport modes; JSON-RPC dispatch with `tools/list` and `tools/call`
|
|
38
|
+
- `cloud_dog_api_kit/mcp/tool_router.py` (143 lines) — `register_tool_router(app, tool_registry)` with `ToolContract` dataclass, `normalise_tool_registry()`, typed `GET/POST /mcp/tools` routes
|
|
39
|
+
- `cloud_dog_api_kit/mcp/error_mapper.py` (71 lines) — `map_legacy_mcp_payload()` translating legacy MCP payloads to standard envelopes
|
|
40
|
+
|
|
41
|
+
---
|
|
42
|
+
|
|
43
|
+
### Issue 2 — Startup Lifecycle Hooks ✅ DELIVERED
|
|
44
|
+
|
|
45
|
+
**FR:** FR18.2 | **Tests:** UT1.38, ST1.13
|
|
46
|
+
|
|
47
|
+
- `cloud_dog_api_kit/lifecycle/hooks.py` (62 lines) — `LifecycleHooks` dataclass with `on_pre_db`, `on_post_db`, `on_post_router`, `on_shutdown` callbacks
|
|
48
|
+
- `run_startup()` executes phases in deterministic order; `run_shutdown()` for cleanup
|
|
49
|
+
- Supports sync and async callbacks via `_run_callback()` helper
|
|
50
|
+
|
|
51
|
+
---
|
|
52
|
+
|
|
53
|
+
### Issue 3 — Compatibility Envelope Middleware ✅ DELIVERED
|
|
54
|
+
|
|
55
|
+
**FR:** FR18.3 | **Tests:** UT1.39, AT1.7
|
|
56
|
+
|
|
57
|
+
- `cloud_dog_api_kit/compat/envelope.py` (107 lines) — `LegacyEnvelopeMiddleware` with per-route opt-in via `@legacy_envelope_route` decorator, path set, or header (`X-Legacy-Envelope`)
|
|
58
|
+
- Wraps non-enveloped responses in standard `success_envelope`/`error_envelope`
|
|
59
|
+
- Already-enveloped responses pass through unchanged
|
|
60
|
+
|
|
61
|
+
---
|
|
62
|
+
|
|
63
|
+
### Issue 4 — Route Versioning Migration ✅ DELIVERED
|
|
64
|
+
|
|
65
|
+
**FR:** FR18.4 | **Tests:** UT1.40, AT1.7
|
|
66
|
+
|
|
67
|
+
- `cloud_dog_api_kit/compat/routes.py` (77 lines) — `LegacyRouteAdapter` with route map, `Deprecation`/`Sunset`/`Link` headers
|
|
68
|
+
- Configurable redirect vs. rewrite mode
|
|
69
|
+
- `LegacyRouteAdapterMiddleware` registered via `adapter.register(app)`
|
|
70
|
+
|
|
71
|
+
---
|
|
72
|
+
|
|
73
|
+
### Issue 5 — MCP Session Lifecycle ✅ DELIVERED
|
|
74
|
+
|
|
75
|
+
**FR:** FR18.5 | **Tests:** UT1.41, ST1.12
|
|
76
|
+
|
|
77
|
+
- `cloud_dog_api_kit/mcp/session.py` (83 lines) — `McpSessionManager` with `create()`, `resume()`, `ensure()`, `delete()`, `exists()`
|
|
78
|
+
- `Mcp-Session-Id` header constant; injectable clock for testing
|
|
79
|
+
- Thread-safe with `threading.Lock`
|
|
80
|
+
|
|
81
|
+
---
|
|
82
|
+
|
|
83
|
+
### Issue 6 — Profile Context Middleware ✅ DELIVERED
|
|
84
|
+
|
|
85
|
+
**FR:** FR18.6 | **Tests:** UT1.42
|
|
86
|
+
|
|
87
|
+
- `cloud_dog_api_kit/compat/profile.py` (89 lines) — `ProfileContextMiddleware` resolving profile from header (`X-Profile`) → path pattern → query param → default
|
|
88
|
+
- Sets `request.state.profile`; validates against `allowed_profiles` set; returns 400 envelope on invalid
|
|
89
|
+
|
|
90
|
+
---
|
|
91
|
+
|
|
92
|
+
### Issue 7 — Webhook Signature Verification ✅ DELIVERED
|
|
93
|
+
|
|
94
|
+
**FR:** FR18.7 | **Tests:** UT1.43
|
|
95
|
+
|
|
96
|
+
- `cloud_dog_api_kit/webhook/signature.py` (136 lines) — `WebhookSignatureMiddleware` with HMAC-SHA256 verification, timestamp tolerance (default 300s), `_ReplayCache` with TTL
|
|
97
|
+
- `compute_webhook_signature()` utility exported for client-side signing
|
|
98
|
+
- Protected paths configurable; injectable clock for tests
|
|
99
|
+
|
|
100
|
+
---
|
|
101
|
+
|
|
102
|
+
### Issue 8 — Request Size Limits ✅ DELIVERED
|
|
103
|
+
|
|
104
|
+
**FR:** FR18.8 | **Tests:** UT1.44
|
|
105
|
+
|
|
106
|
+
- `cloud_dog_api_kit/middleware/request_size_limit.py` (73 lines) — `RequestSizeLimitMiddleware` checking `Content-Length` header and actual body size
|
|
107
|
+
- Returns standard 413 error envelope with `max_bytes` details
|
|
108
|
+
|
|
109
|
+
---
|
|
110
|
+
|
|
111
|
+
### Issue 9 — Graceful Shutdown ✅ DELIVERED
|
|
112
|
+
|
|
113
|
+
**FR:** FR18.9 | **Tests:** UT1.45, ST1.13
|
|
114
|
+
|
|
115
|
+
- `cloud_dog_api_kit/lifecycle/shutdown.py` (165 lines) — `GracefulShutdownManager` tracking active requests with drain timeout
|
|
116
|
+
- `ShutdownDrainMiddleware` rejects new requests during shutdown (503 with retryable flag)
|
|
117
|
+
- `install_shutdown_signal_handlers()` for SIGTERM/SIGINT with asyncio integration
|
|
118
|
+
|
|
119
|
+
---
|
|
120
|
+
|
|
121
|
+
### Post-Delivery Stability Correction (2026-02-18) ✅ DELIVERED
|
|
122
|
+
|
|
123
|
+
**Scope:** pagination list path under middleware stack (`ST1.3`)
|
|
124
|
+
|
|
125
|
+
- Fixed list-route timeout regression in `cloud_dog_api_kit/routers/crud.py`
|
|
126
|
+
- Replaced `Depends(get_pagination)` on list route with direct validated query params and internal `get_pagination(...)` conversion
|
|
127
|
+
- Preserved external behaviour (`offset`, `limit`, `sort`, filters, envelope schema)
|
|
128
|
+
- Verification: `tests/system/ST1.3_PaginationEndToEnd` + full suite green (`231 passed`)
|
|
129
|
+
|
|
130
|
+
---
|
|
131
|
+
|
|
132
|
+
## Public API Exports
|
|
133
|
+
|
|
134
|
+
All new APIs exported from `cloud_dog_api_kit/__init__.py`:
|
|
135
|
+
- **MCP**: `register_mcp_routes`, `register_tool_router`, `ToolContract`, `McpSessionManager`, `map_legacy_mcp_payload`
|
|
136
|
+
- **Lifecycle**: `LifecycleHooks`, `GracefulShutdownManager`, `ShutdownDrainMiddleware`, `install_shutdown_signal_handlers`
|
|
137
|
+
- **Compat**: `LegacyEnvelopeMiddleware`, `legacy_envelope_route`, `LegacyRouteAdapter`, `LegacyRouteAdapterMiddleware`, `ProfileContextMiddleware`
|
|
138
|
+
- **Webhook**: `WebhookSignatureMiddleware`, `compute_webhook_signature`
|
|
139
|
+
- **Middleware**: `RequestSizeLimitMiddleware`
|
|
140
|
+
|
|
141
|
+
---
|
|
142
|
+
|
|
143
|
+
## SA1 Examples
|
|
144
|
+
|
|
145
|
+
`examples/fastapi_app/` now exists and provides a runnable minimal app showing `create_app()` + `create_crud_router()` best-practice usage.
|
|
146
|
+
|
|
147
|
+
---
|
|
148
|
+
|
|
149
|
+
## Verification — Full Suite
|
|
150
|
+
|
|
151
|
+
```bash
|
|
152
|
+
./.venv/bin/python -m pytest tests --env tests/env-IT -q
|
|
153
|
+
ruff check cloud_dog_api_kit tests examples
|
|
154
|
+
ruff format --check cloud_dog_api_kit tests examples
|
|
155
|
+
/opt/iac/Development/cloud-dog-ai/cloud-dog-ai-platform-standards/packages/backend/platform-config/.venv/bin/python -m build --no-isolation
|
|
156
|
+
find cloud_dog_api_kit examples -name '*.py' -not -path '*__pycache__*' | sort
|
|
157
|
+
```
|
|
158
|
+
|
|
159
|
+
## pyproject.toml version
|
|
160
|
+
|
|
161
|
+
```toml
|
|
162
|
+
version = "0.2.0"
|
|
163
|
+
```
|