Skip to main content
Pre-release

This release is a pre-release and may not be stable for production use.

agent-did-semantic-kernel

Integracion funcional de Agent-DID para Semantic Kernel con foco en Python.

Esta variante reutiliza el SDK Python real de Agent-DID para snapshot de identidad, resolucion, verificacion, firma opt-in, contexto de sesion, hooks tipo middleware, observabilidad estructurada y un adaptador especializado a OpenTelemetry sin exponer secretos al runtime visible por el modelo.

Estado

  • Estado actual: functional
  • Roadmap: F2-04
  • Lenguaje objetivo: Python
  • Dependencia previa resuelta: SDK Python de Agent-DID
  • Implementacion: funcional para tools base, contexto de identidad, middleware ligero, observabilidad saneada y validacion avanzada contra host real

El paquete ya expone una factory publica, tools reutilizables, helpers para contexto y middleware, observabilidad vendor-neutral, un camino especializado con OpenTelemetry y defaults seguros. Las operaciones sensibles siguen siendo opt-in: firma HTTP, firma arbitraria, rotacion de claves e historial documental no se habilitan por defecto.

Con el estado actual, la claim correcta para F2-04 ya no es solo "paridad funcional base": el paquete tiene paridad operativa completa con LangChain Python dentro del alcance gobernado por este repositorio para runtime, observabilidad y recipes operativas.

Hallazgos tecnicos confirmados

Segun la documentacion oficial y el runtime validado en CI, Semantic Kernel expone al menos estas superficies utiles para Agent-DID:

  • Kernel como host principal para plugins y funciones.
  • KernelPlugin y kernel_function(...) para registrar tools Agent-DID con schemas compatibles.
  • Kernel.invoke(...) para ejecutar tools a traves del runtime real sin requerir una corrida LLM completa.
  • ChatCompletionAgent como host agentico validado en la recipe operativa y el smoke test.
  • composicion Python-first sin obligar una dependencia runtime en la instalacion por defecto.

Decision de lenguaje

La decision implementada para F2-04 es:

  1. Implementacion en Python.
  2. Dependencia explicita del SDK Python existente de Agent-DID.
  3. Sin compromiso de implementacion JS en esta fase.

Objetivo

Integrar Agent-DID como capa de identidad verificable para agentes ejecutados sobre Semantic Kernel, de forma equivalente a lo ya disponible para LangChain:

  • inyectar DID, controlador, capacidades y clave activa en el contexto operativo del agente,
  • exponer herramientas para inspeccionar identidad, verificar firmas y resolver documentos,
  • habilitar firma de payloads o solicitudes HTTP solo mediante opt-in,
  • mantener la clave privada fuera del contexto visible para el modelo.

Uso rapido

from agent_did_semantic_kernel import create_agent_did_semantic_kernel_integration
from agent_did_sdk import AgentIdentity, AgentIdentityConfig, CreateAgentParams

identity = AgentIdentity(AgentIdentityConfig(signer_address="0x1234567890123456789012345678901234567890"))
runtime_identity = await identity.create(
    CreateAgentParams(
      name="semantic_kernel_assistant",
        core_model="gpt-4.1-mini",
        system_prompt="Eres un agente verificable y trazable.",
        capabilities=["identity:resolve", "signature:verify"],
    )
)

integration = create_agent_did_semantic_kernel_integration(
    agent_identity=identity,
    runtime_identity=runtime_identity,
    expose={"sign_http": True, "document_history": True},
)

agent_kwargs = integration.create_agent_kwargs("Usa herramientas Agent-DID cuando aporten evidencia.")
context_middleware = integration.create_context_middleware()
session_context = context_middleware({"session_id": "demo"})

El bundle devuelto incluye:

  • tools: wrappers ligeros con invoke(...) y ainvoke(...)
  • get_current_identity() y get_current_document()
  • compose_instructions(...)
  • create_agent_kwargs(...) para entregar tools, instructions y context
  • create_session_context(...) para inyectar identidad Agent-DID en session state
  • create_context_middleware(...) para hooks ligeros de enriquecimiento de contexto
  • create_semantic_kernel_plugin(...) para registrar las tools en un runtime real de semantic-kernel

La API publica tambien exporta el alias conceptual createAgentDidSemanticKernelIntegration(...) para mantener continuidad con los artefactos de diseno, aunque la superficie Python-first recomendada es create_agent_did_semantic_kernel_integration(...).

Runtime real con semantic-kernel

La integracion sigue siendo liviana por defecto, pero ahora expone un extra opcional runtime para validar y usar un runtime real de Semantic Kernel mediante semantic-kernel.

python -m pip install -e ".[runtime]"

Ejemplo minimo de registro sobre el runtime real:

from semantic_kernel.agents.chat_completion.chat_completion_agent import ChatCompletionAgent
from semantic_kernel.kernel import Kernel

plugin = integration.create_semantic_kernel_plugin(plugin_name="agent_did")
kernel = Kernel()
kernel.add_plugin(plugin)

agent = ChatCompletionAgent(
  name="Verifier",
  instructions=integration.compose_instructions("Usa Agent-DID cuando necesites evidencia verificable."),
  kernel=kernel,
  plugins=[plugin],
)

identity_result = await kernel.invoke(
  function_name="agent_did_get_current_identity",
  plugin_name="agent_did",
)

Ese path no fuerza ejecucion LLM en CI. La validacion de paridad ahora cubre tres cosas mas utiles para esta fase:

  • que semantic-kernel acepte el plugin generado por la integracion
  • que una secuencia multi-tool real pueda invocarse a traves del runtime
  • que el contexto inyectado y la identidad activa sigan consistentes a traves de rotacion de claves, verificacion y consulta de historial

Recetas operativas

Receta 1: runtime real con observabilidad compuesta

Use esta receta cuando quiera validar en local tres cosas a la vez sin depender de una corrida LLM completa:

  • registro real del plugin en semantic-kernel
  • invocacion de una tool Agent-DID desde Kernel.invoke(...)
  • fan-out de observabilidad a memoria y logging JSON saneado

Ejecute:

cd integrations/semantic-kernel
python -m pip install -e .[dev]
python -m pip install -e .[runtime]
python examples/agent_did_semantic_kernel_operational_recipe_example.py

La recipe:

  • crea una identidad efimera con InMemoryAgentRegistry
  • compone events.append con create_json_logger_event_handler(...)
  • registra el plugin Agent-DID en Kernel
  • instancia ChatCompletionAgent sin requerir ejecucion de modelo
  • invoca agent_did_sign_payload para demostrar compatibilidad de runtime y redaccion de observabilidad

Artefacto runnable asociado:

  • examples/agent_did_semantic_kernel_operational_recipe_example.py

Receta 2: observabilidad compuesta con OpenTelemetry

Use esta receta cuando quiera proyectar los eventos Agent-DID a tres sinks a la vez sin cambiar la factory publica:

  • memoria local para debugging rapido
  • logging JSON saneado
  • spans OpenTelemetry con mapping deterministico y redaccion preservada

Ejecute:

cd integrations/semantic-kernel
python -m pip install -e .[dev]
python examples/agent_did_semantic_kernel_composed_observability_example.py

La recipe:

  • crea un TracerProvider local con InMemorySpanExporter
  • compone callback local, JSON logging y create_opentelemetry_event_handler(...)
  • invoca varias tools para demostrar que la redaccion se conserva en los tres sinks
  • imprime spans terminados con atributos saneados para inspeccion local

Artefacto runnable asociado:

  • examples/agent_did_semantic_kernel_composed_observability_example.py

Receta 3: recipe operativa de produccion sin corrida LLM obligatoria

Use esta receta cuando quiera validar una secuencia mas cercana a operacion real sin depender de un modelo externo:

  • contexto inicial de sesion
  • firma de payload
  • verificacion criptografica
  • rotacion de clave activa
  • historial documental
  • firma HTTP opt-in
  • observabilidad compuesta con OpenTelemetry y JSON logging

Ejecute:

cd integrations/semantic-kernel
python -m pip install -e .[runtime,observability]
set RUN_SEMANTIC_KERNEL_PRODUCTION_EXAMPLE=1
python examples/agent_did_semantic_kernel_production_recipe_example.py

Artefacto runnable asociado:

  • examples/agent_did_semantic_kernel_production_recipe_example.py

Observabilidad

La factory publica acepta instrumentacion opcional sin acoplar el paquete a un backend especifico:

import logging

from agent_did_semantic_kernel import create_agent_did_semantic_kernel_integration
from agent_did_semantic_kernel.observability import compose_event_handlers, create_json_logger_event_handler

logger = logging.getLogger("agent_did_semantic_kernel")
events = []

integration = create_agent_did_semantic_kernel_integration(
  agent_identity=agent_identity,
  runtime_identity=runtime_identity,
  expose={"sign_http": True, "sign_payload": True},
  observability_handler=compose_event_handlers(
    events.append,
    create_json_logger_event_handler(logger, extra_fields={"service": "agent-gateway"}),
  ),
)

Eventos emitidos:

  • agent_did.identity_snapshot.refreshed
  • agent_did.tool.started
  • agent_did.tool.succeeded
  • agent_did.tool.failed
  • agent_did.context.created
  • agent_did.middleware.context_injected

Si necesita una capa mas especializada que el callback o el logger JSON base, el paquete tambien expone un camino OpenTelemetry opt-in:

  • create_opentelemetry_tracer(...): obtiene un tracer compatible con la instalacion activa.
  • create_opentelemetry_event_handler(tracer, ...): proyecta eventos Agent-DID a spans OpenTelemetry saneados, incluyendo lifecycle de tools y eventos genericos.

Ejemplo minimo:

from opentelemetry.sdk.trace import TracerProvider
from opentelemetry.sdk.trace.export import SimpleSpanProcessor
from opentelemetry.sdk.trace.export.in_memory_span_exporter import InMemorySpanExporter

from agent_did_semantic_kernel.observability import (
  compose_event_handlers,
  create_json_logger_event_handler,
  create_opentelemetry_event_handler,
  create_opentelemetry_tracer,
)

provider = TracerProvider()
exporter = InMemorySpanExporter()
provider.add_span_processor(SimpleSpanProcessor(exporter))
tracer = create_opentelemetry_tracer(tracer_provider=provider)

observability_handler = compose_event_handlers(
  local_events.append,
  create_json_logger_event_handler(logger, extra_fields={"sink": "json"}),
  create_opentelemetry_event_handler(tracer, extra_fields={"sink": "otel"}),
)

Este adaptador especializado:

  • conserva redaccion de payload, body, signature y URLs sensibles
  • mantiene mapping estable para agent_did.tool.started, agent_did.tool.succeeded y agent_did.tool.failed
  • permite exportar spans a collectors reales o validarlos localmente con InMemorySpanExporter

Defaults seguros

  • current_identity, resolve_did y verify_signatures quedan habilitados por defecto.
  • sign_http, sign_payload, rotate_keys y document_history permanecen deshabilitados por defecto.
  • sign_http rechaza esquemas no HTTP(S), credenciales embebidas y targets privados o loopback salvo opt-in explicito con allow_private_network_targets=True.
  • El contexto de sesion y middleware nunca inyectan agent_private_key ni firma cruda.
  • La observabilidad redacta payload, body, signature, private_key, token y headers sensibles por defecto.

Validacion local

cd sdk-python
python -m pip install -e .[dev]
cd ../integrations/semantic-kernel
python -m pip install -e .[dev]
python -m ruff check src/ tests/ examples/
python -m mypy src/
python -m pytest tests/ -q
python -m pip install -e .[runtime,observability]
python -m pytest tests/test_runtime_smoke.py -q
python -m build

La ruta anterior valida tanto la suite base como la cobertura avanzada de runtime real y la capa especializada de observabilidad.

Gobernanza de implementacion

Referencias

Metadata

Release files for agent-did-semantic-kernel 1.0.0rc1

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Source distribution (sdist)

Source distribution for agent-did-semantic-kernel 1.0.0rc1
File Size Uploaded Provenance Actions
agent_did_semantic_kernel-1.0.0rc1.tar.gz 23.2 kB With provenance Details for agent_did_semantic_kernel-1.0.0rc1.tar.gz

Built distribution (wheel)

Table of built distributions (wheels) for agent-did-semantic-kernel 1.0.0rc1
File Interpreter ABI Platform Actions
agent_did_semantic_kernel-1.0.0rc1-py3-none-any.whl Python 3 none any Details for agent_did_semantic_kernel-1.0.0rc1-py3-none-any.whl

Total release size: 41.8 kB

Release files / agent_did_semantic_kernel-1.0.0rc1.tar.gz

Download URL agent_did_semantic_kernel-1.0.0rc1.tar.gz
Size 23.2 kB
Tags Source
SHA-256 checksum
How to use checksums
6f723b3ad1f14736b6b60c0710d516c6a8045b74c0bf1d5e829efa137bfe4cb9
BLAKE2b-256 checksum
How to use checksums
cf79b34af0591ce7619ddfc68b8d14341e0cce9f8fb4647338fb6ef932a24555
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.16

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Nov 1, 2026.

Transparency log

Release files / agent_did_semantic_kernel-1.0.0rc1-py3-none-any.whl

Download URL agent_did_semantic_kernel-1.0.0rc1-py3-none-any.whl
Size 18.6 kB
Tags Python 3
SHA-256 checksum
How to use checksums
6f2cce12c3c7324357fc9b84732bfd43c5536ae5c105933c24a633994f570258
BLAKE2b-256 checksum
How to use checksums
346ef5e37ae55abc80519ea296b6affd7550fdc8cd3ab1675f554ae1f72dd8dc
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.16

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Nov 1, 2026.

Transparency log

Security for agent-did-semantic-kernel 1.0.0rc1

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

Full provenance

All 2 files in this release have been uploaded with provenance metadata.

Select from 2 files

Attestation for agent_did_semantic_kernel-1.0.0rc1.tar.gz

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Nov 1, 2026.

Transparency log

A note on package security

PyPI is a repository for distributing packages, not a service for auditing them. While third-party security researchers and our staff do their best to detect and remove malicious packages, PyPI cannot guarantee the quality, security or suitability of any given package.

To learn more about protecting yourself from malicious actors, visit our package security documentation.

Release history Release notifications | RSS feed

This release
Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page