@agent-native/core 0.148.0 → 0.149.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 (165) hide show
  1. package/corpus/README.md +1 -1
  2. package/corpus/templates/analytics/changelog/2026-08-10-wide-tables-in-analytics-chat-now-scroll-horizontally-within.md +6 -0
  3. package/corpus/templates/calendar/app/components/calendar/DayView.tsx +13 -53
  4. package/corpus/templates/calendar/app/components/calendar/WeekView.tsx +11 -70
  5. package/corpus/templates/calendar/app/lib/event-layout.ts +122 -0
  6. package/corpus/templates/calendar/app/routes/_app.availability.tsx +1 -1
  7. package/corpus/templates/calendar/changelog/2026-08-10-opening-availability-settings-from-the-agent-lands-on-the-av.md +6 -0
  8. package/corpus/templates/calendar/vitest.config.ts +6 -1
  9. package/corpus/templates/clips/actions/lib/audio-only-transcription.ts +3 -1
  10. package/corpus/templates/clips/app/components/player/video-player.tsx +44 -4
  11. package/corpus/templates/clips/changelog/2026-08-10-fixed-transcription-failures-for-recordings-without-captured.md +6 -0
  12. package/corpus/templates/clips/changelog/2026-08-10-mobile-clips-can-now-enter-fullscreen-on-iphone-safari.md +6 -0
  13. package/corpus/templates/content/actions/_property-utils.ts +11 -1
  14. package/corpus/templates/content/actions/view-screen.ts +62 -12
  15. package/corpus/templates/content/server/plugins/agent-chat.ts +2 -0
  16. package/corpus/templates/design/.agents/skills/design-templates/SKILL.md +22 -0
  17. package/corpus/templates/design/AGENTS.md +3 -0
  18. package/corpus/templates/design/actions/create-design-from-template.ts +19 -0
  19. package/corpus/templates/design/actions/get-design-snapshot.ts +18 -0
  20. package/corpus/templates/design/actions/get-design-template.ts +178 -0
  21. package/corpus/templates/design/actions/list-designs.ts +3 -1
  22. package/corpus/templates/design/actions/view-screen.ts +31 -0
  23. package/corpus/templates/design/app/components/design/MultiScreenCanvas.tsx +225 -214
  24. package/corpus/templates/design/app/components/design/multi-screen/types.ts +3 -0
  25. package/corpus/templates/design/app/i18n-data.ts +78 -0
  26. package/corpus/templates/design/app/lib/design-authors.ts +64 -0
  27. package/corpus/templates/design/app/pages/Index.tsx +114 -4
  28. package/corpus/templates/design/app/pages/design-editor/generation-prompt-directives.ts +1 -0
  29. package/corpus/templates/design/changelog/2026-08-07-alt-dragging-an-element-to-copy-it-now-keeps-the-copy-visibl.md +6 -0
  30. package/corpus/templates/design/changelog/2026-08-07-design-cards-now-show-who-created-each-design-with-a-filter-.md +6 -0
  31. package/corpus/templates/design/changelog/2026-08-07-drawing-a-shape-on-the-overview-canvas-now-keeps-the-shape-s.md +6 -0
  32. package/corpus/templates/design/changelog/2026-08-07-hold-option-alt-while-dragging-a-frame-on-the-overview-canva.md +6 -0
  33. package/corpus/templates/design/server/lib/design-template-data.ts +143 -0
  34. package/corpus/templates/design/server/plugins/agent-chat.ts +1 -0
  35. package/corpus/templates/forms/AGENTS.md +2 -2
  36. package/corpus/templates/forms/actions/create-form.ts +1 -1
  37. package/corpus/templates/forms/actions/update-form.ts +5 -5
  38. package/corpus/templates/forms/changelog/2026-08-10-forms-now-keep-agent-applied-field-changes-visible-after-an-.md +6 -0
  39. package/corpus/templates/forms/changelog/2026-08-10-published-form-links-always-use-the-working-public-form-url.md +6 -0
  40. package/corpus/templates/forms/server/plugins/agent-chat.ts +2 -2
  41. package/corpus/templates/slides/AGENTS.md +4 -3
  42. package/corpus/templates/slides/actions/import-google-slides-reference.ts +56 -10
  43. package/corpus/templates/slides/app/components/editor/EditorSidebar.tsx +12 -74
  44. package/corpus/templates/slides/app/components/editor/GeneratingSlidePreview.tsx +5 -1
  45. package/corpus/templates/slides/app/components/editor/GoogleDriveConnectionCta.tsx +15 -4
  46. package/corpus/templates/slides/app/components/editor/NewDeckReferenceStep.tsx +116 -55
  47. package/corpus/templates/slides/app/components/editor/SlideEditor.tsx +1 -0
  48. package/corpus/templates/slides/app/components/onboarding/FirstDeckOnboardingFlow.tsx +143 -18
  49. package/corpus/templates/slides/app/i18n/en-US.ts +6 -0
  50. package/corpus/templates/slides/app/lib/generation-state.ts +7 -1
  51. package/corpus/templates/slides/app/pages/DeckEditor.tsx +32 -14
  52. package/corpus/templates/slides/app/pages/Index.tsx +110 -128
  53. package/corpus/templates/slides/changelog/2026-08-10-imported-reference-decks-now-show-clear-success-and-stay-sel.md +6 -0
  54. package/corpus/templates/slides/changelog/2026-08-10-pasted-google-slides-links-import-after-reconnecting-google-.md +6 -0
  55. package/corpus/templates/slides/server/handlers/google-docs-auth.ts +4 -0
  56. package/corpus/templates/slides/server/lib/google-docs-oauth.ts +13 -0
  57. package/corpus/templates/slides/server/plugins/agent-chat.ts +1 -1
  58. package/dist/agent/engine/registry.d.ts +8 -2
  59. package/dist/agent/engine/registry.js +63 -29
  60. package/dist/agent/production-agent.js +7 -0
  61. package/dist/agent/run-manager.d.ts +5 -4
  62. package/dist/agent/run-manager.js +6 -5
  63. package/dist/cli/claude-code-participant.d.ts +2 -1
  64. package/dist/cli/claude-code-participant.js +19 -0
  65. package/dist/cli/code-agent-executor.js +223 -0
  66. package/dist/cli/create-workspace.js +3 -3
  67. package/dist/cli/create.d.ts +3 -2
  68. package/dist/cli/create.js +20 -24
  69. package/dist/client/AgentPanel.js +8 -4
  70. package/dist/client/AssistantChat.js +34 -1
  71. package/dist/client/agent-chat-adapter.d.ts +1 -0
  72. package/dist/client/agent-chat-adapter.js +10 -2
  73. package/dist/client/blocks/library/diagram.js +1 -1
  74. package/dist/client/blocks/library/sanitize-html.js +66 -2
  75. package/dist/client/blocks/library/wireframe-kit.js +69 -0
  76. package/dist/client/chat/markdown-renderer.d.ts +1 -0
  77. package/dist/client/chat/markdown-renderer.js +4 -0
  78. package/dist/client/chat/message-components.d.ts +1 -0
  79. package/dist/client/chat/message-components.js +9 -1
  80. package/dist/client/chat/tool-call-display.d.ts +8 -0
  81. package/dist/client/chat/tool-call-display.js +30 -21
  82. package/dist/client/chat-first/app-pane.js +1 -1
  83. package/dist/client/chat-first/apps-rail.d.ts +1 -1
  84. package/dist/client/chat-first/apps-rail.js +12 -12
  85. package/dist/client/chat-first/chat-history.d.ts +1 -1
  86. package/dist/client/chat-first/chat-history.js +2 -0
  87. package/dist/client/chat-first/copy.js +1 -0
  88. package/dist/client/chat-first/primary-nav.js +1 -1
  89. package/dist/client/chat-first/types.d.ts +1 -0
  90. package/dist/client/resources/McpConnectionSuggestion.js +2 -2
  91. package/dist/client/settings/SettingsTabsPage.d.ts +3 -1
  92. package/dist/client/settings/SettingsTabsPage.js +2 -2
  93. package/dist/client/sse-event-processor.d.ts +8 -0
  94. package/dist/client/sse-event-processor.js +13 -6
  95. package/dist/collab/struct-routes.d.ts +1 -1
  96. package/dist/deploy/build.d.ts +5 -7
  97. package/dist/deploy/build.js +19 -12
  98. package/dist/localization/default-messages.js +1 -1
  99. package/dist/observability/routes.d.ts +3 -3
  100. package/dist/provider-api/actions/provider-api.d.ts +2 -2
  101. package/dist/scripts/call-agent.js +3 -3
  102. package/dist/scripts/describe-workspace-apps.js +1 -1
  103. package/dist/secrets/routes.d.ts +6 -6
  104. package/dist/server/agent-capabilities.js +0 -0
  105. package/dist/server/agent-chat/context-tools.js +1 -1
  106. package/dist/server/agent-chat/prompt-resources.js +1 -1
  107. package/dist/server/agent-chat-plugin.js +1 -1
  108. package/dist/server/auth.js +190 -42
  109. package/dist/server/better-auth-migrations.js +53 -0
  110. package/dist/server/http-response-telemetry.js +7 -1
  111. package/dist/server/onboarding-html.js +119 -33
  112. package/dist/server/transcribe-voice.d.ts +1 -1
  113. package/dist/shared/password-policy.d.ts +2 -1
  114. package/dist/shared/password-policy.js +2 -1
  115. package/dist/styles/agent-conversation.css +20 -3
  116. package/dist/styles/agent-native.css +14 -2
  117. package/dist/styles/blocks.css +132 -0
  118. package/dist/templates/default/app/i18n/ar-SA.ts +1 -1
  119. package/dist/templates/default/app/i18n/de-DE.ts +1 -1
  120. package/dist/templates/default/app/i18n/en-US.ts +1 -1
  121. package/dist/templates/default/app/i18n/es-ES.ts +1 -1
  122. package/dist/templates/default/app/i18n/fr-FR.ts +1 -1
  123. package/dist/templates/default/app/i18n/hi-IN.ts +1 -1
  124. package/dist/templates/default/app/i18n/ja-JP.ts +1 -1
  125. package/dist/templates/default/app/i18n/ko-KR.ts +1 -1
  126. package/dist/templates/default/app/i18n/pt-BR.ts +1 -1
  127. package/dist/templates/default/app/i18n/zh-CN.ts +1 -1
  128. package/dist/templates/default/app/i18n/zh-TW.ts +1 -1
  129. package/dist/templates/default/pnpm-workspace.yaml +1 -0
  130. package/dist/templates/workspace-root/pnpm-workspace.yaml +2 -0
  131. package/docs/content/actions.mdx +4 -1
  132. package/docs/content/agent-surfaces.mdx +8 -6
  133. package/docs/content/automations.mdx +1 -1
  134. package/docs/content/cloneable-saas.mdx +6 -6
  135. package/docs/content/database.mdx +6 -1
  136. package/docs/content/deployment.mdx +10 -8
  137. package/docs/content/docs-components.mdx +22 -14
  138. package/docs/content/drop-in-agent.mdx +1 -1
  139. package/docs/content/environment-variables.mdx +4 -3
  140. package/docs/content/getting-started-actions.mdx +5 -4
  141. package/docs/content/getting-started-pages.mdx +7 -6
  142. package/docs/content/getting-started.mdx +4 -3
  143. package/docs/content/notifications.mdx +6 -6
  144. package/docs/content/progress.mdx +5 -5
  145. package/docs/content/routing.mdx +3 -1
  146. package/docs/content/server-database.mdx +13 -4
  147. package/docs/content/server-overview.mdx +9 -9
  148. package/docs/content/server-plugins.mdx +10 -4
  149. package/docs/content/server-routes.mdx +7 -2
  150. package/docs/content/tracking.mdx +4 -4
  151. package/docs/content/what-is-agent-native.mdx +4 -4
  152. package/package.json +2 -2
  153. package/src/templates/default/app/i18n/ar-SA.ts +1 -1
  154. package/src/templates/default/app/i18n/de-DE.ts +1 -1
  155. package/src/templates/default/app/i18n/en-US.ts +1 -1
  156. package/src/templates/default/app/i18n/es-ES.ts +1 -1
  157. package/src/templates/default/app/i18n/fr-FR.ts +1 -1
  158. package/src/templates/default/app/i18n/hi-IN.ts +1 -1
  159. package/src/templates/default/app/i18n/ja-JP.ts +1 -1
  160. package/src/templates/default/app/i18n/ko-KR.ts +1 -1
  161. package/src/templates/default/app/i18n/pt-BR.ts +1 -1
  162. package/src/templates/default/app/i18n/zh-CN.ts +1 -1
  163. package/src/templates/default/app/i18n/zh-TW.ts +1 -1
  164. package/src/templates/default/pnpm-workspace.yaml +1 -0
  165. package/src/templates/workspace-root/pnpm-workspace.yaml +2 -0
@@ -85,7 +85,7 @@ The `server/` directory is the infrastructure layer of an agent-native app. It h
85
85
 
86
86
  ## Where the Server Fits {#role}
87
87
 
88
- In a traditional web app, the server is where most logic lives. Business rules, data access, and presentation all happen inside route handlers. Agent-native apps work differently. Logic lives in actions, which the agent and UI share as equal partners. The server's job is coordination: run database migrations, configure authentication, mount the agent loop, and handle the narrow set of HTTP concerns that actions can't express on their own.
88
+ In a traditional web app, the server is where most logic lives. Business rules, data access, and presentation all happen inside route handlers. Agent-native apps work differently. Logic lives in actions, which the agent and UI share as equal partners. The server's job is coordination: apply app-owned database migrations, configure authentication, mount the agent loop, and handle the narrow set of HTTP concerns that actions can't express on their own.
89
89
 
90
90
  <Diagram id="doc-block-server-overview-2" title="Traditional server vs. Agent Native">
91
91
 
@@ -194,19 +194,19 @@ Browser requests, the agent loop, and external API clients all route through the
194
194
 
195
195
  These are the directories and files inside `server/` that every agent-native app ships. Each corresponds to a specific piece of the server layer: what it does, when to reach for it, and how it connects to the rest of the framework.
196
196
 
197
- | Page | What it covers |
198
- | ----------------------------------------- | ----------------------------------------------------------------------------------- |
199
- | **[Database](/docs/server-database)** | Schema definition with `table()` helpers, `getDb`, and ownable table patterns |
200
- | **[Middleware](/docs/server-middleware)** | Auth guards in `server/middleware/` and why they run there instead of in a plugin |
201
- | **[Plugins](/docs/server-plugins)** | The three startup plugins every app ships: db migrations, auth, and agent-chat |
202
- | **[Routes](/docs/server-routes)** | File-based routes, the SSR catch-all, and scoping custom routes to the request user |
197
+ | Page | What it covers |
198
+ | ----------------------------------------- | ------------------------------------------------------------------------------------ |
199
+ | **[Database](/docs/server-database)** | Schema definition with `table()` helpers, `getDb`, and ownable table patterns |
200
+ | **[Middleware](/docs/server-middleware)** | Auth guards in `server/middleware/` and why they run there instead of in a plugin |
201
+ | **[Plugins](/docs/server-plugins)** | Startup plugins for auth and agent-chat, plus optional app-owned database migrations |
202
+ | **[Routes](/docs/server-routes)** | File-based routes, the SSR catch-all, and scoping custom routes to the request user |
203
203
 
204
204
  ## Nitro {#nitro}
205
205
 
206
206
  [Nitro](https://nitro.build) is the server toolkit that powers the agent-native HTTP layer. Most of what you'll configure in `server/` is Nitro: file-based routes, startup plugins, and middleware.
207
207
 
208
208
  - **File-based routing**: the filename maps directly to an HTTP method and URL path, with no registration needed. `server/routes/api/health.get.ts` becomes `GET /api/health` automatically. Visit [Routes](/docs/server-routes) for more details.
209
- - **Plugins**: code that runs once at server startup, before any request is served. Database migrations, auth configuration, and the agent-chat mount all happen in `server/plugins/`. Visit [Plugins](/docs/server-plugins) for more details.
209
+ - **Plugins**: code registered at server startup and loaded once. Framework helpers initialize auth and the agent-chat mount; optional app-owned database migrations may still be running when the first request arrives. Visit [Plugins](/docs/server-plugins) for more details.
210
210
  - **Middleware**: code that runs on every incoming request before it reaches a route. The auth guard lives in `server/middleware/`. Visit [Middleware](/docs/server-middleware) for more details.
211
211
 
212
212
  Nitro is also deployment-agnostic. The same app deploys to Node.js, Cloudflare Workers, Netlify, Vercel, and other runtimes with no code changes. Just set a preset. See [Deployment](/docs/deployment).
@@ -230,5 +230,5 @@ Use custom `/api/*` routes only when you need a route-shaped protocol or binary/
230
230
  - [**Actions**](/docs/actions): the default operation surface. Reach for a custom route only when it doesn't fit.
231
231
  - [**Database**](/docs/server-database): the `getDb()`/schema pattern custom routes and actions both import
232
232
  - [**Middleware**](/docs/server-middleware): auth guards and the `server/middleware/` directory
233
- - [**Plugins**](/docs/server-plugins): startup plugins for migrations, auth, and the agent
233
+ - [**Plugins**](/docs/server-plugins): startup plugins for auth, the agent, and optional app-owned migrations
234
234
  - [**Routes**](/docs/server-routes): file-based routes, request context, and the SSR catch-all
@@ -5,7 +5,7 @@ description: "Startup plugins in server/plugins/ — what they are, the two plug
5
5
 
6
6
  # Plugins
7
7
 
8
- Plugins are startup hooks. Each file in `server/plugins/` exports a function that Nitro calls once when the server initializes, before any route is served. They are the right place for one-time setup: configuring auth, mounting the agent loop, running database migrations, or registering any other initialization code that needs to complete before requests arrive.
8
+ Plugins are startup hooks. Nitro loads each file in `server/plugins/` once when the server initializes. They are the right place for one-time setup: configuring auth, mounting the agent loop, running database migrations, or registering other initialization code. Framework helpers coordinate their async setup; custom plugin work may still be in flight when the first request arrives.
9
9
 
10
10
  Nitro discovers plugins automatically from the filesystem. No registration or imports are required. Files run in alphabetical order, so execution order is controlled by filename prefix.
11
11
 
@@ -21,7 +21,7 @@ Apps that need custom database tables add a third:
21
21
 
22
22
  ```text
23
23
  server/plugins/
24
- db.ts -> run migrations on startup
24
+ db.ts -> register app-owned migrations for local startup
25
25
  ```
26
26
 
27
27
  ## Auth Plugin {#auth-plugin}
@@ -80,7 +80,7 @@ screen when context matters.`,
80
80
 
81
81
  ## Database Plugin {#database-plugin}
82
82
 
83
- If your app defines custom database tables, add `server/plugins/db.ts` to run schema migrations at startup. It uses `runMigrations` from `@agent-native/core/db`:
83
+ If your app defines custom database tables, add `server/plugins/db.ts` to register schema migrations for local startup. It uses `runMigrations` from `@agent-native/core/db`:
84
84
 
85
85
  ```ts filename="server/plugins/db.ts"
86
86
  import { runMigrations } from "@agent-native/core/db";
@@ -110,6 +110,12 @@ Each entry needs a `version` number and a `sql` string. Give it a stable `name`
110
110
  TABLE ... DROP COLUMN`, `DELETE FROM`) in startup plugins.
111
111
  </Callout>
112
112
 
113
+ <Callout tone="warning">
114
+ For production or serverless deployments, run migrations in a release or
115
+ deploy step instead of on the first request. The Chat template provides `pnpm
116
+ migrate:production` for this.
117
+ </Callout>
118
+
113
119
  ## Writing Custom Plugins {#custom-plugins}
114
120
 
115
121
  The framework helpers (`createAuthPlugin`, `createAgentChatPlugin`, `runMigrations`) each return a Nitro plugin function. For anything outside those helpers, write a plugin using `defineNitroPlugin`:
@@ -142,6 +148,6 @@ If you add custom plugins, prefix their filenames to control invocation order, b
142
148
 
143
149
  - [**Database**](/docs/server-database): schema helpers and the `getDb` pattern used inside plugins
144
150
  - [**Middleware**](/docs/server-middleware): the auth guard that enforces what the auth plugin configures
145
- - [**Routes**](/docs/server-routes): custom file routes served after plugins complete
151
+ - [**Routes**](/docs/server-routes): custom file routes and when to use them
146
152
  - [**Writing Agent Instructions**](/docs/writing-agent-instructions): how to craft the `systemPrompt` in the agent-chat plugin
147
153
  - [**Nitro plugin docs**](https://nitro.build/guide/plugins): the full plugin API and lifecycle hooks
@@ -77,7 +77,12 @@ export default defineEventHandler(async (event) => {
77
77
  }
78
78
 
79
79
  const expected = createHmac("sha256", secret).update(rawBody).digest("hex");
80
- if (!timingSafeEqual(Buffer.from(signature), Buffer.from(expected))) {
80
+ const signatureBytes = Buffer.from(signature, "utf8");
81
+ const expectedBytes = Buffer.from(expected, "utf8");
82
+ if (
83
+ signatureBytes.length !== expectedBytes.length ||
84
+ !timingSafeEqual(signatureBytes, expectedBytes)
85
+ ) {
81
86
  throw createError({ statusCode: 401, statusMessage: "Invalid signature" });
82
87
  }
83
88
 
@@ -189,6 +194,6 @@ Every SSR response is an impersonal, public shell cached at the CDN. Never read
189
194
  ## What's next {#whats-next}
190
195
 
191
196
  - [**Actions**](/docs/actions): the preferred surface for app operations; reach for a route only when it doesn't fit
192
- - [**Plugins**](/docs/server-plugins): startup plugins that run before routes are served
197
+ - [**Plugins**](/docs/server-plugins): startup plugins and their initialization behavior
193
198
  - [**Middleware**](/docs/server-middleware): auth guards that protect all routes including `/api/*`
194
199
  - [**Security**](/docs/security#access-guards): `accessFilter`/`assertAccess` and the full data-scoping model
@@ -15,7 +15,7 @@ import { track } from "@agent-native/core/tracking";
15
15
  track(
16
16
  "order.completed",
17
17
  { total: 49.99, items: 3 },
18
- { userId: "steve@builder.io" },
18
+ { userId: "user@example.com" },
19
19
  );
20
20
  ```
21
21
 
@@ -126,7 +126,7 @@ import { track } from "@agent-native/core/tracking";
126
126
  track(
127
127
  "meal.logged",
128
128
  { mealName: "Salad", calories: 350 },
129
- { userId: "steve@builder.io" },
129
+ { userId: "user@example.com" },
130
130
  );
131
131
  ```
132
132
 
@@ -150,7 +150,7 @@ Identify a user with traits. Forwarded to providers that support it (PostHog, Mi
150
150
  ```ts
151
151
  import { identify } from "@agent-native/core/tracking";
152
152
 
153
- identify("steve@builder.io", { plan: "pro", company: "Builder.io" });
153
+ identify("user@example.com", { plan: "pro", company: "Builder.io" });
154
154
  ```
155
155
 
156
156
  Need a custom backend, the provider-registry API, or the batching/singleton internals? See [Advanced: custom providers & internals](#advanced) at the end.
@@ -391,5 +391,5 @@ The framework also tracks `builder connect clicked` from Connect Builder CTAs, a
391
391
  ## What's next
392
392
 
393
393
  - [**Actions**](/docs/actions) — where most tracking calls originate
394
- - [**Server Plugins**](/docs/server#server-plugins) — `registerBuiltinProviders()` runs in the core-routes plugin at startup
394
+ - [**Server Plugins**](/docs/server-plugins) — `registerBuiltinProviders()` runs in the core-routes plugin at startup
395
395
  - [**Security — Secrets Management**](/docs/security#secrets) — manage API keys for tracking providers
@@ -39,7 +39,7 @@ The UI updates in real time as the agent opens views, edits drafts, and runs rep
39
39
 
40
40
  ### Steer it like a teammate
41
41
 
42
- Give feedback, queue tasks, audit what it did, edit its instructions. It remembers, and it improves.
42
+ Give feedback, queue tasks, audit what it did, and edit its instructions.
43
43
 
44
44
  </Cards>
45
45
 
@@ -93,7 +93,7 @@ graph TD
93
93
  DB --> AG_OUT
94
94
  ```
95
95
 
96
- The diagram above shows what this looks like at runtime: both the user and the agent submit actions to the same layer, which writes to the same database and broadcasts updates back to both surfaces. When the agent creates a draft email, it appears in your inbox immediately. When you click Send, the agent knows it was sent. See [Key Concepts](/docs/key-concepts) for the full architecture.
96
+ The diagram above shows what this looks like at runtime: both the user and the agent submit actions to the same layer, which writes to the same database and sends updates back to both surfaces. When the agent creates a draft email, it appears in your inbox immediately. When you click Send, the agent knows it was sent. See [Key Concepts](/docs/key-concepts) for the full architecture.
97
97
 
98
98
  ## Why agents need a UI — and apps need an agent {#why-both}
99
99
 
@@ -211,7 +211,7 @@ Browse [agent-native.com/templates](/templates) and pick the one closest to what
211
211
 
212
212
  ### Use it immediately
213
213
 
214
- Every template deploys as a hosted app (e.g. `mail.agent-native.com`). Try it before you touch any code.
214
+ Many first-party templates are available as hosted apps (e.g. `mail.agent-native.com`). Try one before you touch any code.
215
215
 
216
216
  ### Clone and customize
217
217
 
@@ -235,7 +235,7 @@ Agent-native apps can talk to each other. From inside the mail app, you can tag
235
235
 
236
236
  ### [Getting Started](/docs/getting-started)
237
237
 
238
- Build a working chat app in under five minutes, then add actions, a database, and a page.
238
+ Build a working chat app in under five minutes, then add an action and a page. Add your own database tables when you need to persist domain data.
239
239
 
240
240
  ### [Key Concepts](/docs/key-concepts)
241
241
 
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@agent-native/core",
3
- "version": "0.148.0",
3
+ "version": "0.149.0",
4
4
  "description": "Framework for agent-native application development — where AI agents and UI share SQL state, actions, and context",
5
5
  "homepage": "https://github.com/BuilderIO/agent-native#readme",
6
6
  "bugs": {
@@ -414,7 +414,7 @@
414
414
  "yjs": "^13.6.31",
415
415
  "zod": "^4.3.6",
416
416
  "@agent-native/recap-cli": "0.5.4",
417
- "@agent-native/toolkit": "^0.13.7"
417
+ "@agent-native/toolkit": "^0.13.8"
418
418
  },
419
419
  "devDependencies": {
420
420
  "@ai-sdk/anthropic": "^3.0.71",
@@ -232,7 +232,7 @@ const messages = {
232
232
  newTerminal: "محطة جديدة",
233
233
  panelOptions: "خيارات لوحة الوكيل",
234
234
  collapseSidebar: "طي الشريط الجانبي",
235
- widenChat: "توسيع الدردشة إلى 75٪",
235
+ widenChat: "توسيع الدردشة",
236
236
  returnChatToLayout: "إعادة الدردشة إلى تخطيط الصفحة",
237
237
  hideChats: "إخفاء الدردشات",
238
238
  allChats: "جميع الدردشات",
@@ -234,7 +234,7 @@ const messages = {
234
234
  newTerminal: "Neues Terminal",
235
235
  panelOptions: "Optionen im Agentenpanel",
236
236
  collapseSidebar: "Seitenleiste einklappen",
237
- widenChat: "Chat auf 75 % verbreitern",
237
+ widenChat: "Chat verbreitern",
238
238
  returnChatToLayout: "Chat zurück ins Layout",
239
239
  hideChats: "Chats ausblenden",
240
240
  allChats: "Alle Chats",
@@ -229,7 +229,7 @@ const messages = {
229
229
  newTerminal: "New terminal",
230
230
  panelOptions: "Agent panel options",
231
231
  collapseSidebar: "Collapse sidebar",
232
- widenChat: "Widen chat to 75%",
232
+ widenChat: "Widen chat",
233
233
  returnChatToLayout: "Return chat to layout",
234
234
  hideChats: "Hide chats",
235
235
  allChats: "All chats",
@@ -235,7 +235,7 @@ const messages = {
235
235
  newTerminal: "Nueva terminal",
236
236
  panelOptions: "Opciones del panel de agentes",
237
237
  collapseSidebar: "Contraer barra lateral",
238
- widenChat: "Ampliar el chat al 75 %",
238
+ widenChat: "Ampliar el chat",
239
239
  returnChatToLayout: "Devolver el chat al diseño",
240
240
  hideChats: "Ocultar chats",
241
241
  allChats: "Todos los chats",
@@ -236,7 +236,7 @@ const messages = {
236
236
  newTerminal: "Nouvelle borne",
237
237
  panelOptions: "Options du panneau d'agent",
238
238
  collapseSidebar: "Réduire la barre latérale",
239
- widenChat: "Élargir le chat à 75 %",
239
+ widenChat: "Élargir le chat",
240
240
  returnChatToLayout: "Remettre le chat dans la mise en page",
241
241
  hideChats: "Masquer les discussions",
242
242
  allChats: "Toutes les discussions",
@@ -221,7 +221,7 @@ const messages = {
221
221
  newTerminal: "नया टर्मिनल",
222
222
  panelOptions: "एजेंट पैनल विकल्प",
223
223
  collapseSidebar: "साइडबार समेटें",
224
- widenChat: "चैट को 75% चौड़ा करें",
224
+ widenChat: "चैट को चौड़ा करें",
225
225
  returnChatToLayout: "चैट को लेआउट में वापस लाएँ",
226
226
  hideChats: "चैट छुपाएं",
227
227
  allChats: "सभी चैट",
@@ -230,7 +230,7 @@ const messages = {
230
230
  newTerminal: "新しいターミナル",
231
231
  panelOptions: "エージェントパネルのオプション",
232
232
  collapseSidebar: "サイドバーを折りたたむ",
233
- widenChat: "チャットを75%に広げる",
233
+ widenChat: "チャットを広げる",
234
234
  returnChatToLayout: "チャットをレイアウトに戻す",
235
235
  hideChats: "チャットを非表示にする",
236
236
  allChats: "すべてのチャット",
@@ -225,7 +225,7 @@ const messages = {
225
225
  newTerminal: "새로운 터미널",
226
226
  panelOptions: "상담원 패널 옵션",
227
227
  collapseSidebar: "사이드바 접기",
228
- widenChat: "채팅을 75% 너비로 넓히기",
228
+ widenChat: "채팅 넓히기",
229
229
  returnChatToLayout: "채팅을 레이아웃으로 되돌리기",
230
230
  hideChats: "채팅 숨기기",
231
231
  allChats: "모든 채팅",
@@ -234,7 +234,7 @@ const messages = {
234
234
  newTerminal: "Novo terminal",
235
235
  panelOptions: "Opções do painel do agente",
236
236
  collapseSidebar: "Recolher barra lateral",
237
- widenChat: "Ampliar o chat para 75%",
237
+ widenChat: "Ampliar o chat",
238
238
  returnChatToLayout: "Retornar o chat ao layout",
239
239
  hideChats: "Ocultar bate-papos",
240
240
  allChats: "Todos os bate-papos",
@@ -219,7 +219,7 @@ const messages = {
219
219
  newTerminal: "新航站楼",
220
220
  panelOptions: "代理面板选项",
221
221
  collapseSidebar: "收起侧边栏",
222
- widenChat: "将聊天窗口加宽到 75%",
222
+ widenChat: "加宽聊天窗口",
223
223
  returnChatToLayout: "将聊天窗口恢复到布局中",
224
224
  hideChats: "隐藏聊天记录",
225
225
  allChats: "所有聊天记录",
@@ -217,7 +217,7 @@ const messages = {
217
217
  newTerminal: "新航站樓",
218
218
  panelOptions: "代理面板選項",
219
219
  collapseSidebar: "收起側邊欄",
220
- widenChat: "將聊天視窗加寬至 75%",
220
+ widenChat: "將聊天視窗加寬",
221
221
  returnChatToLayout: "將聊天視窗放回版面配置",
222
222
  hideChats: "隱藏聊天紀錄",
223
223
  allChats: "所有聊天紀錄",
@@ -6,3 +6,4 @@ overrides:
6
6
  allowBuilds:
7
7
  better-sqlite3: true
8
8
  esbuild: true
9
+ tesseract.js: true
@@ -24,6 +24,7 @@ onlyBuiltDependencies:
24
24
  - esbuild
25
25
  - lightningcss
26
26
  - node-pty
27
+ - tesseract.js
27
28
 
28
29
  allowBuilds:
29
30
  "@swc/core": true
@@ -33,3 +34,4 @@ allowBuilds:
33
34
  esbuild: true
34
35
  lightningcss: true
35
36
  node-pty: true
37
+ tesseract.js: true