@agent-native/core 0.78.8 → 0.78.9

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.
@@ -1,5 +1,19 @@
1
1
  # @agent-native/core
2
2
 
3
+ ## 0.78.9
4
+
5
+ ### Patch Changes
6
+
7
+ - d2a14ea: Fix MCP App transplant (Claude) rendering the app's 404 page instead of the
8
+ target route. The embed ticket's `targetPath` is `/_agent-native/open?...&to=/plans/<id>`,
9
+ which 302-redirects to the real app route. The transplant followed that redirect
10
+ to fetch the correct SSR HTML, but then called `history.replaceState` with the
11
+ **pre-redirect** location (`/_agent-native/open`) — a server-only framework route
12
+ React Router has no client route for — so hydration threw
13
+ `No route matches URL "/_agent-native/open"` and rendered the app's 404 boundary.
14
+ The transplant now uses the post-redirect `response.url` (the resolved app route,
15
+ e.g. `/plans/<id>`) for `replaceState`, so the hydrated router matches the route.
16
+
3
17
  ## 0.78.8
4
18
 
5
19
  ### Patch Changes
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@agent-native/core",
3
- "version": "0.78.8",
3
+ "version": "0.78.9",
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": {
@@ -750,7 +750,7 @@ function safeUiSegment(value: string | undefined, fallback: string): string {
750
750
 
751
751
  // ChatGPT and Claude cache MCP App resource HTML by `ui://` URI. Bump this
752
752
  // when the shared shell changes in a way that must invalidate host caches.
753
- const MCP_APP_RESOURCE_SHELL_VERSION = "shell-v52";
753
+ const MCP_APP_RESOURCE_SHELL_VERSION = "shell-v53";
754
754
 
755
755
  function legacyDefaultMcpAppUri(config: MCPConfig, actionName: string): string {
756
756
  const app = safeUiSegment(config.appId ?? config.name, "agent-native");
@@ -936,7 +936,17 @@ export function embedApp(
936
936
  throw new Error("Embedded app returned HTTP " + response.status + ".");
937
937
  }
938
938
  const html = await response.text();
939
- const appUrl = source.url || new URL(response.url || src);
939
+ // Use the FINAL URL the fetch landed on after following redirects, NOT
940
+ // the pre-redirect embed-start location. The embed ticket's targetPath is
941
+ // /_agent-native/open?...&to=/plans/<id>, which 302-redirects to the real
942
+ // app route; we render that route's HTML. If we replaceState to the
943
+ // pre-redirect /_agent-native/open (a server-only framework route), the
944
+ // hydrated React Router has no matching client route and throws a 404
945
+ // ("No route matches URL /_agent-native/open"). response.url is the
946
+ // resolved app route (/plans/<id>) the router can actually match.
947
+ const appUrl = new URL(
948
+ response.url || (source.url ? source.url.href : src),
949
+ );
940
950
  try {
941
951
  window.history.replaceState(window.history.state, "", localPathFromUrl(appUrl, false));
942
952
  } catch {}
@@ -41,9 +41,9 @@ export declare const postCollabUpdate: import("h3").EventHandlerWithFetch<import
41
41
  * Body: { text: string, fieldName?: string, requestSource?: string }
42
42
  */
43
43
  export declare const postCollabText: import("h3").EventHandlerWithFetch<import("h3").EventHandlerRequest, Promise<{
44
- text?: undefined;
45
44
  ok?: undefined;
46
45
  error: string;
46
+ text?: undefined;
47
47
  } | {
48
48
  error?: undefined;
49
49
  ok: boolean;
@@ -3,18 +3,18 @@ declare const _default: import("../../action.js").ActionDefinition<{
3
3
  url?: string;
4
4
  filename?: string;
5
5
  }, {
6
- id?: undefined;
7
6
  error: string;
8
7
  configured?: undefined;
9
8
  connectPath?: undefined;
10
9
  url?: undefined;
10
+ id?: undefined;
11
11
  provider?: undefined;
12
12
  } | {
13
- id?: undefined;
14
13
  error: string;
15
14
  configured: boolean;
16
15
  connectPath: string;
17
16
  url?: undefined;
17
+ id?: undefined;
18
18
  provider?: undefined;
19
19
  } | {
20
20
  error?: undefined;
@@ -494,7 +494,7 @@ function safeUiSegment(value, fallback) {
494
494
  }
495
495
  // ChatGPT and Claude cache MCP App resource HTML by `ui://` URI. Bump this
496
496
  // when the shared shell changes in a way that must invalidate host caches.
497
- const MCP_APP_RESOURCE_SHELL_VERSION = "shell-v52";
497
+ const MCP_APP_RESOURCE_SHELL_VERSION = "shell-v53";
498
498
  function legacyDefaultMcpAppUri(config, actionName) {
499
499
  const app = safeUiSegment(config.appId ?? config.name, "agent-native");
500
500
  const action = safeUiSegment(actionName, "tool");