github BuilderIO/agent-native @agent-native/core@0.227.0

latest releases: v0.1.294, clips-v0.1.344, @agent-native/toolkit@0.227.0...
26 minutes ago

Minor Changes

  • 3b4d064: The CLI now reports three anonymous project activity events: cli_create_finished, cli_dev_ready and cli_deploy_finished. They show how many machines that ran create went on to start a dev server and finish a production build, and from which templates. They follow every telemetry setting, and the telemetry docs list every property they can send.
  • f94438c: Collab docs can open from a copy saved in the browser. useCollaborativeDoc({ localCopy: { onEditsDisplaced } }) keeps each doc's acknowledged Yjs state in IndexedDB, per account, cleared on sign-out or account change and bounded by size. A doc opened again is ready from that copy at once (fromLocalCopy) and takes edits, which are sent once the server's diff shows its doc covers the copy; a copy the server's doc does not cover, or that an unreadable answer cannot vouch for, is thrown away and the doc reopens from the server. Typing on the copy that the server's state leaves out (the copy was thrown away, the server deleted the block it went into, or the doc is gone) is passed to onEditsDisplaced as the doc stood with it, so the app can keep it; it is never written back into the doc. None of that typing is sent, then or by the next open; a doc the server refuses or no longer has sends nothing until it is retried. A boot read is used only for the session it was made under, and is dropped when a sign-out or organization switch starts. subscribeSessionInvalidation(listener), from @agent-native/core/client/hooks, calls listener when a sign-out or organization switch starts, in this tab or another, before the session is read again. GET /_agent-native/collab/:docId/state?stateVector= now also returns the server's state vector (older clients ignore it). prefetchCollabState(docId), from the new @agent-native/core/client/collab/prefetch entry, starts that read at page boot.
  • a467c58: Show one shared toast when a save fails instead of failing silently. useActionMutation now announces a failed write that nothing else handles (errorNotification: "auto" | "shared" | "caller", plus an errorLabel title), @agent-native/core/client/write-failure adds reportWriteFailure for writes that are not mutations, and AppProviders mounts the toast. A typed 4xx refusal shows its own message, offline, timeout and permission failures show translated text, and a 5xx stays generic. Background saves and mutations that render their own error opt out with errorNotification: "caller".

Patch Changes

  • 5d1e022: Let A2AClient callers trust extra operator-configured private origins with the allowedPrivateOrigins option, on top of the workspace origins the SSRF guard already allows.

  • a715531: Report slow SELECT 1 timings without attributing the delay solely to the database.

  • bb19e60: Google Analytics, Google Tag Manager and a deployment's head script no longer load on a page whose URL holds a signed link's token (an agent link, an embed link or a Clips intake link), including the sign-in page such a link redirects to and URLs that percent-encode the parameter's name. These tags send the page's URL to their vendors, and the token grants access to whoever has it.

  • 567bd39: Keep sign-in language menus visible, show marketing on mobile, and allow trusted head customization.

  • b523113: Apps load in dev in Brave with Shields on. Brave's default cookie-notice list blocked a core module because its file name contained "consent-banner", so the app never got past its loading skeleton. The module now has a neutral name.

  • 27f53b3: Allow a deployment operator to configure a short-lived Google OAuth recovery envelope encrypted to a pinned recipient, without returning plaintext credentials.

  • d0cbf8a: Default production browser JavaScript filenames to neutral content-hashed names so privacy blockers do not prevent essential app modules and connection popups from loading. Preserve immutable asset caching, explicit output naming, and server/library entry points.

  • 8136f49: Start consented Builder signup activation during verified authentication callbacks and keep already-dispatched tracking sends alive through flush.

  • 48d9de3: Place the optional Builder signup agreement alongside the existing terms and privacy footer.

  • 50b6315: Add resolveChatModelAvailability so apps can tell whether the current user can run any chat model before queueing agent work.

  • 6e8b91a: Support app-scoped Builder signup experiments and consented activation before first-run onboarding.

  • 8821122: Bundle the Cloudflare module Worker entry's @agent-native/core/db/request-pool-context import so the Worker starts under wrangler dev.

  • c321597: Keep inline media out of object tool-result text budgets while preserving document text, revision metadata, and native image parts.

  • 17bf02d: Identify hosted auth shells before app configuration loads, and record Builder signup enrollment and fallback outcomes for end-to-end experiment tracking.

  • 7ac4376: Routes that only accept same-origin requests (voice transcription and cleanup, speech, realtime voice, Builder.io disconnect) now accept a desktop app's tauri://localhost page on a hosted server, as they were meant to. WebKit marks those requests Sec-Fetch-Site: cross-site, and the check returned 403 on that header before it looked at the desktop origin, so desktop AI polish silently kept the raw text.

  • 567bd39: Remove outdated TipTap overrides, fix static asset header routes, and require PostgreSQL for production migration commands.

  • d4f3450: Keep an agent run alive when its execution lease lapses without being replaced. A database call or event loop that stalls for more than 15 seconds no longer ends the run without a reason and later shows it as "The agent stopped before finishing". Lease renewals also time out and retry instead of blocking every later heartbeat.

  • 46ed84c: A fresh server no longer loads React DOM's server renderer, the sign-in pages and their icon set before it can answer a request. createToolkitAuthPlugin loads them before the first page request instead: any GET outside the routes the server answers before the app's router (the framework routes, /api, /mcp, /.well-known and /assets), or a browser navigation. It reads each path as the auth guard does, with getAuthGuardPath, which core now exports from @agent-native/core/server/auth-guard-path. The server's agent-presence code no longer imports React. renderSignInPage and renderResetPasswordPage may now return undefined, which serves core's fallback markup for the auth client script to render in the browser. An app that passes the toolkit's renderAuthPage to core's createAuthPlugin or createGoogleAuthPlugin itself should await loadAuthPageRenderers() before serving a sign-in page, or it gets that fallback, cached like the full page. createGoogleAuthPlugin now renders its sign-in page for each request that shows it, rather than once at startup, so a renderer that loads later still reaches the page.

  • Release all public npm packages with a patch version bump.

  • bb19e60: A PR preview build no longer fails when a bundled library assigns an object with an entry key that reads a variable. The step that pairs the server manifest with the client build now skips objects it can't evaluate, and still fails when it finds no manifest at all.

  • 45809d6: Read a PowerPoint slide's speaker notes through the slide's notes relationship, so notes stay with their slide when only some slides have notes.

  • 360f0da: Add @agent-native/core/private-media, a store for images that must only load for people who can open the resource they sit in. It validates image bytes, keeps them in private blob storage, and leaves the access check to the app.

  • 8bab3ba: Queued messages wait for a busy thread to go idle and are promoted then, instead of waiting for the next recurring sweep. If the thread stays busy for 10 minutes, the message is left to the sweep and the server logs an error.

  • c6e09f6: Start consented Builder signup activation in one request and retain provisioning through page exits.

  • 79e3904: Add an admin-only diagnostic for comparing configured Google OAuth credentials without returning their values.

  • 1cf4153: Read the UI capability mint response body to the end instead of cancelling it, so the request completes normally rather than being reported as aborted, and the page still reaches network idle.

  • df65c1e: Recover automatic Builder signup activation from verified, identity-bound consent when browser cookies are missing, and retain pending hints after transient failures.

  • 6c810aa: Replies on a suggested edit save instead of failing with a server error

    Every reply on a suggested edit's card failed with "Internal server error" and was
    lost. Before saving a reply, the review store looked for a live first comment whose
    id matched the thread id, but a suggestion's correction comment has an id of its own
    in a suggestion-thread- thread, so the check never matched. The store now finds a
    thread's first comments by thread, as deleting a thread does, and locks them in the
    same order. Under that lock it also checks the thread is still open, so a reply can't
    land in a thread resolved a moment earlier; a retry of a reply that already saved
    still replays. A reply that can't save now says why: a resolved thread answers 409
    with "Reopen it to reply", and a deleted thread or missing comment answers 404.

  • f2d09f0: Log a safe database diagnostic code when a schema table probe is unreadable, and stop logging raw introspection error text.

  • 3203739: Allow explicitly configured previous encryption keys to read existing ciphertext during coordinated key rotation, while new writes use the current key.

  • bb19e60: Session replay recordings now say which code they ran and what happened along the way: uploads carry the git commit the page was built from when the build's environment names one, each in-app route change is marked with its path, and a failed agent run is marked with its error code, never its message.

  • 36074ef: Fixes for hiding shared chats that fail. When the server refuses a hide, useChatThreadList and the toolkit's chat history now fetch the list again. Before, a chat whose access was revoked while the request was out came back and stayed listed until the next refresh. In the toolkit's chat history, a hide that fails after you switch views or close the list now replaces the "Hidden" toast with the error. Before, the toast kept saying the chat was hidden.

  • bb19e60: Embed and Clips intake link tokens are now redacted from first-party analytics and session replay URLs, as agent link tokens already were.

  • 3a8ede4: Fix local databases created by an older core missing store schema after upgrading: the agent_runs runtime migration now creates the thread projection columns its index reads, an append-only repair migration backfills projection retry order for databases that already recorded that runtime entry, and chat_threads gains a runtime migration that creates the submission inbox columns and index the skipped legacy entries added.

  • f79ce72: Centralize tool approval status transitions in a declared lifecycle while retaining atomic consumption, execution fencing, and expiry checks.

  • 567bd39: Prepare every Vercel function's Yjs runtime and run React Router reliably on Windows.

  • Updated dependencies

    • @agent-native/agentkit@0.227.0
    • @agent-native/recap-cli@0.5.100

Don't miss a new agent-native release

NewReleases is sending notifications on new releases.