ExampleProvider — minimal :class:`ProviderPlugin` implementation.
Purpose
-------
Every abstract method is implemented with the simplest body that
satisfies the contract: no provider-specific quirks, no
``extra_body`` shaping, no message transformation. When porting to a
real provider, replace each method body in turn — the comments mark
every DeepSeek-specific pattern that does *not* belong in a generic
provider.
Responsibilities
----------------
- :class:`ExampleProvider` — implement every abstract method on
:class:`ProviderPlugin` with the minimal body needed.
- :meth:`build_client` — return an :class:`ExampleClient`.
- :meth:`models` / :meth:`tier` — surface the static registries.
- :meth:`build_extra_body` — always return ``None`` (no thinking
payload).
- :meth:`transform_outgoing_messages` — pass-through (no schema
embedding).
- :meth:`parse_usage` — defer to the shared
:func:`usage_prompt_cache_hit_miss` helper.
Diagnostics
-----------
Domain: OC_CHAT.CLIENT
Levels:
L2 — lifecycle events
L3 — semantic details
L4 — deep tracing
Contracts
---------
- The example bundle stays dependency-free — no SDK imports, no
network code.
- ``build_extra_body`` returns ``None`` regardless of model
capabilities (no thinking shape needed for stubs).
- ``transform_outgoing_messages`` is a true pass-through (no
sentinel embedding) — the example provider exists to prove the
contract works without provider-specific transforms.
- All abstract surface lives here; everything else in the bundle is
pure data.
Dependencies
------------
- oc_diagnostics (structured debug logging via _dbg)
- option_c_agent_contracts (ProviderPlugin base class and the ModelCaps, UsageStats and BaseClient types)
- providers.example.client (ExampleClient returned by build_client)
- providers.example.models (MODELS and TIER_MAP registries)