v1.5 — sesiones duraderas, reanudación por checkpoints y aprobaciones firmadas

Un protocolo canónico para cada proveedor de IA

SDK de IA para TypeScript puro · web-first · multiproveedor

Anthropic, OpenAI, xAI Grok, Google Gemini y Vertex AI detrás de un único protocolo de streaming canónico. Cero dependencias en tiempo de ejecución, determinista por diseño — funciona dondequiera que funcione fetch.

npm install @deuz-sdk/core

Una sola superficie de API para

  • Anthropic
  • OpenAI
  • xAI Grok
  • Google Gemini
  • Vertex AI
  • Yunwu

Stream delta canónico

Cada respuesta del proveedor se normaliza a un stream StreamPart tipado antes de que tu código la vea. Nunca se filtra SSE crudo.

Bucle de herramientas agéntico

Ejecución de herramientas paralela y autorreparadora con protecciones anti-desbocamiento, paradas de presupuesto, puertas de aprobación y subagentes anidados.

Núcleo edge-safe

Solo Web APIs — sin node:*, sin Buffer, sin estado ambiental. Node, Deno, Bun, Vercel Edge y Cloudflare Workers.

Determinista y testeable

Reloj, aleatoriedad, fetch y claves se inyectan a través de una única costura Dependencies. Tests golden-replay, sin red real.

Memoria, RAG y skills

Pipeline de memoria estilo mem0, recuperación híbrida BM25 + vectorial y divulgación progresiva SKILL.md — todo edge-safe.

Salida estructurada y wire de UI

generateObject / streamObject tipados por esquema, hooks de React y un wire SSE versionado que posees de extremo a extremo.

Streaming en tres líneas

streamChat retorna de forma síncrona y nunca lanza excepciones — la petición arranca perezosamente en la primera lectura. Cambia la factory para cambiar de proveedor; nada más se mueve.

Quickstart
// swap the factory to swap providers
import { streamChat } from '@deuz-sdk/core';
import { createAnthropic } from '@deuz-sdk/core/anthropic';

const anthropic = createAnthropic({ apiKey });
const res = streamChat({
  model: anthropic('claude-opus-4-8'),
  messages: [{ role: 'user', content: 'Hello!' }],
});

for await (const chunk of res.textStream) {
  process.stdout.write(chunk);
}