Minor Changes
-
b8845eb: Bound framework list reads and remove the vault-wide resync from process startup.
-
7032734: Add an Ink setup wizard to
agent-native createwith project previews and clear cancellation and help behavior. -
8fd97ec: Let workspaces choose which hosted first-party apps they offer with
agent-native.builtinAgents(mode: "all" | "none" | "selected",include) in the root or standalonepackage.json. Dispatch's app list now follows that config instead of always adding the chat-first defaults, and local workspaces outside the framework repo link built-ins to their hosted URLs. -
82ad87c: Move optional integration, ingestion, telemetry, and CLI packages out of Core's install-time dependency graph. Features now load peers on demand and report a typed install error when invoked without them.
initServerSentryis now async and callers must await itsPromise<boolean>result. Auth pages can use injected renderers, with a plain HTML fallback; without an injected renderer, the form is rendered after client hydration. Remove the decorative WebGPU ocean background from Core's auth and onboarding UI. -
6d1b545: Make background sync opt-in and refresh local agent edits from the chat run stream.
-
b8845eb: Remove
getAllSettings()andlistSettingsByKeySegments(); usegetSetting()orgetSettings(keys)when the required keys are known. RemoveCollabPluginOptions.resolveCollabDocumentIdand its whole-table lazy-seed lookup; useresolveSourceIdFromCollabDocumentIdto map a collaboration document id to its keyed source row. These exported APIs are removed because they require table-wide reads. -
bee46b1: The redesigned Settings is now the only Settings for every app, with no feature flag.
SETTINGS_REDESIGN_FLAGis deprecated and no longer registered;useFeatureFlaganduseFeatureFlagStateread it as on, so apps generated from older templates that still check it keep the redesigned layout. -
f12a2de: Add a speech-synthesis route:
POST /_agent-native/speakturns text into
audio/mpegbytes through the request's ownOPENAI_API_KEY, and
@agent-native/core/client/speakexposes it to app code asfetchSpeechClip.It returns 400 with
reason: "no-provider"when no key is configured, so a
caller can fall back to the browser's speech synthesiser without mistaking an
unconfigured app for a failing one. Every other refusal carries its own reason,
and an empty 200 from the provider is reported as a failure rather than played
as silence.
Patch Changes
-
c3a770e: Expose the model's tool-call ID in action run context so apps can correlate each invocation with its progress and results.
-
b99ba49: Keep visitors on beta when they arrive there without a beta session.
-
fa62fdf: Allow routes to skip first-run onboarding while keeping the session gate active.
-
4dae8b5: Allow Better Auth endpoints through the auth guard under a custom framework route prefix.
-
f2e8ffe: Center empty chat composers correctly and make send buttons circular across shared chat surfaces.
-
f396b49: Cast the scheduled failure-alert retry timestamp as
bigintso PostgreSQL can run lease recovery on empty tables. -
9e87b45: Align settings content widths and controls with the shared settings layout.
-
320d884: Report Builder-routed usage in Builder credits and show connected workspace credit balances to admins.
-
4dae8b5: Follow server-driven run continuations in the native chat runtime.
-
c9129d5: Match the app shell backdrop to chat and square the open right-sidebar seam.
-
23c2487: Allow apps to opt out of built-in sign-in marketing pages.
-
4b0cea2: Report removed AgentKit chat imports in Doctor and include version-matched migration guides in diagnostics.
-
c37bd18: Match chat sidebar surfaces to app navigation and reduce composer spacing.
-
b6ce4c6: Deduplicate restored assistant messages when a server snapshot uses a new message ID.
-
f12a2de: Export
isUniqueViolationfrom@agent-native/core/db. Apps that let a
partial unique index arbitrate a race — two schedulers allocating the same
sequence number, say — otherwise have to re-implement the Postgres/SQLite
error sniffing thatdb/client.tsalready does. -
f12a2de: Require a session on
POST /_agent-native/speak, and bound the request before
it is parsed. The route previously enforced authentication only in production
and otherwise resolvedOPENAI_API_KEYanonymously, so an unauthenticated
caller on any other deploy could spend its speech credits. It also parsed the
whole body before checking the script length, and never boundedinstructions.
Callers that relied on anonymous synthesis now receive 401.An anonymous caller is answered with the
no-providerresult rather than 401,
because that is the one reason the client starts browser speech: a no-login
reader would otherwise hear nothing instead of the local voice. No provider key
is resolved for them either way. -
0ca16fe: Report
db-queriesanddb-connectsin Server-Timing alongsidedb-ops, so a request's SQL statement count can be read without counting pool connects as statements. -
57e0a0f: Keep argument-dependent permission errors retryable, isolate terminal delegated-agent failures from parent turns, and alert on stale delegated tasks.
-
4af4f69: A production server build now refuses to run on local PGlite:
node .output/server/index.mjs,agent-native start, and Docker needDATABASE_URLset to Postgres, just like a hosted function. For local development, usepnpm dev, which still runs on PGlite. Netlify, Vercel, and Lambda invocations are now detected withoutNODE_ENV=production, so a fresh Netlify site with noDATABASE_URLrefuses sign-up withHostedRuntimeLocalDatabaseErrorinstead of a PGlite install error;netlify devandvercel devstill count as local. Instead of exiting at boot, a Node or Docker server without a database now skips its boot migrations with the same message and stays up. On every host, while a deploy is missing a setting that sign-in needs, the server answers every sign-in page, including an app's ownloginHtml, with an uncached 503 setup page that names each one:DATABASE_URL, andBETTER_AUTH_SECRET, orA2A_SECRETin a workspace, where it also derives the auth secret. A workspace missing onlyA2A_SECRETstill signs in, and the in-app notice names it. Apps with a customgetSessionkeep their own sign-in page. A sign-up or sign-in refused for a missing setting now says so instead of showing a generic failure. The/_agent-native/ping?configuration=1probe reports these from the same checks the refusals use, so it also recognizes app-prefixed database URLs and the workspace-derived auth secret. A hosted function or production server build now requires its auth secret even whenNODE_ENVistestordevelopment, matching the database refusal. The async A2A processor now decides from the same host markers, so a started production server build or a hosted function withoutNODE_ENVcounts as production too, so a barenode .output/server/index.mjsor Docker server withoutNODE_ENVanswers 503 untilA2A_SECRETis set instead of accepting unsigned tasks, and the configuration probe namesA2A_SECRETexactly when that happens.netlify dev,netlify serve,vercel dev, andsam local(AWS_SAM_LOCAL=true) count as local for the database, auth secret, and A2A checks, even withNODE_ENV=production. -
1fd5c7a: Restore the searchable Dispatch app directory and localize its action labels.
-
f12a2de: Export
NarrowContainerProvideranduseInNarrowContainerfrom
@agent-native/core/blocks. Width-sensitive blocks (todaydiff) already
choose a container-appropriate default insidetabsandcolumns; apps that
render a borrowed block in their own narrow column — such as a Plan edition
story — can now opt into the same behaviour instead of getting a split diff
crushed into a half-width box. -
7220a4d: Keep development hosting markers on the local runtime path.
-
19256a9: Refresh the retry cooldown after repeated automation identity failures so blocked jobs do not starve later scheduled jobs.
-
56d047a: De-duplicate Settings and Team button wrappers into shared PrimitiveButton and apply ghost hover resets conditionally so solid primary buttons preserve text-primary-foreground on hover.
-
f2f6f43: Keep fresh triggers eligible while bounded stale Mail expiry leaves a backlog.
-
4a681b7: Let
ffmpeg-staticrun its install script in generated projects, so the binary is actually downloaded and the deploy's ffmpeg bundling has something to copy. Also stop the workspace YAML merge from skipping an entry because its name appears in a different section. -
023ee9b: Keep home chat visible while provider readiness is checked.
-
4969087: Add
callAgenttoIntegrationsPluginOptions. It defaults totrue; set it tofalseto leavecall-agentout of messaging turns, which matches what agent-chat'sworkspaceAppstool group already allows on the web.call-agentis inDEFAULT_INITIAL_TOOL_NAMES, so it is on every first request even when it is not ininitialToolNames. A deployment that shares no A2A secret with the first-party apps therefore had messaging turns callinganalyticsorcontentand getting back401 Invalid or expired A2A token, when the app's own connection had the answer. -
2197b46: Add
initialToolNamestoIntegrationsPluginOptions. Messaging turns sent every action the app passed in on their first request; an app with a large action surface can now name the tools to load up front, as it already does for agent-chat, and the rest stay discoverable throughtool-search. Unset, the behaviour is unchanged. -
a8ec661: Load LaunchDarkly evaluation only when its action runs so unrelated app cold starts do not load the server SDK.
-
0a86389: First-run onboarding extensions can run before or after provider setup, contribute their steps to progress, and wait for completion before leaving. Manual setup skips capabilities already satisfied by sign-in, including Mail's Gmail connection.
-
a826bbe: Align Mail's startup skeleton with its current inbox layout.
-
83f709e: Enforce recurring sweep deadlines, cancel abandoned Mail work, and stop notification fanout after a sweep aborts.
-
df7e3ce: Keep stale mail events out of trigger selection when a sweep cannot check expiry.
-
3f9c125: Keep stale trigger expiry and terminal writes inside the background sweep budget.
-
Release all public npm packages with a patch version bump.
-
5430f9c: Connecting an MCP client now gives an account without an organization its default one, so the connection is scoped to it. The consent page no longer offers Personal to people who belong to an organization.
-
b8845eb: Scope MCP configuration and connections to the authenticated user and organization, and keep anonymous sessions out of MCP.
-
0ea21e5: Fix blank local visual-edit screens: the design bridge now adds the preview token to multi-line
import { … } fromclauses, such as Vite's pre-bundled dependency chunks. -
61770e5: Route serverless database requests through Neon pooling, cap function pools at one connection, and record observed per-request query counts.
-
ebf5f34: Avoid loading unrelated settings when enumerating MCP and scoped settings.
-
9c186fc: Add localized labels for trace eval promotion.
-
c86c6fa: Read the session once per page load and lower the per-request auth cost. The session bootstrap, analytics,
useSession, and the beta-lane probe now share one signed-in answer, and a focus or visibility change inside that 30-second lifetime re-reads it when it expires if the tab is still focused. The identity-rekey probe and theactive-org-idpreference are cached per process for 15 seconds and dropped on writes; the preference is also keyed by an httpOnly org-selection cookie that every org change made by the caller and every new session rotates, so that browser reads its current org on every instance. The legacy cookie path reads its user row once. Storage secrets are fetched in one batch,file-upload/statusdetects each provider once, and the onboarding summary is shared across the components that show it and, like the upload status, waits until startup reads have finished. -
15d1110: Export and import a portable text resource pack (secrets redacted).
-
369632b: Promote a completed production trace into a CI eval case.
-
b6ce4c6: Keep AgentKit approval continuation output in its canonical chat message instead of folding it into the server placeholder.
-
47985fe: Export the shared agent-engine readiness check for client-side submit preflights.
-
c65d6a8: Limit cross-app discovery and delegation to requests that need peer-owned data or capabilities.
-
f25679f: Load the built-in model catalog when a visible
AssistantChatpicker has no host-provided catalog. -
cfedd43: Ignore global sidebar events and preference updates while the Agent sidebar is disabled.
-
7032734: Clarify optional reply text in Observability eval promotion.
-
cae86e4: Skip schema catalog probes and release-owned runtime migrations during hosted function requests, even when NODE_ENV is unset.
-
7342b95: Keep sign-in working inside Builder preview iframes: session, embed, and UI-capability cookies (and Better Auth's session cookie) now use
SameSite=None; Secure; Partitionedwhen a dev server is served through Builder's HTTPS preview tunnel, and HTTPS detection lives in one shared helper. -
fa62fdf: Improve provider setup controls, status retry backoff, and suggestion contrast.
-
9071b38: Let command menu items take a stable
value, so keyboard selection survives an item's text changing while it is shown. -
7161ec2: Keep AgentKit runs active while a server-driven continuation starts.
-
d2ba564: Keep agents from repeating completed mutations, stale reads, disabled features, or oversized discovery searches, and let them summarize cleanly when a loop is stopped.
-
b8845eb: Scope ownable reads and writes to their authorized user, organization, or share.
-
9e35bba: Add core observability labels for promoting traces into evals.
-
b8845eb: Bound automation trigger claims to the scoped FIFO head.
-
5430f9c: Switching organizations without an organization no longer leaves the account outside its organization; the request now keeps the current one.
-
58fe222: Expose the existing per-user Jev credential lookup to server actions so template features can use a saved key without a separate configuration path.
-
0e8e6f8: Clarify the required-text prompt when promoting trace evaluations.
-
734137b: Persist notification channel and sent-event completion so idempotent sweep retries do not replay deliveries.
-
4dae8b5: Preserve chat attachments while keeping pending selection tab-scoped and non-blocking.
-
92020c0: Let apps replace the markup and copy of framework emails with
overrideTransactionalEmail(id, render), returning HTML or a React element from typed props. This covers verify signup, reset password, magic link, both email-change emails, organization invites, Builder credit limit, and the resource-shared notification. The resource-shared notification is now in the transactional email catalog ascore.resource-shared. Catalog definitions accept an optionalpreviewAsync, and the newrenderTransactionalEmailPreviewAsyncrenders it so overridden framework emails preview with the app's design.previewandrenderTransactionalEmailPreviewkeep their synchronous contracts. -
09b3645: Link the visual-edit skill to its worked usage guide.
-
8d5f335: Run the esbuild JavaScript launcher through Node so production builds work on Windows.
-
90048ab: New workspaces skip the 24-hour install delay for every
@agent-nativepackage, so a same-day framework publish no longer blockspnpm install. -
Updated dependencies [f2e8ffe]
-
Updated dependencies [023ee9b]
-
Updated dependencies [47985fe]
-
Updated dependencies
-
Updated dependencies [82ad87c]
-
Updated dependencies [57e0a0f]
-
Updated dependencies [fa62fdf]
-
Updated dependencies [82ad87c]
- @agent-native/agentkit@0.5.1
- @agent-native/toolkit@0.23.1
- @agent-native/recap-cli@0.5.49