54 lines
1.6 KiB
Markdown
54 lines
1.6 KiB
Markdown
# @ag-ui/encoder
|
||
|
||
Event encoding utilities for the **Agent-User Interaction (AG-UI) Protocol**.
|
||
|
||
`@ag-ui/encoder` handles content negotiation and format encoding for AG-UI events. It automatically chooses between Server-Sent Events (JSON) and Protocol Buffers based on client `Accept` headers, ensuring optimal transport efficiency.
|
||
|
||
## Installation
|
||
|
||
```bash
|
||
npm install @ag-ui/encoder
|
||
pnpm add @ag-ui/encoder
|
||
yarn add @ag-ui/encoder
|
||
```
|
||
|
||
## Features
|
||
|
||
- 🎯 **Content negotiation** – Automatic format selection based on `Accept` headers
|
||
- 📦 **Dual encoding** – SSE (JSON) and Protocol Buffer support
|
||
- ⚡ **Efficient binary** – Length-prefixed protobuf encoding for high-throughput scenarios
|
||
- 🔄 **Seamless fallback** – Graceful degradation to SSE when protobuf isn't supported
|
||
|
||
## Quick example
|
||
|
||
```ts
|
||
import { EventEncoder } from "@ag-ui/encoder";
|
||
import { EventType } from "@ag-ui/core";
|
||
|
||
const encoder = new EventEncoder({
|
||
accept: "application/vnd.ag-ui.event+proto, text/event-stream",
|
||
});
|
||
|
||
const event = {
|
||
type: EventType.TEXT_MESSAGE_CONTENT,
|
||
messageId: "msg_123",
|
||
delta: "Hello, world!",
|
||
};
|
||
|
||
// Returns protobuf-encoded binary data
|
||
const encoded = encoder.encodeBinary(event);
|
||
```
|
||
|
||
## Documentation
|
||
|
||
- Concepts & architecture: [`docs/concepts`](https://docs.ag-ui.com/concepts/architecture)
|
||
- Full API reference: [`docs/sdk/js/encoder`](https://docs.ag-ui.com/sdk/js/encoder)
|
||
|
||
## Contributing
|
||
|
||
Bug reports and pull requests are welcome! Please read our [contributing guide](https://docs.ag-ui.com/development/contributing) first.
|
||
|
||
## License
|
||
|
||
MIT © 2025 AG-UI Protocol Contributors
|