donkey-kit 0.1.3__tar.gz → 0.2.1__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 (1111) hide show
  1. donkey_kit-0.2.1/.gitignore +72 -0
  2. donkey_kit-0.2.1/PKG-INFO +316 -0
  3. donkey_kit-0.2.1/README.md +231 -0
  4. donkey_kit-0.2.1/dependency_allowlist.toml +206 -0
  5. donkey_kit-0.2.1/examples/adk/README.md +87 -0
  6. donkey_kit-0.2.1/examples/adk/main.py +126 -0
  7. donkey_kit-0.2.1/examples/openai_agents/README.md +124 -0
  8. donkey_kit-0.2.1/examples/openai_agents/collector.py +116 -0
  9. donkey_kit-0.2.1/examples/openai_agents/main.py +276 -0
  10. donkey_kit-0.2.1/pyproject.toml +790 -0
  11. donkey_kit-0.2.1/scripts/capture_descriptor_fixtures.py +277 -0
  12. donkey_kit-0.2.1/scripts/capture_fixture.py +285 -0
  13. donkey_kit-0.2.1/scripts/check_doc_badges.py +292 -0
  14. donkey_kit-0.2.1/scripts/check_docs_sync.py +200 -0
  15. donkey_kit-0.2.1/scripts/check_verification_claims.py +80 -0
  16. donkey_kit-0.2.1/scripts/compile_constraints.py +409 -0
  17. donkey_kit-0.2.1/scripts/generate_docs.py +1695 -0
  18. donkey_kit-0.2.1/scripts/mcp_binding/README.md +126 -0
  19. donkey_kit-0.2.1/scripts/mcp_binding/_harness.py +180 -0
  20. donkey_kit-0.2.1/scripts/mcp_binding/bind_live.py +104 -0
  21. donkey_kit-0.2.1/scripts/mcp_binding/bind_toolset.py +324 -0
  22. donkey_kit-0.2.1/scripts/mcp_binding/probe_adk.py +157 -0
  23. donkey_kit-0.2.1/scripts/mcp_binding/probe_agent_framework.py +101 -0
  24. donkey_kit-0.2.1/scripts/mcp_binding/probe_anthropic.py +131 -0
  25. donkey_kit-0.2.1/scripts/mcp_binding/probe_ciba.py +70 -0
  26. donkey_kit-0.2.1/scripts/mcp_binding/probe_crewai.py +83 -0
  27. donkey_kit-0.2.1/scripts/mcp_binding/probe_denial.py +275 -0
  28. donkey_kit-0.2.1/scripts/mcp_binding/probe_langgraph.py +109 -0
  29. donkey_kit-0.2.1/scripts/mcp_binding/probe_llamaindex.py +100 -0
  30. donkey_kit-0.2.1/scripts/mcp_binding/probe_mcp_sdk.py +83 -0
  31. donkey_kit-0.2.1/scripts/mcp_binding/probe_openai_agents.py +113 -0
  32. donkey_kit-0.2.1/scripts/mcp_binding/probe_strands.py +104 -0
  33. donkey_kit-0.2.1/scripts/mcp_binding/server.py +317 -0
  34. donkey_kit-0.2.1/scripts/verify_frameworks.py +604 -0
  35. donkey_kit-0.2.1/src/donkey_kit/__init__.py +297 -0
  36. donkey_kit-0.2.1/src/donkey_kit/_testing.py +125 -0
  37. donkey_kit-0.2.1/src/donkey_kit/a2a/__init__.py +22 -0
  38. donkey_kit-0.2.1/src/donkey_kit/a2a/_server.py +416 -0
  39. donkey_kit-0.2.1/src/donkey_kit/a2a/client.py +462 -0
  40. donkey_kit-0.2.1/src/donkey_kit/a2a/protocol.py +30 -0
  41. donkey_kit-0.2.1/src/donkey_kit/a2a/types.py +54 -0
  42. donkey_kit-0.2.1/src/donkey_kit/cli/__init__.py +40 -0
  43. donkey_kit-0.2.1/src/donkey_kit/cli/_app.py +99 -0
  44. donkey_kit-0.2.1/src/donkey_kit/cli/_blocked.py +37 -0
  45. donkey_kit-0.2.1/src/donkey_kit/cli/_common.py +46 -0
  46. donkey_kit-0.2.1/src/donkey_kit/cli/dev.py +154 -0
  47. donkey_kit-0.2.1/src/donkey_kit/cli/doctor.py +537 -0
  48. donkey_kit-0.2.1/src/donkey_kit/cli/expose.py +240 -0
  49. donkey_kit-0.2.1/src/donkey_kit/cli/init.py +159 -0
  50. donkey_kit-0.2.1/src/donkey_kit/cli/mock.py +67 -0
  51. donkey_kit-0.2.1/src/donkey_kit/cli/publish.py +184 -0
  52. donkey_kit-0.2.1/src/donkey_kit/cli/scan.py +78 -0
  53. donkey_kit-0.2.1/src/donkey_kit/cli/test.py +49 -0
  54. donkey_kit-0.2.1/src/donkey_kit/cli/verify.py +185 -0
  55. donkey_kit-0.2.1/src/donkey_kit/conformance/__init__.py +88 -0
  56. donkey_kit-0.2.1/src/donkey_kit/conformance/gateway.py +256 -0
  57. donkey_kit-0.2.1/src/donkey_kit/conformance/harness.py +620 -0
  58. donkey_kit-0.2.1/src/donkey_kit/conformance/plugin.py +393 -0
  59. donkey_kit-0.2.1/src/donkey_kit/conformance/suite.py +319 -0
  60. donkey_kit-0.2.1/src/donkey_kit/core/__init__.py +136 -0
  61. donkey_kit-0.2.1/src/donkey_kit/core/_budget_headers.py +109 -0
  62. donkey_kit-0.2.1/src/donkey_kit/core/_policy_sample.py +95 -0
  63. donkey_kit-0.2.1/src/donkey_kit/core/_policy_spec.py +472 -0
  64. donkey_kit-0.2.1/src/donkey_kit/core/_refusal_body.py +323 -0
  65. donkey_kit-0.2.1/src/donkey_kit/core/_scope_entry.py +63 -0
  66. donkey_kit-0.2.1/src/donkey_kit/core/_tool_access.py +104 -0
  67. donkey_kit-0.2.1/src/donkey_kit/core/_verify.py +236 -0
  68. donkey_kit-0.2.1/src/donkey_kit/core/_window.py +93 -0
  69. donkey_kit-0.2.1/src/donkey_kit/core/_wire.py +140 -0
  70. donkey_kit-0.2.1/src/donkey_kit/core/approval_types.py +289 -0
  71. donkey_kit-0.2.1/src/donkey_kit/core/approvals.py +500 -0
  72. donkey_kit-0.2.1/src/donkey_kit/core/auth.py +324 -0
  73. donkey_kit-0.2.1/src/donkey_kit/core/budget.py +494 -0
  74. donkey_kit-0.2.1/src/donkey_kit/core/cachecontrol.py +211 -0
  75. donkey_kit-0.2.1/src/donkey_kit/core/classifier.py +230 -0
  76. donkey_kit-0.2.1/src/donkey_kit/core/config.py +1097 -0
  77. donkey_kit-0.2.1/src/donkey_kit/core/correlation.py +402 -0
  78. donkey_kit-0.2.1/src/donkey_kit/core/cost.py +143 -0
  79. donkey_kit-0.2.1/src/donkey_kit/core/endpoints.py +125 -0
  80. donkey_kit-0.2.1/src/donkey_kit/core/errors.py +1030 -0
  81. donkey_kit-0.2.1/src/donkey_kit/core/header_names.py +178 -0
  82. donkey_kit-0.2.1/src/donkey_kit/core/identity.py +298 -0
  83. donkey_kit-0.2.1/src/donkey_kit/core/inbound.py +312 -0
  84. donkey_kit-0.2.1/src/donkey_kit/core/jsonrpc_refusals.py +405 -0
  85. donkey_kit-0.2.1/src/donkey_kit/core/lastcall.py +828 -0
  86. donkey_kit-0.2.1/src/donkey_kit/core/masking.py +108 -0
  87. donkey_kit-0.2.1/src/donkey_kit/core/reactions.py +459 -0
  88. donkey_kit-0.2.1/src/donkey_kit/core/refusals.py +486 -0
  89. donkey_kit-0.2.1/src/donkey_kit/core/runledger.py +313 -0
  90. donkey_kit-0.2.1/src/donkey_kit/core/runtime.py +259 -0
  91. donkey_kit-0.2.1/src/donkey_kit/core/spanflush.py +82 -0
  92. donkey_kit-0.2.1/src/donkey_kit/core/step_up.py +206 -0
  93. donkey_kit-0.2.1/src/donkey_kit/core/telemetry.py +629 -0
  94. donkey_kit-0.2.1/src/donkey_kit/core/tool_access.py +25 -0
  95. donkey_kit-0.2.1/src/donkey_kit/core/toolspec.py +231 -0
  96. donkey_kit-0.2.1/src/donkey_kit/core/transport/__init__.py +103 -0
  97. donkey_kit-0.2.1/src/donkey_kit/core/transport/async_client.py +463 -0
  98. donkey_kit-0.2.1/src/donkey_kit/core/transport/governed.py +270 -0
  99. donkey_kit-0.2.1/src/donkey_kit/core/transport/headers.py +499 -0
  100. donkey_kit-0.2.1/src/donkey_kit/core/transport/httpx2.py +296 -0
  101. donkey_kit-0.2.1/src/donkey_kit/core/transport/observe.py +172 -0
  102. donkey_kit-0.2.1/src/donkey_kit/core/transport/pipeline.py +273 -0
  103. donkey_kit-0.2.1/src/donkey_kit/core/transport/policy.py +271 -0
  104. donkey_kit-0.2.1/src/donkey_kit/core/transport/streaming.py +273 -0
  105. donkey_kit-0.2.1/src/donkey_kit/core/transport/sync_client.py +297 -0
  106. donkey_kit-0.2.1/src/donkey_kit/core/transport/views.py +235 -0
  107. donkey_kit-0.2.1/src/donkey_kit/donkey.py +1693 -0
  108. donkey_kit-0.2.1/src/donkey_kit/experimental.py +84 -0
  109. donkey_kit-0.2.1/src/donkey_kit/integrations/__init__.py +265 -0
  110. donkey_kit-0.2.1/src/donkey_kit/integrations/adk.py +838 -0
  111. donkey_kit-0.2.1/src/donkey_kit/integrations/agent_framework.py +274 -0
  112. donkey_kit-0.2.1/src/donkey_kit/integrations/crewai.py +215 -0
  113. donkey_kit-0.2.1/src/donkey_kit/integrations/langgraph.py +435 -0
  114. donkey_kit-0.2.1/src/donkey_kit/integrations/openai_agents.py +605 -0
  115. donkey_kit-0.2.1/src/donkey_kit/integrations/strands.py +535 -0
  116. donkey_kit-0.2.1/src/donkey_kit/llm/catalog.py +70 -0
  117. donkey_kit-0.2.1/src/donkey_kit/registry/__init__.py +35 -0
  118. donkey_kit-0.2.1/src/donkey_kit/registry/_scopes.py +45 -0
  119. donkey_kit-0.2.1/src/donkey_kit/registry/criteria.py +81 -0
  120. donkey_kit-0.2.1/src/donkey_kit/registry/exchange.py +822 -0
  121. donkey_kit-0.2.1/src/donkey_kit/registry/exchange_page.py +188 -0
  122. donkey_kit-0.2.1/src/donkey_kit/registry/exchange_publish.py +876 -0
  123. donkey_kit-0.2.1/src/donkey_kit/registry/expose.py +640 -0
  124. donkey_kit-0.2.1/src/donkey_kit/registry/expose_plan.py +330 -0
  125. donkey_kit-0.2.1/src/donkey_kit/registry/introspect.py +323 -0
  126. donkey_kit-0.2.1/src/donkey_kit/registry/models.py +103 -0
  127. donkey_kit-0.2.1/src/donkey_kit/registry/publication.py +379 -0
  128. donkey_kit-0.2.1/src/donkey_kit/registry/publish_plan.py +495 -0
  129. donkey_kit-0.2.1/src/donkey_kit/registry/scan.py +856 -0
  130. donkey_kit-0.2.1/src/donkey_kit/simulator/_fixtures/anypoint/README.a2a.md +68 -0
  131. donkey_kit-0.2.1/src/donkey_kit/simulator/_fixtures/anypoint/README.mcp.md +95 -0
  132. donkey_kit-0.2.1/src/donkey_kit/simulator/_fixtures/anypoint/a2a_policies/README.md +351 -0
  133. donkey_kit-0.2.1/src/donkey_kit/simulator/_fixtures/anypoint/a2a_policies/v03-pii-send.body.json +1 -0
  134. donkey_kit-0.2.1/src/donkey_kit/simulator/_fixtures/anypoint/a2a_policies/v03-pii-send.headers.txt +9 -0
  135. donkey_kit-0.2.1/src/donkey_kit/simulator/_fixtures/anypoint/a2a_policies/v03-rate-send.headers.txt +11 -0
  136. donkey_kit-0.2.1/src/donkey_kit/simulator/_fixtures/anypoint/a2a_policies/v1-azure-block-send.body.json +1 -0
  137. donkey_kit-0.2.1/src/donkey_kit/simulator/_fixtures/anypoint/a2a_policies/v1-azure-block-send.headers.txt +12 -0
  138. donkey_kit-0.2.1/src/donkey_kit/simulator/_fixtures/anypoint/a2a_policies/v1-azure-block-stream.body.json +1 -0
  139. donkey_kit-0.2.1/src/donkey_kit/simulator/_fixtures/anypoint/a2a_policies/v1-azure-block-stream.headers.txt +12 -0
  140. donkey_kit-0.2.1/src/donkey_kit/simulator/_fixtures/anypoint/a2a_policies/v1-pii-send.body.json +1 -0
  141. donkey_kit-0.2.1/src/donkey_kit/simulator/_fixtures/anypoint/a2a_policies/v1-pii-send.headers.txt +9 -0
  142. donkey_kit-0.2.1/src/donkey_kit/simulator/_fixtures/anypoint/a2a_policies/v1-pii-stream.body.json +1 -0
  143. donkey_kit-0.2.1/src/donkey_kit/simulator/_fixtures/anypoint/a2a_policies/v1-pii-stream.headers.txt +9 -0
  144. donkey_kit-0.2.1/src/donkey_kit/simulator/_fixtures/anypoint/a2a_policies/v1-rate-send.headers.txt +11 -0
  145. donkey_kit-0.2.1/src/donkey_kit/simulator/_fixtures/anypoint/a2a_policies/v1-rate-stream.headers.txt +11 -0
  146. donkey_kit-0.2.1/src/donkey_kit/simulator/_fixtures/anypoint/anthropic_inbound_multiroute/README.md +24 -0
  147. donkey_kit-0.2.1/src/donkey_kit/simulator/_fixtures/anypoint/anthropic_inbound_multiroute/messages.fallback.body.json +1 -0
  148. donkey_kit-0.2.1/src/donkey_kit/simulator/_fixtures/anypoint/anthropic_inbound_multiroute/messages.fallback.headers.txt +38 -0
  149. donkey_kit-0.2.1/src/donkey_kit/simulator/_fixtures/anypoint/anthropic_inbound_multiroute/messages.invalid_json.body.json +1 -0
  150. donkey_kit-0.2.1/src/donkey_kit/simulator/_fixtures/anypoint/anthropic_inbound_multiroute/messages.invalid_json.headers.txt +9 -0
  151. donkey_kit-0.2.1/src/donkey_kit/simulator/_fixtures/anypoint/anthropic_inbound_multiroute/messages.stream.body.txt +21 -0
  152. donkey_kit-0.2.1/src/donkey_kit/simulator/_fixtures/anypoint/anthropic_inbound_multiroute/messages.stream.headers.txt +39 -0
  153. donkey_kit-0.2.1/src/donkey_kit/simulator/_fixtures/anypoint/anthropic_inbound_multiroute/messages.success.body.json +1 -0
  154. donkey_kit-0.2.1/src/donkey_kit/simulator/_fixtures/anypoint/anthropic_inbound_multiroute/messages.success.headers.txt +38 -0
  155. donkey_kit-0.2.1/src/donkey_kit/simulator/_fixtures/anypoint/gemini_inbound_multiroute/README.md +21 -0
  156. donkey_kit-0.2.1/src/donkey_kit/simulator/_fixtures/anypoint/gemini_inbound_multiroute/generate_content.invalid_json.body.json +1 -0
  157. donkey_kit-0.2.1/src/donkey_kit/simulator/_fixtures/anypoint/gemini_inbound_multiroute/generate_content.invalid_json.headers.txt +9 -0
  158. donkey_kit-0.2.1/src/donkey_kit/simulator/_fixtures/anypoint/gemini_inbound_multiroute/generate_content.success.body.json +32 -0
  159. donkey_kit-0.2.1/src/donkey_kit/simulator/_fixtures/anypoint/gemini_inbound_multiroute/generate_content.success.headers.txt +23 -0
  160. donkey_kit-0.2.1/src/donkey_kit/simulator/_fixtures/anypoint/gemini_inbound_multiroute/stream_generate_content.success.body.txt +4 -0
  161. donkey_kit-0.2.1/src/donkey_kit/simulator/_fixtures/anypoint/gemini_inbound_multiroute/stream_generate_content.success.headers.txt +22 -0
  162. donkey_kit-0.2.1/src/donkey_kit/simulator/_fixtures/anypoint/llm_proxy/README.md +107 -0
  163. donkey_kit-0.2.1/src/donkey_kit/simulator/_fixtures/anypoint/llm_proxy/reject.model-missing.body.json +1 -0
  164. donkey_kit-0.2.1/src/donkey_kit/simulator/_fixtures/anypoint/llm_proxy/reject.model-not-routable.headers.txt +2 -0
  165. donkey_kit-0.2.1/src/donkey_kit/simulator/_fixtures/anypoint/mcp-captures.lock +21 -0
  166. donkey_kit-0.2.1/src/donkey_kit/simulator/_fixtures/anypoint/mcp_access/README.md +25 -0
  167. donkey_kit-0.2.1/src/donkey_kit/simulator/_fixtures/anypoint/mcp_access/tools-call.abac-denied.body.json +1 -0
  168. donkey_kit-0.2.1/src/donkey_kit/simulator/_fixtures/anypoint/mcp_access/tools-call.abac-denied.headers.txt +4 -0
  169. donkey_kit-0.2.1/src/donkey_kit/simulator/_fixtures/anypoint/mcp_access/tools-call.global-access-denied.body.json +1 -0
  170. donkey_kit-0.2.1/src/donkey_kit/simulator/_fixtures/anypoint/mcp_access/tools-call.global-access-denied.headers.txt +3 -0
  171. donkey_kit-0.2.1/src/donkey_kit/simulator/_fixtures/anypoint/mcp_policies/README.md +69 -0
  172. donkey_kit-0.2.1/src/donkey_kit/simulator/_fixtures/anypoint/mcp_policies/abac-denied.json +5 -0
  173. donkey_kit-0.2.1/src/donkey_kit/simulator/_fixtures/anypoint/mcp_policies/mapping-call.json +5 -0
  174. donkey_kit-0.2.1/src/donkey_kit/simulator/_fixtures/anypoint/mcp_policies/mapping-list.json +5 -0
  175. donkey_kit-0.2.1/src/donkey_kit/simulator/_fixtures/anypoint/mcp_policies/optimization-html.json +5 -0
  176. donkey_kit-0.2.1/src/donkey_kit/simulator/_fixtures/anypoint/mcp_policies/pii-mask-sse.json +5 -0
  177. donkey_kit-0.2.1/src/donkey_kit/simulator/_fixtures/anypoint/mcp_policies/pii-request.json +5 -0
  178. donkey_kit-0.2.1/src/donkey_kit/simulator/_fixtures/anypoint/mcp_policies/pii-response-sse.json +5 -0
  179. donkey_kit-0.2.1/src/donkey_kit/simulator/_fixtures/anypoint/mcp_policies/poisoning-block-list.json +5 -0
  180. donkey_kit-0.2.1/src/donkey_kit/simulator/_fixtures/anypoint/mcp_policies/poisoning-remove-list.json +5 -0
  181. donkey_kit-0.2.1/src/donkey_kit/simulator/_fixtures/anypoint/mcp_policies/progressive-invalid-params.json +5 -0
  182. donkey_kit-0.2.1/src/donkey_kit/simulator/_fixtures/anypoint/mcp_policies/progressive-list.json +5 -0
  183. donkey_kit-0.2.1/src/donkey_kit/simulator/_fixtures/anypoint/mcp_policies/schema-invalid-args.json +5 -0
  184. donkey_kit-0.2.1/src/donkey_kit/simulator/_fixtures/anypoint/mcp_policies/schema-missing-id.json +5 -0
  185. donkey_kit-0.2.1/src/donkey_kit/simulator/_fixtures/anypoint/model_routing_qualified_vendor/README.md +24 -0
  186. donkey_kit-0.2.1/src/donkey_kit/simulator/_fixtures/anypoint/model_routing_qualified_vendor/chat_completions.fallback.body.json +35 -0
  187. donkey_kit-0.2.1/src/donkey_kit/simulator/_fixtures/anypoint/model_routing_qualified_vendor/chat_completions.fallback.headers.txt +35 -0
  188. donkey_kit-0.2.1/src/donkey_kit/simulator/_fixtures/anypoint/model_routing_qualified_vendor/chat_completions.success.body.json +35 -0
  189. donkey_kit-0.2.1/src/donkey_kit/simulator/_fixtures/anypoint/model_routing_qualified_vendor/chat_completions.success.headers.txt +35 -0
  190. donkey_kit-0.2.1/src/donkey_kit/simulator/_fixtures/fixtures.lock +70 -0
  191. donkey_kit-0.2.1/src/donkey_kit/simulator/_fixtures/rejections/README.md +193 -0
  192. donkey_kit-0.2.1/src/donkey_kit/simulator/_fixtures/rejections/reject.ciba-denied.body.json +1 -0
  193. donkey_kit-0.2.1/src/donkey_kit/simulator/_fixtures/rejections/reject.ciba-pending.body.json +1 -0
  194. donkey_kit-0.2.1/src/donkey_kit/simulator/_fixtures/rejections/reject.ciba-pending.headers.txt +3 -0
  195. donkey_kit-0.2.1/src/donkey_kit/simulator/_fixtures/rejections/reject.content-safety-crowdstrike-aidr.body.json +1 -0
  196. donkey_kit-0.2.1/src/donkey_kit/simulator/_fixtures/rejections/reject.content-safety-crowdstrike-aidr.headers.txt +5 -0
  197. donkey_kit-0.2.1/src/donkey_kit/simulator/_fixtures/rejections/reject.content-safety-model-armor.body.json +1 -0
  198. donkey_kit-0.2.1/src/donkey_kit/simulator/_fixtures/rejections/reject.content-safety-model-armor.headers.txt +5 -0
  199. donkey_kit-0.2.1/src/donkey_kit/simulator/_fixtures/rejections/reject.regex-prompt-guard.headers.txt +2 -0
  200. donkey_kit-0.2.1/src/donkey_kit/simulator/a2a.py +197 -0
  201. donkey_kit-0.2.1/src/donkey_kit/simulator/app.py +432 -0
  202. donkey_kit-0.2.1/src/donkey_kit/simulator/fixtures.py +673 -0
  203. donkey_kit-0.2.1/src/donkey_kit/simulator/ingress.py +315 -0
  204. donkey_kit-0.2.1/src/donkey_kit/simulator/inject.py +253 -0
  205. donkey_kit-0.2.1/src/donkey_kit/simulator/mcp.py +386 -0
  206. donkey_kit-0.2.1/src/donkey_kit/simulator/scenarios.py +483 -0
  207. donkey_kit-0.2.1/src/donkey_kit/tools/__init__.py +8 -0
  208. donkey_kit-0.2.1/src/donkey_kit/tools/approval.py +155 -0
  209. donkey_kit-0.2.1/src/donkey_kit/tools/auth.py +157 -0
  210. donkey_kit-0.2.1/src/donkey_kit/tools/discovery.py +499 -0
  211. donkey_kit-0.2.1/src/donkey_kit/tools/filter.py +175 -0
  212. donkey_kit-0.2.1/src/donkey_kit/tools/lockfile.py +317 -0
  213. donkey_kit-0.2.1/src/donkey_kit/tools/mcp.py +283 -0
  214. donkey_kit-0.2.1/src/donkey_kit/tools/session.py +1353 -0
  215. donkey_kit-0.2.1/tests/conformance/contract_drivers.py +287 -0
  216. donkey_kit-0.2.1/tests/conformance/contract_gateway.py +210 -0
  217. donkey_kit-0.2.1/tests/conformance/suite.py +419 -0
  218. donkey_kit-0.2.1/tests/conformance/test_a2a_outbound.py +1297 -0
  219. donkey_kit-0.2.1/tests/conformance/test_a2a_simulation_declared.py +112 -0
  220. donkey_kit-0.2.1/tests/conformance/test_adk_mcp_simulation.py +136 -0
  221. donkey_kit-0.2.1/tests/conformance/test_agent_killed_stops_cleanly.py +122 -0
  222. donkey_kit-0.2.1/tests/conformance/test_approval_round_trip.py +439 -0
  223. donkey_kit-0.2.1/tests/conformance/test_custom_policy_typed.py +121 -0
  224. donkey_kit-0.2.1/tests/conformance/test_gateway_fixture.py +169 -0
  225. donkey_kit-0.2.1/tests/conformance/test_handlers_cannot_unrefuse.py +145 -0
  226. donkey_kit-0.2.1/tests/conformance/test_locked_binding_snapshot.py +87 -0
  227. donkey_kit-0.2.1/tests/conformance/test_mcp_gateway_catalog_binding.py +53 -0
  228. donkey_kit-0.2.1/tests/conformance/test_mcp_simulation.py +601 -0
  229. donkey_kit-0.2.1/tests/conformance/test_mcp_simulation_declared.py +95 -0
  230. donkey_kit-0.2.1/tests/conformance/test_openai_agents_conformance.py +64 -0
  231. donkey_kit-0.2.1/tests/conformance/test_readme_exemptions_table.py +157 -0
  232. donkey_kit-0.2.1/tests/conformance/test_strands_mcp_simulation.py +379 -0
  233. donkey_kit-0.2.1/tests/conformance/test_tool_binding.py +733 -0
  234. donkey_kit-0.2.1/tests/conformance/test_typed_refusal_bridge.py +326 -0
  235. donkey_kit-0.2.1/tests/conformance/transport_surfaces.py +192 -0
  236. donkey_kit-0.2.1/tests/conftest.py +240 -0
  237. donkey_kit-0.2.1/tests/fixtures/anypoint/README.md +38 -0
  238. donkey_kit-0.2.1/tests/fixtures/anypoint/a2a_card/README.md +55 -0
  239. donkey_kit-0.2.1/tests/fixtures/anypoint/a2a_card/a2a-card.stored.json +38 -0
  240. donkey_kit-0.2.1/tests/fixtures/anypoint/a2a_card/agent-metadata.stored.json +6 -0
  241. donkey_kit-0.2.1/tests/fixtures/anypoint/a2a_card/api.describe.json +109 -0
  242. donkey_kit-0.2.1/tests/fixtures/anypoint/a2a_card/apis.by-asset.json +85 -0
  243. donkey_kit-0.2.1/tests/fixtures/anypoint/a2a_card/graphql.files.json +66 -0
  244. donkey_kit-0.2.1/tests/fixtures/anypoint/a2a_card/traffic.card.contracted.200.json +9 -0
  245. donkey_kit-0.2.1/tests/fixtures/anypoint/a2a_card/traffic.card.no-client-id.401.json +10 -0
  246. donkey_kit-0.2.1/tests/fixtures/anypoint/a2a_card/traffic.card.no-policy.200.json +9 -0
  247. donkey_kit-0.2.1/tests/fixtures/anypoint/a2a_card/traffic.card.uncontracted.401.json +10 -0
  248. donkey_kit-0.2.1/tests/fixtures/anypoint/a2a_card/upstream.agent-card.json +63 -0
  249. donkey_kit-0.2.1/tests/fixtures/anypoint/a2a_instance/README.md +55 -0
  250. donkey_kit-0.2.1/tests/fixtures/anypoint/a2a_instance/api_describe.200.json +109 -0
  251. donkey_kit-0.2.1/tests/fixtures/anypoint/a2a_instance/contracts.200.json +4 -0
  252. donkey_kit-0.2.1/tests/fixtures/anypoint/a2a_instance/create.201.json +48 -0
  253. donkey_kit-0.2.1/tests/fixtures/anypoint/a2a_instance/create.a2a-v1-protocol.400.json +1 -0
  254. donkey_kit-0.2.1/tests/fixtures/anypoint/a2a_instance/create.request.json +16 -0
  255. donkey_kit-0.2.1/tests/fixtures/anypoint/a2a_instance/deployment-status.applied.json +5 -0
  256. donkey_kit-0.2.1/tests/fixtures/anypoint/a2a_instance/deployment-status.applying.json +5 -0
  257. donkey_kit-0.2.1/tests/fixtures/anypoint/a2a_instance/deployment.201.json +46 -0
  258. donkey_kit-0.2.1/tests/fixtures/anypoint/a2a_instance/deployment.request.json +8 -0
  259. donkey_kit-0.2.1/tests/fixtures/anypoint/a2a_instance/outbound-policies.get.405.json +13 -0
  260. donkey_kit-0.2.1/tests/fixtures/anypoint/a2a_instance/outbound-policy.201.json +27 -0
  261. donkey_kit-0.2.1/tests/fixtures/anypoint/a2a_instance/outbound-policy.request.json +15 -0
  262. donkey_kit-0.2.1/tests/fixtures/anypoint/a2a_instance/policies.200.json +32 -0
  263. donkey_kit-0.2.1/tests/fixtures/anypoint/a2a_instance/policy-inbound.400.json +4 -0
  264. donkey_kit-0.2.1/tests/fixtures/anypoint/a2a_instance/policy-inbound.request.json +12 -0
  265. donkey_kit-0.2.1/tests/fixtures/anypoint/a2a_instance/upstreams.200.json +17 -0
  266. donkey_kit-0.2.1/tests/fixtures/anypoint/a2a_policies/README.card-rewrite.md +36 -0
  267. donkey_kit-0.2.1/tests/fixtures/anypoint/a2a_policies/README.md +351 -0
  268. donkey_kit-0.2.1/tests/fixtures/anypoint/a2a_policies/v03-auth-challenge-send.body.json +1 -0
  269. donkey_kit-0.2.1/tests/fixtures/anypoint/a2a_policies/v03-auth-challenge-send.headers.txt +9 -0
  270. donkey_kit-0.2.1/tests/fixtures/anypoint/a2a_policies/v03-auth-challenge-stream.body.json +1 -0
  271. donkey_kit-0.2.1/tests/fixtures/anypoint/a2a_policies/v03-auth-challenge-stream.headers.txt +9 -0
  272. donkey_kit-0.2.1/tests/fixtures/anypoint/a2a_policies/v03-pii-send.body.json +1 -0
  273. donkey_kit-0.2.1/tests/fixtures/anypoint/a2a_policies/v03-pii-send.headers.txt +9 -0
  274. donkey_kit-0.2.1/tests/fixtures/anypoint/a2a_policies/v03-quality-pending-send.headers.txt +3 -0
  275. donkey_kit-0.2.1/tests/fixtures/anypoint/a2a_policies/v03-quality-send.headers.txt +8 -0
  276. donkey_kit-0.2.1/tests/fixtures/anypoint/a2a_policies/v03-rate-accepted-send.headers.txt +5 -0
  277. donkey_kit-0.2.1/tests/fixtures/anypoint/a2a_policies/v03-rate-send.headers.txt +11 -0
  278. donkey_kit-0.2.1/tests/fixtures/anypoint/a2a_policies/v03-schema-method.body.json +1 -0
  279. donkey_kit-0.2.1/tests/fixtures/anypoint/a2a_policies/v03-schema-method.headers.txt +9 -0
  280. donkey_kit-0.2.1/tests/fixtures/anypoint/a2a_policies/v03-schema-params.body.json +1 -0
  281. donkey_kit-0.2.1/tests/fixtures/anypoint/a2a_policies/v03-schema-params.headers.txt +9 -0
  282. donkey_kit-0.2.1/tests/fixtures/anypoint/a2a_policies/v03-schema-parse.body.json +1 -0
  283. donkey_kit-0.2.1/tests/fixtures/anypoint/a2a_policies/v03-schema-parse.headers.txt +9 -0
  284. donkey_kit-0.2.1/tests/fixtures/anypoint/a2a_policies/v1-azure-block-send.body.json +1 -0
  285. donkey_kit-0.2.1/tests/fixtures/anypoint/a2a_policies/v1-azure-block-send.headers.txt +12 -0
  286. donkey_kit-0.2.1/tests/fixtures/anypoint/a2a_policies/v1-azure-block-stream.body.json +1 -0
  287. donkey_kit-0.2.1/tests/fixtures/anypoint/a2a_policies/v1-azure-block-stream.headers.txt +12 -0
  288. donkey_kit-0.2.1/tests/fixtures/anypoint/a2a_policies/v1-azure-unavailable-send.body.json +1 -0
  289. donkey_kit-0.2.1/tests/fixtures/anypoint/a2a_policies/v1-azure-unavailable-send.headers.txt +12 -0
  290. donkey_kit-0.2.1/tests/fixtures/anypoint/a2a_policies/v1-azure-unavailable-stream.body.json +1 -0
  291. donkey_kit-0.2.1/tests/fixtures/anypoint/a2a_policies/v1-azure-unavailable-stream.headers.txt +12 -0
  292. donkey_kit-0.2.1/tests/fixtures/anypoint/a2a_policies/v1-bedrock-block-send.body.json +1 -0
  293. donkey_kit-0.2.1/tests/fixtures/anypoint/a2a_policies/v1-bedrock-block-send.headers.txt +12 -0
  294. donkey_kit-0.2.1/tests/fixtures/anypoint/a2a_policies/v1-bedrock-block-stream.body.json +1 -0
  295. donkey_kit-0.2.1/tests/fixtures/anypoint/a2a_policies/v1-bedrock-block-stream.headers.txt +12 -0
  296. donkey_kit-0.2.1/tests/fixtures/anypoint/a2a_policies/v1-bedrock-unavailable-send.body.json +1 -0
  297. donkey_kit-0.2.1/tests/fixtures/anypoint/a2a_policies/v1-bedrock-unavailable-send.headers.txt +12 -0
  298. donkey_kit-0.2.1/tests/fixtures/anypoint/a2a_policies/v1-bedrock-unavailable-stream.body.json +1 -0
  299. donkey_kit-0.2.1/tests/fixtures/anypoint/a2a_policies/v1-bedrock-unavailable-stream.headers.txt +12 -0
  300. donkey_kit-0.2.1/tests/fixtures/anypoint/a2a_policies/v1-card-rewrite.selected.json +19 -0
  301. donkey_kit-0.2.1/tests/fixtures/anypoint/a2a_policies/v1-decorator-send.selected.json +11 -0
  302. donkey_kit-0.2.1/tests/fixtures/anypoint/a2a_policies/v1-pii-send.body.json +1 -0
  303. donkey_kit-0.2.1/tests/fixtures/anypoint/a2a_policies/v1-pii-send.headers.txt +9 -0
  304. donkey_kit-0.2.1/tests/fixtures/anypoint/a2a_policies/v1-pii-stream.body.json +1 -0
  305. donkey_kit-0.2.1/tests/fixtures/anypoint/a2a_policies/v1-pii-stream.headers.txt +9 -0
  306. donkey_kit-0.2.1/tests/fixtures/anypoint/a2a_policies/v1-rate-accepted-send.headers.txt +5 -0
  307. donkey_kit-0.2.1/tests/fixtures/anypoint/a2a_policies/v1-rate-send.headers.txt +11 -0
  308. donkey_kit-0.2.1/tests/fixtures/anypoint/a2a_policies/v1-rate-stream.headers.txt +11 -0
  309. donkey_kit-0.2.1/tests/fixtures/anypoint/a2a_policies/v1-schema-method.body.json +1 -0
  310. donkey_kit-0.2.1/tests/fixtures/anypoint/a2a_policies/v1-schema-method.headers.txt +9 -0
  311. donkey_kit-0.2.1/tests/fixtures/anypoint/a2a_policies/v1-schema-params.body.json +1 -0
  312. donkey_kit-0.2.1/tests/fixtures/anypoint/a2a_policies/v1-schema-params.headers.txt +9 -0
  313. donkey_kit-0.2.1/tests/fixtures/anypoint/a2a_policies/v1-schema-parse.body.json +1 -0
  314. donkey_kit-0.2.1/tests/fixtures/anypoint/a2a_policies/v1-schema-parse.headers.txt +9 -0
  315. donkey_kit-0.2.1/tests/fixtures/anypoint/a2a_policies/v1-transcoder-list-tasks.body.json +1 -0
  316. donkey_kit-0.2.1/tests/fixtures/anypoint/a2a_policies/v1-transcoder-list-tasks.headers.txt +9 -0
  317. donkey_kit-0.2.1/tests/fixtures/anypoint/a2a_policies/v1-transcoder-push-config.body.json +1 -0
  318. donkey_kit-0.2.1/tests/fixtures/anypoint/a2a_policies/v1-transcoder-push-config.headers.txt +9 -0
  319. donkey_kit-0.2.1/tests/fixtures/anypoint/anthropic_inbound_multiroute/README.md +11 -0
  320. donkey_kit-0.2.1/tests/fixtures/anypoint/anthropic_inbound_multiroute/messages.bedrock_404.body.txt +1 -0
  321. donkey_kit-0.2.1/tests/fixtures/anypoint/anthropic_inbound_multiroute/messages.bedrock_404.headers.txt +16 -0
  322. donkey_kit-0.2.1/tests/fixtures/anypoint/anthropic_inbound_multiroute/messages.fallback.body.json +1 -0
  323. donkey_kit-0.2.1/tests/fixtures/anypoint/anthropic_inbound_multiroute/messages.fallback.headers.txt +38 -0
  324. donkey_kit-0.2.1/tests/fixtures/anypoint/anthropic_inbound_multiroute/messages.invalid_json.body.json +1 -0
  325. donkey_kit-0.2.1/tests/fixtures/anypoint/anthropic_inbound_multiroute/messages.invalid_json.headers.txt +9 -0
  326. donkey_kit-0.2.1/tests/fixtures/anypoint/anthropic_inbound_multiroute/messages.prefixed.body.json +1 -0
  327. donkey_kit-0.2.1/tests/fixtures/anypoint/anthropic_inbound_multiroute/messages.prefixed.headers.txt +38 -0
  328. donkey_kit-0.2.1/tests/fixtures/anypoint/anthropic_inbound_multiroute/messages.stream.body.txt +21 -0
  329. donkey_kit-0.2.1/tests/fixtures/anypoint/anthropic_inbound_multiroute/messages.stream.headers.txt +39 -0
  330. donkey_kit-0.2.1/tests/fixtures/anypoint/anthropic_inbound_multiroute/messages.success.body.json +1 -0
  331. donkey_kit-0.2.1/tests/fixtures/anypoint/anthropic_inbound_multiroute/messages.success.headers.txt +38 -0
  332. donkey_kit-0.2.1/tests/fixtures/anypoint/anthropic_inbound_multiroute/messages.unresolvable.body.json +1 -0
  333. donkey_kit-0.2.1/tests/fixtures/anypoint/anthropic_inbound_multiroute/messages.unresolvable.headers.txt +38 -0
  334. donkey_kit-0.2.1/tests/fixtures/anypoint/exchange_publish/README.md +114 -0
  335. donkey_kit-0.2.1/tests/fixtures/anypoint/exchange_publish/agent.a2a-v1-card.stored.json +41 -0
  336. donkey_kit-0.2.1/tests/fixtures/anypoint/exchange_publish/agent.agent-metadata.stored.json +11 -0
  337. donkey_kit-0.2.1/tests/fixtures/anypoint/exchange_publish/agent.graphql.latest.json +1 -0
  338. donkey_kit-0.2.1/tests/fixtures/anypoint/exchange_publish/agent.pom.xml +21 -0
  339. donkey_kit-0.2.1/tests/fixtures/anypoint/exchange_publish/agent.publish.201.json +1 -0
  340. donkey_kit-0.2.1/tests/fixtures/anypoint/exchange_publish/graphql.absent.json +1 -0
  341. donkey_kit-0.2.1/tests/fixtures/anypoint/exchange_publish/graphql.files.json +34 -0
  342. donkey_kit-0.2.1/tests/fixtures/anypoint/exchange_publish/graphql.latest.json +1 -0
  343. donkey_kit-0.2.1/tests/fixtures/anypoint/exchange_publish/graphql.renamed.json +1 -0
  344. donkey_kit-0.2.1/tests/fixtures/anypoint/exchange_publish/graphql.version.json +1 -0
  345. donkey_kit-0.2.1/tests/fixtures/anypoint/exchange_publish/instance.201.json +1 -0
  346. donkey_kit-0.2.1/tests/fixtures/anypoint/exchange_publish/mcp-metadata.stored.json +34 -0
  347. donkey_kit-0.2.1/tests/fixtures/anypoint/exchange_publish/page.201.json +5 -0
  348. donkey_kit-0.2.1/tests/fixtures/anypoint/exchange_publish/page.409.json +1 -0
  349. donkey_kit-0.2.1/tests/fixtures/anypoint/exchange_publish/pom.xml +19 -0
  350. donkey_kit-0.2.1/tests/fixtures/anypoint/exchange_publish/portal-draft.200.json +19 -0
  351. donkey_kit-0.2.1/tests/fixtures/anypoint/exchange_publish/publish.201.json +1 -0
  352. donkey_kit-0.2.1/tests/fixtures/anypoint/exchange_publish/publish.409.json +1 -0
  353. donkey_kit-0.2.1/tests/fixtures/anypoint/exchange_search/README.md +40 -0
  354. donkey_kit-0.2.1/tests/fixtures/anypoint/exchange_search/search.api-types.json +5 -0
  355. donkey_kit-0.2.1/tests/fixtures/anypoint/exchange_search/search.description-term.json +120 -0
  356. donkey_kit-0.2.1/tests/fixtures/anypoint/exchange_search/search.page1.json +176 -0
  357. donkey_kit-0.2.1/tests/fixtures/anypoint/exchange_search/search.page2.json +162 -0
  358. donkey_kit-0.2.1/tests/fixtures/anypoint/exchange_search/search.tags-derived.json +318 -0
  359. donkey_kit-0.2.1/tests/fixtures/anypoint/exchange_search/search.tags-two.json +5 -0
  360. donkey_kit-0.2.1/tests/fixtures/anypoint/exchange_search/search.tags.json +44 -0
  361. donkey_kit-0.2.1/tests/fixtures/anypoint/exchange_search/search.term.json +20 -0
  362. donkey_kit-0.2.1/tests/fixtures/anypoint/exchange_search/search.types-mcp.json +20 -0
  363. donkey_kit-0.2.1/tests/fixtures/anypoint/exchange_search/search.unknown-field.400.json +20 -0
  364. donkey_kit-0.2.1/tests/fixtures/anypoint/gateway/README.md +23 -0
  365. donkey_kit-0.2.1/tests/fixtures/anypoint/gateway/gateway.200.json +48 -0
  366. donkey_kit-0.2.1/tests/fixtures/anypoint/gateway/gateways.by-name.json +15 -0
  367. donkey_kit-0.2.1/tests/fixtures/anypoint/gemini_inbound_multiroute/README.md +9 -0
  368. donkey_kit-0.2.1/tests/fixtures/anypoint/gemini_inbound_multiroute/generate_content.cross_vendor.body.json +32 -0
  369. donkey_kit-0.2.1/tests/fixtures/anypoint/gemini_inbound_multiroute/generate_content.cross_vendor.headers.txt +23 -0
  370. donkey_kit-0.2.1/tests/fixtures/anypoint/gemini_inbound_multiroute/generate_content.invalid_json.body.json +1 -0
  371. donkey_kit-0.2.1/tests/fixtures/anypoint/gemini_inbound_multiroute/generate_content.invalid_json.headers.txt +9 -0
  372. donkey_kit-0.2.1/tests/fixtures/anypoint/gemini_inbound_multiroute/generate_content.success.body.json +32 -0
  373. donkey_kit-0.2.1/tests/fixtures/anypoint/gemini_inbound_multiroute/generate_content.success.headers.txt +23 -0
  374. donkey_kit-0.2.1/tests/fixtures/anypoint/gemini_inbound_multiroute/generate_content.unresolvable.body.json +32 -0
  375. donkey_kit-0.2.1/tests/fixtures/anypoint/gemini_inbound_multiroute/generate_content.unresolvable.headers.txt +23 -0
  376. donkey_kit-0.2.1/tests/fixtures/anypoint/gemini_inbound_multiroute/stream_generate_content.success.body.txt +4 -0
  377. donkey_kit-0.2.1/tests/fixtures/anypoint/gemini_inbound_multiroute/stream_generate_content.success.headers.txt +22 -0
  378. donkey_kit-0.2.1/tests/fixtures/anypoint/llm_metadata/README.md +27 -0
  379. donkey_kit-0.2.1/tests/fixtures/anypoint/llm_metadata/custom.graphql.files.json +35 -0
  380. donkey_kit-0.2.1/tests/fixtures/anypoint/llm_metadata/custom.llm-metadata.stored.json +24 -0
  381. donkey_kit-0.2.1/tests/fixtures/anypoint/llm_metadata/proxy.graphql.files.json +35 -0
  382. donkey_kit-0.2.1/tests/fixtures/anypoint/llm_metadata/proxy.llm-metadata.stored.json +1 -0
  383. donkey_kit-0.2.1/tests/fixtures/anypoint/mcp_access/README.md +25 -0
  384. donkey_kit-0.2.1/tests/fixtures/anypoint/mcp_access/tools-call.abac-denied.body.json +1 -0
  385. donkey_kit-0.2.1/tests/fixtures/anypoint/mcp_access/tools-call.abac-denied.headers.txt +4 -0
  386. donkey_kit-0.2.1/tests/fixtures/anypoint/mcp_access/tools-call.global-access-denied.body.json +1 -0
  387. donkey_kit-0.2.1/tests/fixtures/anypoint/mcp_access/tools-call.global-access-denied.headers.txt +3 -0
  388. donkey_kit-0.2.1/tests/fixtures/anypoint/mcp_explain/README.md +60 -0
  389. donkey_kit-0.2.1/tests/fixtures/anypoint/mcp_explain/api.describe.governed.json +106 -0
  390. donkey_kit-0.2.1/tests/fixtures/anypoint/mcp_explain/apis.by-asset.governed.json +82 -0
  391. donkey_kit-0.2.1/tests/fixtures/anypoint/mcp_explain/apis.by-asset.none.json +4 -0
  392. donkey_kit-0.2.1/tests/fixtures/anypoint/mcp_explain/apis.by-asset.undeployed.json +73 -0
  393. donkey_kit-0.2.1/tests/fixtures/anypoint/mcp_explain/apis.by-asset.ungoverned.json +82 -0
  394. donkey_kit-0.2.1/tests/fixtures/anypoint/mcp_explain/asset.version.json +11 -0
  395. donkey_kit-0.2.1/tests/fixtures/anypoint/mcp_explain/asset.version.tagged.json +13 -0
  396. donkey_kit-0.2.1/tests/fixtures/anypoint/mcp_explain/governance.reports.conformant.json +19 -0
  397. donkey_kit-0.2.1/tests/fixtures/anypoint/mcp_explain/governance.reports.none.json +4 -0
  398. donkey_kit-0.2.1/tests/fixtures/anypoint/mcp_explain/governance.reports.root-org.json +4 -0
  399. donkey_kit-0.2.1/tests/fixtures/anypoint/mcp_explain/policies.governed.json +54 -0
  400. donkey_kit-0.2.1/tests/fixtures/anypoint/mcp_explain/policies.none.json +3 -0
  401. donkey_kit-0.2.1/tests/fixtures/anypoint/mcp_instance/README.md +54 -0
  402. donkey_kit-0.2.1/tests/fixtures/anypoint/mcp_instance/api_describe.200.json +106 -0
  403. donkey_kit-0.2.1/tests/fixtures/anypoint/mcp_instance/apis-list.by-label.json +51 -0
  404. donkey_kit-0.2.1/tests/fixtures/anypoint/mcp_instance/contracts.200.json +4 -0
  405. donkey_kit-0.2.1/tests/fixtures/anypoint/mcp_instance/create.201.json +44 -0
  406. donkey_kit-0.2.1/tests/fixtures/anypoint/mcp_instance/create.409.json +4 -0
  407. donkey_kit-0.2.1/tests/fixtures/anypoint/mcp_instance/create.request.json +16 -0
  408. donkey_kit-0.2.1/tests/fixtures/anypoint/mcp_instance/deployment-status.applied.json +5 -0
  409. donkey_kit-0.2.1/tests/fixtures/anypoint/mcp_instance/deployment-status.applying.json +5 -0
  410. donkey_kit-0.2.1/tests/fixtures/anypoint/mcp_instance/deployment.201.json +46 -0
  411. donkey_kit-0.2.1/tests/fixtures/anypoint/mcp_instance/deployment.request.json +8 -0
  412. donkey_kit-0.2.1/tests/fixtures/anypoint/mcp_instance/policies.200.json +40 -0
  413. donkey_kit-0.2.1/tests/fixtures/anypoint/mcp_instance/policy-client-id-enforcement.201.json +23 -0
  414. donkey_kit-0.2.1/tests/fixtures/anypoint/mcp_instance/policy-client-id-enforcement.request.json +11 -0
  415. donkey_kit-0.2.1/tests/fixtures/anypoint/mcp_instance/policy-mcp-support.201.json +21 -0
  416. donkey_kit-0.2.1/tests/fixtures/anypoint/mcp_instance/policy-mcp-support.request.json +9 -0
  417. donkey_kit-0.2.1/tests/fixtures/anypoint/mcp_policies/README.md +173 -0
  418. donkey_kit-0.2.1/tests/fixtures/anypoint/mcp_policies/abac-denied.json +5 -0
  419. donkey_kit-0.2.1/tests/fixtures/anypoint/mcp_policies/mapping-call.json +5 -0
  420. donkey_kit-0.2.1/tests/fixtures/anypoint/mcp_policies/mapping-list.json +5 -0
  421. donkey_kit-0.2.1/tests/fixtures/anypoint/mcp_policies/optimization-base64-bare.json +8 -0
  422. donkey_kit-0.2.1/tests/fixtures/anypoint/mcp_policies/optimization-base64-control.json +8 -0
  423. donkey_kit-0.2.1/tests/fixtures/anypoint/mcp_policies/optimization-base64.json +8 -0
  424. donkey_kit-0.2.1/tests/fixtures/anypoint/mcp_policies/optimization-html.json +5 -0
  425. donkey_kit-0.2.1/tests/fixtures/anypoint/mcp_policies/optimization-nulls-control.json +8 -0
  426. donkey_kit-0.2.1/tests/fixtures/anypoint/mcp_policies/optimization-nulls.json +8 -0
  427. donkey_kit-0.2.1/tests/fixtures/anypoint/mcp_policies/optimization-toon-control.json +8 -0
  428. donkey_kit-0.2.1/tests/fixtures/anypoint/mcp_policies/optimization-toon-ineligible.json +8 -0
  429. donkey_kit-0.2.1/tests/fixtures/anypoint/mcp_policies/optimization-toon.json +8 -0
  430. donkey_kit-0.2.1/tests/fixtures/anypoint/mcp_policies/optimization-trim-control.json +8 -0
  431. donkey_kit-0.2.1/tests/fixtures/anypoint/mcp_policies/optimization-trim-no-policy.json +8 -0
  432. donkey_kit-0.2.1/tests/fixtures/anypoint/mcp_policies/optimization-trim-unreachable.json +8 -0
  433. donkey_kit-0.2.1/tests/fixtures/anypoint/mcp_policies/optimization-trim.json +8 -0
  434. donkey_kit-0.2.1/tests/fixtures/anypoint/mcp_policies/pii-mask-sse.json +5 -0
  435. donkey_kit-0.2.1/tests/fixtures/anypoint/mcp_policies/pii-request.json +5 -0
  436. donkey_kit-0.2.1/tests/fixtures/anypoint/mcp_policies/pii-response-json.json +5 -0
  437. donkey_kit-0.2.1/tests/fixtures/anypoint/mcp_policies/pii-response-json.provenance.json +16 -0
  438. donkey_kit-0.2.1/tests/fixtures/anypoint/mcp_policies/pii-response-sse.json +5 -0
  439. donkey_kit-0.2.1/tests/fixtures/anypoint/mcp_policies/poisoning-block-list.json +5 -0
  440. donkey_kit-0.2.1/tests/fixtures/anypoint/mcp_policies/poisoning-remove-list.json +5 -0
  441. donkey_kit-0.2.1/tests/fixtures/anypoint/mcp_policies/progressive-invalid-params.json +5 -0
  442. donkey_kit-0.2.1/tests/fixtures/anypoint/mcp_policies/progressive-list.json +5 -0
  443. donkey_kit-0.2.1/tests/fixtures/anypoint/mcp_policies/schema-invalid-args.json +5 -0
  444. donkey_kit-0.2.1/tests/fixtures/anypoint/mcp_policies/schema-missing-id.json +5 -0
  445. donkey_kit-0.2.1/tests/fixtures/anypoint/mcp_resolve/README.md +43 -0
  446. donkey_kit-0.2.1/tests/fixtures/anypoint/mcp_resolve/api.describe.json +106 -0
  447. donkey_kit-0.2.1/tests/fixtures/anypoint/mcp_resolve/apis.by-asset.json +82 -0
  448. donkey_kit-0.2.1/tests/fixtures/anypoint/mcp_resolve/apis.by-asset.none.json +4 -0
  449. donkey_kit-0.2.1/tests/fixtures/anypoint/mcp_resolve/apis.by-asset.undeployed-and-deployed.json +131 -0
  450. donkey_kit-0.2.1/tests/fixtures/anypoint/mcp_resolve/environments.json +23 -0
  451. donkey_kit-0.2.1/tests/fixtures/anypoint/mcp_resolve/gateway.json +48 -0
  452. donkey_kit-0.2.1/tests/fixtures/anypoint/mcp_resolve/traffic.no-slash.404.json +8 -0
  453. donkey_kit-0.2.1/tests/fixtures/anypoint/mcp_resolve/traffic.slash.401.json +10 -0
  454. donkey_kit-0.2.1/tests/fixtures/anypoint/mcp_resolve/traffic.unknown-path.404.json +8 -0
  455. donkey_kit-0.2.1/tests/fixtures/anypoint/missing_scope/README.md +17 -0
  456. donkey_kit-0.2.1/tests/fixtures/anypoint/missing_scope/responses.json +56 -0
  457. donkey_kit-0.2.1/tests/fixtures/anypoint/model_routing_qualified_vendor/README.md +8 -0
  458. donkey_kit-0.2.1/tests/fixtures/anypoint/model_routing_qualified_vendor/chat_completions.bare_model_400.body.json +1 -0
  459. donkey_kit-0.2.1/tests/fixtures/anypoint/model_routing_qualified_vendor/chat_completions.bare_model_400.headers.txt +9 -0
  460. donkey_kit-0.2.1/tests/fixtures/anypoint/model_routing_qualified_vendor/chat_completions.fallback.body.json +35 -0
  461. donkey_kit-0.2.1/tests/fixtures/anypoint/model_routing_qualified_vendor/chat_completions.fallback.headers.txt +36 -0
  462. donkey_kit-0.2.1/tests/fixtures/anypoint/model_routing_qualified_vendor/chat_completions.gemini.body.json +1 -0
  463. donkey_kit-0.2.1/tests/fixtures/anypoint/model_routing_qualified_vendor/chat_completions.gemini.headers.txt +23 -0
  464. donkey_kit-0.2.1/tests/fixtures/anypoint/model_routing_qualified_vendor/chat_completions.success.body.json +35 -0
  465. donkey_kit-0.2.1/tests/fixtures/anypoint/model_routing_qualified_vendor/chat_completions.success.headers.txt +36 -0
  466. donkey_kit-0.2.1/tests/fixtures/anypoint/routes/README.md +82 -0
  467. donkey_kit-0.2.1/tests/fixtures/anypoint/routes/bedrockanthropic.responses.message_input.stream.body.txt +24 -0
  468. donkey_kit-0.2.1/tests/fixtures/anypoint/routes/bedrockanthropic.responses.message_input.stream.headers.txt +17 -0
  469. donkey_kit-0.2.1/tests/fixtures/anypoint/routes/bedrockanthropic.responses.message_input.success.body.json +1 -0
  470. donkey_kit-0.2.1/tests/fixtures/anypoint/routes/bedrockanthropic.responses.message_input.success.headers.txt +21 -0
  471. donkey_kit-0.2.1/tests/fixtures/descriptor/README.md +25 -0
  472. donkey_kit-0.2.1/tests/fixtures/descriptor/adk.json +57 -0
  473. donkey_kit-0.2.1/tests/fixtures/descriptor/agent_framework.json +57 -0
  474. donkey_kit-0.2.1/tests/fixtures/descriptor/anthropic.json +61 -0
  475. donkey_kit-0.2.1/tests/fixtures/descriptor/crewai.json +57 -0
  476. donkey_kit-0.2.1/tests/fixtures/descriptor/langchain.json +59 -0
  477. donkey_kit-0.2.1/tests/fixtures/descriptor/llamaindex.json +55 -0
  478. donkey_kit-0.2.1/tests/fixtures/descriptor/mcp-1.json +57 -0
  479. donkey_kit-0.2.1/tests/fixtures/descriptor/mcp-2.json +57 -0
  480. donkey_kit-0.2.1/tests/fixtures/descriptor/openai_agents.json +65 -0
  481. donkey_kit-0.2.1/tests/fixtures/descriptor/strands.json +55 -0
  482. donkey_kit-0.2.1/tests/fixtures/fixtures.lock +392 -0
  483. donkey_kit-0.2.1/tests/fixtures/mcp_binding/adk.json +34 -0
  484. donkey_kit-0.2.1/tests/fixtures/mcp_binding/agent_framework.json +34 -0
  485. donkey_kit-0.2.1/tests/fixtures/mcp_binding/anthropic.json +39 -0
  486. donkey_kit-0.2.1/tests/fixtures/mcp_binding/ciba-adk.json +28 -0
  487. donkey_kit-0.2.1/tests/fixtures/mcp_binding/ciba-af.json +52 -0
  488. donkey_kit-0.2.1/tests/fixtures/mcp_binding/ciba-lg.json +230 -0
  489. donkey_kit-0.2.1/tests/fixtures/mcp_binding/ciba-li.json +157 -0
  490. donkey_kit-0.2.1/tests/fixtures/mcp_binding/ciba-mcp1.json +85 -0
  491. donkey_kit-0.2.1/tests/fixtures/mcp_binding/ciba-mcp2.json +59 -0
  492. donkey_kit-0.2.1/tests/fixtures/mcp_binding/ciba-oa.json +60 -0
  493. donkey_kit-0.2.1/tests/fixtures/mcp_binding/ciba-st.json +28 -0
  494. donkey_kit-0.2.1/tests/fixtures/mcp_binding/crewai.json +43 -0
  495. donkey_kit-0.2.1/tests/fixtures/mcp_binding/denial-adk.json +40 -0
  496. donkey_kit-0.2.1/tests/fixtures/mcp_binding/denial-agent_framework.json +98 -0
  497. donkey_kit-0.2.1/tests/fixtures/mcp_binding/denial-mcp1.json +79 -0
  498. donkey_kit-0.2.1/tests/fixtures/mcp_binding/denial-mcp2.json +103 -0
  499. donkey_kit-0.2.1/tests/fixtures/mcp_binding/denial-openai_agents.json +56 -0
  500. donkey_kit-0.2.1/tests/fixtures/mcp_binding/denial-strands.json +40 -0
  501. donkey_kit-0.2.1/tests/fixtures/mcp_binding/langgraph.json +41 -0
  502. donkey_kit-0.2.1/tests/fixtures/mcp_binding/llamaindex.json +34 -0
  503. donkey_kit-0.2.1/tests/fixtures/mcp_binding/mcp_sdk.json +33 -0
  504. donkey_kit-0.2.1/tests/fixtures/mcp_binding/openai_agents.json +36 -0
  505. donkey_kit-0.2.1/tests/fixtures/mcp_binding/strands.json +33 -0
  506. donkey_kit-0.2.1/tests/typecheck/a2a_outbound.py +25 -0
  507. donkey_kit-0.2.1/tests/typecheck/classify_response_contract.py +54 -0
  508. donkey_kit-0.2.1/tests/typecheck/headline_api_v0_2_contract.py +333 -0
  509. donkey_kit-0.2.1/tests/unit/_fake_anypoint.py +253 -0
  510. donkey_kit-0.2.1/tests/unit/_fake_exchange.py +240 -0
  511. donkey_kit-0.2.1/tests/unit/_json_shapes.py +49 -0
  512. donkey_kit-0.2.1/tests/unit/test_a2a_agent_card_capture.py +32 -0
  513. donkey_kit-0.2.1/tests/unit/test_a2a_facade.py +96 -0
  514. donkey_kit-0.2.1/tests/unit/test_a2a_governed_inbound.py +369 -0
  515. donkey_kit-0.2.1/tests/unit/test_a2a_outbound_spans.py +344 -0
  516. donkey_kit-0.2.1/tests/unit/test_a2a_policy_captures.py +328 -0
  517. donkey_kit-0.2.1/tests/unit/test_a2a_policy_refusals.py +234 -0
  518. donkey_kit-0.2.1/tests/unit/test_a2a_serve.py +356 -0
  519. donkey_kit-0.2.1/tests/unit/test_a2a_transport.py +687 -0
  520. donkey_kit-0.2.1/tests/unit/test_action.py +461 -0
  521. donkey_kit-0.2.1/tests/unit/test_adapter_async_last_call.py +538 -0
  522. donkey_kit-0.2.1/tests/unit/test_adapter_ergonomics.py +824 -0
  523. donkey_kit-0.2.1/tests/unit/test_adapter_jwt_mode.py +176 -0
  524. donkey_kit-0.2.1/tests/unit/test_adapter_roster.py +242 -0
  525. donkey_kit-0.2.1/tests/unit/test_adk_approval_bookkeeping.py +604 -0
  526. donkey_kit-0.2.1/tests/unit/test_adk_approvals.py +228 -0
  527. donkey_kit-0.2.1/tests/unit/test_agent_framework_policy_middleware.py +319 -0
  528. donkey_kit-0.2.1/tests/unit/test_approval_requester.py +609 -0
  529. donkey_kit-0.2.1/tests/unit/test_approvals.py +742 -0
  530. donkey_kit-0.2.1/tests/unit/test_architecture.py +499 -0
  531. donkey_kit-0.2.1/tests/unit/test_as_user_endpoint_trust.py +245 -0
  532. donkey_kit-0.2.1/tests/unit/test_auth.py +261 -0
  533. donkey_kit-0.2.1/tests/unit/test_budget.py +426 -0
  534. donkey_kit-0.2.1/tests/unit/test_budget_upstream.py +314 -0
  535. donkey_kit-0.2.1/tests/unit/test_capture_fixture.py +374 -0
  536. donkey_kit-0.2.1/tests/unit/test_check_doc_badges.py +148 -0
  537. donkey_kit-0.2.1/tests/unit/test_check_doc_snippets.py +216 -0
  538. donkey_kit-0.2.1/tests/unit/test_check_verification_claims.py +92 -0
  539. donkey_kit-0.2.1/tests/unit/test_ci_workflows.py +214 -0
  540. donkey_kit-0.2.1/tests/unit/test_classifier.py +669 -0
  541. donkey_kit-0.2.1/tests/unit/test_cli_blocked_commands.py +61 -0
  542. donkey_kit-0.2.1/tests/unit/test_cli_dev.py +213 -0
  543. donkey_kit-0.2.1/tests/unit/test_cli_entrypoint.py +172 -0
  544. donkey_kit-0.2.1/tests/unit/test_cli_expose.py +295 -0
  545. donkey_kit-0.2.1/tests/unit/test_cli_publish.py +293 -0
  546. donkey_kit-0.2.1/tests/unit/test_cli_scan.py +113 -0
  547. donkey_kit-0.2.1/tests/unit/test_cli_verify.py +350 -0
  548. donkey_kit-0.2.1/tests/unit/test_concurrency_contract.py +352 -0
  549. donkey_kit-0.2.1/tests/unit/test_config.py +432 -0
  550. donkey_kit-0.2.1/tests/unit/test_conformance.py +695 -0
  551. donkey_kit-0.2.1/tests/unit/test_conformance_plugin.py +339 -0
  552. donkey_kit-0.2.1/tests/unit/test_connected_app_scopes.py +135 -0
  553. donkey_kit-0.2.1/tests/unit/test_credential_planes.py +351 -0
  554. donkey_kit-0.2.1/tests/unit/test_custom_policies_page.py +83 -0
  555. donkey_kit-0.2.1/tests/unit/test_decorators.py +318 -0
  556. donkey_kit-0.2.1/tests/unit/test_descriptor_derivation.py +274 -0
  557. donkey_kit-0.2.1/tests/unit/test_discover.py +548 -0
  558. donkey_kit-0.2.1/tests/unit/test_discover_default.py +119 -0
  559. donkey_kit-0.2.1/tests/unit/test_discover_locked.py +144 -0
  560. donkey_kit-0.2.1/tests/unit/test_discover_registry_cache.py +175 -0
  561. donkey_kit-0.2.1/tests/unit/test_docs_mcp_policies.py +60 -0
  562. donkey_kit-0.2.1/tests/unit/test_docs_packaged_mcp_replay.py +78 -0
  563. donkey_kit-0.2.1/tests/unit/test_donkey_simulate_a2a.py +69 -0
  564. donkey_kit-0.2.1/tests/unit/test_donkey_simulate_mcp.py +156 -0
  565. donkey_kit-0.2.1/tests/unit/test_endpoints.py +248 -0
  566. donkey_kit-0.2.1/tests/unit/test_error_taxonomy.py +123 -0
  567. donkey_kit-0.2.1/tests/unit/test_errors.py +908 -0
  568. donkey_kit-0.2.1/tests/unit/test_exchange_page.py +163 -0
  569. donkey_kit-0.2.1/tests/unit/test_exchange_publish.py +930 -0
  570. donkey_kit-0.2.1/tests/unit/test_exchange_search.py +244 -0
  571. donkey_kit-0.2.1/tests/unit/test_explain.py +367 -0
  572. donkey_kit-0.2.1/tests/unit/test_expose.py +578 -0
  573. donkey_kit-0.2.1/tests/unit/test_expose_plan.py +286 -0
  574. donkey_kit-0.2.1/tests/unit/test_fixture_integrity.py +215 -0
  575. donkey_kit-0.2.1/tests/unit/test_gateway.py +150 -0
  576. donkey_kit-0.2.1/tests/unit/test_gateway_catalogs.py +152 -0
  577. donkey_kit-0.2.1/tests/unit/test_gateway_credential_endpoint_trust.py +343 -0
  578. donkey_kit-0.2.1/tests/unit/test_gemini_inbound_contract.py +152 -0
  579. donkey_kit-0.2.1/tests/unit/test_generated_docs.py +384 -0
  580. donkey_kit-0.2.1/tests/unit/test_governed_state_shapes.py +94 -0
  581. donkey_kit-0.2.1/tests/unit/test_hermetic_suite.py +187 -0
  582. donkey_kit-0.2.1/tests/unit/test_house_style_config.py +237 -0
  583. donkey_kit-0.2.1/tests/unit/test_identity.py +420 -0
  584. donkey_kit-0.2.1/tests/unit/test_inbound_correlation.py +242 -0
  585. donkey_kit-0.2.1/tests/unit/test_integration_checklist.py +233 -0
  586. donkey_kit-0.2.1/tests/unit/test_jsonrpc_refusals.py +644 -0
  587. donkey_kit-0.2.1/tests/unit/test_kill_switch.py +334 -0
  588. donkey_kit-0.2.1/tests/unit/test_langgraph_approvals.py +710 -0
  589. donkey_kit-0.2.1/tests/unit/test_langgraph_typed_refusals.py +247 -0
  590. donkey_kit-0.2.1/tests/unit/test_lastcall.py +959 -0
  591. donkey_kit-0.2.1/tests/unit/test_llm_catalog.py +101 -0
  592. donkey_kit-0.2.1/tests/unit/test_llm_metadata.py +139 -0
  593. donkey_kit-0.2.1/tests/unit/test_llm_proxy_contract.py +209 -0
  594. donkey_kit-0.2.1/tests/unit/test_locked_native_snapshot.py +150 -0
  595. donkey_kit-0.2.1/tests/unit/test_lockfile.py +305 -0
  596. donkey_kit-0.2.1/tests/unit/test_logging.py +239 -0
  597. donkey_kit-0.2.1/tests/unit/test_mcp_baseline.py +134 -0
  598. donkey_kit-0.2.1/tests/unit/test_mcp_client.py +439 -0
  599. donkey_kit-0.2.1/tests/unit/test_mcp_pii_refusals.py +323 -0
  600. donkey_kit-0.2.1/tests/unit/test_mcp_policy_captures.py +208 -0
  601. donkey_kit-0.2.1/tests/unit/test_mcp_redirects.py +446 -0
  602. donkey_kit-0.2.1/tests/unit/test_missing_framework_error.py +343 -0
  603. donkey_kit-0.2.1/tests/unit/test_model_routing_1_0_5_contract.py +249 -0
  604. donkey_kit-0.2.1/tests/unit/test_noxfile.py +300 -0
  605. donkey_kit-0.2.1/tests/unit/test_openai_agents_approval_bookkeeping.py +392 -0
  606. donkey_kit-0.2.1/tests/unit/test_openai_agents_approvals.py +1048 -0
  607. donkey_kit-0.2.1/tests/unit/test_openai_agents_correlation.py +96 -0
  608. donkey_kit-0.2.1/tests/unit/test_openai_gemini_stream_contract.py +155 -0
  609. donkey_kit-0.2.1/tests/unit/test_otlp_export.py +499 -0
  610. donkey_kit-0.2.1/tests/unit/test_packaged_a2a_fixtures.py +75 -0
  611. donkey_kit-0.2.1/tests/unit/test_packaged_mcp_fixtures.py +203 -0
  612. donkey_kit-0.2.1/tests/unit/test_per_request_business_group.py +280 -0
  613. donkey_kit-0.2.1/tests/unit/test_pre_commit_lock_sync.py +134 -0
  614. donkey_kit-0.2.1/tests/unit/test_proxy_key_header.py +271 -0
  615. donkey_kit-0.2.1/tests/unit/test_public_api_snapshot.py +309 -0
  616. donkey_kit-0.2.1/tests/unit/test_public_api_surface.py +306 -0
  617. donkey_kit-0.2.1/tests/unit/test_publication_verify.py +285 -0
  618. donkey_kit-0.2.1/tests/unit/test_publish_plan.py +334 -0
  619. donkey_kit-0.2.1/tests/unit/test_refusal_bridge.py +679 -0
  620. donkey_kit-0.2.1/tests/unit/test_refusal_handlers.py +615 -0
  621. donkey_kit-0.2.1/tests/unit/test_refusal_privacy.py +157 -0
  622. donkey_kit-0.2.1/tests/unit/test_registry_shapes.py +146 -0
  623. donkey_kit-0.2.1/tests/unit/test_rejection_contract.py +276 -0
  624. donkey_kit-0.2.1/tests/unit/test_release_workflows.py +122 -0
  625. donkey_kit-0.2.1/tests/unit/test_resolve_mcp.py +356 -0
  626. donkey_kit-0.2.1/tests/unit/test_route_upstream_contract.py +251 -0
  627. donkey_kit-0.2.1/tests/unit/test_run_ledger.py +342 -0
  628. donkey_kit-0.2.1/tests/unit/test_scan.py +717 -0
  629. donkey_kit-0.2.1/tests/unit/test_scope_reentry.py +204 -0
  630. donkey_kit-0.2.1/tests/unit/test_security_auth_remediation.py +288 -0
  631. donkey_kit-0.2.1/tests/unit/test_sensitive_output.py +391 -0
  632. donkey_kit-0.2.1/tests/unit/test_simulate.py +223 -0
  633. donkey_kit-0.2.1/tests/unit/test_simulate_mcp.py +224 -0
  634. donkey_kit-0.2.1/tests/unit/test_simulator_app.py +453 -0
  635. donkey_kit-0.2.1/tests/unit/test_simulator_fixtures.py +150 -0
  636. donkey_kit-0.2.1/tests/unit/test_simulator_ingress.py +567 -0
  637. donkey_kit-0.2.1/tests/unit/test_simulator_native_routes.py +242 -0
  638. donkey_kit-0.2.1/tests/unit/test_simulator_scenarios.py +247 -0
  639. donkey_kit-0.2.1/tests/unit/test_simulator_scenarios_app.py +190 -0
  640. donkey_kit-0.2.1/tests/unit/test_smoke_example.py +62 -0
  641. donkey_kit-0.2.1/tests/unit/test_smoke_test_wheel.py +114 -0
  642. donkey_kit-0.2.1/tests/unit/test_step_up_wait.py +330 -0
  643. donkey_kit-0.2.1/tests/unit/test_strands_approval_bookkeeping.py +411 -0
  644. donkey_kit-0.2.1/tests/unit/test_strands_approvals.py +745 -0
  645. donkey_kit-0.2.1/tests/unit/test_telemetry.py +491 -0
  646. donkey_kit-0.2.1/tests/unit/test_tool_access.py +294 -0
  647. donkey_kit-0.2.1/tests/unit/test_toolset_approval.py +336 -0
  648. donkey_kit-0.2.1/tests/unit/test_toolset_as_user.py +315 -0
  649. donkey_kit-0.2.1/tests/unit/test_toolset_descriptor_cost.py +338 -0
  650. donkey_kit-0.2.1/tests/unit/test_toolset_filter.py +155 -0
  651. donkey_kit-0.2.1/tests/unit/test_toolset_lock.py +177 -0
  652. donkey_kit-0.2.1/tests/unit/test_transport.py +2669 -0
  653. donkey_kit-0.2.1/tests/unit/test_transport_both_clients.py +445 -0
  654. donkey_kit-0.2.1/tests/unit/test_transport_proxy_mounts.py +223 -0
  655. donkey_kit-0.2.1/tests/unit/test_ungoverned_binding.py +166 -0
  656. donkey_kit-0.2.1/tests/unit/test_verification_blocked_surfaces.py +55 -0
  657. donkey_kit-0.2.1/tests/unit/test_verify_agent_card.py +356 -0
  658. donkey_kit-0.2.1/tests/unit/test_workflow_supply_chain.py +176 -0
  659. donkey_kit-0.2.1/vulture_whitelist.py +206 -0
  660. donkey_kit-0.1.3/.gitignore +0 -70
  661. donkey_kit-0.1.3/PKG-INFO +0 -266
  662. donkey_kit-0.1.3/README.md +0 -188
  663. donkey_kit-0.1.3/dependency_allowlist.toml +0 -181
  664. donkey_kit-0.1.3/examples/adk/README.md +0 -87
  665. donkey_kit-0.1.3/examples/adk/main.py +0 -126
  666. donkey_kit-0.1.3/examples/openai_agents/README.md +0 -73
  667. donkey_kit-0.1.3/examples/openai_agents/main.py +0 -112
  668. donkey_kit-0.1.3/pyproject.toml +0 -689
  669. donkey_kit-0.1.3/scripts/capture_fixture.py +0 -256
  670. donkey_kit-0.1.3/scripts/check_docs_sync.py +0 -199
  671. donkey_kit-0.1.3/scripts/check_verification_claims.py +0 -71
  672. donkey_kit-0.1.3/scripts/compile_constraints.py +0 -327
  673. donkey_kit-0.1.3/scripts/generate_docs.py +0 -1624
  674. donkey_kit-0.1.3/scripts/verify_frameworks.py +0 -603
  675. donkey_kit-0.1.3/src/donkey_kit/__init__.py +0 -208
  676. donkey_kit-0.1.3/src/donkey_kit/_testing.py +0 -63
  677. donkey_kit-0.1.3/src/donkey_kit/cli/__init__.py +0 -33
  678. donkey_kit-0.1.3/src/donkey_kit/cli/_app.py +0 -83
  679. donkey_kit-0.1.3/src/donkey_kit/cli/_blocked.py +0 -44
  680. donkey_kit-0.1.3/src/donkey_kit/cli/doctor.py +0 -539
  681. donkey_kit-0.1.3/src/donkey_kit/cli/init.py +0 -159
  682. donkey_kit-0.1.3/src/donkey_kit/cli/mock.py +0 -69
  683. donkey_kit-0.1.3/src/donkey_kit/cli/test.py +0 -51
  684. donkey_kit-0.1.3/src/donkey_kit/conformance/__init__.py +0 -83
  685. donkey_kit-0.1.3/src/donkey_kit/conformance/gateway.py +0 -214
  686. donkey_kit-0.1.3/src/donkey_kit/conformance/harness.py +0 -478
  687. donkey_kit-0.1.3/src/donkey_kit/conformance/plugin.py +0 -317
  688. donkey_kit-0.1.3/src/donkey_kit/conformance/suite.py +0 -309
  689. donkey_kit-0.1.3/src/donkey_kit/core/__init__.py +0 -107
  690. donkey_kit-0.1.3/src/donkey_kit/core/_refusal_body.py +0 -142
  691. donkey_kit-0.1.3/src/donkey_kit/core/_verify.py +0 -228
  692. donkey_kit-0.1.3/src/donkey_kit/core/_wire.py +0 -107
  693. donkey_kit-0.1.3/src/donkey_kit/core/auth.py +0 -324
  694. donkey_kit-0.1.3/src/donkey_kit/core/budget.py +0 -388
  695. donkey_kit-0.1.3/src/donkey_kit/core/cachecontrol.py +0 -212
  696. donkey_kit-0.1.3/src/donkey_kit/core/config.py +0 -1101
  697. donkey_kit-0.1.3/src/donkey_kit/core/correlation.py +0 -198
  698. donkey_kit-0.1.3/src/donkey_kit/core/cost.py +0 -142
  699. donkey_kit-0.1.3/src/donkey_kit/core/endpoints.py +0 -107
  700. donkey_kit-0.1.3/src/donkey_kit/core/errors.py +0 -1087
  701. donkey_kit-0.1.3/src/donkey_kit/core/header_names.py +0 -104
  702. donkey_kit-0.1.3/src/donkey_kit/core/lastcall.py +0 -828
  703. donkey_kit-0.1.3/src/donkey_kit/core/masking.py +0 -93
  704. donkey_kit-0.1.3/src/donkey_kit/core/refusals.py +0 -459
  705. donkey_kit-0.1.3/src/donkey_kit/core/runtime.py +0 -247
  706. donkey_kit-0.1.3/src/donkey_kit/core/telemetry.py +0 -657
  707. donkey_kit-0.1.3/src/donkey_kit/core/toolspec.py +0 -105
  708. donkey_kit-0.1.3/src/donkey_kit/core/transport/__init__.py +0 -101
  709. donkey_kit-0.1.3/src/donkey_kit/core/transport/async_client.py +0 -324
  710. donkey_kit-0.1.3/src/donkey_kit/core/transport/governed.py +0 -266
  711. donkey_kit-0.1.3/src/donkey_kit/core/transport/headers.py +0 -377
  712. donkey_kit-0.1.3/src/donkey_kit/core/transport/httpx2.py +0 -296
  713. donkey_kit-0.1.3/src/donkey_kit/core/transport/observe.py +0 -159
  714. donkey_kit-0.1.3/src/donkey_kit/core/transport/pipeline.py +0 -231
  715. donkey_kit-0.1.3/src/donkey_kit/core/transport/policy.py +0 -244
  716. donkey_kit-0.1.3/src/donkey_kit/core/transport/streaming.py +0 -263
  717. donkey_kit-0.1.3/src/donkey_kit/core/transport/sync_client.py +0 -235
  718. donkey_kit-0.1.3/src/donkey_kit/core/transport/views.py +0 -161
  719. donkey_kit-0.1.3/src/donkey_kit/donkey.py +0 -730
  720. donkey_kit-0.1.3/src/donkey_kit/experimental.py +0 -44
  721. donkey_kit-0.1.3/src/donkey_kit/integrations/__init__.py +0 -264
  722. donkey_kit-0.1.3/src/donkey_kit/integrations/adk.py +0 -235
  723. donkey_kit-0.1.3/src/donkey_kit/integrations/agent_framework.py +0 -263
  724. donkey_kit-0.1.3/src/donkey_kit/integrations/crewai.py +0 -213
  725. donkey_kit-0.1.3/src/donkey_kit/integrations/langgraph.py +0 -216
  726. donkey_kit-0.1.3/src/donkey_kit/integrations/openai_agents.py +0 -89
  727. donkey_kit-0.1.3/src/donkey_kit/integrations/strands.py +0 -199
  728. donkey_kit-0.1.3/src/donkey_kit/llm/catalog.py +0 -59
  729. donkey_kit-0.1.3/src/donkey_kit/registry/__init__.py +0 -34
  730. donkey_kit-0.1.3/src/donkey_kit/registry/criteria.py +0 -81
  731. donkey_kit-0.1.3/src/donkey_kit/registry/exchange.py +0 -128
  732. donkey_kit-0.1.3/src/donkey_kit/registry/introspect.py +0 -40
  733. donkey_kit-0.1.3/src/donkey_kit/registry/models.py +0 -73
  734. donkey_kit-0.1.3/src/donkey_kit/registry/publication.py +0 -193
  735. donkey_kit-0.1.3/src/donkey_kit/simulator/_fixtures/anypoint/llm_proxy/README.md +0 -99
  736. donkey_kit-0.1.3/src/donkey_kit/simulator/_fixtures/fixtures.lock +0 -33
  737. donkey_kit-0.1.3/src/donkey_kit/simulator/_fixtures/rejections/README.md +0 -144
  738. donkey_kit-0.1.3/src/donkey_kit/simulator/app.py +0 -331
  739. donkey_kit-0.1.3/src/donkey_kit/simulator/fixtures.py +0 -543
  740. donkey_kit-0.1.3/src/donkey_kit/simulator/inject.py +0 -211
  741. donkey_kit-0.1.3/src/donkey_kit/simulator/scenarios.py +0 -435
  742. donkey_kit-0.1.3/src/donkey_kit/tools/__init__.py +0 -8
  743. donkey_kit-0.1.3/src/donkey_kit/tools/filter.py +0 -66
  744. donkey_kit-0.1.3/src/donkey_kit/tools/session.py +0 -169
  745. donkey_kit-0.1.3/tests/conformance/contract_drivers.py +0 -287
  746. donkey_kit-0.1.3/tests/conformance/contract_gateway.py +0 -207
  747. donkey_kit-0.1.3/tests/conformance/suite.py +0 -167
  748. donkey_kit-0.1.3/tests/conformance/test_gateway_fixture.py +0 -92
  749. donkey_kit-0.1.3/tests/conformance/test_readme_exemptions_table.py +0 -100
  750. donkey_kit-0.1.3/tests/conformance/test_typed_refusal_bridge.py +0 -346
  751. donkey_kit-0.1.3/tests/conftest.py +0 -218
  752. donkey_kit-0.1.3/tests/fixtures/anypoint/README.md +0 -35
  753. donkey_kit-0.1.3/tests/fixtures/anypoint/routes/README.md +0 -71
  754. donkey_kit-0.1.3/tests/fixtures/fixtures.lock +0 -126
  755. donkey_kit-0.1.3/tests/typecheck/classify_response_contract.py +0 -44
  756. donkey_kit-0.1.3/tests/unit/test_adapter_async_last_call.py +0 -254
  757. donkey_kit-0.1.3/tests/unit/test_adapter_ergonomics.py +0 -824
  758. donkey_kit-0.1.3/tests/unit/test_adapter_jwt_mode.py +0 -162
  759. donkey_kit-0.1.3/tests/unit/test_adapter_roster.py +0 -188
  760. donkey_kit-0.1.3/tests/unit/test_agent_framework_policy_middleware.py +0 -296
  761. donkey_kit-0.1.3/tests/unit/test_architecture.py +0 -460
  762. donkey_kit-0.1.3/tests/unit/test_auth.py +0 -261
  763. donkey_kit-0.1.3/tests/unit/test_budget.py +0 -324
  764. donkey_kit-0.1.3/tests/unit/test_capture_fixture.py +0 -290
  765. donkey_kit-0.1.3/tests/unit/test_check_doc_snippets.py +0 -216
  766. donkey_kit-0.1.3/tests/unit/test_check_verification_claims.py +0 -87
  767. donkey_kit-0.1.3/tests/unit/test_ci_workflows.py +0 -202
  768. donkey_kit-0.1.3/tests/unit/test_cli_blocked_commands.py +0 -56
  769. donkey_kit-0.1.3/tests/unit/test_cli_entrypoint.py +0 -159
  770. donkey_kit-0.1.3/tests/unit/test_config.py +0 -389
  771. donkey_kit-0.1.3/tests/unit/test_conformance.py +0 -560
  772. donkey_kit-0.1.3/tests/unit/test_conformance_plugin.py +0 -246
  773. donkey_kit-0.1.3/tests/unit/test_credential_planes.py +0 -351
  774. donkey_kit-0.1.3/tests/unit/test_decorators.py +0 -203
  775. donkey_kit-0.1.3/tests/unit/test_error_taxonomy.py +0 -99
  776. donkey_kit-0.1.3/tests/unit/test_errors.py +0 -688
  777. donkey_kit-0.1.3/tests/unit/test_fixture_integrity.py +0 -214
  778. donkey_kit-0.1.3/tests/unit/test_gateway.py +0 -103
  779. donkey_kit-0.1.3/tests/unit/test_gemini_inbound_contract.py +0 -152
  780. donkey_kit-0.1.3/tests/unit/test_generated_docs.py +0 -362
  781. donkey_kit-0.1.3/tests/unit/test_governed_state_shapes.py +0 -96
  782. donkey_kit-0.1.3/tests/unit/test_hermetic_suite.py +0 -134
  783. donkey_kit-0.1.3/tests/unit/test_house_style_config.py +0 -235
  784. donkey_kit-0.1.3/tests/unit/test_integration_checklist.py +0 -218
  785. donkey_kit-0.1.3/tests/unit/test_langgraph_typed_refusals.py +0 -247
  786. donkey_kit-0.1.3/tests/unit/test_lastcall.py +0 -925
  787. donkey_kit-0.1.3/tests/unit/test_llm_catalog.py +0 -81
  788. donkey_kit-0.1.3/tests/unit/test_llm_proxy_contract.py +0 -188
  789. donkey_kit-0.1.3/tests/unit/test_logging.py +0 -224
  790. donkey_kit-0.1.3/tests/unit/test_missing_framework_error.py +0 -235
  791. donkey_kit-0.1.3/tests/unit/test_noxfile.py +0 -283
  792. donkey_kit-0.1.3/tests/unit/test_openai_gemini_stream_contract.py +0 -155
  793. donkey_kit-0.1.3/tests/unit/test_otlp_export.py +0 -390
  794. donkey_kit-0.1.3/tests/unit/test_public_api_surface.py +0 -211
  795. donkey_kit-0.1.3/tests/unit/test_refusal_bridge.py +0 -485
  796. donkey_kit-0.1.3/tests/unit/test_registry_shapes.py +0 -166
  797. donkey_kit-0.1.3/tests/unit/test_rejection_contract.py +0 -189
  798. donkey_kit-0.1.3/tests/unit/test_release_workflows.py +0 -105
  799. donkey_kit-0.1.3/tests/unit/test_route_upstream_contract.py +0 -213
  800. donkey_kit-0.1.3/tests/unit/test_sensitive_output.py +0 -391
  801. donkey_kit-0.1.3/tests/unit/test_simulate.py +0 -220
  802. donkey_kit-0.1.3/tests/unit/test_simulator_app.py +0 -333
  803. donkey_kit-0.1.3/tests/unit/test_simulator_fixtures.py +0 -130
  804. donkey_kit-0.1.3/tests/unit/test_simulator_scenarios.py +0 -219
  805. donkey_kit-0.1.3/tests/unit/test_simulator_scenarios_app.py +0 -172
  806. donkey_kit-0.1.3/tests/unit/test_smoke_example.py +0 -61
  807. donkey_kit-0.1.3/tests/unit/test_smoke_test_wheel.py +0 -105
  808. donkey_kit-0.1.3/tests/unit/test_telemetry.py +0 -473
  809. donkey_kit-0.1.3/tests/unit/test_transport.py +0 -2538
  810. donkey_kit-0.1.3/tests/unit/test_transport_both_clients.py +0 -343
  811. donkey_kit-0.1.3/tests/unit/test_transport_proxy_mounts.py +0 -211
  812. donkey_kit-0.1.3/tests/unit/test_verification_blocked_surfaces.py +0 -74
  813. donkey_kit-0.1.3/tests/unit/test_workflow_supply_chain.py +0 -160
  814. donkey_kit-0.1.3/vulture_whitelist.py +0 -145
  815. {donkey_kit-0.1.3 → donkey_kit-0.2.1}/LICENSE +0 -0
  816. {donkey_kit-0.1.3 → donkey_kit-0.2.1}/examples/agent_framework/README.md +0 -0
  817. {donkey_kit-0.1.3 → donkey_kit-0.2.1}/examples/agent_framework/main.py +0 -0
  818. {donkey_kit-0.1.3 → donkey_kit-0.2.1}/examples/anthropic/README.md +0 -0
  819. {donkey_kit-0.1.3 → donkey_kit-0.2.1}/examples/anthropic/main.py +0 -0
  820. {donkey_kit-0.1.3 → donkey_kit-0.2.1}/examples/crewai/README.md +0 -0
  821. {donkey_kit-0.1.3 → donkey_kit-0.2.1}/examples/crewai/main.py +0 -0
  822. {donkey_kit-0.1.3 → donkey_kit-0.2.1}/examples/langgraph/README.md +0 -0
  823. {donkey_kit-0.1.3 → donkey_kit-0.2.1}/examples/langgraph/collector.py +0 -0
  824. {donkey_kit-0.1.3 → donkey_kit-0.2.1}/examples/langgraph/main.py +0 -0
  825. {donkey_kit-0.1.3 → donkey_kit-0.2.1}/examples/llamaindex/README.md +0 -0
  826. {donkey_kit-0.1.3 → donkey_kit-0.2.1}/examples/llamaindex/main.py +0 -0
  827. {donkey_kit-0.1.3 → donkey_kit-0.2.1}/examples/quickstart/README.md +0 -0
  828. {donkey_kit-0.1.3 → donkey_kit-0.2.1}/examples/quickstart/main.py +0 -0
  829. {donkey_kit-0.1.3 → donkey_kit-0.2.1}/examples/strands/README.md +0 -0
  830. {donkey_kit-0.1.3 → donkey_kit-0.2.1}/examples/strands/main.py +0 -0
  831. {donkey_kit-0.1.3 → donkey_kit-0.2.1}/scripts/check_commit_identities.py +0 -0
  832. {donkey_kit-0.1.3 → donkey_kit-0.2.1}/scripts/check_doc_links.py +0 -0
  833. {donkey_kit-0.1.3 → donkey_kit-0.2.1}/scripts/check_doc_snippets.py +0 -0
  834. {donkey_kit-0.1.3 → donkey_kit-0.2.1}/scripts/check_floors.py +0 -0
  835. {donkey_kit-0.1.3 → donkey_kit-0.2.1}/scripts/check_framework_releases.py +0 -0
  836. {donkey_kit-0.1.3 → donkey_kit-0.2.1}/scripts/check_new_dependencies.py +0 -0
  837. {donkey_kit-0.1.3 → donkey_kit-0.2.1}/scripts/check_release_version.py +0 -0
  838. {donkey_kit-0.1.3 → donkey_kit-0.2.1}/scripts/coinstall_matrix.py +0 -0
  839. {donkey_kit-0.1.3 → donkey_kit-0.2.1}/scripts/compare_benchmark_trend.py +0 -0
  840. {donkey_kit-0.1.3 → donkey_kit-0.2.1}/scripts/review_framework_release.py +0 -0
  841. {donkey_kit-0.1.3 → donkey_kit-0.2.1}/scripts/scrub_fixtures.py +0 -0
  842. {donkey_kit-0.1.3 → donkey_kit-0.2.1}/scripts/smoke_example.py +0 -0
  843. {donkey_kit-0.1.3 → donkey_kit-0.2.1}/scripts/smoke_test_wheel.py +0 -0
  844. {donkey_kit-0.1.3 → donkey_kit-0.2.1}/src/donkey_kit/conformance/report.py +0 -0
  845. {donkey_kit-0.1.3 → donkey_kit-0.2.1}/src/donkey_kit/core/_response.py +0 -0
  846. {donkey_kit-0.1.3 → donkey_kit-0.2.1}/src/donkey_kit/core/cache.py +0 -0
  847. {donkey_kit-0.1.3 → donkey_kit-0.2.1}/src/donkey_kit/core/transport/failures.py +0 -0
  848. {donkey_kit-0.1.3 → donkey_kit-0.2.1}/src/donkey_kit/integrations/_base.py +0 -0
  849. {donkey_kit-0.1.3 → donkey_kit-0.2.1}/src/donkey_kit/integrations/anthropic.py +0 -0
  850. {donkey_kit-0.1.3 → donkey_kit-0.2.1}/src/donkey_kit/integrations/llamaindex.py +0 -0
  851. {donkey_kit-0.1.3 → donkey_kit-0.2.1}/src/donkey_kit/llm/__init__.py +0 -0
  852. {donkey_kit-0.1.3 → donkey_kit-0.2.1}/src/donkey_kit/llm/client.py +0 -0
  853. {donkey_kit-0.1.3 → donkey_kit-0.2.1}/src/donkey_kit/py.typed +0 -0
  854. {donkey_kit-0.1.3 → donkey_kit-0.2.1}/src/donkey_kit/registry/governance.py +0 -0
  855. {donkey_kit-0.1.3 → donkey_kit-0.2.1}/src/donkey_kit/simulator/__init__.py +0 -0
  856. {donkey_kit-0.1.3 → donkey_kit-0.2.1}/src/donkey_kit/simulator/_fixtures/anypoint/azure_openai_routing/README.md +0 -0
  857. {donkey_kit-0.1.3 → donkey_kit-0.2.1}/src/donkey_kit/simulator/_fixtures/anypoint/azure_openai_routing/reject.responses-not-served.body.json +0 -0
  858. {donkey_kit-0.1.3 → donkey_kit-0.2.1}/src/donkey_kit/simulator/_fixtures/anypoint/azure_openai_routing/reject.responses-not-served.headers.txt +0 -0
  859. {donkey_kit-0.1.3 → donkey_kit-0.2.1}/src/donkey_kit/simulator/_fixtures/anypoint/azure_openai_routing/reject.unserved-base-path.headers.txt +0 -0
  860. {donkey_kit-0.1.3 → donkey_kit-0.2.1}/src/donkey_kit/simulator/_fixtures/anypoint/azure_openai_routing/request.success.http +0 -0
  861. {donkey_kit-0.1.3 → donkey_kit-0.2.1}/src/donkey_kit/simulator/_fixtures/anypoint/azure_openai_routing/responses.chat-completions.success.body.json +0 -0
  862. {donkey_kit-0.1.3 → donkey_kit-0.2.1}/src/donkey_kit/simulator/_fixtures/anypoint/azure_openai_routing/responses.chat-completions.success.headers.txt +0 -0
  863. {donkey_kit-0.1.3 → donkey_kit-0.2.1}/src/donkey_kit/simulator/_fixtures/anypoint/llm_proxy/api_describe.openai-sdk.json +0 -0
  864. {donkey_kit-0.1.3 → donkey_kit-0.2.1}/src/donkey_kit/simulator/_fixtures/anypoint/llm_proxy/models.notfound.headers.txt +0 -0
  865. {donkey_kit-0.1.3 → donkey_kit-0.2.1}/src/donkey_kit/simulator/_fixtures/anypoint/llm_proxy/policy_list.openai-sdk.json +0 -0
  866. {donkey_kit-0.1.3 → donkey_kit-0.2.1}/src/donkey_kit/simulator/_fixtures/anypoint/llm_proxy/reject.client-id-missing.body.json +0 -0
  867. {donkey_kit-0.1.3 → donkey_kit-0.2.1}/src/donkey_kit/simulator/_fixtures/anypoint/llm_proxy/reject.client-id-missing.headers.txt +0 -0
  868. /donkey_kit-0.1.3/src/donkey_kit/simulator/_fixtures/anypoint/llm_proxy/reject.model-not-routable.headers.txt → /donkey_kit-0.2.1/src/donkey_kit/simulator/_fixtures/anypoint/llm_proxy/reject.model-missing.headers.txt +0 -0
  869. {donkey_kit-0.1.3 → donkey_kit-0.2.1}/src/donkey_kit/simulator/_fixtures/anypoint/llm_proxy/reject.model-not-found.body.json +0 -0
  870. {donkey_kit-0.1.3 → donkey_kit-0.2.1}/src/donkey_kit/simulator/_fixtures/anypoint/llm_proxy/reject.model-not-routable.body.json +0 -0
  871. {donkey_kit-0.1.3 → donkey_kit-0.2.1}/src/donkey_kit/simulator/_fixtures/anypoint/llm_proxy/reject.pii-detected.body.json +0 -0
  872. {donkey_kit-0.1.3 → donkey_kit-0.2.1}/src/donkey_kit/simulator/_fixtures/anypoint/llm_proxy/reject.pii-detected.headers.txt +0 -0
  873. {donkey_kit-0.1.3 → donkey_kit-0.2.1}/src/donkey_kit/simulator/_fixtures/anypoint/llm_proxy/reject.token-rate-limit.body.empty +0 -0
  874. {donkey_kit-0.1.3 → donkey_kit-0.2.1}/src/donkey_kit/simulator/_fixtures/anypoint/llm_proxy/reject.token-rate-limit.headers.txt +0 -0
  875. {donkey_kit-0.1.3 → donkey_kit-0.2.1}/src/donkey_kit/simulator/_fixtures/anypoint/llm_proxy/responses.stream.headers.txt +0 -0
  876. {donkey_kit-0.1.3 → donkey_kit-0.2.1}/src/donkey_kit/simulator/_fixtures/anypoint/llm_proxy/responses.stream.sample.sse +0 -0
  877. {donkey_kit-0.1.3 → donkey_kit-0.2.1}/src/donkey_kit/simulator/_fixtures/anypoint/llm_proxy/responses.success.body.json +0 -0
  878. {donkey_kit-0.1.3 → donkey_kit-0.2.1}/src/donkey_kit/simulator/_fixtures/anypoint/llm_proxy/responses.success.headers.txt +0 -0
  879. {donkey_kit-0.1.3 → donkey_kit-0.2.1}/src/donkey_kit/simulator/_fixtures/anypoint/llm_proxy/responses.success.policy-applied.headers.txt +0 -0
  880. {donkey_kit-0.1.3 → donkey_kit-0.2.1}/src/donkey_kit/simulator/_fixtures/anypoint/request_rate_limit/README.md +0 -0
  881. {donkey_kit-0.1.3 → donkey_kit-0.2.1}/src/donkey_kit/simulator/_fixtures/anypoint/request_rate_limit/reject.request-rate-limit.body.json +0 -0
  882. {donkey_kit-0.1.3 → donkey_kit-0.2.1}/src/donkey_kit/simulator/_fixtures/anypoint/request_rate_limit/reject.request-rate-limit.headers.txt +0 -0
  883. {donkey_kit-0.1.3 → donkey_kit-0.2.1}/src/donkey_kit/simulator/_fixtures/anypoint/semantic_routing/README.md +0 -0
  884. {donkey_kit-0.1.3 → donkey_kit-0.2.1}/src/donkey_kit/simulator/_fixtures/anypoint/semantic_routing/request.success.http +0 -0
  885. {donkey_kit-0.1.3 → donkey_kit-0.2.1}/src/donkey_kit/simulator/_fixtures/anypoint/semantic_routing/responses.code.body.json +0 -0
  886. {donkey_kit-0.1.3 → donkey_kit-0.2.1}/src/donkey_kit/simulator/_fixtures/anypoint/semantic_routing/responses.code.headers.txt +0 -0
  887. {donkey_kit-0.1.3 → donkey_kit-0.2.1}/src/donkey_kit/simulator/_fixtures/anypoint/semantic_routing/responses.finance.body.json +0 -0
  888. {donkey_kit-0.1.3 → donkey_kit-0.2.1}/src/donkey_kit/simulator/_fixtures/anypoint/semantic_routing/responses.finance.headers.txt +0 -0
  889. {donkey_kit-0.1.3 → donkey_kit-0.2.1}/src/donkey_kit/simulator/_fixtures/anypoint/semantic_routing/responses.offtopic.body.json +0 -0
  890. {donkey_kit-0.1.3 → donkey_kit-0.2.1}/src/donkey_kit/simulator/_fixtures/anypoint/semantic_routing/responses.offtopic.headers.txt +0 -0
  891. {donkey_kit-0.1.3 → donkey_kit-0.2.1}/src/donkey_kit/simulator/_fixtures/openai_public/README.md +0 -0
  892. {donkey_kit-0.1.3 → donkey_kit-0.2.1}/src/donkey_kit/simulator/_fixtures/openai_public/chat-completions.stream.headers.txt +0 -0
  893. {donkey_kit-0.1.3 → donkey_kit-0.2.1}/src/donkey_kit/simulator/_fixtures/openai_public/chat-completions.stream.sse +0 -0
  894. {donkey_kit-0.1.3 → donkey_kit-0.2.1}/src/donkey_kit/simulator/_fixtures/rejections/reject.agent-killed.body.json +0 -0
  895. {donkey_kit-0.1.3 → donkey_kit-0.2.1}/src/donkey_kit/simulator/_fixtures/rejections/reject.agent-killed.headers.txt +0 -0
  896. /donkey_kit-0.1.3/src/donkey_kit/simulator/_fixtures/rejections/reject.regex-prompt-guard.headers.txt → /donkey_kit-0.2.1/src/donkey_kit/simulator/_fixtures/rejections/reject.ciba-denied.headers.txt +0 -0
  897. {donkey_kit-0.1.3 → donkey_kit-0.2.1}/src/donkey_kit/simulator/_fixtures/rejections/reject.content-moderation.body.empty +0 -0
  898. {donkey_kit-0.1.3 → donkey_kit-0.2.1}/src/donkey_kit/simulator/_fixtures/rejections/reject.content-moderation.headers.txt +0 -0
  899. {donkey_kit-0.1.3 → donkey_kit-0.2.1}/src/donkey_kit/simulator/_fixtures/rejections/reject.content-safety-bedrock.body.json +0 -0
  900. {donkey_kit-0.1.3 → donkey_kit-0.2.1}/src/donkey_kit/simulator/_fixtures/rejections/reject.content-safety-bedrock.headers.txt +0 -0
  901. {donkey_kit-0.1.3 → donkey_kit-0.2.1}/src/donkey_kit/simulator/_fixtures/rejections/reject.content-safety.body.json +0 -0
  902. {donkey_kit-0.1.3 → donkey_kit-0.2.1}/src/donkey_kit/simulator/_fixtures/rejections/reject.content-safety.headers.txt +0 -0
  903. {donkey_kit-0.1.3 → donkey_kit-0.2.1}/src/donkey_kit/simulator/_fixtures/rejections/reject.injection-protection.body.json +0 -0
  904. {donkey_kit-0.1.3 → donkey_kit-0.2.1}/src/donkey_kit/simulator/_fixtures/rejections/reject.injection-protection.headers.txt +0 -0
  905. {donkey_kit-0.1.3 → donkey_kit-0.2.1}/src/donkey_kit/simulator/_fixtures/rejections/reject.regex-prompt-guard.body.json +0 -0
  906. {donkey_kit-0.1.3 → donkey_kit-0.2.1}/src/donkey_kit/simulator/_fixtures/rejections/reject.upstream-5xx.body.empty +0 -0
  907. {donkey_kit-0.1.3 → donkey_kit-0.2.1}/src/donkey_kit/simulator/_fixtures/rejections/reject.upstream-5xx.headers.txt +0 -0
  908. {donkey_kit-0.1.3 → donkey_kit-0.2.1}/src/donkey_kit/simulator/server.py +0 -0
  909. {donkey_kit-0.1.3 → donkey_kit-0.2.1}/tests/benchmark/test_span_overhead.py +0 -0
  910. {donkey_kit-0.1.3 → donkey_kit-0.2.1}/tests/conformance/conftest.py +0 -0
  911. {donkey_kit-0.1.3 → donkey_kit-0.2.1}/tests/conformance/test_adapter_contract.py +0 -0
  912. {donkey_kit-0.1.3 → donkey_kit-0.2.1}/tests/conformance/test_budget_pacing_e2e.py +0 -0
  913. {donkey_kit-0.1.3 → donkey_kit-0.2.1}/tests/conformance/test_langgraph_conformance.py +0 -0
  914. {donkey_kit-0.1.3 → donkey_kit-0.2.1}/tests/conformance/test_simulator_boot.py +0 -0
  915. {donkey_kit-0.1.3 → donkey_kit-0.2.1}/tests/conformance/test_stock_openai_honesty.py +0 -0
  916. {donkey_kit-0.1.3 → donkey_kit-0.2.1}/tests/conformance/test_transport_exemptions.py +0 -0
  917. {donkey_kit-0.1.3 → donkey_kit-0.2.1}/tests/fixtures/a2d/README.md +0 -0
  918. {donkey_kit-0.1.3 → donkey_kit-0.2.1}/tests/fixtures/a2d/environments.sample.json +0 -0
  919. {donkey_kit-0.1.3 → donkey_kit-0.2.1}/tests/fixtures/a2d/mcp_server_spec.account_management.json +0 -0
  920. {donkey_kit-0.1.3 → donkey_kit-0.2.1}/tests/fixtures/a2d/mcp_servers.list.json +0 -0
  921. {donkey_kit-0.1.3 → donkey_kit-0.2.1}/tests/fixtures/anypoint/anthropic_inbound/README.md +0 -0
  922. {donkey_kit-0.1.3 → donkey_kit-0.2.1}/tests/fixtures/anypoint/anthropic_inbound/reject.client-id-missing.body.json +0 -0
  923. {donkey_kit-0.1.3 → donkey_kit-0.2.1}/tests/fixtures/anypoint/anthropic_inbound/reject.client-id-missing.headers.txt +0 -0
  924. {donkey_kit-0.1.3 → donkey_kit-0.2.1}/tests/fixtures/anypoint/anthropic_inbound/reject.openai-shape.body.json +0 -0
  925. {donkey_kit-0.1.3 → donkey_kit-0.2.1}/tests/fixtures/anypoint/anthropic_inbound/reject.openai-shape.headers.txt +0 -0
  926. {donkey_kit-0.1.3 → donkey_kit-0.2.1}/tests/fixtures/anypoint/anthropic_inbound/request.success.http +0 -0
  927. {donkey_kit-0.1.3 → donkey_kit-0.2.1}/tests/fixtures/anypoint/anthropic_inbound/responses.success.body.json +0 -0
  928. {donkey_kit-0.1.3 → donkey_kit-0.2.1}/tests/fixtures/anypoint/anthropic_inbound/responses.success.headers.txt +0 -0
  929. {donkey_kit-0.1.3 → donkey_kit-0.2.1}/tests/fixtures/anypoint/api_describe.product-catalog-mcp.json +0 -0
  930. {donkey_kit-0.1.3 → donkey_kit-0.2.1}/tests/fixtures/anypoint/api_list.sandbox.json +0 -0
  931. {donkey_kit-0.1.3 → donkey_kit-0.2.1}/tests/fixtures/anypoint/gemini_inbound/README.md +0 -0
  932. {donkey_kit-0.1.3 → donkey_kit-0.2.1}/tests/fixtures/anypoint/gemini_inbound/reject.client-id-missing.body.json +0 -0
  933. {donkey_kit-0.1.3 → donkey_kit-0.2.1}/tests/fixtures/anypoint/gemini_inbound/reject.client-id-missing.headers.txt +0 -0
  934. {donkey_kit-0.1.3 → donkey_kit-0.2.1}/tests/fixtures/anypoint/gemini_inbound/reject.openai-shape.body.json +0 -0
  935. {donkey_kit-0.1.3 → donkey_kit-0.2.1}/tests/fixtures/anypoint/gemini_inbound/reject.openai-shape.headers.txt +0 -0
  936. {donkey_kit-0.1.3 → donkey_kit-0.2.1}/tests/fixtures/anypoint/gemini_inbound/reject.unknown-model.body.json +0 -0
  937. {donkey_kit-0.1.3 → donkey_kit-0.2.1}/tests/fixtures/anypoint/gemini_inbound/reject.unknown-model.headers.txt +0 -0
  938. {donkey_kit-0.1.3 → donkey_kit-0.2.1}/tests/fixtures/anypoint/gemini_inbound/request.stream.http +0 -0
  939. {donkey_kit-0.1.3 → donkey_kit-0.2.1}/tests/fixtures/anypoint/gemini_inbound/request.success.http +0 -0
  940. {donkey_kit-0.1.3 → donkey_kit-0.2.1}/tests/fixtures/anypoint/gemini_inbound/request.unknown-model.http +0 -0
  941. {donkey_kit-0.1.3 → donkey_kit-0.2.1}/tests/fixtures/anypoint/gemini_inbound/responses.stream.body.txt +0 -0
  942. {donkey_kit-0.1.3 → donkey_kit-0.2.1}/tests/fixtures/anypoint/gemini_inbound/responses.stream.headers.txt +0 -0
  943. {donkey_kit-0.1.3 → donkey_kit-0.2.1}/tests/fixtures/anypoint/gemini_inbound/responses.success.body.json +0 -0
  944. {donkey_kit-0.1.3 → donkey_kit-0.2.1}/tests/fixtures/anypoint/gemini_inbound/responses.success.headers.txt +0 -0
  945. {donkey_kit-0.1.3 → donkey_kit-0.2.1}/tests/fixtures/anypoint/model_wallet/README.md +0 -0
  946. {donkey_kit-0.1.3 → donkey_kit-0.2.1}/tests/fixtures/anypoint/model_wallet/jwt.claims.json +0 -0
  947. {donkey_kit-0.1.3 → donkey_kit-0.2.1}/tests/fixtures/anypoint/model_wallet/mw-policies.json +0 -0
  948. {donkey_kit-0.1.3 → donkey_kit-0.2.1}/tests/fixtures/anypoint/model_wallet/probe.exhaustion-run.json +0 -0
  949. {donkey_kit-0.1.3 → donkey_kit-0.2.1}/tests/fixtures/anypoint/model_wallet/reject.jwt-invalid.body.json +0 -0
  950. {donkey_kit-0.1.3 → donkey_kit-0.2.1}/tests/fixtures/anypoint/model_wallet/reject.jwt-invalid.headers.txt +0 -0
  951. {donkey_kit-0.1.3 → donkey_kit-0.2.1}/tests/fixtures/anypoint/model_wallet/reject.jwt-missing.body.json +0 -0
  952. {donkey_kit-0.1.3 → donkey_kit-0.2.1}/tests/fixtures/anypoint/model_wallet/reject.jwt-missing.headers.txt +0 -0
  953. {donkey_kit-0.1.3 → donkey_kit-0.2.1}/tests/fixtures/anypoint/model_wallet/reject.wallet-exhausted.body.json +0 -0
  954. {donkey_kit-0.1.3 → donkey_kit-0.2.1}/tests/fixtures/anypoint/model_wallet/reject.wallet-exhausted.headers.txt +0 -0
  955. {donkey_kit-0.1.3 → donkey_kit-0.2.1}/tests/fixtures/anypoint/model_wallet/request.success.http +0 -0
  956. {donkey_kit-0.1.3 → donkey_kit-0.2.1}/tests/fixtures/anypoint/model_wallet/responses.exhaustion-run.first.headers.txt +0 -0
  957. {donkey_kit-0.1.3 → donkey_kit-0.2.1}/tests/fixtures/anypoint/model_wallet/responses.exhaustion-run.last.headers.txt +0 -0
  958. {donkey_kit-0.1.3 → donkey_kit-0.2.1}/tests/fixtures/anypoint/model_wallet/responses.success.body.json +0 -0
  959. {donkey_kit-0.1.3 → donkey_kit-0.2.1}/tests/fixtures/anypoint/model_wallet/responses.success.headers.txt +0 -0
  960. {donkey_kit-0.1.3 → donkey_kit-0.2.1}/tests/fixtures/anypoint/model_wallet/wallet.definition.json +0 -0
  961. {donkey_kit-0.1.3 → donkey_kit-0.2.1}/tests/fixtures/anypoint/openai_gemini_stream/README.md +0 -0
  962. {donkey_kit-0.1.3 → donkey_kit-0.2.1}/tests/fixtures/anypoint/openai_gemini_stream/request.stream-tool-call.http +0 -0
  963. {donkey_kit-0.1.3 → donkey_kit-0.2.1}/tests/fixtures/anypoint/openai_gemini_stream/request.stream.http +0 -0
  964. {donkey_kit-0.1.3 → donkey_kit-0.2.1}/tests/fixtures/anypoint/openai_gemini_stream/request.stream.request-compression.http +0 -0
  965. {donkey_kit-0.1.3 → donkey_kit-0.2.1}/tests/fixtures/anypoint/openai_gemini_stream/responses.stream-tool-call.body.txt +0 -0
  966. {donkey_kit-0.1.3 → donkey_kit-0.2.1}/tests/fixtures/anypoint/openai_gemini_stream/responses.stream-tool-call.headers.txt +0 -0
  967. {donkey_kit-0.1.3 → donkey_kit-0.2.1}/tests/fixtures/anypoint/openai_gemini_stream/responses.stream.body.txt +0 -0
  968. {donkey_kit-0.1.3 → donkey_kit-0.2.1}/tests/fixtures/anypoint/openai_gemini_stream/responses.stream.headers.txt +0 -0
  969. {donkey_kit-0.1.3 → donkey_kit-0.2.1}/tests/fixtures/anypoint/openai_gemini_stream/responses.stream.request-compression.body.txt +0 -0
  970. {donkey_kit-0.1.3 → donkey_kit-0.2.1}/tests/fixtures/anypoint/openai_gemini_stream/responses.stream.request-compression.headers.txt +0 -0
  971. {donkey_kit-0.1.3 → donkey_kit-0.2.1}/tests/fixtures/anypoint/policy_list.product-catalog-mcp.json +0 -0
  972. {donkey_kit-0.1.3 → donkey_kit-0.2.1}/tests/fixtures/anypoint/request_rate_limit/README.md +0 -0
  973. {donkey_kit-0.1.3 → donkey_kit-0.2.1}/tests/fixtures/anypoint/request_rate_limit/reject.request-rate-limit.repeat.headers.txt +0 -0
  974. {donkey_kit-0.1.3 → donkey_kit-0.2.1}/tests/fixtures/anypoint/request_rate_limit/responses.after-reset.headers.txt +0 -0
  975. {donkey_kit-0.1.3 → donkey_kit-0.2.1}/tests/fixtures/anypoint/request_rate_limit/responses.success.body.json +0 -0
  976. {donkey_kit-0.1.3 → donkey_kit-0.2.1}/tests/fixtures/anypoint/request_rate_limit/responses.success.headers.txt +0 -0
  977. {donkey_kit-0.1.3 → donkey_kit-0.2.1}/tests/fixtures/anypoint/request_rate_limit/responses.window-exhausted.headers.txt +0 -0
  978. {donkey_kit-0.1.3 → donkey_kit-0.2.1}/tests/fixtures/anypoint/routes/azureopenai.chat_completions.reject.body.json +0 -0
  979. {donkey_kit-0.1.3 → donkey_kit-0.2.1}/tests/fixtures/anypoint/routes/azureopenai.chat_completions.reject.headers.txt +0 -0
  980. {donkey_kit-0.1.3 → donkey_kit-0.2.1}/tests/fixtures/anypoint/routes/azureopenai.chat_completions.stream.body.txt +0 -0
  981. {donkey_kit-0.1.3 → donkey_kit-0.2.1}/tests/fixtures/anypoint/routes/azureopenai.chat_completions.stream.headers.txt +0 -0
  982. {donkey_kit-0.1.3 → donkey_kit-0.2.1}/tests/fixtures/anypoint/routes/azureopenai.chat_completions.success.body.json +0 -0
  983. {donkey_kit-0.1.3 → donkey_kit-0.2.1}/tests/fixtures/anypoint/routes/azureopenai.chat_completions.success.headers.txt +0 -0
  984. {donkey_kit-0.1.3 → donkey_kit-0.2.1}/tests/fixtures/anypoint/routes/azureopenai.responses.reject.body.json +0 -0
  985. {donkey_kit-0.1.3 → donkey_kit-0.2.1}/tests/fixtures/anypoint/routes/azureopenai.responses.reject.headers.txt +0 -0
  986. {donkey_kit-0.1.3 → donkey_kit-0.2.1}/tests/fixtures/anypoint/routes/azureopenai.responses.stream.body.json +0 -0
  987. {donkey_kit-0.1.3 → donkey_kit-0.2.1}/tests/fixtures/anypoint/routes/azureopenai.responses.stream.headers.txt +0 -0
  988. {donkey_kit-0.1.3 → donkey_kit-0.2.1}/tests/fixtures/anypoint/routes/azureopenai.responses.success.body.json +0 -0
  989. {donkey_kit-0.1.3 → donkey_kit-0.2.1}/tests/fixtures/anypoint/routes/azureopenai.responses.success.headers.txt +0 -0
  990. {donkey_kit-0.1.3 → donkey_kit-0.2.1}/tests/fixtures/anypoint/routes/bedrockanthropic.chat_completions.reject.body.json +0 -0
  991. {donkey_kit-0.1.3 → donkey_kit-0.2.1}/tests/fixtures/anypoint/routes/bedrockanthropic.chat_completions.reject.headers.txt +0 -0
  992. {donkey_kit-0.1.3 → donkey_kit-0.2.1}/tests/fixtures/anypoint/routes/bedrockanthropic.chat_completions.stream.body.txt +0 -0
  993. {donkey_kit-0.1.3 → donkey_kit-0.2.1}/tests/fixtures/anypoint/routes/bedrockanthropic.chat_completions.stream.headers.txt +0 -0
  994. {donkey_kit-0.1.3 → donkey_kit-0.2.1}/tests/fixtures/anypoint/routes/bedrockanthropic.chat_completions.success.body.json +0 -0
  995. {donkey_kit-0.1.3 → donkey_kit-0.2.1}/tests/fixtures/anypoint/routes/bedrockanthropic.chat_completions.success.headers.txt +0 -0
  996. {donkey_kit-0.1.3 → donkey_kit-0.2.1}/tests/fixtures/anypoint/routes/bedrockanthropic.responses.reject.body.json +0 -0
  997. {donkey_kit-0.1.3 → donkey_kit-0.2.1}/tests/fixtures/anypoint/routes/bedrockanthropic.responses.reject.headers.txt +0 -0
  998. {donkey_kit-0.1.3 → donkey_kit-0.2.1}/tests/fixtures/anypoint/routes/bedrockanthropic.responses.stream.body.txt +0 -0
  999. {donkey_kit-0.1.3 → donkey_kit-0.2.1}/tests/fixtures/anypoint/routes/bedrockanthropic.responses.stream.headers.txt +0 -0
  1000. {donkey_kit-0.1.3 → donkey_kit-0.2.1}/tests/fixtures/anypoint/routes/bedrockanthropic.responses.success.body.json +0 -0
  1001. {donkey_kit-0.1.3 → donkey_kit-0.2.1}/tests/fixtures/anypoint/routes/bedrockanthropic.responses.success.headers.txt +0 -0
  1002. {donkey_kit-0.1.3 → donkey_kit-0.2.1}/tests/fixtures/anypoint/routes/gemini.chat_completions.reject.body.json +0 -0
  1003. {donkey_kit-0.1.3 → donkey_kit-0.2.1}/tests/fixtures/anypoint/routes/gemini.chat_completions.reject.headers.txt +0 -0
  1004. {donkey_kit-0.1.3 → donkey_kit-0.2.1}/tests/fixtures/anypoint/routes/gemini.chat_completions.stream.body.txt +0 -0
  1005. {donkey_kit-0.1.3 → donkey_kit-0.2.1}/tests/fixtures/anypoint/routes/gemini.chat_completions.stream.headers.txt +0 -0
  1006. {donkey_kit-0.1.3 → donkey_kit-0.2.1}/tests/fixtures/anypoint/routes/gemini.chat_completions.success.body.json +0 -0
  1007. {donkey_kit-0.1.3 → donkey_kit-0.2.1}/tests/fixtures/anypoint/routes/gemini.chat_completions.success.headers.txt +0 -0
  1008. {donkey_kit-0.1.3 → donkey_kit-0.2.1}/tests/fixtures/anypoint/routes/gemini.responses.reject.body.json +0 -0
  1009. {donkey_kit-0.1.3 → donkey_kit-0.2.1}/tests/fixtures/anypoint/routes/gemini.responses.reject.headers.txt +0 -0
  1010. {donkey_kit-0.1.3 → donkey_kit-0.2.1}/tests/fixtures/anypoint/routes/gemini.responses.stream.body.txt +0 -0
  1011. {donkey_kit-0.1.3 → donkey_kit-0.2.1}/tests/fixtures/anypoint/routes/gemini.responses.stream.headers.txt +0 -0
  1012. {donkey_kit-0.1.3 → donkey_kit-0.2.1}/tests/fixtures/anypoint/routes/gemini.responses.success.body.json +0 -0
  1013. {donkey_kit-0.1.3 → donkey_kit-0.2.1}/tests/fixtures/anypoint/routes/gemini.responses.success.headers.txt +0 -0
  1014. {donkey_kit-0.1.3 → donkey_kit-0.2.1}/tests/fixtures/anypoint/routes/openai.chat_completions.reject.body.json +0 -0
  1015. {donkey_kit-0.1.3 → donkey_kit-0.2.1}/tests/fixtures/anypoint/routes/openai.chat_completions.reject.headers.txt +0 -0
  1016. {donkey_kit-0.1.3 → donkey_kit-0.2.1}/tests/fixtures/anypoint/routes/openai.chat_completions.stream.body.txt +0 -0
  1017. {donkey_kit-0.1.3 → donkey_kit-0.2.1}/tests/fixtures/anypoint/routes/openai.chat_completions.stream.headers.txt +0 -0
  1018. {donkey_kit-0.1.3 → donkey_kit-0.2.1}/tests/fixtures/anypoint/routes/openai.chat_completions.success.body.json +0 -0
  1019. {donkey_kit-0.1.3 → donkey_kit-0.2.1}/tests/fixtures/anypoint/routes/openai.chat_completions.success.headers.txt +0 -0
  1020. {donkey_kit-0.1.3 → donkey_kit-0.2.1}/tests/fixtures/anypoint/routes/openai.responses.reject.body.json +0 -0
  1021. {donkey_kit-0.1.3 → donkey_kit-0.2.1}/tests/fixtures/anypoint/routes/openai.responses.reject.headers.txt +0 -0
  1022. {donkey_kit-0.1.3 → donkey_kit-0.2.1}/tests/fixtures/anypoint/routes/openai.responses.stream.body.txt +0 -0
  1023. {donkey_kit-0.1.3 → donkey_kit-0.2.1}/tests/fixtures/anypoint/routes/openai.responses.stream.headers.txt +0 -0
  1024. {donkey_kit-0.1.3 → donkey_kit-0.2.1}/tests/fixtures/anypoint/routes/openai.responses.success.body.json +0 -0
  1025. {donkey_kit-0.1.3 → donkey_kit-0.2.1}/tests/fixtures/anypoint/routes/openai.responses.success.headers.txt +0 -0
  1026. {donkey_kit-0.1.3 → donkey_kit-0.2.1}/tests/fixtures/anypoint/semantic_cache/README.md +0 -0
  1027. {donkey_kit-0.1.3 → donkey_kit-0.2.1}/tests/fixtures/anypoint/semantic_cache/request.success.http +0 -0
  1028. {donkey_kit-0.1.3 → donkey_kit-0.2.1}/tests/fixtures/anypoint/semantic_cache/responses.bypass.headers.txt +0 -0
  1029. {donkey_kit-0.1.3 → donkey_kit-0.2.1}/tests/fixtures/anypoint/semantic_cache/responses.hit.body.json +0 -0
  1030. {donkey_kit-0.1.3 → donkey_kit-0.2.1}/tests/fixtures/anypoint/semantic_cache/responses.hit.headers.txt +0 -0
  1031. {donkey_kit-0.1.3 → donkey_kit-0.2.1}/tests/fixtures/anypoint/semantic_cache/responses.miss.body.json +0 -0
  1032. {donkey_kit-0.1.3 → donkey_kit-0.2.1}/tests/fixtures/anypoint/semantic_cache/responses.miss.headers.txt +0 -0
  1033. {donkey_kit-0.1.3 → donkey_kit-0.2.1}/tests/fixtures/anypoint/semantic_cache/responses.no-store-proof.headers.txt +0 -0
  1034. {donkey_kit-0.1.3 → donkey_kit-0.2.1}/tests/fixtures/anypoint/semantic_cache/responses.no-store.body.json +0 -0
  1035. {donkey_kit-0.1.3 → donkey_kit-0.2.1}/tests/fixtures/anypoint/semantic_cache/responses.no-store.headers.txt +0 -0
  1036. {donkey_kit-0.1.3 → donkey_kit-0.2.1}/tests/fixtures/anypoint/semantic_cache/responses.principal-id.headers.txt +0 -0
  1037. {donkey_kit-0.1.3 → donkey_kit-0.2.1}/tests/fixtures/anypoint/semantic_cache/responses.threshold-override.headers.txt +0 -0
  1038. {donkey_kit-0.1.3 → donkey_kit-0.2.1}/tests/fixtures/anypoint/semantic_cache/responses.ttl-override.headers.txt +0 -0
  1039. {donkey_kit-0.1.3 → donkey_kit-0.2.1}/tests/sandbox/README.md +0 -0
  1040. {donkey_kit-0.1.3 → donkey_kit-0.2.1}/tests/sandbox/conftest.py +0 -0
  1041. {donkey_kit-0.1.3 → donkey_kit-0.2.1}/tests/sandbox/proxies.toml.example +0 -0
  1042. {donkey_kit-0.1.3 → donkey_kit-0.2.1}/tests/sandbox/test_proxy_contracts.py +0 -0
  1043. {donkey_kit-0.1.3 → donkey_kit-0.2.1}/tests/typecheck/asset_type_contract.py +0 -0
  1044. {donkey_kit-0.1.3 → donkey_kit-0.2.1}/tests/typecheck/headline_api_contract.py +0 -0
  1045. {donkey_kit-0.1.3 → donkey_kit-0.2.1}/tests/unit/_anthropic_wire.py +0 -0
  1046. {donkey_kit-0.1.3 → donkey_kit-0.2.1}/tests/unit/test_adapter_capabilities.py +0 -0
  1047. {donkey_kit-0.1.3 → donkey_kit-0.2.1}/tests/unit/test_adapter_openai3_bridge.py +0 -0
  1048. {donkey_kit-0.1.3 → donkey_kit-0.2.1}/tests/unit/test_anthropic_client_stacks.py +0 -0
  1049. {donkey_kit-0.1.3 → donkey_kit-0.2.1}/tests/unit/test_anthropic_httpx2_bridge.py +0 -0
  1050. {donkey_kit-0.1.3 → donkey_kit-0.2.1}/tests/unit/test_base_install_deps.py +0 -0
  1051. {donkey_kit-0.1.3 → donkey_kit-0.2.1}/tests/unit/test_budget_pacing.py +0 -0
  1052. {donkey_kit-0.1.3 → donkey_kit-0.2.1}/tests/unit/test_budget_requests.py +0 -0
  1053. {donkey_kit-0.1.3 → donkey_kit-0.2.1}/tests/unit/test_check_commit_identities.py +0 -0
  1054. {donkey_kit-0.1.3 → donkey_kit-0.2.1}/tests/unit/test_check_doc_links.py +0 -0
  1055. {donkey_kit-0.1.3 → donkey_kit-0.2.1}/tests/unit/test_check_docs_sync.py +0 -0
  1056. {donkey_kit-0.1.3 → donkey_kit-0.2.1}/tests/unit/test_check_framework_releases.py +0 -0
  1057. {donkey_kit-0.1.3 → donkey_kit-0.2.1}/tests/unit/test_check_new_dependencies.py +0 -0
  1058. {donkey_kit-0.1.3 → donkey_kit-0.2.1}/tests/unit/test_cli_doctor.py +0 -0
  1059. {donkey_kit-0.1.3 → donkey_kit-0.2.1}/tests/unit/test_cli_help.py +0 -0
  1060. {donkey_kit-0.1.3 → donkey_kit-0.2.1}/tests/unit/test_cli_init.py +0 -0
  1061. {donkey_kit-0.1.3 → donkey_kit-0.2.1}/tests/unit/test_cli_mock.py +0 -0
  1062. {donkey_kit-0.1.3 → donkey_kit-0.2.1}/tests/unit/test_cli_test.py +0 -0
  1063. {donkey_kit-0.1.3 → donkey_kit-0.2.1}/tests/unit/test_compare_benchmark_trend.py +0 -0
  1064. {donkey_kit-0.1.3 → donkey_kit-0.2.1}/tests/unit/test_config_endpoint_trust.py +0 -0
  1065. {donkey_kit-0.1.3 → donkey_kit-0.2.1}/tests/unit/test_config_env_vars.py +0 -0
  1066. {donkey_kit-0.1.3 → donkey_kit-0.2.1}/tests/unit/test_config_header_names.py +0 -0
  1067. {donkey_kit-0.1.3 → donkey_kit-0.2.1}/tests/unit/test_config_precedence.py +0 -0
  1068. {donkey_kit-0.1.3 → donkey_kit-0.2.1}/tests/unit/test_config_validation.py +0 -0
  1069. {donkey_kit-0.1.3 → donkey_kit-0.2.1}/tests/unit/test_conformance_base_only.py +0 -0
  1070. {donkey_kit-0.1.3 → donkey_kit-0.2.1}/tests/unit/test_connection_kwargs_rendering.py +0 -0
  1071. {donkey_kit-0.1.3 → donkey_kit-0.2.1}/tests/unit/test_constraints_lock.py +0 -0
  1072. {donkey_kit-0.1.3 → donkey_kit-0.2.1}/tests/unit/test_contract_extra_skip_guard.py +0 -0
  1073. {donkey_kit-0.1.3 → donkey_kit-0.2.1}/tests/unit/test_cost.py +0 -0
  1074. {donkey_kit-0.1.3 → donkey_kit-0.2.1}/tests/unit/test_credential_binding_planes.py +0 -0
  1075. {donkey_kit-0.1.3 → donkey_kit-0.2.1}/tests/unit/test_data_plane_only_headers.py +0 -0
  1076. {donkey_kit-0.1.3 → donkey_kit-0.2.1}/tests/unit/test_default_runtime.py +0 -0
  1077. {donkey_kit-0.1.3 → donkey_kit-0.2.1}/tests/unit/test_docs_config_table.py +0 -0
  1078. {donkey_kit-0.1.3 → donkey_kit-0.2.1}/tests/unit/test_docs_from_env_kwargs.py +0 -0
  1079. {donkey_kit-0.1.3 → donkey_kit-0.2.1}/tests/unit/test_doctor.py +0 -0
  1080. {donkey_kit-0.1.3 → donkey_kit-0.2.1}/tests/unit/test_donkey_surface.py +0 -0
  1081. {donkey_kit-0.1.3 → donkey_kit-0.2.1}/tests/unit/test_endpoint_overrides.py +0 -0
  1082. {donkey_kit-0.1.3 → donkey_kit-0.2.1}/tests/unit/test_framework_redirects.py +0 -0
  1083. {donkey_kit-0.1.3 → donkey_kit-0.2.1}/tests/unit/test_framework_retries.py +0 -0
  1084. {donkey_kit-0.1.3 → donkey_kit-0.2.1}/tests/unit/test_langgraph_correlation.py +0 -0
  1085. {donkey_kit-0.1.3 → donkey_kit-0.2.1}/tests/unit/test_langgraph_sync_transport.py +0 -0
  1086. {donkey_kit-0.1.3 → donkey_kit-0.2.1}/tests/unit/test_llamaindex_model_defaults.py +0 -0
  1087. {donkey_kit-0.1.3 → donkey_kit-0.2.1}/tests/unit/test_llm_bearer_mode.py +0 -0
  1088. {donkey_kit-0.1.3 → donkey_kit-0.2.1}/tests/unit/test_llm_client_jwt.py +0 -0
  1089. {donkey_kit-0.1.3 → donkey_kit-0.2.1}/tests/unit/test_llm_client_openai3_injection.py +0 -0
  1090. {donkey_kit-0.1.3 → donkey_kit-0.2.1}/tests/unit/test_model_wallet_contract.py +0 -0
  1091. {donkey_kit-0.1.3 → donkey_kit-0.2.1}/tests/unit/test_product_description.py +0 -0
  1092. {donkey_kit-0.1.3 → donkey_kit-0.2.1}/tests/unit/test_public_docstrings.py +0 -0
  1093. {donkey_kit-0.1.3 → donkey_kit-0.2.1}/tests/unit/test_pure_logic.py +0 -0
  1094. {donkey_kit-0.1.3 → donkey_kit-0.2.1}/tests/unit/test_refusal_capture.py +0 -0
  1095. {donkey_kit-0.1.3 → donkey_kit-0.2.1}/tests/unit/test_refusal_groups.py +0 -0
  1096. {donkey_kit-0.1.3 → donkey_kit-0.2.1}/tests/unit/test_refusal_tracebacks.py +0 -0
  1097. {donkey_kit-0.1.3 → donkey_kit-0.2.1}/tests/unit/test_release_version.py +0 -0
  1098. {donkey_kit-0.1.3 → donkey_kit-0.2.1}/tests/unit/test_review_framework_release.py +0 -0
  1099. {donkey_kit-0.1.3 → donkey_kit-0.2.1}/tests/unit/test_scrub_fixtures.py +0 -0
  1100. {donkey_kit-0.1.3 → donkey_kit-0.2.1}/tests/unit/test_semantic_cache.py +0 -0
  1101. {donkey_kit-0.1.3 → donkey_kit-0.2.1}/tests/unit/test_shared_client_views.py +0 -0
  1102. {donkey_kit-0.1.3 → donkey_kit-0.2.1}/tests/unit/test_simulator_base_only.py +0 -0
  1103. {donkey_kit-0.1.3 → donkey_kit-0.2.1}/tests/unit/test_strands_terminal_refusal.py +0 -0
  1104. {donkey_kit-0.1.3 → donkey_kit-0.2.1}/tests/unit/test_support_matrix.py +0 -0
  1105. {donkey_kit-0.1.3 → donkey_kit-0.2.1}/tests/unit/test_transport_event_loops.py +0 -0
  1106. {donkey_kit-0.1.3 → donkey_kit-0.2.1}/tests/unit/test_transport_injection.py +0 -0
  1107. {donkey_kit-0.1.3 → donkey_kit-0.2.1}/tests/unit/test_transport_origin_guard.py +0 -0
  1108. {donkey_kit-0.1.3 → donkey_kit-0.2.1}/tests/unit/test_typed_refusals_example.py +0 -0
  1109. {donkey_kit-0.1.3 → donkey_kit-0.2.1}/tests/unit/test_verify_frameworks.py +0 -0
  1110. {donkey_kit-0.1.3 → donkey_kit-0.2.1}/tests/unit/test_wire_names.py +0 -0
  1111. {donkey_kit-0.1.3 → donkey_kit-0.2.1}/tests/unit/test_workflow_bounds.py +0 -0
@@ -0,0 +1,72 @@
1
+ # Python
2
+ __pycache__/
3
+ *.py[cod]
4
+ *.egg-info/
5
+ .eggs/
6
+ build/
7
+ dist/
8
+ .venv*/
9
+ venv/
10
+ .mypy_cache/
11
+ .pytest_cache/
12
+ .ruff_cache/
13
+ .import_linter_cache/
14
+ .coverage
15
+ # parallel data files (`[tool.coverage.run] parallel`), until `coverage combine`
16
+ .coverage.*
17
+ htmlcov/
18
+ .env/
19
+ env/
20
+ .env.local
21
+ .env.development.local
22
+ .env.test.local
23
+ .env.production.local
24
+
25
+ # Node / TS
26
+ node_modules/
27
+ *.tsbuildinfo
28
+
29
+ # OS
30
+ .DS_Store
31
+
32
+ # Editors
33
+ .vscode/
34
+ # Local sandbox write paths (machine-specific absolute paths; do not commit)
35
+ .cursor/sandbox.json
36
+
37
+ # Claude Code worktrees (isolated agent workspaces)
38
+ .claude/worktrees/
39
+
40
+ # AI agent config & skills — live in the private donkey-development-kit-ai-config
41
+ # repo and are symlinked in locally; never track them here (keeps internal IP out
42
+ # of this public repo). Clone donkey-development-kit-ai-config as a sibling dir.
43
+ /AGENTS.md
44
+ /CLAUDE.md
45
+ /.claude/skills
46
+ /.claude/settings.json
47
+ /.claude/workflows
48
+ /.claude/commands
49
+
50
+ # Local tooling config that commonly carries credentials (#819). MCP client
51
+ # configs and local agent settings hold tokens inline; a shared MCP config uses
52
+ # ${ENV_VAR} interpolation and is committed under another name (see CONTRIBUTING).
53
+ .mcp.json
54
+ .claude/settings.local.json
55
+
56
+ # Local run output (captures, reports, transcripts) — may hold live responses
57
+ artifacts/
58
+
59
+ # Playwright MCP scratch output (local agent tooling)
60
+ .playwright-mcp/
61
+
62
+ # Local donkey config (secrets / dev creds — never commit)
63
+ .donkey-kit.local.toml
64
+ donkey.lock.local
65
+
66
+ # Sandbox suite manifest — real proxy base URLs / cred env-var wiring (#400).
67
+ # The committed proxies.toml.example is the template; the filled file stays local.
68
+ python/tests/sandbox/proxies.toml
69
+
70
+ # Env
71
+ .env
72
+ .envrc
@@ -0,0 +1,316 @@
1
+ Metadata-Version: 2.5
2
+ Name: donkey-kit
3
+ Version: 0.2.1
4
+ Summary: An SDK for consuming Agent Fabric capabilities (governed model and tool access) from your own agent framework.
5
+ Project-URL: Homepage, https://github.com/Donkey-Development-Kit/donkey-development-kit
6
+ Project-URL: Documentation, https://docs.donkey-kit.dev
7
+ Project-URL: Repository, https://github.com/Donkey-Development-Kit/donkey-development-kit
8
+ Project-URL: Issues, https://github.com/Donkey-Development-Kit/donkey-development-kit/issues
9
+ Project-URL: Changelog, https://github.com/Donkey-Development-Kit/donkey-development-kit/releases
10
+ Author: Donkey Development Kit maintainers
11
+ Maintainer: Donkey Development Kit maintainers
12
+ License-Expression: Apache-2.0
13
+ License-File: LICENSE
14
+ Keywords: agent,anypoint,donkey-kit,gateway,llm,mcp,mulesoft
15
+ Classifier: Development Status :: 3 - Alpha
16
+ Classifier: Intended Audience :: Developers
17
+ Classifier: Operating System :: OS Independent
18
+ Classifier: Programming Language :: Python :: 3
19
+ Classifier: Programming Language :: Python :: 3 :: Only
20
+ Classifier: Programming Language :: Python :: 3.10
21
+ Classifier: Programming Language :: Python :: 3.11
22
+ Classifier: Programming Language :: Python :: 3.12
23
+ Classifier: Programming Language :: Python :: 3.13
24
+ Classifier: Programming Language :: Python :: 3.14
25
+ Classifier: Typing :: Typed
26
+ Requires-Python: >=3.10
27
+ Requires-Dist: httpx>=0.27
28
+ Requires-Dist: tomli>=2.0; python_version < '3.11'
29
+ Requires-Dist: typing-extensions>=4.10; python_version < '3.12'
30
+ Provides-Extra: a2a
31
+ Requires-Dist: a2a-sdk[http-server]>=1.2.0; extra == 'a2a'
32
+ Requires-Dist: uvicorn>=0.30; extra == 'a2a'
33
+ Provides-Extra: adk
34
+ Requires-Dist: google-adk>=2.4; extra == 'adk'
35
+ Requires-Dist: litellm[mcp]>=1.84; extra == 'adk'
36
+ Provides-Extra: agent-framework
37
+ Requires-Dist: agent-framework>=1.13; extra == 'agent-framework'
38
+ Provides-Extra: all
39
+ Requires-Dist: a2a-sdk[http-server]>=1.2.0; extra == 'all'
40
+ Requires-Dist: langchain-core>=0.3.45; extra == 'all'
41
+ Requires-Dist: langchain-openai>=0.3.9; extra == 'all'
42
+ Requires-Dist: langgraph>=0.4; extra == 'all'
43
+ Requires-Dist: mcp>=1.24; extra == 'all'
44
+ Requires-Dist: openai>=1.66; extra == 'all'
45
+ Requires-Dist: opentelemetry-api>=1.24; extra == 'all'
46
+ Requires-Dist: opentelemetry-exporter-otlp-proto-http>=1.24; extra == 'all'
47
+ Requires-Dist: opentelemetry-sdk>=1.24; extra == 'all'
48
+ Requires-Dist: rich>=13.8.0; extra == 'all'
49
+ Requires-Dist: starlette>=0.37; extra == 'all'
50
+ Requires-Dist: typer>=0.26.0; extra == 'all'
51
+ Requires-Dist: uvicorn>=0.30; extra == 'all'
52
+ Provides-Extra: anthropic
53
+ Requires-Dist: anthropic>=0.116; extra == 'anthropic'
54
+ Provides-Extra: cli
55
+ Requires-Dist: rich>=13.8.0; extra == 'cli'
56
+ Requires-Dist: typer>=0.26.0; extra == 'cli'
57
+ Provides-Extra: crewai
58
+ Requires-Dist: crewai>=1.15.3; extra == 'crewai'
59
+ Provides-Extra: langgraph
60
+ Requires-Dist: langchain-core>=0.3.45; extra == 'langgraph'
61
+ Requires-Dist: langchain-openai>=0.3.9; extra == 'langgraph'
62
+ Requires-Dist: langgraph>=0.4; extra == 'langgraph'
63
+ Provides-Extra: llamaindex
64
+ Requires-Dist: llama-index-llms-openai-like>=0.8; extra == 'llamaindex'
65
+ Provides-Extra: llm
66
+ Requires-Dist: openai>=1.66; extra == 'llm'
67
+ Provides-Extra: local
68
+ Requires-Dist: starlette>=0.37; extra == 'local'
69
+ Requires-Dist: uvicorn>=0.30; extra == 'local'
70
+ Provides-Extra: mcp
71
+ Requires-Dist: mcp>=1.24; extra == 'mcp'
72
+ Provides-Extra: openai-agents
73
+ Requires-Dist: openai-agents>=0.20; extra == 'openai-agents'
74
+ Requires-Dist: openai>=2.45; extra == 'openai-agents'
75
+ Provides-Extra: otel
76
+ Requires-Dist: opentelemetry-api>=1.24; extra == 'otel'
77
+ Requires-Dist: opentelemetry-exporter-otlp-proto-http>=1.24; extra == 'otel'
78
+ Requires-Dist: opentelemetry-sdk>=1.24; extra == 'otel'
79
+ Provides-Extra: strands
80
+ Requires-Dist: strands-agents[openai]>=1.57.1; extra == 'strands'
81
+ Provides-Extra: test
82
+ Requires-Dist: pytest-asyncio>=0.23.1; extra == 'test'
83
+ Requires-Dist: pytest>=8.0; extra == 'test'
84
+ Description-Content-Type: text/markdown
85
+
86
+ <p align="center">
87
+ <img src="https://raw.githubusercontent.com/Donkey-Development-Kit/donkey-development-kit/main/brand/ddk-logo-stacked-black.png" alt="Donkey Development Kit (DDK)" width="180" />
88
+ </p>
89
+
90
+ <p align="center">
91
+ <a href="https://pypi.org/project/donkey-kit/"><img src="https://img.shields.io/badge/dynamic/json?url=https%3A%2F%2Fpypi.org%2Fpypi%2Fdonkey-kit%2Fjson&query=%24.info.version&prefix=v&label=PyPI&logo=pypi&logoColor=white&color=blue&cacheSeconds=300" alt="donkey-kit on PyPI" /></a>
92
+ <a href="https://pypi.org/project/donkey-kit/"><img src="https://img.shields.io/pypi/pyversions/donkey-kit?logo=python&logoColor=white" alt="Supported Python versions" /></a>
93
+ <a href="https://github.com/Donkey-Development-Kit/donkey-development-kit/actions/workflows/ci.yml?query=branch%3Adevelop"><img src="https://img.shields.io/github/actions/workflow/status/Donkey-Development-Kit/donkey-development-kit/ci.yml?branch=develop&label=CI&logo=githubactions&logoColor=white" alt="CI status" /></a>
94
+ <a href="https://pepy.tech/projects/donkey-kit"><img src="https://img.shields.io/pepy/dt/donkey-kit?label=downloads" alt="Total downloads" /></a>
95
+ <a href="https://github.com/Donkey-Development-Kit/donkey-development-kit/blob/main/LICENSE"><img src="https://img.shields.io/pypi/l/donkey-kit?color=green" alt="License: Apache-2.0" /></a>
96
+ <a href="https://docs.donkey-kit.dev"><img src="https://img.shields.io/badge/docs-docs.donkey--kit.dev-0A7BBB?logo=readthedocs&logoColor=white" alt="Documentation" /></a>
97
+ </p>
98
+
99
+ <p align="center">
100
+ <a href="https://docs.donkey-kit.dev/frameworks/langgraph"><img src="https://img.shields.io/badge/LangGraph-1C3C3C?logo=langgraph&logoColor=white" alt="LangGraph" /></a>
101
+ <a href="https://docs.donkey-kit.dev/frameworks/adk"><img src="https://img.shields.io/badge/Google_ADK-4285F4?logo=google&logoColor=white" alt="Google ADK" /></a>
102
+ <a href="https://docs.donkey-kit.dev/frameworks/openai"><img src="https://img.shields.io/badge/OpenAI_Agents_SDK-412991" alt="OpenAI Agents SDK" /></a>
103
+ <a href="https://docs.donkey-kit.dev/frameworks/agent-framework"><img src="https://img.shields.io/badge/Microsoft_Agent_Framework-5E5E5E" alt="Microsoft Agent Framework" /></a>
104
+ <a href="https://docs.donkey-kit.dev/frameworks/anthropic"><img src="https://img.shields.io/badge/Anthropic-191919?logo=anthropic&logoColor=white" alt="Anthropic" /></a>
105
+ <a href="https://docs.donkey-kit.dev/frameworks/crewai"><img src="https://img.shields.io/badge/CrewAI-FF5A50?logo=crewai&logoColor=white" alt="CrewAI" /></a>
106
+ <a href="https://docs.donkey-kit.dev/frameworks/llamaindex"><img src="https://img.shields.io/badge/LlamaIndex-8A2BE2" alt="LlamaIndex" /></a>
107
+ <a href="https://docs.donkey-kit.dev/frameworks/strands"><img src="https://img.shields.io/badge/Strands_Agents-FF9900" alt="Strands Agents" /></a>
108
+ <a href="https://docs.donkey-kit.dev/telemetry"><img src="https://img.shields.io/badge/OpenTelemetry-425CC7?logo=opentelemetry&logoColor=white" alt="OpenTelemetry" /></a>
109
+ </p>
110
+
111
+ # Donkey Development Kit
112
+
113
+ An SDK for consuming **Agent Fabric** capabilities — governed model and tool
114
+ access — from your own agent framework, in your own IDE, without adopting Mule.
115
+
116
+ > **Project status — alpha.** This is an early release
117
+ > (`Development Status :: 3 - Alpha`). The **LLM data plane is live-verified**;
118
+ > most other surfaces are verification-gated (see
119
+ > [What's verified](#whats-verified-verification-discipline) below). Install it
120
+ > from PyPI with `pip install donkey-kit` — see [Install](#install).
121
+ > **Unofficial:** an independent project,
122
+ > **not** affiliated with or endorsed by Salesforce or MuleSoft.
123
+
124
+ > ### Support & trademark statement (please read)
125
+ >
126
+ > **"Agent Fabric" is a MuleSoft (Salesforce) product name, not a generic
127
+ > term.** `MuleSoft`, `Anypoint`, `Omni Gateway`, and `Agent Fabric` are
128
+ > Salesforce trademarks.
129
+ >
130
+ > **Maintainer & support.** This is an **independent, community-maintained**
131
+ > project, published under the org-scoped `Donkey-Development-Kit` name — it is **not**
132
+ > affiliated with, endorsed by, or supported by Salesforce or MuleSoft. It is
133
+ > provided **as-is, without warranty of any kind**; the maintainers triage issues
134
+ > and pull requests on a **best-effort basis, with no SLA**. Because it ships
135
+ > under a distinct, org-scoped name, only the descriptive form ("an SDK for
136
+ > MuleSoft Agent Fabric") appears in prose — the package does not represent itself
137
+ > as a first-party, official-status SDK.
138
+ >
139
+ > Licensed under [Apache-2.0](https://github.com/Donkey-Development-Kit/donkey-development-kit/blob/main/LICENSE). See
140
+ > the [unsupported boundary](https://docs.donkey-kit.dev/reference/unsupported-boundary) for exactly
141
+ > which platform APIs this SDK calls and their support classification.
142
+ >
143
+ > **Security.** Report vulnerabilities privately, never in a public issue. See
144
+ > [`SECURITY.md`](https://github.com/Donkey-Development-Kit/donkey-development-kit/blob/main/SECURITY.md) for supported versions and how to report.
145
+ >
146
+ > **Python versions.** CPython 3.10–3.14, each tested in CI; a version is
147
+ > dropped in the first minor release after its end of life. See
148
+ > [`docs/python-support.md`](https://github.com/Donkey-Development-Kit/donkey-development-kit/blob/main/docs/python-support.md).
149
+
150
+ <!-- toc -->
151
+ **Contents**
152
+
153
+ - [Documentation](#documentation)
154
+ - [Install](#install)
155
+ - [Framework support](#framework-support)
156
+ - [What's verified (verification discipline)](#whats-verified-verification-discipline)
157
+ - [Conformance exemptions](#conformance-exemptions)
158
+ <!-- tocstop -->
159
+
160
+ ## Documentation
161
+
162
+ Two audiences, two doc sets:
163
+
164
+ - **Use the SDK** → the documentation site:
165
+ **<https://docs.donkey-kit.dev/>**. Install and
166
+ configure, per-framework model access, the governed error taxonomy, and what
167
+ to trust today — everything you need to point your agent at a governed proxy.
168
+ - **See it run** → runnable demos live in the companion repo
169
+ **[donkey-development-kit-demos](https://github.com/Donkey-Development-Kit/donkey-development-kit-demos)**:
170
+ the framework-free client, native framework objects, the governed error
171
+ taxonomy, and the screen-recording scripts.
172
+ - **Understand or contribute to the repo:**
173
+ - [`ARCHITECTURE.md`](https://github.com/Donkey-Development-Kit/donkey-development-kit/blob/main/ARCHITECTURE.md) — how the SDK is built: the layered
174
+ stack, the framework-free core, verification discipline, the error taxonomy,
175
+ and framework tiering.
176
+ - [`CONTRIBUTING.md`](https://github.com/Donkey-Development-Kit/donkey-development-kit/blob/main/CONTRIBUTING.md) — how to work in the repo: the
177
+ branch/PR/release workflow, the testing strategy, coding conventions, and
178
+ the docs-sync rule.
179
+ - [`docs/verified-apis.md`](https://github.com/Donkey-Development-Kit/donkey-development-kit/blob/main/docs/verified-apis.md) — the verification ledger:
180
+ the single source of truth for what is confirmed against a real sandbox and
181
+ what is still blocked.
182
+
183
+ ## Install
184
+
185
+ ```bash
186
+ pip install "donkey-kit[llm,langgraph]" # base + raw client + one framework
187
+ ```
188
+
189
+ To work on the SDK itself, install from source with the contributor tooling
190
+ (the `dev` dependency group needs pip 25.1 or later):
191
+
192
+ ```bash
193
+ git clone https://github.com/Donkey-Development-Kit/donkey-development-kit.git
194
+ cd donkey-development-kit/python
195
+ pip install -e ".[llm,cli]" --group dev
196
+ ```
197
+
198
+ Extras are one per framework (`langgraph`, `adk`, `strands`, `agent_framework`,
199
+ `openai-agents`, `anthropic`, `crewai`, `llamaindex`) plus `otel`, `cli`, `local`,
200
+ `a2a` (the official `a2a-sdk`, for `donkey.serve()`), `mcp` (the MCP client a
201
+ governed `ToolSet` binds with), `test` (the [conformance pytest plugin](https://docs.donkey-kit.dev/testing) —
202
+ `pytest --donkey-conformance --donkey-agent=my_app.agent:build`), and `all`. `all` is
203
+ everything a user runs that installs together — `llm`, `langgraph`, `otel`, `cli`,
204
+ `local`, `a2a`, `mcp` — with no test runner, so add `test` for the conformance plugin:
205
+ `donkey-kit[all,test]`. It leaves out the seven other framework extras, because
206
+ whether they install together depends on their upstream releases. The generated
207
+ [co-installability table](https://github.com/Donkey-Development-Kit/donkey-development-kit/blob/main/docs/co-installability.md) shows which combinations resolve, re-checked
208
+ nightly. Add the one framework you use: `donkey-kit[all,crewai]`.
209
+ Configuration and first-agent walkthroughs live on the
210
+ [documentation site](https://docs.donkey-kit.dev/). Features that call the Anypoint
211
+ control plane (registry, tool discovery, `donkey publish`) need a connected app
212
+ with the scopes listed per operation in [`docs/scopes.md`](https://github.com/Donkey-Development-Kit/donkey-development-kit/blob/main/docs/scopes.md).
213
+
214
+ ## Framework support
215
+
216
+ The roster is deliberately **two deep, six shallow** (`BG §1.8`): LangGraph and
217
+ the OpenAI Agents SDK are held to the full conformance bar, the rest supported
218
+ through the three-line `connection_kwargs()` escape hatch. Every framework below returns its framework's
219
+ **own native object** — never a wrapper.
220
+
221
+ <!-- BEGIN GENERATED: framework-status (edit docs/verified-apis.md §8, then run python/scripts/generate_docs.py) -->
222
+ Each factory's status is its constructor row in the [`docs/verified-apis.md` §8](https://github.com/Donkey-Development-Kit/donkey-development-kit/blob/main/docs/verified-apis.md); its
223
+ depth is the adapter roster's `conformance_tested`.
224
+
225
+ | Framework | Factory | Depth | Ledger status |
226
+ |---|---|---|---|
227
+ | LangGraph | `donkey.langgraph.chat_model()` | **Conformance-tested** | **Live-verified** |
228
+ | Google ADK | `donkey.adk.model()` | `connection_kwargs()` | **Live-verified** |
229
+ | Google ADK | `donkey.adk.gemini()` | `connection_kwargs()` | **Live-verified** |
230
+ | Strands | `donkey.strands.model()` | `connection_kwargs()` | **Live-verified** |
231
+ | MS Agent Framework | `donkey.agent_framework.chat_client()` | `connection_kwargs()` | **Live-verified** |
232
+ | OpenAI Agents SDK | `donkey.openai_agents.model()` | **Conformance-tested** | **Live-verified** |
233
+ | Anthropic SDK | `donkey.anthropic.client()` | `connection_kwargs()` | **Live-verified** |
234
+ | CrewAI | `donkey.crewai.llm()` | `connection_kwargs()` | **Live-verified** |
235
+ | LlamaIndex | `donkey.llamaindex.llm()` | `connection_kwargs()` | **Live-verified** |
236
+ <!-- END GENERATED: framework-status -->
237
+
238
+ **Signature-confirmed** means the factory builds its native object against the
239
+ installed framework (`scripts/verify_frameworks.py`), with no live round-trip.
240
+ **Live-verified** means a real round-trip through a governed proxy. The raw
241
+ client (`donkey.llm.client()`) is conformance-tested too.
242
+
243
+ `connection_kwargs()` works for all eight; a deep adapter is promoted from demand
244
+ evidence, one at a time — never guessed up front. The OpenAI Agents SDK was the
245
+ second, on Phase 1 demand (#223); the next is #244. See the
246
+ [framework pages](https://docs.donkey-kit.dev/frameworks/)
247
+ for each. Which framework versions are supported and tested is on the site's
248
+ [version compatibility](https://docs.donkey-kit.dev/frameworks/compatibility)
249
+ page and in [`docs/framework-support.md`](https://github.com/Donkey-Development-Kit/donkey-development-kit/blob/main/docs/framework-support.md).
250
+
251
+ ## What's verified (verification discipline)
252
+
253
+ The **LLM data plane** — governed model access through the Omni Gateway proxy —
254
+ is live-verified against a real Anypoint sandbox. The framework-free client and
255
+ the framework adapters are wired to that contract; the raw client is
256
+ conformance-tested against the simulator. For the adapters (each factory is
257
+ listed under [Framework support](#framework-support)):
258
+
259
+ <!-- BEGIN GENERATED: framework-status-summary (edit docs/verified-apis.md §8, then run python/scripts/generate_docs.py) -->
260
+ LangGraph and OpenAI Agents SDK are conformance-tested against the simulator in CI.
261
+ Each adapter factory's constructor row in §8 of the ledger reads **live-verified**.
262
+ <!-- END GENERATED: framework-status-summary -->
263
+
264
+ Everything still gated raises `NotImplementedError("blocked on verification: …")`
265
+ rather than guessing at an unverified endpoint, header, or class name. That
266
+ currently covers a `Publication`'s descriptor derivation (`preview()`, `export()`),
267
+ the governed-state
268
+ search filters (`search(governed=, environment=, domain=)`) and the hidden
269
+ `donkey status` command. Exchange search and the publication of scanned MCP
270
+ servers and agents (`donkey publish`, `donkey verify`) are verified against a
271
+ live sandbox. MCP tool discovery and every framework's `ToolSet` binding are
272
+ verified through the governed gateway: behind Client ID Enforcement all eight
273
+ frameworks called a bound tool (#1312); behind JWT Validation seven did and
274
+ ADK's tools were listed but not called (#221). Their types (`ToolSet`,
275
+ `GovernanceCriteria`, `UngovernedMcpServer`, …) are exported from `donkey_kit`. The SDK
276
+ does not ship a provisioning control plane (ADR 0008 in `docs/adr/`). The adapters build their framework's native object directly; they
277
+ refuse only when the installed framework version lacks the class or field the
278
+ adapter depends on.
279
+
280
+ The discipline behind this is documented in
281
+ [`ARCHITECTURE.md` → Verification discipline](https://github.com/Donkey-Development-Kit/donkey-development-kit/blob/main/ARCHITECTURE.md#verification-discipline);
282
+ the row-by-row worklist is [`docs/verified-apis.md`](https://github.com/Donkey-Development-Kit/donkey-development-kit/blob/main/docs/verified-apis.md).
283
+
284
+ ## Conformance exemptions
285
+
286
+ The [conformance plugin](https://docs.donkey-kit.dev/testing)
287
+ holds the SDK to the same bar it asks of your agent. Where a framework
288
+ legitimately cannot satisfy a scenario, the reason is asserted in code
289
+ (`KNOWN_LIMITATIONS`) and published here as credibility — never a silent skip
290
+ (the conformance kit):
291
+
292
+ | Framework | Scenario | Why it's exempt |
293
+ | --- | --- | --- |
294
+ | CrewAI | correlation ID propagated | CrewAI's native OpenAI provider builds both its sync `OpenAI` and its `AsyncOpenAI` from one `client_params` dict, and with an interceptor set it replaces `http_client` with its own `httpx` client, so the SDK's async client cannot be injected and the correlation ID ends up per-client, not per-run. ADK (`model()` and `gemini()`), LlamaIndex and Microsoft Agent Framework send through the SDK's shared client and record no exemption (#691, #740). |
295
+ | CrewAI | gateway identity observed | For the same reason, no response reaches the SDK's `_on_response` hook. When every resolved adapter is non-observing, `donkey.last_call` reports `UNAVAILABLE` and names them in `surface`. |
296
+ | CrewAI | JWT refreshed per send | CrewAI's native OpenAI provider owns the transport and builds its own clients, so the rotating JWT the SDK adds per send never reaches its requests. `donkey.crewai.llm()` and `connection_kwargs()` raise `ConfigError` in `jwt` mode; use client-id auth with CrewAI. ADK's `model()` and `gemini()`, LlamaIndex and Microsoft Agent Framework send through the SDK's client and carry the rotating JWT on async calls ([`jwt` mode](https://docs.donkey-kit.dev/reference/configuration#jwt--model-wallet-auth-mode)). |
297
+ | CrewAI | budget refusal not retried | CrewAI wraps every LLM call in its own rate-limit retry (3 attempts) and treats any `429` as a rate limit, so a `TokenBudgetExceeded` or `RequestRateLimitExceeded` refusal is sent 3 times. CrewAI has no setting to turn it off; the OpenAI client underneath has `max_retries=0`. Every other adapter sends a budget refusal once (#734). |
298
+ | CrewAI | typed refusal bridged | CrewAI's native OpenAI provider owns the transport, so its errors come from a client the SDK never saw, and `donkey.run()` and `typed_refusals()` cannot tell a gateway refusal from any other failure there and pass those errors through (#724). ADK's `gemini()` and `model()` send through the SDK's transport and are bridged (conformance-tested in #955 and #969). LiteLLM, under `model()`, re-raises a refusal as its own exception, and the adapter's `llm_client` marks that exception with the refusal the SDK's transport received. |
299
+ | CrewAI | refusal handler cannot un-refuse | CrewAI's native OpenAI provider owns the transport, so its refusals never reach the SDK's `_on_refusal` hook and handlers registered with [`donkey.on(...)`](https://docs.donkey-kit.dev/refusal-handlers) do not run for its calls. Every other adapter runs them, and none can turn a refusal into a success (#208, #209). |
300
+ | CrewAI | custom policy typed | For the same reason, a refusal shape registered with [`classify.register()`](https://docs.donkey-kit.dev/custom-policies) is neither typed by `donkey.run()` nor seen by `donkey.on(...)` handlers for CrewAI's calls. Every other adapter raises the registered type, runs its handlers and records its slug as `donkey.policy.type` (#210). |
301
+ | CrewAI | agent kill stops cleanly | CrewAI's native OpenAI provider owns the transport, so a kill-switch refusal never reaches the SDK's transport: it does not stop [`donkey.budget.pace()`](https://docs.donkey-kit.dev/budget) loops or flush spans, and CrewAI's own rate-limit retry decides whether the call is re-sent. Every other adapter sends the kill once, stops every pace loop on the same `Donkey`, and flushes spans before the `AgentKilled` reaches your code (#220). |
302
+ | CrewAI | approval round trip | CrewAI's native OpenAI provider owns the transport, so when an approved [`@donkey.tool(approval="required")`](https://docs.donkey-kit.dev/hitl) resumes, its model call carries neither the approval's correlation ID nor a typed refusal. The pause and the approver's span event work as for any Python code. The round trip runs on the raw client and LangGraph (#211, #212), the OpenAI Agents SDK, which pauses on its own `needs_approval` and resumes from the `RunState` (#213), and Strands' and ADK's own pauses (#1234, #1235): each resumes the call under the decision's correlation ID, and the gateway still judges it, so a refusal comes back typed. |
303
+ | Google ADK | multi-server name collision | `ToolSet.adk()` binds each MCP server as one `McpToolset`, which takes an allow-list of tool names but cannot rename a single tool. When two servers expose a tool under the same name, the bind raises `ConfigError` before it connects; `filter(deny=["<server>__<tool>"])` keeps one of each. The LangGraph, LlamaIndex and Anthropic bindings bind each tool on its own and expose both as `<server>__<tool>` (#991). |
304
+ | Strands Agents | multi-server name collision | For the same reason: `ToolSet.strands()` binds each server as one `MCPClient`, filtered by `tool_filters`. |
305
+ | OpenAI Agents SDK | multi-server name collision | For the same reason: `ToolSet.openai_agents()` binds each server as one `MCPServerStreamableHttp`, filtered by a static `tool_filter`. Its model calls record no exemption. |
306
+ | Microsoft Agent Framework | multi-server name collision | For the same reason: `ToolSet.agent_framework()` binds each server as one `MCPStreamableHTTPTool`, filtered by `allowed_tools`. |
307
+ | CrewAI | multi-server name collision | For the same reason: `ToolSet.crewai()` binds each server as one `crewai_tools.MCPServerAdapter`, filtered by its `tool_names`. |
308
+ | Google ADK | MCP tool denial typed | `ToolSet.adk()` leaves each tool call to `McpToolset`, which turns the gateway's MCP access denial (JSON-RPC `-32008` "Unable to access") into an error result whose text has lost the code, so the SDK cannot raise [`ToolNotInProfile`](https://docs.donkey-kit.dev/tool-access/binding#tools-outside-your-access-profile) from it. |
309
+ | Strands Agents | MCP tool denial typed | For the same reason: `MCPClient` returns the denial as a `status: error` tool result without the code. |
310
+ | Google ADK | MCP policy refusal typed | `ToolSet.adk()` returns captured request/response PII refusals as error text, losing the structured policy fields. Nothing is raised for `typed_refusals()` to recover (#1388). |
311
+ | Strands Agents | MCP policy refusal typed | For the same reason: `MCPClient` returns an error result rather than raising the captured PII refusal. |
312
+ | CrewAI | MCP policy refusal typed | With the locked MCP 1.x stack, captured HTTP 403 PII refusals leave the tool future unresolved. A bounded local probe asserts the timeout. HTTP 200 access denials remain recoverable with `typed_refusals()` (#1388). |
313
+
314
+ Each transport exemption matches what the adapter reports in `donkey.<framework>.capabilities()` (a frozen `AdapterCapabilities` per factory): an adapter is exempt from the transport scenarios exactly when it reports `transport="framework"`, from gateway identity exactly when `observes_last_call` is false, and from the typed-refusal bridge exactly when `typed_refusals` is false. A unit test keeps the two in step (#726). The refusal-handler, custom-policy and kill scenarios run against every factory that reports `transport="shared"`, and a factory added without a run fails the suite (#1441). The multi-server and MCP tool denial rows are about binding MCP tools with [`ToolSet`](https://docs.donkey-kit.dev/tool-access/binding), not the model transport, so `capabilities()` does not report them.
315
+
316
+ <!-- Generated from the repository README.md by python/scripts/generate_docs.py; edit that file, then run the script. -->
@@ -0,0 +1,231 @@
1
+ <p align="center">
2
+ <img src="https://raw.githubusercontent.com/Donkey-Development-Kit/donkey-development-kit/main/brand/ddk-logo-stacked-black.png" alt="Donkey Development Kit (DDK)" width="180" />
3
+ </p>
4
+
5
+ <p align="center">
6
+ <a href="https://pypi.org/project/donkey-kit/"><img src="https://img.shields.io/badge/dynamic/json?url=https%3A%2F%2Fpypi.org%2Fpypi%2Fdonkey-kit%2Fjson&query=%24.info.version&prefix=v&label=PyPI&logo=pypi&logoColor=white&color=blue&cacheSeconds=300" alt="donkey-kit on PyPI" /></a>
7
+ <a href="https://pypi.org/project/donkey-kit/"><img src="https://img.shields.io/pypi/pyversions/donkey-kit?logo=python&logoColor=white" alt="Supported Python versions" /></a>
8
+ <a href="https://github.com/Donkey-Development-Kit/donkey-development-kit/actions/workflows/ci.yml?query=branch%3Adevelop"><img src="https://img.shields.io/github/actions/workflow/status/Donkey-Development-Kit/donkey-development-kit/ci.yml?branch=develop&label=CI&logo=githubactions&logoColor=white" alt="CI status" /></a>
9
+ <a href="https://pepy.tech/projects/donkey-kit"><img src="https://img.shields.io/pepy/dt/donkey-kit?label=downloads" alt="Total downloads" /></a>
10
+ <a href="https://github.com/Donkey-Development-Kit/donkey-development-kit/blob/main/LICENSE"><img src="https://img.shields.io/pypi/l/donkey-kit?color=green" alt="License: Apache-2.0" /></a>
11
+ <a href="https://docs.donkey-kit.dev"><img src="https://img.shields.io/badge/docs-docs.donkey--kit.dev-0A7BBB?logo=readthedocs&logoColor=white" alt="Documentation" /></a>
12
+ </p>
13
+
14
+ <p align="center">
15
+ <a href="https://docs.donkey-kit.dev/frameworks/langgraph"><img src="https://img.shields.io/badge/LangGraph-1C3C3C?logo=langgraph&logoColor=white" alt="LangGraph" /></a>
16
+ <a href="https://docs.donkey-kit.dev/frameworks/adk"><img src="https://img.shields.io/badge/Google_ADK-4285F4?logo=google&logoColor=white" alt="Google ADK" /></a>
17
+ <a href="https://docs.donkey-kit.dev/frameworks/openai"><img src="https://img.shields.io/badge/OpenAI_Agents_SDK-412991" alt="OpenAI Agents SDK" /></a>
18
+ <a href="https://docs.donkey-kit.dev/frameworks/agent-framework"><img src="https://img.shields.io/badge/Microsoft_Agent_Framework-5E5E5E" alt="Microsoft Agent Framework" /></a>
19
+ <a href="https://docs.donkey-kit.dev/frameworks/anthropic"><img src="https://img.shields.io/badge/Anthropic-191919?logo=anthropic&logoColor=white" alt="Anthropic" /></a>
20
+ <a href="https://docs.donkey-kit.dev/frameworks/crewai"><img src="https://img.shields.io/badge/CrewAI-FF5A50?logo=crewai&logoColor=white" alt="CrewAI" /></a>
21
+ <a href="https://docs.donkey-kit.dev/frameworks/llamaindex"><img src="https://img.shields.io/badge/LlamaIndex-8A2BE2" alt="LlamaIndex" /></a>
22
+ <a href="https://docs.donkey-kit.dev/frameworks/strands"><img src="https://img.shields.io/badge/Strands_Agents-FF9900" alt="Strands Agents" /></a>
23
+ <a href="https://docs.donkey-kit.dev/telemetry"><img src="https://img.shields.io/badge/OpenTelemetry-425CC7?logo=opentelemetry&logoColor=white" alt="OpenTelemetry" /></a>
24
+ </p>
25
+
26
+ # Donkey Development Kit
27
+
28
+ An SDK for consuming **Agent Fabric** capabilities — governed model and tool
29
+ access — from your own agent framework, in your own IDE, without adopting Mule.
30
+
31
+ > **Project status — alpha.** This is an early release
32
+ > (`Development Status :: 3 - Alpha`). The **LLM data plane is live-verified**;
33
+ > most other surfaces are verification-gated (see
34
+ > [What's verified](#whats-verified-verification-discipline) below). Install it
35
+ > from PyPI with `pip install donkey-kit` — see [Install](#install).
36
+ > **Unofficial:** an independent project,
37
+ > **not** affiliated with or endorsed by Salesforce or MuleSoft.
38
+
39
+ > ### Support & trademark statement (please read)
40
+ >
41
+ > **"Agent Fabric" is a MuleSoft (Salesforce) product name, not a generic
42
+ > term.** `MuleSoft`, `Anypoint`, `Omni Gateway`, and `Agent Fabric` are
43
+ > Salesforce trademarks.
44
+ >
45
+ > **Maintainer & support.** This is an **independent, community-maintained**
46
+ > project, published under the org-scoped `Donkey-Development-Kit` name — it is **not**
47
+ > affiliated with, endorsed by, or supported by Salesforce or MuleSoft. It is
48
+ > provided **as-is, without warranty of any kind**; the maintainers triage issues
49
+ > and pull requests on a **best-effort basis, with no SLA**. Because it ships
50
+ > under a distinct, org-scoped name, only the descriptive form ("an SDK for
51
+ > MuleSoft Agent Fabric") appears in prose — the package does not represent itself
52
+ > as a first-party, official-status SDK.
53
+ >
54
+ > Licensed under [Apache-2.0](https://github.com/Donkey-Development-Kit/donkey-development-kit/blob/main/LICENSE). See
55
+ > the [unsupported boundary](https://docs.donkey-kit.dev/reference/unsupported-boundary) for exactly
56
+ > which platform APIs this SDK calls and their support classification.
57
+ >
58
+ > **Security.** Report vulnerabilities privately, never in a public issue. See
59
+ > [`SECURITY.md`](https://github.com/Donkey-Development-Kit/donkey-development-kit/blob/main/SECURITY.md) for supported versions and how to report.
60
+ >
61
+ > **Python versions.** CPython 3.10–3.14, each tested in CI; a version is
62
+ > dropped in the first minor release after its end of life. See
63
+ > [`docs/python-support.md`](https://github.com/Donkey-Development-Kit/donkey-development-kit/blob/main/docs/python-support.md).
64
+
65
+ <!-- toc -->
66
+ **Contents**
67
+
68
+ - [Documentation](#documentation)
69
+ - [Install](#install)
70
+ - [Framework support](#framework-support)
71
+ - [What's verified (verification discipline)](#whats-verified-verification-discipline)
72
+ - [Conformance exemptions](#conformance-exemptions)
73
+ <!-- tocstop -->
74
+
75
+ ## Documentation
76
+
77
+ Two audiences, two doc sets:
78
+
79
+ - **Use the SDK** → the documentation site:
80
+ **<https://docs.donkey-kit.dev/>**. Install and
81
+ configure, per-framework model access, the governed error taxonomy, and what
82
+ to trust today — everything you need to point your agent at a governed proxy.
83
+ - **See it run** → runnable demos live in the companion repo
84
+ **[donkey-development-kit-demos](https://github.com/Donkey-Development-Kit/donkey-development-kit-demos)**:
85
+ the framework-free client, native framework objects, the governed error
86
+ taxonomy, and the screen-recording scripts.
87
+ - **Understand or contribute to the repo:**
88
+ - [`ARCHITECTURE.md`](https://github.com/Donkey-Development-Kit/donkey-development-kit/blob/main/ARCHITECTURE.md) — how the SDK is built: the layered
89
+ stack, the framework-free core, verification discipline, the error taxonomy,
90
+ and framework tiering.
91
+ - [`CONTRIBUTING.md`](https://github.com/Donkey-Development-Kit/donkey-development-kit/blob/main/CONTRIBUTING.md) — how to work in the repo: the
92
+ branch/PR/release workflow, the testing strategy, coding conventions, and
93
+ the docs-sync rule.
94
+ - [`docs/verified-apis.md`](https://github.com/Donkey-Development-Kit/donkey-development-kit/blob/main/docs/verified-apis.md) — the verification ledger:
95
+ the single source of truth for what is confirmed against a real sandbox and
96
+ what is still blocked.
97
+
98
+ ## Install
99
+
100
+ ```bash
101
+ pip install "donkey-kit[llm,langgraph]" # base + raw client + one framework
102
+ ```
103
+
104
+ To work on the SDK itself, install from source with the contributor tooling
105
+ (the `dev` dependency group needs pip 25.1 or later):
106
+
107
+ ```bash
108
+ git clone https://github.com/Donkey-Development-Kit/donkey-development-kit.git
109
+ cd donkey-development-kit/python
110
+ pip install -e ".[llm,cli]" --group dev
111
+ ```
112
+
113
+ Extras are one per framework (`langgraph`, `adk`, `strands`, `agent_framework`,
114
+ `openai-agents`, `anthropic`, `crewai`, `llamaindex`) plus `otel`, `cli`, `local`,
115
+ `a2a` (the official `a2a-sdk`, for `donkey.serve()`), `mcp` (the MCP client a
116
+ governed `ToolSet` binds with), `test` (the [conformance pytest plugin](https://docs.donkey-kit.dev/testing) —
117
+ `pytest --donkey-conformance --donkey-agent=my_app.agent:build`), and `all`. `all` is
118
+ everything a user runs that installs together — `llm`, `langgraph`, `otel`, `cli`,
119
+ `local`, `a2a`, `mcp` — with no test runner, so add `test` for the conformance plugin:
120
+ `donkey-kit[all,test]`. It leaves out the seven other framework extras, because
121
+ whether they install together depends on their upstream releases. The generated
122
+ [co-installability table](https://github.com/Donkey-Development-Kit/donkey-development-kit/blob/main/docs/co-installability.md) shows which combinations resolve, re-checked
123
+ nightly. Add the one framework you use: `donkey-kit[all,crewai]`.
124
+ Configuration and first-agent walkthroughs live on the
125
+ [documentation site](https://docs.donkey-kit.dev/). Features that call the Anypoint
126
+ control plane (registry, tool discovery, `donkey publish`) need a connected app
127
+ with the scopes listed per operation in [`docs/scopes.md`](https://github.com/Donkey-Development-Kit/donkey-development-kit/blob/main/docs/scopes.md).
128
+
129
+ ## Framework support
130
+
131
+ The roster is deliberately **two deep, six shallow** (`BG §1.8`): LangGraph and
132
+ the OpenAI Agents SDK are held to the full conformance bar, the rest supported
133
+ through the three-line `connection_kwargs()` escape hatch. Every framework below returns its framework's
134
+ **own native object** — never a wrapper.
135
+
136
+ <!-- BEGIN GENERATED: framework-status (edit docs/verified-apis.md §8, then run python/scripts/generate_docs.py) -->
137
+ Each factory's status is its constructor row in the [`docs/verified-apis.md` §8](https://github.com/Donkey-Development-Kit/donkey-development-kit/blob/main/docs/verified-apis.md); its
138
+ depth is the adapter roster's `conformance_tested`.
139
+
140
+ | Framework | Factory | Depth | Ledger status |
141
+ |---|---|---|---|
142
+ | LangGraph | `donkey.langgraph.chat_model()` | **Conformance-tested** | **Live-verified** |
143
+ | Google ADK | `donkey.adk.model()` | `connection_kwargs()` | **Live-verified** |
144
+ | Google ADK | `donkey.adk.gemini()` | `connection_kwargs()` | **Live-verified** |
145
+ | Strands | `donkey.strands.model()` | `connection_kwargs()` | **Live-verified** |
146
+ | MS Agent Framework | `donkey.agent_framework.chat_client()` | `connection_kwargs()` | **Live-verified** |
147
+ | OpenAI Agents SDK | `donkey.openai_agents.model()` | **Conformance-tested** | **Live-verified** |
148
+ | Anthropic SDK | `donkey.anthropic.client()` | `connection_kwargs()` | **Live-verified** |
149
+ | CrewAI | `donkey.crewai.llm()` | `connection_kwargs()` | **Live-verified** |
150
+ | LlamaIndex | `donkey.llamaindex.llm()` | `connection_kwargs()` | **Live-verified** |
151
+ <!-- END GENERATED: framework-status -->
152
+
153
+ **Signature-confirmed** means the factory builds its native object against the
154
+ installed framework (`scripts/verify_frameworks.py`), with no live round-trip.
155
+ **Live-verified** means a real round-trip through a governed proxy. The raw
156
+ client (`donkey.llm.client()`) is conformance-tested too.
157
+
158
+ `connection_kwargs()` works for all eight; a deep adapter is promoted from demand
159
+ evidence, one at a time — never guessed up front. The OpenAI Agents SDK was the
160
+ second, on Phase 1 demand (#223); the next is #244. See the
161
+ [framework pages](https://docs.donkey-kit.dev/frameworks/)
162
+ for each. Which framework versions are supported and tested is on the site's
163
+ [version compatibility](https://docs.donkey-kit.dev/frameworks/compatibility)
164
+ page and in [`docs/framework-support.md`](https://github.com/Donkey-Development-Kit/donkey-development-kit/blob/main/docs/framework-support.md).
165
+
166
+ ## What's verified (verification discipline)
167
+
168
+ The **LLM data plane** — governed model access through the Omni Gateway proxy —
169
+ is live-verified against a real Anypoint sandbox. The framework-free client and
170
+ the framework adapters are wired to that contract; the raw client is
171
+ conformance-tested against the simulator. For the adapters (each factory is
172
+ listed under [Framework support](#framework-support)):
173
+
174
+ <!-- BEGIN GENERATED: framework-status-summary (edit docs/verified-apis.md §8, then run python/scripts/generate_docs.py) -->
175
+ LangGraph and OpenAI Agents SDK are conformance-tested against the simulator in CI.
176
+ Each adapter factory's constructor row in §8 of the ledger reads **live-verified**.
177
+ <!-- END GENERATED: framework-status-summary -->
178
+
179
+ Everything still gated raises `NotImplementedError("blocked on verification: …")`
180
+ rather than guessing at an unverified endpoint, header, or class name. That
181
+ currently covers a `Publication`'s descriptor derivation (`preview()`, `export()`),
182
+ the governed-state
183
+ search filters (`search(governed=, environment=, domain=)`) and the hidden
184
+ `donkey status` command. Exchange search and the publication of scanned MCP
185
+ servers and agents (`donkey publish`, `donkey verify`) are verified against a
186
+ live sandbox. MCP tool discovery and every framework's `ToolSet` binding are
187
+ verified through the governed gateway: behind Client ID Enforcement all eight
188
+ frameworks called a bound tool (#1312); behind JWT Validation seven did and
189
+ ADK's tools were listed but not called (#221). Their types (`ToolSet`,
190
+ `GovernanceCriteria`, `UngovernedMcpServer`, …) are exported from `donkey_kit`. The SDK
191
+ does not ship a provisioning control plane (ADR 0008 in `docs/adr/`). The adapters build their framework's native object directly; they
192
+ refuse only when the installed framework version lacks the class or field the
193
+ adapter depends on.
194
+
195
+ The discipline behind this is documented in
196
+ [`ARCHITECTURE.md` → Verification discipline](https://github.com/Donkey-Development-Kit/donkey-development-kit/blob/main/ARCHITECTURE.md#verification-discipline);
197
+ the row-by-row worklist is [`docs/verified-apis.md`](https://github.com/Donkey-Development-Kit/donkey-development-kit/blob/main/docs/verified-apis.md).
198
+
199
+ ## Conformance exemptions
200
+
201
+ The [conformance plugin](https://docs.donkey-kit.dev/testing)
202
+ holds the SDK to the same bar it asks of your agent. Where a framework
203
+ legitimately cannot satisfy a scenario, the reason is asserted in code
204
+ (`KNOWN_LIMITATIONS`) and published here as credibility — never a silent skip
205
+ (the conformance kit):
206
+
207
+ | Framework | Scenario | Why it's exempt |
208
+ | --- | --- | --- |
209
+ | CrewAI | correlation ID propagated | CrewAI's native OpenAI provider builds both its sync `OpenAI` and its `AsyncOpenAI` from one `client_params` dict, and with an interceptor set it replaces `http_client` with its own `httpx` client, so the SDK's async client cannot be injected and the correlation ID ends up per-client, not per-run. ADK (`model()` and `gemini()`), LlamaIndex and Microsoft Agent Framework send through the SDK's shared client and record no exemption (#691, #740). |
210
+ | CrewAI | gateway identity observed | For the same reason, no response reaches the SDK's `_on_response` hook. When every resolved adapter is non-observing, `donkey.last_call` reports `UNAVAILABLE` and names them in `surface`. |
211
+ | CrewAI | JWT refreshed per send | CrewAI's native OpenAI provider owns the transport and builds its own clients, so the rotating JWT the SDK adds per send never reaches its requests. `donkey.crewai.llm()` and `connection_kwargs()` raise `ConfigError` in `jwt` mode; use client-id auth with CrewAI. ADK's `model()` and `gemini()`, LlamaIndex and Microsoft Agent Framework send through the SDK's client and carry the rotating JWT on async calls ([`jwt` mode](https://docs.donkey-kit.dev/reference/configuration#jwt--model-wallet-auth-mode)). |
212
+ | CrewAI | budget refusal not retried | CrewAI wraps every LLM call in its own rate-limit retry (3 attempts) and treats any `429` as a rate limit, so a `TokenBudgetExceeded` or `RequestRateLimitExceeded` refusal is sent 3 times. CrewAI has no setting to turn it off; the OpenAI client underneath has `max_retries=0`. Every other adapter sends a budget refusal once (#734). |
213
+ | CrewAI | typed refusal bridged | CrewAI's native OpenAI provider owns the transport, so its errors come from a client the SDK never saw, and `donkey.run()` and `typed_refusals()` cannot tell a gateway refusal from any other failure there and pass those errors through (#724). ADK's `gemini()` and `model()` send through the SDK's transport and are bridged (conformance-tested in #955 and #969). LiteLLM, under `model()`, re-raises a refusal as its own exception, and the adapter's `llm_client` marks that exception with the refusal the SDK's transport received. |
214
+ | CrewAI | refusal handler cannot un-refuse | CrewAI's native OpenAI provider owns the transport, so its refusals never reach the SDK's `_on_refusal` hook and handlers registered with [`donkey.on(...)`](https://docs.donkey-kit.dev/refusal-handlers) do not run for its calls. Every other adapter runs them, and none can turn a refusal into a success (#208, #209). |
215
+ | CrewAI | custom policy typed | For the same reason, a refusal shape registered with [`classify.register()`](https://docs.donkey-kit.dev/custom-policies) is neither typed by `donkey.run()` nor seen by `donkey.on(...)` handlers for CrewAI's calls. Every other adapter raises the registered type, runs its handlers and records its slug as `donkey.policy.type` (#210). |
216
+ | CrewAI | agent kill stops cleanly | CrewAI's native OpenAI provider owns the transport, so a kill-switch refusal never reaches the SDK's transport: it does not stop [`donkey.budget.pace()`](https://docs.donkey-kit.dev/budget) loops or flush spans, and CrewAI's own rate-limit retry decides whether the call is re-sent. Every other adapter sends the kill once, stops every pace loop on the same `Donkey`, and flushes spans before the `AgentKilled` reaches your code (#220). |
217
+ | CrewAI | approval round trip | CrewAI's native OpenAI provider owns the transport, so when an approved [`@donkey.tool(approval="required")`](https://docs.donkey-kit.dev/hitl) resumes, its model call carries neither the approval's correlation ID nor a typed refusal. The pause and the approver's span event work as for any Python code. The round trip runs on the raw client and LangGraph (#211, #212), the OpenAI Agents SDK, which pauses on its own `needs_approval` and resumes from the `RunState` (#213), and Strands' and ADK's own pauses (#1234, #1235): each resumes the call under the decision's correlation ID, and the gateway still judges it, so a refusal comes back typed. |
218
+ | Google ADK | multi-server name collision | `ToolSet.adk()` binds each MCP server as one `McpToolset`, which takes an allow-list of tool names but cannot rename a single tool. When two servers expose a tool under the same name, the bind raises `ConfigError` before it connects; `filter(deny=["<server>__<tool>"])` keeps one of each. The LangGraph, LlamaIndex and Anthropic bindings bind each tool on its own and expose both as `<server>__<tool>` (#991). |
219
+ | Strands Agents | multi-server name collision | For the same reason: `ToolSet.strands()` binds each server as one `MCPClient`, filtered by `tool_filters`. |
220
+ | OpenAI Agents SDK | multi-server name collision | For the same reason: `ToolSet.openai_agents()` binds each server as one `MCPServerStreamableHttp`, filtered by a static `tool_filter`. Its model calls record no exemption. |
221
+ | Microsoft Agent Framework | multi-server name collision | For the same reason: `ToolSet.agent_framework()` binds each server as one `MCPStreamableHTTPTool`, filtered by `allowed_tools`. |
222
+ | CrewAI | multi-server name collision | For the same reason: `ToolSet.crewai()` binds each server as one `crewai_tools.MCPServerAdapter`, filtered by its `tool_names`. |
223
+ | Google ADK | MCP tool denial typed | `ToolSet.adk()` leaves each tool call to `McpToolset`, which turns the gateway's MCP access denial (JSON-RPC `-32008` "Unable to access") into an error result whose text has lost the code, so the SDK cannot raise [`ToolNotInProfile`](https://docs.donkey-kit.dev/tool-access/binding#tools-outside-your-access-profile) from it. |
224
+ | Strands Agents | MCP tool denial typed | For the same reason: `MCPClient` returns the denial as a `status: error` tool result without the code. |
225
+ | Google ADK | MCP policy refusal typed | `ToolSet.adk()` returns captured request/response PII refusals as error text, losing the structured policy fields. Nothing is raised for `typed_refusals()` to recover (#1388). |
226
+ | Strands Agents | MCP policy refusal typed | For the same reason: `MCPClient` returns an error result rather than raising the captured PII refusal. |
227
+ | CrewAI | MCP policy refusal typed | With the locked MCP 1.x stack, captured HTTP 403 PII refusals leave the tool future unresolved. A bounded local probe asserts the timeout. HTTP 200 access denials remain recoverable with `typed_refusals()` (#1388). |
228
+
229
+ Each transport exemption matches what the adapter reports in `donkey.<framework>.capabilities()` (a frozen `AdapterCapabilities` per factory): an adapter is exempt from the transport scenarios exactly when it reports `transport="framework"`, from gateway identity exactly when `observes_last_call` is false, and from the typed-refusal bridge exactly when `typed_refusals` is false. A unit test keeps the two in step (#726). The refusal-handler, custom-policy and kill scenarios run against every factory that reports `transport="shared"`, and a factory added without a run fails the suite (#1441). The multi-server and MCP tool denial rows are about binding MCP tools with [`ToolSet`](https://docs.donkey-kit.dev/tool-access/binding), not the model transport, so `capabilities()` does not report them.
230
+
231
+ <!-- Generated from the repository README.md by python/scripts/generate_docs.py; edit that file, then run the script. -->