Chat
Conversation with an agent. Agent messages render as safe markdown; people's messages as plain text.
Jordan
Can you put together a proposal for 4 shoot days a month?
Rafael
Here are the two options:
| Item | Recurring (6 mo) | Annual |
|---|---|---|
| Day rate | $640 | $560 |
| Monthly | $2,560 | $2,240 |
Pricing policy · unsafe link
Installation
Once per app, set up Aedis UI. The CLI verifies the signed release before writing anything and pins every dependency:
npx @aedis/cli@0.1.0 initImport the theme once in your global CSS, after Tailwind:
app/globals.css
@import "tailwindcss";@import "./styles/aedis-theme.css";Then add the component:
npx @aedis/cli@0.1.0 add chat# pnpm dlx @aedis/cli@0.1.0 add chat · yarn dlx @aedis/cli@0.1.0 add chat · bunx @aedis/cli@0.1.0 add chatProps
| Prop | Type | Default | Description |
|---|---|---|---|
| messages | { id; author; role: "person" | "agent" | "system"; content }[] | — | The conversation. Content is untrusted. |
| onSend | (text) => Promise<void> | — | Send the text; throw to keep the draft and show the error. |
| working | string | — | Indicator while the agent works. |
| maxLength | number | 8000 | Match your server limit. |
| labels | Partial<ChatLabels> | — | placeholder, send, message, log, sendError. |
Security
- Agent output goes through Markdown: no raw HTML, only http, https and mailto links.
- The log region has aria-live, so new messages are announced.
- Enter sends and Shift+Enter adds a line; IME composition never sends.