# Persona Chat SDK

[![npm version](https://img.shields.io/npm/v/@applica-software-guru/persona-chat-sdk)](https://www.npmjs.com/package/@applica-software-guru/persona-chat-sdk)
[![Deploy](https://github.com/applica-software-guru/persona-chat-sdk/actions/workflows/deploy.yml/badge.svg)](https://github.com/applica-software-guru/persona-chat-sdk/actions/workflows/deploy.yml)

Official Chat SDK for the Persona API. It provides a simple and efficient way to integrate the Persona API into your applications using [assistant-ui](https://www.assistant-ui.com/).

## Quick Start

```bash
npm install @applica-software-guru/persona-chat-sdk
```

```tsx
import { PersonaRuntimeProvider, PersonaConsoleLogger } from '@applica-software-guru/persona-chat-sdk';

const logger = new PersonaConsoleLogger();

function Chat() {
  return (
    <PersonaRuntimeProvider
      logger={logger}
      protocols={{ rest: true, websocket: true }}
      session="your-session-id"
      apiKey="your-api-key"
      agentId="your-agent-id"
    >
      <Thread />
    </PersonaRuntimeProvider>
  );
}
```

## Features

- **Multiple Protocols** — REST, WebSocket, WebRTC with automatic fallback
- **Real-time Audio** — WebRTC peer-to-peer audio with minimal latency
- **Tool Execution** — Define custom tools with `createTool()` for function calling
- **Thread Management** — Built-in multi-thread support with persistence
- **Message Filtering** — Filter and transform messages before display
- **Custom Storage** — Pluggable message storage (memory, localStorage, or custom)
- **React Integration** — First-class support via assistant-ui components

## Documentation

| Section | Description |
|---|---|
| [Installation](https://bitbucket.org/applicaguru/persona-sdk-chat/src/main/docs/installation.md) | Setup and dependencies |
| [Usage](https://bitbucket.org/applicaguru/persona-sdk-chat/src/main/docs/usage.md) | Integration guide with Next.js |
| [Messages & Storage](https://bitbucket.org/applicaguru/persona-sdk-chat/src/main/docs/messages.md) | Message access, filtering and persistence |
| [Protocols](https://bitbucket.org/applicaguru/persona-sdk-chat/src/main/docs/protocols.md) | REST, WebSocket, WebRTC overview |
| [API Reference](https://bitbucket.org/applicaguru/persona-sdk-chat/src/main/docs/api-reference.md) | Props and configuration |
| [Transactions & Tools](https://bitbucket.org/applicaguru/persona-sdk-chat/src/main/docs/transactions.md) | Custom tool definitions |
| [Customization](https://bitbucket.org/applicaguru/persona-sdk-chat/src/main/docs/customization.md) | Custom protocols and loggers |
| [Contributing](https://bitbucket.org/applicaguru/persona-sdk-chat/src/main/docs/contributing.md) | How to contribute |

## Support

For questions or support, contact us at [info@applica.guru](mailto:info@applica.guru).

## License

MIT
