Skip to content

SDK Packages

github-actions[bot] edited this page Feb 27, 2026 · 1 revision

SDK Packages

Three standalone pip-installable packages for integrating governance into existing agent frameworks. Each package wraps AgentSession to produce sealed decision episodes without modifying application code.

Package Overview

Package PyPI Framework Tests
langchain-deepsigma pip install langchain-deepsigma LangChain + LangGraph 21
deepsigma-middleware pip install deepsigma-middleware FastAPI + Flask 15
openai-deepsigma pip install openai-deepsigma Any tool-calling agent SDK 11

Source: packages/ directory in repo root.


langchain-deepsigma

Repackages enterprise LangChain adapters into a standalone package with optional AgentSession integration.

Exports

  • ExhaustCallbackHandler — captures LLM calls, tool invocations, chain completions, and errors as exhaust events
  • GovernanceCallbackHandler — enforces DTE constraints mid-chain with three violation modes (raise, log, degrade)
  • DTEViolationError — raised when governance constraints are violated in raise mode
  • LangGraphExhaustTracker — async event tracker for astream_events() output
  • LangGraphConnector — trace-to-canonical record mapper with to_agent_session_decisions() for simplified decision dicts

Usage

from langchain_deepsigma import ExhaustCallbackHandler, GovernanceCallbackHandler
from core.agent import AgentSession

session = AgentSession("my-agent")
exhaust = ExhaustCallbackHandler(session=session)
governance = GovernanceCallbackHandler(dte_enforcer=my_dte, session=session)

chain.invoke(input, config={"callbacks": [exhaust, governance]})

deepsigma-middleware

Generic REST middleware backed by AgentSession via contextvars for async safety.

Exports

  • configure(agent_id, storage_dir) — set default session parameters
  • log_decision(actor_type, decision_type) — decorator for sync and async functions
  • get_session() — returns or creates an AgentSession from the current context
  • DeepSigmaMiddleware — ASGI middleware for FastAPI/Starlette
  • FlaskDeepSigma — Flask extension

FastAPI

from deepsigma_middleware import DeepSigmaMiddleware

app = FastAPI()
app.add_middleware(DeepSigmaMiddleware, agent_id="api-server")

Flask

from deepsigma_middleware import FlaskDeepSigma

app = Flask(__name__)
FlaskDeepSigma(app, agent_id="api-server")

Decorator

from deepsigma_middleware import configure, log_decision

configure(agent_id="my-agent")

@log_decision(actor_type="api", decision_type="order_approval")
def approve_order(order_id):
    ...

openai-deepsigma

Generic wrapper for tool-calling agent SDKs. Not vendor-specific at runtime.

Exports

  • DeepSigmaAgentWrapper(agent, session, detect_drift=False) — wraps any agent with a .run() method
  • AgentRunResult(output, episode_count, drift_signals, raw_result) — structured result

Usage

from openai_deepsigma import DeepSigmaAgentWrapper
from core.agent import AgentSession

session = AgentSession("fraud-detector")
wrapper = DeepSigmaAgentWrapper(agent, session, detect_drift=True)

result = wrapper.run("Analyze transaction 12345")
print(result.episode_count)    # sealed episodes logged
print(result.drift_signals)    # drift detected across runs

Lifecycle

  1. Log intent decision (pre-run)
  2. Execute agent.run(input_text)
  3. Intercept each tool call and log as separate decision
  4. Seal completion episode
  5. If detect_drift=True and run count > 1: run session.detect_drift()

CI / Publishing

Each package has a dedicated publish workflow triggered by version tags:

Package Tag Pattern Workflow
langchain-deepsigma langchain-v* publish-langchain.yml
deepsigma-middleware middleware-v* publish-middleware.yml
openai-deepsigma openai-v* publish-openai.yml

All workflows use OIDC trusted publishing and test across Python 3.10-3.12.

Clone this wiki locally