Skip to content

Releases: Donkey-Development-Kit/donkey-development-kit

v0.1.0 — Phase 1: Build the MVP

Choose a tag to compare

@tbolis-at-mulesoft tbolis-at-mulesoft released this 25 Sep 07:14
262fe93

The first release of Donkey Development Kit (donkey-kit), completing Phase 1 — Build the MVP. The package is alpha (Development Status :: 3 - Alpha).

pip install "donkey-kit[llm,langgraph]"

What's in 0.1.0

The wrapper is the skeleton: one shared transport (DonkeyAsyncClient) that every request enters and every response leaves, so the whole six-piece minimum attaches without per-call wiring.

  • Governed model access. donkey.llm.client() is the framework-free OpenAI-compatible client. Donkey.openai() returns a native openai.AsyncOpenAI. Client-ID and JWT/Model Wallet auth modes are supported for the LLM proxy data plane.
  • Typed refusals. classify() maps gateway rejections to a typed taxonomy (PIIDetected, PolicyViolation, AuthError, GatewayUnavailable, and others). Every PolicyViolation carries a non-empty remediation. Policy refusals are terminal, so the openai client's built-in retry never fires on them.
  • Budgets and pacing. Budget is parsed from the gateway's rate-limit headers, with pace(), wait_for_reset() and BudgetReserveReached.
  • Local gateway simulator. donkey mock replays real rejection fixtures and scripts PII, budget and injection scenarios. Every simulated response is marked with the x-donkey-simulator header.
  • Testing. donkey.simulate() injects refusals in process. The customer-facing conformance pytest plugin runs as pytest --donkey-conformance --agent=... and is installed by the test extra.
  • Telemetry. OTel GenAI spans at a pinned semconv version, plus a stable donkey.* namespace, with zero-config OTLP export and a one-flag opt-out. Per-call and per-run correlation IDs come from donkey.run(), and cost-attribution tags are validated. Prompt and completion content is kept out of spans by default.
  • Framework support: one deep, seven shallow. The raw client and LangGraph are conformance-tested. Google ADK, Strands, Microsoft Agent Framework, OpenAI Agents SDK, Anthropic SDK, CrewAI and LlamaIndex are supported through connection_kwargs().
  • CLI. donkey init, donkey doctor and donkey mock.
  • Decorators. @donkey.governed and @donkey.tool.
  • Gateway awareness. last_call exposes gateway identity, the semantic-routing topic and score, semantic-cache hits, and cached and reasoning token counts.

Verification status (§0.3)

The LLM proxy data plane is live-verified: base URL shape, the client_id/client_secret header pair, streaming, the OAuth2 token path, and the documented rejection shapes. Amazon Bedrock Guardrails refusals were flipped to verified (live) in this cycle. Still blocked on verification: Exchange→MCP tool discovery and the provisioning control plane. These raise NotImplementedError("blocked on verification: …") rather than guessing. See docs/verified-apis.md for the full ledger.

Breaking changes / migration

This is the first published release, so there is no earlier donkey-kit on PyPI to upgrade from. If you integrated the pre-rebrand SDK from source, the move is a clean break: no import shims, env fallbacks, or OpenTelemetry dual-emit. OTel attributes moved from fabric.* to donkey.*. MIGRATION.md maps every renamed import, class, CLI, config key and environment variable.

Extras (§8.4)

There is one extra per framework (langgraph, adk, strands, agent_framework, openai-agents, anthropic, crewai, llamaindex), plus llm, mcp, a2a, otel, cli, local, test and all. All dependencies use >= floors only, with no upper pins.

Links


"Agent Fabric", MuleSoft, Anypoint and Omni Gateway are Salesforce trademarks. Donkey Development Kit is an independent, community-maintained project. It is not affiliated with, endorsed by, or supported by Salesforce or MuleSoft, and it is provided as-is under Apache-2.0.