@agent-native/core 0.56.1 → 0.58.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +9 -7
- package/dist/cli/plan-local.d.ts.map +1 -1
- package/dist/cli/plan-local.js +66 -10
- package/dist/cli/plan-local.js.map +1 -1
- package/dist/cli/skills.d.ts +2 -2
- package/dist/cli/skills.d.ts.map +1 -1
- package/dist/cli/skills.js +13 -5
- package/dist/cli/skills.js.map +1 -1
- package/dist/client/AssistantChat.d.ts +8 -0
- package/dist/client/AssistantChat.d.ts.map +1 -1
- package/dist/client/AssistantChat.js +24 -4
- package/dist/client/AssistantChat.js.map +1 -1
- package/dist/client/agent-chat-adapter.d.ts.map +1 -1
- package/dist/client/agent-chat-adapter.js +39 -4
- package/dist/client/agent-chat-adapter.js.map +1 -1
- package/dist/client/chat/connectors.d.ts +19 -0
- package/dist/client/chat/connectors.d.ts.map +1 -0
- package/dist/client/chat/connectors.js +992 -0
- package/dist/client/chat/connectors.js.map +1 -0
- package/dist/client/chat/index.d.ts +2 -1
- package/dist/client/chat/index.d.ts.map +1 -1
- package/dist/client/chat/index.js +2 -0
- package/dist/client/chat/index.js.map +1 -1
- package/dist/client/chat/runtime.d.ts +93 -0
- package/dist/client/chat/runtime.d.ts.map +1 -1
- package/dist/client/chat/runtime.js +934 -1
- package/dist/client/chat/runtime.js.map +1 -1
- package/dist/client/index.d.ts +2 -1
- package/dist/client/index.d.ts.map +1 -1
- package/dist/client/index.js +2 -0
- package/dist/client/index.js.map +1 -1
- package/dist/mcp/build-server.d.ts.map +1 -1
- package/dist/mcp/build-server.js +48 -3
- package/dist/mcp/build-server.js.map +1 -1
- package/docs/content/actions.md +5 -1
- package/docs/content/agent-surfaces.md +273 -0
- package/docs/content/components.md +46 -17
- package/docs/content/drop-in-agent.md +10 -5
- package/docs/content/embedding-sdk.md +4 -0
- package/docs/content/external-agents.md +1 -0
- package/docs/content/getting-started.md +2 -0
- package/docs/content/harness-agents.md +232 -0
- package/docs/content/key-concepts.md +24 -22
- package/docs/content/mcp-apps.md +1 -1
- package/docs/content/native-chat-ui.md +101 -22
- package/docs/content/plan-plugin.md +27 -1
- package/docs/content/pure-agent-apps.md +2 -1
- package/docs/content/using-your-agent.md +1 -0
- package/docs/content/what-is-agent-native.md +3 -2
- package/package.json +1 -1
|
@@ -190,27 +190,27 @@ See [Context Awareness](/docs/context-awareness) for the full pattern: navigatio
|
|
|
190
190
|
|
|
191
191
|
Agent-native supports a lot of agent-facing protocols because different hosts standardize different pieces of the same workflow. App authors should not have to choose among them or rebuild the same operation for each client. The center of gravity stays the action system.
|
|
192
192
|
|
|
193
|
-
| Surface
|
|
194
|
-
|
|
|
195
|
-
| Agent tool calling
|
|
196
|
-
| UI actions
|
|
197
|
-
| Native chat widgets
|
|
198
|
-
|
|
|
199
|
-
|
|
|
200
|
-
| MCP
|
|
201
|
-
| MCP
|
|
202
|
-
|
|
|
203
|
-
|
|
|
204
|
-
|
|
|
205
|
-
|
|
|
206
|
-
|
|
|
207
|
-
|
|
|
208
|
-
|
|
|
209
|
-
| ACP
|
|
210
|
-
|
|
211
|
-
The practical rule is simple: implement domain operations as actions, add `readOnly`, `publicAgent`, `link`, `mcpApp`, or an explicit native widget result only when a surface needs it, and use skills/instructions for behavior. MCP, A2A, MCP Apps, MCP OAuth, UI mutations, native chat widgets, CLI commands, and deep-link handoffs are adapters around that same core.
|
|
212
|
-
|
|
213
|
-
Adapter horizon: [
|
|
193
|
+
| Surface | Status | What agent-native provides | What you write |
|
|
194
|
+
| --------------------------- | ------------------- | ------------------------------------------------------------------------------------------------------------------------------------- | ------------------------------------------------- |
|
|
195
|
+
| Agent tool calling | Shipping | The in-app agent sees actions as function tools with zod-derived JSON Schema. | `defineAction()` |
|
|
196
|
+
| UI actions | Shipping | React calls the same action through `useActionMutation()` / `useActionQuery()`. | The same action |
|
|
197
|
+
| Native chat widgets | Shipping | Tool results with explicit widget discriminants can render native tables, charts, and typed app results in chat. | Structured action results |
|
|
198
|
+
| AgentChatRuntime connectors | Shipping | The chat shell can sit on top of OpenAI Agents, OpenAI Responses, Claude Agent SDK, Vercel AI SDK, AG-UI, or normalized HTTP streams. | Pick a runtime helper or stream normalized events |
|
|
199
|
+
| HTTP and CLI | Shipping | Actions auto-mount at `/_agent-native/actions/:name` and run via `pnpm action <name>`. | The same action |
|
|
200
|
+
| MCP server | Shipping | External MCP hosts get Streamable HTTP tools, the `ask-agent` meta-tool, and optional MCP Apps resources. | The same action, plus optional `mcpApp` |
|
|
201
|
+
| MCP OAuth | Shipping | Standard remote MCP OAuth, PKCE, dynamic client registration, refresh tokens, and `mcp:read` / `mcp:write` / `mcp:apps` scopes. | Nothing per action |
|
|
202
|
+
| MCP Apps | Shipping | External hosts that support app resources can render iframe/native-host widgets, with deep-link fallback elsewhere. | Optional `mcpApp` metadata |
|
|
203
|
+
| A2A | Shipping | Other agents discover the agent card and call the app over JSON-RPC tasks. | The same actions and agent config |
|
|
204
|
+
| Deep links | Shipping | Action results can round-trip users into the running UI through `/_agent-native/open` and `agentnative://open`. | Optional `link` metadata |
|
|
205
|
+
| MCP clients | Shipping | The app can also consume local, remote, or hub-shared MCP servers as `mcp__...` tools. | `mcp.config.json` or settings |
|
|
206
|
+
| Instructions and skills | Shipping | `AGENTS.md`, skills, memory, slash commands, sub-agents, jobs, and automations live in the SQL-backed workspace. | Workspace resources, not protocol glue |
|
|
207
|
+
| Agent Web | Shipping | Public pages can publish `robots.txt`, `sitemap.xml`, `llms.txt`, markdown mirrors, and structured metadata. | Route access plus `agentWeb` config |
|
|
208
|
+
| Extensions | Shipping | Sandboxed mini-apps call app actions, persist extension data, and use proxied fetch helpers. | Extension HTML using `appAction()` |
|
|
209
|
+
| ACP | Coding-agent/editor | Useful for coding agents inside editors/IDEs; not the general BYO app-chat runtime contract. | Editor/agent adapter work |
|
|
210
|
+
|
|
211
|
+
The practical rule is simple: implement domain operations as actions, add `readOnly`, `publicAgent`, `link`, `mcpApp`, or an explicit native widget result only when a surface needs it, and use skills/instructions for behavior. MCP, A2A, MCP Apps, MCP OAuth, UI mutations, native chat widgets, AgentChatRuntime connectors, CLI commands, and deep-link handoffs are adapters around that same core.
|
|
212
|
+
|
|
213
|
+
Adapter horizon: [A2UI](https://a2ui.org/) is worth watching for portable generated UI across trust boundaries, but first-party Agent-Native widgets should stay explicit native renderers. [ACP](https://zed.dev/acp) is important for coding-agent/editor interoperability, but it is not the general BYO app-agent UI contract.
|
|
214
214
|
|
|
215
215
|
## Three product shapes {#three-product-shapes}
|
|
216
216
|
|
|
@@ -222,7 +222,7 @@ Those protocol adapters let the same app grow across three product shapes:
|
|
|
222
222
|
| **Rich chat agent** | A standalone or embedded chat can guide setup, call tools, request approvals, and render native tables/charts/results. | Agent-first workflows that still need inspectable output |
|
|
223
223
|
| **Whole application** | Chat starts central when helpful, then becomes a sidebar next to forms, dashboards, editors, calendars, or documents. | Durable products where humans and agents share state over time |
|
|
224
224
|
|
|
225
|
-
You should be able to start with the headless contract, add rich chat, and then grow a full app around the same actions and SQL state instead of rebuilding.
|
|
225
|
+
You should be able to start with the headless contract, add rich chat, and then grow a full app around the same actions and SQL state instead of rebuilding. See [Agent Surfaces](/docs/agent-surfaces) for the concrete choice guide and APIs.
|
|
226
226
|
|
|
227
227
|
## Agent modifies code {#agent-modifies-code}
|
|
228
228
|
|
|
@@ -302,6 +302,7 @@ Adopting the framework is valuable mostly because of what you stop having to bui
|
|
|
302
302
|
- **One action = every surface.** Every action defined with `defineAction()` is simultaneously an agent tool, a typesafe frontend hook (`useActionQuery` / `useActionMutation`), a framework-owned HTTP transport, a CLI command, an MCP tool for external clients, and an A2A tool for other agent-native apps. Optional `link` and `mcpApp` metadata add deep links and MCP Apps UI without a second implementation.
|
|
303
303
|
- **A full workspace per user.** Skills, shared `LEARNINGS.md`, personal `memory/MEMORY.md`, `AGENTS.md`, custom sub-agents, scheduled jobs, connected MCP servers — all SQL-backed, no dev-box required. See [Workspace](/docs/workspace).
|
|
304
304
|
- **Drop-in React components.** `<AgentPanel />` and `<AgentSidebar />` render chat + workspace anywhere in your app. See [Drop-in Agent](/docs/drop-in-agent).
|
|
305
|
+
- **BYO agent chat runtimes.** The same chat UI can sit on top of OpenAI Agents, OpenAI Responses, Claude Agent SDK, Vercel AI SDK, AG-UI, or your own normalized HTTP stream. See [Native Chat UI](/docs/native-chat-ui#byo-agent-runtimes).
|
|
305
306
|
- **Live sync between agent and UI.** Same-process writes stream immediately over `/_agent-native/events`; a lightweight poll keeps serverless, cron, and cross-process writes convergent. Mutating actions invalidate action-backed queries automatically, so agent-created records appear without a manual refresh. See [Live Sync](#polling-sync) below.
|
|
306
307
|
- **Auth, orgs, RBAC.** Better Auth with orgs/members/roles is wired in for every template. See [Authentication](/docs/authentication).
|
|
307
308
|
- **Context awareness.** The agent always knows what the user is looking at through the `navigation` app-state key. See [Context Awareness](/docs/context-awareness).
|
|
@@ -320,5 +321,6 @@ For detailed guidance on specific patterns:
|
|
|
320
321
|
- [Context Awareness](/docs/context-awareness) — navigation state, view-screen, navigate commands
|
|
321
322
|
- [Skills Guide](/docs/skills-guide) — framework skills, domain skills, creating custom skills
|
|
322
323
|
- [Native Chat UI](/docs/native-chat-ui) — action-declared tables, charts, and BYO runtime posture
|
|
324
|
+
- [Agent Surfaces](/docs/agent-surfaces) — headless, rich chat, embedded sidecar, and full-app paths
|
|
323
325
|
- [A2A Protocol](/docs/a2a-protocol) — agent-to-agent communication
|
|
324
326
|
- [Multi-App Workspace](/docs/multi-app-workspace) — host many apps in one monorepo with shared auth, skills, components, and credentials
|
package/docs/content/mcp-apps.md
CHANGED
|
@@ -9,7 +9,7 @@ MCP Apps are the official `io.modelcontextprotocol/ui` extension that lets compa
|
|
|
9
9
|
|
|
10
10
|
For connecting external agents and the broader MCP server setup, see [External Agents](/docs/external-agents) and [MCP Protocol](/docs/mcp-protocol). This page covers authoring MCP App resources and the embed bridge that powers them.
|
|
11
11
|
|
|
12
|
-
Inside an Agent-Native app's own chat, prefer [native chat renderers](/docs/native-chat-ui) for first-party widgets such as tables, charts,
|
|
12
|
+
Inside an Agent-Native app's own chat, prefer [native chat renderers](/docs/native-chat-ui) for first-party widgets such as tables, charts, typed results, and approval affordances. Use MCP Apps for external/cross-host inline UI in Claude, ChatGPT, Copilot, Cursor, and other compatible hosts, with the action `link` as the universal deep-link fallback.
|
|
13
13
|
|
|
14
14
|
## Authoring: optional MCP Apps UI {#mcp-apps}
|
|
15
15
|
|
|
@@ -178,32 +178,111 @@ arbitrary query execution behind typed read actions rather than raw SQL in chat.
|
|
|
178
178
|
|
|
179
179
|
## BYO agent runtimes {#byo-agent-runtimes}
|
|
180
180
|
|
|
181
|
-
|
|
182
|
-
|
|
183
|
-
|
|
184
|
-
|
|
185
|
-
|
|
186
|
-
|
|
187
|
-
|
|
188
|
-
|
|
189
|
-
|
|
190
|
-
|
|
191
|
-
|
|
192
|
-
|
|
193
|
-
|
|
194
|
-
|
|
195
|
-
|
|
196
|
-
|
|
197
|
-
|
|
198
|
-
|
|
199
|
-
|
|
200
|
-
|
|
201
|
-
|
|
202
|
-
|
|
181
|
+
`AgentChatRuntime` is the bring-your-own-agent contract for the chat shell. It
|
|
182
|
+
lets an agent you built elsewhere stream normalized events into Agent-Native's
|
|
183
|
+
conversation UI while keeping the shared composer, transcript rendering, tool
|
|
184
|
+
cards, approvals, native widgets, and surrounding app layout. For how this fits
|
|
185
|
+
with headless actions, embedded sidecars, and full applications, see
|
|
186
|
+
[Agent Surfaces](/docs/agent-surfaces).
|
|
187
|
+
|
|
188
|
+
Use the generic HTTP runtime when your agent can expose a POST endpoint that
|
|
189
|
+
returns SSE or NDJSON runtime events:
|
|
190
|
+
|
|
191
|
+
```tsx
|
|
192
|
+
import {
|
|
193
|
+
AssistantChat,
|
|
194
|
+
createHttpAgentChatRuntime,
|
|
195
|
+
} from "@agent-native/core/client/chat";
|
|
196
|
+
|
|
197
|
+
const runtime = createHttpAgentChatRuntime({
|
|
198
|
+
id: "external:mastra",
|
|
199
|
+
label: "Mastra",
|
|
200
|
+
endpoint: "/api/mastra/chat",
|
|
201
|
+
headers: async () => ({
|
|
202
|
+
Authorization: `Bearer ${await getAgentToken()}`,
|
|
203
|
+
}),
|
|
204
|
+
});
|
|
205
|
+
|
|
206
|
+
export function SupportChat() {
|
|
207
|
+
return <AssistantChat runtime={runtime} threadId="support" />;
|
|
208
|
+
}
|
|
209
|
+
```
|
|
210
|
+
|
|
211
|
+
If your endpoint already streams a common agent protocol, use the matching
|
|
212
|
+
connector and skip writing a custom mapper:
|
|
213
|
+
|
|
214
|
+
```ts
|
|
215
|
+
import {
|
|
216
|
+
createAgUiChatRuntime,
|
|
217
|
+
createClaudeAgentChatRuntime,
|
|
218
|
+
createOpenAIAgentsChatRuntime,
|
|
219
|
+
createOpenAIResponsesChatRuntime,
|
|
220
|
+
createVercelAiChatRuntime,
|
|
221
|
+
} from "@agent-native/core/client/chat";
|
|
222
|
+
|
|
223
|
+
const openAiAgentsRuntime = createOpenAIAgentsChatRuntime({
|
|
224
|
+
endpoint: "/api/openai-agents/chat",
|
|
225
|
+
});
|
|
226
|
+
|
|
227
|
+
const openAiResponsesRuntime = createOpenAIResponsesChatRuntime({
|
|
228
|
+
endpoint: "/api/openai-responses/chat",
|
|
229
|
+
});
|
|
230
|
+
|
|
231
|
+
const claudeAgentRuntime = createClaudeAgentChatRuntime({
|
|
232
|
+
endpoint: "/api/claude-agent/chat",
|
|
233
|
+
});
|
|
234
|
+
|
|
235
|
+
const vercelAiRuntime = createVercelAiChatRuntime({
|
|
236
|
+
endpoint: "/api/vercel-ai/chat",
|
|
237
|
+
});
|
|
238
|
+
|
|
239
|
+
const agUiRuntime = createAgUiChatRuntime({
|
|
240
|
+
endpoint: "/api/ag-ui/chat",
|
|
241
|
+
});
|
|
242
|
+
```
|
|
243
|
+
|
|
244
|
+
The endpoint may stream the normalized event shape directly:
|
|
245
|
+
|
|
246
|
+
```txt
|
|
247
|
+
data: {"type":"message-start","message":{"id":"m1","role":"assistant","content":[]}}
|
|
248
|
+
data: {"type":"message-delta","messageId":"m1","delta":{"type":"text","text":"Hello"}}
|
|
249
|
+
data: {"type":"tool-start","toolCall":{"id":"t1","name":"query","input":{"q":"forms"}}}
|
|
250
|
+
data: {"type":"tool-done","toolCallId":"t1","toolName":"query","status":"completed","resultText":"34 rows"}
|
|
251
|
+
data: {"type":"done","reason":"complete"}
|
|
252
|
+
```
|
|
253
|
+
|
|
254
|
+
For very simple agents, a JSON response `{ "text": "..." }` is accepted and
|
|
255
|
+
converted into a single assistant message. For richer agents, stream
|
|
256
|
+
`message-*`, `tool-*`, `approval-request`, `status`, `artifact`, `file`,
|
|
257
|
+
`usage`, `error`, and `done` events. Tool results can carry `mcpApp` or
|
|
258
|
+
`chatUI` metadata, so action-declared native widgets still render without
|
|
259
|
+
iframes.
|
|
260
|
+
|
|
261
|
+
When you want the built-in Agent-Native transport as a runtime object, use:
|
|
262
|
+
|
|
263
|
+
```ts
|
|
264
|
+
import { createAgentNativeChatRuntime } from "@agent-native/core/client/chat";
|
|
265
|
+
|
|
266
|
+
const runtime = createAgentNativeChatRuntime({
|
|
267
|
+
threadId: "forms-chat",
|
|
268
|
+
mode: "act",
|
|
269
|
+
});
|
|
270
|
+
```
|
|
271
|
+
|
|
272
|
+
Use `<AssistantChat createAdapter={...} />` only when you need full
|
|
273
|
+
assistant-ui adapter control. Use `PromptComposer` by itself when your product
|
|
274
|
+
owns the entire external transcript and only wants Agent-Native's composer
|
|
275
|
+
field.
|
|
276
|
+
|
|
277
|
+
OpenAI, AG-UI, Claude Agent SDK, and Vercel AI SDK streams can use the standard
|
|
278
|
+
connector helpers. ACP remains coding-agent/editor interoperability, not the
|
|
279
|
+
general app-chat runtime for end users. A2UI is not claimed as supported here;
|
|
280
|
+
if it matures, it should adapt into this same explicit runtime/widget contract.
|
|
203
281
|
|
|
204
282
|
## Related docs {#related-docs}
|
|
205
283
|
|
|
206
284
|
- [Actions](/docs/actions) — define the operations that return native widget data.
|
|
285
|
+
- [Agent Surfaces](/docs/agent-surfaces) — decide whether you need headless, chat, sidecar, or full app.
|
|
207
286
|
- [Drop-in Agent](/docs/drop-in-agent) — mount the standard chat runtime.
|
|
208
287
|
- [Component API](/docs/components) — custom chat layers and tool renderers.
|
|
209
288
|
- [MCP Apps](/docs/mcp-apps) — inline UI for external MCP hosts.
|
|
@@ -37,9 +37,35 @@ the Plan MCP connector. They write `plans/<slug>/plan.mdx` plus optional
|
|
|
37
37
|
`canvas.mdx`, `prototype.mdx`, and `.plan-state.json`, then preview locally with:
|
|
38
38
|
|
|
39
39
|
```bash
|
|
40
|
-
npx @agent-native/core@latest plan local
|
|
40
|
+
npx @agent-native/core@latest plan local serve --dir plans/<slug> --kind plan --open
|
|
41
41
|
```
|
|
42
42
|
|
|
43
|
+
This starts a tiny localhost bridge and opens the Plan UI against the local
|
|
44
|
+
folder. (`plan local preview` runs a local Plan dev-server route instead, and
|
|
45
|
+
`plan local preview --out preview.html` is a legacy escape hatch that writes a
|
|
46
|
+
standalone static HTML file. `plan serve` is accepted as a short alias for
|
|
47
|
+
`plan local serve`.)
|
|
48
|
+
|
|
49
|
+
A few local-files-mode gotchas worth knowing:
|
|
50
|
+
|
|
51
|
+
- **Use a Chromium browser.** Safari blocks the hosted HTTPS Plan page from
|
|
52
|
+
reading the `http://127.0.0.1` localhost bridge (mixed-content / private
|
|
53
|
+
network), so the page hangs on "Loading plan." On macOS `--open` already
|
|
54
|
+
prefers Chrome/Chromium/Edge/Brave; if Safari opens anyway, reopen the printed
|
|
55
|
+
URL in a Chromium browser.
|
|
56
|
+
- **The served URL is written to `plans/<slug>/.plan-url`** (override with
|
|
57
|
+
`--url-file`). A backgrounded or headless agent can read that file instead of
|
|
58
|
+
scraping the long-running `serve` stdout. Treat it as a local token file and
|
|
59
|
+
do not commit it.
|
|
60
|
+
- **Verify headlessly** when no browser is available:
|
|
61
|
+
`npx @agent-native/core@latest plan local verify --dir plans/<slug>` starts the
|
|
62
|
+
bridge, checks the private-network preflight and JSON payload, prints
|
|
63
|
+
diagnostics, and exits non-zero on failure — no human eyes required.
|
|
64
|
+
- **Run `plan local check` first.** It validates the MDX against the Plan
|
|
65
|
+
renderer's block schema (including required fields like `checklist` item
|
|
66
|
+
`id`/`label` and `question-form` question `id`/`title`/`mode`), so authoring
|
|
67
|
+
mistakes surface before the browser handoff instead of as a stuck loader.
|
|
68
|
+
|
|
43
69
|
For folders in the current repo, the direct local route includes `?path=...` so
|
|
44
70
|
the local Plan app can keep browser edits saving to the repo folder. The Plan
|
|
45
71
|
app uses `apps.plan.roots[0].path` in `agent-native.json` as the default place
|
|
@@ -5,7 +5,7 @@ description: "Apps where the agent is the whole product — open it, ask for wha
|
|
|
5
5
|
|
|
6
6
|
# Pure-Agent Apps
|
|
7
7
|
|
|
8
|
-
This is the minimal end of agent-native — for the full-UI end, start from a [template](/docs/cloneable-saas).
|
|
8
|
+
This is the minimal end of agent-native — for the full-UI end, start from a [template](/docs/cloneable-saas). If you are choosing between headless, chat-first, embedded, and full-app shapes, start with [Agent Surfaces](/docs/agent-surfaces).
|
|
9
9
|
|
|
10
10
|
Imagine opening an app and seeing… just a chat. No dashboard. No sidebar full of menus. No forms. You ask for what you want — "summarize my unread emails," "post the daily metrics to Slack," "find the candidates who replied last week" — and the agent goes off and does it. The output shows up in chat, in Slack, in your inbox, wherever it belongs.
|
|
11
11
|
|
|
@@ -90,6 +90,7 @@ Most pure-agent apps eventually want a little custom UI — not a dashboard, but
|
|
|
90
90
|
## What's next
|
|
91
91
|
|
|
92
92
|
- [**Getting Started**](/docs/getting-started) — clone the Starter template
|
|
93
|
+
- [**Agent Surfaces**](/docs/agent-surfaces) — choose headless, rich chat, embedded sidecar, or full app
|
|
93
94
|
- [**Messaging the agent**](/docs/messaging) — how users talk to the agent across web, Slack, Telegram, email
|
|
94
95
|
- [**Recurring Jobs**](/docs/recurring-jobs) — scheduled prompts the agent runs on its own
|
|
95
96
|
- [**Dispatch**](/docs/template-dispatch) — the workspace template that's a great starting point for pure-agent apps
|
|
@@ -39,6 +39,7 @@ _For developers building the app._
|
|
|
39
39
|
The agent isn't a separate app you tab over to. It ships as a handful of React components — a sidebar, a raw panel, and a `sendToAgentChat()` call — that you drop into any app. Render `<AgentSidebar>` to give every screen a toggleable agent, or wire a button to hand a specific task off to the chat instead of running a one-shot LLM call.
|
|
40
40
|
|
|
41
41
|
→ [**Drop-in Agent**](/docs/drop-in-agent) — mount `<AgentPanel>`, `<AgentSidebar>`, and `sendToAgentChat()` into any React app. _(For developers building the app.)_
|
|
42
|
+
→ [**Agent Surfaces**](/docs/agent-surfaces) — choose whether the workflow should be headless, chat-first, embedded, or a full app. _(For developers designing the product shape.)_
|
|
42
43
|
|
|
43
44
|
## You can go UI-light {#ui-light}
|
|
44
45
|
|
|
@@ -66,10 +66,10 @@ At minimum, "a UI for the agent" is an observability and management dashboard. A
|
|
|
66
66
|
There are three useful shapes:
|
|
67
67
|
|
|
68
68
|
- **Headless** — call the agent and actions from code, HTTP, CLI, MCP, or A2A.
|
|
69
|
-
- **Rich chat** — give the agent a first-class chat UI with native tool widgets such as tables, charts,
|
|
69
|
+
- **Rich chat** — give the agent a first-class chat UI with native tool widgets such as tables, charts, typed results, approvals, and links into app views. See [Native Chat UI](/docs/native-chat-ui).
|
|
70
70
|
- **Whole app** — put a full application around the agent, with SQL state, context awareness, deep links, and live sync so humans and agents stay in the same workspace.
|
|
71
71
|
|
|
72
|
-
Agent-native is designed so those are stages, not rewrites. You can start headless, add rich chat, and grow into a full app around the same action surface.
|
|
72
|
+
Agent-native is designed so those are stages, not rewrites. You can start headless, add rich chat, and grow into a full app around the same action surface. See [Agent Surfaces](/docs/agent-surfaces) for the concrete APIs behind each shape.
|
|
73
73
|
|
|
74
74
|
## Why every app benefits from an agent {#why-every-app-benefits-from-an-agent}
|
|
75
75
|
|
|
@@ -186,6 +186,7 @@ One action, many surfaces: the agent calls it as a tool, the UI calls it as a ty
|
|
|
186
186
|
## What's next {#whats-next}
|
|
187
187
|
|
|
188
188
|
- [**Getting Started**](/docs) — pick a template and run it
|
|
189
|
+
- [**Agent Surfaces**](/docs/agent-surfaces) — choose headless, rich chat, embedded sidecar, or full app
|
|
189
190
|
- [**Key Concepts**](/docs/key-concepts) — the architecture: SQL, actions, polling sync, context awareness, portability
|
|
190
191
|
- [**Templates**](/docs/cloneable-saas) — templates as complete products you own
|
|
191
192
|
- [**Workspace**](/docs/workspace) — the per-user customization layer (skills, memory, instructions, MCP) backed by SQL, not files
|