"""ABOM runtime adapters — wrap a model provider's SDK so an agent's model
calls are recorded automatically into a hash-chained Action Provenance log,
and (optionally) gated against the signed Composition Manifest before they run.

Usage::

    from abom.adapters import instrument
    from anthropic import Anthropic

    client = instrument(Anthropic(), manifest="abom.json", gate=True)
    client.messages.create(model="claude-3-5-sonnet-20241022", messages=[...])

    # later: client.abom.chain  -> the Action Provenance records captured

One adapter per provider. ``instrument`` auto-detects the provider from the
client type; pass ``provider=`` to force it. The runtime capture is built on the
same primitives as the rest of ABOM (``bom.append_action`` for provenance,
``gate.Gate`` for enforcement), so the records verify with ``abom verify``.
"""
from __future__ import annotations

from .base import AbomRun, instrument, start_run
from .sink import JsonlSink, list_runs, load_chain, resolve_run
from .anthropic import AnthropicAdapter
from .openai import OpenAIAdapter
from .mistral import MistralAdapter
from .langchain import AbomLangChainHandler

__all__ = [
    "instrument", "start_run", "AbomRun",
    "JsonlSink", "load_chain", "list_runs", "resolve_run",
    "AnthropicAdapter", "OpenAIAdapter", "MistralAdapter",
    "AbomLangChainHandler",
]
