@agent-native/core 0.7.1 → 0.7.2

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 (242) hide show
  1. package/dist/action.d.ts +8 -0
  2. package/dist/action.d.ts.map +1 -1
  3. package/dist/action.js +18 -0
  4. package/dist/action.js.map +1 -1
  5. package/dist/agent/production-agent.d.ts +9 -0
  6. package/dist/agent/production-agent.d.ts.map +1 -1
  7. package/dist/agent/production-agent.js +148 -36
  8. package/dist/agent/production-agent.js.map +1 -1
  9. package/dist/agent/run-manager.d.ts.map +1 -1
  10. package/dist/agent/run-manager.js +20 -1
  11. package/dist/agent/run-manager.js.map +1 -1
  12. package/dist/agent/run-store.d.ts +14 -0
  13. package/dist/agent/run-store.d.ts.map +1 -1
  14. package/dist/agent/run-store.js +63 -6
  15. package/dist/agent/run-store.js.map +1 -1
  16. package/dist/agent/types.d.ts +2 -0
  17. package/dist/agent/types.d.ts.map +1 -1
  18. package/dist/cli/create.js +1 -1
  19. package/dist/cli/create.js.map +1 -1
  20. package/dist/cli/setup-agents.d.ts.map +1 -1
  21. package/dist/cli/setup-agents.js +0 -2
  22. package/dist/cli/setup-agents.js.map +1 -1
  23. package/dist/cli/templates-meta.d.ts +52 -0
  24. package/dist/cli/templates-meta.d.ts.map +1 -0
  25. package/dist/cli/templates-meta.js +165 -0
  26. package/dist/cli/templates-meta.js.map +1 -0
  27. package/dist/client/AgentPanel.d.ts +5 -1
  28. package/dist/client/AgentPanel.d.ts.map +1 -1
  29. package/dist/client/AgentPanel.js +279 -30
  30. package/dist/client/AgentPanel.js.map +1 -1
  31. package/dist/client/AssistantChat.d.ts +2 -1
  32. package/dist/client/AssistantChat.d.ts.map +1 -1
  33. package/dist/client/AssistantChat.js +172 -40
  34. package/dist/client/AssistantChat.js.map +1 -1
  35. package/dist/client/ConnectBuilderCard.d.ts +21 -0
  36. package/dist/client/ConnectBuilderCard.d.ts.map +1 -0
  37. package/dist/client/ConnectBuilderCard.js +196 -0
  38. package/dist/client/ConnectBuilderCard.js.map +1 -0
  39. package/dist/client/FeedbackButton.d.ts +15 -0
  40. package/dist/client/FeedbackButton.d.ts.map +1 -0
  41. package/dist/client/FeedbackButton.js +72 -0
  42. package/dist/client/FeedbackButton.js.map +1 -0
  43. package/dist/client/IframeEmbed.d.ts +17 -0
  44. package/dist/client/IframeEmbed.d.ts.map +1 -0
  45. package/dist/client/IframeEmbed.js +108 -0
  46. package/dist/client/IframeEmbed.js.map +1 -0
  47. package/dist/client/MultiTabAssistantChat.d.ts.map +1 -1
  48. package/dist/client/MultiTabAssistantChat.js +34 -7
  49. package/dist/client/MultiTabAssistantChat.js.map +1 -1
  50. package/dist/client/agent-chat-adapter.d.ts.map +1 -1
  51. package/dist/client/agent-chat-adapter.js +34 -15
  52. package/dist/client/agent-chat-adapter.js.map +1 -1
  53. package/dist/client/agent-chat.d.ts +6 -0
  54. package/dist/client/agent-chat.d.ts.map +1 -1
  55. package/dist/client/agent-chat.js +7 -0
  56. package/dist/client/agent-chat.js.map +1 -1
  57. package/dist/client/composer/MentionPopover.d.ts.map +1 -1
  58. package/dist/client/composer/MentionPopover.js +27 -24
  59. package/dist/client/composer/MentionPopover.js.map +1 -1
  60. package/dist/client/composer/TiptapComposer.d.ts +3 -1
  61. package/dist/client/composer/TiptapComposer.d.ts.map +1 -1
  62. package/dist/client/composer/TiptapComposer.js +21 -4
  63. package/dist/client/composer/TiptapComposer.js.map +1 -1
  64. package/dist/client/embed.d.ts +28 -0
  65. package/dist/client/embed.d.ts.map +1 -0
  66. package/dist/client/embed.js +50 -0
  67. package/dist/client/embed.js.map +1 -0
  68. package/dist/client/index.d.ts +4 -1
  69. package/dist/client/index.d.ts.map +1 -1
  70. package/dist/client/index.js +4 -1
  71. package/dist/client/index.js.map +1 -1
  72. package/dist/client/integrations/IntegrationsPanel.js +2 -2
  73. package/dist/client/integrations/IntegrationsPanel.js.map +1 -1
  74. package/dist/client/onboarding/OnboardingBanner.js +2 -2
  75. package/dist/client/onboarding/OnboardingBanner.js.map +1 -1
  76. package/dist/client/onboarding/OnboardingPanel.d.ts.map +1 -1
  77. package/dist/client/onboarding/OnboardingPanel.js +139 -52
  78. package/dist/client/onboarding/OnboardingPanel.js.map +1 -1
  79. package/dist/client/onboarding/SetupButton.d.ts.map +1 -1
  80. package/dist/client/onboarding/SetupButton.js +13 -3
  81. package/dist/client/onboarding/SetupButton.js.map +1 -1
  82. package/dist/client/org/TeamPage.d.ts.map +1 -1
  83. package/dist/client/org/TeamPage.js +12 -7
  84. package/dist/client/org/TeamPage.js.map +1 -1
  85. package/dist/client/resources/ResourceEditor.d.ts.map +1 -1
  86. package/dist/client/resources/ResourceEditor.js +57 -2
  87. package/dist/client/resources/ResourceEditor.js.map +1 -1
  88. package/dist/client/resources/ResourceTree.d.ts +5 -1
  89. package/dist/client/resources/ResourceTree.d.ts.map +1 -1
  90. package/dist/client/resources/ResourceTree.js +17 -10
  91. package/dist/client/resources/ResourceTree.js.map +1 -1
  92. package/dist/client/resources/ResourcesPanel.d.ts.map +1 -1
  93. package/dist/client/resources/ResourcesPanel.js +12 -10
  94. package/dist/client/resources/ResourcesPanel.js.map +1 -1
  95. package/dist/client/settings/AgentsSection.d.ts.map +1 -1
  96. package/dist/client/settings/AgentsSection.js +6 -3
  97. package/dist/client/settings/AgentsSection.js.map +1 -1
  98. package/dist/client/settings/ComingSoonSection.js +1 -1
  99. package/dist/client/settings/ComingSoonSection.js.map +1 -1
  100. package/dist/client/settings/LLMSection.d.ts.map +1 -1
  101. package/dist/client/settings/LLMSection.js +1 -1
  102. package/dist/client/settings/LLMSection.js.map +1 -1
  103. package/dist/client/settings/SettingsPanel.d.ts.map +1 -1
  104. package/dist/client/settings/SettingsPanel.js +16 -23
  105. package/dist/client/settings/SettingsPanel.js.map +1 -1
  106. package/dist/client/settings/SettingsSection.js +2 -2
  107. package/dist/client/settings/SettingsSection.js.map +1 -1
  108. package/dist/client/settings/UsageSection.d.ts +2 -0
  109. package/dist/client/settings/UsageSection.d.ts.map +1 -0
  110. package/dist/client/settings/UsageSection.js +70 -0
  111. package/dist/client/settings/UsageSection.js.map +1 -0
  112. package/dist/client/use-action.d.ts.map +1 -1
  113. package/dist/client/use-action.js +67 -4
  114. package/dist/client/use-action.js.map +1 -1
  115. package/dist/client/use-db-sync.d.ts +25 -2
  116. package/dist/client/use-db-sync.d.ts.map +1 -1
  117. package/dist/client/use-db-sync.js +62 -1
  118. package/dist/client/use-db-sync.js.map +1 -1
  119. package/dist/client/use-dev-mode.d.ts.map +1 -1
  120. package/dist/client/use-dev-mode.js +16 -1
  121. package/dist/client/use-dev-mode.js.map +1 -1
  122. package/dist/db/client.d.ts +12 -0
  123. package/dist/db/client.d.ts.map +1 -1
  124. package/dist/db/client.js +89 -2
  125. package/dist/db/client.js.map +1 -1
  126. package/dist/db/create-get-db.d.ts +11 -0
  127. package/dist/db/create-get-db.d.ts.map +1 -1
  128. package/dist/db/create-get-db.js +47 -3
  129. package/dist/db/create-get-db.js.map +1 -1
  130. package/dist/db/migrations.d.ts.map +1 -1
  131. package/dist/db/migrations.js +62 -5
  132. package/dist/db/migrations.js.map +1 -1
  133. package/dist/index.d.ts +1 -0
  134. package/dist/index.d.ts.map +1 -1
  135. package/dist/index.js +2 -0
  136. package/dist/index.js.map +1 -1
  137. package/dist/jobs/scheduler.d.ts.map +1 -1
  138. package/dist/jobs/scheduler.js +7 -2
  139. package/dist/jobs/scheduler.js.map +1 -1
  140. package/dist/oauth-tokens/google-refresh.d.ts +31 -0
  141. package/dist/oauth-tokens/google-refresh.d.ts.map +1 -0
  142. package/dist/oauth-tokens/google-refresh.js +115 -0
  143. package/dist/oauth-tokens/google-refresh.js.map +1 -0
  144. package/dist/oauth-tokens/index.d.ts +1 -0
  145. package/dist/oauth-tokens/index.d.ts.map +1 -1
  146. package/dist/oauth-tokens/index.js +1 -0
  147. package/dist/oauth-tokens/index.js.map +1 -1
  148. package/dist/onboarding/default-steps.d.ts.map +1 -1
  149. package/dist/onboarding/default-steps.js +57 -18
  150. package/dist/onboarding/default-steps.js.map +1 -1
  151. package/dist/org/context.js +1 -1
  152. package/dist/org/handlers.d.ts.map +1 -1
  153. package/dist/org/handlers.js +35 -10
  154. package/dist/org/handlers.js.map +1 -1
  155. package/dist/org/plugin.d.ts.map +1 -1
  156. package/dist/org/plugin.js +37 -22
  157. package/dist/org/plugin.js.map +1 -1
  158. package/dist/resources/handlers.js +1 -1
  159. package/dist/resources/handlers.js.map +1 -1
  160. package/dist/resources/metadata.d.ts.map +1 -1
  161. package/dist/resources/metadata.js +2 -2
  162. package/dist/resources/metadata.js.map +1 -1
  163. package/dist/resources/store.d.ts.map +1 -1
  164. package/dist/resources/store.js +27 -1
  165. package/dist/resources/store.js.map +1 -1
  166. package/dist/scripts/db/patch.d.ts.map +1 -1
  167. package/dist/scripts/db/patch.js +273 -11
  168. package/dist/scripts/db/patch.js.map +1 -1
  169. package/dist/server/action-discovery.d.ts.map +1 -1
  170. package/dist/server/action-discovery.js +2 -0
  171. package/dist/server/action-discovery.js.map +1 -1
  172. package/dist/server/action-routes.d.ts.map +1 -1
  173. package/dist/server/action-routes.js +26 -0
  174. package/dist/server/action-routes.js.map +1 -1
  175. package/dist/server/agent-chat-plugin.d.ts +12 -0
  176. package/dist/server/agent-chat-plugin.d.ts.map +1 -1
  177. package/dist/server/agent-chat-plugin.js +495 -48
  178. package/dist/server/agent-chat-plugin.js.map +1 -1
  179. package/dist/server/agent-discovery.js +2 -2
  180. package/dist/server/agent-discovery.js.map +1 -1
  181. package/dist/server/agent-teams.d.ts.map +1 -1
  182. package/dist/server/agent-teams.js +21 -58
  183. package/dist/server/agent-teams.js.map +1 -1
  184. package/dist/server/auth.d.ts +6 -0
  185. package/dist/server/auth.d.ts.map +1 -1
  186. package/dist/server/auth.js +284 -41
  187. package/dist/server/auth.js.map +1 -1
  188. package/dist/server/better-auth-instance.d.ts +1 -1
  189. package/dist/server/better-auth-instance.d.ts.map +1 -1
  190. package/dist/server/better-auth-instance.js +70 -4
  191. package/dist/server/better-auth-instance.js.map +1 -1
  192. package/dist/server/builder-browser.d.ts +21 -0
  193. package/dist/server/builder-browser.d.ts.map +1 -1
  194. package/dist/server/builder-browser.js +67 -4
  195. package/dist/server/builder-browser.js.map +1 -1
  196. package/dist/server/core-routes-plugin.d.ts.map +1 -1
  197. package/dist/server/core-routes-plugin.js +122 -4
  198. package/dist/server/core-routes-plugin.js.map +1 -1
  199. package/dist/server/desktop-sso.d.ts +30 -0
  200. package/dist/server/desktop-sso.d.ts.map +1 -0
  201. package/dist/server/desktop-sso.js +74 -0
  202. package/dist/server/desktop-sso.js.map +1 -0
  203. package/dist/server/email.d.ts +23 -0
  204. package/dist/server/email.d.ts.map +1 -0
  205. package/dist/server/email.js +105 -0
  206. package/dist/server/email.js.map +1 -0
  207. package/dist/server/framework-request-handler.d.ts.map +1 -1
  208. package/dist/server/framework-request-handler.js +29 -0
  209. package/dist/server/framework-request-handler.js.map +1 -1
  210. package/dist/server/google-oauth.d.ts.map +1 -1
  211. package/dist/server/google-oauth.js +19 -3
  212. package/dist/server/google-oauth.js.map +1 -1
  213. package/dist/server/local-migration.d.ts +9 -0
  214. package/dist/server/local-migration.d.ts.map +1 -1
  215. package/dist/server/local-migration.js +44 -14
  216. package/dist/server/local-migration.js.map +1 -1
  217. package/dist/server/oauth-helpers.d.ts +2 -0
  218. package/dist/server/oauth-helpers.d.ts.map +1 -1
  219. package/dist/server/oauth-helpers.js +2 -0
  220. package/dist/server/oauth-helpers.js.map +1 -1
  221. package/dist/server/onboarding-html.d.ts +6 -0
  222. package/dist/server/onboarding-html.d.ts.map +1 -1
  223. package/dist/server/onboarding-html.js +229 -25
  224. package/dist/server/onboarding-html.js.map +1 -1
  225. package/dist/server/poll.d.ts.map +1 -1
  226. package/dist/server/poll.js +48 -0
  227. package/dist/server/poll.js.map +1 -1
  228. package/dist/templates/default/.agents/skills/inline-embeds/SKILL.md +88 -0
  229. package/dist/usage/store.d.ts +74 -12
  230. package/dist/usage/store.d.ts.map +1 -1
  231. package/dist/usage/store.js +210 -44
  232. package/dist/usage/store.js.map +1 -1
  233. package/dist/vite/client.d.ts.map +1 -1
  234. package/dist/vite/client.js +55 -0
  235. package/dist/vite/client.js.map +1 -1
  236. package/docs/content/deployment.md +59 -2
  237. package/docs/content/resources.md +9 -9
  238. package/docs/content/workspace-management.md +2 -2
  239. package/package.json +3 -3
  240. package/src/templates/default/.agents/skills/inline-embeds/SKILL.md +88 -0
  241. /package/dist/templates/workspace-core/{skills → .agents/skills}/company-policies/SKILL.md +0 -0
  242. /package/src/templates/workspace-core/{skills → .agents/skills}/company-policies/SKILL.md +0 -0
@@ -1,6 +1,6 @@
1
1
  interface QueryClient {
2
- invalidateQueries(opts: {
3
- queryKey: string[];
2
+ invalidateQueries(opts?: {
3
+ queryKey?: string[];
4
4
  }): void;
5
5
  }
6
6
  /**
@@ -31,5 +31,28 @@ export declare function useDbSync(options?: {
31
31
  }): void;
32
32
  /** @deprecated Use useDbSync instead */
33
33
  export declare const useFileWatcher: typeof useDbSync;
34
+ /**
35
+ * Subscribe to `refresh-screen` events from the agent. Returns an integer
36
+ * that increments every time the agent invokes the framework's `refresh-screen`
37
+ * tool. Apply it as a React `key` on the main content wrapper (the part
38
+ * OUTSIDE the agent chat sidebar) so that region remounts and re-fetches its
39
+ * data while the chat, sidebar, and any other persistent chrome keep their
40
+ * in-flight state.
41
+ *
42
+ * Usage in a template's root:
43
+ *
44
+ * const screenKey = useScreenRefreshKey();
45
+ * return (
46
+ * <AppLayout>
47
+ * <div key={screenKey}>
48
+ * <Outlet />
49
+ * </div>
50
+ * </AppLayout>
51
+ * );
52
+ */
53
+ export declare function useScreenRefreshKey(options?: {
54
+ pollUrl?: string;
55
+ interval?: number;
56
+ }): number;
34
57
  export {};
35
58
  //# sourceMappingURL=use-db-sync.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"use-db-sync.d.ts","sourceRoot":"","sources":["../../src/client/use-db-sync.ts"],"names":[],"mappings":"AAEA,UAAU,WAAW;IACnB,iBAAiB,CAAC,IAAI,EAAE;QAAE,QAAQ,EAAE,MAAM,EAAE,CAAA;KAAE,GAAG,IAAI,CAAC;CACvD;AAED;;;;;;;;;;;;;;;GAeG;AACH,wBAAgB,SAAS,CACvB,OAAO,GAAE;IACP,WAAW,CAAC,EAAE,WAAW,CAAC;IAC1B,SAAS,CAAC,EAAE,MAAM,EAAE,CAAC;IACrB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,sCAAsC;IACtC,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,OAAO,CAAC,EAAE,CAAC,IAAI,EAAE,GAAG,KAAK,IAAI,CAAC;IAC9B,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,YAAY,CAAC,EAAE,MAAM,CAAC;CAClB,GACL,IAAI,CAoEN;AAED,wCAAwC;AACxC,eAAO,MAAM,cAAc,kBAAY,CAAC"}
1
+ {"version":3,"file":"use-db-sync.d.ts","sourceRoot":"","sources":["../../src/client/use-db-sync.ts"],"names":[],"mappings":"AAEA,UAAU,WAAW;IACnB,iBAAiB,CAAC,IAAI,CAAC,EAAE;QAAE,QAAQ,CAAC,EAAE,MAAM,EAAE,CAAA;KAAE,GAAG,IAAI,CAAC;CACzD;AAED;;;;;;;;;;;;;;;GAeG;AACH,wBAAgB,SAAS,CACvB,OAAO,GAAE;IACP,WAAW,CAAC,EAAE,WAAW,CAAC;IAC1B,SAAS,CAAC,EAAE,MAAM,EAAE,CAAC;IACrB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,sCAAsC;IACtC,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,OAAO,CAAC,EAAE,CAAC,IAAI,EAAE,GAAG,KAAK,IAAI,CAAC;IAC9B,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,YAAY,CAAC,EAAE,MAAM,CAAC;CAClB,GACL,IAAI,CA4EN;AAED,wCAAwC;AACxC,eAAO,MAAM,cAAc,kBAAY,CAAC;AAExC;;;;;;;;;;;;;;;;;;GAkBG;AACH,wBAAgB,mBAAmB,CACjC,OAAO,GAAE;IAAE,OAAO,CAAC,EAAE,MAAM,CAAC;IAAC,QAAQ,CAAC,EAAE,MAAM,CAAA;CAAO,GACpD,MAAM,CAqCR"}
@@ -1,4 +1,4 @@
1
- import { useEffect, useRef } from "react";
1
+ import { useEffect, useRef, useState } from "react";
2
2
  /**
3
3
  * Hook that polls /_agent-native/poll for DB change events and invalidates
4
4
  * react-query caches when changes are detected.
@@ -45,6 +45,13 @@ export function useDbSync(options = {}) {
45
45
  for (const key of keysRef.current) {
46
46
  queryClient.invalidateQueries({ queryKey: [key] });
47
47
  }
48
+ // Framework-level invalidation: useActionQuery caches under the
49
+ // ["action", ...] key prefix. We always invalidate that on any
50
+ // non-own change event so that any mutating action (agent or
51
+ // HTTP) auto-refreshes the UI — regardless of how the template
52
+ // configured queryKeys / onEvent. Templates still get their
53
+ // per-key list and onEvent callback for anything else.
54
+ queryClient.invalidateQueries({ queryKey: ["action"] });
48
55
  }
49
56
  // Always forward all events to onEvent — templates can decide
50
57
  for (const evt of events) {
@@ -71,4 +78,58 @@ export function useDbSync(options = {}) {
71
78
  }
72
79
  /** @deprecated Use useDbSync instead */
73
80
  export const useFileWatcher = useDbSync;
81
+ /**
82
+ * Subscribe to `refresh-screen` events from the agent. Returns an integer
83
+ * that increments every time the agent invokes the framework's `refresh-screen`
84
+ * tool. Apply it as a React `key` on the main content wrapper (the part
85
+ * OUTSIDE the agent chat sidebar) so that region remounts and re-fetches its
86
+ * data while the chat, sidebar, and any other persistent chrome keep their
87
+ * in-flight state.
88
+ *
89
+ * Usage in a template's root:
90
+ *
91
+ * const screenKey = useScreenRefreshKey();
92
+ * return (
93
+ * <AppLayout>
94
+ * <div key={screenKey}>
95
+ * <Outlet />
96
+ * </div>
97
+ * </AppLayout>
98
+ * );
99
+ */
100
+ export function useScreenRefreshKey(options = {}) {
101
+ const { pollUrl = "/_agent-native/poll", interval = 2000 } = options;
102
+ const [key, setKey] = useState(0);
103
+ useEffect(() => {
104
+ let versionRef = 0;
105
+ let timer = null;
106
+ let stopped = false;
107
+ async function poll() {
108
+ if (stopped)
109
+ return;
110
+ try {
111
+ const res = await fetch(`${pollUrl}?since=${versionRef}`);
112
+ if (res.ok) {
113
+ const data = (await res.json());
114
+ if (data.events?.some((e) => e.source === "screen-refresh")) {
115
+ setKey((k) => k + 1);
116
+ }
117
+ versionRef = data.version;
118
+ }
119
+ }
120
+ catch {
121
+ // Network error — retry on next interval.
122
+ }
123
+ if (!stopped)
124
+ timer = setTimeout(poll, interval);
125
+ }
126
+ poll();
127
+ return () => {
128
+ stopped = true;
129
+ if (timer)
130
+ clearTimeout(timer);
131
+ };
132
+ }, [pollUrl, interval]);
133
+ return key;
134
+ }
74
135
  //# sourceMappingURL=use-db-sync.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"use-db-sync.js","sourceRoot":"","sources":["../../src/client/use-db-sync.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,EAAE,MAAM,OAAO,CAAC;AAM1C;;;;;;;;;;;;;;;GAeG;AACH,MAAM,UAAU,SAAS,CACvB,UASI,EAAE;IAEN,MAAM,EACJ,WAAW,EACX,SAAS,GAAG,CAAC,MAAM,CAAC,EACpB,OAAO,GAAG,OAAO,CAAC,SAAS,IAAI,qBAAqB,EACpD,QAAQ,GAAG,IAAI,GAChB,GAAG,OAAO,CAAC;IAEZ,MAAM,UAAU,GAAG,MAAM,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC;IAC3C,UAAU,CAAC,OAAO,GAAG,OAAO,CAAC,OAAO,CAAC;IAErC,MAAM,OAAO,GAAG,MAAM,CAAC,SAAS,CAAC,CAAC;IAClC,OAAO,CAAC,OAAO,GAAG,SAAS,CAAC;IAE5B,MAAM,eAAe,GAAG,MAAM,CAAC,OAAO,CAAC,YAAY,CAAC,CAAC;IACrD,eAAe,CAAC,OAAO,GAAG,OAAO,CAAC,YAAY,CAAC;IAE/C,SAAS,CAAC,GAAG,EAAE;QACb,IAAI,UAAU,GAAG,CAAC,CAAC;QACnB,IAAI,KAAK,GAAyC,IAAI,CAAC;QACvD,IAAI,OAAO,GAAG,KAAK,CAAC;QAEpB,KAAK,UAAU,IAAI;YACjB,IAAI,OAAO;gBAAE,OAAO;YACpB,IAAI,CAAC;gBACH,MAAM,GAAG,GAAG,MAAM,KAAK,CAAC,GAAG,OAAO,UAAU,UAAU,EAAE,CAAC,CAAC;gBAC1D,IAAI,CAAC,GAAG,CAAC,EAAE;oBAAE,MAAM,IAAI,KAAK,CAAC,OAAO,GAAG,GAAG,CAAC,MAAM,CAAC,CAAC;gBACnD,MAAM,IAAI,GAAG,MAAM,GAAG,CAAC,IAAI,EAAE,CAAC;gBAC9B,MAAM,EAAE,OAAO,EAAE,MAAM,EAAE,GAAG,IAG3B,CAAC;gBAEF,IAAI,MAAM,CAAC,MAAM,GAAG,CAAC,IAAI,WAAW,EAAE,CAAC;oBACrC,MAAM,MAAM,GAAG,eAAe,CAAC,OAAO,CAAC;oBACvC,MAAM,QAAQ,GAAG,MAAM;wBACrB,CAAC,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,CAAM,EAAE,EAAE,CAAC,CAAC,CAAC,aAAa,KAAK,MAAM,CAAC;wBACvD,CAAC,CAAC,MAAM,CAAC;oBAEX,IAAI,QAAQ,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;wBACxB,KAAK,MAAM,GAAG,IAAI,OAAO,CAAC,OAAO,EAAE,CAAC;4BAClC,WAAW,CAAC,iBAAiB,CAAC,EAAE,QAAQ,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;wBACrD,CAAC;oBACH,CAAC;oBAED,8DAA8D;oBAC9D,KAAK,MAAM,GAAG,IAAI,MAAM,EAAE,CAAC;wBACzB,UAAU,CAAC,OAAO,EAAE,CAAC,GAAG,CAAC,CAAC;oBAC5B,CAAC;gBACH,CAAC;gBAED,UAAU,GAAG,OAAO,CAAC;YACvB,CAAC;YAAC,MAAM,CAAC;gBACP,8CAA8C;YAChD,CAAC;YACD,IAAI,CAAC,OAAO,EAAE,CAAC;gBACb,KAAK,GAAG,UAAU,CAAC,IAAI,EAAE,QAAQ,CAAC,CAAC;YACrC,CAAC;QACH,CAAC;QAED,2BAA2B;QAC3B,IAAI,EAAE,CAAC;QAEP,OAAO,GAAG,EAAE;YACV,OAAO,GAAG,IAAI,CAAC;YACf,IAAI,KAAK;gBAAE,YAAY,CAAC,KAAK,CAAC,CAAC;QACjC,CAAC,CAAC;IACJ,CAAC,EAAE,CAAC,OAAO,EAAE,WAAW,EAAE,QAAQ,CAAC,CAAC,CAAC;AACvC,CAAC;AAED,wCAAwC;AACxC,MAAM,CAAC,MAAM,cAAc,GAAG,SAAS,CAAC"}
1
+ {"version":3,"file":"use-db-sync.js","sourceRoot":"","sources":["../../src/client/use-db-sync.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"use-dev-mode.d.ts","sourceRoot":"","sources":["../../src/client/use-dev-mode.ts"],"names":[],"mappings":"AAmCA;;;GAGG;AACH,wBAAgB,UAAU,CAAC,OAAO,SAA8B,GAAG;IACjE,SAAS,EAAE,OAAO,CAAC;IACnB,SAAS,EAAE,OAAO,CAAC;IACnB,SAAS,EAAE,OAAO,CAAC;IACnB,UAAU,EAAE,CAAC,OAAO,EAAE,OAAO,KAAK,OAAO,CAAC,IAAI,CAAC,CAAC;CACjD,CAiDA"}
1
+ {"version":3,"file":"use-dev-mode.d.ts","sourceRoot":"","sources":["../../src/client/use-dev-mode.ts"],"names":[],"mappings":"AAkDA;;;GAGG;AACH,wBAAgB,UAAU,CAAC,OAAO,SAA8B,GAAG;IACjE,SAAS,EAAE,OAAO,CAAC;IACnB,SAAS,EAAE,OAAO,CAAC;IACnB,SAAS,EAAE,OAAO,CAAC;IACnB,UAAU,EAAE,CAAC,OAAO,EAAE,OAAO,KAAK,OAAO,CAAC,IAAI,CAAC,CAAC;CACjD,CAiDA"}
@@ -6,6 +6,12 @@ function notifyListeners(state) {
6
6
  cached = state;
7
7
  listeners.forEach((fn) => fn(state));
8
8
  }
9
+ function isLocalhostHostname() {
10
+ if (typeof window === "undefined")
11
+ return false;
12
+ const h = window.location.hostname;
13
+ return h === "localhost" || h === "127.0.0.1" || h === "::1";
14
+ }
9
15
  function fetchDevMode(apiBase) {
10
16
  if (!fetchPromise) {
11
17
  fetchPromise = fetch(`${apiBase}/mode`)
@@ -19,7 +25,16 @@ function fetchDevMode(apiBase) {
19
25
  return cached;
20
26
  })
21
27
  .catch(() => {
22
- cached = { devMode: false, canToggle: false };
28
+ // If the server isn't reachable (503 during boot, connection refused,
29
+ // etc.) but we're clearly on localhost, assume dev mode so the CLI
30
+ // tab and dev toggle still work. Without this, a transient server
31
+ // error permanently disables dev features in the sidebar.
32
+ cached = isLocalhostHostname()
33
+ ? { devMode: true, canToggle: true }
34
+ : { devMode: false, canToggle: false };
35
+ // Null the in-flight promise so the next call retries the fetch
36
+ // and we can pick up the real answer once the server is back.
37
+ fetchPromise = null;
23
38
  return cached;
24
39
  });
25
40
  }
@@ -1 +1 @@
1
- {"version":3,"file":"use-dev-mode.js","sourceRoot":"","sources":["../../src/client/use-dev-mode.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"use-dev-mode.js","sourceRoot":"","sources":["../../src/client/use-dev-mode.ts"],"names":[],"mappings":"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"}
@@ -33,8 +33,20 @@ export declare function retrySqliteBusy<T>(fn: () => Promise<T>, opts?: {
33
33
  }): Promise<T>;
34
34
  export declare function getDialect(): Dialect;
35
35
  export declare function isPostgres(): boolean;
36
+ /**
37
+ * Returns true when the database is a local-only SQLite file (or unset, which
38
+ * defaults to a local SQLite file). Returns false for Postgres, remote libsql
39
+ * (Turso), and D1 — any backend that could be shared across developers.
40
+ *
41
+ * Used to gate local@localhost mode: that mode uses a single shared virtual
42
+ * user with no per-machine scoping, so on any shared database two developers
43
+ * would read and write each other's settings, oauth tokens, and app state.
44
+ */
45
+ export declare function isLocalDatabase(): boolean;
36
46
  /** Returns BIGINT for Postgres (64-bit), INTEGER for SQLite (already 64-bit). */
37
47
  export declare function intType(): string;
48
+ export declare function isConnectionError(err: any): boolean;
49
+ export declare function retryOnConnectionError<T>(fn: () => Promise<T>, maxAttempts?: number): Promise<T>;
38
50
  /**
39
51
  * Get the singleton database client. Returns a `DbExec` whose first
40
52
  * `execute()` call lazily initializes the underlying driver.
@@ -1 +1 @@
1
- {"version":3,"file":"client.d.ts","sourceRoot":"","sources":["../../src/db/client.ts"],"names":[],"mappings":"AAgBA,MAAM,MAAM,OAAO,GAAG,QAAQ,GAAG,UAAU,GAAG,IAAI,CAAC;AAEnD,MAAM,WAAW,MAAM;IACrB,OAAO,CACL,GAAG,EAAE,MAAM,GAAG;QAAE,GAAG,EAAE,MAAM,CAAC;QAAC,IAAI,EAAE,GAAG,EAAE,CAAA;KAAE,GACzC,OAAO,CAAC;QAAE,IAAI,EAAE,GAAG,EAAE,CAAC;QAAC,YAAY,EAAE,MAAM,CAAA;KAAE,CAAC,CAAC;CACnD;AAMD;;;;;;;;;GASG;AACH,wBAAgB,cAAc,CAAC,QAAQ,SAAK,GAAG,MAAM,CAOpD;AAED,8EAA8E;AAC9E,wBAAgB,oBAAoB,IAAI,MAAM,GAAG,SAAS,CAOzD;AAMD;;;;GAIG;AACH,wBAAsB,eAAe,CAAC,CAAC,EACrC,EAAE,EAAE,MAAM,OAAO,CAAC,CAAC,CAAC,EACpB,IAAI,GAAE;IAAE,WAAW,CAAC,EAAE,MAAM,CAAC;IAAC,WAAW,CAAC,EAAE,MAAM,CAAC;IAAC,OAAO,CAAC,EAAE,OAAO,CAAA;CAAO,GAC3E,OAAO,CAAC,CAAC,CAAC,CAkBZ;AAQD,wBAAgB,UAAU,IAAI,OAAO,CAyBpC;AAED,wBAAgB,UAAU,IAAI,OAAO,CAEpC;AAED,iFAAiF;AACjF,wBAAgB,OAAO,IAAI,MAAM,CAEhC;AA2JD;;;GAGG;AACH,wBAAgB,SAAS,IAAI,MAAM,CA2BlC;AAED,qEAAqE;AACrE,wBAAsB,WAAW,IAAI,OAAO,CAAC,IAAI,CAAC,CAOjD"}
1
+ {"version":3,"file":"client.d.ts","sourceRoot":"","sources":["../../src/db/client.ts"],"names":[],"mappings":"AAgBA,MAAM,MAAM,OAAO,GAAG,QAAQ,GAAG,UAAU,GAAG,IAAI,CAAC;AAEnD,MAAM,WAAW,MAAM;IACrB,OAAO,CACL,GAAG,EAAE,MAAM,GAAG;QAAE,GAAG,EAAE,MAAM,CAAC;QAAC,IAAI,EAAE,GAAG,EAAE,CAAA;KAAE,GACzC,OAAO,CAAC;QAAE,IAAI,EAAE,GAAG,EAAE,CAAC;QAAC,YAAY,EAAE,MAAM,CAAA;KAAE,CAAC,CAAC;CACnD;AAMD;;;;;;;;;GASG;AACH,wBAAgB,cAAc,CAAC,QAAQ,SAAK,GAAG,MAAM,CAOpD;AAED,8EAA8E;AAC9E,wBAAgB,oBAAoB,IAAI,MAAM,GAAG,SAAS,CAOzD;AAMD;;;;GAIG;AACH,wBAAsB,eAAe,CAAC,CAAC,EACrC,EAAE,EAAE,MAAM,OAAO,CAAC,CAAC,CAAC,EACpB,IAAI,GAAE;IAAE,WAAW,CAAC,EAAE,MAAM,CAAC;IAAC,WAAW,CAAC,EAAE,MAAM,CAAC;IAAC,OAAO,CAAC,EAAE,OAAO,CAAA;CAAO,GAC3E,OAAO,CAAC,CAAC,CAAC,CAkBZ;AAQD,wBAAgB,UAAU,IAAI,OAAO,CAyBpC;AAED,wBAAgB,UAAU,IAAI,OAAO,CAEpC;AAED;;;;;;;;GAQG;AACH,wBAAgB,eAAe,IAAI,OAAO,CAIzC;AAED,iFAAiF;AACjF,wBAAgB,OAAO,IAAI,MAAM,CAEhC;AA0BD,wBAAgB,iBAAiB,CAAC,GAAG,EAAE,GAAG,GAAG,OAAO,CAQnD;AAED,wBAAsB,sBAAsB,CAAC,CAAC,EAC5C,EAAE,EAAE,MAAM,OAAO,CAAC,CAAC,CAAC,EACpB,WAAW,SAAI,GACd,OAAO,CAAC,CAAC,CAAC,CAYZ;AAwLD;;;GAGG;AACH,wBAAgB,SAAS,IAAI,MAAM,CA2BlC;AAED,qEAAqE;AACrE,wBAAsB,WAAW,IAAI,OAAO,CAAC,IAAI,CAAC,CAWjD"}
package/dist/db/client.js CHANGED
@@ -102,6 +102,21 @@ export function getDialect() {
102
102
  export function isPostgres() {
103
103
  return getDialect() === "postgres";
104
104
  }
105
+ /**
106
+ * Returns true when the database is a local-only SQLite file (or unset, which
107
+ * defaults to a local SQLite file). Returns false for Postgres, remote libsql
108
+ * (Turso), and D1 — any backend that could be shared across developers.
109
+ *
110
+ * Used to gate local@localhost mode: that mode uses a single shared virtual
111
+ * user with no per-machine scoping, so on any shared database two developers
112
+ * would read and write each other's settings, oauth tokens, and app state.
113
+ */
114
+ export function isLocalDatabase() {
115
+ if (getDialect() !== "sqlite")
116
+ return false;
117
+ const url = getDatabaseUrl();
118
+ return url === "" || url.startsWith("file:");
119
+ }
105
120
  /** Returns BIGINT for Postgres (64-bit), INTEGER for SQLite (already 64-bit). */
106
121
  export function intType() {
107
122
  return isPostgres() ? "BIGINT" : "INTEGER";
@@ -114,10 +129,48 @@ function sqliteToPostgresParams(sql) {
114
129
  return sql.replace(/\?/g, () => `$${++i}`);
115
130
  }
116
131
  // ---------------------------------------------------------------------------
132
+ // Connection error retry (ECONNRESET, etc.)
133
+ // ---------------------------------------------------------------------------
134
+ /** Error codes that indicate a dead/stale connection we can safely retry. */
135
+ const CONNECTION_ERROR_CODES = new Set([
136
+ "ECONNRESET",
137
+ "ETIMEDOUT",
138
+ "EPIPE",
139
+ "ENOTFOUND",
140
+ "CONNECTION_ENDED",
141
+ "CONNECTION_DESTROYED",
142
+ "CONNECTION_CLOSED",
143
+ ]);
144
+ export function isConnectionError(err) {
145
+ if (!err)
146
+ return false;
147
+ const code = err.code || err.cause?.code;
148
+ if (code && CONNECTION_ERROR_CODES.has(code))
149
+ return true;
150
+ const msg = String(err.message || err.cause?.message || "");
151
+ return /ECONNRESET|ETIMEDOUT|EPIPE|connection.*(closed|ended|terminated)/i.test(msg);
152
+ }
153
+ export async function retryOnConnectionError(fn, maxAttempts = 3) {
154
+ let last;
155
+ for (let attempt = 0; attempt < maxAttempts; attempt++) {
156
+ try {
157
+ return await fn();
158
+ }
159
+ catch (e) {
160
+ last = e;
161
+ if (!isConnectionError(e) || attempt === maxAttempts - 1)
162
+ throw e;
163
+ await new Promise((r) => setTimeout(r, 100 * (attempt + 1)));
164
+ }
165
+ }
166
+ throw last;
167
+ }
168
+ // ---------------------------------------------------------------------------
117
169
  // Singleton client — lazy-initialized on first execute() call
118
170
  // ---------------------------------------------------------------------------
119
171
  let _exec;
120
172
  let _pgPool;
173
+ let _neonPool;
121
174
  let _initPromise;
122
175
  async function initClient() {
123
176
  if (_exec)
@@ -151,6 +204,31 @@ async function initClient() {
151
204
  // fresh connection per query (max:1) to avoid the "I/O on behalf of a
152
205
  // different request" error.
153
206
  if (dialect === "postgres") {
207
+ const { isNeonUrl } = await import("./create-get-db.js");
208
+ // Neon over @neondatabase/serverless (WebSocket upgrade on port 443).
209
+ // postgres-js uses a raw TCP socket on 5432 that frequently fails on
210
+ // serverless runtimes (Netlify Functions, Vercel, CF Workers) when
211
+ // Neon's pooler is cold — every request after an idle period times out
212
+ // with CONNECT_TIMEOUT. The serverless Pool handles wake-up transparently
213
+ // and keeps the same `pg`-compatible query(...) interface we need here.
214
+ if (isNeonUrl(url)) {
215
+ const { Pool } = await import("@neondatabase/serverless");
216
+ _neonPool = new Pool({ connectionString: url });
217
+ const pool = _neonPool;
218
+ _exec = {
219
+ async execute(sql) {
220
+ const rawSql = typeof sql === "string" ? sql : sql.sql;
221
+ const args = typeof sql === "string" ? [] : sql.args || [];
222
+ const pgSql = sqliteToPostgresParams(rawSql);
223
+ const result = await retryOnConnectionError(() => pool.query(pgSql, args));
224
+ return {
225
+ rows: result.rows,
226
+ rowsAffected: result.rowCount ?? 0,
227
+ };
228
+ },
229
+ };
230
+ return;
231
+ }
154
232
  const { default: postgres } = await import("postgres");
155
233
  const isWorkers = "__cf_env" in globalThis ||
156
234
  (typeof navigator !== "undefined" &&
@@ -181,9 +259,14 @@ async function initClient() {
181
259
  };
182
260
  }
183
261
  else {
184
- // Node.js: reuse connection pool
262
+ // Node.js: reuse connection pool.
263
+ // idle_timeout:240 closes idle connections before Neon's ~5min server-side
264
+ // timeout, avoiding ECONNRESET when the server hangs up on us.
185
265
  _pgPool = postgres(url, {
186
266
  onnotice: () => { },
267
+ idle_timeout: 240,
268
+ max_lifetime: 60 * 30,
269
+ connect_timeout: 10,
187
270
  // Supabase's connection pooler (Transaction mode) requires prepare: false.
188
271
  // Only disable for Supabase URLs to avoid degrading other Postgres deployments.
189
272
  ...(url.includes("supabase") ? { prepare: false } : {}),
@@ -194,7 +277,7 @@ async function initClient() {
194
277
  const rawSql = typeof sql === "string" ? sql : sql.sql;
195
278
  const args = typeof sql === "string" ? [] : sql.args || [];
196
279
  const pgSql = sqliteToPostgresParams(rawSql);
197
- const result = await pool.unsafe(pgSql, args);
280
+ const result = await retryOnConnectionError(() => pool.unsafe(pgSql, args));
198
281
  return {
199
282
  rows: Array.from(result),
200
283
  rowsAffected: result.count ?? 0,
@@ -283,6 +366,10 @@ export async function closeDbExec() {
283
366
  await _pgPool.end();
284
367
  _pgPool = undefined;
285
368
  }
369
+ if (_neonPool) {
370
+ await _neonPool.end();
371
+ _neonPool = undefined;
372
+ }
286
373
  _exec = undefined;
287
374
  _initPromise = undefined;
288
375
  }
@@ -1 +1 @@
1
- {"version":3,"file":"client.js","sourceRoot":"","sources":["../../src/db/client.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"client.js","sourceRoot":"","sources":["../../src/db/client.ts"],"names":[],"mappings":"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"}
@@ -1,3 +1,14 @@
1
1
  import type { LibSQLDatabase } from "drizzle-orm/libsql";
2
+ /**
3
+ * Neon's pooler endpoints cold-start in 5–10s. Serverless environments
4
+ * (Netlify Functions, Vercel Edge, CF Workers) have short cold-start
5
+ * budgets of their own, and `postgres-js` opens a raw TCP connection on
6
+ * port 5432 that can't negotiate around Neon's wake-up window — every
7
+ * request after an idle period 502s. `@neondatabase/serverless` rides
8
+ * over WebSockets (HTTP/443 upgrade) and handles Neon wake-up
9
+ * transparently, supports transactions, and works in every serverless
10
+ * runtime we deploy to, so we prefer it whenever the URL points at Neon.
11
+ */
12
+ export declare function isNeonUrl(url: string): boolean;
2
13
  export declare function createGetDb<T extends Record<string, unknown>>(schema: T): () => LibSQLDatabase<T>;
3
14
  //# sourceMappingURL=create-get-db.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"create-get-db.d.ts","sourceRoot":"","sources":["../../src/db/create-get-db.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,oBAAoB,CAAC;AA4BzD,wBAAgB,WAAW,CAAC,CAAC,SAAS,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAAE,MAAM,EAAE,CAAC,SAoFpD,cAAc,CAAC,CAAC,CAAC,CASpC"}
1
+ {"version":3,"file":"create-get-db.d.ts","sourceRoot":"","sources":["../../src/db/create-get-db.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,oBAAoB,CAAC;AAgCzD;;;;;;;;;GASG;AACH,wBAAgB,SAAS,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAK9C;AAYD,wBAAgB,WAAW,CAAC,CAAC,SAAS,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAAE,MAAM,EAAE,CAAC,SAkGpD,cAAc,CAAC,CAAC,CAAC,CASpC"}
@@ -14,6 +14,35 @@ function getPgDrizzle() {
14
14
  }
15
15
  return _pgDrizzle;
16
16
  }
17
+ let _neonServerlessDrizzle;
18
+ function getNeonServerlessDrizzle() {
19
+ if (!_neonServerlessDrizzle) {
20
+ _neonServerlessDrizzle = Promise.all([
21
+ import("drizzle-orm/neon-serverless"),
22
+ import("@neondatabase/serverless"),
23
+ ]).then(([drizzleMod, neonMod]) => ({
24
+ drizzle: drizzleMod.drizzle,
25
+ Pool: neonMod.Pool,
26
+ }));
27
+ }
28
+ return _neonServerlessDrizzle;
29
+ }
30
+ /**
31
+ * Neon's pooler endpoints cold-start in 5–10s. Serverless environments
32
+ * (Netlify Functions, Vercel Edge, CF Workers) have short cold-start
33
+ * budgets of their own, and `postgres-js` opens a raw TCP connection on
34
+ * port 5432 that can't negotiate around Neon's wake-up window — every
35
+ * request after an idle period 502s. `@neondatabase/serverless` rides
36
+ * over WebSockets (HTTP/443 upgrade) and handles Neon wake-up
37
+ * transparently, supports transactions, and works in every serverless
38
+ * runtime we deploy to, so we prefer it whenever the URL points at Neon.
39
+ */
40
+ export function isNeonUrl(url) {
41
+ // Must match neon.tech followed by port/path/query/end — include `?` so
42
+ // URLs like `postgres://…@ep.neon.tech?sslmode=require` (no explicit port
43
+ // or path) still route through the serverless driver.
44
+ return /\.neon\.tech([:/?]|$)/.test(url);
45
+ }
17
46
  let _libsqlDrizzle;
18
47
  function getLibsqlDrizzle() {
19
48
  if (!_libsqlDrizzle) {
@@ -41,9 +70,24 @@ export function createGetDb(schema) {
41
70
  }
42
71
  }
43
72
  if (dialect === "postgres") {
44
- _dbReady = getPgDrizzle().then(({ drizzle, postgres }) => {
45
- _db = drizzle(postgres(url), { schema });
46
- });
73
+ if (isNeonUrl(url)) {
74
+ _dbReady = getNeonServerlessDrizzle().then(({ drizzle, Pool }) => {
75
+ const pool = new Pool({ connectionString: url });
76
+ _db = drizzle(pool, { schema });
77
+ });
78
+ }
79
+ else {
80
+ _dbReady = getPgDrizzle().then(({ drizzle, postgres }) => {
81
+ const client = postgres(url, {
82
+ onnotice: () => { },
83
+ idle_timeout: 240,
84
+ max_lifetime: 60 * 30,
85
+ connect_timeout: 10,
86
+ ...(url.includes("supabase") ? { prepare: false } : {}),
87
+ });
88
+ _db = drizzle(client, { schema });
89
+ });
90
+ }
47
91
  }
48
92
  else {
49
93
  _dbReady = getLibsqlDrizzle().then(({ drizzle }) => {
@@ -1 +1 @@
1
- {"version":3,"file":"create-get-db.js","sourceRoot":"","sources":["../../src/db/create-get-db.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"create-get-db.js","sourceRoot":"","sources":["../../src/db/create-get-db.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"migrations.d.ts","sourceRoot":"","sources":["../../src/db/migrations.ts"],"names":[],"mappings":"AAOA,KAAK,cAAc,GAAG,CAAC,QAAQ,EAAE,GAAG,KAAK,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;AAqB9D,MAAM,WAAW,oBAAoB;IACnC;;;;OAIG;IACH,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB;AAED,wBAAgB,aAAa,CAC3B,UAAU,EAAE,KAAK,CAAC;IAAE,OAAO,EAAE,MAAM,CAAC;IAAC,GAAG,EAAE,MAAM,CAAA;CAAE,CAAC,EACnD,OAAO,GAAE,oBAAyB,GACjC,cAAc,CAmGhB"}
1
+ {"version":3,"file":"migrations.d.ts","sourceRoot":"","sources":["../../src/db/migrations.ts"],"names":[],"mappings":"AAOA,KAAK,cAAc,GAAG,CAAC,QAAQ,EAAE,GAAG,KAAK,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;AAsE9D,MAAM,WAAW,oBAAoB;IACnC;;;;OAIG;IACH,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB;AAED,wBAAgB,aAAa,CAC3B,UAAU,EAAE,KAAK,CAAC;IAAE,OAAO,EAAE,MAAM,CAAC;IAAC,GAAG,EAAE,MAAM,CAAA;CAAE,CAAC,EACnD,OAAO,GAAE,oBAAyB,GACjC,cAAc,CA6GhB"}
@@ -16,6 +16,57 @@ function adaptSqlForPostgres(sql) {
16
16
  function adaptSqlForSqlite(sql) {
17
17
  return sql.replace(/ADD\s+COLUMN\s+IF\s+NOT\s+EXISTS/gi, "ADD COLUMN");
18
18
  }
19
+ /**
20
+ * Split a multi-statement SQL blob into individual statements.
21
+ *
22
+ * libsql's `execute(sql)` only runs the first statement in a multi-statement
23
+ * string. This splitter is intentionally simple: it respects single-quoted
24
+ * string literals (with `''` escaping) and `--` line comments, and splits on
25
+ * top-level `;`. It does NOT attempt to parse `$$`-quoted Postgres function
26
+ * bodies — migrations that define functions/triggers with `;` inside bodies
27
+ * should pass a single-statement migration per entry instead.
28
+ */
29
+ function splitSqlStatements(sql) {
30
+ const out = [];
31
+ let buf = "";
32
+ let i = 0;
33
+ let inSingle = false;
34
+ while (i < sql.length) {
35
+ const ch = sql[i];
36
+ const next = sql[i + 1];
37
+ if (!inSingle && ch === "-" && next === "-") {
38
+ // Skip to end of line
39
+ while (i < sql.length && sql[i] !== "\n")
40
+ i++;
41
+ continue;
42
+ }
43
+ if (ch === "'") {
44
+ buf += ch;
45
+ if (inSingle && next === "'") {
46
+ buf += next;
47
+ i += 2;
48
+ continue;
49
+ }
50
+ inSingle = !inSingle;
51
+ i++;
52
+ continue;
53
+ }
54
+ if (ch === ";" && !inSingle) {
55
+ const trimmed = buf.trim();
56
+ if (trimmed)
57
+ out.push(trimmed);
58
+ buf = "";
59
+ i++;
60
+ continue;
61
+ }
62
+ buf += ch;
63
+ i++;
64
+ }
65
+ const tail = buf.trim();
66
+ if (tail)
67
+ out.push(tail);
68
+ return out;
69
+ }
19
70
  export function runMigrations(migrations, options = {}) {
20
71
  const table = options.table ?? "_migrations";
21
72
  return async () => {
@@ -32,13 +83,14 @@ export function runMigrations(migrations, options = {}) {
32
83
  const current = firstRow?.v ?? 0;
33
84
  for (const m of migrations.filter((m) => m.version > current)) {
34
85
  try {
86
+ const statements = splitSqlStatements(m.sql);
35
87
  await d1.batch([
36
- d1.prepare(m.sql),
88
+ ...statements.map((s) => d1.prepare(s)),
37
89
  d1
38
90
  .prepare(`INSERT OR IGNORE INTO ${table} VALUES (?)`)
39
91
  .bind(m.version),
40
92
  ]);
41
- console.log(`[db] Applied migration v${m.version}`);
93
+ console.log(`[db] Applied migration v${m.version} (${statements.length} statement${statements.length === 1 ? "" : "s"})`);
42
94
  }
43
95
  catch (err) {
44
96
  console.error(`[db] Migration v${m.version} FAILED:`, err.message, "\nSQL:", m.sql);
@@ -64,13 +116,18 @@ export function runMigrations(migrations, options = {}) {
64
116
  }
65
117
  for (const m of pending) {
66
118
  const sql = pg ? adaptSqlForPostgres(m.sql) : adaptSqlForSqlite(m.sql);
119
+ const statements = splitSqlStatements(sql);
120
+ let currentStmt = "";
67
121
  try {
68
- await exec.execute(sql);
122
+ for (const stmt of statements) {
123
+ currentStmt = stmt;
124
+ await exec.execute(stmt);
125
+ }
69
126
  await exec.execute({ sql: insertSql, args: [m.version] });
70
- console.log(`[db] Applied migration v${m.version}`);
127
+ console.log(`[db] Applied migration v${m.version} (${statements.length} statement${statements.length === 1 ? "" : "s"})`);
71
128
  }
72
129
  catch (err) {
73
- console.error(`[db] Migration v${m.version} FAILED:`, err.message, "\nSQL:", sql);
130
+ console.error(`[db] Migration v${m.version} FAILED:`, err.message, "\nStatement:", currentStmt);
74
131
  throw err;
75
132
  }
76
133
  }
@@ -1 +1 @@
1
- {"version":3,"file":"migrations.js","sourceRoot":"","sources":["../../src/db/migrations.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"migrations.js","sourceRoot":"","sources":["../../src/db/migrations.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,SAAS,EACT,UAAU,EACV,UAAU,EACV,eAAe,GAChB,MAAM,aAAa,CAAC;AAIrB;;;GAGG;AACH,SAAS,mBAAmB,CAAC,GAAW;IACtC,OAAO,GAAG;SACP,OAAO,CAAC,8BAA8B,EAAE,mBAAmB,CAAC;SAC5D,OAAO,CAAC,qBAAqB,EAAE,EAAE,CAAC;SAClC,OAAO,CAAC,eAAe,EAAE,QAAQ,CAAC,CAAC;AACxC,CAAC;AAED;;;GAGG;AACH,SAAS,iBAAiB,CAAC,GAAW;IACpC,OAAO,GAAG,CAAC,OAAO,CAAC,oCAAoC,EAAE,YAAY,CAAC,CAAC;AACzE,CAAC;AAED;;;;;;;;;GASG;AACH,SAAS,kBAAkB,CAAC,GAAW;IACrC,MAAM,GAAG,GAAa,EAAE,CAAC;IACzB,IAAI,GAAG,GAAG,EAAE,CAAC;IACb,IAAI,CAAC,GAAG,CAAC,CAAC;IACV,IAAI,QAAQ,GAAG,KAAK,CAAC;IACrB,OAAO,CAAC,GAAG,GAAG,CAAC,MAAM,EAAE,CAAC;QACtB,MAAM,EAAE,GAAG,GAAG,CAAC,CAAC,CAAC,CAAC;QAClB,MAAM,IAAI,GAAG,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC;QACxB,IAAI,CAAC,QAAQ,IAAI,EAAE,KAAK,GAAG,IAAI,IAAI,KAAK,GAAG,EAAE,CAAC;YAC5C,sBAAsB;YACtB,OAAO,CAAC,GAAG,GAAG,CAAC,MAAM,IAAI,GAAG,CAAC,CAAC,CAAC,KAAK,IAAI;gBAAE,CAAC,EAAE,CAAC;YAC9C,SAAS;QACX,CAAC;QACD,IAAI,EAAE,KAAK,GAAG,EAAE,CAAC;YACf,GAAG,IAAI,EAAE,CAAC;YACV,IAAI,QAAQ,IAAI,IAAI,KAAK,GAAG,EAAE,CAAC;gBAC7B,GAAG,IAAI,IAAI,CAAC;gBACZ,CAAC,IAAI,CAAC,CAAC;gBACP,SAAS;YACX,CAAC;YACD,QAAQ,GAAG,CAAC,QAAQ,CAAC;YACrB,CAAC,EAAE,CAAC;YACJ,SAAS;QACX,CAAC;QACD,IAAI,EAAE,KAAK,GAAG,IAAI,CAAC,QAAQ,EAAE,CAAC;YAC5B,MAAM,OAAO,GAAG,GAAG,CAAC,IAAI,EAAE,CAAC;YAC3B,IAAI,OAAO;gBAAE,GAAG,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;YAC/B,GAAG,GAAG,EAAE,CAAC;YACT,CAAC,EAAE,CAAC;YACJ,SAAS;QACX,CAAC;QACD,GAAG,IAAI,EAAE,CAAC;QACV,CAAC,EAAE,CAAC;IACN,CAAC;IACD,MAAM,IAAI,GAAG,GAAG,CAAC,IAAI,EAAE,CAAC;IACxB,IAAI,IAAI;QAAE,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IACzB,OAAO,GAAG,CAAC;AACb,CAAC;AAWD,MAAM,UAAU,aAAa,CAC3B,UAAmD,EACnD,UAAgC,EAAE;IAElC,MAAM,KAAK,GAAG,OAAO,CAAC,KAAK,IAAI,aAAa,CAAC;IAC7C,OAAO,KAAK,IAAI,EAAE;QAChB,IAAI,CAAC;YACH,iEAAiE;YACjE,MAAM,EAAE,GAAG,UAAU,EAAE,KAAK,IAAI,CAAC,CAAC,CAAC,UAAU,CAAC,QAAQ,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC;YAClE,IAAI,EAAE,EAAE,CAAC;gBACP,MAAM,EAAE;qBACL,OAAO,CACN,8BAA8B,KAAK,gCAAgC,CACpE;qBACA,GAAG,EAAE,CAAC;gBACT,MAAM,QAAQ,GAAG,MAAM,EAAE;qBACtB,OAAO,CAAC,iCAAiC,KAAK,EAAE,CAAC;qBACjD,KAAK,EAAkB,CAAC;gBAC3B,MAAM,OAAO,GAAI,QAAQ,EAAE,CAAY,IAAI,CAAC,CAAC;gBAE7C,KAAK,MAAM,CAAC,IAAI,UAAU,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,OAAO,GAAG,OAAO,CAAC,EAAE,CAAC;oBAC9D,IAAI,CAAC;wBACH,MAAM,UAAU,GAAG,kBAAkB,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC;wBAC7C,MAAM,EAAE,CAAC,KAAK,CAAC;4BACb,GAAG,UAAU,CAAC,GAAG,CAAC,CAAC,CAAS,EAAE,EAAE,CAAC,EAAE,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC;4BAC/C,EAAE;iCACC,OAAO,CAAC,yBAAyB,KAAK,aAAa,CAAC;iCACpD,IAAI,CAAC,CAAC,CAAC,OAAO,CAAC;yBACnB,CAAC,CAAC;wBACH,OAAO,CAAC,GAAG,CACT,2BAA2B,CAAC,CAAC,OAAO,KAAK,UAAU,CAAC,MAAM,aAAa,UAAU,CAAC,MAAM,KAAK,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,GAAG,GAAG,CAC7G,CAAC;oBACJ,CAAC;oBAAC,OAAO,GAAG,EAAE,CAAC;wBACb,OAAO,CAAC,KAAK,CACX,mBAAmB,CAAC,CAAC,OAAO,UAAU,EACrC,GAAa,CAAC,OAAO,EACtB,QAAQ,EACR,CAAC,CAAC,GAAG,CACN,CAAC;wBACF,MAAM,GAAG,CAAC;oBACZ,CAAC;gBACH,CAAC;gBACD,OAAO;YACT,CAAC;YAED,+CAA+C;YAC/C,MAAM,IAAI,GAAG,SAAS,EAAE,CAAC;YACzB,MAAM,EAAE,GAAG,UAAU,EAAE,CAAC;YAExB,uEAAuE;YACvE,+EAA+E;YAC/E,MAAM,eAAe,CACnB,GAAG,EAAE,CACH,IAAI,CAAC,OAAO,CACV,8BAA8B,KAAK,gCAAgC,CACpE,EACH,EAAE,WAAW,EAAE,CAAC,EAAE,WAAW,EAAE,IAAI,EAAE,OAAO,EAAE,IAAI,EAAE,CACrD,CAAC;YAEF,MAAM,EAAE,IAAI,EAAE,GAAG,MAAM,IAAI,CAAC,OAAO,CACjC,iCAAiC,KAAK,EAAE,CACzC,CAAC;YACF,MAAM,OAAO,GAAI,IAAI,CAAC,CAAC,CAAC,EAAE,CAAY,IAAI,CAAC,CAAC;YAE5C,MAAM,SAAS,GAAG,EAAE;gBAClB,CAAC,CAAC,eAAe,KAAK,oCAAoC;gBAC1D,CAAC,CAAC,yBAAyB,KAAK,aAAa,CAAC;YAEhD,MAAM,OAAO,GAAG,UAAU,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,OAAO,GAAG,OAAO,CAAC,CAAC;YAC9D,IAAI,OAAO,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;gBACvB,OAAO,CAAC,GAAG,CACT,iBAAiB,OAAO,CAAC,MAAM,oBAAoB,EAAE,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,eAAe,GAAG,CACxF,CAAC;YACJ,CAAC;YAED,KAAK,MAAM,CAAC,IAAI,OAAO,EAAE,CAAC;gBACxB,MAAM,GAAG,GAAG,EAAE,CAAC,CAAC,CAAC,mBAAmB,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,iBAAiB,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC;gBACvE,MAAM,UAAU,GAAG,kBAAkB,CAAC,GAAG,CAAC,CAAC;gBAC3C,IAAI,WAAW,GAAG,EAAE,CAAC;gBACrB,IAAI,CAAC;oBACH,KAAK,MAAM,IAAI,IAAI,UAAU,EAAE,CAAC;wBAC9B,WAAW,GAAG,IAAI,CAAC;wBACnB,MAAM,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;oBAC3B,CAAC;oBACD,MAAM,IAAI,CAAC,OAAO,CAAC,EAAE,GAAG,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC;oBAC1D,OAAO,CAAC,GAAG,CACT,2BAA2B,CAAC,CAAC,OAAO,KAAK,UAAU,CAAC,MAAM,aAAa,UAAU,CAAC,MAAM,KAAK,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,GAAG,GAAG,CAC7G,CAAC;gBACJ,CAAC;gBAAC,OAAO,GAAG,EAAE,CAAC;oBACb,OAAO,CAAC,KAAK,CACX,mBAAmB,CAAC,CAAC,OAAO,UAAU,EACrC,GAAa,CAAC,OAAO,EACtB,cAAc,EACd,WAAW,CACZ,CAAC;oBACF,MAAM,GAAG,CAAC;gBACZ,CAAC;YACH,CAAC;QACH,CAAC;QAAC,OAAO,GAAG,EAAE,CAAC;YACb,OAAO,CAAC,KAAK,CAAC,wBAAwB,EAAG,GAAa,CAAC,OAAO,CAAC,CAAC;YAChE,kEAAkE;YAClE,+DAA+D;YAC/D,kEAAkE;YAClE,+DAA+D;YAC/D,IACE,OAAO,UAAU,CAAC,OAAO,EAAE,IAAI,KAAK,UAAU;gBAC9C,CAAC,UAAU,CAAC,SAAS,EACrB,CAAC;gBACD,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;YAClB,CAAC;QACH,CAAC;IACH,CAAC,CAAC;AACJ,CAAC"}