feature improvement breaking-change python

Added

Python SDK

  • Platform Connection Injection. Bridge adapters (A2AGatewayAdapter, SlackAdapter, BandACPServerAdapter) no longer take api_key/rest_url constructor parameters; the runtime injects the credentials already given to Agent.create().
  • Parlant Server Lifecycle. ParlantAdapter can now own the Parlant server end to end: it boots p.Server when the Band agent starts and tears it down when it stops. Declare guidelines up front with adapter.add_guideline(...); the Band platform tools attach by default. A configure= callback and bring-your-own server=/parlant_agent= remain available for advanced use.
  • Codex/Letta/OpenCode Config from Environment. CodexAdapterConfig, LettaAdapterConfig, and OpencodeAdapterConfig fields fall back to prefixed environment variables (CODEX_*, LETTA_*, OPENCODE_*) when left unset; an explicit constructor argument always wins.

Changed

Python SDK

  • Breaking: Cohesive Adapter Construction Surface. Every framework adapter now takes emit=, capabilities=, include_tools=, exclude_tools=, and include_categories= directly as constructor keyword arguments instead of a wrapping features=AdapterFeatures(...) object.

    # Before
    adapter = AnthropicAdapter(
    model="claude-sonnet-4-5",
    features=AdapterFeatures(emit={Emit.EXECUTION}, capabilities={Capability.MEMORY}),
    )
    # After
    adapter = AnthropicAdapter(
    model="claude-sonnet-4-5",
    emit=Emit.TOOL_CALLS,
    capabilities=Capability.MEMORY,
    )

    Emit/Capability combine with | into a set; a single member is also accepted directly. Emit.EXECUTION is renamed Emit.TOOL_CALLS. Omitted, emit now defaults to everything the adapter supports, previously silent unless asked; pass emit=() to keep the old silence. capabilities stays opt-in and defaults to empty. Requesting a value outside an adapter’s support raises BandConfigError immediately, instead of a silent warning. The enable_execution_reporting / enable_memory_tools booleans (and the Codex/Letta/OpenCode config-object equivalents) are removed, not deprecated.

  • Breaking: Bridge Adapters Drop api_key/rest_url. A2AGatewayAdapter, SlackAdapter, BandACPServerAdapter, and ACPClientAdapter no longer accept api_key/rest_url constructor parameters; they read the platform connection injected from the credentials already passed to Agent.create(). A2AGatewayAdapter’s gateway_url is now optional, deriving http://localhost:{port} when omitted.

  • Breaking: ParlantAdapter Construction Changed. ParlantAdapter(server=, parlant_agent=) are now optional keyword-only escape hatches rather than required arguments; the dead additional_tools parameter was removed. Guidelines are declared with adapter.add_guideline(...) before the agent starts, not via parlant_agent.create_guideline(...) on a manually created server.

What This Means

  • New SDK users: build adapters with the flat emit=/capabilities= keyword arguments shown above.
  • Existing SDK users: replace every features=AdapterFeatures(...) call site, rename Emit.EXECUTION to Emit.TOOL_CALLS, and drop any api_key=/rest_url= arguments passed to A2AGatewayAdapter, SlackAdapter, BandACPServerAdapter, or ACPClientAdapter.
  • Parlant users: move guideline registration to adapter.add_guideline(...) before startup, or use the configure= callback for anything requiring the live Parlant agent.

Migration

There is no deprecation period: old parameters and the old Emit.EXECUTION name are removed outright (pre-1.0). Update call sites directly; there is no compatibility shim to warn you at runtime.