@agent-native/core 0.227.0-nightly-20261110032437 → 0.227.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/dist/agent/default-agent-engine.d.ts +1 -0
- package/dist/agent/default-agent-engine.js +6 -3
- package/dist/agent/engine/builder-engine.js +10 -6
- package/dist/agent/engine/chat-model-availability.d.ts +9 -0
- package/dist/agent/engine/chat-model-availability.js +39 -0
- package/dist/agent/optional-placeholders.d.ts +1 -0
- package/dist/agent/optional-placeholders.js +3 -0
- package/dist/cli/create.js +0 -49
- package/dist/cli/index.js +1 -1
- package/dist/cli/react-router-command.js +13 -7
- package/dist/client/chat/agentkit-protocol.js +259 -200
- package/dist/client/chat/run-outcome.d.ts +48 -0
- package/dist/client/chat/run-outcome.js +50 -0
- package/dist/collab/routes.d.ts +1 -1
- package/dist/collab/struct-routes.d.ts +1 -1
- package/dist/deploy/build.d.ts +1 -0
- package/dist/deploy/build.js +30 -1
- package/dist/framework-package-versions.json +11 -11
- package/dist/jobs/run-now.js +9 -1
- package/dist/notifications/routes.d.ts +3 -3
- package/dist/org/index.d.ts +1 -1
- package/dist/org/migrations.d.ts +1 -1
- package/dist/provider-api/actions/provider-api.d.ts +1 -1
- package/dist/resources/handlers.d.ts +1 -1
- package/dist/scripts/agent-engines/list-agent-engines.js +9 -5
- package/dist/server/auth.d.ts +3 -1
- package/dist/server/auth.js +29 -9
- package/dist/server/builder-signup-experiment.d.ts +89 -42
- package/dist/server/builder-signup-experiment.js +36 -14
- package/dist/server/core-routes-plugin.js +5 -3
- package/dist/server/index.d.ts +2 -1
- package/dist/server/index.js +2 -1
- package/dist/server/onboarding-html.d.ts +2 -0
- package/dist/server/onboarding-html.js +9 -5
- package/dist/server/release-migrations.d.ts +3 -1
- package/dist/server/release-migrations.js +8 -6
- package/dist/shared/mcp-embed-headers.js +8 -2
- package/dist/templates/builder-code-starter/AGENTS.md.patch +1 -1
- package/dist/templates/builder-code-starter/server/plugins/auth.ts.patch +2 -1
- package/dist/templates/chat/AGENTS.md +1 -1
- package/dist/templates/chat/app/components/layout/Sidebar.tsx +1 -1
- package/dist/templates/chat/scripts/migrate-production.ts +1 -1
- package/dist/templates/chat/server/plugins/auth.ts +1 -0
- package/dist/templates/default/pnpm-workspace.yaml +0 -41
- package/dist/templates/default/scripts/migrate-production.ts +1 -1
- package/dist/templates/workspace-root/pnpm-workspace.yaml +0 -41
- package/dist/tracking/providers.js +20 -8
- package/dist/triggers/actions/list-automations.js +7 -1
- package/docs/content/agent-web-surfaces.mdx +54 -42
- package/docs/content/authentication.mdx +14 -0
- package/docs/content/client-agent-chat.mdx +2 -0
- package/docs/content/client-routing.mdx +2 -0
- package/docs/content/create-with-an-agent.mdx +1 -1
- package/docs/content/environment-variables.mdx +2 -0
- package/docs/content/extensions.mdx +8 -9
- package/docs/content/external-agents.mdx +8 -0
- package/docs/content/upgrading-core-ui.mdx +2 -0
- package/docs/content/vercel.mdx +2 -0
- package/package.json +4 -4
- package/src/templates/builder-code-starter/AGENTS.md.patch +1 -1
- package/src/templates/builder-code-starter/server/plugins/auth.ts.patch +2 -1
- package/src/templates/chat/AGENTS.md +1 -1
- package/src/templates/chat/app/components/layout/Sidebar.tsx +1 -1
- package/src/templates/chat/scripts/migrate-production.ts +1 -1
- package/src/templates/chat/server/plugins/auth.ts +1 -0
- package/src/templates/default/pnpm-workspace.yaml +0 -41
- package/src/templates/default/scripts/migrate-production.ts +1 -1
- package/src/templates/workspace-root/pnpm-workspace.yaml +0 -41
|
@@ -17,7 +17,7 @@ The docs site is the reference implementation. Today it ships:
|
|
|
17
17
|
- JSON-LD for base organization, website, and page metadata.
|
|
18
18
|
- An audit CLI (`npx @agent-native/core@latest audit-agent-web`) that checks all of the above.
|
|
19
19
|
|
|
20
|
-
|
|
20
|
+
Publishing these files never exposes an action. An action reaches external agents only through its own `publicAgent` opt-in; see [Expose to public agents](/docs/actions-access-control#public-agent).
|
|
21
21
|
|
|
22
22
|
<Diagram id="doc-block-1guzidr" title="What a public route publishes" summary={"A public route fans out into agent-friendly representations. Reading the route is separate from calling tools — tool access stays opt-in."}>
|
|
23
23
|
|
|
@@ -25,7 +25,7 @@ Setting `publicMcp: true` additionally exposes opted-in actions as a public MCP
|
|
|
25
25
|
<div class="diagram-web">
|
|
26
26
|
<div class="diagram-box" data-rough>
|
|
27
27
|
Public route<br /><small class="diagram-muted"
|
|
28
|
-
>
|
|
28
|
+
>from the page list you pass</small
|
|
29
29
|
>
|
|
30
30
|
</div>
|
|
31
31
|
<div class="diagram-arrow diagram-muted" aria-hidden="true">→</div>
|
|
@@ -40,9 +40,7 @@ Setting `publicMcp: true` additionally exposes opted-in actions as a public MCP
|
|
|
40
40
|
<div class="diagram-arrow diagram-muted" aria-hidden="true">→</div>
|
|
41
41
|
<div class="diagram-col gate">
|
|
42
42
|
<span class="diagram-pill warn">Tools stay private</span
|
|
43
|
-
><small class="diagram-muted"
|
|
44
|
-
>publicMcp + publicAgent.expose required</small
|
|
45
|
-
>
|
|
43
|
+
><small class="diagram-muted">publicAgent.expose required</small>
|
|
46
44
|
</div>
|
|
47
45
|
</div>
|
|
48
46
|
```
|
|
@@ -75,45 +73,57 @@ Setting `publicMcp: true` additionally exposes opted-in actions as a public MCP
|
|
|
75
73
|
|
|
76
74
|
## Configuration {#config}
|
|
77
75
|
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
```
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
|
|
90
|
-
|
|
91
|
-
|
|
92
|
-
|
|
93
|
-
|
|
94
|
-
|
|
95
|
-
|
|
96
|
-
|
|
97
|
-
|
|
98
|
-
|
|
99
|
-
|
|
100
|
-
|
|
101
|
-
|
|
102
|
-
|
|
103
|
-
}
|
|
104
|
-
}
|
|
76
|
+
`createAgentWebVitePlugin` from `@agent-native/core/vite` writes these files during a production build. Add it to your Vite config with the pages agents should read:
|
|
77
|
+
|
|
78
|
+
```ts
|
|
79
|
+
// vite.config.ts
|
|
80
|
+
import { defineConfig } from "vite";
|
|
81
|
+
import { createAgentWebVitePlugin } from "@agent-native/core/vite";
|
|
82
|
+
|
|
83
|
+
export default defineConfig({
|
|
84
|
+
plugins: [
|
|
85
|
+
// ...your existing plugins
|
|
86
|
+
createAgentWebVitePlugin({
|
|
87
|
+
siteName: "My Agent-Native App",
|
|
88
|
+
siteUrl: "https://example.com",
|
|
89
|
+
pages: [
|
|
90
|
+
{
|
|
91
|
+
path: "/pricing",
|
|
92
|
+
title: "Pricing",
|
|
93
|
+
description: "Plans and limits.",
|
|
94
|
+
markdown: "Plans and limits.\n",
|
|
95
|
+
},
|
|
96
|
+
],
|
|
97
|
+
agentWeb: { crawlerPolicy: "discoverable-no-training" },
|
|
98
|
+
}),
|
|
99
|
+
],
|
|
100
|
+
});
|
|
105
101
|
```
|
|
106
102
|
|
|
107
|
-
|
|
103
|
+
The plugin publishes the pages you list and nothing else. It doesn't read your route access settings, and it doesn't read `agentWeb` from `package.json` unless you pass it in. To keep the settings in `package.json` under `agent-native.workspaceApp.agentWeb`, pass `agentWeb: agentWebConfigFromPackageJson(pkg)`, imported from `@agent-native/core/agent-web`.
|
|
104
|
+
|
|
105
|
+
| Option | Default | What it does |
|
|
106
|
+
| --------------- | ---------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------ |
|
|
107
|
+
| `discoverable` | On when `pages` isn't empty | `false` writes no files. |
|
|
108
|
+
| `llmsTxt` | `true` | Writes `/llms.txt` and `/llms-full.txt`. |
|
|
109
|
+
| `markdownTwins` | `true` | Writes a `.md` copy of each page that has `markdown`. |
|
|
110
|
+
| `crawlerPolicy` | `"discoverable-no-training"` | Sets the `robots.txt` rules: `"discoverable-no-training"`, `"allow-all"`, or `"disallow-all"`. |
|
|
111
|
+
| `crawlers` | None | Overrides individual crawler categories: `training`, `search`, `userTriggered`, `codingAgents`, or `autonomousAgents`, each `"allow"` or `"disallow"`. |
|
|
112
|
+
|
|
113
|
+
The default crawler policy is "discoverable, not trainable": search, user-triggered retrieval, coding agents, and autonomous browsing agents are allowed; training crawlers are disallowed.
|
|
114
|
+
|
|
115
|
+
`jsonLd`, `publicAgentCard`, and `publicMcp` are accepted, but nothing reads them yet. For JSON-LD, render `buildBaseJsonLd` and `buildPageJsonLd` from `@agent-native/core/agent-web` into your pages yourself.
|
|
108
116
|
|
|
109
117
|
## Route source of truth {#route-source}
|
|
110
118
|
|
|
111
|
-
|
|
119
|
+
The page list is the source of truth: agents get the pages you pass, and only those. Build it from pages that are already public:
|
|
120
|
+
|
|
121
|
+
- In a public app, every route except `protectedPaths`.
|
|
122
|
+
- In an internal app, only `publicPaths`.
|
|
123
|
+
- Public share and form pages that agents should be able to read.
|
|
124
|
+
- Never submitted private data, authenticated dashboards, or user or org state, even when a nearby page is public.
|
|
112
125
|
|
|
113
|
-
-
|
|
114
|
-
- Internal apps expose only `publicPaths`.
|
|
115
|
-
- Public share and form pages can be readable by agents.
|
|
116
|
-
- Submitted private data, authenticated dashboards, and user/org state are never included just because a nearby page is public.
|
|
126
|
+
To start from your access settings, `deriveAgentWebPublicRoutes` from `@agent-native/core/agent-web` takes your app's `audience`, `publicPaths`, `protectedPaths`, and `routes`, and returns the routes those settings make public. Each page still needs its own title and Markdown.
|
|
117
127
|
|
|
118
128
|
This keeps mixed apps natural. A forms app can expose a public form page and keep submissions private. A content app can expose published posts and keep the editor private. A docs site can expose everything except admin tools.
|
|
119
129
|
|
|
@@ -123,7 +133,7 @@ Public page access and public tool access are separate. A route being public onl
|
|
|
123
133
|
|
|
124
134
|
<Callout id="doc-block-s50w8y" tone="warning">
|
|
125
135
|
|
|
126
|
-
**A public page is not a public tool.** Making a route crawlable never exposes an action. Tool access requires an explicit `publicAgent.expose` opt-in on the action
|
|
136
|
+
**A public page is not a public tool.** Making a route crawlable never exposes an action. Tool access requires an explicit `publicAgent.expose` opt-in on the action.
|
|
127
137
|
|
|
128
138
|
</Callout>
|
|
129
139
|
|
|
@@ -151,7 +161,7 @@ To expose an action through a public agent protocol, the action must opt in:
|
|
|
151
161
|
]}
|
|
152
162
|
/>
|
|
153
163
|
|
|
154
|
-
`agentWeb
|
|
164
|
+
No `agentWeb` setting exposes an action, and `publicMcp` has no effect today. See [Expose to public agents](/docs/actions-access-control#public-agent) for what `publicAgent` opts an action into and the checks that still apply.
|
|
155
165
|
|
|
156
166
|
## Build-time files {#build-time}
|
|
157
167
|
|
|
@@ -186,7 +196,9 @@ const files = buildAgentWebStaticFiles({
|
|
|
186
196
|
});
|
|
187
197
|
```
|
|
188
198
|
|
|
189
|
-
|
|
199
|
+
`createAgentWebVitePlugin` calls `buildAgentWebStaticFiles` for you and writes the files into whichever of `public`, `dist`, `dist/client`, `dist/server/public`, and `build/client` exist. With another build tool, call the utilities directly.
|
|
200
|
+
|
|
201
|
+
Neither one answers `Accept: text/markdown` on a page's own URL: the Markdown copy is only at its `.md` URL. To answer that header, add a server route that returns the page's Markdown with the headers from `buildMarkdownResponseHeaders`, as the docs site does. Without that route, the audit below fails its `Accept: text/markdown` check.
|
|
190
202
|
|
|
191
203
|
Pass `sitemapGroup` to `buildAgentWebStaticFiles` or `createAgentWebVitePlugin` to split a large sitemap. It maps each page to a group key, such as its locale, and `sitemap.xml` becomes a sitemap index with one `sitemap-<group>.xml` per group.
|
|
192
204
|
|
|
@@ -215,5 +227,5 @@ The audit exits non-zero if a required public surface is missing.
|
|
|
215
227
|
## What's next
|
|
216
228
|
|
|
217
229
|
- [**Actions**](/docs/actions-overview) — how to opt actions into the public agent protocol
|
|
218
|
-
- [**MCP Protocol**](/docs/mcp-protocol) — the MCP
|
|
230
|
+
- [**MCP Protocol**](/docs/mcp-protocol) — the MCP server external agents connect to
|
|
219
231
|
- [**Deployment**](/docs/deployment) — where these static files are written during builds
|
|
@@ -537,6 +537,20 @@ The default `/_agent-native/google/auth-url` route does this automatically — o
|
|
|
537
537
|
| `ACCESS_TOKENS` | Comma-separated static bearer fallbacks for MCP/connect clients; not browser auth |
|
|
538
538
|
| `A2A_SECRET` | Shared secret for JWT-signed A2A cross-app identity verification and, when present, MCP OAuth access-token signing |
|
|
539
539
|
|
|
540
|
+
## Auth page customization
|
|
541
|
+
|
|
542
|
+
The Chat template sets `marketing: false` in `server/plugins/auth.ts`. Replace it with a marketing object to enable the panel. It appears below the form on mobile. `AuthMarketingProps` describes the rendered page props, while the plugin accepts the `marketing` fields shown below. `authHeadHtml` appends trusted app-authored HTML after the built-in styles. Do not pass user input to it.
|
|
543
|
+
|
|
544
|
+
```ts filename="server/plugins/auth.ts"
|
|
545
|
+
import { createToolkitAuthPlugin } from "@agent-native/toolkit/app/auth/server";
|
|
546
|
+
|
|
547
|
+
export default createToolkitAuthPlugin({
|
|
548
|
+
rootAuth: true,
|
|
549
|
+
marketing: { appName: "My app", tagline: "Make work easier" },
|
|
550
|
+
authHeadHtml: "<style>.auth-root { font-family: sans-serif; }</style>",
|
|
551
|
+
});
|
|
552
|
+
```
|
|
553
|
+
|
|
540
554
|
## What's next
|
|
541
555
|
|
|
542
556
|
- [**Organizations, Teams & Permissions**](/docs/organizations-teams-permissions) — the org-role vs. resource-role RBAC model, and a practical multi-user setup sequence
|
|
@@ -202,6 +202,8 @@ sendToAgentChat({
|
|
|
202
202
|
});
|
|
203
203
|
```
|
|
204
204
|
|
|
205
|
+
`sendToAgentChat()` returns a tab ID, not a delivery receipt. For a local submitted message that must be acknowledged, use `sendToAgentChatAndConfirm({ message, chatTarget: "local" })` and handle `delivered: false` and its `reason`. It waits for the local chat to acknowledge submission and cancels a timed-out submission. This helper does not support draft-only or code-target requests.
|
|
206
|
+
|
|
205
207
|
### AgentChatMessage {#agentchatmessage}
|
|
206
208
|
|
|
207
209
|
| Option | Type | Description |
|
|
@@ -53,6 +53,8 @@ This page covers client routes, the pages rendered in the browser from `app/rout
|
|
|
53
53
|
|
|
54
54
|
</Diagram>
|
|
55
55
|
|
|
56
|
+
In Chat, `rootAuth: true` can serve the sign-in page at `/` before React Router reaches `_index.tsx`, depending on the configured home path. Change the auth plugin when customizing that response.
|
|
57
|
+
|
|
56
58
|
## File-based routing {#file-based-routing}
|
|
57
59
|
|
|
58
60
|
### File → URL mapping
|
|
@@ -34,7 +34,7 @@ it. Use that name wherever a step below says APP_NAME.
|
|
|
34
34
|
--standalone --template chat
|
|
35
35
|
3. In the new APP_NAME folder, run `pnpm install`.
|
|
36
36
|
4. Read APP_NAME/AGENTS.md so you know how the app is laid out.
|
|
37
|
-
5. Start the app with `pnpm dev` and keep it running in the background.
|
|
37
|
+
5. Start the app with `pnpm dev --no-open` and keep it running in the background.
|
|
38
38
|
6. Read the local URL that `pnpm dev` prints. Check that it responds,
|
|
39
39
|
for example with `curl -I <url>`. Do not open a browser and do not
|
|
40
40
|
use headless browser tools. I will open the app myself.
|
|
@@ -28,6 +28,8 @@ typed/JSON config and also becomes part of the public browser bundle. Do not
|
|
|
28
28
|
create another standalone Vite-prefixed or Agent-Native-prefixed variable for
|
|
29
29
|
a public setting already represented by the config guide.
|
|
30
30
|
|
|
31
|
+
To select OpenRouter explicitly, set `AGENT_ENGINE=ai-sdk:openrouter` and configure its credential through a [workspace connection](/docs/workspace-connections). Model IDs use the provider/model form.
|
|
32
|
+
|
|
31
33
|
## Start with Agent-Native app configuration
|
|
32
34
|
|
|
33
35
|
The typed config is the primary documentation and default source for public
|
|
@@ -506,18 +506,17 @@ The gallery above describes _what_ an extension does. Slots describe _where_ it
|
|
|
506
506
|
|
|
507
507
|
By default, an extension lives on its own page in the Extensions list — open it like a small app. That's fine for dashboards, calculators, and standalone widgets.
|
|
508
508
|
|
|
509
|
-
|
|
509
|
+
Named slots exist where the host app renders `<ExtensionSlot>` and supplies its current-page context. Slot targets and installs connect extensions to those existing locations. They do not create a panel, tab, or route.
|
|
510
510
|
|
|
511
|
-
A slot is a named widget area
|
|
511
|
+
A slot is a named widget area the host app places in its UI:
|
|
512
512
|
|
|
513
|
-
| Template
|
|
514
|
-
|
|
|
515
|
-
| **Mail**
|
|
516
|
-
| **
|
|
517
|
-
| **
|
|
518
|
-
| **Clips** | `clips.right-panel.tabs` | A new tab in the clip review panel |
|
|
513
|
+
| Template | Example slot | Where it shows up |
|
|
514
|
+
| ------------ | ------------------------------ | -------------------------------------------- |
|
|
515
|
+
| **Mail** | `mail.contact-sidebar.bottom` | Below the contact info on every email thread |
|
|
516
|
+
| **Calendar** | `calendar.event-detail.bottom` | Below the open event |
|
|
517
|
+
| **Content** | `content.sidebar.bottom` | At the bottom of the document sidebar |
|
|
519
518
|
|
|
520
|
-
When an extension is **installed into a slot**, the host pushes
|
|
519
|
+
When an extension is **installed into a slot**, the host pushes its chosen context, such as a contact email, event id, or document id, into the iframe. The extension reads `window.slotContext` to know what the user is looking at.
|
|
521
520
|
|
|
522
521
|
<Diagram id="doc-block-18p3btl" title="Slots push context into the widget" summary={"The host template owns named slots; installing an extension into one feeds it window.slotContext for whatever the user is currently viewing."}>
|
|
523
522
|
|
|
@@ -166,6 +166,14 @@ invalid document ID. Verify the link and connected account's access before
|
|
|
166
166
|
changing permissions. Reinstalling the connector or changing the public share
|
|
167
167
|
link does not resolve a confirmed account permission denial.
|
|
168
168
|
|
|
169
|
+
Images uploaded into a private document are stored in its body as
|
|
170
|
+
`/api/private-media/<id>` links, which load only with a Content sign-in.
|
|
171
|
+
When an agent reads the document over MCP, `get-document`, and `pull-document`
|
|
172
|
+
in Markdown, also return `privateMediaLinks`: each stored link paired with a
|
|
173
|
+
URL that opens that one image without signing in, for one hour. One read links
|
|
174
|
+
at most 200 images; `omitted` counts the rest. Read the document again for
|
|
175
|
+
fresh links. Keep the stored links when editing the body.
|
|
176
|
+
|
|
169
177
|
<a id="access-tab"></a>
|
|
170
178
|
|
|
171
179
|
### The in-app MCP setting {#mcp-settings}
|
|
@@ -11,6 +11,8 @@ before starting, and check remote deployment settings separately: the CLI can
|
|
|
11
11
|
read local environment files, but it cannot inspect remote environments or
|
|
12
12
|
database-backed feature settings.
|
|
13
13
|
|
|
14
|
+
Desktop GitHub releases use their own `v` tags. They do not identify the published `@agent-native/core` npm version. Run `npm view @agent-native/core version` for the latest published Core version and `npm ls @agent-native/core` for the installed version.
|
|
15
|
+
|
|
14
16
|
## 1. Preview the upgrade and import codemods
|
|
15
17
|
|
|
16
18
|
Use the CLI shipped with Core 0.198.0 so it loads that release's migration
|
package/docs/content/vercel.mdx
CHANGED
|
@@ -23,6 +23,8 @@ Node.js `22.22+` is required.
|
|
|
23
23
|
You also need a Vercel account. Run the commands in this guide on your own
|
|
24
24
|
computer. The Vercel CLI uploads the finished build to Vercel for you.
|
|
25
25
|
|
|
26
|
+
Agent turns are subject to Vercel Function duration limits, including streamed response time. Configure the project’s Function Max Duration and check the effective deployment settings and [Vercel limits](https://vercel.com/docs/functions/configuring-functions/duration). A longer limit does not guarantee a turn completes.
|
|
27
|
+
|
|
26
28
|
## Step 1: Create the app
|
|
27
29
|
|
|
28
30
|
Create your new standalone app. The example below creates an app from the Chat
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@agent-native/core",
|
|
3
|
-
"version": "0.227.0
|
|
3
|
+
"version": "0.227.0",
|
|
4
4
|
"description": "The agentic application framework for building autonomous agents with intuitive UIs",
|
|
5
5
|
"homepage": "https://github.com/BuilderIO/agent-native#readme",
|
|
6
6
|
"bugs": {
|
|
@@ -769,8 +769,8 @@
|
|
|
769
769
|
"yaml": "^2.9.0",
|
|
770
770
|
"yjs": "^13.6.33",
|
|
771
771
|
"zod": "^4.3.6",
|
|
772
|
-
"@agent-native/agentkit": "^0.227.0
|
|
773
|
-
"@agent-native/recap-cli": "^0.5.
|
|
772
|
+
"@agent-native/agentkit": "^0.227.0",
|
|
773
|
+
"@agent-native/recap-cli": "^0.5.100"
|
|
774
774
|
},
|
|
775
775
|
"devDependencies": {
|
|
776
776
|
"@ai-sdk/anthropic": "^3.0.71",
|
|
@@ -843,7 +843,7 @@
|
|
|
843
843
|
"xlsx": "^0.18.5"
|
|
844
844
|
},
|
|
845
845
|
"peerDependencies": {
|
|
846
|
-
"@agent-native/core-corpus": "0.
|
|
846
|
+
"@agent-native/core-corpus": ">=0.196.0",
|
|
847
847
|
"@ai-sdk/anthropic": ">=3",
|
|
848
848
|
"@ai-sdk/cohere": ">=3",
|
|
849
849
|
"@ai-sdk/google": ">=3",
|
|
@@ -41,7 +41,7 @@
|
|
|
41
41
|
-Choose the primary workflow and route before editing. Add a domain route under `app/routes/` and set `app.homePath` in `server/plugins/agent-native-email-branding.ts` with `defineAppConfig`. The default Get started page lives at `/home`, and Chat stays at `/chat`; edit `app/routes/home.tsx` when replacing that page with a domain-specific home. Add a static link in `app/components/layout/Sidebar.tsx` before `ChatThreadsSection`; `Header.tsx` uses `APP_TITLE` elsewhere. Shared sidebar and AgentInspector remain.
|
|
42
42
|
+Choose the primary workflow and route before editing. Build on the blank canvas in `app/routes/_index.tsx` or add domain routes under `app/routes/`. This starter has no Chat route, sidebar, header, or agent rail; add only the navigation the product needs. Set `app.homePath` in the existing `defineAppConfig` in `server/plugins/config.ts` as `DEVELOPING.md` describes.
|
|
43
43
|
|
|
44
|
-
-Use `adding-a-feature` for functional parity and `frontend-design` for a user-facing screen. Keep feature guidance here; do not rewrite `README.md` or `DESIGN.md`. After all edits, run one typecheck, one doctor check, and one browser smoke of the primary workflow
|
|
44
|
+
-Use `adding-a-feature` for functional parity and `frontend-design` for a user-facing screen. Keep feature guidance here; do not rewrite `README.md` or `DESIGN.md`. After all edits, run one typecheck, one doctor check, and one browser smoke of the primary workflow and its authenticated landing. Skip production build and extra test suites.
|
|
45
45
|
+Use `adding-a-feature` for functional parity and `frontend-design` for a user-facing screen. Keep feature guidance here and update `README.md` as `DEVELOPING.md` describes. After all edits, run one typecheck, one doctor check, and one browser smoke of the primary workflow and its authenticated landing. Skip production build and extra test suites.
|
|
46
46
|
|
|
47
47
|
Before building common workspace or agent UI, read `agent-native-toolkit`; for supported customization, read `customizing-agent-native`.
|
|
@@ -1,13 +1,14 @@
|
|
|
1
1
|
===================================================================
|
|
2
2
|
--- a/server/plugins/auth.ts
|
|
3
3
|
+++ b/server/plugins/auth.ts
|
|
4
|
-
@@ -1,
|
|
4
|
+
@@ -1,8 +1,8 @@
|
|
5
5
|
-import { createToolkitAuthPlugin } from "@agent-native/toolkit/app/auth/server";
|
|
6
6
|
+import { createAuthPlugin } from "@agent-native/core/server";
|
|
7
7
|
|
|
8
8
|
-export default createToolkitAuthPlugin({
|
|
9
9
|
- workspaceAppPublicPaths: ["/"],
|
|
10
10
|
- rootAuth: true,
|
|
11
|
+
- // Remove this option to use built-in marketing, or supply an object for custom copy.
|
|
11
12
|
- marketing: false,
|
|
12
13
|
+// Email/password auth with optional Google OAuth (enabled automatically when
|
|
13
14
|
+// GOOGLE_CLIENT_ID and GOOGLE_CLIENT_SECRET are set). No marketing copy — a
|
|
@@ -26,6 +26,6 @@ For custom branding, keep `server/plugins/agent-native-email-branding.ts` aligne
|
|
|
26
26
|
|
|
27
27
|
Choose the primary workflow and route before editing. Add a domain route under `app/routes/` and set `app.homePath` in `server/plugins/agent-native-email-branding.ts` with `defineAppConfig`. The default Get started page lives at `/home`, and Chat stays at `/chat`; edit `app/routes/home.tsx` when replacing that page with a domain-specific home. Add a static link in `app/components/layout/Sidebar.tsx` before `ChatThreadsSection`; `Header.tsx` uses `APP_TITLE` elsewhere. Shared sidebar and AgentInspector remain.
|
|
28
28
|
|
|
29
|
-
Use `adding-a-feature` for functional parity and `frontend-design` for a user-facing screen. Keep feature guidance here; do not rewrite `README.md` or `DESIGN.md`. After all edits, run one typecheck, one doctor check, and one browser smoke of the primary workflow
|
|
29
|
+
Use `adding-a-feature` for functional parity and `frontend-design` for a user-facing screen. Keep feature guidance here; do not rewrite `README.md` or `DESIGN.md`. After all edits, run one typecheck, one doctor check, and one browser smoke of the primary workflow and its authenticated landing. Skip production build and extra test suites.
|
|
30
30
|
|
|
31
31
|
Before building common workspace or agent UI, read `agent-native-toolkit`; for supported customization, read `customizing-agent-native`.
|
|
@@ -403,7 +403,7 @@ export function Sidebar({
|
|
|
403
403
|
<nav
|
|
404
404
|
aria-label={t("navigation.navigation")}
|
|
405
405
|
className={cn(
|
|
406
|
-
"flex min-h-0 flex-1 flex-col",
|
|
406
|
+
"flex min-h-0 flex-1 flex-col overflow-y-auto",
|
|
407
407
|
collapsed ? "items-center gap-1 px-1 py-2" : "pt-1",
|
|
408
408
|
)}
|
|
409
409
|
>
|
|
@@ -9,7 +9,7 @@ loadEnv();
|
|
|
9
9
|
|
|
10
10
|
async function main(): Promise<void> {
|
|
11
11
|
await withMigrationRuntime(async () => {
|
|
12
|
-
await runFrameworkReleaseMigrations(null);
|
|
12
|
+
await runFrameworkReleaseMigrations(null, { requirePostgres: true });
|
|
13
13
|
await runAppReleaseMigrations();
|
|
14
14
|
});
|
|
15
15
|
}
|
|
@@ -3,5 +3,6 @@ import { createToolkitAuthPlugin } from "@agent-native/toolkit/app/auth/server";
|
|
|
3
3
|
export default createToolkitAuthPlugin({
|
|
4
4
|
workspaceAppPublicPaths: ["/"],
|
|
5
5
|
rootAuth: true,
|
|
6
|
+
// Remove this option to use built-in marketing, or supply an object for custom copy.
|
|
6
7
|
marketing: false,
|
|
7
8
|
});
|
|
@@ -2,47 +2,6 @@ overrides:
|
|
|
2
2
|
"@assistant-ui/store": ">=0.2.9 <0.2.14"
|
|
3
3
|
"@assistant-ui/tap": "^0.5.14"
|
|
4
4
|
nf3: "0.3.17"
|
|
5
|
-
"@tiptap/core": "3.28.0"
|
|
6
|
-
"@tiptap/extension-blockquote": "3.28.0"
|
|
7
|
-
"@tiptap/extension-bold": "3.28.0"
|
|
8
|
-
"@tiptap/extension-bubble-menu": "3.28.0"
|
|
9
|
-
"@tiptap/extension-bullet-list": "3.28.0"
|
|
10
|
-
"@tiptap/extension-code": "3.28.0"
|
|
11
|
-
"@tiptap/extension-code-block": "3.28.0"
|
|
12
|
-
"@tiptap/extension-code-block-lowlight": "3.28.0"
|
|
13
|
-
"@tiptap/extension-collaboration": "3.28.0"
|
|
14
|
-
"@tiptap/extension-collaboration-caret": "3.28.0"
|
|
15
|
-
"@tiptap/extension-color": "3.28.0"
|
|
16
|
-
"@tiptap/extension-document": "3.28.0"
|
|
17
|
-
"@tiptap/extension-dropcursor": "3.28.0"
|
|
18
|
-
"@tiptap/extension-floating-menu": "3.28.0"
|
|
19
|
-
"@tiptap/extension-gapcursor": "3.28.0"
|
|
20
|
-
"@tiptap/extension-hard-break": "3.28.0"
|
|
21
|
-
"@tiptap/extension-heading": "3.28.0"
|
|
22
|
-
"@tiptap/extension-horizontal-rule": "3.28.0"
|
|
23
|
-
"@tiptap/extension-image": "3.28.0"
|
|
24
|
-
"@tiptap/extension-italic": "3.28.0"
|
|
25
|
-
"@tiptap/extension-link": "3.28.0"
|
|
26
|
-
"@tiptap/extension-list": "3.28.0"
|
|
27
|
-
"@tiptap/extension-list-item": "3.28.0"
|
|
28
|
-
"@tiptap/extension-list-keymap": "3.28.0"
|
|
29
|
-
"@tiptap/extension-ordered-list": "3.28.0"
|
|
30
|
-
"@tiptap/extension-paragraph": "3.28.0"
|
|
31
|
-
"@tiptap/extension-placeholder": "3.28.0"
|
|
32
|
-
"@tiptap/extension-strike": "3.28.0"
|
|
33
|
-
"@tiptap/extension-table": "3.28.0"
|
|
34
|
-
"@tiptap/extension-table-cell": "3.28.0"
|
|
35
|
-
"@tiptap/extension-table-header": "3.28.0"
|
|
36
|
-
"@tiptap/extension-table-row": "3.28.0"
|
|
37
|
-
"@tiptap/extension-task-item": "3.28.0"
|
|
38
|
-
"@tiptap/extension-task-list": "3.28.0"
|
|
39
|
-
"@tiptap/extension-text": "3.28.0"
|
|
40
|
-
"@tiptap/extension-text-style": "3.28.0"
|
|
41
|
-
"@tiptap/extension-underline": "3.28.0"
|
|
42
|
-
"@tiptap/extensions": "3.28.0"
|
|
43
|
-
"@tiptap/pm": "3.28.0"
|
|
44
|
-
"@tiptap/react": "3.28.0"
|
|
45
|
-
"@tiptap/starter-kit": "3.28.0"
|
|
46
5
|
|
|
47
6
|
allowBuilds:
|
|
48
7
|
esbuild: true
|
|
@@ -9,7 +9,7 @@ loadEnv();
|
|
|
9
9
|
|
|
10
10
|
async function main(): Promise<void> {
|
|
11
11
|
await withMigrationRuntime(async () => {
|
|
12
|
-
await runFrameworkReleaseMigrations(null);
|
|
12
|
+
await runFrameworkReleaseMigrations(null, { requirePostgres: true });
|
|
13
13
|
await runAppReleaseMigrations();
|
|
14
14
|
});
|
|
15
15
|
}
|
|
@@ -27,47 +27,6 @@ overrides:
|
|
|
27
27
|
esbuild: "^0.28.1"
|
|
28
28
|
srvx: "^0.12.4"
|
|
29
29
|
zod: "^4.4.3"
|
|
30
|
-
"@tiptap/core": "3.28.0"
|
|
31
|
-
"@tiptap/extension-blockquote": "3.28.0"
|
|
32
|
-
"@tiptap/extension-bold": "3.28.0"
|
|
33
|
-
"@tiptap/extension-bubble-menu": "3.28.0"
|
|
34
|
-
"@tiptap/extension-bullet-list": "3.28.0"
|
|
35
|
-
"@tiptap/extension-code": "3.28.0"
|
|
36
|
-
"@tiptap/extension-code-block": "3.28.0"
|
|
37
|
-
"@tiptap/extension-code-block-lowlight": "3.28.0"
|
|
38
|
-
"@tiptap/extension-collaboration": "3.28.0"
|
|
39
|
-
"@tiptap/extension-collaboration-caret": "3.28.0"
|
|
40
|
-
"@tiptap/extension-color": "3.28.0"
|
|
41
|
-
"@tiptap/extension-document": "3.28.0"
|
|
42
|
-
"@tiptap/extension-dropcursor": "3.28.0"
|
|
43
|
-
"@tiptap/extension-floating-menu": "3.28.0"
|
|
44
|
-
"@tiptap/extension-gapcursor": "3.28.0"
|
|
45
|
-
"@tiptap/extension-hard-break": "3.28.0"
|
|
46
|
-
"@tiptap/extension-heading": "3.28.0"
|
|
47
|
-
"@tiptap/extension-horizontal-rule": "3.28.0"
|
|
48
|
-
"@tiptap/extension-image": "3.28.0"
|
|
49
|
-
"@tiptap/extension-italic": "3.28.0"
|
|
50
|
-
"@tiptap/extension-link": "3.28.0"
|
|
51
|
-
"@tiptap/extension-list": "3.28.0"
|
|
52
|
-
"@tiptap/extension-list-item": "3.28.0"
|
|
53
|
-
"@tiptap/extension-list-keymap": "3.28.0"
|
|
54
|
-
"@tiptap/extension-ordered-list": "3.28.0"
|
|
55
|
-
"@tiptap/extension-paragraph": "3.28.0"
|
|
56
|
-
"@tiptap/extension-placeholder": "3.28.0"
|
|
57
|
-
"@tiptap/extension-strike": "3.28.0"
|
|
58
|
-
"@tiptap/extension-table": "3.28.0"
|
|
59
|
-
"@tiptap/extension-table-cell": "3.28.0"
|
|
60
|
-
"@tiptap/extension-table-header": "3.28.0"
|
|
61
|
-
"@tiptap/extension-table-row": "3.28.0"
|
|
62
|
-
"@tiptap/extension-task-item": "3.28.0"
|
|
63
|
-
"@tiptap/extension-task-list": "3.28.0"
|
|
64
|
-
"@tiptap/extension-text": "3.28.0"
|
|
65
|
-
"@tiptap/extension-text-style": "3.28.0"
|
|
66
|
-
"@tiptap/extension-underline": "3.28.0"
|
|
67
|
-
"@tiptap/extensions": "3.28.0"
|
|
68
|
-
"@tiptap/pm": "3.28.0"
|
|
69
|
-
"@tiptap/react": "3.28.0"
|
|
70
|
-
"@tiptap/starter-kit": "3.28.0"
|
|
71
30
|
|
|
72
31
|
packageExtensions:
|
|
73
32
|
"node-pty@*":
|