Pon en marcha un agente de prueba funcional contra elbackend alojado en diez minutos.
Una clave de prueba, un payload de mocks declarado y un único session.send(). La política, la auditoría y la memoria por tenant se disparan en la misma ruta de código que usa el tráfico en producción, así que el agente que publicas aquí es el agente que llevas a producción.
Entrada determinista. Gobernanza real. Un agente que pasa a producción.
Respuestas deterministas, sin OAuth de proveedor
Declara un mock por llamada de herramienta una vez al crear la sesión; cada llamada coincidente devuelve el valor que fijaste. Objetos estáticos o arreglos con estado: mismo formato, mismo nombre canónico de herramienta que una llamada real. Sin claves de sandbox que rotar, sin flujos de consentimiento de proveedor que sortear en las pruebas.
Política, auditoría y memoria se disparan en cada envío
Los mismos hooks de gobernanza que corren en el tráfico en producción se evalúan en cada session.send() en modo de prueba. Ajusta reglas de aprobación, verifica el formato de la cadena de auditoría y observa cómo aparecen las filas de memoria contra entradas deterministas, antes de que se mueva un solo centavo real.
El mismo código del agente pasa a producción, sin cambios
Quita el payload de mocks, apunta una clave de entorno de producción al mismo formato de sesión y el agente corre contra proveedores reales. Sin ramificaciones de entorno en tu código, sin una segunda integración que mantener.
Una sesión. Un mock. Una aserción.
Abreviado para mostrar el formato; el recorrido completo con paridad entre TS + Python está en el quickstart. El mock que declaras al crear es el valor que tu agente recibe de vuelta cuando el LLM llama a la herramienta.
1import { codespar } from "@codespar/sdk";2 3// One session, one declared mock, one assertion.4const session = await codespar.create("user_test", {5 servers: ["asaas"],6 mocks: {7 "asaas/create_payment": { id: "pay_test_42", status: "PENDING" },8 },9});10 11const result = await session.send(12 "Charge R$ 42 via Pix on Asaas"13);14 15// result.tool_calls[0].response.id === "pay_test_42"Mismo formato, mismo nombre canónico de herramienta que una llamada real. Quita el payload de mocks para publicar.
El formato que se sostiene más allá del primer envío.
Los mocks tienen formatos
Fija un objeto estático para pruebas de una llamada, un arreglo con estado para pruebas de secuencia (cada llamada consume una entrada, luego entra el tope). Ambos formatos viven en el mismo payload de mocks al crear la sesión; ambos pasan por el mismo validador de nombre canónico de herramienta que usan los proveedores reales.
La cadena de auditoría funciona igual
Las llamadas de herramienta en modo de prueba emiten los mismos eventos tool_call.succeeded y tool_call.failed que el tráfico en producción. La página de auditoría filtra el alcance por entorno, así que revisas los eventos de una sesión de prueba sin desplazarte por el ruido de producción.
Cambiar el proyecto es un solo toggle
Un proyecto lleva un campo de entorno inmutable. Crea un proyecto de prueba para el recorrido, genera una clave csk_test_* en él al registrarte, y el mismo código del agente corre sin cambios cuando apuntas una clave csk_live_* a un proyecto de entorno de producción.
Diez minutos.Un agente funcional.
Obtén una clave de prueba, recorre el quickstart y observa cómo la cadena de auditoría aterriza contra los mocks que declaraste.