@agent-native/core 0.54.1 → 0.56.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.
Files changed (186) hide show
  1. package/README.md +16 -1
  2. package/dist/action-ui.d.ts +17 -0
  3. package/dist/action-ui.d.ts.map +1 -0
  4. package/dist/action-ui.js +23 -0
  5. package/dist/action-ui.js.map +1 -0
  6. package/dist/action.d.ts +8 -1
  7. package/dist/action.d.ts.map +1 -1
  8. package/dist/action.js +3 -0
  9. package/dist/action.js.map +1 -1
  10. package/dist/agent/production-agent.d.ts +2 -0
  11. package/dist/agent/production-agent.d.ts.map +1 -1
  12. package/dist/agent/production-agent.js +11 -1
  13. package/dist/agent/production-agent.js.map +1 -1
  14. package/dist/agent/thread-data-builder.d.ts +4 -0
  15. package/dist/agent/thread-data-builder.d.ts.map +1 -1
  16. package/dist/agent/thread-data-builder.js +4 -0
  17. package/dist/agent/thread-data-builder.js.map +1 -1
  18. package/dist/agent/types.d.ts +2 -0
  19. package/dist/agent/types.d.ts.map +1 -1
  20. package/dist/agent/types.js.map +1 -1
  21. package/dist/cli/connect.d.ts +3 -1
  22. package/dist/cli/connect.d.ts.map +1 -1
  23. package/dist/cli/connect.js +7 -1
  24. package/dist/cli/connect.js.map +1 -1
  25. package/dist/cli/index.js +1 -1
  26. package/dist/cli/index.js.map +1 -1
  27. package/dist/cli/plan-local.d.ts +40 -0
  28. package/dist/cli/plan-local.d.ts.map +1 -1
  29. package/dist/cli/plan-local.js +495 -9
  30. package/dist/cli/plan-local.js.map +1 -1
  31. package/dist/cli/skills.d.ts +17 -2
  32. package/dist/cli/skills.d.ts.map +1 -1
  33. package/dist/cli/skills.js +135 -36
  34. package/dist/cli/skills.js.map +1 -1
  35. package/dist/client/AgentChatHome.d.ts +23 -0
  36. package/dist/client/AgentChatHome.d.ts.map +1 -0
  37. package/dist/client/AgentChatHome.js +13 -0
  38. package/dist/client/AgentChatHome.js.map +1 -0
  39. package/dist/client/AgentPanel.d.ts +29 -2
  40. package/dist/client/AgentPanel.d.ts.map +1 -1
  41. package/dist/client/AgentPanel.js +116 -68
  42. package/dist/client/AgentPanel.js.map +1 -1
  43. package/dist/client/AssistantChat.d.ts.map +1 -1
  44. package/dist/client/AssistantChat.js +145 -21
  45. package/dist/client/AssistantChat.js.map +1 -1
  46. package/dist/client/FeedbackButton.d.ts +7 -1
  47. package/dist/client/FeedbackButton.d.ts.map +1 -1
  48. package/dist/client/FeedbackButton.js +13 -3
  49. package/dist/client/FeedbackButton.js.map +1 -1
  50. package/dist/client/MultiTabAssistantChat.d.ts +1 -2
  51. package/dist/client/MultiTabAssistantChat.d.ts.map +1 -1
  52. package/dist/client/MultiTabAssistantChat.js.map +1 -1
  53. package/dist/client/agent-sidebar-state.d.ts +2 -0
  54. package/dist/client/agent-sidebar-state.d.ts.map +1 -1
  55. package/dist/client/agent-sidebar-state.js +15 -4
  56. package/dist/client/agent-sidebar-state.js.map +1 -1
  57. package/dist/client/chat/index.d.ts +7 -0
  58. package/dist/client/chat/index.d.ts.map +1 -1
  59. package/dist/client/chat/index.js +6 -0
  60. package/dist/client/chat/index.js.map +1 -1
  61. package/dist/client/chat/run-recovery.d.ts.map +1 -1
  62. package/dist/client/chat/run-recovery.js +11 -9
  63. package/dist/client/chat/run-recovery.js.map +1 -1
  64. package/dist/client/chat/runtime.d.ts +354 -0
  65. package/dist/client/chat/runtime.d.ts.map +1 -0
  66. package/dist/client/chat/runtime.js +2 -0
  67. package/dist/client/chat/runtime.js.map +1 -0
  68. package/dist/client/chat/tool-call-display.d.ts +5 -1
  69. package/dist/client/chat/tool-call-display.d.ts.map +1 -1
  70. package/dist/client/chat/tool-call-display.js +22 -5
  71. package/dist/client/chat/tool-call-display.js.map +1 -1
  72. package/dist/client/chat/tool-render-registry.d.ts +35 -0
  73. package/dist/client/chat/tool-render-registry.d.ts.map +1 -0
  74. package/dist/client/chat/tool-render-registry.js +83 -0
  75. package/dist/client/chat/tool-render-registry.js.map +1 -0
  76. package/dist/client/chat/widgets/DataChartRenderer.d.ts +5 -0
  77. package/dist/client/chat/widgets/DataChartRenderer.d.ts.map +1 -0
  78. package/dist/client/chat/widgets/DataChartRenderer.js +33 -0
  79. package/dist/client/chat/widgets/DataChartRenderer.js.map +1 -0
  80. package/dist/client/chat/widgets/DataChartWidget.d.ts +5 -0
  81. package/dist/client/chat/widgets/DataChartWidget.d.ts.map +1 -0
  82. package/dist/client/chat/widgets/DataChartWidget.js +15 -0
  83. package/dist/client/chat/widgets/DataChartWidget.js.map +1 -0
  84. package/dist/client/chat/widgets/DataInsightsWidget.d.ts +5 -0
  85. package/dist/client/chat/widgets/DataInsightsWidget.d.ts.map +1 -0
  86. package/dist/client/chat/widgets/DataInsightsWidget.js +18 -0
  87. package/dist/client/chat/widgets/DataInsightsWidget.js.map +1 -0
  88. package/dist/client/chat/widgets/DataTableWidget.d.ts +9 -0
  89. package/dist/client/chat/widgets/DataTableWidget.d.ts.map +1 -0
  90. package/dist/client/chat/widgets/DataTableWidget.js +95 -0
  91. package/dist/client/chat/widgets/DataTableWidget.js.map +1 -0
  92. package/dist/client/chat/widgets/builtin-tool-renderers.d.ts +2 -0
  93. package/dist/client/chat/widgets/builtin-tool-renderers.d.ts.map +1 -0
  94. package/dist/client/chat/widgets/builtin-tool-renderers.js +82 -0
  95. package/dist/client/chat/widgets/builtin-tool-renderers.js.map +1 -0
  96. package/dist/client/chat/widgets/data-widget-types.d.ts +2 -0
  97. package/dist/client/chat/widgets/data-widget-types.d.ts.map +1 -0
  98. package/dist/client/chat/widgets/data-widget-types.js +2 -0
  99. package/dist/client/chat/widgets/data-widget-types.js.map +1 -0
  100. package/dist/client/chat-view-transition.d.ts +35 -0
  101. package/dist/client/chat-view-transition.d.ts.map +1 -0
  102. package/dist/client/chat-view-transition.js +66 -0
  103. package/dist/client/chat-view-transition.js.map +1 -0
  104. package/dist/client/composer/PromptComposer.d.ts +1 -1
  105. package/dist/client/composer/PromptComposer.d.ts.map +1 -1
  106. package/dist/client/composer/PromptComposer.js +2 -2
  107. package/dist/client/composer/PromptComposer.js.map +1 -1
  108. package/dist/client/composer/TiptapComposer.d.ts +2 -1
  109. package/dist/client/composer/TiptapComposer.d.ts.map +1 -1
  110. package/dist/client/composer/TiptapComposer.js +2 -1
  111. package/dist/client/composer/TiptapComposer.js.map +1 -1
  112. package/dist/client/index.d.ts +7 -1
  113. package/dist/client/index.d.ts.map +1 -1
  114. package/dist/client/index.js +6 -1
  115. package/dist/client/index.js.map +1 -1
  116. package/dist/client/route-state.d.ts +6 -0
  117. package/dist/client/route-state.d.ts.map +1 -1
  118. package/dist/client/route-state.js +16 -1
  119. package/dist/client/route-state.js.map +1 -1
  120. package/dist/client/sse-event-processor.d.ts +3 -0
  121. package/dist/client/sse-event-processor.d.ts.map +1 -1
  122. package/dist/client/sse-event-processor.js +2 -0
  123. package/dist/client/sse-event-processor.js.map +1 -1
  124. package/dist/client/use-chat-threads.d.ts.map +1 -1
  125. package/dist/client/use-chat-threads.js +19 -4
  126. package/dist/client/use-chat-threads.js.map +1 -1
  127. package/dist/data-widgets/index.d.ts +326 -0
  128. package/dist/data-widgets/index.d.ts.map +1 -0
  129. package/dist/data-widgets/index.js +232 -0
  130. package/dist/data-widgets/index.js.map +1 -0
  131. package/dist/index.browser.d.ts +2 -0
  132. package/dist/index.browser.d.ts.map +1 -1
  133. package/dist/index.browser.js +2 -0
  134. package/dist/index.browser.js.map +1 -1
  135. package/dist/index.d.ts +2 -0
  136. package/dist/index.d.ts.map +1 -1
  137. package/dist/index.js +2 -0
  138. package/dist/index.js.map +1 -1
  139. package/dist/provider-api/corpus-jobs.d.ts +160 -0
  140. package/dist/provider-api/corpus-jobs.d.ts.map +1 -1
  141. package/dist/provider-api/corpus-jobs.js +44 -0
  142. package/dist/provider-api/corpus-jobs.js.map +1 -1
  143. package/dist/provider-api/index.d.ts +39 -0
  144. package/dist/provider-api/index.d.ts.map +1 -1
  145. package/dist/provider-api/index.js +53 -0
  146. package/dist/provider-api/index.js.map +1 -1
  147. package/dist/scripts/dev/index.d.ts +1 -0
  148. package/dist/scripts/dev/index.d.ts.map +1 -1
  149. package/dist/scripts/dev/index.js +129 -127
  150. package/dist/scripts/dev/index.js.map +1 -1
  151. package/dist/server/action-discovery.d.ts.map +1 -1
  152. package/dist/server/action-discovery.js +5 -0
  153. package/dist/server/action-discovery.js.map +1 -1
  154. package/dist/server/agent-chat-plugin.d.ts +8 -0
  155. package/dist/server/agent-chat-plugin.d.ts.map +1 -1
  156. package/dist/server/agent-chat-plugin.js +34 -21
  157. package/dist/server/agent-chat-plugin.js.map +1 -1
  158. package/dist/server/prompts/framework-core-compact.d.ts +4 -1
  159. package/dist/server/prompts/framework-core-compact.d.ts.map +1 -1
  160. package/dist/server/prompts/framework-core-compact.js +11 -4
  161. package/dist/server/prompts/framework-core-compact.js.map +1 -1
  162. package/dist/server/prompts/framework-core.d.ts +4 -1
  163. package/dist/server/prompts/framework-core.d.ts.map +1 -1
  164. package/dist/server/prompts/framework-core.js +15 -5
  165. package/dist/server/prompts/framework-core.js.map +1 -1
  166. package/dist/server/prompts/shared-rules.d.ts +4 -1
  167. package/dist/server/prompts/shared-rules.d.ts.map +1 -1
  168. package/dist/server/prompts/shared-rules.js +4 -1
  169. package/dist/server/prompts/shared-rules.js.map +1 -1
  170. package/dist/styles/agent-native.css +62 -0
  171. package/dist/vite/client.d.ts.map +1 -1
  172. package/dist/vite/client.js +5 -0
  173. package/dist/vite/client.js.map +1 -1
  174. package/docs/content/actions.md +52 -0
  175. package/docs/content/components.md +24 -1
  176. package/docs/content/drop-in-agent.md +9 -2
  177. package/docs/content/external-agents.md +14 -4
  178. package/docs/content/faq.md +5 -4
  179. package/docs/content/getting-started.md +39 -87
  180. package/docs/content/key-concepts.md +34 -15
  181. package/docs/content/mcp-apps.md +2 -0
  182. package/docs/content/mcp-protocol.md +2 -2
  183. package/docs/content/native-chat-ui.md +210 -0
  184. package/docs/content/template-plan.md +16 -1
  185. package/docs/content/what-is-agent-native.md +10 -2
  186. package/package.json +2 -1
@@ -0,0 +1,210 @@
1
+ ---
2
+ title: "Native Chat UI"
3
+ description: "Action-declared native chat renderers, reusable DataTable/DataChart outputs, and how BYO agent runtimes should connect to Agent-Native chat."
4
+ ---
5
+
6
+ # Native Chat UI
7
+
8
+ Native chat UI is the in-app rendering path for first-party agent output. An
9
+ action returns structured JSON, the chat runtime recognizes an explicit widget
10
+ discriminant, and `<AssistantChat>` renders a real React component in the
11
+ conversation. You do not build an iframe or a one-off HTML artifact for the
12
+ normal app chat.
13
+
14
+ Use native chat UI when the user should inspect output where the agent is
15
+ already speaking: query results, response insights, setup summaries,
16
+ approval/denial controls, or links into app views. Use [MCP Apps](/docs/mcp-apps)
17
+ when an external host such as Claude, ChatGPT, Copilot, or Cursor should render
18
+ an inline route from your app.
19
+
20
+ ## Action-declared widgets {#action-declared-widgets}
21
+
22
+ The native path has two explicit parts:
23
+
24
+ - `outputSchema` validates the action's response shape.
25
+ - `chatUI.renderer` selects the native React renderer for the validated result.
26
+
27
+ The built-in data renderers use a plain JSON result with `widget` plus the
28
+ matching payload:
29
+
30
+ | Widget | Required payload | Renders as |
31
+ | ----------------- | ---------------------------- | ----------------------------------------------- |
32
+ | `"data-table"` | `table` | A native, reusable data table |
33
+ | `"data-chart"` | `chartSeries` | A native bar, line, or area chart |
34
+ | `"data-insights"` | `table` and/or `chartSeries` | A combined insight card with chart/table output |
35
+
36
+ Server actions should import the server-safe helpers and schemas from
37
+ `@agent-native/core/data-widgets`; client code can import the same types from
38
+ `@agent-native/core/client/chat` or `@agent-native/core/client`.
39
+
40
+ ```ts
41
+ import {
42
+ ACTION_CHAT_UI_DATA_INSIGHTS_RENDERER,
43
+ dataInsightsWidgetResultSchema,
44
+ defineAction,
45
+ } from "@agent-native/core";
46
+ import { createDataInsightsWidgetResult } from "@agent-native/core/data-widgets";
47
+
48
+ export default defineAction({
49
+ description: "Analyze form responses.",
50
+ readOnly: true,
51
+ outputSchema: dataInsightsWidgetResultSchema,
52
+ chatUI: {
53
+ renderer: ACTION_CHAT_UI_DATA_INSIGHTS_RENDERER,
54
+ title: "Response insights",
55
+ },
56
+ run: async () =>
57
+ createDataInsightsWidgetResult({
58
+ title: "Response insights",
59
+ display: {
60
+ title: "42 responses",
61
+ description: "Completion rate rose this week.",
62
+ primaryAction: {
63
+ label: "Open response insights",
64
+ href: "/response-insights",
65
+ },
66
+ },
67
+ chartSeries: {
68
+ type: "bar",
69
+ title: "Responses by day",
70
+ xKey: "day",
71
+ series: [{ key: "responses", label: "Responses" }],
72
+ data: [
73
+ { day: "Mon", responses: 8 },
74
+ { day: "Tue", responses: 13 },
75
+ ],
76
+ },
77
+ table: {
78
+ title: "Top answers",
79
+ columns: [
80
+ { key: "answer", label: "Answer" },
81
+ { key: "count", label: "Count", align: "right" },
82
+ ],
83
+ rows: [
84
+ { answer: "Yes", count: 31 },
85
+ { answer: "No", count: 11 },
86
+ ],
87
+ totalRows: 2,
88
+ },
89
+ }),
90
+ });
91
+ ```
92
+
93
+ The renderer only takes over when the action declares `chatUI` or the result has
94
+ an explicit known `widget` discriminant. It never shape-infers arbitrary objects
95
+ and it never executes HTML or JavaScript from tool results.
96
+
97
+ ## DataTable output {#data-table}
98
+
99
+ `table` is intentionally simple so list, SQL, analytics, and setup actions can
100
+ reuse it:
101
+
102
+ ```ts
103
+ {
104
+ title?: string;
105
+ columns: Array<{ key: string; label: string; align?: "left" | "right" }>;
106
+ rows: Array<Record<string, unknown>>;
107
+ totalRows?: number;
108
+ sampledRows?: number;
109
+ truncated?: boolean;
110
+ }
111
+ ```
112
+
113
+ Prefer stable column keys and JSON-safe row values. Use `totalRows`,
114
+ `sampledRows`, and `truncated` when the action is showing a slice of a larger
115
+ result set.
116
+
117
+ ## DataChart output {#data-chart}
118
+
119
+ `chartSeries` supports the common chart shapes used in agent answers without
120
+ requiring each template to ship its own chat renderer:
121
+
122
+ ```ts
123
+ {
124
+ type: "bar" | "line" | "area";
125
+ title?: string;
126
+ xKey: string;
127
+ series: Array<{ key: string; label: string; color?: string }>;
128
+ data: Array<Record<string, unknown>>;
129
+ sampled?: boolean;
130
+ }
131
+ ```
132
+
133
+ Keep chart data compact. For large datasets, aggregate in the action and link
134
+ to the full app view with `display.primaryAction` or action `link` metadata.
135
+
136
+ ## Native widgets vs MCP Apps {#native-vs-mcp-apps}
137
+
138
+ Native chat widgets and MCP Apps are complementary:
139
+
140
+ - **Native widgets** are for the app's own chat runtime. The action result is
141
+ JSON, and the framework renders the built-in React widget.
142
+ - **MCP Apps** are for external hosts. The action declares `mcpApp` and usually
143
+ `link`, and the host renders a real app route inline when supported.
144
+ - **Deep links** remain the universal fallback. Use action `link` or
145
+ `display.primaryAction` so CLI clients, older MCP hosts, and plain transcript
146
+ readers can open the full app view.
147
+
148
+ When both a native widget payload and MCP Apps metadata are present, the in-app
149
+ chat prefers the native widget. External hosts use the MCP Apps resource or the
150
+ deep link fallback.
151
+
152
+ ## Custom native renderers {#custom-native-renderers}
153
+
154
+ Register product-specific components by exact renderer id, then declare that id
155
+ on the action:
156
+
157
+ ```tsx
158
+ import { registerActionChatRenderer } from "@agent-native/core/client/chat";
159
+
160
+ registerActionChatRenderer({
161
+ id: "crm.deal-card",
162
+ renderer: "crm.deal-card",
163
+ Component: ({ context }) => <DealCard result={context.resultJson} />,
164
+ });
165
+ ```
166
+
167
+ ```ts
168
+ export default defineAction({
169
+ description: "Show a deal card.",
170
+ outputSchema: dealCardSchema,
171
+ chatUI: { renderer: "crm.deal-card" },
172
+ run: async () => ({ dealId: "deal_123", amount: 42000 }),
173
+ });
174
+ ```
175
+
176
+ Use this for first-party app UI. Keep cross-host iframe UI in `mcpApp`, and keep
177
+ arbitrary query execution behind typed read actions rather than raw SQL in chat.
178
+
179
+ ## BYO agent runtimes {#byo-agent-runtimes}
180
+
181
+ Agent-Native ships the chat/runtime stack: thread persistence, streaming,
182
+ attachments, tool calls, run recovery, approvals, suggestions, native widgets,
183
+ and SQL-backed app state. In docs, `AgentChatRuntime` refers to that standard
184
+ runtime posture, not a separate package you need to replace.
185
+
186
+ For bring-your-own agent work, keep the action surface and app state as the
187
+ contract:
188
+
189
+ - Use `createAgentChatAdapter()` or the `<AssistantChat createAdapter={...} />`
190
+ prop when you need a custom assistant-ui transport while keeping the standard
191
+ chat runtime.
192
+ - Use `PromptComposer` only when your product owns the full external runtime
193
+ and wants the Agent-Native composer field without the standard transcript.
194
+ - Treat AG-UI as the likely adapter shape for external event-stream runtimes.
195
+ It should adapt into Agent-Native actions, context, and native renderers
196
+ rather than creating a second app API.
197
+ - Treat ACP as coding-agent/editor interoperability. It is useful for IDE
198
+ agents, but it is not the general BYO chat runtime contract for app users.
199
+
200
+ The goal is one operation model: actions, SQL state, context awareness, native
201
+ widgets, MCP Apps, A2A, and MCP all wrap the same app capabilities instead of
202
+ forking behavior per agent surface.
203
+
204
+ ## Related docs {#related-docs}
205
+
206
+ - [Actions](/docs/actions) — define the operations that return native widget data.
207
+ - [Drop-in Agent](/docs/drop-in-agent) — mount the standard chat runtime.
208
+ - [Component API](/docs/components) — custom chat layers and tool renderers.
209
+ - [MCP Apps](/docs/mcp-apps) — inline UI for external MCP hosts.
210
+ - [Key Concepts](/docs/key-concepts#protocols) — protocol status and positioning.
@@ -211,6 +211,7 @@ After writing the folder, the agent starts a tiny localhost bridge and opens the
211
211
  hosted Plan UI against that local-only source:
212
212
 
213
213
  ```bash
214
+ npx @agent-native/core@latest plan local check --dir plans/<slug>
214
215
  npx @agent-native/core@latest plan local serve --dir plans/<slug> --kind plan --open
215
216
  ```
216
217
 
@@ -220,7 +221,21 @@ The page is the normal Plan viewer, but the browser fetches `plan.mdx`,
220
221
  `canvas.mdx`, `prototype.mdx`, `.plan-state.json`, and local image assets from
221
222
  the localhost bridge. Plan content is not written to the hosted database and is
222
223
  not sent through hosted Plan actions. Keep the bridge process running while you
223
- review; the URL is local to your machine and is not a shareable team link.
224
+ review; the URL is local to your machine and is not a shareable team link. The
225
+ serve command writes the open URL to `.plan-url` by default so coding agents can
226
+ capture it without scraping long-running stdout; treat that file as local-only
227
+ because the URL contains the bridge token, and do not commit it.
228
+
229
+ On macOS, `--open` prefers Chrome/Chromium because Safari can block the hosted
230
+ HTTPS Plan page from fetching an HTTP localhost bridge. For headless
231
+ troubleshooting, run:
232
+
233
+ ```bash
234
+ npx @agent-native/core@latest plan local verify --dir plans/<slug> --kind plan
235
+ ```
236
+
237
+ `verify` starts the bridge, checks the private-network preflight and JSON
238
+ payload, prints diagnostics, and exits.
224
239
 
225
240
  If you run the Plan app locally with the same `PLAN_LOCAL_DIR`, you can also
226
241
  open the editable app route:
@@ -11,7 +11,7 @@ If you only remember one thing from this page, remember this: most AI apps today
11
11
 
12
12
  ## What it looks like as a user {#what-it-looks-like}
13
13
 
14
- Picture your inbox, calendar, or analytics dashboard. Now picture an agent panel docked on the right side of that app. You can:
14
+ Picture your inbox, calendar, form builder, or analytics dashboard. Sometimes the first screen is chat: you ask what you want, the agent guides setup, shows a table or chart, and opens the right app view. Sometimes chat is docked on the right side of a full application. In both cases, you can:
15
15
 
16
16
  - **Click anything you'd normally click.** All the buttons, lists, dashboards, keyboard shortcuts — they all still work. This is a real app, not a chat window pretending to be one.
17
17
  - **Or just ask.** Type "reply to the email from Sara saying I'll be there by 3" into the agent. It opens the right thread, drafts the reply, and shows it to you for approval — exactly as if you'd done it by hand.
@@ -63,6 +63,14 @@ Even when the agent does all the heavy lifting, humans still need to:
63
63
 
64
64
  At minimum, "a UI for the agent" is an observability and management dashboard. At maximum, it's a full SaaS app with the agent embedded as a co-pilot. Both ends count as agent-native — see [Pure-Agent Apps](/docs/pure-agent-apps) for the minimal end and [Templates](/docs/cloneable-saas) for the maximal end.
65
65
 
66
+ There are three useful shapes:
67
+
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, approvals, setup cards, and links into app views. See [Native Chat UI](/docs/native-chat-ui).
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
+
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.
73
+
66
74
  ## Why every app benefits from an agent {#why-every-app-benefits-from-an-agent}
67
75
 
68
76
  The flip side is just as important. Existing SaaS products keep hitting the same wall: 80% of what you need works great, and 20% you just can't change. Adding a chat sidebar rarely fixes that — the chat usually can't actually _do_ the things the UI can.
@@ -173,7 +181,7 @@ import { AgentSidebar } from "@agent-native/core/client";
173
181
  <AgentSidebar />;
174
182
  ```
175
183
 
176
- One action, many surfaces: the agent calls it as a tool, the UI calls it as a typesafe mutation, external agents reach it over [A2A](/docs/a2a-protocol), and MCP hosts call it through the app's [MCP server](/docs/mcp-protocol), optionally with MCP Apps UI resources and standard remote MCP OAuth handled by the framework. See [Actions](/docs/actions) for the full reference.
184
+ One action, many surfaces: the agent calls it as a tool, the UI calls it as a typesafe mutation, [native chat](/docs/native-chat-ui) can render explicit widget results, external agents reach it over [A2A](/docs/a2a-protocol), and MCP hosts call it through the app's [MCP server](/docs/mcp-protocol), optionally with MCP Apps UI resources and standard remote MCP OAuth handled by the framework. See [Actions](/docs/actions) for the full reference.
177
185
 
178
186
  ## What's next {#whats-next}
179
187
 
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@agent-native/core",
3
- "version": "0.54.1",
3
+ "version": "0.56.0",
4
4
  "type": "module",
5
5
  "engines": {
6
6
  "node": ">=22"
@@ -37,6 +37,7 @@
37
37
  "./server/design-token-utils": "./dist/server/design-token-utils.js",
38
38
  "./brand-kit": "./dist/brand-kit/index.js",
39
39
  "./brand-kit/fig": "./dist/brand-kit/fig/index.js",
40
+ "./data-widgets": "./dist/data-widgets/index.js",
40
41
  "./agent-web": "./dist/agent-web/index.js",
41
42
  "./db": "./dist/db/index.js",
42
43
  "./db/schema": "./dist/db/schema.js",