F1-03 - Matriz de Parity de Integraciones LangChain TS vs Python

May 9, 2026 · View on GitHub

Objetivo

Definir la parity operativa entre las integraciones LangChain de TypeScript y Python, mas alla de la parity del SDK core.

Esta matriz responde cuatro preguntas:

  1. Que significa parity de integracion en este repositorio.
  2. Que capacidades ya estan alineadas entre TS y Python.
  3. Que gaps siguen abiertos en README, ejemplos y observabilidad.
  4. Que calidad minima debe mantenerse para considerar ambas integraciones en parity sostenida.

Alcance de parity

La parity de integracion se define en cinco dimensiones:

  1. Parity de API publica Ambas integraciones deben exponer factories, helpers de contexto y tools equivalentes aunque respeten modismos del lenguaje.

  2. Parity de seguridad por defecto Las exposiciones sensibles deben ser opt-in y la validacion de destinos HTTP debe comportarse de forma equivalente.

  3. Parity de observabilidad Ambas integraciones deben emitir eventos saneados, permitir fan-out de handlers y soportar logging estructurado sin exponer secretos.

  4. Parity de ejemplos y operacion Cada integracion debe tener ejemplos base, ejemplos de observabilidad y una receta mas cercana a produccion.

  5. Parity documental README, docs de diseno y ejemplos deben describir capacidades equivalentes y dejar claros los gaps restantes.


Referencias canonicas

  • TS package: integrations/langchain/
  • Python package: integrations/langchain-python/
  • Diseno Python: docs/F1-03-LangChain-Python-Integration-Design.md
  • Parity SDK core: docs/F2-01-TS-Python-Parity-Matrix.md

Matriz actual

AreaTypeScriptPythonEstadoNotas
Factory principalcreateAgentDidIntegration(...)create_agent_did_langchain_integration(...)✅Family parity mantenida.
Snapshot de identidadbuildAgentDidIdentitySnapshot(...)build_agent_did_identity_snapshot(...)✅Campos equivalentes.
Inyeccion de contextocreateAgentDidMiddleware(...) + buildAgentDidSystemPrompt(...)compose_system_prompt(...) + bundle method✅Diferente forma, mismo objetivo.
Tools basicasidentidad actual, resolve DID, verify signatureidentidad actual, resolve DID, verify signature✅Parity funcional.
Tools sensibles opt-insign payload, sign HTTP, rotate key, historysign payload, sign HTTP, rotate key, history✅Defaults endurecidos y alineados.
Seguridad HTTPesquema valido, sin credenciales embebidas, bloqueo loopback/privado por defectoesquema valido, sin credenciales embebidas, bloqueo loopback/privado por defecto✅TS alineado con Python.
Propagacion http_security al SDKValidacion local en tool; no propaga opciones al SDK signHttpRequestPropaga HttpTargetValidationOptions al SDK via http_security param cuando allow_private_network_targets=True⚠️Python adelanta a TS. TS debe propagar httpSecurity al SDK para parity completa.
Callback de observabilidadobservabilityHandlerobservability_handler✅Eventos saneados en ambos paquetes.
Fan-out de handlerscomposeEventHandlers(...)compose_event_handlers(...)✅Vendor-neutral.
Logging JSONcreateJsonLoggerEventHandler(...)create_json_logger_event_handler(...)✅Misma estrategia de saneamiento.
Serializacion de eventosserializeObservabilityEvent(...)serialize_observability_event(...)✅Misma forma conceptual.
Ejemplo baseagentDidLangChain.example.jsagent_did_langchain_example.py✅Ambos muestran create_agent/createAgent + tools y aclaran que el quickstart local usa bootstrap del controller web-native; la publicacion hospedada de did:webvh queda como concern aparte de despliegue.
Ejemplo de observabilidadagentDidLangChain.observability.example.jsagent_did_langchain_observability_example.py✅Parity operativa minima lograda.
Receta tipo produccionagentDidLangChain.productionRecipe.example.jsagent_did_langchain_production_recipe_example.py✅Ambos usan guardas de entorno.
Demo integrado did:wbaagentDidLangChain.didWbaDemo.example.jsagent_did_langchain_did_wba_demo.py✅Ambos muestran runtime did:wba, partner remoto did:wba, createAgent/create_agent local y firma HTTP verificable sin credenciales externas. Los DID documents de demo declaran las claves de firma en assertionMethod para cumplir el binding de relaciones de verificacion del SDK.
Smoke cross-package did:wbanpm run smoke:langchain-didwba ejecuta el demo JavaScript publicado y valida su contrato JSON.El mismo comando ejecuta el demo Python publicado y valida su contrato JSON en la misma corrida.✅Este smoke es gate de parity operativa entre ambos demos, no solo una conveniencia local.
Metadata de release candidate@agentdid/langchain@1.0.0-rc.1 y peer @agentdid/sdk@1.0.0-rc.1agent-did-langchain==1.0.0rc1 y agent-did-sdk==1.0.0rc1✅La parity de publicacion usa normalizacion nativa por ecosistema sin cambiar el contrato funcional entre TS y Python.
Integracion LangSmith dedicadacreateLangSmithRunTree(...) + createLangSmithEventHandler(...)Adapter dedicado disponible✅Ambos paquetes exponen adaptador dedicado sin cambiar la factory principal.
Profundidad de suite automatizadatests funcionales, seguridad y observabilidadtests funcionales, seguridad, observabilidad y modulos internos⚠️Python sigue mas granular.

Quality Gates para parity de integracion

TypeScript

  1. npm --prefix integrations/langchain test
  2. Ejemplos nuevos deben mantener guardas para no requerir credenciales accidentalmente.
  3. Los eventos de observabilidad deben seguir saliendo saneados.

Python

  1. python -m pytest integrations/langchain-python/tests -q
  2. python -m ruff check integrations/langchain-python/src integrations/langchain-python/tests integrations/langchain-python/examples
  3. python -m mypy integrations/langchain-python/src

Cross-integration

  1. README de TS y Python deben describir el mismo modelo conceptual.
  2. Los defaults de seguridad deben seguir alineados.
  3. La taxonomia de eventos de observabilidad debe seguir equivalente.
  4. Si se agrega un demo integrado relevante en una integracion, la otra debe ofrecer un demo equivalente o documentar explicitamente la divergencia.
  5. Si cambia el contrato de salida o la ruta de ejecucion del demo integrado did:wba, el smoke cross-package y el walkthrough canonico deben actualizarse en el mismo cambio.

Estado actual

Logrado

  1. Ya existe parity funcional de tools principales.
  2. TS y Python comparten defaults de seguridad mas coherentes.
  3. TS ya tiene observabilidad callback/logger saneada equivalente en intencion a Python.
  4. TS ya tiene ejemplos adicionales para observabilidad y receta de produccion.
  5. README y ejemplos de TS quedan alineados con la narrativa de Python.
  6. TS y Python ya exponen demos integrados equivalentes para el flujo did:wba con resolucion web y firma HTTP verificable.
  7. El repositorio ya tiene un smoke cross-package que ejecuta ambos demos y valida su contrato operativo compartido.

Gaps abiertos no bloqueantes

  1. Python mantiene una modularizacion interna mas fina que TS.
  2. La suite TS aun es menos granular que la suite Python.

Definicion de Done

La parity de integraciones LangChain TS vs Python se considera mantenida cuando:

  1. Esta matriz sigue siendo correcta.
  2. README y ejemplos de ambos paquetes describen capacidades equivalentes.
  3. Los defaults de seguridad permanecen opt-in y alineados.
  4. La observabilidad sigue saneando payloads, firmas, cuerpos HTTP y headers sensibles.
  5. Nuevas capacidades de una integracion se portan a la otra o se documentan como excepcion explicita.

Changelog

FechaCambio
2026-05-08Se agrego una fila de parity para la metadata de release candidate: LangChain JS queda en 1.0.0-rc.1 con peer @agentdid/sdk@1.0.0-rc.1, mientras LangChain Python queda en 1.0.0rc1 con dependencia agent-did-sdk==1.0.0rc1. La divergencia de formato es solo normalizacion por ecosistema.
2026-05-08README de LangChain JS refrescado para dejar explicito que el flujo local usa bootstrap del controller web-native y que la publicacion hospedada de did:webvh es un concern separado. La matriz mantiene parity con Python sobre ese modelo conceptual.
2026-05-04Los demos integrados did:wba TS/Python ahora declaran assertionMethod en los DID documents usados para firma HTTP, manteniendo parity con el enforcement de key purpose binding del SDK.
2026-03-31Rename del repositorio a agent-did y normalizacion de metadata publica para LangChain TS/Python: URLs de GitHub, referencias de instalacion y ejemplos activos alineados con @agentdid/sdk y @agentdid/langchain. Sin cambios en la API publica ni en la parity funcional.
2026-03-22Se agregaron demos integrados did:wba equivalentes para LangChain TS y Python, junto con cobertura automatizada y referencias en README. La parity de ejemplos operativos se mantiene.
2026-03-22Licencia del repositorio migrada de MIT a Apache-2.0. Actualizado package.json (langchain TS) y pyproject.toml (langchain-python). Sin cambios funcionales en la superficie de integración.
2026-03-22Rename de scope npm: @agent-did/langchain → @agentdid/langchain y @agent-did/sdk → @agentdid/sdk para alinear con la organización npm @agentdid. Sin cambios en la API pública ni en la lógica funcional.