@agent-native/core 0.32.1 → 0.32.17

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 (240) hide show
  1. package/README.md +3 -1
  2. package/dist/agent/run-store.d.ts.map +1 -1
  3. package/dist/agent/run-store.js +48 -10
  4. package/dist/agent/run-store.js.map +1 -1
  5. package/dist/agent/thread-data-builder.d.ts +12 -0
  6. package/dist/agent/thread-data-builder.d.ts.map +1 -1
  7. package/dist/agent/thread-data-builder.js +104 -6
  8. package/dist/agent/thread-data-builder.js.map +1 -1
  9. package/dist/cli/app-skill.js +2 -2
  10. package/dist/cli/app-skill.js.map +1 -1
  11. package/dist/cli/code-agent-executor.d.ts.map +1 -1
  12. package/dist/cli/code-agent-executor.js +6 -1
  13. package/dist/cli/code-agent-executor.js.map +1 -1
  14. package/dist/cli/code-agent-output-smoother.d.ts +7 -0
  15. package/dist/cli/code-agent-output-smoother.d.ts.map +1 -0
  16. package/dist/cli/code-agent-output-smoother.js +111 -0
  17. package/dist/cli/code-agent-output-smoother.js.map +1 -0
  18. package/dist/cli/connect.d.ts.map +1 -1
  19. package/dist/cli/connect.js +5 -0
  20. package/dist/cli/connect.js.map +1 -1
  21. package/dist/cli/migrate.d.ts.map +1 -1
  22. package/dist/cli/migrate.js +17 -42
  23. package/dist/cli/migrate.js.map +1 -1
  24. package/dist/cli/skills.d.ts +23 -2
  25. package/dist/cli/skills.d.ts.map +1 -1
  26. package/dist/cli/skills.js +405 -41
  27. package/dist/cli/skills.js.map +1 -1
  28. package/dist/cli/templates-meta.d.ts.map +1 -1
  29. package/dist/cli/templates-meta.js +7 -105
  30. package/dist/cli/templates-meta.js.map +1 -1
  31. package/dist/client/AgentPanel.d.ts.map +1 -1
  32. package/dist/client/AgentPanel.js +41 -7
  33. package/dist/client/AgentPanel.js.map +1 -1
  34. package/dist/client/AgentTaskCard.d.ts.map +1 -1
  35. package/dist/client/AgentTaskCard.js +0 -28
  36. package/dist/client/AgentTaskCard.js.map +1 -1
  37. package/dist/client/AssistantChat.d.ts +8 -23
  38. package/dist/client/AssistantChat.d.ts.map +1 -1
  39. package/dist/client/AssistantChat.js +359 -205
  40. package/dist/client/AssistantChat.js.map +1 -1
  41. package/dist/client/MultiTabAssistantChat.d.ts.map +1 -1
  42. package/dist/client/MultiTabAssistantChat.js +254 -14
  43. package/dist/client/MultiTabAssistantChat.js.map +1 -1
  44. package/dist/client/agent-chat-adapter.d.ts.map +1 -1
  45. package/dist/client/agent-chat-adapter.js +14 -9
  46. package/dist/client/agent-chat-adapter.js.map +1 -1
  47. package/dist/client/agent-chat.d.ts +24 -0
  48. package/dist/client/agent-chat.d.ts.map +1 -1
  49. package/dist/client/agent-chat.js +73 -0
  50. package/dist/client/agent-chat.js.map +1 -1
  51. package/dist/client/assistant-ui-recovery.d.ts +34 -0
  52. package/dist/client/assistant-ui-recovery.d.ts.map +1 -0
  53. package/dist/client/assistant-ui-recovery.js +122 -0
  54. package/dist/client/assistant-ui-recovery.js.map +1 -0
  55. package/dist/client/composer/PromptComposer.d.ts.map +1 -1
  56. package/dist/client/composer/PromptComposer.js +7 -1
  57. package/dist/client/composer/PromptComposer.js.map +1 -1
  58. package/dist/client/composer/TiptapComposer.d.ts +7 -1
  59. package/dist/client/composer/TiptapComposer.d.ts.map +1 -1
  60. package/dist/client/composer/TiptapComposer.js +22 -2
  61. package/dist/client/composer/TiptapComposer.js.map +1 -1
  62. package/dist/client/frame-protocol.d.ts +6 -2
  63. package/dist/client/frame-protocol.d.ts.map +1 -1
  64. package/dist/client/frame-protocol.js.map +1 -1
  65. package/dist/client/index.d.ts +2 -1
  66. package/dist/client/index.d.ts.map +1 -1
  67. package/dist/client/index.js +2 -1
  68. package/dist/client/index.js.map +1 -1
  69. package/dist/client/org/OrgSwitcher.d.ts.map +1 -1
  70. package/dist/client/org/OrgSwitcher.js +2 -1
  71. package/dist/client/org/OrgSwitcher.js.map +1 -1
  72. package/dist/client/progress/RunsTray.d.ts +13 -3
  73. package/dist/client/progress/RunsTray.d.ts.map +1 -1
  74. package/dist/client/progress/RunsTray.js +105 -36
  75. package/dist/client/progress/RunsTray.js.map +1 -1
  76. package/dist/client/route-warmup.d.ts +61 -0
  77. package/dist/client/route-warmup.d.ts.map +1 -0
  78. package/dist/client/route-warmup.js +456 -0
  79. package/dist/client/route-warmup.js.map +1 -0
  80. package/dist/client/settings/SettingsPanel.d.ts.map +1 -1
  81. package/dist/client/settings/SettingsPanel.js +2 -1
  82. package/dist/client/settings/SettingsPanel.js.map +1 -1
  83. package/dist/client/settings/useBuilderStatus.d.ts +5 -0
  84. package/dist/client/settings/useBuilderStatus.d.ts.map +1 -1
  85. package/dist/client/settings/useBuilderStatus.js +10 -4
  86. package/dist/client/settings/useBuilderStatus.js.map +1 -1
  87. package/dist/client/use-action.d.ts +1 -0
  88. package/dist/client/use-action.d.ts.map +1 -1
  89. package/dist/client/use-action.js +22 -4
  90. package/dist/client/use-action.js.map +1 -1
  91. package/dist/code-agents/background-run.d.ts +2 -0
  92. package/dist/code-agents/background-run.d.ts.map +1 -1
  93. package/dist/code-agents/background-run.js.map +1 -1
  94. package/dist/db/client.d.ts +1 -1
  95. package/dist/db/client.d.ts.map +1 -1
  96. package/dist/db/client.js +25 -1
  97. package/dist/db/client.js.map +1 -1
  98. package/dist/deploy/build.d.ts +4 -0
  99. package/dist/deploy/build.d.ts.map +1 -1
  100. package/dist/deploy/build.js +171 -14
  101. package/dist/deploy/build.js.map +1 -1
  102. package/dist/deploy/immutable-assets.d.ts +1 -0
  103. package/dist/deploy/immutable-assets.d.ts.map +1 -1
  104. package/dist/deploy/immutable-assets.js +1 -0
  105. package/dist/deploy/immutable-assets.js.map +1 -1
  106. package/dist/index.browser.d.ts +1 -1
  107. package/dist/index.browser.d.ts.map +1 -1
  108. package/dist/index.browser.js +1 -1
  109. package/dist/index.browser.js.map +1 -1
  110. package/dist/index.d.ts +1 -1
  111. package/dist/index.d.ts.map +1 -1
  112. package/dist/index.js +1 -1
  113. package/dist/index.js.map +1 -1
  114. package/dist/mcp/connect-route.d.ts.map +1 -1
  115. package/dist/mcp/connect-route.js +118 -82
  116. package/dist/mcp/connect-route.js.map +1 -1
  117. package/dist/progress/routes.d.ts.map +1 -1
  118. package/dist/progress/routes.js +1 -0
  119. package/dist/progress/routes.js.map +1 -1
  120. package/dist/progress/store.d.ts +13 -0
  121. package/dist/progress/store.d.ts.map +1 -1
  122. package/dist/progress/store.js +18 -0
  123. package/dist/progress/store.js.map +1 -1
  124. package/dist/progress/types.d.ts +2 -0
  125. package/dist/progress/types.d.ts.map +1 -1
  126. package/dist/progress/types.js.map +1 -1
  127. package/dist/scripts/db/wipe-leaked-builder-keys.d.ts +2 -2
  128. package/dist/scripts/db/wipe-leaked-builder-keys.d.ts.map +1 -1
  129. package/dist/scripts/db/wipe-leaked-builder-keys.js +14 -3
  130. package/dist/scripts/db/wipe-leaked-builder-keys.js.map +1 -1
  131. package/dist/server/action-routes.d.ts +1 -0
  132. package/dist/server/action-routes.d.ts.map +1 -1
  133. package/dist/server/action-routes.js +36 -2
  134. package/dist/server/action-routes.js.map +1 -1
  135. package/dist/server/agent-chat-plugin.d.ts.map +1 -1
  136. package/dist/server/agent-chat-plugin.js +123 -25
  137. package/dist/server/agent-chat-plugin.js.map +1 -1
  138. package/dist/server/agent-discovery.d.ts.map +1 -1
  139. package/dist/server/agent-discovery.js +14 -1
  140. package/dist/server/agent-discovery.js.map +1 -1
  141. package/dist/server/agent-teams-run-queue.d.ts +80 -0
  142. package/dist/server/agent-teams-run-queue.d.ts.map +1 -0
  143. package/dist/server/agent-teams-run-queue.js +208 -0
  144. package/dist/server/agent-teams-run-queue.js.map +1 -0
  145. package/dist/server/agent-teams.d.ts +67 -0
  146. package/dist/server/agent-teams.d.ts.map +1 -1
  147. package/dist/server/agent-teams.js +607 -180
  148. package/dist/server/agent-teams.js.map +1 -1
  149. package/dist/server/auth-marketing.d.ts.map +1 -1
  150. package/dist/server/auth-marketing.js +0 -64
  151. package/dist/server/auth-marketing.js.map +1 -1
  152. package/dist/server/auth.d.ts.map +1 -1
  153. package/dist/server/auth.js +67 -14
  154. package/dist/server/auth.js.map +1 -1
  155. package/dist/server/builder-browser.d.ts +12 -2
  156. package/dist/server/builder-browser.d.ts.map +1 -1
  157. package/dist/server/builder-browser.js +24 -0
  158. package/dist/server/builder-browser.js.map +1 -1
  159. package/dist/server/core-routes-plugin.d.ts.map +1 -1
  160. package/dist/server/core-routes-plugin.js +66 -5
  161. package/dist/server/core-routes-plugin.js.map +1 -1
  162. package/dist/server/credential-provider.d.ts +10 -0
  163. package/dist/server/credential-provider.d.ts.map +1 -1
  164. package/dist/server/credential-provider.js +82 -3
  165. package/dist/server/credential-provider.js.map +1 -1
  166. package/dist/server/csrf.d.ts.map +1 -1
  167. package/dist/server/csrf.js +3 -0
  168. package/dist/server/csrf.js.map +1 -1
  169. package/dist/server/index.d.ts +1 -0
  170. package/dist/server/index.d.ts.map +1 -1
  171. package/dist/server/index.js +1 -0
  172. package/dist/server/index.js.map +1 -1
  173. package/dist/server/onboarding-html.d.ts +1 -0
  174. package/dist/server/onboarding-html.d.ts.map +1 -1
  175. package/dist/server/onboarding-html.js +14 -1
  176. package/dist/server/onboarding-html.js.map +1 -1
  177. package/dist/server/self-dispatch.d.ts +44 -0
  178. package/dist/server/self-dispatch.d.ts.map +1 -0
  179. package/dist/server/self-dispatch.js +113 -0
  180. package/dist/server/self-dispatch.js.map +1 -0
  181. package/dist/server/social-og-image.d.ts +14 -0
  182. package/dist/server/social-og-image.d.ts.map +1 -0
  183. package/dist/server/social-og-image.js +251 -0
  184. package/dist/server/social-og-image.js.map +1 -0
  185. package/dist/server/ssr-handler.d.ts +1 -1
  186. package/dist/server/ssr-handler.d.ts.map +1 -1
  187. package/dist/server/ssr-handler.js +27 -11
  188. package/dist/server/ssr-handler.js.map +1 -1
  189. package/dist/shared/cache-control.d.ts +7 -0
  190. package/dist/shared/cache-control.d.ts.map +1 -1
  191. package/dist/shared/cache-control.js +7 -0
  192. package/dist/shared/cache-control.js.map +1 -1
  193. package/dist/shared/index.d.ts +1 -1
  194. package/dist/shared/index.d.ts.map +1 -1
  195. package/dist/shared/index.js +1 -1
  196. package/dist/shared/index.js.map +1 -1
  197. package/dist/shared/route-warmup-config.d.ts +28 -0
  198. package/dist/shared/route-warmup-config.d.ts.map +1 -0
  199. package/dist/shared/route-warmup-config.js +58 -0
  200. package/dist/shared/route-warmup-config.js.map +1 -0
  201. package/dist/shared/social-meta.d.ts +5 -0
  202. package/dist/shared/social-meta.d.ts.map +1 -1
  203. package/dist/shared/social-meta.js +36 -2
  204. package/dist/shared/social-meta.js.map +1 -1
  205. package/dist/shared/streaming-text-smoothing.d.ts +12 -0
  206. package/dist/shared/streaming-text-smoothing.d.ts.map +1 -0
  207. package/dist/shared/streaming-text-smoothing.js +52 -0
  208. package/dist/shared/streaming-text-smoothing.js.map +1 -0
  209. package/dist/styles/agent-native.css +4 -4
  210. package/dist/templates/default/AGENTS.md +9 -4
  211. package/dist/templates/default/DEVELOPING.md +15 -1
  212. package/dist/templates/workspace-core/AGENTS.md +7 -3
  213. package/dist/templates/workspace-root/AGENTS.md +7 -3
  214. package/dist/vite/client.d.ts +13 -0
  215. package/dist/vite/client.d.ts.map +1 -1
  216. package/dist/vite/client.js +36 -1
  217. package/dist/vite/client.js.map +1 -1
  218. package/dist/vite/index.d.ts +1 -0
  219. package/dist/vite/index.d.ts.map +1 -1
  220. package/dist/vite/index.js.map +1 -1
  221. package/docs/content/client.md +62 -1
  222. package/docs/content/code-agents-ui.md +6 -13
  223. package/docs/content/context-awareness.md +186 -21
  224. package/docs/content/deployment.md +8 -11
  225. package/docs/content/dispatch.md +1 -1
  226. package/docs/content/external-agents.md +32 -2
  227. package/docs/content/migration-workbench.md +4 -21
  228. package/docs/content/multi-app-workspace.md +1 -1
  229. package/docs/content/recurring-jobs.md +1 -1
  230. package/docs/content/security.md +0 -1
  231. package/docs/content/sharing.md +1 -3
  232. package/docs/content/skills-guide.md +12 -10
  233. package/docs/content/template-assets.md +21 -1
  234. package/docs/content/template-design.md +23 -5
  235. package/docs/content/template-dispatch.md +1 -1
  236. package/package.json +2 -1
  237. package/src/templates/default/AGENTS.md +9 -4
  238. package/src/templates/default/DEVELOPING.md +15 -1
  239. package/src/templates/workspace-core/AGENTS.md +7 -3
  240. package/src/templates/workspace-root/AGENTS.md +7 -3
@@ -80,7 +80,8 @@ export default defineNitroPlugin(async (nitroApp) => {
80
80
  | `readSetting`, `writeSetting` | Read/write settings (from `@agent-native/core/settings`) |
81
81
  | `readResource`, `writeResource` | Read/write resources (from `@agent-native/core/resources`) |
82
82
  | `defineEventHandler`, `readBody`, `getQuery` | H3 route handler utilities (re-exported) |
83
- | `sendToAgentChat` | Send messages to agent from UI (client-side) |
83
+ | `sendToAgentChat` | Send or prefill messages in the agent chat from UI (client-side) |
84
+ | `setContextToAgentChat` | Stage keyed context chips for the next agent chat prompt from UI |
84
85
  | `agentChat` | Send messages to agent from scripts (server-side) |
85
86
 
86
87
  ## Adding a Script
@@ -101,6 +102,19 @@ sendToAgentChat({
101
102
  });
102
103
  ```
103
104
 
105
+ To add hidden context without submitting or filling the prompt text, stage
106
+ keyed context nuggets. Multiple nuggets stack; using the same `key` replaces the
107
+ previous nugget.
108
+
109
+ ```ts
110
+ import { setContextToAgentChat } from "@agent-native/core";
111
+ setContextToAgentChat({
112
+ key: "selected-record",
113
+ title: "Selected Record",
114
+ context: JSON.stringify(record, null, 2),
115
+ });
116
+ ```
117
+
104
118
  **From scripts:**
105
119
 
106
120
  ```ts
@@ -14,8 +14,10 @@ agent should know.
14
14
  - All AI/LLM behavior goes through the app's agent chat. UI and server code
15
15
  must not call model providers, AI SDK `generateText()` / `streamText()`, or
16
16
  other inline LLM APIs directly. Use `sendToAgentChat()` for local app-agent
17
- work, and read `.agents/skills/delegate-to-agent/SKILL.md` before building
18
- agent-driven UI or "AI" features.
17
+ work. When selected UI data should become hidden context for the user's next
18
+ prompt without submitting anything, use `setContextToAgentChat()` with a
19
+ stable `key`. Read `.agents/skills/delegate-to-agent/SKILL.md` before
20
+ building agent-driven UI or "AI" features.
19
21
  - Put shared code in `packages/shared` only when multiple apps need it.
20
22
  - Keep app-specific screens, actions, state, and skills inside `apps/<app>`.
21
23
  - Store shared runtime configuration in the workspace root `.env`; use
@@ -74,7 +76,9 @@ create `defineAction` files in `actions/`, mark reads with
74
76
  `http: { method: "GET" }`, and call them from React with `useActionQuery` /
75
77
  `useActionMutation`. Do not add duplicate JSON CRUD routes under `/api/*` for
76
78
  the same data unless the route is for uploads, streaming, webhooks, OAuth, or
77
- another route-only concern. Action-backed UI is what makes agent-created or
79
+ another route-only concern. Do not add routes whose main job is to wrap,
80
+ proxy, or re-export an action; the action endpoint already exists at
81
+ `/_agent-native/actions/:name`. Action-backed UI is what makes agent-created or
78
82
  agent-edited records appear without a manual refresh.
79
83
 
80
84
  App database code must be provider-agnostic. Define schemas with
@@ -11,7 +11,9 @@ coding agents can discover the same workspace-wide guidance from the root.
11
11
  - All AI/LLM behavior goes through the app's agent chat. UI and server code
12
12
  must not call model providers, AI SDK `generateText()` / `streamText()`, or
13
13
  other inline LLM APIs directly. Use `sendToAgentChat()` for local app-agent
14
- work, and read `packages/shared/.agents/skills/delegate-to-agent/SKILL.md`
14
+ work. When selected UI data should become hidden context for the user's next
15
+ prompt without submitting anything, use `setContextToAgentChat()` with a
16
+ stable `key`. Read `packages/shared/.agents/skills/delegate-to-agent/SKILL.md`
15
17
  before building agent-driven UI or "AI" features.
16
18
 
17
19
  ## Workspace Resources
@@ -101,8 +103,10 @@ coding agents can discover the same workspace-wide guidance from the root.
101
103
  `http: { method: "GET" }`, and call them from React with `useActionQuery` /
102
104
  `useActionMutation`. Do not add duplicate JSON CRUD routes under `/api/*`
103
105
  for the same data unless the route is for uploads, streaming, webhooks,
104
- OAuth, or another route-only concern. Action-backed UI is what makes
105
- agent-created or agent-edited records appear without a manual refresh.
106
+ OAuth, or another route-only concern. Do not add routes whose main job is to
107
+ wrap, proxy, or re-export an action; the action endpoint already exists at
108
+ `/_agent-native/actions/:name`. Action-backed UI is what makes agent-created
109
+ or agent-edited records appear without a manual refresh.
106
110
  - App database code must be provider-agnostic. Define schemas with
107
111
  `@agent-native/core/db/schema` helpers and write app reads/writes with
108
112
  Drizzle's query builder and portable `drizzle-orm` operators. Do not import
@@ -1,4 +1,5 @@
1
1
  import type { UserConfig } from "vite";
2
+ import { type AgentNativeRouteWarmupConfigInput } from "../shared/route-warmup-config.js";
2
3
  export interface NitroOptions {
3
4
  /** Nitro deployment preset (e.g. "node", "vercel", "netlify", "cloudflare_pages"). Default: "node" */
4
5
  preset?: string;
@@ -30,6 +31,18 @@ export interface ClientConfigOptions {
30
31
  fsDeny?: string[];
31
32
  /** Additional Vite optimizeDeps configuration */
32
33
  optimizeDeps?: NonNullable<UserConfig["optimizeDeps"]>;
34
+ /** Additional Vite define constants. */
35
+ define?: UserConfig["define"];
36
+ /**
37
+ * Framework route warmup behavior mounted by AgentSidebar.
38
+ *
39
+ * React Router's native prefetch warms both `.data` and JS, but its `.data`
40
+ * request uses browser link prefetch. Chrome sends `Sec-Purpose: prefetch`
41
+ * on those requests, which some production CDNs reject for dynamic `.data`
42
+ * URLs before our SWR cache headers can help. Agent-Native therefore uses
43
+ * ordinary fetches for `.data` and `modulepreload` for route JS by default.
44
+ */
45
+ routeWarmup?: AgentNativeRouteWarmupConfigInput;
33
46
  /**
34
47
  * Whether to auto-inject the Tailwind v4 Vite plugin (`@tailwindcss/vite`).
35
48
  * Defaults to true — set to `false` if a template wants to manage Tailwind
@@ -1 +1 @@
1
- {"version":3,"file":"client.d.ts","sourceRoot":"","sources":["../../src/vite/client.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,EAAU,UAAU,EAAE,MAAM,MAAM,CAAC;AAwa/C,MAAM,WAAW,YAAY;IAC3B,sGAAsG;IACtG,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,6DAA6D;IAC7D,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,oEAAoE;IACpE,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,4CAA4C;IAC5C,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC;CACxB;AAED,MAAM,WAAW,mBAAmB;IAClC,yCAAyC;IACzC,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,6DAA6D;IAC7D,YAAY,CAAC,EAAE,WAAW,CAAC,WAAW,CAAC,UAAU,CAAC,QAAQ,CAAC,CAAC,CAAC,cAAc,CAAC,CAAC,CAAC;IAC9E,oGAAoG;IACpG,QAAQ,CAAC,EAAE,UAAU,CAAC,UAAU,CAAC,CAAC;IAClC,8BAA8B;IAC9B,OAAO,CAAC,EAAE,GAAG,EAAE,CAAC;IAChB,iDAAiD;IACjD,KAAK,CAAC,EAAE,YAAY,CAAC;IACrB,+BAA+B;IAC/B,OAAO,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IACjC,iDAAiD;IACjD,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,gCAAgC;IAChC,OAAO,CAAC,EAAE,MAAM,EAAE,CAAC;IACnB,kCAAkC;IAClC,MAAM,CAAC,EAAE,MAAM,EAAE,CAAC;IAClB,iDAAiD;IACjD,YAAY,CAAC,EAAE,WAAW,CAAC,UAAU,CAAC,cAAc,CAAC,CAAC,CAAC;IACvD;;;;OAIG;IACH,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB;;;;;;;;;;;;;;OAcG;IACH,QAAQ,CAAC,EAAE,MAAM,EAAE,CAAC;IACpB;;;;;;;;OAQG;IACH,WAAW,CAAC,EAAE,OAAO,GAAG,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;CACjD;AAsdD,wBAAgB,sBAAsB,CACpC,MAAM,EAAE,MAAM,GAAG,SAAS,EAC1B,IAAI,EAAE,MAAM,GAAG,SAAS,GACvB,MAAM,GAAG,SAAS,CAMpB;AAED,wBAAgB,kBAAkB,CAChC,MAAM,EAAE,MAAM,EACd,IAAI,EAAE,MAAM,GAAG,SAAS,GACvB,OAAO,CAWT;AA6KD;;;;;;;GAOG;AACH,wBAAgB,YAAY,CAAC,OAAO,GAAE,mBAAwB,GAAG,UAAU,CAkQ1E"}
1
+ {"version":3,"file":"client.d.ts","sourceRoot":"","sources":["../../src/vite/client.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,EAAU,UAAU,EAAE,MAAM,MAAM,CAAC;AAmB/C,OAAO,EAEL,KAAK,iCAAiC,EACvC,MAAM,kCAAkC,CAAC;AAuZ1C,MAAM,WAAW,YAAY;IAC3B,sGAAsG;IACtG,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,6DAA6D;IAC7D,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,oEAAoE;IACpE,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,4CAA4C;IAC5C,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC;CACxB;AAED,MAAM,WAAW,mBAAmB;IAClC,yCAAyC;IACzC,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,6DAA6D;IAC7D,YAAY,CAAC,EAAE,WAAW,CAAC,WAAW,CAAC,UAAU,CAAC,QAAQ,CAAC,CAAC,CAAC,cAAc,CAAC,CAAC,CAAC;IAC9E,oGAAoG;IACpG,QAAQ,CAAC,EAAE,UAAU,CAAC,UAAU,CAAC,CAAC;IAClC,8BAA8B;IAC9B,OAAO,CAAC,EAAE,GAAG,EAAE,CAAC;IAChB,iDAAiD;IACjD,KAAK,CAAC,EAAE,YAAY,CAAC;IACrB,+BAA+B;IAC/B,OAAO,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IACjC,iDAAiD;IACjD,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,gCAAgC;IAChC,OAAO,CAAC,EAAE,MAAM,EAAE,CAAC;IACnB,kCAAkC;IAClC,MAAM,CAAC,EAAE,MAAM,EAAE,CAAC;IAClB,iDAAiD;IACjD,YAAY,CAAC,EAAE,WAAW,CAAC,UAAU,CAAC,cAAc,CAAC,CAAC,CAAC;IACvD,wCAAwC;IACxC,MAAM,CAAC,EAAE,UAAU,CAAC,QAAQ,CAAC,CAAC;IAC9B;;;;;;;;OAQG;IACH,WAAW,CAAC,EAAE,iCAAiC,CAAC;IAChD;;;;OAIG;IACH,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB;;;;;;;;;;;;;;OAcG;IACH,QAAQ,CAAC,EAAE,MAAM,EAAE,CAAC;IACpB;;;;;;;;OAQG;IACH,WAAW,CAAC,EAAE,OAAO,GAAG,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;CACjD;AA+dD,wBAAgB,sBAAsB,CACpC,MAAM,EAAE,MAAM,GAAG,SAAS,EAC1B,IAAI,EAAE,MAAM,GAAG,SAAS,GACvB,MAAM,GAAG,SAAS,CAMpB;AAED,wBAAgB,kBAAkB,CAChC,MAAM,EAAE,MAAM,EACd,IAAI,EAAE,MAAM,GAAG,SAAS,GACvB,OAAO,CAWT;AAoMD;;;;;;;GAOG;AACH,wBAAgB,YAAY,CAAC,OAAO,GAAE,mBAAwB,GAAG,UAAU,CA4Q1E"}
@@ -8,7 +8,8 @@ import { findWorkspaceRoot } from "../scripts/utils.js";
8
8
  import { getViteDevRecoveryScript } from "../client/vite-dev-recovery-script.js";
9
9
  import { verifyEmbedSessionToken } from "../server/embed-session.js";
10
10
  import { EMBED_SESSION_COOKIE, EMBED_TOKEN_QUERY_PARAM, MCP_APP_CHAT_BRIDGE_QUERY_PARAM, } from "../shared/embed-auth.js";
11
- import { isMcpEmbedCorsOrigin, MCP_EMBED_CORS_ALLOW_HEADERS, MCP_EMBED_STATIC_ASSET_HEADERS, mcpEmbedStaticAssetRouteRules, } from "../shared/mcp-embed-headers.js";
11
+ import { isMcpEmbedCorsOrigin, MCP_EMBED_CORS_ALLOW_HEADERS, MCP_EMBED_STATIC_ASSET_HEADERS, mcpEmbedStaticAssetRouteRules, shouldAllowMcpEmbedCredentials, } from "../shared/mcp-embed-headers.js";
12
+ import { normalizeAgentNativeRouteWarmupConfig, } from "../shared/route-warmup-config.js";
12
13
  import { fileURLToPath } from "url";
13
14
  const require = createRequire(import.meta.url);
14
15
  const __dirname = path.dirname(fileURLToPath(import.meta.url));
@@ -689,6 +690,15 @@ function embedDevFrameHeaders() {
689
690
  if (isMcpEmbedCorsOrigin(origin)) {
690
691
  res.setHeader("Access-Control-Allow-Origin", origin);
691
692
  res.setHeader("Vary", "Origin");
693
+ // The desktop app's dev origin (http://localhost:1420) also matches
694
+ // here, and it logs in with `credentials: "include"`. A credentialed
695
+ // request needs this header or the browser discards the response.
696
+ // The OPTIONS short-circuit below means we can't rely on the real
697
+ // auth handler to set it, so set it here too (production already does
698
+ // the same).
699
+ if (shouldAllowMcpEmbedCredentials(origin)) {
700
+ res.setHeader("Access-Control-Allow-Credentials", "true");
701
+ }
692
702
  res.setHeader("Access-Control-Allow-Methods", "GET,HEAD,POST,PUT,PATCH,DELETE,OPTIONS");
693
703
  res.setHeader("Access-Control-Allow-Headers", MCP_EMBED_CORS_ALLOW_HEADERS);
694
704
  for (const [name, value] of Object.entries(MCP_EMBED_STATIC_ASSET_HEADERS)) {
@@ -875,6 +885,22 @@ function portExposer() {
875
885
  * Vite's own connect pipeline.
876
886
  */
877
887
  function silenceConnectionResets() {
888
+ const isClosedWebStreamController = (err) => {
889
+ const e = err;
890
+ const code = e?.code || e?.cause?.code;
891
+ const message = [
892
+ String(e?.message ?? ""),
893
+ String(e?.cause?.message ?? ""),
894
+ ].join("\n");
895
+ const stack = [
896
+ String(e?.stack ?? ""),
897
+ String(e?.cause?.stack ?? ""),
898
+ ].join("\n");
899
+ return (code === "ERR_INVALID_STATE" &&
900
+ /Controller is already closed/i.test(message) &&
901
+ (!stack ||
902
+ /ReadableStreamDefaultController\.close|internal\/webstreams\/adapters|IncomingMessage\.onclose/.test(stack)));
903
+ };
878
904
  const isBenign = (err) => {
879
905
  const e = err;
880
906
  const code = e?.code || e?.cause?.code;
@@ -882,6 +908,7 @@ function silenceConnectionResets() {
882
908
  return (code === "ECONNRESET" ||
883
909
  code === "ECONNABORTED" ||
884
910
  code === "EPIPE" ||
911
+ isClosedWebStreamController(err) ||
885
912
  /^(read ECONNRESET|write ECONNRESET|socket hang up|aborted|write EPIPE)$/i.test(message));
886
913
  };
887
914
  const isBenignErrorPayload = (payload) => {
@@ -1024,6 +1051,14 @@ export function defineConfig(options = {}) {
1024
1051
  logLevel: options.logLevel ?? (isWorkspaceChild ? "warn" : undefined),
1025
1052
  envDir,
1026
1053
  base,
1054
+ define: {
1055
+ ...(options.define ?? {}),
1056
+ // Framework route warmup controls how SSR `.data` routes are fetched:
1057
+ // ordinary fetches keep them CDN-cacheable, while native prefetch headers
1058
+ // can be refused before the CDN/origin sees the request. Keep this value
1059
+ // authoritative even if app config provides its own `define` entries.
1060
+ __AGENT_NATIVE_ROUTE_WARMUP_CONFIG__: JSON.stringify(normalizeAgentNativeRouteWarmupConfig(options.routeWarmup)),
1061
+ },
1027
1062
  server: {
1028
1063
  host: "::",
1029
1064
  port: options.port ?? 8080,