@agent-native/core 0.7.82 → 0.8.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.
Files changed (265) hide show
  1. package/dist/action.js +1 -1
  2. package/dist/action.js.map +1 -1
  3. package/dist/agent/production-agent.d.ts.map +1 -1
  4. package/dist/agent/production-agent.js +8 -8
  5. package/dist/agent/production-agent.js.map +1 -1
  6. package/dist/agent/run-manager.d.ts +2 -0
  7. package/dist/agent/run-manager.d.ts.map +1 -1
  8. package/dist/agent/run-manager.js +44 -18
  9. package/dist/agent/run-manager.js.map +1 -1
  10. package/dist/agent/types.d.ts +1 -1
  11. package/dist/agent/types.d.ts.map +1 -1
  12. package/dist/agent/types.js.map +1 -1
  13. package/dist/cli/create.d.ts +1 -1
  14. package/dist/cli/create.d.ts.map +1 -1
  15. package/dist/cli/create.js +87 -19
  16. package/dist/cli/create.js.map +1 -1
  17. package/dist/cli/workspacify.d.ts.map +1 -1
  18. package/dist/cli/workspacify.js +12 -9
  19. package/dist/cli/workspacify.js.map +1 -1
  20. package/dist/client/AgentPanel.d.ts +1 -1
  21. package/dist/client/AgentPanel.d.ts.map +1 -1
  22. package/dist/client/AgentPanel.js +22 -1
  23. package/dist/client/AgentPanel.js.map +1 -1
  24. package/dist/client/FeedbackButton.d.ts +3 -2
  25. package/dist/client/FeedbackButton.d.ts.map +1 -1
  26. package/dist/client/FeedbackButton.js +18 -14
  27. package/dist/client/FeedbackButton.js.map +1 -1
  28. package/dist/client/agent-chat-adapter.d.ts.map +1 -1
  29. package/dist/client/agent-chat-adapter.js +254 -29
  30. package/dist/client/agent-chat-adapter.js.map +1 -1
  31. package/dist/client/agent-chat.d.ts +2 -0
  32. package/dist/client/agent-chat.d.ts.map +1 -1
  33. package/dist/client/agent-chat.js +11 -2
  34. package/dist/client/agent-chat.js.map +1 -1
  35. package/dist/client/builder-frame.d.ts +11 -0
  36. package/dist/client/builder-frame.d.ts.map +1 -1
  37. package/dist/client/builder-frame.js +40 -9
  38. package/dist/client/builder-frame.js.map +1 -1
  39. package/dist/client/composer/ComposerPlusMenu.js +1 -1
  40. package/dist/client/composer/ComposerPlusMenu.js.map +1 -1
  41. package/dist/client/composer/PromptComposer.d.ts +2 -0
  42. package/dist/client/composer/PromptComposer.d.ts.map +1 -1
  43. package/dist/client/composer/PromptComposer.js +3 -3
  44. package/dist/client/composer/PromptComposer.js.map +1 -1
  45. package/dist/client/composer/TiptapComposer.d.ts +3 -1
  46. package/dist/client/composer/TiptapComposer.d.ts.map +1 -1
  47. package/dist/client/composer/TiptapComposer.js +25 -13
  48. package/dist/client/composer/TiptapComposer.js.map +1 -1
  49. package/dist/client/composer/types.d.ts +1 -1
  50. package/dist/client/composer/types.d.ts.map +1 -1
  51. package/dist/client/composer/types.js.map +1 -1
  52. package/dist/client/extensions/EmbeddedExtension.d.ts +20 -0
  53. package/dist/client/extensions/EmbeddedExtension.d.ts.map +1 -0
  54. package/dist/client/{tools/EmbeddedTool.js → extensions/EmbeddedExtension.js} +41 -41
  55. package/dist/client/extensions/EmbeddedExtension.js.map +1 -0
  56. package/dist/client/extensions/ExtensionEditor.d.ts +5 -0
  57. package/dist/client/extensions/ExtensionEditor.d.ts.map +1 -0
  58. package/dist/client/extensions/ExtensionEditor.js +129 -0
  59. package/dist/client/extensions/ExtensionEditor.js.map +1 -0
  60. package/dist/client/{tools → extensions}/ExtensionSlot.d.ts +3 -3
  61. package/dist/client/extensions/ExtensionSlot.d.ts.map +1 -0
  62. package/dist/client/{tools → extensions}/ExtensionSlot.js +14 -14
  63. package/dist/client/extensions/ExtensionSlot.js.map +1 -0
  64. package/dist/client/extensions/ExtensionViewer.d.ts +5 -0
  65. package/dist/client/extensions/ExtensionViewer.d.ts.map +1 -0
  66. package/dist/client/{tools/ToolViewer.js → extensions/ExtensionViewer.js} +67 -65
  67. package/dist/client/extensions/ExtensionViewer.js.map +1 -0
  68. package/dist/client/extensions/ExtensionViewerPage.d.ts +2 -0
  69. package/dist/client/extensions/ExtensionViewerPage.d.ts.map +1 -0
  70. package/dist/client/{tools/ToolViewerPage.js → extensions/ExtensionViewerPage.js} +8 -8
  71. package/dist/client/extensions/ExtensionViewerPage.js.map +1 -0
  72. package/dist/client/extensions/ExtensionsListPage.d.ts +2 -0
  73. package/dist/client/extensions/ExtensionsListPage.d.ts.map +1 -0
  74. package/dist/client/extensions/ExtensionsListPage.js +67 -0
  75. package/dist/client/extensions/ExtensionsListPage.js.map +1 -0
  76. package/dist/client/extensions/ExtensionsSidebarSection.d.ts +2 -0
  77. package/dist/client/extensions/ExtensionsSidebarSection.d.ts.map +1 -0
  78. package/dist/client/{tools/ToolsSidebarSection.js → extensions/ExtensionsSidebarSection.js} +58 -58
  79. package/dist/client/extensions/ExtensionsSidebarSection.js.map +1 -0
  80. package/dist/client/{tools/tool-order.d.ts → extensions/extension-order.d.ts} +2 -2
  81. package/dist/client/extensions/extension-order.d.ts.map +1 -0
  82. package/dist/client/{tools/tool-order.js → extensions/extension-order.js} +3 -3
  83. package/dist/client/extensions/extension-order.js.map +1 -0
  84. package/dist/client/{tools → extensions}/iframe-bridge.d.ts +11 -11
  85. package/dist/client/extensions/iframe-bridge.d.ts.map +1 -0
  86. package/dist/client/{tools → extensions}/iframe-bridge.js +24 -24
  87. package/dist/client/extensions/iframe-bridge.js.map +1 -0
  88. package/dist/client/extensions/index.d.ts +14 -0
  89. package/dist/client/extensions/index.d.ts.map +1 -0
  90. package/dist/client/extensions/index.js +19 -0
  91. package/dist/client/extensions/index.js.map +1 -0
  92. package/dist/client/integrations/IntegrationsPanel.d.ts.map +1 -1
  93. package/dist/client/integrations/IntegrationsPanel.js +4 -1
  94. package/dist/client/integrations/IntegrationsPanel.js.map +1 -1
  95. package/dist/client/sse-event-processor.d.ts +2 -1
  96. package/dist/client/sse-event-processor.d.ts.map +1 -1
  97. package/dist/client/sse-event-processor.js +87 -6
  98. package/dist/client/sse-event-processor.js.map +1 -1
  99. package/dist/extensions/actions.d.ts +3 -0
  100. package/dist/extensions/actions.d.ts.map +1 -0
  101. package/dist/{tools → extensions}/actions.js +54 -51
  102. package/dist/extensions/actions.js.map +1 -0
  103. package/dist/{tools → extensions}/fetch-tool.d.ts +4 -0
  104. package/dist/extensions/fetch-tool.d.ts.map +1 -0
  105. package/dist/{tools → extensions}/fetch-tool.js +12 -7
  106. package/dist/extensions/fetch-tool.js.map +1 -0
  107. package/dist/extensions/html-shell.d.ts +56 -0
  108. package/dist/extensions/html-shell.d.ts.map +1 -0
  109. package/dist/{tools → extensions}/html-shell.js +101 -83
  110. package/dist/extensions/html-shell.js.map +1 -0
  111. package/dist/{tools → extensions}/proxy-security.d.ts +2 -2
  112. package/dist/extensions/proxy-security.d.ts.map +1 -0
  113. package/dist/{tools → extensions}/proxy-security.js +3 -3
  114. package/dist/extensions/proxy-security.js.map +1 -0
  115. package/dist/extensions/routes.d.ts +2 -0
  116. package/dist/extensions/routes.d.ts.map +1 -0
  117. package/dist/{tools → extensions}/routes.js +73 -69
  118. package/dist/extensions/routes.js.map +1 -0
  119. package/dist/{tools → extensions}/schema.d.ts +44 -38
  120. package/dist/extensions/schema.d.ts.map +1 -0
  121. package/dist/{tools → extensions}/schema.js +41 -34
  122. package/dist/extensions/schema.js.map +1 -0
  123. package/dist/extensions/slots/routes.d.ts +15 -0
  124. package/dist/extensions/slots/routes.d.ts.map +1 -0
  125. package/dist/{tools → extensions}/slots/routes.js +26 -26
  126. package/dist/extensions/slots/routes.js.map +1 -0
  127. package/dist/{tools → extensions}/slots/schema.d.ts +24 -21
  128. package/dist/extensions/slots/schema.d.ts.map +1 -0
  129. package/dist/extensions/slots/schema.js +79 -0
  130. package/dist/extensions/slots/schema.js.map +1 -0
  131. package/dist/extensions/slots/store.d.ts +66 -0
  132. package/dist/extensions/slots/store.d.ts.map +1 -0
  133. package/dist/extensions/slots/store.js +238 -0
  134. package/dist/extensions/slots/store.js.map +1 -0
  135. package/dist/extensions/store.d.ts +40 -0
  136. package/dist/extensions/store.d.ts.map +1 -0
  137. package/dist/{tools → extensions}/store.js +59 -54
  138. package/dist/extensions/store.js.map +1 -0
  139. package/dist/extensions/theme.d.ts.map +1 -0
  140. package/dist/extensions/theme.js.map +1 -0
  141. package/dist/{tools → extensions}/url-safety.d.ts +5 -3
  142. package/dist/extensions/url-safety.d.ts.map +1 -0
  143. package/dist/{tools → extensions}/url-safety.js +11 -4
  144. package/dist/extensions/url-safety.js.map +1 -0
  145. package/dist/server/action-discovery.d.ts +15 -0
  146. package/dist/server/action-discovery.d.ts.map +1 -1
  147. package/dist/server/action-discovery.js +45 -0
  148. package/dist/server/action-discovery.js.map +1 -1
  149. package/dist/server/agent-chat-plugin.d.ts.map +1 -1
  150. package/dist/server/agent-chat-plugin.js +12 -10
  151. package/dist/server/agent-chat-plugin.js.map +1 -1
  152. package/dist/server/auth.d.ts +5 -4
  153. package/dist/server/auth.d.ts.map +1 -1
  154. package/dist/server/auth.js +80 -28
  155. package/dist/server/auth.js.map +1 -1
  156. package/dist/server/core-routes-plugin.d.ts +15 -0
  157. package/dist/server/core-routes-plugin.d.ts.map +1 -1
  158. package/dist/server/core-routes-plugin.js +65 -13
  159. package/dist/server/core-routes-plugin.js.map +1 -1
  160. package/dist/server/csrf.d.ts +3 -2
  161. package/dist/server/csrf.d.ts.map +1 -1
  162. package/dist/server/csrf.js +3 -2
  163. package/dist/server/csrf.js.map +1 -1
  164. package/dist/server/google-oauth.d.ts.map +1 -1
  165. package/dist/server/google-oauth.js +15 -3
  166. package/dist/server/google-oauth.js.map +1 -1
  167. package/dist/server/index.d.ts +2 -2
  168. package/dist/server/index.d.ts.map +1 -1
  169. package/dist/server/index.js +1 -1
  170. package/dist/server/index.js.map +1 -1
  171. package/dist/shared/workspace-app-id.d.ts +1 -1
  172. package/dist/shared/workspace-app-id.d.ts.map +1 -1
  173. package/dist/shared/workspace-app-id.js +5 -1
  174. package/dist/shared/workspace-app-id.js.map +1 -1
  175. package/dist/templates/workspace-root/README.md +5 -4
  176. package/dist/usage/store.d.ts +1 -1
  177. package/dist/usage/store.d.ts.map +1 -1
  178. package/dist/usage/store.js +1 -1
  179. package/dist/usage/store.js.map +1 -1
  180. package/dist/vite/client.d.ts.map +1 -1
  181. package/dist/vite/client.js +17 -1
  182. package/dist/vite/client.js.map +1 -1
  183. package/docs/content/actions.md +10 -10
  184. package/docs/content/extensions.md +230 -0
  185. package/docs/content/key-concepts.md +2 -2
  186. package/docs/content/server.md +13 -13
  187. package/docs/content/sharing.md +2 -2
  188. package/docs/content/template-analytics.md +10 -0
  189. package/docs/content/template-calendar.md +10 -0
  190. package/docs/content/template-clips.md +10 -0
  191. package/docs/content/template-content.md +10 -0
  192. package/docs/content/template-dispatch.md +15 -0
  193. package/docs/content/template-forms.md +10 -0
  194. package/docs/content/template-mail.md +10 -0
  195. package/docs/content/template-slides.md +11 -1
  196. package/docs/content/template-starter.md +10 -0
  197. package/docs/content/template-video.md +10 -0
  198. package/docs/content/what-is-agent-native.md +1 -1
  199. package/package.json +22 -17
  200. package/src/templates/workspace-root/README.md +5 -4
  201. package/dist/client/tools/EmbeddedTool.d.ts +0 -20
  202. package/dist/client/tools/EmbeddedTool.d.ts.map +0 -1
  203. package/dist/client/tools/EmbeddedTool.js.map +0 -1
  204. package/dist/client/tools/ExtensionSlot.d.ts.map +0 -1
  205. package/dist/client/tools/ExtensionSlot.js.map +0 -1
  206. package/dist/client/tools/ToolEditor.d.ts +0 -5
  207. package/dist/client/tools/ToolEditor.d.ts.map +0 -1
  208. package/dist/client/tools/ToolEditor.js +0 -129
  209. package/dist/client/tools/ToolEditor.js.map +0 -1
  210. package/dist/client/tools/ToolViewer.d.ts +0 -5
  211. package/dist/client/tools/ToolViewer.d.ts.map +0 -1
  212. package/dist/client/tools/ToolViewer.js.map +0 -1
  213. package/dist/client/tools/ToolViewerPage.d.ts +0 -2
  214. package/dist/client/tools/ToolViewerPage.d.ts.map +0 -1
  215. package/dist/client/tools/ToolViewerPage.js.map +0 -1
  216. package/dist/client/tools/ToolsListPage.d.ts +0 -2
  217. package/dist/client/tools/ToolsListPage.d.ts.map +0 -1
  218. package/dist/client/tools/ToolsListPage.js +0 -67
  219. package/dist/client/tools/ToolsListPage.js.map +0 -1
  220. package/dist/client/tools/ToolsSidebarSection.d.ts +0 -2
  221. package/dist/client/tools/ToolsSidebarSection.d.ts.map +0 -1
  222. package/dist/client/tools/ToolsSidebarSection.js.map +0 -1
  223. package/dist/client/tools/iframe-bridge.d.ts.map +0 -1
  224. package/dist/client/tools/iframe-bridge.js.map +0 -1
  225. package/dist/client/tools/index.d.ts +0 -8
  226. package/dist/client/tools/index.d.ts.map +0 -1
  227. package/dist/client/tools/index.js +0 -8
  228. package/dist/client/tools/index.js.map +0 -1
  229. package/dist/client/tools/tool-order.d.ts.map +0 -1
  230. package/dist/client/tools/tool-order.js.map +0 -1
  231. package/dist/tools/actions.d.ts +0 -3
  232. package/dist/tools/actions.d.ts.map +0 -1
  233. package/dist/tools/actions.js.map +0 -1
  234. package/dist/tools/fetch-tool.d.ts.map +0 -1
  235. package/dist/tools/fetch-tool.js.map +0 -1
  236. package/dist/tools/html-shell.d.ts +0 -45
  237. package/dist/tools/html-shell.d.ts.map +0 -1
  238. package/dist/tools/html-shell.js.map +0 -1
  239. package/dist/tools/proxy-security.d.ts.map +0 -1
  240. package/dist/tools/proxy-security.js.map +0 -1
  241. package/dist/tools/routes.d.ts +0 -2
  242. package/dist/tools/routes.d.ts.map +0 -1
  243. package/dist/tools/routes.js.map +0 -1
  244. package/dist/tools/schema.d.ts.map +0 -1
  245. package/dist/tools/schema.js.map +0 -1
  246. package/dist/tools/slots/routes.d.ts +0 -15
  247. package/dist/tools/slots/routes.d.ts.map +0 -1
  248. package/dist/tools/slots/routes.js.map +0 -1
  249. package/dist/tools/slots/schema.d.ts.map +0 -1
  250. package/dist/tools/slots/schema.js +0 -76
  251. package/dist/tools/slots/schema.js.map +0 -1
  252. package/dist/tools/slots/store.d.ts +0 -66
  253. package/dist/tools/slots/store.d.ts.map +0 -1
  254. package/dist/tools/slots/store.js +0 -227
  255. package/dist/tools/slots/store.js.map +0 -1
  256. package/dist/tools/store.d.ts +0 -40
  257. package/dist/tools/store.d.ts.map +0 -1
  258. package/dist/tools/store.js.map +0 -1
  259. package/dist/tools/theme.d.ts.map +0 -1
  260. package/dist/tools/theme.js.map +0 -1
  261. package/dist/tools/url-safety.d.ts.map +0 -1
  262. package/dist/tools/url-safety.js.map +0 -1
  263. package/docs/content/tools.md +0 -205
  264. /package/dist/{tools → extensions}/theme.d.ts +0 -0
  265. /package/dist/{tools → extensions}/theme.js +0 -0
@@ -144,10 +144,11 @@ export declare function runAuthGuard(event: H3Event): Promise<Response | object
144
144
  * Resolution chain:
145
145
  * 1. ACCESS_TOKEN → check legacy cookie-based token sessions
146
146
  * 2. BYOA custom getSession → delegate to template callback
147
- * 3. Better Auth → check session via Better Auth API (cookie or Bearer)
148
- * 4. Legacy cookie → check an_session cookie in legacy sessions table
149
- * 5. Desktop SSO broker (Electron loopback only)
150
- * 6. Mobile _session query param promote to cookie
147
+ * 3. Bearer legacy session → check Authorization: Bearer against sessions
148
+ * 4. Better Auth → check session via Better Auth API (cookie or Bearer)
149
+ * 5. Legacy cookie check an_session cookie in legacy sessions table
150
+ * 6. Desktop SSO broker (Electron loopback only)
151
+ * 7. Mobile _session query param → promote to cookie
151
152
  *
152
153
  * Returns `null` for unauthenticated requests. There is no dev-mode bypass:
153
154
  * local development uses the same Better Auth signup flow as production. The
@@ -1 +1 @@
1
- {"version":3,"file":"auth.d.ts","sourceRoot":"","sources":["../../src/server/auth.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"auth.d.ts","sourceRoot":"","sources":["../../src/server/auth.ts"],"names":[],"mappings":"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"}
@@ -1,5 +1,5 @@
1
1
  import crypto from "node:crypto";
2
- import { defineEventHandler, getMethod, getQuery, getRequestIP, sendRedirect, setResponseHeader, setResponseStatus, getCookie, setCookie, deleteCookie, } from "h3";
2
+ import { defineEventHandler, getMethod, getQuery, getRequestIP, sendRedirect, setResponseHeader, setResponseStatus, getCookie, setCookie, deleteCookie, getHeader, } from "h3";
3
3
  // In h3 v2, `event.req` IS the web Request — but in Nitro's dev server (srvx
4
4
  // runtime), event.url and event.req share the same underlying URL object.
5
5
  // When registerMiddleware strips the mount prefix from event.url.pathname, it
@@ -216,6 +216,36 @@ function safeTokenMatch(input, tokens) {
216
216
  }
217
217
  return false;
218
218
  }
219
+ function getBearerSessionToken(event) {
220
+ const auth = getHeader(event, "authorization");
221
+ if (!auth)
222
+ return undefined;
223
+ const match = /^Bearer\s+(.+)$/i.exec(auth.trim());
224
+ return match?.[1]?.trim() || undefined;
225
+ }
226
+ async function getBearerLegacySession(event) {
227
+ const bearerToken = getBearerSessionToken(event);
228
+ if (!bearerToken)
229
+ return null;
230
+ const email = await getSessionEmail(bearerToken);
231
+ return email ? { email, token: bearerToken } : null;
232
+ }
233
+ function shouldExposeSessionTokenInBody(event) {
234
+ const origin = getHeader(event, "origin");
235
+ if (origin && DESKTOP_AUTH_TOKEN_BODY_ORIGINS.has(origin))
236
+ return true;
237
+ // Some native WebViews do not consistently emit an Origin header for
238
+ // programmatic fetches. The desktop app marks same-server requests with
239
+ // X-Request-Source; browsers can only use that cross-origin after our CORS
240
+ // allowlist has approved the origin, and same-origin pages already receive
241
+ // an equivalent httpOnly session cookie on successful login.
242
+ return !origin && getHeader(event, "x-request-source") === "clips-desktop";
243
+ }
244
+ function authLoginResponse(event, token, email) {
245
+ if (!shouldExposeSessionTokenInBody(event))
246
+ return { ok: true };
247
+ return email ? { ok: true, token, email } : { ok: true, token };
248
+ }
219
249
  // ---------------------------------------------------------------------------
220
250
  // Legacy session store — kept for backward compat (addSession/getSessionEmail)
221
251
  // Used by google-oauth.ts for mobile deep linking session creation.
@@ -331,6 +361,10 @@ function areGenericGoogleOAuthRoutesEnabled(app) {
331
361
  }
332
362
  const _desktopExchanges = new Map();
333
363
  const DESKTOP_EXCHANGE_ERROR_PREFIX = "__error__::";
364
+ const DESKTOP_AUTH_TOKEN_BODY_ORIGINS = new Set([
365
+ "tauri://localhost",
366
+ "http://localhost:1420",
367
+ ]);
334
368
  // 5-minute TTL for exchange entries (short — single-use tokens).
335
369
  const DESKTOP_EXCHANGE_TTL_MS = 5 * 60 * 1000;
336
370
  export function setDesktopExchange(flowId, token, email) {
@@ -465,9 +499,7 @@ function applyCorsHeaders(event) {
465
499
  // response would be missing the Allow-Origin header and the browser
466
500
  // blocks the response body (making it look like a network error
467
501
  // rather than "unauthenticated").
468
- const reqHeaders = (event.node?.req?.headers ?? {});
469
- const originRaw = reqHeaders["origin"];
470
- const origin = Array.isArray(originRaw) ? originRaw[0] : originRaw;
502
+ const origin = getHeader(event, "origin");
471
503
  if (!origin)
472
504
  return { hasOrigin: false, allowed: true };
473
505
  const allowedOrigin = getAllowedCorsOrigin(origin, {
@@ -633,6 +665,15 @@ function createAuthGuardFn() {
633
665
  p.endsWith(".woff")) {
634
666
  return;
635
667
  }
668
+ // React Router 7's lazy route discovery fetches `/__manifest?p=...` to
669
+ // resolve manifest patches for `<Link>`s the user might click. The
670
+ // auth fallback returning loginHtml here makes RR fail to parse the
671
+ // body as RSC, surfacing as a console error and (when the visitor
672
+ // already errored elsewhere) blocking the app from rendering. Let it
673
+ // through — it returns a tiny RSC-encoded manifest of the public
674
+ // route tree, no per-user data.
675
+ if (p === "/__manifest")
676
+ return;
636
677
  if (isPublicPath(normalizedUrl, publicPaths))
637
678
  return;
638
679
  const session = await getSession(event);
@@ -666,10 +707,11 @@ function mapBetterAuthSession(baSession) {
666
707
  * Resolution chain:
667
708
  * 1. ACCESS_TOKEN → check legacy cookie-based token sessions
668
709
  * 2. BYOA custom getSession → delegate to template callback
669
- * 3. Better Auth → check session via Better Auth API (cookie or Bearer)
670
- * 4. Legacy cookie → check an_session cookie in legacy sessions table
671
- * 5. Desktop SSO broker (Electron loopback only)
672
- * 6. Mobile _session query param promote to cookie
710
+ * 3. Bearer legacy session → check Authorization: Bearer against sessions
711
+ * 4. Better Auth → check session via Better Auth API (cookie or Bearer)
712
+ * 5. Legacy cookie check an_session cookie in legacy sessions table
713
+ * 6. Desktop SSO broker (Electron loopback only)
714
+ * 7. Mobile _session query param → promote to cookie
673
715
  *
674
716
  * Returns `null` for unauthenticated requests. There is no dev-mode bypass:
675
717
  * local development uses the same Better Auth signup flow as production. The
@@ -692,6 +734,9 @@ export async function getSession(event) {
692
734
  const session = await customGetSession(event);
693
735
  if (session)
694
736
  return session;
737
+ const bearerSession = await getBearerLegacySession(event);
738
+ if (bearerSession)
739
+ return bearerSession;
695
740
  // Desktop SSO broker: even with BYOA auth, fall back to the broker
696
741
  // for Electron requests so cross-template SSO works for custom-auth
697
742
  // templates too. Gated on `readDesktopSsoSafely` so a non-loopback
@@ -703,7 +748,12 @@ export async function getSession(event) {
703
748
  // Fall through to mobile _session check
704
749
  }
705
750
  else {
706
- // 3. Better Auth session (cookie or Bearer token)
751
+ // 3. Bearer legacy session. Desktop/native clients can persist a session
752
+ // token outside the WebView cookie jar and attach it to all app requests.
753
+ const bearerSession = await getBearerLegacySession(event);
754
+ if (bearerSession)
755
+ return bearerSession;
756
+ // 4. Better Auth session (cookie or Bearer token)
707
757
  try {
708
758
  const ba = getBetterAuthSync();
709
759
  if (ba) {
@@ -718,7 +768,7 @@ export async function getSession(event) {
718
768
  catch (e) {
719
769
  console.error("[auth] ba.api.getSession error:", e);
720
770
  }
721
- // 4. Legacy cookie fallback (for sessions created before migration)
771
+ // 5. Legacy cookie fallback (for sessions created before migration)
722
772
  const cookie = getCookie(event, COOKIE_NAME);
723
773
  if (cookie) {
724
774
  const email = await getSessionEmail(cookie);
@@ -726,7 +776,7 @@ export async function getSession(event) {
726
776
  return { email, token: cookie };
727
777
  }
728
778
  }
729
- // 5. Desktop SSO broker fallback.
779
+ // 6. Desktop SSO broker fallback.
730
780
  // Each template in the Electron desktop app has its own database, so
731
781
  // a session token created by one template doesn't resolve in another.
732
782
  // When an Electron request has no resolvable session, trust the
@@ -740,7 +790,7 @@ export async function getSession(event) {
740
790
  return { email: sso.email, token: sso.token };
741
791
  }
742
792
  }
743
- // 6. Mobile WebView bridge — _session query param
793
+ // 7. Mobile WebView bridge — _session query param
744
794
  const querySession = await promoteQuerySession(event);
745
795
  if (querySession)
746
796
  return querySession;
@@ -782,21 +832,11 @@ function setFrameworkSessionCookie(event, token) {
782
832
  }
783
833
  function isHttpsRequest(event) {
784
834
  try {
785
- const req = event.req ?? event.node?.req;
786
- const headers = req?.headers;
787
- const get = (k) => {
788
- if (!headers)
789
- return undefined;
790
- if (typeof headers.get === "function") {
791
- return headers.get(k) ?? undefined;
792
- }
793
- const v = headers[k];
794
- return Array.isArray(v) ? v[0] : v;
795
- };
796
- const xfProto = get("x-forwarded-proto");
835
+ const xfProto = getHeader(event, "x-forwarded-proto");
797
836
  if (xfProto && String(xfProto).split(",")[0].trim() === "https") {
798
837
  return true;
799
838
  }
839
+ const req = event.req ?? event.node?.req;
800
840
  const url = req?.url;
801
841
  if (typeof url === "string" && url.startsWith("https://"))
802
842
  return true;
@@ -1311,7 +1351,7 @@ async function mountBetterAuthRoutes(app, options) {
1311
1351
  path: "/",
1312
1352
  maxAge: sessionMaxAge,
1313
1353
  });
1314
- return { ok: true };
1354
+ return authLoginResponse(event, sessionToken, "user");
1315
1355
  }
1316
1356
  // Email/password login via Better Auth
1317
1357
  const email = body?.email?.trim?.()?.toLowerCase?.();
@@ -1339,7 +1379,7 @@ async function mountBetterAuthRoutes(app, options) {
1339
1379
  expiresAt: Date.now() + sessionMaxAge * 1000,
1340
1380
  });
1341
1381
  }
1342
- return { ok: true };
1382
+ return authLoginResponse(event, result.token, email);
1343
1383
  }
1344
1384
  // signInEmail succeeded but returned no token — typically means the
1345
1385
  // email isn't verified yet. Don't return { ok: true } without a
@@ -1390,6 +1430,9 @@ async function mountBetterAuthRoutes(app, options) {
1390
1430
  const cookie = getCookie(event, COOKIE_NAME);
1391
1431
  if (cookie)
1392
1432
  await removeSession(cookie);
1433
+ const bearerToken = getBearerSessionToken(event);
1434
+ if (bearerToken)
1435
+ await removeSession(bearerToken);
1393
1436
  deleteCookie(event, COOKIE_NAME, { path: "/" });
1394
1437
  try {
1395
1438
  await auth.api.signOut({ headers: event.headers });
@@ -1526,12 +1569,15 @@ function mountTokenOnlyRoutes(app, accessTokens, publicPaths = []) {
1526
1569
  path: "/",
1527
1570
  maxAge: sessionMaxAge,
1528
1571
  });
1529
- return { ok: true };
1572
+ return authLoginResponse(event, sessionToken, "user");
1530
1573
  }));
1531
1574
  app.use("/_agent-native/auth/logout", defineEventHandler(async (event) => {
1532
1575
  const cookie = getCookie(event, COOKIE_NAME);
1533
1576
  if (cookie)
1534
1577
  await removeSession(cookie);
1578
+ const bearerToken = getBearerSessionToken(event);
1579
+ if (bearerToken)
1580
+ await removeSession(bearerToken);
1535
1581
  deleteCookie(event, COOKIE_NAME, { path: "/" });
1536
1582
  if (isElectronRequest(event))
1537
1583
  await clearDesktopSso();
@@ -1586,7 +1632,7 @@ function mountAuthFallbackRoutes(app) {
1586
1632
  expiresAt: Date.now() + sessionMaxAge * 1000,
1587
1633
  });
1588
1634
  }
1589
- return { ok: true };
1635
+ return authLoginResponse(event, result.token, email);
1590
1636
  }
1591
1637
  setResponseStatus(event, 403);
1592
1638
  return {
@@ -1630,6 +1676,9 @@ function mountAuthFallbackRoutes(app) {
1630
1676
  const cookie = getCookie(event, COOKIE_NAME);
1631
1677
  if (cookie)
1632
1678
  await removeSession(cookie);
1679
+ const bearerToken = getBearerSessionToken(event);
1680
+ if (bearerToken)
1681
+ await removeSession(bearerToken);
1633
1682
  deleteCookie(event, COOKIE_NAME, { path: "/" });
1634
1683
  try {
1635
1684
  const auth = await getBetterAuth();
@@ -1743,6 +1792,9 @@ export async function autoMountAuth(app, options = {}) {
1743
1792
  const cookie = getCookie(event, COOKIE_NAME);
1744
1793
  if (cookie)
1745
1794
  await removeSession(cookie);
1795
+ const bearerToken = getBearerSessionToken(event);
1796
+ if (bearerToken)
1797
+ await removeSession(bearerToken);
1746
1798
  deleteCookie(event, COOKIE_NAME, { path: "/" });
1747
1799
  if (isElectronRequest(event))
1748
1800
  await clearDesktopSso();