🎩 You're Invited:Meet the Socket team at Black Hat in Las Vegas, August 3-6.RSVP
Sign In

@nimblebrain/sdk

Package Overview
Dependencies
Maintainers
1
Versions
4
Alerts
File Explorer

Advanced tools

Socket logo

Install Socket

Detect and block malicious and high-risk dependencies

Install

@nimblebrain/sdk - npm Package Compare versions

Comparing version
0.1.1
to
0.2.0
+152
dist/nimblebrain.d.ts
/**
* NimbleBrain SDK - High-level wrapper for the NimbleBrain Studio API
*
* This file provides a clean, intuitive interface on top of the auto-generated
* OpenAPI client functions.
*/
import { type Client } from './client';
export interface NimbleBrainConfig {
/** Your NimbleBrain API key (e.g., 'nb_live_...') */
apiKey: string;
/** Base URL for the API. Defaults to 'https://api.nimblebrain.ai' */
baseUrl?: string;
}
export interface Agent {
id: string;
name: string;
type?: 'custom' | 'nira' | 'system';
description?: string;
createdAt?: string;
updatedAt?: string;
}
export interface Playbook {
id: string;
name: string;
description?: string;
createdAt?: string;
updatedAt?: string;
}
export interface Conversation {
id: string;
title?: string;
context?: string;
status?: string;
messageCount?: number;
lastMessageAt?: string;
createdAt?: string;
}
export interface Message {
id: string;
role: 'user' | 'assistant' | 'system';
content: string;
createdAt?: string;
}
export interface SendMessageResponse {
messageId?: string;
content?: string;
role?: string;
executionId?: string;
tokensUsed?: number;
}
export interface ExecutePlaybookResponse {
id: string;
status: 'queued';
message?: string;
}
export interface Execution {
id: string;
status: 'queued' | 'pending' | 'running' | 'completed' | 'completed_with_errors' | 'failed' | 'cancelled';
targetType?: 'playbook' | 'agent';
targetId?: string;
targetName?: string;
result?: string | Record<string, unknown> | null;
startedAt?: string;
completedAt?: string;
durationMs?: number;
}
export interface StreamEvent {
type: 'message.start' | 'content' | 'tool.start' | 'tool.complete' | 'message.complete' | 'error' | 'done';
data: Record<string, unknown>;
}
export interface WaitForCompletionOptions {
/** Maximum time to wait in milliseconds. Defaults to 60000 (1 minute) */
timeoutMs?: number;
/** Interval between polling requests in milliseconds. Defaults to 1000 */
pollIntervalMs?: number;
}
export declare class NimbleBrain {
private client;
private baseUrl;
private apiKey;
readonly agents: AgentsAPI;
readonly conversations: ConversationsAPI;
readonly messages: MessagesAPI;
readonly playbooks: PlaybooksAPI;
readonly executions: ExecutionsAPI;
constructor(config: NimbleBrainConfig);
}
declare class AgentsAPI {
private client;
constructor(client: Client);
/**
* List all agents in your workspace
*/
list(): Promise<Agent[]>;
}
declare class ConversationsAPI {
private client;
constructor(client: Client);
/**
* Create a new conversation with an agent
*/
create(agentId: string, title?: string): Promise<Conversation>;
/**
* Get details of a conversation
*/
get(agentId: string, conversationId: string): Promise<Conversation>;
}
declare class MessagesAPI {
private client;
private baseUrl;
private apiKey;
constructor(client: Client, baseUrl: string, apiKey: string);
/**
* List messages in a conversation
*/
list(agentId: string, conversationId: string): Promise<Message[]>;
/**
* Send a message and wait for the complete response (non-streaming)
*/
send(agentId: string, conversationId: string, content: string): Promise<SendMessageResponse>;
/**
* Send a message with streaming response (SSE)
* Returns an async generator that yields streaming events
*/
stream(agentId: string, conversationId: string, content: string): AsyncGenerator<StreamEvent>;
}
declare class PlaybooksAPI {
private client;
constructor(client: Client);
/**
* List all playbooks in your workspace
*/
list(): Promise<Playbook[]>;
/**
* Execute a playbook with optional parameters
*/
execute(playbookId: string, parameters?: Record<string, unknown>): Promise<ExecutePlaybookResponse>;
}
declare class ExecutionsAPI {
private client;
constructor(client: Client);
/**
* Get the status of an execution
*/
get(id: string): Promise<Execution>;
/**
* Wait for an execution to complete, polling at regular intervals
*/
waitForCompletion(id: string, options?: WaitForCompletionOptions): Promise<Execution>;
}
export {};
//# sourceMappingURL=nimblebrain.d.ts.map
{"version":3,"file":"nimblebrain.d.ts","sourceRoot":"","sources":["../src/nimblebrain.ts"],"names":[],"mappings":"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"}
/**
* NimbleBrain SDK - High-level wrapper for the NimbleBrain Studio API
*
* This file provides a clean, intuitive interface on top of the auto-generated
* OpenAPI client functions.
*/
import { createClient, createConfig } from './client';
import { getV1Agents, getV1Playbooks, postV1AgentsByAgentIdConversations, getV1AgentsByAgentIdConversationsByConversationId, getV1AgentsByAgentIdConversationsByConversationIdMessages, postV1AgentsByAgentIdConversationsByConversationIdMessages, postV1PlaybooksByPlaybookIdExecute, getV1ExecutionsById, } from './sdk.gen';
// ============================================================================
// NimbleBrain SDK Class
// ============================================================================
export class NimbleBrain {
client;
baseUrl;
apiKey;
agents;
conversations;
messages;
playbooks;
executions;
constructor(config) {
this.apiKey = config.apiKey;
this.baseUrl = config.baseUrl || 'https://api.nimblebrain.ai';
this.client = createClient(createConfig({
baseUrl: this.baseUrl,
headers: {
Authorization: `Bearer ${this.apiKey}`,
},
}));
// Initialize API namespaces
this.agents = new AgentsAPI(this.client);
this.conversations = new ConversationsAPI(this.client);
this.messages = new MessagesAPI(this.client, this.baseUrl, this.apiKey);
this.playbooks = new PlaybooksAPI(this.client);
this.executions = new ExecutionsAPI(this.client);
}
}
// ============================================================================
// API Namespace Classes
// ============================================================================
class AgentsAPI {
client;
constructor(client) {
this.client = client;
}
/**
* List all agents in your workspace
*/
async list() {
const response = await getV1Agents({ client: this.client, throwOnError: true });
return (response.data?.agents || []);
}
}
class ConversationsAPI {
client;
constructor(client) {
this.client = client;
}
/**
* Create a new conversation with an agent
*/
async create(agentId, title) {
const response = await postV1AgentsByAgentIdConversations({
client: this.client,
path: { agentId },
body: { title },
throwOnError: true,
});
return response.data;
}
/**
* Get details of a conversation
*/
async get(agentId, conversationId) {
const response = await getV1AgentsByAgentIdConversationsByConversationId({
client: this.client,
path: { agentId, conversationId },
throwOnError: true,
});
return response.data;
}
}
class MessagesAPI {
client;
baseUrl;
apiKey;
constructor(client, baseUrl, apiKey) {
this.client = client;
this.baseUrl = baseUrl;
this.apiKey = apiKey;
}
/**
* List messages in a conversation
*/
async list(agentId, conversationId) {
const response = await getV1AgentsByAgentIdConversationsByConversationIdMessages({
client: this.client,
path: { agentId, conversationId },
throwOnError: true,
});
return (response.data?.messages || []);
}
/**
* Send a message and wait for the complete response (non-streaming)
*/
async send(agentId, conversationId, content) {
const response = await postV1AgentsByAgentIdConversationsByConversationIdMessages({
client: this.client,
path: { agentId, conversationId },
body: { content },
throwOnError: true,
});
return response.data;
}
/**
* Send a message with streaming response (SSE)
* Returns an async generator that yields streaming events
*/
async *stream(agentId, conversationId, content) {
const url = `${this.baseUrl}/v1/agents/${agentId}/conversations/${conversationId}/messages`;
const response = await fetch(url, {
method: 'POST',
headers: {
'Content-Type': 'application/json',
'Accept': 'text/event-stream',
'Authorization': `Bearer ${this.apiKey}`,
},
body: JSON.stringify({ content, stream: true }),
});
if (!response.ok) {
const errorText = await response.text();
throw new Error(`Stream request failed: ${response.status} ${errorText}`);
}
if (!response.body) {
throw new Error('No response body for streaming');
}
const reader = response.body.pipeThrough(new TextDecoderStream()).getReader();
let buffer = '';
try {
while (true) {
const { done, value } = await reader.read();
if (done)
break;
buffer += value;
const chunks = buffer.split('\n\n');
buffer = chunks.pop() ?? '';
for (const chunk of chunks) {
const lines = chunk.split('\n');
let eventType;
const dataLines = [];
for (const line of lines) {
if (line.startsWith('event:')) {
eventType = line.replace(/^event:\s*/, '');
}
else if (line.startsWith('data:')) {
dataLines.push(line.replace(/^data:\s*/, ''));
}
}
if (dataLines.length > 0) {
const rawData = dataLines.join('\n');
let data = {};
try {
data = JSON.parse(rawData);
}
catch {
data = { raw: rawData };
}
yield {
type: (eventType || 'content'),
data,
};
// Stop on done event
if (eventType === 'done') {
return;
}
}
}
}
}
finally {
reader.releaseLock();
}
}
}
class PlaybooksAPI {
client;
constructor(client) {
this.client = client;
}
/**
* List all playbooks in your workspace
*/
async list() {
const response = await getV1Playbooks({ client: this.client, throwOnError: true });
return (response.data?.playbooks || []);
}
/**
* Execute a playbook with optional parameters
*/
async execute(playbookId, parameters) {
const response = await postV1PlaybooksByPlaybookIdExecute({
client: this.client,
path: { playbookId },
body: parameters ? { parameters } : {},
throwOnError: true,
});
return response.data;
}
}
class ExecutionsAPI {
client;
constructor(client) {
this.client = client;
}
/**
* Get the status of an execution
*/
async get(id) {
const response = await getV1ExecutionsById({
client: this.client,
path: { id },
throwOnError: true,
});
return response.data;
}
/**
* Wait for an execution to complete, polling at regular intervals
*/
async waitForCompletion(id, options) {
const timeoutMs = options?.timeoutMs ?? 60000;
const pollIntervalMs = options?.pollIntervalMs ?? 1000;
const startTime = Date.now();
while (true) {
const execution = await this.get(id);
// Check if execution is complete (success or failure)
if (['completed', 'completed_with_errors', 'failed', 'cancelled'].includes(execution.status)) {
return execution;
}
// Check for timeout
if (Date.now() - startTime > timeoutMs) {
throw new Error(`Execution ${id} timed out after ${timeoutMs}ms (status: ${execution.status})`);
}
// Wait before next poll
await new Promise((resolve) => setTimeout(resolve, pollIntervalMs));
}
}
}
//# sourceMappingURL=nimblebrain.js.map
{"version":3,"file":"nimblebrain.js","sourceRoot":"","sources":["../src/nimblebrain.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,EAAE,YAAY,EAAE,YAAY,EAAe,MAAM,UAAU,CAAC;AACnE,OAAO,EACL,WAAW,EACX,cAAc,EACd,kCAAkC,EAClC,iDAAiD,EACjD,yDAAyD,EACzD,0DAA0D,EAC1D,kCAAkC,EAClC,mBAAmB,GACpB,MAAM,WAAW,CAAC;AAqFnB,+EAA+E;AAC/E,wBAAwB;AACxB,+EAA+E;AAE/E,MAAM,OAAO,WAAW;IACd,MAAM,CAAS;IACf,OAAO,CAAS;IAChB,MAAM,CAAS;IAEP,MAAM,CAAY;IAClB,aAAa,CAAmB;IAChC,QAAQ,CAAc;IACtB,SAAS,CAAe;IACxB,UAAU,CAAgB;IAE1C,YAAY,MAAyB;QACnC,IAAI,CAAC,MAAM,GAAG,MAAM,CAAC,MAAM,CAAC;QAC5B,IAAI,CAAC,OAAO,GAAG,MAAM,CAAC,OAAO,IAAI,4BAA4B,CAAC;QAE9D,IAAI,CAAC,MAAM,GAAG,YAAY,CACxB,YAAY,CAAC;YACX,OAAO,EAAE,IAAI,CAAC,OAAO;YACrB,OAAO,EAAE;gBACP,aAAa,EAAE,UAAU,IAAI,CAAC,MAAM,EAAE;aACvC;SACF,CAAC,CACH,CAAC;QAEF,4BAA4B;QAC5B,IAAI,CAAC,MAAM,GAAG,IAAI,SAAS,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;QACzC,IAAI,CAAC,aAAa,GAAG,IAAI,gBAAgB,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;QACvD,IAAI,CAAC,QAAQ,GAAG,IAAI,WAAW,CAAC,IAAI,CAAC,MAAM,EAAE,IAAI,CAAC,OAAO,EAAE,IAAI,CAAC,MAAM,CAAC,CAAC;QACxE,IAAI,CAAC,SAAS,GAAG,IAAI,YAAY,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;QAC/C,IAAI,CAAC,UAAU,GAAG,IAAI,aAAa,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;IACnD,CAAC;CACF;AAED,+EAA+E;AAC/E,wBAAwB;AACxB,+EAA+E;AAE/E,MAAM,SAAS;IACO;IAApB,YAAoB,MAAc;QAAd,WAAM,GAAN,MAAM,CAAQ;IAAG,CAAC;IAEtC;;OAEG;IACH,KAAK,CAAC,IAAI;QACR,MAAM,QAAQ,GAAG,MAAM,WAAW,CAAC,EAAE,MAAM,EAAE,IAAI,CAAC,MAAM,EAAE,YAAY,EAAE,IAAI,EAAE,CAAC,CAAC;QAChF,OAAO,CAAE,QAAQ,CAAC,IAAY,EAAE,MAAM,IAAI,EAAE,CAAY,CAAC;IAC3D,CAAC;CACF;AAED,MAAM,gBAAgB;IACA;IAApB,YAAoB,MAAc;QAAd,WAAM,GAAN,MAAM,CAAQ;IAAG,CAAC;IAEtC;;OAEG;IACH,KAAK,CAAC,MAAM,CAAC,OAAe,EAAE,KAAc;QAC1C,MAAM,QAAQ,GAAG,MAAM,kCAAkC,CAAC;YACxD,MAAM,EAAE,IAAI,CAAC,MAAM;YACnB,IAAI,EAAE,EAAE,OAAO,EAAE;YACjB,IAAI,EAAE,EAAE,KAAK,EAAE;YACf,YAAY,EAAE,IAAI;SACnB,CAAC,CAAC;QACH,OAAO,QAAQ,CAAC,IAAoB,CAAC;IACvC,CAAC;IAED;;OAEG;IACH,KAAK,CAAC,GAAG,CAAC,OAAe,EAAE,cAAsB;QAC/C,MAAM,QAAQ,GAAG,MAAM,iDAAiD,CAAC;YACvE,MAAM,EAAE,IAAI,CAAC,MAAM;YACnB,IAAI,EAAE,EAAE,OAAO,EAAE,cAAc,EAAE;YACjC,YAAY,EAAE,IAAI;SACnB,CAAC,CAAC;QACH,OAAO,QAAQ,CAAC,IAAoB,CAAC;IACvC,CAAC;CACF;AAED,MAAM,WAAW;IAEL;IACA;IACA;IAHV,YACU,MAAc,EACd,OAAe,EACf,MAAc;QAFd,WAAM,GAAN,MAAM,CAAQ;QACd,YAAO,GAAP,OAAO,CAAQ;QACf,WAAM,GAAN,MAAM,CAAQ;IACrB,CAAC;IAEJ;;OAEG;IACH,KAAK,CAAC,IAAI,CAAC,OAAe,EAAE,cAAsB;QAChD,MAAM,QAAQ,GAAG,MAAM,yDAAyD,CAAC;YAC/E,MAAM,EAAE,IAAI,CAAC,MAAM;YACnB,IAAI,EAAE,EAAE,OAAO,EAAE,cAAc,EAAE;YACjC,YAAY,EAAE,IAAI;SACnB,CAAC,CAAC;QACH,OAAO,CAAE,QAAQ,CAAC,IAAY,EAAE,QAAQ,IAAI,EAAE,CAAc,CAAC;IAC/D,CAAC;IAED;;OAEG;IACH,KAAK,CAAC,IAAI,CAAC,OAAe,EAAE,cAAsB,EAAE,OAAe;QACjE,MAAM,QAAQ,GAAG,MAAM,0DAA0D,CAAC;YAChF,MAAM,EAAE,IAAI,CAAC,MAAM;YACnB,IAAI,EAAE,EAAE,OAAO,EAAE,cAAc,EAAE;YACjC,IAAI,EAAE,EAAE,OAAO,EAAE;YACjB,YAAY,EAAE,IAAI;SACnB,CAAC,CAAC;QACH,OAAO,QAAQ,CAAC,IAA2B,CAAC;IAC9C,CAAC;IAED;;;OAGG;IACH,KAAK,CAAC,CAAC,MAAM,CAAC,OAAe,EAAE,cAAsB,EAAE,OAAe;QACpE,MAAM,GAAG,GAAG,GAAG,IAAI,CAAC,OAAO,cAAc,OAAO,kBAAkB,cAAc,WAAW,CAAC;QAE5F,MAAM,QAAQ,GAAG,MAAM,KAAK,CAAC,GAAG,EAAE;YAChC,MAAM,EAAE,MAAM;YACd,OAAO,EAAE;gBACP,cAAc,EAAE,kBAAkB;gBAClC,QAAQ,EAAE,mBAAmB;gBAC7B,eAAe,EAAE,UAAU,IAAI,CAAC,MAAM,EAAE;aACzC;YACD,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC,EAAE,OAAO,EAAE,MAAM,EAAE,IAAI,EAAE,CAAC;SAChD,CAAC,CAAC;QAEH,IAAI,CAAC,QAAQ,CAAC,EAAE,EAAE,CAAC;YACjB,MAAM,SAAS,GAAG,MAAM,QAAQ,CAAC,IAAI,EAAE,CAAC;YACxC,MAAM,IAAI,KAAK,CAAC,0BAA0B,QAAQ,CAAC,MAAM,IAAI,SAAS,EAAE,CAAC,CAAC;QAC5E,CAAC;QAED,IAAI,CAAC,QAAQ,CAAC,IAAI,EAAE,CAAC;YACnB,MAAM,IAAI,KAAK,CAAC,gCAAgC,CAAC,CAAC;QACpD,CAAC;QAED,MAAM,MAAM,GAAG,QAAQ,CAAC,IAAI,CAAC,WAAW,CAAC,IAAI,iBAAiB,EAAE,CAAC,CAAC,SAAS,EAAE,CAAC;QAC9E,IAAI,MAAM,GAAG,EAAE,CAAC;QAEhB,IAAI,CAAC;YACH,OAAO,IAAI,EAAE,CAAC;gBACZ,MAAM,EAAE,IAAI,EAAE,KAAK,EAAE,GAAG,MAAM,MAAM,CAAC,IAAI,EAAE,CAAC;gBAC5C,IAAI,IAAI;oBAAE,MAAM;gBAEhB,MAAM,IAAI,KAAK,CAAC;gBAChB,MAAM,MAAM,GAAG,MAAM,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC;gBACpC,MAAM,GAAG,MAAM,CAAC,GAAG,EAAE,IAAI,EAAE,CAAC;gBAE5B,KAAK,MAAM,KAAK,IAAI,MAAM,EAAE,CAAC;oBAC3B,MAAM,KAAK,GAAG,KAAK,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;oBAChC,IAAI,SAA6B,CAAC;oBAClC,MAAM,SAAS,GAAa,EAAE,CAAC;oBAE/B,KAAK,MAAM,IAAI,IAAI,KAAK,EAAE,CAAC;wBACzB,IAAI,IAAI,CAAC,UAAU,CAAC,QAAQ,CAAC,EAAE,CAAC;4BAC9B,SAAS,GAAG,IAAI,CAAC,OAAO,CAAC,YAAY,EAAE,EAAE,CAAC,CAAC;wBAC7C,CAAC;6BAAM,IAAI,IAAI,CAAC,UAAU,CAAC,OAAO,CAAC,EAAE,CAAC;4BACpC,SAAS,CAAC,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,WAAW,EAAE,EAAE,CAAC,CAAC,CAAC;wBAChD,CAAC;oBACH,CAAC;oBAED,IAAI,SAAS,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;wBACzB,MAAM,OAAO,GAAG,SAAS,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;wBACrC,IAAI,IAAI,GAA4B,EAAE,CAAC;wBAEvC,IAAI,CAAC;4BACH,IAAI,GAAG,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC;wBAC7B,CAAC;wBAAC,MAAM,CAAC;4BACP,IAAI,GAAG,EAAE,GAAG,EAAE,OAAO,EAAE,CAAC;wBAC1B,CAAC;wBAED,MAAM;4BACJ,IAAI,EAAE,CAAC,SAAS,IAAI,SAAS,CAAwB;4BACrD,IAAI;yBACL,CAAC;wBAEF,qBAAqB;wBACrB,IAAI,SAAS,KAAK,MAAM,EAAE,CAAC;4BACzB,OAAO;wBACT,CAAC;oBACH,CAAC;gBACH,CAAC;YACH,CAAC;QACH,CAAC;gBAAS,CAAC;YACT,MAAM,CAAC,WAAW,EAAE,CAAC;QACvB,CAAC;IACH,CAAC;CACF;AAED,MAAM,YAAY;IACI;IAApB,YAAoB,MAAc;QAAd,WAAM,GAAN,MAAM,CAAQ;IAAG,CAAC;IAEtC;;OAEG;IACH,KAAK,CAAC,IAAI;QACR,MAAM,QAAQ,GAAG,MAAM,cAAc,CAAC,EAAE,MAAM,EAAE,IAAI,CAAC,MAAM,EAAE,YAAY,EAAE,IAAI,EAAE,CAAC,CAAC;QACnF,OAAO,CAAE,QAAQ,CAAC,IAAY,EAAE,SAAS,IAAI,EAAE,CAAe,CAAC;IACjE,CAAC;IAED;;OAEG;IACH,KAAK,CAAC,OAAO,CAAC,UAAkB,EAAE,UAAoC;QACpE,MAAM,QAAQ,GAAG,MAAM,kCAAkC,CAAC;YACxD,MAAM,EAAE,IAAI,CAAC,MAAM;YACnB,IAAI,EAAE,EAAE,UAAU,EAAE;YACpB,IAAI,EAAE,UAAU,CAAC,CAAC,CAAC,EAAE,UAAU,EAAE,CAAC,CAAC,CAAC,EAAE;YACtC,YAAY,EAAE,IAAI;SACnB,CAAC,CAAC;QACH,OAAO,QAAQ,CAAC,IAA+B,CAAC;IAClD,CAAC;CACF;AAED,MAAM,aAAa;IACG;IAApB,YAAoB,MAAc;QAAd,WAAM,GAAN,MAAM,CAAQ;IAAG,CAAC;IAEtC;;OAEG;IACH,KAAK,CAAC,GAAG,CAAC,EAAU;QAClB,MAAM,QAAQ,GAAG,MAAM,mBAAmB,CAAC;YACzC,MAAM,EAAE,IAAI,CAAC,MAAM;YACnB,IAAI,EAAE,EAAE,EAAE,EAAE;YACZ,YAAY,EAAE,IAAI;SACnB,CAAC,CAAC;QACH,OAAO,QAAQ,CAAC,IAAiB,CAAC;IACpC,CAAC;IAED;;OAEG;IACH,KAAK,CAAC,iBAAiB,CAAC,EAAU,EAAE,OAAkC;QACpE,MAAM,SAAS,GAAG,OAAO,EAAE,SAAS,IAAI,KAAK,CAAC;QAC9C,MAAM,cAAc,GAAG,OAAO,EAAE,cAAc,IAAI,IAAI,CAAC;QACvD,MAAM,SAAS,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;QAE7B,OAAO,IAAI,EAAE,CAAC;YACZ,MAAM,SAAS,GAAG,MAAM,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;YAErC,sDAAsD;YACtD,IAAI,CAAC,WAAW,EAAE,uBAAuB,EAAE,QAAQ,EAAE,WAAW,CAAC,CAAC,QAAQ,CAAC,SAAS,CAAC,MAAM,CAAC,EAAE,CAAC;gBAC7F,OAAO,SAAS,CAAC;YACnB,CAAC;YAED,oBAAoB;YACpB,IAAI,IAAI,CAAC,GAAG,EAAE,GAAG,SAAS,GAAG,SAAS,EAAE,CAAC;gBACvC,MAAM,IAAI,KAAK,CAAC,aAAa,EAAE,oBAAoB,SAAS,eAAe,SAAS,CAAC,MAAM,GAAG,CAAC,CAAC;YAClG,CAAC;YAED,wBAAwB;YACxB,MAAM,IAAI,OAAO,CAAC,CAAC,OAAO,EAAE,EAAE,CAAC,UAAU,CAAC,OAAO,EAAE,cAAc,CAAC,CAAC,CAAC;QACtE,CAAC;IACH,CAAC;CACF"}
export {};
//# sourceMappingURL=nimblebrain.test.d.ts.map
{"version":3,"file":"nimblebrain.test.d.ts","sourceRoot":"","sources":["../src/nimblebrain.test.ts"],"names":[],"mappings":""}
import { describe, it, expect, vi, beforeEach, afterEach } from 'vitest';
import { NimbleBrain } from './nimblebrain';
// Mock the auto-generated SDK functions
vi.mock('./sdk.gen', () => ({
getV1Agents: vi.fn(),
getV1Playbooks: vi.fn(),
postV1AgentsByAgentIdConversations: vi.fn(),
getV1AgentsByAgentIdConversationsByConversationId: vi.fn(),
getV1AgentsByAgentIdConversationsByConversationIdMessages: vi.fn(),
postV1AgentsByAgentIdConversationsByConversationIdMessages: vi.fn(),
postV1PlaybooksByPlaybookIdExecute: vi.fn(),
getV1ExecutionsById: vi.fn(),
}));
// Import mocked functions
import { getV1Agents, getV1Playbooks, postV1AgentsByAgentIdConversations, getV1AgentsByAgentIdConversationsByConversationId, getV1AgentsByAgentIdConversationsByConversationIdMessages, postV1AgentsByAgentIdConversationsByConversationIdMessages, postV1PlaybooksByPlaybookIdExecute, getV1ExecutionsById, } from './sdk.gen';
describe('NimbleBrain', () => {
let sdk;
beforeEach(() => {
vi.clearAllMocks();
sdk = new NimbleBrain({ apiKey: 'test-api-key' });
});
describe('constructor', () => {
it('should use default baseUrl when not provided', () => {
const client = new NimbleBrain({ apiKey: 'test-key' });
expect(client).toBeDefined();
});
it('should use custom baseUrl when provided', () => {
const client = new NimbleBrain({
apiKey: 'test-key',
baseUrl: 'https://custom.api.com',
});
expect(client).toBeDefined();
});
});
describe('agents', () => {
it('should list agents', async () => {
const mockAgents = [
{ id: 'agent-1', name: 'Agent 1', type: 'custom' },
{ id: 'agent-2', name: 'Agent 2', type: 'nira' },
];
vi.mocked(getV1Agents).mockResolvedValue({
data: { agents: mockAgents, total: 2 },
request: new Request('http://test'),
response: new Response(),
});
const agents = await sdk.agents.list();
expect(agents).toEqual(mockAgents);
expect(getV1Agents).toHaveBeenCalledWith({
client: expect.anything(),
throwOnError: true,
});
});
it('should return empty array when no agents', async () => {
vi.mocked(getV1Agents).mockResolvedValue({
data: { agents: undefined, total: 0 },
request: new Request('http://test'),
response: new Response(),
});
const agents = await sdk.agents.list();
expect(agents).toEqual([]);
});
});
describe('playbooks', () => {
it('should list playbooks', async () => {
const mockPlaybooks = [
{ id: 'pb-1', name: 'Playbook 1' },
{ id: 'pb-2', name: 'Playbook 2' },
];
vi.mocked(getV1Playbooks).mockResolvedValue({
data: { playbooks: mockPlaybooks, total: 2 },
request: new Request('http://test'),
response: new Response(),
});
const playbooks = await sdk.playbooks.list();
expect(playbooks).toEqual(mockPlaybooks);
});
it('should execute playbook without parameters', async () => {
vi.mocked(postV1PlaybooksByPlaybookIdExecute).mockResolvedValue({
data: { id: 'exec-1', status: 'queued' },
request: new Request('http://test'),
response: new Response(),
});
const result = await sdk.playbooks.execute('pb-1');
expect(result).toEqual({ id: 'exec-1', status: 'queued' });
expect(postV1PlaybooksByPlaybookIdExecute).toHaveBeenCalledWith({
client: expect.anything(),
path: { playbookId: 'pb-1' },
body: {},
throwOnError: true,
});
});
it('should execute playbook with parameters', async () => {
vi.mocked(postV1PlaybooksByPlaybookIdExecute).mockResolvedValue({
data: { id: 'exec-2', status: 'queued' },
request: new Request('http://test'),
response: new Response(),
});
const result = await sdk.playbooks.execute('pb-1', { param1: 'value1' });
expect(result).toEqual({ id: 'exec-2', status: 'queued' });
expect(postV1PlaybooksByPlaybookIdExecute).toHaveBeenCalledWith({
client: expect.anything(),
path: { playbookId: 'pb-1' },
body: { parameters: { param1: 'value1' } },
throwOnError: true,
});
});
});
describe('conversations', () => {
it('should create a conversation', async () => {
const mockConversation = {
id: 'conv-1',
title: 'Test Chat',
status: 'active',
};
vi.mocked(postV1AgentsByAgentIdConversations).mockResolvedValue({
data: mockConversation,
request: new Request('http://test'),
response: new Response(),
});
const conversation = await sdk.conversations.create('agent-1', 'Test Chat');
expect(conversation).toEqual(mockConversation);
expect(postV1AgentsByAgentIdConversations).toHaveBeenCalledWith({
client: expect.anything(),
path: { agentId: 'agent-1' },
body: { title: 'Test Chat' },
throwOnError: true,
});
});
it('should get a conversation', async () => {
const mockConversation = {
id: 'conv-1',
title: 'Test Chat',
messageCount: 5,
};
vi.mocked(getV1AgentsByAgentIdConversationsByConversationId).mockResolvedValue({
data: mockConversation,
request: new Request('http://test'),
response: new Response(),
});
const conversation = await sdk.conversations.get('agent-1', 'conv-1');
expect(conversation).toEqual(mockConversation);
});
});
describe('messages', () => {
it('should list messages', async () => {
const mockMessages = [
{ id: 'msg-1', role: 'user', content: 'Hello' },
{ id: 'msg-2', role: 'assistant', content: 'Hi there!' },
];
vi.mocked(getV1AgentsByAgentIdConversationsByConversationIdMessages).mockResolvedValue({
data: { messages: mockMessages, total: 2 },
request: new Request('http://test'),
response: new Response(),
});
const messages = await sdk.messages.list('agent-1', 'conv-1');
expect(messages).toEqual(mockMessages);
});
it('should send a message (non-streaming)', async () => {
const mockResponse = {
messageId: 'msg-3',
content: 'Hello! How can I help?',
role: 'assistant',
};
vi.mocked(postV1AgentsByAgentIdConversationsByConversationIdMessages).mockResolvedValue({
data: mockResponse,
request: new Request('http://test'),
response: new Response(),
});
const response = await sdk.messages.send('agent-1', 'conv-1', 'Hello!');
expect(response).toEqual(mockResponse);
expect(postV1AgentsByAgentIdConversationsByConversationIdMessages).toHaveBeenCalledWith({
client: expect.anything(),
path: { agentId: 'agent-1', conversationId: 'conv-1' },
body: { content: 'Hello!' },
throwOnError: true,
});
});
});
describe('executions', () => {
it('should get execution status', async () => {
const mockExecution = {
id: 'exec-1',
status: 'running',
targetType: 'playbook',
};
vi.mocked(getV1ExecutionsById).mockResolvedValue({
data: mockExecution,
request: new Request('http://test'),
response: new Response(),
});
const execution = await sdk.executions.get('exec-1');
expect(execution).toEqual(mockExecution);
});
it('should wait for completion - immediate success', async () => {
const mockExecution = {
id: 'exec-1',
status: 'completed',
result: 'Success!',
};
vi.mocked(getV1ExecutionsById).mockResolvedValue({
data: mockExecution,
request: new Request('http://test'),
response: new Response(),
});
const execution = await sdk.executions.waitForCompletion('exec-1');
expect(execution).toEqual(mockExecution);
expect(getV1ExecutionsById).toHaveBeenCalledTimes(1);
});
it('should wait for completion - polls until complete', async () => {
vi.mocked(getV1ExecutionsById)
.mockResolvedValueOnce({
data: { id: 'exec-1', status: 'running' },
request: new Request('http://test'),
response: new Response(),
})
.mockResolvedValueOnce({
data: { id: 'exec-1', status: 'running' },
request: new Request('http://test'),
response: new Response(),
})
.mockResolvedValueOnce({
data: { id: 'exec-1', status: 'completed', result: 'Done!' },
request: new Request('http://test'),
response: new Response(),
});
const execution = await sdk.executions.waitForCompletion('exec-1', {
pollIntervalMs: 10,
});
expect(execution.status).toBe('completed');
expect(getV1ExecutionsById).toHaveBeenCalledTimes(3);
});
it('should wait for completion - handles failed status', async () => {
vi.mocked(getV1ExecutionsById).mockResolvedValue({
data: { id: 'exec-1', status: 'failed' },
request: new Request('http://test'),
response: new Response(),
});
const execution = await sdk.executions.waitForCompletion('exec-1');
expect(execution.status).toBe('failed');
});
it('should wait for completion - times out', async () => {
vi.mocked(getV1ExecutionsById).mockResolvedValue({
data: { id: 'exec-1', status: 'running' },
request: new Request('http://test'),
response: new Response(),
});
await expect(sdk.executions.waitForCompletion('exec-1', {
timeoutMs: 50,
pollIntervalMs: 20,
})).rejects.toThrow(/timed out/);
});
});
});
describe('NimbleBrain.messages.stream', () => {
let sdk;
let originalFetch;
beforeEach(() => {
originalFetch = global.fetch;
sdk = new NimbleBrain({
apiKey: 'test-api-key',
baseUrl: 'https://api.test.com',
});
});
afterEach(() => {
global.fetch = originalFetch;
});
it('should stream SSE events', async () => {
const sseData = [
'event: message.start\ndata: {"messageId":"msg-1"}\n\n',
'event: content\ndata: {"text":"Hello"}\n\n',
'event: content\ndata: {"text":" world"}\n\n',
'event: done\ndata: {}\n\n',
].join('');
const mockStream = new ReadableStream({
start(controller) {
controller.enqueue(new TextEncoder().encode(sseData));
controller.close();
},
});
global.fetch = vi.fn().mockResolvedValue({
ok: true,
body: mockStream,
});
const events = [];
for await (const event of sdk.messages.stream('agent-1', 'conv-1', 'Hello!')) {
events.push(event);
}
expect(events).toHaveLength(4);
expect(events[0]).toEqual({ type: 'message.start', data: { messageId: 'msg-1' } });
expect(events[1]).toEqual({ type: 'content', data: { text: 'Hello' } });
expect(events[2]).toEqual({ type: 'content', data: { text: ' world' } });
expect(events[3]).toEqual({ type: 'done', data: {} });
expect(global.fetch).toHaveBeenCalledWith('https://api.test.com/v1/agents/agent-1/conversations/conv-1/messages', expect.objectContaining({
method: 'POST',
headers: expect.objectContaining({
'Content-Type': 'application/json',
'Accept': 'text/event-stream',
'Authorization': 'Bearer test-api-key',
}),
body: JSON.stringify({ content: 'Hello!', stream: true }),
}));
});
it('should handle chunked SSE data', async () => {
// Simulate data arriving in chunks that split across event boundaries
const mockStream = new ReadableStream({
start(controller) {
controller.enqueue(new TextEncoder().encode('event: content\ndata: {"te'));
controller.enqueue(new TextEncoder().encode('xt":"chunk1"}\n\nevent: done\ndata: {}\n\n'));
controller.close();
},
});
global.fetch = vi.fn().mockResolvedValue({
ok: true,
body: mockStream,
});
const events = [];
for await (const event of sdk.messages.stream('agent-1', 'conv-1', 'test')) {
events.push(event);
}
expect(events).toHaveLength(2);
expect(events[0]).toEqual({ type: 'content', data: { text: 'chunk1' } });
expect(events[1]).toEqual({ type: 'done', data: {} });
});
it('should throw on non-ok response', async () => {
global.fetch = vi.fn().mockResolvedValue({
ok: false,
status: 401,
text: () => Promise.resolve('Unauthorized'),
});
await expect(async () => {
for await (const _ of sdk.messages.stream('agent-1', 'conv-1', 'test')) {
// consume
}
}).rejects.toThrow(/401/);
});
it('should throw when no response body', async () => {
global.fetch = vi.fn().mockResolvedValue({
ok: true,
body: null,
});
await expect(async () => {
for await (const _ of sdk.messages.stream('agent-1', 'conv-1', 'test')) {
// consume
}
}).rejects.toThrow(/No response body/);
});
it('should handle tool events', async () => {
const sseData = [
'event: tool.start\ndata: {"tool":"search","display":"Searching..."}\n\n',
'event: tool.complete\ndata: {"tool":"search"}\n\n',
'event: done\ndata: {}\n\n',
].join('');
const mockStream = new ReadableStream({
start(controller) {
controller.enqueue(new TextEncoder().encode(sseData));
controller.close();
},
});
global.fetch = vi.fn().mockResolvedValue({
ok: true,
body: mockStream,
});
const events = [];
for await (const event of sdk.messages.stream('agent-1', 'conv-1', 'search something')) {
events.push(event);
}
expect(events).toHaveLength(3);
expect(events[0].type).toBe('tool.start');
expect(events[1].type).toBe('tool.complete');
});
});
//# sourceMappingURL=nimblebrain.test.js.map
{"version":3,"file":"nimblebrain.test.js","sourceRoot":"","sources":["../src/nimblebrain.test.ts"],"names":[],"mappings":"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"}
+2
-0

@@ -0,3 +1,5 @@

export { NimbleBrain } from './nimblebrain';
export type { NimbleBrainConfig, Agent, Playbook, Conversation, Message, SendMessageResponse, ExecutePlaybookResponse, Execution, StreamEvent, WaitForCompletionOptions, } from './nimblebrain';
export type * from './types.gen';
export * from './sdk.gen';
//# sourceMappingURL=index.d.ts.map
+1
-1

@@ -1,1 +0,1 @@

{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAEA,mBAAmB,aAAa,CAAC;AACjC,cAAc,WAAW,CAAC"}
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,WAAW,EAAE,MAAM,eAAe,CAAC;AAC5C,YAAY,EACV,iBAAiB,EACjB,KAAK,EACL,QAAQ,EACR,YAAY,EACZ,OAAO,EACP,mBAAmB,EACnB,uBAAuB,EACvB,SAAS,EACT,WAAW,EACX,wBAAwB,GACzB,MAAM,eAAe,CAAC;AAGvB,mBAAmB,aAAa,CAAC;AACjC,cAAc,WAAW,CAAC"}

@@ -1,3 +0,4 @@

// This file is auto-generated by @hey-api/openapi-ts
// High-level SDK (recommended)
export { NimbleBrain } from './nimblebrain';
export * from './sdk.gen';
//# sourceMappingURL=index.js.map

@@ -1,1 +0,1 @@

{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,qDAAqD;AAGrD,cAAc,WAAW,CAAC"}
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,+BAA+B;AAC/B,OAAO,EAAE,WAAW,EAAE,MAAM,eAAe,CAAC;AAgB5C,cAAc,WAAW,CAAC"}
{
"name": "@nimblebrain/sdk",
"version": "0.1.1",
"version": "0.2.0",
"description": "Official TypeScript SDK for NimbleBrain Studio API - AI agents, playbooks, and streaming conversations",

@@ -30,2 +30,4 @@ "type": "module",

"typecheck": "tsc --noEmit",
"test": "vitest run",
"test:watch": "vitest",
"prepublishOnly": "npm run clean && npm run build",

@@ -64,4 +66,5 @@ "dev": "npm run build"

"@hey-api/openapi-ts": "^0.88.1",
"typescript": "^5.6.0"
"typescript": "^5.6.0",
"vitest": "^4.0.15"
}
}

@@ -6,2 +6,3 @@ # NimbleBrain SDK for TypeScript

![npm version](https://img.shields.io/npm/v/@nimblebrain/sdk)
![CI](https://github.com/NimbleBrainInc/sdk-typescript/actions/workflows/ci.yml/badge.svg)
![GitHub License](https://img.shields.io/github/license/NimbleBrainInc/sdk-typescript)

@@ -8,0 +9,0 @@ [![Discord](https://img.shields.io/badge/Discord-%235865F2.svg?logo=discord&logoColor=white)](https://www.nimblebrain.ai/discord?utm_source=github&utm_medium=readme&utm_campaign=sdk-typescript&utm_content=header-badge)