@noorden/sdk
v0.1.5
Published
SDK TypeScript da Noorden Platform — agents, sessions e streaming de eventos.
Downloads
957
Maintainers
Readme
@noorden/sdk
SDK TypeScript da Noorden Platform — agents, sessions e streaming de eventos (SSE).
Documentação interativa: platform.noorden-insurtech.dev/docs
Quickstart
1. Pré-requisitos
- Node ≥ 18
- API key de projeto (
rxk_…) — gere em Settings → API keys no console da plataforma
export NOORDEN_API_KEY=rxk_live_<sua-chave-de-projeto>
# opcional — default: https://harness-api-dev.up.railway.app
export NOORDEN_API_URL=https://harness-api-dev.up.railway.appVariáveis legadas ROUX_API_KEY / ROUX_API_URL ainda funcionam como fallback.
2. Instalação
pnpm add @noorden/sdk
# ou: npm install @noorden/sdk3. Primeiro agent (~10 linhas)
import Noorden, { isAgentMessage } from '@noorden/sdk';
const client = new Noorden.Platform();
const agent = await client.agents.create({
name: 'atendente',
model: 'anthropic/claude-haiku-4-5',
system: 'Você é um atendente de seguros. Responda em português.',
});
const session = await client.sessions.create({
agent: { id: agent.id, version: agent.version },
metadata: { userId: 'u_123' },
});
const run = await session.send('Quanto custa um seguro de vida?');
for await (const event of run.stream()) {
if (isAgentMessage(event)) {
console.log('Agent:', event.text);
}
}O projectId vem da API key automaticamente (GET /v1/platform/context) — não precisa
passar no construtor nem enviar x-roux-workspace.
4. Tools customizadas (client-side)
import Noorden, { defineTool, isAgentMessage, isAgentCustomToolUse } from '@noorden/sdk';
import { z } from 'zod';
const cotacaoTool = defineTool({
name: 'cotar_seguro_vida',
description: 'Calcula prêmio mensal de seguro de vida.',
schema: z.object({ idade: z.number(), capital: z.number() }),
execute: async (input) => ({
content: [{ type: 'text', text: JSON.stringify({ premioMensal: input.capital * 0.0012 }) }],
}),
});
const client = new Noorden.Platform();
const agent = await client.agents.create({
name: 'corretor',
model: { id: 'anthropic/claude-haiku-4-5', temperature: 0.3 },
tools: ['get_current_time', cotacaoTool],
});
const session = await client.sessions.create({
agent: { id: agent.id, version: agent.version },
});
const run = await session.send('Cotação para 35 anos, capital R$ 200k.');
for await (const event of run.stream()) {
if (isAgentMessage(event)) {
console.log('Agent:', event.text);
} else if (isAgentCustomToolUse(event)) {
const out = await cotacaoTool.execute(event.input as { idade: number; capital: number }, {
sessionId: session.id,
toolUseId: event.toolUseId,
signal: new AbortController().signal,
});
await run.respondTool(event.toolUseId, {
content: out.content.map((b) => b.text).join('\n'),
isError: out.isError,
});
}
}5. Exemplo completo (WhatsApp fictício)
export NOORDEN_API_KEY=rxk_live_<sua-chave>
pnpm --filter @noorden/sdk-example-whatsapp startAPI pública
| Recurso | Métodos principais |
| ----------------- | -------------------------------------- |
| client.agents | create, get, list, update |
| client.sessions | create, get, list |
| session | send, events, stream (via Run) |
Construtor opcional:
new Noorden.Platform({
apiKey: 'rxk_…',
baseUrl: 'https://…',
timeoutMs: 30_000,
maxRetries: 2,
});Auth
Autenticação por API key de projeto (scope: project). O SDK envia
Authorization: Bearer <key> e resolve o projectId na primeira request.
Chaves são criadas no console (Settings → API keys), vinculadas ao projeto ativo.
Aliases legados (deprecated)
Harness, HarnessError e HarnessOptions ainda exportam, mas preferir Platform,
PlatformError e PlatformOptions.
