79 lines
2.2 KiB
Markdown
79 lines
2.2 KiB
Markdown
# @ag-ui/client
|
||
|
||
Client SDK for connecting to **Agent-User Interaction (AG-UI) Protocol** servers.
|
||
|
||
`@ag-ui/client` provides agent implementations that handle the full lifecycle of AG-UI communication: connecting to servers, processing streaming events, managing state mutations, and providing reactive subscriber hooks.
|
||
|
||
## Installation
|
||
|
||
```bash
|
||
npm install @ag-ui/client
|
||
pnpm add @ag-ui/client
|
||
yarn add @ag-ui/client
|
||
```
|
||
|
||
## Features
|
||
|
||
- 🔗 **HTTP connectivity** – `HttpAgent` for direct server connections with SSE/protobuf support
|
||
- 🏗️ **Custom agents** – `AbstractAgent` base class for building your own transport layer
|
||
- 📡 **Event streaming** – Full AG-UI event processing with validation and transformation
|
||
- 🔄 **State management** – Automatic message/state tracking with reactive updates
|
||
- 🪝 **Subscriber system** – Middleware-style hooks for logging, persistence, and custom logic
|
||
- 🎯 **Middleware support** – Transform and filter events with function or class-based middleware
|
||
|
||
## Quick example
|
||
|
||
```ts
|
||
import { HttpAgent } from "@ag-ui/client";
|
||
|
||
const agent = new HttpAgent({
|
||
url: "https://api.example.com/agent",
|
||
headers: { Authorization: "Bearer token" },
|
||
});
|
||
|
||
const result = await agent.runAgent({
|
||
messages: [{ role: "user", content: "Hello!" }],
|
||
});
|
||
|
||
console.log(result.newMessages);
|
||
```
|
||
|
||
## Using Middleware
|
||
|
||
```ts
|
||
import { HttpAgent, FilterToolCallsMiddleware } from "@ag-ui/client";
|
||
|
||
const agent = new HttpAgent({
|
||
url: "https://api.example.com/agent",
|
||
});
|
||
|
||
// Add middleware to transform or filter events
|
||
agent.use(
|
||
// Function middleware for logging
|
||
(input, next) => {
|
||
console.log("Starting run:", input.runId);
|
||
return next.run(input);
|
||
},
|
||
|
||
// Class middleware for filtering tool calls
|
||
new FilterToolCallsMiddleware({
|
||
allowedToolCalls: ["search", "calculate"]
|
||
})
|
||
);
|
||
|
||
await agent.runAgent();
|
||
```
|
||
|
||
## Documentation
|
||
|
||
- Concepts & architecture: [`docs/concepts`](https://docs.ag-ui.com/concepts/architecture)
|
||
- Full API reference: [`docs/sdk/js/client`](https://docs.ag-ui.com/sdk/js/client/overview)
|
||
|
||
## 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
|