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.
Files changed (209) hide show
  1. cloud_dog_api_kit-0.13.0/.gitignore +16 -0
  2. cloud_dog_api_kit-0.13.0/AGENT-INSTRUCTION-FIX-API-KIT.md +163 -0
  3. cloud_dog_api_kit-0.13.0/ARCHITECTURE.md +864 -0
  4. cloud_dog_api_kit-0.13.0/BUILD.md +74 -0
  5. cloud_dog_api_kit-0.13.0/CHANGELOG.md +15 -0
  6. cloud_dog_api_kit-0.13.0/LICENCE +190 -0
  7. cloud_dog_api_kit-0.13.0/LICENSE +176 -0
  8. cloud_dog_api_kit-0.13.0/NOTICE +7 -0
  9. cloud_dog_api_kit-0.13.0/PKG-INFO +27 -0
  10. cloud_dog_api_kit-0.13.0/README.md +142 -0
  11. cloud_dog_api_kit-0.13.0/REQUIREMENTS.md +727 -0
  12. cloud_dog_api_kit-0.13.0/TESTS.md +576 -0
  13. cloud_dog_api_kit-0.13.0/adoption_test.py +98 -0
  14. cloud_dog_api_kit-0.13.0/cloud_dog_api_kit/__init__.py +170 -0
  15. cloud_dog_api_kit-0.13.0/cloud_dog_api_kit/a2a/__init__.py +53 -0
  16. cloud_dog_api_kit-0.13.0/cloud_dog_api_kit/a2a/card.py +138 -0
  17. cloud_dog_api_kit-0.13.0/cloud_dog_api_kit/a2a/events.py +1123 -0
  18. cloud_dog_api_kit-0.13.0/cloud_dog_api_kit/a2a/gateway.py +105 -0
  19. cloud_dog_api_kit-0.13.0/cloud_dog_api_kit/a2a/skill_audit.py +107 -0
  20. cloud_dog_api_kit-0.13.0/cloud_dog_api_kit/auth/__init__.py +35 -0
  21. cloud_dog_api_kit-0.13.0/cloud_dog_api_kit/auth/dependency.py +121 -0
  22. cloud_dog_api_kit-0.13.0/cloud_dog_api_kit/auth/rbac.py +107 -0
  23. cloud_dog_api_kit-0.13.0/cloud_dog_api_kit/auth/service_auth.py +54 -0
  24. cloud_dog_api_kit-0.13.0/cloud_dog_api_kit/clients/__init__.py +29 -0
  25. cloud_dog_api_kit-0.13.0/cloud_dog_api_kit/clients/circuit_breaker.py +39 -0
  26. cloud_dog_api_kit-0.13.0/cloud_dog_api_kit/clients/http_client.py +127 -0
  27. cloud_dog_api_kit-0.13.0/cloud_dog_api_kit/clients/retry.py +83 -0
  28. cloud_dog_api_kit-0.13.0/cloud_dog_api_kit/compat/__init__.py +37 -0
  29. cloud_dog_api_kit-0.13.0/cloud_dog_api_kit/compat/envelope.py +120 -0
  30. cloud_dog_api_kit-0.13.0/cloud_dog_api_kit/compat/profile.py +102 -0
  31. cloud_dog_api_kit-0.13.0/cloud_dog_api_kit/compat/routes.py +90 -0
  32. cloud_dog_api_kit-0.13.0/cloud_dog_api_kit/config.py +54 -0
  33. cloud_dog_api_kit-0.13.0/cloud_dog_api_kit/correlation/__init__.py +50 -0
  34. cloud_dog_api_kit-0.13.0/cloud_dog_api_kit/correlation/context.py +118 -0
  35. cloud_dog_api_kit-0.13.0/cloud_dog_api_kit/correlation/middleware.py +133 -0
  36. cloud_dog_api_kit-0.13.0/cloud_dog_api_kit/envelopes/__init__.py +37 -0
  37. cloud_dog_api_kit-0.13.0/cloud_dog_api_kit/envelopes/error.py +87 -0
  38. cloud_dog_api_kit-0.13.0/cloud_dog_api_kit/envelopes/success.py +84 -0
  39. cloud_dog_api_kit-0.13.0/cloud_dog_api_kit/errors/__init__.py +51 -0
  40. cloud_dog_api_kit-0.13.0/cloud_dog_api_kit/errors/exceptions.py +184 -0
  41. cloud_dog_api_kit-0.13.0/cloud_dog_api_kit/errors/handler.py +102 -0
  42. cloud_dog_api_kit-0.13.0/cloud_dog_api_kit/errors/taxonomy.py +62 -0
  43. cloud_dog_api_kit-0.13.0/cloud_dog_api_kit/factory.py +157 -0
  44. cloud_dog_api_kit-0.13.0/cloud_dog_api_kit/idempotency/__init__.py +28 -0
  45. cloud_dog_api_kit-0.13.0/cloud_dog_api_kit/idempotency/middleware.py +118 -0
  46. cloud_dog_api_kit-0.13.0/cloud_dog_api_kit/idempotency/store.py +100 -0
  47. cloud_dog_api_kit-0.13.0/cloud_dog_api_kit/lifecycle/__init__.py +39 -0
  48. cloud_dog_api_kit-0.13.0/cloud_dog_api_kit/lifecycle/hooks.py +75 -0
  49. cloud_dog_api_kit-0.13.0/cloud_dog_api_kit/lifecycle/shutdown.py +178 -0
  50. cloud_dog_api_kit-0.13.0/cloud_dog_api_kit/mcp/__init__.py +122 -0
  51. cloud_dog_api_kit-0.13.0/cloud_dog_api_kit/mcp/async_jobs.py +126 -0
  52. cloud_dog_api_kit-0.13.0/cloud_dog_api_kit/mcp/client_sdk.py +235 -0
  53. cloud_dog_api_kit-0.13.0/cloud_dog_api_kit/mcp/client_transport/__init__.py +47 -0
  54. cloud_dog_api_kit-0.13.0/cloud_dog_api_kit/mcp/client_transport/base.py +98 -0
  55. cloud_dog_api_kit-0.13.0/cloud_dog_api_kit/mcp/client_transport/exceptions.py +37 -0
  56. cloud_dog_api_kit-0.13.0/cloud_dog_api_kit/mcp/client_transport/http_jsonrpc.py +405 -0
  57. cloud_dog_api_kit-0.13.0/cloud_dog_api_kit/mcp/client_transport/legacy_sse.py +320 -0
  58. cloud_dog_api_kit-0.13.0/cloud_dog_api_kit/mcp/client_transport/stdio.py +322 -0
  59. cloud_dog_api_kit-0.13.0/cloud_dog_api_kit/mcp/client_transport/streamable_http.py +748 -0
  60. cloud_dog_api_kit-0.13.0/cloud_dog_api_kit/mcp/contract.py +113 -0
  61. cloud_dog_api_kit-0.13.0/cloud_dog_api_kit/mcp/error_mapper.py +84 -0
  62. cloud_dog_api_kit-0.13.0/cloud_dog_api_kit/mcp/gateway.py +117 -0
  63. cloud_dog_api_kit-0.13.0/cloud_dog_api_kit/mcp/legacy_sse.py +129 -0
  64. cloud_dog_api_kit-0.13.0/cloud_dog_api_kit/mcp/session.py +96 -0
  65. cloud_dog_api_kit-0.13.0/cloud_dog_api_kit/mcp/sync_handler.py +269 -0
  66. cloud_dog_api_kit-0.13.0/cloud_dog_api_kit/mcp/tool_audit.py +136 -0
  67. cloud_dog_api_kit-0.13.0/cloud_dog_api_kit/mcp/tool_router.py +180 -0
  68. cloud_dog_api_kit-0.13.0/cloud_dog_api_kit/mcp/transport.py +1041 -0
  69. cloud_dog_api_kit-0.13.0/cloud_dog_api_kit/middleware/__init__.py +39 -0
  70. cloud_dog_api_kit-0.13.0/cloud_dog_api_kit/middleware/cors.py +74 -0
  71. cloud_dog_api_kit-0.13.0/cloud_dog_api_kit/middleware/logging.py +98 -0
  72. cloud_dog_api_kit-0.13.0/cloud_dog_api_kit/middleware/request_size_limit.py +86 -0
  73. cloud_dog_api_kit-0.13.0/cloud_dog_api_kit/middleware/timeout.py +78 -0
  74. cloud_dog_api_kit-0.13.0/cloud_dog_api_kit/middleware/timing.py +52 -0
  75. cloud_dog_api_kit-0.13.0/cloud_dog_api_kit/openapi/__init__.py +30 -0
  76. cloud_dog_api_kit-0.13.0/cloud_dog_api_kit/openapi/customise.py +69 -0
  77. cloud_dog_api_kit-0.13.0/cloud_dog_api_kit/openapi/route.py +46 -0
  78. cloud_dog_api_kit-0.13.0/cloud_dog_api_kit/routers/__init__.py +41 -0
  79. cloud_dog_api_kit-0.13.0/cloud_dog_api_kit/routers/crud.py +173 -0
  80. cloud_dog_api_kit-0.13.0/cloud_dog_api_kit/routers/health.py +160 -0
  81. cloud_dog_api_kit-0.13.0/cloud_dog_api_kit/routers/jobs.py +69 -0
  82. cloud_dog_api_kit-0.13.0/cloud_dog_api_kit/routers/version.py +46 -0
  83. cloud_dog_api_kit-0.13.0/cloud_dog_api_kit/schemas/__init__.py +36 -0
  84. cloud_dog_api_kit-0.13.0/cloud_dog_api_kit/schemas/envelopes.py +37 -0
  85. cloud_dog_api_kit-0.13.0/cloud_dog_api_kit/schemas/filters.py +103 -0
  86. cloud_dog_api_kit-0.13.0/cloud_dog_api_kit/schemas/pagination.py +148 -0
  87. cloud_dog_api_kit-0.13.0/cloud_dog_api_kit/streaming/__init__.py +28 -0
  88. cloud_dog_api_kit-0.13.0/cloud_dog_api_kit/streaming/events.py +47 -0
  89. cloud_dog_api_kit-0.13.0/cloud_dog_api_kit/streaming/jsonl.py +68 -0
  90. cloud_dog_api_kit-0.13.0/cloud_dog_api_kit/streaming/sse.py +102 -0
  91. cloud_dog_api_kit-0.13.0/cloud_dog_api_kit/testing/__init__.py +46 -0
  92. cloud_dog_api_kit-0.13.0/cloud_dog_api_kit/testing/conformance.py +156 -0
  93. cloud_dog_api_kit-0.13.0/cloud_dog_api_kit/testing/fixtures.py +90 -0
  94. cloud_dog_api_kit-0.13.0/cloud_dog_api_kit/testing/flows/__init__.py +32 -0
  95. cloud_dog_api_kit-0.13.0/cloud_dog_api_kit/testing/flows/auth_flow.py +41 -0
  96. cloud_dog_api_kit-0.13.0/cloud_dog_api_kit/testing/flows/crud_flow.py +50 -0
  97. cloud_dog_api_kit-0.13.0/cloud_dog_api_kit/testing/flows/job_flow.py +42 -0
  98. cloud_dog_api_kit-0.13.0/cloud_dog_api_kit/testing/flows/streaming_flow.py +42 -0
  99. cloud_dog_api_kit-0.13.0/cloud_dog_api_kit/traceability_ids.py +84 -0
  100. cloud_dog_api_kit-0.13.0/cloud_dog_api_kit/versioning/__init__.py +30 -0
  101. cloud_dog_api_kit-0.13.0/cloud_dog_api_kit/versioning/header.py +52 -0
  102. cloud_dog_api_kit-0.13.0/cloud_dog_api_kit/web/__init__.py +7 -0
  103. cloud_dog_api_kit-0.13.0/cloud_dog_api_kit/web/proxy.py +222 -0
  104. cloud_dog_api_kit-0.13.0/cloud_dog_api_kit/webhook/__init__.py +29 -0
  105. cloud_dog_api_kit-0.13.0/cloud_dog_api_kit/webhook/signature.py +149 -0
  106. cloud_dog_api_kit-0.13.0/docs/ARCHITECTURE.md +17 -0
  107. cloud_dog_api_kit-0.13.0/docs/CONFIGURATION.md +11 -0
  108. cloud_dog_api_kit-0.13.0/docs/EXAMPLES.md +13 -0
  109. cloud_dog_api_kit-0.13.0/examples/__init__.py +15 -0
  110. cloud_dog_api_kit-0.13.0/examples/fastapi_app/README.md +22 -0
  111. cloud_dog_api_kit-0.13.0/examples/fastapi_app/__init__.py +15 -0
  112. cloud_dog_api_kit-0.13.0/examples/fastapi_app/app.py +76 -0
  113. cloud_dog_api_kit-0.13.0/pyproject.toml +37 -0
  114. cloud_dog_api_kit-0.13.0/tests/__init__.py +13 -0
  115. cloud_dog_api_kit-0.13.0/tests/application/AT1.7_MigrationPatternLegacyToVersioned/test_migration_pattern.py +56 -0
  116. cloud_dog_api_kit-0.13.0/tests/conftest.py +158 -0
  117. cloud_dog_api_kit-0.13.0/tests/env-AT +7 -0
  118. cloud_dog_api_kit-0.13.0/tests/env-IT +9 -0
  119. cloud_dog_api_kit-0.13.0/tests/env-ST +7 -0
  120. cloud_dog_api_kit-0.13.0/tests/env-UT +7 -0
  121. cloud_dog_api_kit-0.13.0/tests/integration/IT1.8_MCPGatewayIntegration/test_mcp_gateway_integration.py +532 -0
  122. cloud_dog_api_kit-0.13.0/tests/integration/IT1.9_MCPClientTransports/test_mcp_client_transports.py +284 -0
  123. cloud_dog_api_kit-0.13.0/tests/integration/IT1_10_A2AEventsCommonPackage/__init__.py +0 -0
  124. cloud_dog_api_kit-0.13.0/tests/integration/IT1_10_A2AEventsCommonPackage/test_a2a_events_common_package.py +447 -0
  125. cloud_dog_api_kit-0.13.0/tests/quality/QT_PUBLISH_COMPLIANCE/__init__.py +2 -0
  126. cloud_dog_api_kit-0.13.0/tests/quality/QT_PUBLISH_COMPLIANCE/test_publish_compliance.py +58 -0
  127. cloud_dog_api_kit-0.13.0/tests/quality/__init__.py +2 -0
  128. cloud_dog_api_kit-0.13.0/tests/security/SEC1.1_AuthEnforcement/test_auth_enforcement.py +67 -0
  129. cloud_dog_api_kit-0.13.0/tests/security/SEC1.2_RBACEnforcement/test_rbac_enforcement.py +78 -0
  130. cloud_dog_api_kit-0.13.0/tests/security/SEC1.3_TenantIsolation/test_tenant_sec.py +64 -0
  131. cloud_dog_api_kit-0.13.0/tests/security/SEC1.4_InputValidation/test_input_validation.py +73 -0
  132. cloud_dog_api_kit-0.13.0/tests/security/SEC1.5_SecretRedaction/test_secret_redaction.py +62 -0
  133. cloud_dog_api_kit-0.13.0/tests/security/SEC1.6_ErrorSanitisation/test_error_sanitisation.py +54 -0
  134. cloud_dog_api_kit-0.13.0/tests/system/ST1.10_IdempotencyEndToEnd/test_idempotency_e2e.py +43 -0
  135. cloud_dog_api_kit-0.13.0/tests/system/ST1.11_HTTPClientEndToEnd/test_http_client_e2e.py +39 -0
  136. cloud_dog_api_kit-0.13.0/tests/system/ST1.12_MCPFullTransportFlow/test_mcp_transport_flow.py +66 -0
  137. cloud_dog_api_kit-0.13.0/tests/system/ST1.13_StartupLifecycleIntegration/test_startup_lifecycle_integration.py +74 -0
  138. cloud_dog_api_kit-0.13.0/tests/system/ST1.1_FullMiddlewareStack/test_full_stack.py +59 -0
  139. cloud_dog_api_kit-0.13.0/tests/system/ST1.2_ErrorFlowEndToEnd/test_error_flow.py +86 -0
  140. cloud_dog_api_kit-0.13.0/tests/system/ST1.3_PaginationEndToEnd/test_pagination_e2e.py +57 -0
  141. cloud_dog_api_kit-0.13.0/tests/system/ST1.4_AuthEndToEnd/test_auth_e2e.py +56 -0
  142. cloud_dog_api_kit-0.13.0/tests/system/ST1.5_HealthStatusEndToEnd/test_health_e2e.py +42 -0
  143. cloud_dog_api_kit-0.13.0/tests/system/ST1.6_AppFactory/test_app_factory.py +68 -0
  144. cloud_dog_api_kit-0.13.0/tests/system/ST1.7_CRUDFlowEndToEnd/test_crud_e2e.py +78 -0
  145. cloud_dog_api_kit-0.13.0/tests/system/ST1.8_JobFlowEndToEnd/test_job_e2e.py +39 -0
  146. cloud_dog_api_kit-0.13.0/tests/system/ST1.9_StreamingEndToEnd/test_streaming_e2e.py +60 -0
  147. cloud_dog_api_kit-0.13.0/tests/test_traceability_ids.py +29 -0
  148. cloud_dog_api_kit-0.13.0/tests/unit/UT1.10_ServiceAuth/test_service_auth.py +60 -0
  149. cloud_dog_api_kit-0.13.0/tests/unit/UT1.11_CorrelationContext/test_correlation_context.py +73 -0
  150. cloud_dog_api_kit-0.13.0/tests/unit/UT1.12_CorrelationMiddleware/test_correlation_middleware.py +80 -0
  151. cloud_dog_api_kit-0.13.0/tests/unit/UT1.13_PaginationModels/test_pagination_models.py +48 -0
  152. cloud_dog_api_kit-0.13.0/tests/unit/UT1.14_PaginationDependency/test_pagination_dep.py +34 -0
  153. cloud_dog_api_kit-0.13.0/tests/unit/UT1.15_FilterHelpers/test_filters.py +52 -0
  154. cloud_dog_api_kit-0.13.0/tests/unit/UT1.16_CRUDRouter/test_crud_router.py +97 -0
  155. cloud_dog_api_kit-0.13.0/tests/unit/UT1.17_HealthRouter/test_health_router.py +81 -0
  156. cloud_dog_api_kit-0.13.0/tests/unit/UT1.18_ReadyLiveEndpoints/test_ready_live.py +40 -0
  157. cloud_dog_api_kit-0.13.0/tests/unit/UT1.19_JobRouter/test_job_router.py +40 -0
  158. cloud_dog_api_kit-0.13.0/tests/unit/UT1.1_SuccessEnvelope/test_success_envelope.py +53 -0
  159. cloud_dog_api_kit-0.13.0/tests/unit/UT1.20_SSEStreaming/test_sse.py +51 -0
  160. cloud_dog_api_kit-0.13.0/tests/unit/UT1.21_JSONLStreaming/test_jsonl.py +32 -0
  161. cloud_dog_api_kit-0.13.0/tests/unit/UT1.22_SSEEventModel/test_sse_event.py +48 -0
  162. cloud_dog_api_kit-0.13.0/tests/unit/UT1.23_HTTPClient/test_http_client.py +46 -0
  163. cloud_dog_api_kit-0.13.0/tests/unit/UT1.24_RetryPolicy/test_retry_policy.py +52 -0
  164. cloud_dog_api_kit-0.13.0/tests/unit/UT1.25_CORSHelper/test_cors.py +61 -0
  165. cloud_dog_api_kit-0.13.0/tests/unit/UT1.26_RequestLogging/test_request_logging.py +52 -0
  166. cloud_dog_api_kit-0.13.0/tests/unit/UT1.27_TimeoutMiddleware/test_timeout.py +57 -0
  167. cloud_dog_api_kit-0.13.0/tests/unit/UT1.28_IdempotencyMiddleware/test_idempotency.py +77 -0
  168. cloud_dog_api_kit-0.13.0/tests/unit/UT1.29_IdempotencyStore/test_idem_store.py +48 -0
  169. cloud_dog_api_kit-0.13.0/tests/unit/UT1.2_ErrorEnvelope/test_error_envelope.py +54 -0
  170. cloud_dog_api_kit-0.13.0/tests/unit/UT1.30_VersionHeader/test_version_header.py +48 -0
  171. cloud_dog_api_kit-0.13.0/tests/unit/UT1.31_OpenAPICustomise/test_openapi.py +40 -0
  172. cloud_dog_api_kit-0.13.0/tests/unit/UT1.32_MCPGateway/test_mcp_gateway.py +68 -0
  173. cloud_dog_api_kit-0.13.0/tests/unit/UT1.33_A2AGateway/test_a2a_gateway.py +39 -0
  174. cloud_dog_api_kit-0.13.0/tests/unit/UT1.34_TestFixtures/test_fixtures.py +73 -0
  175. cloud_dog_api_kit-0.13.0/tests/unit/UT1.35_ConformanceValidators/test_conformance.py +72 -0
  176. cloud_dog_api_kit-0.13.0/tests/unit/UT1.36_MCPTransportHelpers/test_mcp_transport.py +2295 -0
  177. cloud_dog_api_kit-0.13.0/tests/unit/UT1.37_MCPClientTransports/test_base.py +93 -0
  178. cloud_dog_api_kit-0.13.0/tests/unit/UT1.37_MCPClientTransports/test_http_jsonrpc.py +269 -0
  179. cloud_dog_api_kit-0.13.0/tests/unit/UT1.37_MCPClientTransports/test_legacy_sse.py +101 -0
  180. cloud_dog_api_kit-0.13.0/tests/unit/UT1.37_MCPClientTransports/test_stdio.py +109 -0
  181. cloud_dog_api_kit-0.13.0/tests/unit/UT1.37_MCPClientTransports/test_streamable_http.py +111 -0
  182. cloud_dog_api_kit-0.13.0/tests/unit/UT1.37_MCPToolRouter/test_mcp_tool_router.py +73 -0
  183. cloud_dog_api_kit-0.13.0/tests/unit/UT1.38_StartupLifecycleHooks/test_lifecycle_hooks.py +66 -0
  184. cloud_dog_api_kit-0.13.0/tests/unit/UT1.39_LegacyEnvelopeMiddleware/test_legacy_envelope.py +78 -0
  185. cloud_dog_api_kit-0.13.0/tests/unit/UT1.3_ErrorTaxonomy/test_error_taxonomy.py +102 -0
  186. cloud_dog_api_kit-0.13.0/tests/unit/UT1.40_LegacyRouteAdapter/test_legacy_route_adapter.py +63 -0
  187. cloud_dog_api_kit-0.13.0/tests/unit/UT1.41_MCPSessionLifecycle/test_mcp_session.py +36 -0
  188. cloud_dog_api_kit-0.13.0/tests/unit/UT1.42_ProfileContextMiddleware/test_profile_context.py +65 -0
  189. cloud_dog_api_kit-0.13.0/tests/unit/UT1.43_WebhookSignatureVerification/test_webhook_signature.py +102 -0
  190. cloud_dog_api_kit-0.13.0/tests/unit/UT1.44_RequestSizeLimit/test_request_size_limit.py +57 -0
  191. cloud_dog_api_kit-0.13.0/tests/unit/UT1.45_GracefulShutdown/test_graceful_shutdown.py +67 -0
  192. cloud_dog_api_kit-0.13.0/tests/unit/UT1.46_MCPContractRegistration/test_mcp_contract_registration.py +65 -0
  193. cloud_dog_api_kit-0.13.0/tests/unit/UT1.47_WebApiProxyHeaders/test_web_proxy_headers.py +75 -0
  194. cloud_dog_api_kit-0.13.0/tests/unit/UT1.4_ErrorExceptions/test_error_exceptions.py +94 -0
  195. cloud_dog_api_kit-0.13.0/tests/unit/UT1.5_ErrorHandler/test_error_handler.py +78 -0
  196. cloud_dog_api_kit-0.13.0/tests/unit/UT1.6_AuthDependency/test_auth_dependency.py +88 -0
  197. cloud_dog_api_kit-0.13.0/tests/unit/UT1.7_BearerAuth/test_bearer_auth.py +69 -0
  198. cloud_dog_api_kit-0.13.0/tests/unit/UT1.8_RBACHelpers/test_rbac.py +93 -0
  199. cloud_dog_api_kit-0.13.0/tests/unit/UT1.9_TenantIsolation/test_tenant.py +85 -0
  200. cloud_dog_api_kit-0.13.0/tests/unit/UT_A2AEvents/test_a2a_events.py +448 -0
  201. cloud_dog_api_kit-0.13.0/tests/unit/UT_A2AEvents/test_http_ingest_adapter.py +282 -0
  202. cloud_dog_api_kit-0.13.0/tests/unit/UT_A2AEvents/test_persistent_event_broadcaster.py +239 -0
  203. cloud_dog_api_kit-0.13.0/tests/unit/UT_A2AEvents/test_rest_poll_adapter.py +394 -0
  204. cloud_dog_api_kit-0.13.0/tests/unit/UT_A2AEvents/test_websocket_adapter.py +189 -0
  205. cloud_dog_api_kit-0.13.0/tests/unit/UT_A2aSkillAudit/test_a2a_skill_audit.py +65 -0
  206. cloud_dog_api_kit-0.13.0/tests/unit/UT_B5A_SyncClass/__init__.py +0 -0
  207. cloud_dog_api_kit-0.13.0/tests/unit/UT_B5A_SyncClass/test_sync_class.py +423 -0
  208. cloud_dog_api_kit-0.13.0/tests/unit/UT_B5B_ClientSDK/test_client_sdk.py +200 -0
  209. cloud_dog_api_kit-0.13.0/tests/unit/UT_McpToolAudit/test_mcp_tool_audit.py +81 -0
@@ -0,0 +1,16 @@
1
+ .venv/
2
+ __pycache__/
3
+ *.pyc
4
+ *.egg-info/
5
+ dist/
6
+ build/
7
+ .pytest_cache/
8
+ .ruff_cache/
9
+ .coverage
10
+ coverage.xml
11
+ htmlcov/
12
+ working/
13
+ private/
14
+ archive/
15
+ logs/
16
+ *.db
@@ -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
+ ```