donkey-kit 0.1.2__tar.gz → 0.2.0__tar.gz

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (899) hide show
  1. donkey_kit-0.2.0/.gitignore +72 -0
  2. donkey_kit-0.2.0/PKG-INFO +316 -0
  3. donkey_kit-0.2.0/README.md +231 -0
  4. donkey_kit-0.2.0/dependency_allowlist.toml +206 -0
  5. donkey_kit-0.2.0/examples/adk/README.md +87 -0
  6. donkey_kit-0.2.0/examples/adk/main.py +126 -0
  7. donkey_kit-0.2.0/examples/agent_framework/main.py +93 -0
  8. donkey_kit-0.2.0/examples/anthropic/README.md +87 -0
  9. donkey_kit-0.2.0/examples/anthropic/main.py +97 -0
  10. donkey_kit-0.2.0/examples/crewai/README.md +73 -0
  11. donkey_kit-0.2.0/examples/crewai/main.py +107 -0
  12. donkey_kit-0.2.0/examples/langgraph/collector.py +116 -0
  13. donkey_kit-0.2.0/examples/llamaindex/main.py +81 -0
  14. donkey_kit-0.2.0/examples/openai_agents/README.md +124 -0
  15. donkey_kit-0.2.0/examples/openai_agents/collector.py +116 -0
  16. donkey_kit-0.2.0/examples/openai_agents/main.py +276 -0
  17. donkey_kit-0.2.0/examples/strands/main.py +110 -0
  18. donkey_kit-0.2.0/pyproject.toml +771 -0
  19. donkey_kit-0.2.0/scripts/capture_descriptor_fixtures.py +277 -0
  20. donkey_kit-0.2.0/scripts/check_doc_snippets.py +669 -0
  21. donkey_kit-0.2.0/scripts/check_docs_sync.py +200 -0
  22. donkey_kit-0.2.0/scripts/check_floors.py +159 -0
  23. donkey_kit-0.2.0/scripts/check_framework_releases.py +732 -0
  24. donkey_kit-0.2.0/scripts/check_release_version.py +125 -0
  25. donkey_kit-0.2.0/scripts/check_verification_claims.py +80 -0
  26. donkey_kit-0.2.0/scripts/coinstall_matrix.py +219 -0
  27. donkey_kit-0.2.0/scripts/compile_constraints.py +409 -0
  28. donkey_kit-0.2.0/scripts/generate_docs.py +1659 -0
  29. donkey_kit-0.2.0/scripts/mcp_binding/README.md +123 -0
  30. donkey_kit-0.2.0/scripts/mcp_binding/_harness.py +176 -0
  31. donkey_kit-0.2.0/scripts/mcp_binding/bind_live.py +104 -0
  32. donkey_kit-0.2.0/scripts/mcp_binding/bind_toolset.py +324 -0
  33. donkey_kit-0.2.0/scripts/mcp_binding/probe_adk.py +157 -0
  34. donkey_kit-0.2.0/scripts/mcp_binding/probe_agent_framework.py +101 -0
  35. donkey_kit-0.2.0/scripts/mcp_binding/probe_anthropic.py +131 -0
  36. donkey_kit-0.2.0/scripts/mcp_binding/probe_ciba.py +70 -0
  37. donkey_kit-0.2.0/scripts/mcp_binding/probe_crewai.py +83 -0
  38. donkey_kit-0.2.0/scripts/mcp_binding/probe_denial.py +275 -0
  39. donkey_kit-0.2.0/scripts/mcp_binding/probe_langgraph.py +109 -0
  40. donkey_kit-0.2.0/scripts/mcp_binding/probe_llamaindex.py +100 -0
  41. donkey_kit-0.2.0/scripts/mcp_binding/probe_mcp_sdk.py +83 -0
  42. donkey_kit-0.2.0/scripts/mcp_binding/probe_openai_agents.py +113 -0
  43. donkey_kit-0.2.0/scripts/mcp_binding/probe_strands.py +104 -0
  44. donkey_kit-0.2.0/scripts/mcp_binding/server.py +297 -0
  45. donkey_kit-0.2.0/scripts/review_framework_release.py +406 -0
  46. donkey_kit-0.2.0/scripts/smoke_test_wheel.py +121 -0
  47. donkey_kit-0.2.0/scripts/verify_frameworks.py +604 -0
  48. donkey_kit-0.2.0/src/donkey_kit/__init__.py +279 -0
  49. donkey_kit-0.2.0/src/donkey_kit/_testing.py +86 -0
  50. donkey_kit-0.2.0/src/donkey_kit/a2a/__init__.py +21 -0
  51. donkey_kit-0.2.0/src/donkey_kit/a2a/_server.py +383 -0
  52. donkey_kit-0.2.0/src/donkey_kit/a2a/types.py +54 -0
  53. donkey_kit-0.2.0/src/donkey_kit/cli/__init__.py +40 -0
  54. donkey_kit-0.2.0/src/donkey_kit/cli/_app.py +99 -0
  55. donkey_kit-0.2.0/src/donkey_kit/cli/_blocked.py +37 -0
  56. donkey_kit-0.2.0/src/donkey_kit/cli/_common.py +46 -0
  57. donkey_kit-0.2.0/src/donkey_kit/cli/dev.py +133 -0
  58. donkey_kit-0.2.0/src/donkey_kit/cli/doctor.py +537 -0
  59. donkey_kit-0.2.0/src/donkey_kit/cli/expose.py +186 -0
  60. donkey_kit-0.2.0/src/donkey_kit/cli/init.py +159 -0
  61. donkey_kit-0.2.0/src/donkey_kit/cli/mock.py +67 -0
  62. donkey_kit-0.2.0/src/donkey_kit/cli/publish.py +184 -0
  63. donkey_kit-0.2.0/src/donkey_kit/cli/scan.py +78 -0
  64. donkey_kit-0.2.0/src/donkey_kit/cli/test.py +49 -0
  65. donkey_kit-0.2.0/src/donkey_kit/cli/verify.py +185 -0
  66. donkey_kit-0.2.0/src/donkey_kit/conformance/__init__.py +88 -0
  67. donkey_kit-0.2.0/src/donkey_kit/conformance/gateway.py +221 -0
  68. donkey_kit-0.2.0/src/donkey_kit/conformance/harness.py +620 -0
  69. donkey_kit-0.2.0/src/donkey_kit/conformance/plugin.py +390 -0
  70. donkey_kit-0.2.0/src/donkey_kit/conformance/suite.py +319 -0
  71. donkey_kit-0.2.0/src/donkey_kit/core/__init__.py +127 -0
  72. donkey_kit-0.2.0/src/donkey_kit/core/_budget_headers.py +109 -0
  73. donkey_kit-0.2.0/src/donkey_kit/core/_policy_spec.py +488 -0
  74. donkey_kit-0.2.0/src/donkey_kit/core/_refusal_body.py +270 -0
  75. donkey_kit-0.2.0/src/donkey_kit/core/_verify.py +236 -0
  76. donkey_kit-0.2.0/src/donkey_kit/core/_window.py +93 -0
  77. donkey_kit-0.2.0/src/donkey_kit/core/_wire.py +126 -0
  78. donkey_kit-0.2.0/src/donkey_kit/core/approval_types.py +187 -0
  79. donkey_kit-0.2.0/src/donkey_kit/core/approvals.py +468 -0
  80. donkey_kit-0.2.0/src/donkey_kit/core/auth.py +324 -0
  81. donkey_kit-0.2.0/src/donkey_kit/core/budget.py +494 -0
  82. donkey_kit-0.2.0/src/donkey_kit/core/cachecontrol.py +212 -0
  83. donkey_kit-0.2.0/src/donkey_kit/core/classifier.py +207 -0
  84. donkey_kit-0.2.0/src/donkey_kit/core/config.py +1097 -0
  85. donkey_kit-0.2.0/src/donkey_kit/core/correlation.py +431 -0
  86. donkey_kit-0.2.0/src/donkey_kit/core/cost.py +143 -0
  87. donkey_kit-0.2.0/src/donkey_kit/core/endpoints.py +125 -0
  88. donkey_kit-0.2.0/src/donkey_kit/core/errors.py +1030 -0
  89. donkey_kit-0.2.0/src/donkey_kit/core/header_names.py +178 -0
  90. donkey_kit-0.2.0/src/donkey_kit/core/identity.py +301 -0
  91. donkey_kit-0.2.0/src/donkey_kit/core/inbound.py +160 -0
  92. donkey_kit-0.2.0/src/donkey_kit/core/masking.py +108 -0
  93. donkey_kit-0.2.0/src/donkey_kit/core/reactions.py +460 -0
  94. donkey_kit-0.2.0/src/donkey_kit/core/refusals.py +459 -0
  95. donkey_kit-0.2.0/src/donkey_kit/core/runledger.py +318 -0
  96. donkey_kit-0.2.0/src/donkey_kit/core/runtime.py +259 -0
  97. donkey_kit-0.2.0/src/donkey_kit/core/spanflush.py +82 -0
  98. donkey_kit-0.2.0/src/donkey_kit/core/step_up.py +148 -0
  99. donkey_kit-0.2.0/src/donkey_kit/core/telemetry.py +629 -0
  100. donkey_kit-0.2.0/src/donkey_kit/core/tool_access.py +139 -0
  101. donkey_kit-0.2.0/src/donkey_kit/core/toolspec.py +231 -0
  102. donkey_kit-0.2.0/src/donkey_kit/core/transport/__init__.py +103 -0
  103. donkey_kit-0.2.0/src/donkey_kit/core/transport/async_client.py +396 -0
  104. donkey_kit-0.2.0/src/donkey_kit/core/transport/governed.py +270 -0
  105. donkey_kit-0.2.0/src/donkey_kit/core/transport/headers.py +431 -0
  106. donkey_kit-0.2.0/src/donkey_kit/core/transport/httpx2.py +296 -0
  107. donkey_kit-0.2.0/src/donkey_kit/core/transport/observe.py +169 -0
  108. donkey_kit-0.2.0/src/donkey_kit/core/transport/pipeline.py +273 -0
  109. donkey_kit-0.2.0/src/donkey_kit/core/transport/policy.py +256 -0
  110. donkey_kit-0.2.0/src/donkey_kit/core/transport/streaming.py +265 -0
  111. donkey_kit-0.2.0/src/donkey_kit/core/transport/sync_client.py +290 -0
  112. donkey_kit-0.2.0/src/donkey_kit/donkey.py +1505 -0
  113. donkey_kit-0.2.0/src/donkey_kit/experimental.py +84 -0
  114. donkey_kit-0.2.0/src/donkey_kit/integrations/__init__.py +265 -0
  115. donkey_kit-0.2.0/src/donkey_kit/integrations/_base.py +352 -0
  116. donkey_kit-0.2.0/src/donkey_kit/integrations/adk.py +821 -0
  117. donkey_kit-0.2.0/src/donkey_kit/integrations/agent_framework.py +274 -0
  118. donkey_kit-0.2.0/src/donkey_kit/integrations/crewai.py +215 -0
  119. donkey_kit-0.2.0/src/donkey_kit/integrations/langgraph.py +435 -0
  120. donkey_kit-0.2.0/src/donkey_kit/integrations/openai_agents.py +566 -0
  121. donkey_kit-0.2.0/src/donkey_kit/integrations/strands.py +535 -0
  122. donkey_kit-0.2.0/src/donkey_kit/llm/__init__.py +8 -0
  123. donkey_kit-0.2.0/src/donkey_kit/llm/client.py +205 -0
  124. donkey_kit-0.2.0/src/donkey_kit/registry/__init__.py +34 -0
  125. donkey_kit-0.2.0/src/donkey_kit/registry/_scopes.py +45 -0
  126. donkey_kit-0.2.0/src/donkey_kit/registry/criteria.py +81 -0
  127. donkey_kit-0.2.0/src/donkey_kit/registry/exchange.py +752 -0
  128. donkey_kit-0.2.0/src/donkey_kit/registry/exchange_page.py +188 -0
  129. donkey_kit-0.2.0/src/donkey_kit/registry/exchange_publish.py +837 -0
  130. donkey_kit-0.2.0/src/donkey_kit/registry/expose.py +640 -0
  131. donkey_kit-0.2.0/src/donkey_kit/registry/expose_plan.py +330 -0
  132. donkey_kit-0.2.0/src/donkey_kit/registry/introspect.py +323 -0
  133. donkey_kit-0.2.0/src/donkey_kit/registry/models.py +81 -0
  134. donkey_kit-0.2.0/src/donkey_kit/registry/publication.py +379 -0
  135. donkey_kit-0.2.0/src/donkey_kit/registry/publish_plan.py +480 -0
  136. donkey_kit-0.2.0/src/donkey_kit/registry/scan.py +856 -0
  137. donkey_kit-0.2.0/src/donkey_kit/simulator/_fixtures/fixtures.lock +37 -0
  138. donkey_kit-0.2.0/src/donkey_kit/simulator/_fixtures/rejections/README.md +193 -0
  139. donkey_kit-0.2.0/src/donkey_kit/simulator/_fixtures/rejections/reject.ciba-denied.body.json +1 -0
  140. donkey_kit-0.2.0/src/donkey_kit/simulator/_fixtures/rejections/reject.ciba-pending.body.json +1 -0
  141. donkey_kit-0.2.0/src/donkey_kit/simulator/_fixtures/rejections/reject.ciba-pending.headers.txt +3 -0
  142. donkey_kit-0.2.0/src/donkey_kit/simulator/_fixtures/rejections/reject.content-safety-crowdstrike-aidr.body.json +1 -0
  143. donkey_kit-0.2.0/src/donkey_kit/simulator/_fixtures/rejections/reject.content-safety-crowdstrike-aidr.headers.txt +5 -0
  144. donkey_kit-0.2.0/src/donkey_kit/simulator/_fixtures/rejections/reject.content-safety-model-armor.body.json +1 -0
  145. donkey_kit-0.2.0/src/donkey_kit/simulator/_fixtures/rejections/reject.content-safety-model-armor.headers.txt +5 -0
  146. donkey_kit-0.2.0/src/donkey_kit/simulator/_fixtures/rejections/reject.regex-prompt-guard.headers.txt +2 -0
  147. donkey_kit-0.2.0/src/donkey_kit/simulator/app.py +339 -0
  148. donkey_kit-0.2.0/src/donkey_kit/simulator/fixtures.py +565 -0
  149. donkey_kit-0.2.0/src/donkey_kit/simulator/ingress.py +246 -0
  150. donkey_kit-0.2.0/src/donkey_kit/simulator/inject.py +246 -0
  151. donkey_kit-0.2.0/src/donkey_kit/simulator/scenarios.py +479 -0
  152. donkey_kit-0.2.0/src/donkey_kit/tools/__init__.py +8 -0
  153. donkey_kit-0.2.0/src/donkey_kit/tools/approval.py +150 -0
  154. donkey_kit-0.2.0/src/donkey_kit/tools/auth.py +157 -0
  155. donkey_kit-0.2.0/src/donkey_kit/tools/discovery.py +404 -0
  156. donkey_kit-0.2.0/src/donkey_kit/tools/filter.py +175 -0
  157. donkey_kit-0.2.0/src/donkey_kit/tools/mcp.py +187 -0
  158. donkey_kit-0.2.0/src/donkey_kit/tools/session.py +1116 -0
  159. donkey_kit-0.2.0/tests/conformance/contract_drivers.py +287 -0
  160. donkey_kit-0.2.0/tests/conformance/contract_gateway.py +210 -0
  161. donkey_kit-0.2.0/tests/conformance/suite.py +420 -0
  162. donkey_kit-0.2.0/tests/conformance/test_adapter_contract.py +257 -0
  163. donkey_kit-0.2.0/tests/conformance/test_agent_killed_stops_cleanly.py +122 -0
  164. donkey_kit-0.2.0/tests/conformance/test_approval_round_trip.py +439 -0
  165. donkey_kit-0.2.0/tests/conformance/test_custom_policy_typed.py +121 -0
  166. donkey_kit-0.2.0/tests/conformance/test_gateway_fixture.py +110 -0
  167. donkey_kit-0.2.0/tests/conformance/test_handlers_cannot_unrefuse.py +145 -0
  168. donkey_kit-0.2.0/tests/conformance/test_langgraph_conformance.py +64 -0
  169. donkey_kit-0.2.0/tests/conformance/test_openai_agents_conformance.py +64 -0
  170. donkey_kit-0.2.0/tests/conformance/test_readme_exemptions_table.py +156 -0
  171. donkey_kit-0.2.0/tests/conformance/test_stock_openai_honesty.py +95 -0
  172. donkey_kit-0.2.0/tests/conformance/test_tool_binding.py +602 -0
  173. donkey_kit-0.2.0/tests/conformance/test_transport_exemptions.py +153 -0
  174. donkey_kit-0.2.0/tests/conformance/test_typed_refusal_bridge.py +326 -0
  175. donkey_kit-0.2.0/tests/conformance/transport_surfaces.py +192 -0
  176. donkey_kit-0.2.0/tests/conftest.py +240 -0
  177. donkey_kit-0.2.0/tests/fixtures/anypoint/README.md +38 -0
  178. donkey_kit-0.2.0/tests/fixtures/anypoint/a2a_card/README.md +55 -0
  179. donkey_kit-0.2.0/tests/fixtures/anypoint/a2a_card/a2a-card.stored.json +38 -0
  180. donkey_kit-0.2.0/tests/fixtures/anypoint/a2a_card/agent-metadata.stored.json +6 -0
  181. donkey_kit-0.2.0/tests/fixtures/anypoint/a2a_card/api.describe.json +109 -0
  182. donkey_kit-0.2.0/tests/fixtures/anypoint/a2a_card/apis.by-asset.json +85 -0
  183. donkey_kit-0.2.0/tests/fixtures/anypoint/a2a_card/graphql.files.json +66 -0
  184. donkey_kit-0.2.0/tests/fixtures/anypoint/a2a_card/traffic.card.contracted.200.json +9 -0
  185. donkey_kit-0.2.0/tests/fixtures/anypoint/a2a_card/traffic.card.no-client-id.401.json +10 -0
  186. donkey_kit-0.2.0/tests/fixtures/anypoint/a2a_card/traffic.card.no-policy.200.json +9 -0
  187. donkey_kit-0.2.0/tests/fixtures/anypoint/a2a_card/traffic.card.uncontracted.401.json +10 -0
  188. donkey_kit-0.2.0/tests/fixtures/anypoint/a2a_card/upstream.agent-card.json +63 -0
  189. donkey_kit-0.2.0/tests/fixtures/anypoint/a2a_instance/README.md +55 -0
  190. donkey_kit-0.2.0/tests/fixtures/anypoint/a2a_instance/api_describe.200.json +109 -0
  191. donkey_kit-0.2.0/tests/fixtures/anypoint/a2a_instance/contracts.200.json +4 -0
  192. donkey_kit-0.2.0/tests/fixtures/anypoint/a2a_instance/create.201.json +48 -0
  193. donkey_kit-0.2.0/tests/fixtures/anypoint/a2a_instance/create.a2a-v1-protocol.400.json +1 -0
  194. donkey_kit-0.2.0/tests/fixtures/anypoint/a2a_instance/create.request.json +16 -0
  195. donkey_kit-0.2.0/tests/fixtures/anypoint/a2a_instance/deployment-status.applied.json +5 -0
  196. donkey_kit-0.2.0/tests/fixtures/anypoint/a2a_instance/deployment-status.applying.json +5 -0
  197. donkey_kit-0.2.0/tests/fixtures/anypoint/a2a_instance/deployment.201.json +46 -0
  198. donkey_kit-0.2.0/tests/fixtures/anypoint/a2a_instance/deployment.request.json +8 -0
  199. donkey_kit-0.2.0/tests/fixtures/anypoint/a2a_instance/outbound-policies.get.405.json +13 -0
  200. donkey_kit-0.2.0/tests/fixtures/anypoint/a2a_instance/outbound-policy.201.json +27 -0
  201. donkey_kit-0.2.0/tests/fixtures/anypoint/a2a_instance/outbound-policy.request.json +15 -0
  202. donkey_kit-0.2.0/tests/fixtures/anypoint/a2a_instance/policies.200.json +32 -0
  203. donkey_kit-0.2.0/tests/fixtures/anypoint/a2a_instance/policy-inbound.400.json +4 -0
  204. donkey_kit-0.2.0/tests/fixtures/anypoint/a2a_instance/policy-inbound.request.json +12 -0
  205. donkey_kit-0.2.0/tests/fixtures/anypoint/a2a_instance/upstreams.200.json +17 -0
  206. donkey_kit-0.2.0/tests/fixtures/anypoint/exchange_publish/README.md +114 -0
  207. donkey_kit-0.2.0/tests/fixtures/anypoint/exchange_publish/agent.a2a-v1-card.stored.json +41 -0
  208. donkey_kit-0.2.0/tests/fixtures/anypoint/exchange_publish/agent.agent-metadata.stored.json +11 -0
  209. donkey_kit-0.2.0/tests/fixtures/anypoint/exchange_publish/agent.graphql.latest.json +1 -0
  210. donkey_kit-0.2.0/tests/fixtures/anypoint/exchange_publish/agent.pom.xml +21 -0
  211. donkey_kit-0.2.0/tests/fixtures/anypoint/exchange_publish/agent.publish.201.json +1 -0
  212. donkey_kit-0.2.0/tests/fixtures/anypoint/exchange_publish/graphql.absent.json +1 -0
  213. donkey_kit-0.2.0/tests/fixtures/anypoint/exchange_publish/graphql.files.json +34 -0
  214. donkey_kit-0.2.0/tests/fixtures/anypoint/exchange_publish/graphql.latest.json +1 -0
  215. donkey_kit-0.2.0/tests/fixtures/anypoint/exchange_publish/graphql.renamed.json +1 -0
  216. donkey_kit-0.2.0/tests/fixtures/anypoint/exchange_publish/graphql.version.json +1 -0
  217. donkey_kit-0.2.0/tests/fixtures/anypoint/exchange_publish/instance.201.json +1 -0
  218. donkey_kit-0.2.0/tests/fixtures/anypoint/exchange_publish/mcp-metadata.stored.json +34 -0
  219. donkey_kit-0.2.0/tests/fixtures/anypoint/exchange_publish/page.201.json +5 -0
  220. donkey_kit-0.2.0/tests/fixtures/anypoint/exchange_publish/page.409.json +1 -0
  221. donkey_kit-0.2.0/tests/fixtures/anypoint/exchange_publish/pom.xml +19 -0
  222. donkey_kit-0.2.0/tests/fixtures/anypoint/exchange_publish/portal-draft.200.json +19 -0
  223. donkey_kit-0.2.0/tests/fixtures/anypoint/exchange_publish/publish.201.json +1 -0
  224. donkey_kit-0.2.0/tests/fixtures/anypoint/exchange_publish/publish.409.json +1 -0
  225. donkey_kit-0.2.0/tests/fixtures/anypoint/exchange_search/README.md +40 -0
  226. donkey_kit-0.2.0/tests/fixtures/anypoint/exchange_search/search.api-types.json +5 -0
  227. donkey_kit-0.2.0/tests/fixtures/anypoint/exchange_search/search.description-term.json +120 -0
  228. donkey_kit-0.2.0/tests/fixtures/anypoint/exchange_search/search.page1.json +176 -0
  229. donkey_kit-0.2.0/tests/fixtures/anypoint/exchange_search/search.page2.json +162 -0
  230. donkey_kit-0.2.0/tests/fixtures/anypoint/exchange_search/search.tags-derived.json +318 -0
  231. donkey_kit-0.2.0/tests/fixtures/anypoint/exchange_search/search.tags-two.json +5 -0
  232. donkey_kit-0.2.0/tests/fixtures/anypoint/exchange_search/search.tags.json +44 -0
  233. donkey_kit-0.2.0/tests/fixtures/anypoint/exchange_search/search.term.json +20 -0
  234. donkey_kit-0.2.0/tests/fixtures/anypoint/exchange_search/search.types-mcp.json +20 -0
  235. donkey_kit-0.2.0/tests/fixtures/anypoint/exchange_search/search.unknown-field.400.json +20 -0
  236. donkey_kit-0.2.0/tests/fixtures/anypoint/gateway/README.md +23 -0
  237. donkey_kit-0.2.0/tests/fixtures/anypoint/gateway/gateway.200.json +48 -0
  238. donkey_kit-0.2.0/tests/fixtures/anypoint/gateway/gateways.by-name.json +15 -0
  239. donkey_kit-0.2.0/tests/fixtures/anypoint/mcp_access/README.md +25 -0
  240. donkey_kit-0.2.0/tests/fixtures/anypoint/mcp_access/tools-call.abac-denied.body.json +1 -0
  241. donkey_kit-0.2.0/tests/fixtures/anypoint/mcp_access/tools-call.abac-denied.headers.txt +4 -0
  242. donkey_kit-0.2.0/tests/fixtures/anypoint/mcp_access/tools-call.global-access-denied.body.json +1 -0
  243. donkey_kit-0.2.0/tests/fixtures/anypoint/mcp_access/tools-call.global-access-denied.headers.txt +3 -0
  244. donkey_kit-0.2.0/tests/fixtures/anypoint/mcp_explain/README.md +60 -0
  245. donkey_kit-0.2.0/tests/fixtures/anypoint/mcp_explain/api.describe.governed.json +106 -0
  246. donkey_kit-0.2.0/tests/fixtures/anypoint/mcp_explain/apis.by-asset.governed.json +82 -0
  247. donkey_kit-0.2.0/tests/fixtures/anypoint/mcp_explain/apis.by-asset.none.json +4 -0
  248. donkey_kit-0.2.0/tests/fixtures/anypoint/mcp_explain/apis.by-asset.undeployed.json +73 -0
  249. donkey_kit-0.2.0/tests/fixtures/anypoint/mcp_explain/apis.by-asset.ungoverned.json +82 -0
  250. donkey_kit-0.2.0/tests/fixtures/anypoint/mcp_explain/asset.version.json +11 -0
  251. donkey_kit-0.2.0/tests/fixtures/anypoint/mcp_explain/asset.version.tagged.json +13 -0
  252. donkey_kit-0.2.0/tests/fixtures/anypoint/mcp_explain/governance.reports.conformant.json +19 -0
  253. donkey_kit-0.2.0/tests/fixtures/anypoint/mcp_explain/governance.reports.none.json +4 -0
  254. donkey_kit-0.2.0/tests/fixtures/anypoint/mcp_explain/governance.reports.root-org.json +4 -0
  255. donkey_kit-0.2.0/tests/fixtures/anypoint/mcp_explain/policies.governed.json +54 -0
  256. donkey_kit-0.2.0/tests/fixtures/anypoint/mcp_explain/policies.none.json +3 -0
  257. donkey_kit-0.2.0/tests/fixtures/anypoint/mcp_instance/README.md +54 -0
  258. donkey_kit-0.2.0/tests/fixtures/anypoint/mcp_instance/api_describe.200.json +106 -0
  259. donkey_kit-0.2.0/tests/fixtures/anypoint/mcp_instance/apis-list.by-label.json +51 -0
  260. donkey_kit-0.2.0/tests/fixtures/anypoint/mcp_instance/contracts.200.json +4 -0
  261. donkey_kit-0.2.0/tests/fixtures/anypoint/mcp_instance/create.201.json +44 -0
  262. donkey_kit-0.2.0/tests/fixtures/anypoint/mcp_instance/create.409.json +4 -0
  263. donkey_kit-0.2.0/tests/fixtures/anypoint/mcp_instance/create.request.json +16 -0
  264. donkey_kit-0.2.0/tests/fixtures/anypoint/mcp_instance/deployment-status.applied.json +5 -0
  265. donkey_kit-0.2.0/tests/fixtures/anypoint/mcp_instance/deployment-status.applying.json +5 -0
  266. donkey_kit-0.2.0/tests/fixtures/anypoint/mcp_instance/deployment.201.json +46 -0
  267. donkey_kit-0.2.0/tests/fixtures/anypoint/mcp_instance/deployment.request.json +8 -0
  268. donkey_kit-0.2.0/tests/fixtures/anypoint/mcp_instance/policies.200.json +40 -0
  269. donkey_kit-0.2.0/tests/fixtures/anypoint/mcp_instance/policy-client-id-enforcement.201.json +23 -0
  270. donkey_kit-0.2.0/tests/fixtures/anypoint/mcp_instance/policy-client-id-enforcement.request.json +11 -0
  271. donkey_kit-0.2.0/tests/fixtures/anypoint/mcp_instance/policy-mcp-support.201.json +21 -0
  272. donkey_kit-0.2.0/tests/fixtures/anypoint/mcp_instance/policy-mcp-support.request.json +9 -0
  273. donkey_kit-0.2.0/tests/fixtures/anypoint/mcp_resolve/README.md +43 -0
  274. donkey_kit-0.2.0/tests/fixtures/anypoint/mcp_resolve/api.describe.json +106 -0
  275. donkey_kit-0.2.0/tests/fixtures/anypoint/mcp_resolve/apis.by-asset.json +82 -0
  276. donkey_kit-0.2.0/tests/fixtures/anypoint/mcp_resolve/apis.by-asset.none.json +4 -0
  277. donkey_kit-0.2.0/tests/fixtures/anypoint/mcp_resolve/apis.by-asset.undeployed-and-deployed.json +131 -0
  278. donkey_kit-0.2.0/tests/fixtures/anypoint/mcp_resolve/environments.json +23 -0
  279. donkey_kit-0.2.0/tests/fixtures/anypoint/mcp_resolve/gateway.json +48 -0
  280. donkey_kit-0.2.0/tests/fixtures/anypoint/mcp_resolve/traffic.no-slash.404.json +8 -0
  281. donkey_kit-0.2.0/tests/fixtures/anypoint/mcp_resolve/traffic.slash.401.json +10 -0
  282. donkey_kit-0.2.0/tests/fixtures/anypoint/mcp_resolve/traffic.unknown-path.404.json +8 -0
  283. donkey_kit-0.2.0/tests/fixtures/anypoint/missing_scope/README.md +17 -0
  284. donkey_kit-0.2.0/tests/fixtures/anypoint/missing_scope/responses.json +56 -0
  285. donkey_kit-0.2.0/tests/fixtures/descriptor/README.md +25 -0
  286. donkey_kit-0.2.0/tests/fixtures/descriptor/adk.json +57 -0
  287. donkey_kit-0.2.0/tests/fixtures/descriptor/agent_framework.json +57 -0
  288. donkey_kit-0.2.0/tests/fixtures/descriptor/anthropic.json +61 -0
  289. donkey_kit-0.2.0/tests/fixtures/descriptor/crewai.json +57 -0
  290. donkey_kit-0.2.0/tests/fixtures/descriptor/langchain.json +59 -0
  291. donkey_kit-0.2.0/tests/fixtures/descriptor/llamaindex.json +55 -0
  292. donkey_kit-0.2.0/tests/fixtures/descriptor/mcp-1.json +57 -0
  293. donkey_kit-0.2.0/tests/fixtures/descriptor/mcp-2.json +57 -0
  294. donkey_kit-0.2.0/tests/fixtures/descriptor/openai_agents.json +65 -0
  295. donkey_kit-0.2.0/tests/fixtures/descriptor/strands.json +55 -0
  296. donkey_kit-0.2.0/tests/fixtures/fixtures.lock +267 -0
  297. donkey_kit-0.2.0/tests/fixtures/mcp_binding/adk.json +34 -0
  298. donkey_kit-0.2.0/tests/fixtures/mcp_binding/agent_framework.json +34 -0
  299. donkey_kit-0.2.0/tests/fixtures/mcp_binding/anthropic.json +39 -0
  300. donkey_kit-0.2.0/tests/fixtures/mcp_binding/ciba-adk.json +28 -0
  301. donkey_kit-0.2.0/tests/fixtures/mcp_binding/ciba-af.json +52 -0
  302. donkey_kit-0.2.0/tests/fixtures/mcp_binding/ciba-lg.json +230 -0
  303. donkey_kit-0.2.0/tests/fixtures/mcp_binding/ciba-li.json +157 -0
  304. donkey_kit-0.2.0/tests/fixtures/mcp_binding/ciba-mcp1.json +85 -0
  305. donkey_kit-0.2.0/tests/fixtures/mcp_binding/ciba-mcp2.json +59 -0
  306. donkey_kit-0.2.0/tests/fixtures/mcp_binding/ciba-oa.json +60 -0
  307. donkey_kit-0.2.0/tests/fixtures/mcp_binding/ciba-st.json +28 -0
  308. donkey_kit-0.2.0/tests/fixtures/mcp_binding/crewai.json +43 -0
  309. donkey_kit-0.2.0/tests/fixtures/mcp_binding/denial-adk.json +40 -0
  310. donkey_kit-0.2.0/tests/fixtures/mcp_binding/denial-agent_framework.json +98 -0
  311. donkey_kit-0.2.0/tests/fixtures/mcp_binding/denial-mcp1.json +79 -0
  312. donkey_kit-0.2.0/tests/fixtures/mcp_binding/denial-mcp2.json +103 -0
  313. donkey_kit-0.2.0/tests/fixtures/mcp_binding/denial-openai_agents.json +56 -0
  314. donkey_kit-0.2.0/tests/fixtures/mcp_binding/denial-strands.json +40 -0
  315. donkey_kit-0.2.0/tests/fixtures/mcp_binding/langgraph.json +41 -0
  316. donkey_kit-0.2.0/tests/fixtures/mcp_binding/llamaindex.json +34 -0
  317. donkey_kit-0.2.0/tests/fixtures/mcp_binding/mcp_sdk.json +33 -0
  318. donkey_kit-0.2.0/tests/fixtures/mcp_binding/openai_agents.json +36 -0
  319. donkey_kit-0.2.0/tests/fixtures/mcp_binding/strands.json +33 -0
  320. donkey_kit-0.2.0/tests/typecheck/asset_type_contract.py +23 -0
  321. donkey_kit-0.2.0/tests/typecheck/headline_api_v0_2_contract.py +333 -0
  322. donkey_kit-0.2.0/tests/unit/_anthropic_wire.py +151 -0
  323. donkey_kit-0.2.0/tests/unit/_fake_anypoint.py +253 -0
  324. donkey_kit-0.2.0/tests/unit/_fake_exchange.py +240 -0
  325. donkey_kit-0.2.0/tests/unit/_json_shapes.py +49 -0
  326. donkey_kit-0.2.0/tests/unit/test_a2a_governed_inbound.py +369 -0
  327. donkey_kit-0.2.0/tests/unit/test_a2a_serve.py +290 -0
  328. donkey_kit-0.2.0/tests/unit/test_action.py +449 -0
  329. donkey_kit-0.2.0/tests/unit/test_adapter_async_last_call.py +538 -0
  330. donkey_kit-0.2.0/tests/unit/test_adapter_capabilities.py +343 -0
  331. donkey_kit-0.2.0/tests/unit/test_adapter_ergonomics.py +824 -0
  332. donkey_kit-0.2.0/tests/unit/test_adapter_jwt_mode.py +176 -0
  333. donkey_kit-0.2.0/tests/unit/test_adapter_openai3_bridge.py +279 -0
  334. donkey_kit-0.2.0/tests/unit/test_adapter_roster.py +241 -0
  335. donkey_kit-0.2.0/tests/unit/test_adk_approval_bookkeeping.py +537 -0
  336. donkey_kit-0.2.0/tests/unit/test_adk_approvals.py +228 -0
  337. donkey_kit-0.2.0/tests/unit/test_agent_framework_policy_middleware.py +319 -0
  338. donkey_kit-0.2.0/tests/unit/test_approval_requester.py +449 -0
  339. donkey_kit-0.2.0/tests/unit/test_approvals.py +581 -0
  340. donkey_kit-0.2.0/tests/unit/test_architecture.py +499 -0
  341. donkey_kit-0.2.0/tests/unit/test_as_user_endpoint_trust.py +245 -0
  342. donkey_kit-0.2.0/tests/unit/test_auth.py +261 -0
  343. donkey_kit-0.2.0/tests/unit/test_budget.py +426 -0
  344. donkey_kit-0.2.0/tests/unit/test_budget_upstream.py +314 -0
  345. donkey_kit-0.2.0/tests/unit/test_check_doc_snippets.py +216 -0
  346. donkey_kit-0.2.0/tests/unit/test_check_docs_sync.py +171 -0
  347. donkey_kit-0.2.0/tests/unit/test_check_framework_releases.py +575 -0
  348. donkey_kit-0.2.0/tests/unit/test_check_verification_claims.py +92 -0
  349. donkey_kit-0.2.0/tests/unit/test_ci_workflows.py +214 -0
  350. donkey_kit-0.2.0/tests/unit/test_classifier.py +669 -0
  351. donkey_kit-0.2.0/tests/unit/test_cli_blocked_commands.py +61 -0
  352. donkey_kit-0.2.0/tests/unit/test_cli_dev.py +145 -0
  353. donkey_kit-0.2.0/tests/unit/test_cli_doctor.py +221 -0
  354. donkey_kit-0.2.0/tests/unit/test_cli_entrypoint.py +172 -0
  355. donkey_kit-0.2.0/tests/unit/test_cli_expose.py +227 -0
  356. donkey_kit-0.2.0/tests/unit/test_cli_mock.py +106 -0
  357. donkey_kit-0.2.0/tests/unit/test_cli_publish.py +293 -0
  358. donkey_kit-0.2.0/tests/unit/test_cli_scan.py +113 -0
  359. donkey_kit-0.2.0/tests/unit/test_cli_verify.py +350 -0
  360. donkey_kit-0.2.0/tests/unit/test_concurrency_contract.py +352 -0
  361. donkey_kit-0.2.0/tests/unit/test_config.py +389 -0
  362. donkey_kit-0.2.0/tests/unit/test_config_endpoint_trust.py +1156 -0
  363. donkey_kit-0.2.0/tests/unit/test_config_precedence.py +370 -0
  364. donkey_kit-0.2.0/tests/unit/test_config_validation.py +220 -0
  365. donkey_kit-0.2.0/tests/unit/test_conformance.py +695 -0
  366. donkey_kit-0.2.0/tests/unit/test_conformance_plugin.py +339 -0
  367. donkey_kit-0.2.0/tests/unit/test_connected_app_scopes.py +135 -0
  368. donkey_kit-0.2.0/tests/unit/test_constraints_lock.py +251 -0
  369. donkey_kit-0.2.0/tests/unit/test_cost.py +113 -0
  370. donkey_kit-0.2.0/tests/unit/test_credential_binding_planes.py +353 -0
  371. donkey_kit-0.2.0/tests/unit/test_credential_planes.py +351 -0
  372. donkey_kit-0.2.0/tests/unit/test_custom_policies_page.py +83 -0
  373. donkey_kit-0.2.0/tests/unit/test_data_plane_only_headers.py +128 -0
  374. donkey_kit-0.2.0/tests/unit/test_decorators.py +318 -0
  375. donkey_kit-0.2.0/tests/unit/test_default_runtime.py +296 -0
  376. donkey_kit-0.2.0/tests/unit/test_descriptor_derivation.py +274 -0
  377. donkey_kit-0.2.0/tests/unit/test_discover.py +544 -0
  378. donkey_kit-0.2.0/tests/unit/test_discover_default.py +117 -0
  379. donkey_kit-0.2.0/tests/unit/test_discover_registry_cache.py +130 -0
  380. donkey_kit-0.2.0/tests/unit/test_docs_from_env_kwargs.py +73 -0
  381. donkey_kit-0.2.0/tests/unit/test_doctor.py +543 -0
  382. donkey_kit-0.2.0/tests/unit/test_donkey_surface.py +353 -0
  383. donkey_kit-0.2.0/tests/unit/test_endpoints.py +248 -0
  384. donkey_kit-0.2.0/tests/unit/test_error_taxonomy.py +116 -0
  385. donkey_kit-0.2.0/tests/unit/test_errors.py +886 -0
  386. donkey_kit-0.2.0/tests/unit/test_exchange_page.py +163 -0
  387. donkey_kit-0.2.0/tests/unit/test_exchange_publish.py +930 -0
  388. donkey_kit-0.2.0/tests/unit/test_exchange_search.py +221 -0
  389. donkey_kit-0.2.0/tests/unit/test_explain.py +341 -0
  390. donkey_kit-0.2.0/tests/unit/test_expose.py +578 -0
  391. donkey_kit-0.2.0/tests/unit/test_expose_plan.py +286 -0
  392. donkey_kit-0.2.0/tests/unit/test_fixture_integrity.py +215 -0
  393. donkey_kit-0.2.0/tests/unit/test_framework_retries.py +291 -0
  394. donkey_kit-0.2.0/tests/unit/test_gateway_credential_endpoint_trust.py +343 -0
  395. donkey_kit-0.2.0/tests/unit/test_gemini_inbound_contract.py +152 -0
  396. donkey_kit-0.2.0/tests/unit/test_generated_docs.py +384 -0
  397. donkey_kit-0.2.0/tests/unit/test_governed_state_shapes.py +94 -0
  398. donkey_kit-0.2.0/tests/unit/test_house_style_config.py +237 -0
  399. donkey_kit-0.2.0/tests/unit/test_identity.py +420 -0
  400. donkey_kit-0.2.0/tests/unit/test_inbound_correlation.py +242 -0
  401. donkey_kit-0.2.0/tests/unit/test_integration_checklist.py +233 -0
  402. donkey_kit-0.2.0/tests/unit/test_kill_switch.py +334 -0
  403. donkey_kit-0.2.0/tests/unit/test_langgraph_approvals.py +638 -0
  404. donkey_kit-0.2.0/tests/unit/test_langgraph_sync_transport.py +293 -0
  405. donkey_kit-0.2.0/tests/unit/test_langgraph_typed_refusals.py +247 -0
  406. donkey_kit-0.2.0/tests/unit/test_lastcall.py +925 -0
  407. donkey_kit-0.2.0/tests/unit/test_llm_client_openai3_injection.py +280 -0
  408. donkey_kit-0.2.0/tests/unit/test_llm_proxy_contract.py +188 -0
  409. donkey_kit-0.2.0/tests/unit/test_logging.py +239 -0
  410. donkey_kit-0.2.0/tests/unit/test_mcp_client.py +270 -0
  411. donkey_kit-0.2.0/tests/unit/test_mcp_redirects.py +308 -0
  412. donkey_kit-0.2.0/tests/unit/test_missing_framework_error.py +343 -0
  413. donkey_kit-0.2.0/tests/unit/test_model_wallet_contract.py +213 -0
  414. donkey_kit-0.2.0/tests/unit/test_noxfile.py +300 -0
  415. donkey_kit-0.2.0/tests/unit/test_openai_agents_approval_bookkeeping.py +391 -0
  416. donkey_kit-0.2.0/tests/unit/test_openai_agents_approvals.py +773 -0
  417. donkey_kit-0.2.0/tests/unit/test_openai_agents_correlation.py +96 -0
  418. donkey_kit-0.2.0/tests/unit/test_openai_gemini_stream_contract.py +155 -0
  419. donkey_kit-0.2.0/tests/unit/test_otlp_export.py +499 -0
  420. donkey_kit-0.2.0/tests/unit/test_per_request_business_group.py +280 -0
  421. donkey_kit-0.2.0/tests/unit/test_pre_commit_lock_sync.py +134 -0
  422. donkey_kit-0.2.0/tests/unit/test_product_description.py +51 -0
  423. donkey_kit-0.2.0/tests/unit/test_proxy_key_header.py +271 -0
  424. donkey_kit-0.2.0/tests/unit/test_public_api_snapshot.py +284 -0
  425. donkey_kit-0.2.0/tests/unit/test_public_api_surface.py +306 -0
  426. donkey_kit-0.2.0/tests/unit/test_publication_verify.py +285 -0
  427. donkey_kit-0.2.0/tests/unit/test_publish_plan.py +258 -0
  428. donkey_kit-0.2.0/tests/unit/test_pure_logic.py +142 -0
  429. donkey_kit-0.2.0/tests/unit/test_refusal_bridge.py +485 -0
  430. donkey_kit-0.2.0/tests/unit/test_refusal_capture.py +313 -0
  431. donkey_kit-0.2.0/tests/unit/test_refusal_handlers.py +615 -0
  432. donkey_kit-0.2.0/tests/unit/test_registry_shapes.py +146 -0
  433. donkey_kit-0.2.0/tests/unit/test_rejection_contract.py +276 -0
  434. donkey_kit-0.2.0/tests/unit/test_release_version.py +184 -0
  435. donkey_kit-0.2.0/tests/unit/test_release_workflows.py +122 -0
  436. donkey_kit-0.2.0/tests/unit/test_resolve_mcp.py +310 -0
  437. donkey_kit-0.2.0/tests/unit/test_review_framework_release.py +306 -0
  438. donkey_kit-0.2.0/tests/unit/test_run_ledger.py +342 -0
  439. donkey_kit-0.2.0/tests/unit/test_scan.py +717 -0
  440. donkey_kit-0.2.0/tests/unit/test_semantic_cache.py +397 -0
  441. donkey_kit-0.2.0/tests/unit/test_sensitive_output.py +391 -0
  442. donkey_kit-0.2.0/tests/unit/test_simulate.py +223 -0
  443. donkey_kit-0.2.0/tests/unit/test_simulator_app.py +336 -0
  444. donkey_kit-0.2.0/tests/unit/test_simulator_fixtures.py +132 -0
  445. donkey_kit-0.2.0/tests/unit/test_simulator_ingress.py +200 -0
  446. donkey_kit-0.2.0/tests/unit/test_simulator_scenarios.py +247 -0
  447. donkey_kit-0.2.0/tests/unit/test_simulator_scenarios_app.py +190 -0
  448. donkey_kit-0.2.0/tests/unit/test_smoke_example.py +62 -0
  449. donkey_kit-0.2.0/tests/unit/test_smoke_test_wheel.py +114 -0
  450. donkey_kit-0.2.0/tests/unit/test_step_up_wait.py +330 -0
  451. donkey_kit-0.2.0/tests/unit/test_strands_approval_bookkeeping.py +405 -0
  452. donkey_kit-0.2.0/tests/unit/test_strands_approvals.py +671 -0
  453. donkey_kit-0.2.0/tests/unit/test_support_matrix.py +226 -0
  454. donkey_kit-0.2.0/tests/unit/test_telemetry.py +491 -0
  455. donkey_kit-0.2.0/tests/unit/test_tool_access.py +162 -0
  456. donkey_kit-0.2.0/tests/unit/test_toolset_approval.py +332 -0
  457. donkey_kit-0.2.0/tests/unit/test_toolset_as_user.py +315 -0
  458. donkey_kit-0.2.0/tests/unit/test_toolset_descriptor_cost.py +338 -0
  459. donkey_kit-0.2.0/tests/unit/test_toolset_filter.py +155 -0
  460. donkey_kit-0.2.0/tests/unit/test_transport.py +2591 -0
  461. donkey_kit-0.2.0/tests/unit/test_transport_both_clients.py +398 -0
  462. donkey_kit-0.2.0/tests/unit/test_transport_proxy_mounts.py +219 -0
  463. donkey_kit-0.2.0/tests/unit/test_ungoverned_binding.py +166 -0
  464. donkey_kit-0.2.0/tests/unit/test_verification_blocked_surfaces.py +74 -0
  465. donkey_kit-0.2.0/tests/unit/test_verify_agent_card.py +354 -0
  466. donkey_kit-0.2.0/tests/unit/test_wire_names.py +86 -0
  467. donkey_kit-0.2.0/tests/unit/test_workflow_supply_chain.py +176 -0
  468. donkey_kit-0.2.0/vulture_whitelist.py +191 -0
  469. donkey_kit-0.1.2/.gitignore +0 -70
  470. donkey_kit-0.1.2/PKG-INFO +0 -228
  471. donkey_kit-0.1.2/README.md +0 -152
  472. donkey_kit-0.1.2/dependency_allowlist.toml +0 -163
  473. donkey_kit-0.1.2/examples/adk/README.md +0 -87
  474. donkey_kit-0.1.2/examples/adk/main.py +0 -125
  475. donkey_kit-0.1.2/examples/agent_framework/main.py +0 -92
  476. donkey_kit-0.1.2/examples/anthropic/README.md +0 -87
  477. donkey_kit-0.1.2/examples/anthropic/main.py +0 -96
  478. donkey_kit-0.1.2/examples/crewai/README.md +0 -73
  479. donkey_kit-0.1.2/examples/crewai/main.py +0 -106
  480. donkey_kit-0.1.2/examples/langgraph/collector.py +0 -120
  481. donkey_kit-0.1.2/examples/llamaindex/main.py +0 -80
  482. donkey_kit-0.1.2/examples/openai_agents/README.md +0 -73
  483. donkey_kit-0.1.2/examples/openai_agents/main.py +0 -113
  484. donkey_kit-0.1.2/examples/strands/main.py +0 -109
  485. donkey_kit-0.1.2/pyproject.toml +0 -625
  486. donkey_kit-0.1.2/scripts/check_verification_claims.py +0 -71
  487. donkey_kit-0.1.2/scripts/compile_constraints.py +0 -276
  488. donkey_kit-0.1.2/scripts/verify_frameworks.py +0 -428
  489. donkey_kit-0.1.2/src/donkey_kit/__init__.py +0 -205
  490. donkey_kit-0.1.2/src/donkey_kit/_testing.py +0 -63
  491. donkey_kit-0.1.2/src/donkey_kit/cli/__init__.py +0 -33
  492. donkey_kit-0.1.2/src/donkey_kit/cli/_app.py +0 -84
  493. donkey_kit-0.1.2/src/donkey_kit/cli/_blocked.py +0 -44
  494. donkey_kit-0.1.2/src/donkey_kit/cli/doctor.py +0 -522
  495. donkey_kit-0.1.2/src/donkey_kit/cli/init.py +0 -163
  496. donkey_kit-0.1.2/src/donkey_kit/cli/mock.py +0 -69
  497. donkey_kit-0.1.2/src/donkey_kit/cli/test.py +0 -51
  498. donkey_kit-0.1.2/src/donkey_kit/conformance/__init__.py +0 -83
  499. donkey_kit-0.1.2/src/donkey_kit/conformance/gateway.py +0 -220
  500. donkey_kit-0.1.2/src/donkey_kit/conformance/harness.py +0 -482
  501. donkey_kit-0.1.2/src/donkey_kit/conformance/plugin.py +0 -318
  502. donkey_kit-0.1.2/src/donkey_kit/conformance/suite.py +0 -317
  503. donkey_kit-0.1.2/src/donkey_kit/core/__init__.py +0 -106
  504. donkey_kit-0.1.2/src/donkey_kit/core/_refusal_body.py +0 -142
  505. donkey_kit-0.1.2/src/donkey_kit/core/_verify.py +0 -231
  506. donkey_kit-0.1.2/src/donkey_kit/core/_wire.py +0 -107
  507. donkey_kit-0.1.2/src/donkey_kit/core/auth.py +0 -324
  508. donkey_kit-0.1.2/src/donkey_kit/core/budget.py +0 -388
  509. donkey_kit-0.1.2/src/donkey_kit/core/cachecontrol.py +0 -210
  510. donkey_kit-0.1.2/src/donkey_kit/core/config.py +0 -1108
  511. donkey_kit-0.1.2/src/donkey_kit/core/correlation.py +0 -196
  512. donkey_kit-0.1.2/src/donkey_kit/core/cost.py +0 -142
  513. donkey_kit-0.1.2/src/donkey_kit/core/endpoints.py +0 -108
  514. donkey_kit-0.1.2/src/donkey_kit/core/errors.py +0 -1095
  515. donkey_kit-0.1.2/src/donkey_kit/core/header_names.py +0 -104
  516. donkey_kit-0.1.2/src/donkey_kit/core/masking.py +0 -93
  517. donkey_kit-0.1.2/src/donkey_kit/core/refusals.py +0 -364
  518. donkey_kit-0.1.2/src/donkey_kit/core/runtime.py +0 -247
  519. donkey_kit-0.1.2/src/donkey_kit/core/telemetry.py +0 -657
  520. donkey_kit-0.1.2/src/donkey_kit/core/toolspec.py +0 -105
  521. donkey_kit-0.1.2/src/donkey_kit/core/transport/__init__.py +0 -101
  522. donkey_kit-0.1.2/src/donkey_kit/core/transport/async_client.py +0 -324
  523. donkey_kit-0.1.2/src/donkey_kit/core/transport/governed.py +0 -266
  524. donkey_kit-0.1.2/src/donkey_kit/core/transport/headers.py +0 -379
  525. donkey_kit-0.1.2/src/donkey_kit/core/transport/httpx2.py +0 -296
  526. donkey_kit-0.1.2/src/donkey_kit/core/transport/observe.py +0 -161
  527. donkey_kit-0.1.2/src/donkey_kit/core/transport/pipeline.py +0 -198
  528. donkey_kit-0.1.2/src/donkey_kit/core/transport/policy.py +0 -244
  529. donkey_kit-0.1.2/src/donkey_kit/core/transport/streaming.py +0 -263
  530. donkey_kit-0.1.2/src/donkey_kit/core/transport/sync_client.py +0 -235
  531. donkey_kit-0.1.2/src/donkey_kit/donkey.py +0 -732
  532. donkey_kit-0.1.2/src/donkey_kit/experimental.py +0 -44
  533. donkey_kit-0.1.2/src/donkey_kit/integrations/__init__.py +0 -232
  534. donkey_kit-0.1.2/src/donkey_kit/integrations/_base.py +0 -354
  535. donkey_kit-0.1.2/src/donkey_kit/integrations/adk.py +0 -193
  536. donkey_kit-0.1.2/src/donkey_kit/integrations/agent_framework.py +0 -263
  537. donkey_kit-0.1.2/src/donkey_kit/integrations/crewai.py +0 -213
  538. donkey_kit-0.1.2/src/donkey_kit/integrations/langgraph.py +0 -216
  539. donkey_kit-0.1.2/src/donkey_kit/integrations/openai_agents.py +0 -89
  540. donkey_kit-0.1.2/src/donkey_kit/integrations/strands.py +0 -199
  541. donkey_kit-0.1.2/src/donkey_kit/llm/__init__.py +0 -7
  542. donkey_kit-0.1.2/src/donkey_kit/llm/client.py +0 -207
  543. donkey_kit-0.1.2/src/donkey_kit/registry/__init__.py +0 -33
  544. donkey_kit-0.1.2/src/donkey_kit/registry/criteria.py +0 -81
  545. donkey_kit-0.1.2/src/donkey_kit/registry/exchange.py +0 -128
  546. donkey_kit-0.1.2/src/donkey_kit/registry/introspect.py +0 -42
  547. donkey_kit-0.1.2/src/donkey_kit/registry/models.py +0 -73
  548. donkey_kit-0.1.2/src/donkey_kit/registry/publication.py +0 -195
  549. donkey_kit-0.1.2/src/donkey_kit/simulator/_fixtures/fixtures.lock +0 -33
  550. donkey_kit-0.1.2/src/donkey_kit/simulator/_fixtures/rejections/README.md +0 -144
  551. donkey_kit-0.1.2/src/donkey_kit/simulator/app.py +0 -332
  552. donkey_kit-0.1.2/src/donkey_kit/simulator/fixtures.py +0 -548
  553. donkey_kit-0.1.2/src/donkey_kit/simulator/inject.py +0 -211
  554. donkey_kit-0.1.2/src/donkey_kit/simulator/scenarios.py +0 -439
  555. donkey_kit-0.1.2/src/donkey_kit/tools/__init__.py +0 -7
  556. donkey_kit-0.1.2/src/donkey_kit/tools/filter.py +0 -66
  557. donkey_kit-0.1.2/src/donkey_kit/tools/session.py +0 -170
  558. donkey_kit-0.1.2/tests/conformance/contract_drivers.py +0 -248
  559. donkey_kit-0.1.2/tests/conformance/contract_gateway.py +0 -178
  560. donkey_kit-0.1.2/tests/conformance/suite.py +0 -173
  561. donkey_kit-0.1.2/tests/conformance/test_adapter_contract.py +0 -257
  562. donkey_kit-0.1.2/tests/conformance/test_gateway_fixture.py +0 -92
  563. donkey_kit-0.1.2/tests/conformance/test_langgraph_conformance.py +0 -66
  564. donkey_kit-0.1.2/tests/conformance/test_readme_exemptions_table.py +0 -101
  565. donkey_kit-0.1.2/tests/conformance/test_stock_openai_honesty.py +0 -97
  566. donkey_kit-0.1.2/tests/conformance/test_transport_exemptions.py +0 -155
  567. donkey_kit-0.1.2/tests/conformance/test_typed_refusal_bridge.py +0 -321
  568. donkey_kit-0.1.2/tests/conftest.py +0 -218
  569. donkey_kit-0.1.2/tests/fixtures/anypoint/README.md +0 -35
  570. donkey_kit-0.1.2/tests/fixtures/fixtures.lock +0 -126
  571. donkey_kit-0.1.2/tests/typecheck/asset_type_contract.py +0 -25
  572. donkey_kit-0.1.2/tests/unit/_anthropic_wire.py +0 -122
  573. donkey_kit-0.1.2/tests/unit/test_adapter_async_last_call.py +0 -254
  574. donkey_kit-0.1.2/tests/unit/test_adapter_capabilities.py +0 -339
  575. donkey_kit-0.1.2/tests/unit/test_adapter_ergonomics.py +0 -823
  576. donkey_kit-0.1.2/tests/unit/test_adapter_jwt_mode.py +0 -162
  577. donkey_kit-0.1.2/tests/unit/test_adapter_openai3_bridge.py +0 -281
  578. donkey_kit-0.1.2/tests/unit/test_adapter_roster.py +0 -188
  579. donkey_kit-0.1.2/tests/unit/test_agent_framework_policy_middleware.py +0 -296
  580. donkey_kit-0.1.2/tests/unit/test_architecture.py +0 -460
  581. donkey_kit-0.1.2/tests/unit/test_auth.py +0 -261
  582. donkey_kit-0.1.2/tests/unit/test_budget.py +0 -320
  583. donkey_kit-0.1.2/tests/unit/test_check_verification_claims.py +0 -87
  584. donkey_kit-0.1.2/tests/unit/test_ci_workflows.py +0 -62
  585. donkey_kit-0.1.2/tests/unit/test_cli_blocked_commands.py +0 -56
  586. donkey_kit-0.1.2/tests/unit/test_cli_doctor.py +0 -222
  587. donkey_kit-0.1.2/tests/unit/test_cli_entrypoint.py +0 -159
  588. donkey_kit-0.1.2/tests/unit/test_cli_mock.py +0 -112
  589. donkey_kit-0.1.2/tests/unit/test_config.py +0 -393
  590. donkey_kit-0.1.2/tests/unit/test_config_endpoint_trust.py +0 -1160
  591. donkey_kit-0.1.2/tests/unit/test_config_precedence.py +0 -372
  592. donkey_kit-0.1.2/tests/unit/test_config_validation.py +0 -214
  593. donkey_kit-0.1.2/tests/unit/test_conformance.py +0 -561
  594. donkey_kit-0.1.2/tests/unit/test_conformance_plugin.py +0 -246
  595. donkey_kit-0.1.2/tests/unit/test_constraints_lock.py +0 -176
  596. donkey_kit-0.1.2/tests/unit/test_cost.py +0 -113
  597. donkey_kit-0.1.2/tests/unit/test_credential_binding_planes.py +0 -349
  598. donkey_kit-0.1.2/tests/unit/test_credential_planes.py +0 -345
  599. donkey_kit-0.1.2/tests/unit/test_data_plane_only_headers.py +0 -126
  600. donkey_kit-0.1.2/tests/unit/test_decorators.py +0 -203
  601. donkey_kit-0.1.2/tests/unit/test_default_runtime.py +0 -302
  602. donkey_kit-0.1.2/tests/unit/test_docs_from_env_kwargs.py +0 -68
  603. donkey_kit-0.1.2/tests/unit/test_doctor.py +0 -542
  604. donkey_kit-0.1.2/tests/unit/test_donkey_surface.py +0 -359
  605. donkey_kit-0.1.2/tests/unit/test_error_taxonomy.py +0 -103
  606. donkey_kit-0.1.2/tests/unit/test_errors.py +0 -668
  607. donkey_kit-0.1.2/tests/unit/test_fixture_integrity.py +0 -214
  608. donkey_kit-0.1.2/tests/unit/test_framework_retries.py +0 -275
  609. donkey_kit-0.1.2/tests/unit/test_gemini_inbound_contract.py +0 -154
  610. donkey_kit-0.1.2/tests/unit/test_governed_state_shapes.py +0 -96
  611. donkey_kit-0.1.2/tests/unit/test_house_style_config.py +0 -205
  612. donkey_kit-0.1.2/tests/unit/test_integration_checklist.py +0 -205
  613. donkey_kit-0.1.2/tests/unit/test_langgraph_sync_transport.py +0 -291
  614. donkey_kit-0.1.2/tests/unit/test_langgraph_typed_refusals.py +0 -247
  615. donkey_kit-0.1.2/tests/unit/test_lastcall.py +0 -931
  616. donkey_kit-0.1.2/tests/unit/test_llm_client_openai3_injection.py +0 -282
  617. donkey_kit-0.1.2/tests/unit/test_llm_proxy_contract.py +0 -184
  618. donkey_kit-0.1.2/tests/unit/test_logging.py +0 -225
  619. donkey_kit-0.1.2/tests/unit/test_missing_framework_error.py +0 -235
  620. donkey_kit-0.1.2/tests/unit/test_model_wallet_contract.py +0 -211
  621. donkey_kit-0.1.2/tests/unit/test_openai_gemini_stream_contract.py +0 -157
  622. donkey_kit-0.1.2/tests/unit/test_otlp_export.py +0 -390
  623. donkey_kit-0.1.2/tests/unit/test_product_description.py +0 -49
  624. donkey_kit-0.1.2/tests/unit/test_public_api_surface.py +0 -212
  625. donkey_kit-0.1.2/tests/unit/test_pure_logic.py +0 -142
  626. donkey_kit-0.1.2/tests/unit/test_refusal_bridge.py +0 -480
  627. donkey_kit-0.1.2/tests/unit/test_registry_shapes.py +0 -166
  628. donkey_kit-0.1.2/tests/unit/test_rejection_contract.py +0 -189
  629. donkey_kit-0.1.2/tests/unit/test_semantic_cache.py +0 -396
  630. donkey_kit-0.1.2/tests/unit/test_sensitive_output.py +0 -387
  631. donkey_kit-0.1.2/tests/unit/test_simulate.py +0 -222
  632. donkey_kit-0.1.2/tests/unit/test_simulator_app.py +0 -341
  633. donkey_kit-0.1.2/tests/unit/test_simulator_fixtures.py +0 -136
  634. donkey_kit-0.1.2/tests/unit/test_simulator_scenarios.py +0 -219
  635. donkey_kit-0.1.2/tests/unit/test_simulator_scenarios_app.py +0 -178
  636. donkey_kit-0.1.2/tests/unit/test_smoke_example.py +0 -61
  637. donkey_kit-0.1.2/tests/unit/test_telemetry.py +0 -473
  638. donkey_kit-0.1.2/tests/unit/test_transport.py +0 -2547
  639. donkey_kit-0.1.2/tests/unit/test_transport_both_clients.py +0 -342
  640. donkey_kit-0.1.2/tests/unit/test_transport_proxy_mounts.py +0 -212
  641. donkey_kit-0.1.2/tests/unit/test_verification_blocked_surfaces.py +0 -78
  642. donkey_kit-0.1.2/tests/unit/test_wire_names.py +0 -88
  643. donkey_kit-0.1.2/vulture_whitelist.py +0 -145
  644. {donkey_kit-0.1.2 → donkey_kit-0.2.0}/LICENSE +0 -0
  645. {donkey_kit-0.1.2 → donkey_kit-0.2.0}/examples/agent_framework/README.md +0 -0
  646. {donkey_kit-0.1.2 → donkey_kit-0.2.0}/examples/langgraph/README.md +0 -0
  647. {donkey_kit-0.1.2 → donkey_kit-0.2.0}/examples/langgraph/main.py +0 -0
  648. {donkey_kit-0.1.2 → donkey_kit-0.2.0}/examples/llamaindex/README.md +0 -0
  649. {donkey_kit-0.1.2 → donkey_kit-0.2.0}/examples/quickstart/README.md +0 -0
  650. {donkey_kit-0.1.2 → donkey_kit-0.2.0}/examples/quickstart/main.py +0 -0
  651. {donkey_kit-0.1.2 → donkey_kit-0.2.0}/examples/strands/README.md +0 -0
  652. {donkey_kit-0.1.2 → donkey_kit-0.2.0}/scripts/capture_fixture.py +0 -0
  653. {donkey_kit-0.1.2 → donkey_kit-0.2.0}/scripts/check_commit_identities.py +0 -0
  654. {donkey_kit-0.1.2 → donkey_kit-0.2.0}/scripts/check_doc_links.py +0 -0
  655. {donkey_kit-0.1.2 → donkey_kit-0.2.0}/scripts/check_new_dependencies.py +0 -0
  656. {donkey_kit-0.1.2 → donkey_kit-0.2.0}/scripts/compare_benchmark_trend.py +0 -0
  657. {donkey_kit-0.1.2 → donkey_kit-0.2.0}/scripts/scrub_fixtures.py +0 -0
  658. {donkey_kit-0.1.2 → donkey_kit-0.2.0}/scripts/smoke_example.py +0 -0
  659. {donkey_kit-0.1.2 → donkey_kit-0.2.0}/src/donkey_kit/conformance/report.py +0 -0
  660. {donkey_kit-0.1.2 → donkey_kit-0.2.0}/src/donkey_kit/core/_response.py +0 -0
  661. {donkey_kit-0.1.2 → donkey_kit-0.2.0}/src/donkey_kit/core/cache.py +0 -0
  662. {donkey_kit-0.1.2 → donkey_kit-0.2.0}/src/donkey_kit/core/lastcall.py +0 -0
  663. {donkey_kit-0.1.2 → donkey_kit-0.2.0}/src/donkey_kit/core/transport/failures.py +0 -0
  664. {donkey_kit-0.1.2 → donkey_kit-0.2.0}/src/donkey_kit/core/transport/views.py +0 -0
  665. {donkey_kit-0.1.2 → donkey_kit-0.2.0}/src/donkey_kit/integrations/anthropic.py +0 -0
  666. {donkey_kit-0.1.2 → donkey_kit-0.2.0}/src/donkey_kit/integrations/llamaindex.py +0 -0
  667. {donkey_kit-0.1.2 → donkey_kit-0.2.0}/src/donkey_kit/llm/catalog.py +0 -0
  668. {donkey_kit-0.1.2 → donkey_kit-0.2.0}/src/donkey_kit/py.typed +0 -0
  669. {donkey_kit-0.1.2 → donkey_kit-0.2.0}/src/donkey_kit/registry/governance.py +0 -0
  670. {donkey_kit-0.1.2 → donkey_kit-0.2.0}/src/donkey_kit/simulator/__init__.py +0 -0
  671. {donkey_kit-0.1.2 → donkey_kit-0.2.0}/src/donkey_kit/simulator/_fixtures/anypoint/azure_openai_routing/README.md +0 -0
  672. {donkey_kit-0.1.2 → donkey_kit-0.2.0}/src/donkey_kit/simulator/_fixtures/anypoint/azure_openai_routing/reject.responses-not-served.body.json +0 -0
  673. {donkey_kit-0.1.2 → donkey_kit-0.2.0}/src/donkey_kit/simulator/_fixtures/anypoint/azure_openai_routing/reject.responses-not-served.headers.txt +0 -0
  674. {donkey_kit-0.1.2 → donkey_kit-0.2.0}/src/donkey_kit/simulator/_fixtures/anypoint/azure_openai_routing/reject.unserved-base-path.headers.txt +0 -0
  675. {donkey_kit-0.1.2 → donkey_kit-0.2.0}/src/donkey_kit/simulator/_fixtures/anypoint/azure_openai_routing/request.success.http +0 -0
  676. {donkey_kit-0.1.2 → donkey_kit-0.2.0}/src/donkey_kit/simulator/_fixtures/anypoint/azure_openai_routing/responses.chat-completions.success.body.json +0 -0
  677. {donkey_kit-0.1.2 → donkey_kit-0.2.0}/src/donkey_kit/simulator/_fixtures/anypoint/azure_openai_routing/responses.chat-completions.success.headers.txt +0 -0
  678. {donkey_kit-0.1.2 → donkey_kit-0.2.0}/src/donkey_kit/simulator/_fixtures/anypoint/llm_proxy/README.md +0 -0
  679. {donkey_kit-0.1.2 → donkey_kit-0.2.0}/src/donkey_kit/simulator/_fixtures/anypoint/llm_proxy/api_describe.openai-sdk.json +0 -0
  680. {donkey_kit-0.1.2 → donkey_kit-0.2.0}/src/donkey_kit/simulator/_fixtures/anypoint/llm_proxy/models.notfound.headers.txt +0 -0
  681. {donkey_kit-0.1.2 → donkey_kit-0.2.0}/src/donkey_kit/simulator/_fixtures/anypoint/llm_proxy/policy_list.openai-sdk.json +0 -0
  682. {donkey_kit-0.1.2 → donkey_kit-0.2.0}/src/donkey_kit/simulator/_fixtures/anypoint/llm_proxy/reject.client-id-missing.body.json +0 -0
  683. {donkey_kit-0.1.2 → donkey_kit-0.2.0}/src/donkey_kit/simulator/_fixtures/anypoint/llm_proxy/reject.client-id-missing.headers.txt +0 -0
  684. {donkey_kit-0.1.2 → donkey_kit-0.2.0}/src/donkey_kit/simulator/_fixtures/anypoint/llm_proxy/reject.model-not-found.body.json +0 -0
  685. {donkey_kit-0.1.2 → donkey_kit-0.2.0}/src/donkey_kit/simulator/_fixtures/anypoint/llm_proxy/reject.model-not-routable.body.json +0 -0
  686. {donkey_kit-0.1.2 → donkey_kit-0.2.0}/src/donkey_kit/simulator/_fixtures/anypoint/llm_proxy/reject.model-not-routable.headers.txt +0 -0
  687. {donkey_kit-0.1.2 → donkey_kit-0.2.0}/src/donkey_kit/simulator/_fixtures/anypoint/llm_proxy/reject.pii-detected.body.json +0 -0
  688. {donkey_kit-0.1.2 → donkey_kit-0.2.0}/src/donkey_kit/simulator/_fixtures/anypoint/llm_proxy/reject.pii-detected.headers.txt +0 -0
  689. {donkey_kit-0.1.2 → donkey_kit-0.2.0}/src/donkey_kit/simulator/_fixtures/anypoint/llm_proxy/reject.token-rate-limit.body.empty +0 -0
  690. {donkey_kit-0.1.2 → donkey_kit-0.2.0}/src/donkey_kit/simulator/_fixtures/anypoint/llm_proxy/reject.token-rate-limit.headers.txt +0 -0
  691. {donkey_kit-0.1.2 → donkey_kit-0.2.0}/src/donkey_kit/simulator/_fixtures/anypoint/llm_proxy/responses.stream.headers.txt +0 -0
  692. {donkey_kit-0.1.2 → donkey_kit-0.2.0}/src/donkey_kit/simulator/_fixtures/anypoint/llm_proxy/responses.stream.sample.sse +0 -0
  693. {donkey_kit-0.1.2 → donkey_kit-0.2.0}/src/donkey_kit/simulator/_fixtures/anypoint/llm_proxy/responses.success.body.json +0 -0
  694. {donkey_kit-0.1.2 → donkey_kit-0.2.0}/src/donkey_kit/simulator/_fixtures/anypoint/llm_proxy/responses.success.headers.txt +0 -0
  695. {donkey_kit-0.1.2 → donkey_kit-0.2.0}/src/donkey_kit/simulator/_fixtures/anypoint/llm_proxy/responses.success.policy-applied.headers.txt +0 -0
  696. {donkey_kit-0.1.2 → donkey_kit-0.2.0}/src/donkey_kit/simulator/_fixtures/anypoint/request_rate_limit/README.md +0 -0
  697. {donkey_kit-0.1.2 → donkey_kit-0.2.0}/src/donkey_kit/simulator/_fixtures/anypoint/request_rate_limit/reject.request-rate-limit.body.json +0 -0
  698. {donkey_kit-0.1.2 → donkey_kit-0.2.0}/src/donkey_kit/simulator/_fixtures/anypoint/request_rate_limit/reject.request-rate-limit.headers.txt +0 -0
  699. {donkey_kit-0.1.2 → donkey_kit-0.2.0}/src/donkey_kit/simulator/_fixtures/anypoint/semantic_routing/README.md +0 -0
  700. {donkey_kit-0.1.2 → donkey_kit-0.2.0}/src/donkey_kit/simulator/_fixtures/anypoint/semantic_routing/request.success.http +0 -0
  701. {donkey_kit-0.1.2 → donkey_kit-0.2.0}/src/donkey_kit/simulator/_fixtures/anypoint/semantic_routing/responses.code.body.json +0 -0
  702. {donkey_kit-0.1.2 → donkey_kit-0.2.0}/src/donkey_kit/simulator/_fixtures/anypoint/semantic_routing/responses.code.headers.txt +0 -0
  703. {donkey_kit-0.1.2 → donkey_kit-0.2.0}/src/donkey_kit/simulator/_fixtures/anypoint/semantic_routing/responses.finance.body.json +0 -0
  704. {donkey_kit-0.1.2 → donkey_kit-0.2.0}/src/donkey_kit/simulator/_fixtures/anypoint/semantic_routing/responses.finance.headers.txt +0 -0
  705. {donkey_kit-0.1.2 → donkey_kit-0.2.0}/src/donkey_kit/simulator/_fixtures/anypoint/semantic_routing/responses.offtopic.body.json +0 -0
  706. {donkey_kit-0.1.2 → donkey_kit-0.2.0}/src/donkey_kit/simulator/_fixtures/anypoint/semantic_routing/responses.offtopic.headers.txt +0 -0
  707. {donkey_kit-0.1.2 → donkey_kit-0.2.0}/src/donkey_kit/simulator/_fixtures/openai_public/README.md +0 -0
  708. {donkey_kit-0.1.2 → donkey_kit-0.2.0}/src/donkey_kit/simulator/_fixtures/openai_public/chat-completions.stream.headers.txt +0 -0
  709. {donkey_kit-0.1.2 → donkey_kit-0.2.0}/src/donkey_kit/simulator/_fixtures/openai_public/chat-completions.stream.sse +0 -0
  710. {donkey_kit-0.1.2 → donkey_kit-0.2.0}/src/donkey_kit/simulator/_fixtures/rejections/reject.agent-killed.body.json +0 -0
  711. {donkey_kit-0.1.2 → donkey_kit-0.2.0}/src/donkey_kit/simulator/_fixtures/rejections/reject.agent-killed.headers.txt +0 -0
  712. /donkey_kit-0.1.2/src/donkey_kit/simulator/_fixtures/rejections/reject.regex-prompt-guard.headers.txt → /donkey_kit-0.2.0/src/donkey_kit/simulator/_fixtures/rejections/reject.ciba-denied.headers.txt +0 -0
  713. {donkey_kit-0.1.2 → donkey_kit-0.2.0}/src/donkey_kit/simulator/_fixtures/rejections/reject.content-moderation.body.empty +0 -0
  714. {donkey_kit-0.1.2 → donkey_kit-0.2.0}/src/donkey_kit/simulator/_fixtures/rejections/reject.content-moderation.headers.txt +0 -0
  715. {donkey_kit-0.1.2 → donkey_kit-0.2.0}/src/donkey_kit/simulator/_fixtures/rejections/reject.content-safety-bedrock.body.json +0 -0
  716. {donkey_kit-0.1.2 → donkey_kit-0.2.0}/src/donkey_kit/simulator/_fixtures/rejections/reject.content-safety-bedrock.headers.txt +0 -0
  717. {donkey_kit-0.1.2 → donkey_kit-0.2.0}/src/donkey_kit/simulator/_fixtures/rejections/reject.content-safety.body.json +0 -0
  718. {donkey_kit-0.1.2 → donkey_kit-0.2.0}/src/donkey_kit/simulator/_fixtures/rejections/reject.content-safety.headers.txt +0 -0
  719. {donkey_kit-0.1.2 → donkey_kit-0.2.0}/src/donkey_kit/simulator/_fixtures/rejections/reject.injection-protection.body.json +0 -0
  720. {donkey_kit-0.1.2 → donkey_kit-0.2.0}/src/donkey_kit/simulator/_fixtures/rejections/reject.injection-protection.headers.txt +0 -0
  721. {donkey_kit-0.1.2 → donkey_kit-0.2.0}/src/donkey_kit/simulator/_fixtures/rejections/reject.regex-prompt-guard.body.json +0 -0
  722. {donkey_kit-0.1.2 → donkey_kit-0.2.0}/src/donkey_kit/simulator/_fixtures/rejections/reject.upstream-5xx.body.empty +0 -0
  723. {donkey_kit-0.1.2 → donkey_kit-0.2.0}/src/donkey_kit/simulator/_fixtures/rejections/reject.upstream-5xx.headers.txt +0 -0
  724. {donkey_kit-0.1.2 → donkey_kit-0.2.0}/src/donkey_kit/simulator/server.py +0 -0
  725. {donkey_kit-0.1.2 → donkey_kit-0.2.0}/tests/benchmark/test_span_overhead.py +0 -0
  726. {donkey_kit-0.1.2 → donkey_kit-0.2.0}/tests/conformance/conftest.py +0 -0
  727. {donkey_kit-0.1.2 → donkey_kit-0.2.0}/tests/conformance/test_budget_pacing_e2e.py +0 -0
  728. {donkey_kit-0.1.2 → donkey_kit-0.2.0}/tests/conformance/test_simulator_boot.py +0 -0
  729. {donkey_kit-0.1.2 → donkey_kit-0.2.0}/tests/fixtures/a2d/README.md +0 -0
  730. {donkey_kit-0.1.2 → donkey_kit-0.2.0}/tests/fixtures/a2d/environments.sample.json +0 -0
  731. {donkey_kit-0.1.2 → donkey_kit-0.2.0}/tests/fixtures/a2d/mcp_server_spec.account_management.json +0 -0
  732. {donkey_kit-0.1.2 → donkey_kit-0.2.0}/tests/fixtures/a2d/mcp_servers.list.json +0 -0
  733. {donkey_kit-0.1.2 → donkey_kit-0.2.0}/tests/fixtures/anypoint/anthropic_inbound/README.md +0 -0
  734. {donkey_kit-0.1.2 → donkey_kit-0.2.0}/tests/fixtures/anypoint/anthropic_inbound/reject.client-id-missing.body.json +0 -0
  735. {donkey_kit-0.1.2 → donkey_kit-0.2.0}/tests/fixtures/anypoint/anthropic_inbound/reject.client-id-missing.headers.txt +0 -0
  736. {donkey_kit-0.1.2 → donkey_kit-0.2.0}/tests/fixtures/anypoint/anthropic_inbound/reject.openai-shape.body.json +0 -0
  737. {donkey_kit-0.1.2 → donkey_kit-0.2.0}/tests/fixtures/anypoint/anthropic_inbound/reject.openai-shape.headers.txt +0 -0
  738. {donkey_kit-0.1.2 → donkey_kit-0.2.0}/tests/fixtures/anypoint/anthropic_inbound/request.success.http +0 -0
  739. {donkey_kit-0.1.2 → donkey_kit-0.2.0}/tests/fixtures/anypoint/anthropic_inbound/responses.success.body.json +0 -0
  740. {donkey_kit-0.1.2 → donkey_kit-0.2.0}/tests/fixtures/anypoint/anthropic_inbound/responses.success.headers.txt +0 -0
  741. {donkey_kit-0.1.2 → donkey_kit-0.2.0}/tests/fixtures/anypoint/api_describe.product-catalog-mcp.json +0 -0
  742. {donkey_kit-0.1.2 → donkey_kit-0.2.0}/tests/fixtures/anypoint/api_list.sandbox.json +0 -0
  743. {donkey_kit-0.1.2 → donkey_kit-0.2.0}/tests/fixtures/anypoint/gemini_inbound/README.md +0 -0
  744. {donkey_kit-0.1.2 → donkey_kit-0.2.0}/tests/fixtures/anypoint/gemini_inbound/reject.client-id-missing.body.json +0 -0
  745. {donkey_kit-0.1.2 → donkey_kit-0.2.0}/tests/fixtures/anypoint/gemini_inbound/reject.client-id-missing.headers.txt +0 -0
  746. {donkey_kit-0.1.2 → donkey_kit-0.2.0}/tests/fixtures/anypoint/gemini_inbound/reject.openai-shape.body.json +0 -0
  747. {donkey_kit-0.1.2 → donkey_kit-0.2.0}/tests/fixtures/anypoint/gemini_inbound/reject.openai-shape.headers.txt +0 -0
  748. {donkey_kit-0.1.2 → donkey_kit-0.2.0}/tests/fixtures/anypoint/gemini_inbound/reject.unknown-model.body.json +0 -0
  749. {donkey_kit-0.1.2 → donkey_kit-0.2.0}/tests/fixtures/anypoint/gemini_inbound/reject.unknown-model.headers.txt +0 -0
  750. {donkey_kit-0.1.2 → donkey_kit-0.2.0}/tests/fixtures/anypoint/gemini_inbound/request.stream.http +0 -0
  751. {donkey_kit-0.1.2 → donkey_kit-0.2.0}/tests/fixtures/anypoint/gemini_inbound/request.success.http +0 -0
  752. {donkey_kit-0.1.2 → donkey_kit-0.2.0}/tests/fixtures/anypoint/gemini_inbound/request.unknown-model.http +0 -0
  753. {donkey_kit-0.1.2 → donkey_kit-0.2.0}/tests/fixtures/anypoint/gemini_inbound/responses.stream.body.txt +0 -0
  754. {donkey_kit-0.1.2 → donkey_kit-0.2.0}/tests/fixtures/anypoint/gemini_inbound/responses.stream.headers.txt +0 -0
  755. {donkey_kit-0.1.2 → donkey_kit-0.2.0}/tests/fixtures/anypoint/gemini_inbound/responses.success.body.json +0 -0
  756. {donkey_kit-0.1.2 → donkey_kit-0.2.0}/tests/fixtures/anypoint/gemini_inbound/responses.success.headers.txt +0 -0
  757. {donkey_kit-0.1.2 → donkey_kit-0.2.0}/tests/fixtures/anypoint/model_wallet/README.md +0 -0
  758. {donkey_kit-0.1.2 → donkey_kit-0.2.0}/tests/fixtures/anypoint/model_wallet/jwt.claims.json +0 -0
  759. {donkey_kit-0.1.2 → donkey_kit-0.2.0}/tests/fixtures/anypoint/model_wallet/mw-policies.json +0 -0
  760. {donkey_kit-0.1.2 → donkey_kit-0.2.0}/tests/fixtures/anypoint/model_wallet/probe.exhaustion-run.json +0 -0
  761. {donkey_kit-0.1.2 → donkey_kit-0.2.0}/tests/fixtures/anypoint/model_wallet/reject.jwt-invalid.body.json +0 -0
  762. {donkey_kit-0.1.2 → donkey_kit-0.2.0}/tests/fixtures/anypoint/model_wallet/reject.jwt-invalid.headers.txt +0 -0
  763. {donkey_kit-0.1.2 → donkey_kit-0.2.0}/tests/fixtures/anypoint/model_wallet/reject.jwt-missing.body.json +0 -0
  764. {donkey_kit-0.1.2 → donkey_kit-0.2.0}/tests/fixtures/anypoint/model_wallet/reject.jwt-missing.headers.txt +0 -0
  765. {donkey_kit-0.1.2 → donkey_kit-0.2.0}/tests/fixtures/anypoint/model_wallet/reject.wallet-exhausted.body.json +0 -0
  766. {donkey_kit-0.1.2 → donkey_kit-0.2.0}/tests/fixtures/anypoint/model_wallet/reject.wallet-exhausted.headers.txt +0 -0
  767. {donkey_kit-0.1.2 → donkey_kit-0.2.0}/tests/fixtures/anypoint/model_wallet/request.success.http +0 -0
  768. {donkey_kit-0.1.2 → donkey_kit-0.2.0}/tests/fixtures/anypoint/model_wallet/responses.exhaustion-run.first.headers.txt +0 -0
  769. {donkey_kit-0.1.2 → donkey_kit-0.2.0}/tests/fixtures/anypoint/model_wallet/responses.exhaustion-run.last.headers.txt +0 -0
  770. {donkey_kit-0.1.2 → donkey_kit-0.2.0}/tests/fixtures/anypoint/model_wallet/responses.success.body.json +0 -0
  771. {donkey_kit-0.1.2 → donkey_kit-0.2.0}/tests/fixtures/anypoint/model_wallet/responses.success.headers.txt +0 -0
  772. {donkey_kit-0.1.2 → donkey_kit-0.2.0}/tests/fixtures/anypoint/model_wallet/wallet.definition.json +0 -0
  773. {donkey_kit-0.1.2 → donkey_kit-0.2.0}/tests/fixtures/anypoint/openai_gemini_stream/README.md +0 -0
  774. {donkey_kit-0.1.2 → donkey_kit-0.2.0}/tests/fixtures/anypoint/openai_gemini_stream/request.stream-tool-call.http +0 -0
  775. {donkey_kit-0.1.2 → donkey_kit-0.2.0}/tests/fixtures/anypoint/openai_gemini_stream/request.stream.http +0 -0
  776. {donkey_kit-0.1.2 → donkey_kit-0.2.0}/tests/fixtures/anypoint/openai_gemini_stream/request.stream.request-compression.http +0 -0
  777. {donkey_kit-0.1.2 → donkey_kit-0.2.0}/tests/fixtures/anypoint/openai_gemini_stream/responses.stream-tool-call.body.txt +0 -0
  778. {donkey_kit-0.1.2 → donkey_kit-0.2.0}/tests/fixtures/anypoint/openai_gemini_stream/responses.stream-tool-call.headers.txt +0 -0
  779. {donkey_kit-0.1.2 → donkey_kit-0.2.0}/tests/fixtures/anypoint/openai_gemini_stream/responses.stream.body.txt +0 -0
  780. {donkey_kit-0.1.2 → donkey_kit-0.2.0}/tests/fixtures/anypoint/openai_gemini_stream/responses.stream.headers.txt +0 -0
  781. {donkey_kit-0.1.2 → donkey_kit-0.2.0}/tests/fixtures/anypoint/openai_gemini_stream/responses.stream.request-compression.body.txt +0 -0
  782. {donkey_kit-0.1.2 → donkey_kit-0.2.0}/tests/fixtures/anypoint/openai_gemini_stream/responses.stream.request-compression.headers.txt +0 -0
  783. {donkey_kit-0.1.2 → donkey_kit-0.2.0}/tests/fixtures/anypoint/policy_list.product-catalog-mcp.json +0 -0
  784. {donkey_kit-0.1.2 → donkey_kit-0.2.0}/tests/fixtures/anypoint/request_rate_limit/README.md +0 -0
  785. {donkey_kit-0.1.2 → donkey_kit-0.2.0}/tests/fixtures/anypoint/request_rate_limit/reject.request-rate-limit.repeat.headers.txt +0 -0
  786. {donkey_kit-0.1.2 → donkey_kit-0.2.0}/tests/fixtures/anypoint/request_rate_limit/responses.after-reset.headers.txt +0 -0
  787. {donkey_kit-0.1.2 → donkey_kit-0.2.0}/tests/fixtures/anypoint/request_rate_limit/responses.success.body.json +0 -0
  788. {donkey_kit-0.1.2 → donkey_kit-0.2.0}/tests/fixtures/anypoint/request_rate_limit/responses.success.headers.txt +0 -0
  789. {donkey_kit-0.1.2 → donkey_kit-0.2.0}/tests/fixtures/anypoint/request_rate_limit/responses.window-exhausted.headers.txt +0 -0
  790. {donkey_kit-0.1.2 → donkey_kit-0.2.0}/tests/fixtures/anypoint/routes/README.md +0 -0
  791. {donkey_kit-0.1.2 → donkey_kit-0.2.0}/tests/fixtures/anypoint/routes/azureopenai.chat_completions.reject.body.json +0 -0
  792. {donkey_kit-0.1.2 → donkey_kit-0.2.0}/tests/fixtures/anypoint/routes/azureopenai.chat_completions.reject.headers.txt +0 -0
  793. {donkey_kit-0.1.2 → donkey_kit-0.2.0}/tests/fixtures/anypoint/routes/azureopenai.chat_completions.stream.body.txt +0 -0
  794. {donkey_kit-0.1.2 → donkey_kit-0.2.0}/tests/fixtures/anypoint/routes/azureopenai.chat_completions.stream.headers.txt +0 -0
  795. {donkey_kit-0.1.2 → donkey_kit-0.2.0}/tests/fixtures/anypoint/routes/azureopenai.chat_completions.success.body.json +0 -0
  796. {donkey_kit-0.1.2 → donkey_kit-0.2.0}/tests/fixtures/anypoint/routes/azureopenai.chat_completions.success.headers.txt +0 -0
  797. {donkey_kit-0.1.2 → donkey_kit-0.2.0}/tests/fixtures/anypoint/routes/azureopenai.responses.reject.body.json +0 -0
  798. {donkey_kit-0.1.2 → donkey_kit-0.2.0}/tests/fixtures/anypoint/routes/azureopenai.responses.reject.headers.txt +0 -0
  799. {donkey_kit-0.1.2 → donkey_kit-0.2.0}/tests/fixtures/anypoint/routes/azureopenai.responses.stream.body.json +0 -0
  800. {donkey_kit-0.1.2 → donkey_kit-0.2.0}/tests/fixtures/anypoint/routes/azureopenai.responses.stream.headers.txt +0 -0
  801. {donkey_kit-0.1.2 → donkey_kit-0.2.0}/tests/fixtures/anypoint/routes/azureopenai.responses.success.body.json +0 -0
  802. {donkey_kit-0.1.2 → donkey_kit-0.2.0}/tests/fixtures/anypoint/routes/azureopenai.responses.success.headers.txt +0 -0
  803. {donkey_kit-0.1.2 → donkey_kit-0.2.0}/tests/fixtures/anypoint/routes/bedrockanthropic.chat_completions.reject.body.json +0 -0
  804. {donkey_kit-0.1.2 → donkey_kit-0.2.0}/tests/fixtures/anypoint/routes/bedrockanthropic.chat_completions.reject.headers.txt +0 -0
  805. {donkey_kit-0.1.2 → donkey_kit-0.2.0}/tests/fixtures/anypoint/routes/bedrockanthropic.chat_completions.stream.body.txt +0 -0
  806. {donkey_kit-0.1.2 → donkey_kit-0.2.0}/tests/fixtures/anypoint/routes/bedrockanthropic.chat_completions.stream.headers.txt +0 -0
  807. {donkey_kit-0.1.2 → donkey_kit-0.2.0}/tests/fixtures/anypoint/routes/bedrockanthropic.chat_completions.success.body.json +0 -0
  808. {donkey_kit-0.1.2 → donkey_kit-0.2.0}/tests/fixtures/anypoint/routes/bedrockanthropic.chat_completions.success.headers.txt +0 -0
  809. {donkey_kit-0.1.2 → donkey_kit-0.2.0}/tests/fixtures/anypoint/routes/bedrockanthropic.responses.reject.body.json +0 -0
  810. {donkey_kit-0.1.2 → donkey_kit-0.2.0}/tests/fixtures/anypoint/routes/bedrockanthropic.responses.reject.headers.txt +0 -0
  811. {donkey_kit-0.1.2 → donkey_kit-0.2.0}/tests/fixtures/anypoint/routes/bedrockanthropic.responses.stream.body.txt +0 -0
  812. {donkey_kit-0.1.2 → donkey_kit-0.2.0}/tests/fixtures/anypoint/routes/bedrockanthropic.responses.stream.headers.txt +0 -0
  813. {donkey_kit-0.1.2 → donkey_kit-0.2.0}/tests/fixtures/anypoint/routes/bedrockanthropic.responses.success.body.json +0 -0
  814. {donkey_kit-0.1.2 → donkey_kit-0.2.0}/tests/fixtures/anypoint/routes/bedrockanthropic.responses.success.headers.txt +0 -0
  815. {donkey_kit-0.1.2 → donkey_kit-0.2.0}/tests/fixtures/anypoint/routes/gemini.chat_completions.reject.body.json +0 -0
  816. {donkey_kit-0.1.2 → donkey_kit-0.2.0}/tests/fixtures/anypoint/routes/gemini.chat_completions.reject.headers.txt +0 -0
  817. {donkey_kit-0.1.2 → donkey_kit-0.2.0}/tests/fixtures/anypoint/routes/gemini.chat_completions.stream.body.txt +0 -0
  818. {donkey_kit-0.1.2 → donkey_kit-0.2.0}/tests/fixtures/anypoint/routes/gemini.chat_completions.stream.headers.txt +0 -0
  819. {donkey_kit-0.1.2 → donkey_kit-0.2.0}/tests/fixtures/anypoint/routes/gemini.chat_completions.success.body.json +0 -0
  820. {donkey_kit-0.1.2 → donkey_kit-0.2.0}/tests/fixtures/anypoint/routes/gemini.chat_completions.success.headers.txt +0 -0
  821. {donkey_kit-0.1.2 → donkey_kit-0.2.0}/tests/fixtures/anypoint/routes/gemini.responses.reject.body.json +0 -0
  822. {donkey_kit-0.1.2 → donkey_kit-0.2.0}/tests/fixtures/anypoint/routes/gemini.responses.reject.headers.txt +0 -0
  823. {donkey_kit-0.1.2 → donkey_kit-0.2.0}/tests/fixtures/anypoint/routes/gemini.responses.stream.body.txt +0 -0
  824. {donkey_kit-0.1.2 → donkey_kit-0.2.0}/tests/fixtures/anypoint/routes/gemini.responses.stream.headers.txt +0 -0
  825. {donkey_kit-0.1.2 → donkey_kit-0.2.0}/tests/fixtures/anypoint/routes/gemini.responses.success.body.json +0 -0
  826. {donkey_kit-0.1.2 → donkey_kit-0.2.0}/tests/fixtures/anypoint/routes/gemini.responses.success.headers.txt +0 -0
  827. {donkey_kit-0.1.2 → donkey_kit-0.2.0}/tests/fixtures/anypoint/routes/openai.chat_completions.reject.body.json +0 -0
  828. {donkey_kit-0.1.2 → donkey_kit-0.2.0}/tests/fixtures/anypoint/routes/openai.chat_completions.reject.headers.txt +0 -0
  829. {donkey_kit-0.1.2 → donkey_kit-0.2.0}/tests/fixtures/anypoint/routes/openai.chat_completions.stream.body.txt +0 -0
  830. {donkey_kit-0.1.2 → donkey_kit-0.2.0}/tests/fixtures/anypoint/routes/openai.chat_completions.stream.headers.txt +0 -0
  831. {donkey_kit-0.1.2 → donkey_kit-0.2.0}/tests/fixtures/anypoint/routes/openai.chat_completions.success.body.json +0 -0
  832. {donkey_kit-0.1.2 → donkey_kit-0.2.0}/tests/fixtures/anypoint/routes/openai.chat_completions.success.headers.txt +0 -0
  833. {donkey_kit-0.1.2 → donkey_kit-0.2.0}/tests/fixtures/anypoint/routes/openai.responses.reject.body.json +0 -0
  834. {donkey_kit-0.1.2 → donkey_kit-0.2.0}/tests/fixtures/anypoint/routes/openai.responses.reject.headers.txt +0 -0
  835. {donkey_kit-0.1.2 → donkey_kit-0.2.0}/tests/fixtures/anypoint/routes/openai.responses.stream.body.txt +0 -0
  836. {donkey_kit-0.1.2 → donkey_kit-0.2.0}/tests/fixtures/anypoint/routes/openai.responses.stream.headers.txt +0 -0
  837. {donkey_kit-0.1.2 → donkey_kit-0.2.0}/tests/fixtures/anypoint/routes/openai.responses.success.body.json +0 -0
  838. {donkey_kit-0.1.2 → donkey_kit-0.2.0}/tests/fixtures/anypoint/routes/openai.responses.success.headers.txt +0 -0
  839. {donkey_kit-0.1.2 → donkey_kit-0.2.0}/tests/fixtures/anypoint/semantic_cache/README.md +0 -0
  840. {donkey_kit-0.1.2 → donkey_kit-0.2.0}/tests/fixtures/anypoint/semantic_cache/request.success.http +0 -0
  841. {donkey_kit-0.1.2 → donkey_kit-0.2.0}/tests/fixtures/anypoint/semantic_cache/responses.bypass.headers.txt +0 -0
  842. {donkey_kit-0.1.2 → donkey_kit-0.2.0}/tests/fixtures/anypoint/semantic_cache/responses.hit.body.json +0 -0
  843. {donkey_kit-0.1.2 → donkey_kit-0.2.0}/tests/fixtures/anypoint/semantic_cache/responses.hit.headers.txt +0 -0
  844. {donkey_kit-0.1.2 → donkey_kit-0.2.0}/tests/fixtures/anypoint/semantic_cache/responses.miss.body.json +0 -0
  845. {donkey_kit-0.1.2 → donkey_kit-0.2.0}/tests/fixtures/anypoint/semantic_cache/responses.miss.headers.txt +0 -0
  846. {donkey_kit-0.1.2 → donkey_kit-0.2.0}/tests/fixtures/anypoint/semantic_cache/responses.no-store-proof.headers.txt +0 -0
  847. {donkey_kit-0.1.2 → donkey_kit-0.2.0}/tests/fixtures/anypoint/semantic_cache/responses.no-store.body.json +0 -0
  848. {donkey_kit-0.1.2 → donkey_kit-0.2.0}/tests/fixtures/anypoint/semantic_cache/responses.no-store.headers.txt +0 -0
  849. {donkey_kit-0.1.2 → donkey_kit-0.2.0}/tests/fixtures/anypoint/semantic_cache/responses.principal-id.headers.txt +0 -0
  850. {donkey_kit-0.1.2 → donkey_kit-0.2.0}/tests/fixtures/anypoint/semantic_cache/responses.threshold-override.headers.txt +0 -0
  851. {donkey_kit-0.1.2 → donkey_kit-0.2.0}/tests/fixtures/anypoint/semantic_cache/responses.ttl-override.headers.txt +0 -0
  852. {donkey_kit-0.1.2 → donkey_kit-0.2.0}/tests/sandbox/README.md +0 -0
  853. {donkey_kit-0.1.2 → donkey_kit-0.2.0}/tests/sandbox/conftest.py +0 -0
  854. {donkey_kit-0.1.2 → donkey_kit-0.2.0}/tests/sandbox/proxies.toml.example +0 -0
  855. {donkey_kit-0.1.2 → donkey_kit-0.2.0}/tests/sandbox/test_proxy_contracts.py +0 -0
  856. {donkey_kit-0.1.2 → donkey_kit-0.2.0}/tests/typecheck/classify_response_contract.py +0 -0
  857. {donkey_kit-0.1.2 → donkey_kit-0.2.0}/tests/typecheck/headline_api_contract.py +0 -0
  858. {donkey_kit-0.1.2 → donkey_kit-0.2.0}/tests/unit/test_anthropic_client_stacks.py +0 -0
  859. {donkey_kit-0.1.2 → donkey_kit-0.2.0}/tests/unit/test_anthropic_httpx2_bridge.py +0 -0
  860. {donkey_kit-0.1.2 → donkey_kit-0.2.0}/tests/unit/test_base_install_deps.py +0 -0
  861. {donkey_kit-0.1.2 → donkey_kit-0.2.0}/tests/unit/test_budget_pacing.py +0 -0
  862. {donkey_kit-0.1.2 → donkey_kit-0.2.0}/tests/unit/test_budget_requests.py +0 -0
  863. {donkey_kit-0.1.2 → donkey_kit-0.2.0}/tests/unit/test_capture_fixture.py +0 -0
  864. {donkey_kit-0.1.2 → donkey_kit-0.2.0}/tests/unit/test_check_commit_identities.py +0 -0
  865. {donkey_kit-0.1.2 → donkey_kit-0.2.0}/tests/unit/test_check_doc_links.py +0 -0
  866. {donkey_kit-0.1.2 → donkey_kit-0.2.0}/tests/unit/test_check_new_dependencies.py +0 -0
  867. {donkey_kit-0.1.2 → donkey_kit-0.2.0}/tests/unit/test_cli_help.py +0 -0
  868. {donkey_kit-0.1.2 → donkey_kit-0.2.0}/tests/unit/test_cli_init.py +0 -0
  869. {donkey_kit-0.1.2 → donkey_kit-0.2.0}/tests/unit/test_cli_test.py +0 -0
  870. {donkey_kit-0.1.2 → donkey_kit-0.2.0}/tests/unit/test_compare_benchmark_trend.py +0 -0
  871. {donkey_kit-0.1.2 → donkey_kit-0.2.0}/tests/unit/test_config_env_vars.py +0 -0
  872. {donkey_kit-0.1.2 → donkey_kit-0.2.0}/tests/unit/test_config_header_names.py +0 -0
  873. {donkey_kit-0.1.2 → donkey_kit-0.2.0}/tests/unit/test_conformance_base_only.py +0 -0
  874. {donkey_kit-0.1.2 → donkey_kit-0.2.0}/tests/unit/test_connection_kwargs_rendering.py +0 -0
  875. {donkey_kit-0.1.2 → donkey_kit-0.2.0}/tests/unit/test_contract_extra_skip_guard.py +0 -0
  876. {donkey_kit-0.1.2 → donkey_kit-0.2.0}/tests/unit/test_docs_config_table.py +0 -0
  877. {donkey_kit-0.1.2 → donkey_kit-0.2.0}/tests/unit/test_endpoint_overrides.py +0 -0
  878. {donkey_kit-0.1.2 → donkey_kit-0.2.0}/tests/unit/test_framework_redirects.py +0 -0
  879. {donkey_kit-0.1.2 → donkey_kit-0.2.0}/tests/unit/test_gateway.py +0 -0
  880. {donkey_kit-0.1.2 → donkey_kit-0.2.0}/tests/unit/test_hermetic_suite.py +0 -0
  881. {donkey_kit-0.1.2 → donkey_kit-0.2.0}/tests/unit/test_langgraph_correlation.py +0 -0
  882. {donkey_kit-0.1.2 → donkey_kit-0.2.0}/tests/unit/test_llamaindex_model_defaults.py +0 -0
  883. {donkey_kit-0.1.2 → donkey_kit-0.2.0}/tests/unit/test_llm_bearer_mode.py +0 -0
  884. {donkey_kit-0.1.2 → donkey_kit-0.2.0}/tests/unit/test_llm_catalog.py +0 -0
  885. {donkey_kit-0.1.2 → donkey_kit-0.2.0}/tests/unit/test_llm_client_jwt.py +0 -0
  886. {donkey_kit-0.1.2 → donkey_kit-0.2.0}/tests/unit/test_public_docstrings.py +0 -0
  887. {donkey_kit-0.1.2 → donkey_kit-0.2.0}/tests/unit/test_refusal_groups.py +0 -0
  888. {donkey_kit-0.1.2 → donkey_kit-0.2.0}/tests/unit/test_refusal_tracebacks.py +0 -0
  889. {donkey_kit-0.1.2 → donkey_kit-0.2.0}/tests/unit/test_route_upstream_contract.py +0 -0
  890. {donkey_kit-0.1.2 → donkey_kit-0.2.0}/tests/unit/test_scrub_fixtures.py +0 -0
  891. {donkey_kit-0.1.2 → donkey_kit-0.2.0}/tests/unit/test_shared_client_views.py +0 -0
  892. {donkey_kit-0.1.2 → donkey_kit-0.2.0}/tests/unit/test_simulator_base_only.py +0 -0
  893. {donkey_kit-0.1.2 → donkey_kit-0.2.0}/tests/unit/test_strands_terminal_refusal.py +0 -0
  894. {donkey_kit-0.1.2 → donkey_kit-0.2.0}/tests/unit/test_transport_event_loops.py +0 -0
  895. {donkey_kit-0.1.2 → donkey_kit-0.2.0}/tests/unit/test_transport_injection.py +0 -0
  896. {donkey_kit-0.1.2 → donkey_kit-0.2.0}/tests/unit/test_transport_origin_guard.py +0 -0
  897. {donkey_kit-0.1.2 → donkey_kit-0.2.0}/tests/unit/test_typed_refusals_example.py +0 -0
  898. {donkey_kit-0.1.2 → donkey_kit-0.2.0}/tests/unit/test_verify_frameworks.py +0 -0
  899. {donkey_kit-0.1.2 → donkey_kit-0.2.0}/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.0
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 lockfile (`donkey.tools.lock()`, `discover(locked=True)`), 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
+ | OpenAI Agents SDK | MCP tool denial typed | `ToolSet.openai_agents()` leaves each tool call to `MCPServerStreamableHttp`, which raises the `mcp` package's `McpError` with the code intact; `tool_access_denial(exc)` turns it into `ToolNotInProfile`. |
311
+ | Microsoft Agent Framework | MCP tool denial typed | For the same reason: `MCPStreamableHTTPTool` raises its `ToolExecutionException` with the `McpError` as its cause; `tool_access_denial(exc)` converts it. |
312
+ | CrewAI | MCP tool denial typed | For the same reason: `MCPServerAdapter`'s tools raise the `McpError`; `tool_access_denial(exc)` converts it. |
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 lockfile (`donkey.tools.lock()`, `discover(locked=True)`), 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
+ | OpenAI Agents SDK | MCP tool denial typed | `ToolSet.openai_agents()` leaves each tool call to `MCPServerStreamableHttp`, which raises the `mcp` package's `McpError` with the code intact; `tool_access_denial(exc)` turns it into `ToolNotInProfile`. |
226
+ | Microsoft Agent Framework | MCP tool denial typed | For the same reason: `MCPStreamableHTTPTool` raises its `ToolExecutionException` with the `McpError` as its cause; `tool_access_denial(exc)` converts it. |
227
+ | CrewAI | MCP tool denial typed | For the same reason: `MCPServerAdapter`'s tools raise the `McpError`; `tool_access_denial(exc)` converts it. |
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. -->