@agent-native/core 0.145.4 → 0.145.6

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 (398) hide show
  1. package/corpus/README.md +1 -1
  2. package/corpus/templates/analytics/.agents/skills/actions/SKILL.md +18 -0
  3. package/corpus/templates/analytics/.agents/skills/agent-native-toolkit/SKILL.md +5 -0
  4. package/corpus/templates/analytics/.agents/skills/dashboard-management/SKILL.md +17 -1
  5. package/corpus/templates/analytics/.agents/skills/delegate-to-agent/SKILL.md +45 -47
  6. package/corpus/templates/analytics/.agents/skills/frontend-design/SKILL.md +1 -0
  7. package/corpus/templates/analytics/.agents/skills/gong/SKILL.md +22 -3
  8. package/corpus/templates/analytics/.agents/skills/turn-into-app/SKILL.md +76 -23
  9. package/corpus/templates/analytics/.agents/skills/turn-into-app/agents/openai.yaml +2 -2
  10. package/corpus/templates/analytics/.agents/skills/turn-into-app/references/fresh-project.md +64 -0
  11. package/corpus/templates/analytics/AGENTS.md +2 -1
  12. package/corpus/templates/analytics/actions/account-deep-dive.ts +83 -47
  13. package/corpus/templates/analytics/actions/create-dashboard-folder.ts +27 -0
  14. package/corpus/templates/analytics/actions/gong-calls.ts +3 -3
  15. package/corpus/templates/analytics/actions/list-dashboard-folders.ts +26 -0
  16. package/corpus/templates/analytics/actions/list-sql-dashboards.ts +1 -0
  17. package/corpus/templates/analytics/actions/set-dashboard-folder.ts +26 -0
  18. package/corpus/templates/analytics/app/components/ProviderCorpusJobNotifier.tsx +18 -3
  19. package/corpus/templates/analytics/app/components/layout/CommandPalette.tsx +6 -4
  20. package/corpus/templates/analytics/app/components/layout/Header.tsx +1 -0
  21. package/corpus/templates/analytics/app/components/layout/NewDashboardDialog.tsx +12 -2
  22. package/corpus/templates/analytics/app/components/layout/Sidebar.tsx +35 -20
  23. package/corpus/templates/analytics/app/global.css +17 -0
  24. package/corpus/templates/analytics/app/hooks/use-dashboard-revisions.ts +29 -15
  25. package/corpus/templates/analytics/app/hooks/use-dashboard-views.ts +15 -3
  26. package/corpus/templates/analytics/app/i18n-data.ts +296 -0
  27. package/corpus/templates/analytics/app/lib/prefetch-keys.ts +23 -2
  28. package/corpus/templates/analytics/app/pages/DashboardOverview.tsx +642 -0
  29. package/corpus/templates/analytics/app/pages/adhoc/sql-dashboard/index.tsx +66 -31
  30. package/corpus/templates/analytics/app/root.tsx +4 -0
  31. package/corpus/templates/analytics/app/routes/dashboards._index.tsx +5 -1
  32. package/corpus/templates/analytics/changelog/2026-08-07-added-a-dashboards-overview-with-personal-and-shared-folders.md +6 -0
  33. package/corpus/templates/analytics/changelog/2026-08-07-analytics-tracking-and-chat-startup-no-longer-emit-avoidable.md +6 -0
  34. package/corpus/templates/analytics/changelog/2026-08-07-dashboard-panels-now-load-custom-api-data-programs-reliably.md +6 -0
  35. package/corpus/templates/analytics/changelog/2026-08-07-gong-searches-conserve-api-quota-and-report-incomplete-coverage.md +6 -0
  36. package/corpus/templates/analytics/changelog/2026-08-07-searchable-dashboards-make-personal-and-shared-folders-easie.md +6 -0
  37. package/corpus/templates/analytics/netlify.toml +3 -0
  38. package/corpus/templates/analytics/scripts/emit-netlify-dashboard-report-cron.ts +112 -0
  39. package/corpus/templates/analytics/server/db/index.ts +12 -0
  40. package/corpus/templates/analytics/server/db/schema.ts +14 -0
  41. package/corpus/templates/analytics/server/jobs/analytics-rollup-backfill.ts +4 -0
  42. package/corpus/templates/analytics/server/lib/agent-chat-plan-mode.ts +1 -0
  43. package/corpus/templates/analytics/server/lib/analytics-query-catalog.ts +85 -15
  44. package/corpus/templates/analytics/server/lib/dashboard-folders-store.ts +168 -0
  45. package/corpus/templates/analytics/server/lib/dashboard-panel-query.ts +9 -4
  46. package/corpus/templates/analytics/server/lib/dashboards-store.ts +116 -1
  47. package/corpus/templates/analytics/server/lib/first-party-analytics-rollups.ts +4 -8
  48. package/corpus/templates/analytics/server/lib/gong.ts +139 -78
  49. package/corpus/templates/analytics/server/plugins/db.ts +55 -15
  50. package/corpus/templates/analytics/server/plugins/session-replay-retention-jobs.ts +6 -2
  51. package/corpus/templates/analytics/server/routes/api/session-replay/retention.post.ts +65 -0
  52. package/corpus/templates/assets/.agents/skills/actions/SKILL.md +18 -0
  53. package/corpus/templates/assets/.agents/skills/agent-native-toolkit/SKILL.md +5 -0
  54. package/corpus/templates/assets/.agents/skills/delegate-to-agent/SKILL.md +45 -47
  55. package/corpus/templates/assets/.agents/skills/frontend-design/SKILL.md +1 -0
  56. package/corpus/templates/assets/.agents/skills/turn-into-app/SKILL.md +76 -23
  57. package/corpus/templates/assets/.agents/skills/turn-into-app/agents/openai.yaml +2 -2
  58. package/corpus/templates/assets/.agents/skills/turn-into-app/references/fresh-project.md +64 -0
  59. package/corpus/templates/brain/.agents/skills/actions/SKILL.md +18 -0
  60. package/corpus/templates/brain/.agents/skills/agent-native-toolkit/SKILL.md +5 -0
  61. package/corpus/templates/brain/.agents/skills/delegate-to-agent/SKILL.md +45 -47
  62. package/corpus/templates/brain/.agents/skills/frontend-design/SKILL.md +1 -0
  63. package/corpus/templates/brain/.agents/skills/turn-into-app/SKILL.md +76 -23
  64. package/corpus/templates/brain/.agents/skills/turn-into-app/agents/openai.yaml +2 -2
  65. package/corpus/templates/brain/.agents/skills/turn-into-app/references/fresh-project.md +64 -0
  66. package/corpus/templates/calendar/.agents/skills/actions/SKILL.md +18 -0
  67. package/corpus/templates/calendar/.agents/skills/agent-native-toolkit/SKILL.md +5 -0
  68. package/corpus/templates/calendar/.agents/skills/delegate-to-agent/SKILL.md +45 -47
  69. package/corpus/templates/calendar/.agents/skills/frontend-design/SKILL.md +1 -0
  70. package/corpus/templates/calendar/.agents/skills/turn-into-app/SKILL.md +76 -23
  71. package/corpus/templates/calendar/.agents/skills/turn-into-app/agents/openai.yaml +2 -2
  72. package/corpus/templates/calendar/.agents/skills/turn-into-app/references/fresh-project.md +64 -0
  73. package/corpus/templates/chat/.agents/skills/actions/SKILL.md +18 -0
  74. package/corpus/templates/chat/.agents/skills/agent-native-toolkit/SKILL.md +5 -0
  75. package/corpus/templates/chat/.agents/skills/delegate-to-agent/SKILL.md +45 -47
  76. package/corpus/templates/chat/.agents/skills/frontend-design/SKILL.md +1 -0
  77. package/corpus/templates/chat/.agents/skills/turn-into-app/SKILL.md +76 -23
  78. package/corpus/templates/chat/.agents/skills/turn-into-app/agents/openai.yaml +2 -2
  79. package/corpus/templates/chat/.agents/skills/turn-into-app/references/fresh-project.md +64 -0
  80. package/corpus/templates/chat/.env.example +3 -0
  81. package/corpus/templates/chat/AGENTS.md +4 -0
  82. package/corpus/templates/clips/.agents/skills/actions/SKILL.md +18 -0
  83. package/corpus/templates/clips/.agents/skills/agent-native-toolkit/SKILL.md +5 -0
  84. package/corpus/templates/clips/.agents/skills/delegate-to-agent/SKILL.md +45 -47
  85. package/corpus/templates/clips/.agents/skills/frontend-design/SKILL.md +1 -0
  86. package/corpus/templates/clips/.agents/skills/turn-into-app/SKILL.md +76 -23
  87. package/corpus/templates/clips/.agents/skills/turn-into-app/agents/openai.yaml +2 -2
  88. package/corpus/templates/clips/.agents/skills/turn-into-app/references/fresh-project.md +64 -0
  89. package/corpus/templates/clips/actions/lib/audio-only-transcription.ts +4 -0
  90. package/corpus/templates/clips/actions/request-transcript.ts +52 -3
  91. package/corpus/templates/clips/app/components/editor/editor-layout.tsx +8 -3
  92. package/corpus/templates/clips/app/components/editor/waveform.tsx +2 -1
  93. package/corpus/templates/clips/app/components/library/search-bar.tsx +1 -1
  94. package/corpus/templates/clips/app/components/recorder/recorder-engine.ts +3 -10
  95. package/corpus/templates/clips/app/global.css +9 -0
  96. package/corpus/templates/clips/app/routes/r.$recordingId.tsx +1 -0
  97. package/corpus/templates/clips/changelog/2026-08-07-screen-recordings-now-capture-tab-and-system-audio-even-when.md +6 -0
  98. package/corpus/templates/clips/changelog/2026-08-07-transcription-now-retries-transient-cloud-failures-automatic.md +6 -0
  99. package/corpus/templates/clips/desktop/src-tauri/src/silence_detector.rs +10 -11
  100. package/corpus/templates/clips/server/db/schema.ts +7 -0
  101. package/corpus/templates/clips/server/plugins/db.ts +8 -0
  102. package/corpus/templates/clips/shared/recording-capture.ts +38 -0
  103. package/corpus/templates/clips/shared/transcript-failure.ts +89 -0
  104. package/corpus/templates/content/.agents/skills/actions/SKILL.md +18 -0
  105. package/corpus/templates/content/.agents/skills/agent-native-toolkit/SKILL.md +5 -0
  106. package/corpus/templates/content/.agents/skills/delegate-to-agent/SKILL.md +45 -47
  107. package/corpus/templates/content/.agents/skills/frontend-design/SKILL.md +1 -0
  108. package/corpus/templates/content/.agents/skills/turn-into-app/SKILL.md +76 -23
  109. package/corpus/templates/content/.agents/skills/turn-into-app/agents/openai.yaml +2 -2
  110. package/corpus/templates/content/.agents/skills/turn-into-app/references/fresh-project.md +64 -0
  111. package/corpus/templates/content/.env.example +9 -3
  112. package/corpus/templates/content/app/components/sidebar/DocumentSidebar.tsx +1 -0
  113. package/corpus/templates/content/changelog/2026-08-07-collapsed-sidebar-utility-buttons-stay-anchored-at-the-botto.md +6 -0
  114. package/corpus/templates/crm/.agents/skills/agent-native-toolkit/SKILL.md +5 -0
  115. package/corpus/templates/crm/.agents/skills/turn-into-app/SKILL.md +76 -23
  116. package/corpus/templates/crm/.agents/skills/turn-into-app/agents/openai.yaml +2 -2
  117. package/corpus/templates/crm/.agents/skills/turn-into-app/references/fresh-project.md +64 -0
  118. package/corpus/templates/design/.agents/skills/actions/SKILL.md +18 -0
  119. package/corpus/templates/design/.agents/skills/agent-native-toolkit/SKILL.md +5 -0
  120. package/corpus/templates/design/.agents/skills/delegate-to-agent/SKILL.md +45 -47
  121. package/corpus/templates/design/.agents/skills/frontend-design/SKILL.md +1 -0
  122. package/corpus/templates/design/.agents/skills/turn-into-app/SKILL.md +76 -23
  123. package/corpus/templates/design/.agents/skills/turn-into-app/agents/openai.yaml +2 -2
  124. package/corpus/templates/design/.agents/skills/turn-into-app/references/fresh-project.md +64 -0
  125. package/corpus/templates/design/actions/view-screen.ts +1 -0
  126. package/corpus/templates/design/app/hooks/useDesignHotkeys.ts +14 -1
  127. package/corpus/templates/design/changelog/2026-08-07-cmd-c-now-copies-selected-text-in-the-agent-panel-instead-of.md +6 -0
  128. package/corpus/templates/design/changelog/2026-08-07-real-time-voice-can-now-read-the-current-selection-and-edit-.md +6 -0
  129. package/corpus/templates/design/server/lib/reprompt-action-guard.ts +7 -3
  130. package/corpus/templates/dispatch/.agents/skills/actions/SKILL.md +18 -0
  131. package/corpus/templates/dispatch/.agents/skills/agent-native-toolkit/SKILL.md +5 -0
  132. package/corpus/templates/dispatch/.agents/skills/delegate-to-agent/SKILL.md +45 -47
  133. package/corpus/templates/dispatch/.agents/skills/frontend-design/SKILL.md +1 -0
  134. package/corpus/templates/dispatch/.agents/skills/turn-into-app/SKILL.md +76 -23
  135. package/corpus/templates/dispatch/.agents/skills/turn-into-app/agents/openai.yaml +2 -2
  136. package/corpus/templates/dispatch/.agents/skills/turn-into-app/references/fresh-project.md +64 -0
  137. package/corpus/templates/factory/.agents/skills/actions/SKILL.md +18 -0
  138. package/corpus/templates/factory/.agents/skills/agent-native-toolkit/SKILL.md +5 -0
  139. package/corpus/templates/factory/.agents/skills/delegate-to-agent/SKILL.md +45 -47
  140. package/corpus/templates/factory/.agents/skills/frontend-design/SKILL.md +1 -0
  141. package/corpus/templates/factory/.agents/skills/turn-into-app/SKILL.md +76 -23
  142. package/corpus/templates/factory/.agents/skills/turn-into-app/agents/openai.yaml +2 -2
  143. package/corpus/templates/factory/.agents/skills/turn-into-app/references/fresh-project.md +64 -0
  144. package/corpus/templates/factory/actions/babysit-agent-native-pull-request.ts +279 -0
  145. package/corpus/templates/factory/actions/get-factory-automation-health.ts +23 -4
  146. package/corpus/templates/factory/app/components/factory/FactoryCanvas.tsx +1 -1
  147. package/corpus/templates/factory/app/routes/factory.tsx +21 -3
  148. package/corpus/templates/factory/changelog/2026-08-07-factory-can-keep-builder-bot-pull-requests-moving-by-request.md +6 -0
  149. package/corpus/templates/factory/server/lib/require-factory-automation.ts +1 -0
  150. package/corpus/templates/factory/server/plugins/agent-chat.ts +4 -1
  151. package/corpus/templates/factory/server/plugins/factory-scheduler-job.ts +81 -12
  152. package/corpus/templates/factory/server/triage/github-client.ts +31 -0
  153. package/corpus/templates/factory/server/triage/pr-babysit.ts +75 -1
  154. package/corpus/templates/forms/.agents/skills/actions/SKILL.md +18 -0
  155. package/corpus/templates/forms/.agents/skills/agent-native-toolkit/SKILL.md +5 -0
  156. package/corpus/templates/forms/.agents/skills/delegate-to-agent/SKILL.md +45 -47
  157. package/corpus/templates/forms/.agents/skills/frontend-design/SKILL.md +1 -0
  158. package/corpus/templates/forms/.agents/skills/turn-into-app/SKILL.md +76 -23
  159. package/corpus/templates/forms/.agents/skills/turn-into-app/agents/openai.yaml +2 -2
  160. package/corpus/templates/forms/.agents/skills/turn-into-app/references/fresh-project.md +64 -0
  161. package/corpus/templates/macros/.agents/skills/agent-native-toolkit/SKILL.md +5 -0
  162. package/corpus/templates/macros/.agents/skills/frontend-design/SKILL.md +1 -0
  163. package/corpus/templates/macros/.agents/skills/turn-into-app/SKILL.md +76 -23
  164. package/corpus/templates/macros/.agents/skills/turn-into-app/agents/openai.yaml +2 -2
  165. package/corpus/templates/macros/.agents/skills/turn-into-app/references/fresh-project.md +64 -0
  166. package/corpus/templates/mail/.agents/skills/actions/SKILL.md +18 -0
  167. package/corpus/templates/mail/.agents/skills/agent-native-toolkit/SKILL.md +5 -0
  168. package/corpus/templates/mail/.agents/skills/delegate-to-agent/SKILL.md +45 -47
  169. package/corpus/templates/mail/.agents/skills/frontend-design/SKILL.md +1 -0
  170. package/corpus/templates/mail/.agents/skills/turn-into-app/SKILL.md +76 -23
  171. package/corpus/templates/mail/.agents/skills/turn-into-app/agents/openai.yaml +2 -2
  172. package/corpus/templates/mail/.agents/skills/turn-into-app/references/fresh-project.md +64 -0
  173. package/corpus/templates/plan/.agents/skills/actions/SKILL.md +18 -0
  174. package/corpus/templates/plan/.agents/skills/agent-native-toolkit/SKILL.md +5 -0
  175. package/corpus/templates/plan/.agents/skills/delegate-to-agent/SKILL.md +45 -47
  176. package/corpus/templates/plan/.agents/skills/frontend-design/SKILL.md +1 -0
  177. package/corpus/templates/plan/.agents/skills/turn-into-app/SKILL.md +76 -23
  178. package/corpus/templates/plan/.agents/skills/turn-into-app/agents/openai.yaml +2 -2
  179. package/corpus/templates/plan/.agents/skills/turn-into-app/references/fresh-project.md +64 -0
  180. package/corpus/templates/plan/app/pages/PlansPage.tsx +2 -1
  181. package/corpus/templates/plan/changelog/2026-08-07-inline-help-icons-now-stay-visually-balanced-with-nearby-tex.md +6 -0
  182. package/corpus/templates/slides/.agents/skills/actions/SKILL.md +18 -0
  183. package/corpus/templates/slides/.agents/skills/agent-native-toolkit/SKILL.md +5 -0
  184. package/corpus/templates/slides/.agents/skills/delegate-to-agent/SKILL.md +45 -47
  185. package/corpus/templates/slides/.agents/skills/frontend-design/SKILL.md +1 -0
  186. package/corpus/templates/slides/.agents/skills/turn-into-app/SKILL.md +76 -23
  187. package/corpus/templates/slides/.agents/skills/turn-into-app/agents/openai.yaml +2 -2
  188. package/corpus/templates/slides/.agents/skills/turn-into-app/references/fresh-project.md +64 -0
  189. package/corpus/templates/slides/.env.example +5 -0
  190. package/corpus/templates/slides/changelog/2026-08-07-fixed-generated-slides-briefly-disappearing-while-they-are-b.md +6 -0
  191. package/corpus/templates/slides/server/plugins/collab.ts +20 -8
  192. package/corpus/templates/tasks/.agents/skills/actions/SKILL.md +18 -0
  193. package/corpus/templates/tasks/.agents/skills/agent-native-toolkit/SKILL.md +5 -0
  194. package/corpus/templates/tasks/.agents/skills/delegate-to-agent/SKILL.md +45 -47
  195. package/corpus/templates/tasks/.agents/skills/frontend-design/SKILL.md +1 -0
  196. package/corpus/templates/tasks/.agents/skills/turn-into-app/SKILL.md +76 -23
  197. package/corpus/templates/tasks/.agents/skills/turn-into-app/agents/openai.yaml +2 -2
  198. package/corpus/templates/tasks/.agents/skills/turn-into-app/references/fresh-project.md +64 -0
  199. package/corpus/templates/tasks/.env.example +3 -0
  200. package/dist/agent/production-agent.js +24 -3
  201. package/dist/client/AgentPanel.d.ts +6 -0
  202. package/dist/client/AgentPanel.js +176 -30
  203. package/dist/client/AssistantChat.d.ts +2 -0
  204. package/dist/client/AssistantChat.js +4 -1
  205. package/dist/client/ConnectBuilderCard.js +6 -11
  206. package/dist/client/MultiTabAssistantChat.js +1 -1
  207. package/dist/client/RuntimeConfigNotice.d.ts +1 -0
  208. package/dist/client/RuntimeConfigNotice.js +94 -0
  209. package/dist/client/agent-chat/index.d.ts +1 -1
  210. package/dist/client/agent-chat/index.js +1 -1
  211. package/dist/client/agent-chat-adapter.js +85 -4
  212. package/dist/client/agent-page/AgentTabsPage.js +1 -1
  213. package/dist/client/agent-sidebar-state.d.ts +6 -0
  214. package/dist/client/agent-sidebar-state.js +25 -0
  215. package/dist/client/app-providers.js +2 -1
  216. package/dist/client/assistant-ui-recovery.js +1 -1
  217. package/dist/client/chat/index.d.ts +1 -1
  218. package/dist/client/chat/index.js +1 -1
  219. package/dist/client/chat/markdown-renderer.d.ts +2 -1
  220. package/dist/client/chat/markdown-renderer.js +48 -2
  221. package/dist/client/chat/message-components.d.ts +6 -0
  222. package/dist/client/chat/message-components.js +182 -53
  223. package/dist/client/chat/tool-call-display.d.ts +16 -4
  224. package/dist/client/chat/tool-call-display.js +225 -18
  225. package/dist/client/extensions/ExtensionsSidebarSection.js +1 -1
  226. package/dist/client/frame-protocol.d.ts +4 -0
  227. package/dist/client/i18n.js +9 -0
  228. package/dist/client/integrations/IntegrationsPanel.js +2 -5
  229. package/dist/client/onboarding/FirstRunOnboarding.js +2 -3
  230. package/dist/client/org/TeamPage.js +49 -6
  231. package/dist/client/org/hooks.d.ts +7 -2
  232. package/dist/client/org/hooks.js +11 -4
  233. package/dist/client/resources/McpConnectionSuggestion.js +2 -3
  234. package/dist/client/resources/McpIntegrationDialog.js +2 -16
  235. package/dist/client/resources/McpIntegrationLogo.d.ts +11 -0
  236. package/dist/client/resources/McpIntegrationLogo.js +14 -0
  237. package/dist/client/resources/ResourceTree.js +1 -1
  238. package/dist/client/resources/mcp-integration-logos.d.ts +1 -0
  239. package/dist/client/resources/mcp-integration-logos.js +47 -18
  240. package/dist/client/settings/useBuilderStatus.js +6 -0
  241. package/dist/client/ui/index.d.ts +1 -0
  242. package/dist/client/ui/index.js +1 -0
  243. package/dist/collab/struct-routes.d.ts +1 -1
  244. package/dist/config.d.ts +26 -3
  245. package/dist/config.js +106 -14
  246. package/dist/db/ddl-guard.d.ts +15 -2
  247. package/dist/db/ddl-guard.js +53 -5
  248. package/dist/jobs/scheduler.js +7 -0
  249. package/dist/localization/default-messages.d.ts +17 -0
  250. package/dist/localization/default-messages.js +17 -0
  251. package/dist/mcp/oauth-client-metadata.js +5 -1
  252. package/dist/mcp/oauth-route.d.ts +5 -4
  253. package/dist/mcp/oauth-route.js +25 -9
  254. package/dist/mcp/server.d.ts +1 -1
  255. package/dist/mcp/server.js +9 -10
  256. package/dist/notifications/routes.d.ts +3 -3
  257. package/dist/org/handlers.d.ts +1 -0
  258. package/dist/org/handlers.js +17 -2
  259. package/dist/provider-api/actions/custom-provider-registration.d.ts +9 -9
  260. package/dist/provider-api/actions/provider-api.d.ts +7 -7
  261. package/dist/provider-api/corpus-jobs.d.ts +12 -2
  262. package/dist/provider-api/corpus-jobs.js +31 -1
  263. package/dist/provider-api/index.d.ts +2 -0
  264. package/dist/provider-api/index.js +7 -1
  265. package/dist/secrets/routes.d.ts +6 -6
  266. package/dist/server/agent-chat/recurring-jobs-runtime.d.ts +1 -1
  267. package/dist/server/agent-chat/recurring-jobs-runtime.js +14 -2
  268. package/dist/server/agent-chat/script-entries.js +12 -1
  269. package/dist/server/agent-chat-plugin.js +2 -2
  270. package/dist/server/auth.d.ts +1 -0
  271. package/dist/server/auth.js +85 -1
  272. package/dist/server/better-auth-instance.d.ts +9 -0
  273. package/dist/server/better-auth-instance.js +25 -11
  274. package/dist/server/core-routes-plugin.d.ts +7 -0
  275. package/dist/server/core-routes-plugin.js +51 -5
  276. package/dist/server/create-server.js +23 -2
  277. package/dist/server/db-pressure.d.ts +38 -0
  278. package/dist/server/db-pressure.js +147 -0
  279. package/dist/server/index.d.ts +1 -0
  280. package/dist/server/index.js +1 -0
  281. package/dist/server/legacy-auth-migration.d.ts +10 -0
  282. package/dist/server/legacy-auth-migration.js +37 -0
  283. package/dist/server/onboarding-html.js +206 -2
  284. package/dist/server/poll.d.ts +26 -0
  285. package/dist/server/poll.js +108 -13
  286. package/dist/server/realtime-voice.d.ts +2 -1
  287. package/dist/server/realtime-voice.js +38 -56
  288. package/dist/server/short-lived-token.d.ts +43 -0
  289. package/dist/server/short-lived-token.js +74 -0
  290. package/dist/server/ssr-handler.js +4 -1
  291. package/dist/shared/index.d.ts +1 -0
  292. package/dist/shared/index.js +1 -0
  293. package/dist/shared/runtime-config.d.ts +44 -0
  294. package/dist/shared/runtime-config.js +284 -0
  295. package/dist/styles/agent-native.css +48 -1
  296. package/dist/templates/chat/.agents/skills/actions/SKILL.md +18 -0
  297. package/dist/templates/chat/.agents/skills/agent-native-toolkit/SKILL.md +5 -0
  298. package/dist/templates/chat/.agents/skills/delegate-to-agent/SKILL.md +45 -47
  299. package/dist/templates/chat/.agents/skills/frontend-design/SKILL.md +1 -0
  300. package/dist/templates/chat/.agents/skills/turn-into-app/SKILL.md +76 -23
  301. package/dist/templates/chat/.agents/skills/turn-into-app/agents/openai.yaml +2 -2
  302. package/dist/templates/chat/.agents/skills/turn-into-app/references/fresh-project.md +64 -0
  303. package/dist/templates/chat/.env.example +3 -0
  304. package/dist/templates/chat/AGENTS.md +4 -0
  305. package/dist/templates/default/.agents/skills/actions/SKILL.md +18 -0
  306. package/dist/templates/default/.agents/skills/agent-native-toolkit/SKILL.md +5 -0
  307. package/dist/templates/default/.agents/skills/delegate-to-agent/SKILL.md +45 -47
  308. package/dist/templates/default/.agents/skills/frontend-design/SKILL.md +1 -0
  309. package/dist/templates/default/.agents/skills/turn-into-app/SKILL.md +76 -23
  310. package/dist/templates/default/.agents/skills/turn-into-app/agents/openai.yaml +2 -2
  311. package/dist/templates/default/.agents/skills/turn-into-app/references/fresh-project.md +64 -0
  312. package/dist/templates/default/AGENTS.md +6 -1
  313. package/dist/templates/default/app/i18n/ar-SA.ts +6 -0
  314. package/dist/templates/default/app/i18n/de-DE.ts +6 -0
  315. package/dist/templates/default/app/i18n/en-US.ts +6 -0
  316. package/dist/templates/default/app/i18n/es-ES.ts +6 -0
  317. package/dist/templates/default/app/i18n/fr-FR.ts +6 -0
  318. package/dist/templates/default/app/i18n/hi-IN.ts +6 -0
  319. package/dist/templates/default/app/i18n/ja-JP.ts +6 -0
  320. package/dist/templates/default/app/i18n/ko-KR.ts +6 -0
  321. package/dist/templates/default/app/i18n/pt-BR.ts +6 -0
  322. package/dist/templates/default/app/i18n/zh-CN.ts +6 -0
  323. package/dist/templates/default/app/i18n/zh-TW.ts +6 -0
  324. package/dist/templates/headless/.agents/skills/actions/SKILL.md +18 -0
  325. package/dist/templates/headless/.agents/skills/agent-native-toolkit/SKILL.md +5 -0
  326. package/dist/templates/headless/.agents/skills/turn-into-app/SKILL.md +76 -23
  327. package/dist/templates/headless/.agents/skills/turn-into-app/agents/openai.yaml +2 -2
  328. package/dist/templates/headless/.agents/skills/turn-into-app/references/fresh-project.md +64 -0
  329. package/dist/templates/workspace-core/.agents/skills/actions/SKILL.md +18 -0
  330. package/dist/templates/workspace-core/.agents/skills/agent-native-toolkit/SKILL.md +5 -0
  331. package/dist/templates/workspace-core/.agents/skills/delegate-to-agent/SKILL.md +45 -47
  332. package/dist/templates/workspace-core/.agents/skills/frontend-design/SKILL.md +1 -0
  333. package/dist/templates/workspace-core/.agents/skills/turn-into-app/SKILL.md +76 -23
  334. package/dist/templates/workspace-core/.agents/skills/turn-into-app/agents/openai.yaml +2 -2
  335. package/dist/templates/workspace-core/.agents/skills/turn-into-app/references/fresh-project.md +64 -0
  336. package/dist/templates/workspace-core/.agents/skills/workspace-conventions/SKILL.md +4 -0
  337. package/dist/templates/workspace-core/.agents/skills/writing-agent-instructions/SKILL.md +8 -0
  338. package/dist/templates/workspace-core/AGENTS.md +7 -2
  339. package/dist/templates/workspace-root/AGENTS.md +5 -0
  340. package/dist/vite/client.d.ts +3 -3
  341. package/dist/vite/client.js +47 -1
  342. package/dist/vite/index.d.ts +1 -1
  343. package/docs/content/agent-native-config.mdx +240 -139
  344. package/docs/content/authentication.mdx +17 -0
  345. package/docs/content/deployment.mdx +19 -14
  346. package/docs/content/drop-in-agent.mdx +19 -2
  347. package/docs/content/environment-variables.mdx +63 -38
  348. package/docs/content/getting-started-actions.mdx +15 -6
  349. package/docs/content/getting-started-database.mdx +14 -10
  350. package/docs/content/getting-started-pages.mdx +32 -35
  351. package/docs/content/getting-started.mdx +7 -6
  352. package/package.json +2 -2
  353. package/src/templates/chat/.agents/skills/actions/SKILL.md +18 -0
  354. package/src/templates/chat/.agents/skills/agent-native-toolkit/SKILL.md +5 -0
  355. package/src/templates/chat/.agents/skills/delegate-to-agent/SKILL.md +45 -47
  356. package/src/templates/chat/.agents/skills/frontend-design/SKILL.md +1 -0
  357. package/src/templates/chat/.agents/skills/turn-into-app/SKILL.md +76 -23
  358. package/src/templates/chat/.agents/skills/turn-into-app/agents/openai.yaml +2 -2
  359. package/src/templates/chat/.agents/skills/turn-into-app/references/fresh-project.md +64 -0
  360. package/src/templates/chat/.env.example +3 -0
  361. package/src/templates/chat/AGENTS.md +4 -0
  362. package/src/templates/default/.agents/skills/actions/SKILL.md +18 -0
  363. package/src/templates/default/.agents/skills/agent-native-toolkit/SKILL.md +5 -0
  364. package/src/templates/default/.agents/skills/delegate-to-agent/SKILL.md +45 -47
  365. package/src/templates/default/.agents/skills/frontend-design/SKILL.md +1 -0
  366. package/src/templates/default/.agents/skills/turn-into-app/SKILL.md +76 -23
  367. package/src/templates/default/.agents/skills/turn-into-app/agents/openai.yaml +2 -2
  368. package/src/templates/default/.agents/skills/turn-into-app/references/fresh-project.md +64 -0
  369. package/src/templates/default/AGENTS.md +6 -1
  370. package/src/templates/default/app/i18n/ar-SA.ts +6 -0
  371. package/src/templates/default/app/i18n/de-DE.ts +6 -0
  372. package/src/templates/default/app/i18n/en-US.ts +6 -0
  373. package/src/templates/default/app/i18n/es-ES.ts +6 -0
  374. package/src/templates/default/app/i18n/fr-FR.ts +6 -0
  375. package/src/templates/default/app/i18n/hi-IN.ts +6 -0
  376. package/src/templates/default/app/i18n/ja-JP.ts +6 -0
  377. package/src/templates/default/app/i18n/ko-KR.ts +6 -0
  378. package/src/templates/default/app/i18n/pt-BR.ts +6 -0
  379. package/src/templates/default/app/i18n/zh-CN.ts +6 -0
  380. package/src/templates/default/app/i18n/zh-TW.ts +6 -0
  381. package/src/templates/headless/.agents/skills/actions/SKILL.md +18 -0
  382. package/src/templates/headless/.agents/skills/agent-native-toolkit/SKILL.md +5 -0
  383. package/src/templates/headless/.agents/skills/turn-into-app/SKILL.md +76 -23
  384. package/src/templates/headless/.agents/skills/turn-into-app/agents/openai.yaml +2 -2
  385. package/src/templates/headless/.agents/skills/turn-into-app/references/fresh-project.md +64 -0
  386. package/src/templates/workspace-core/.agents/skills/actions/SKILL.md +18 -0
  387. package/src/templates/workspace-core/.agents/skills/agent-native-toolkit/SKILL.md +5 -0
  388. package/src/templates/workspace-core/.agents/skills/delegate-to-agent/SKILL.md +45 -47
  389. package/src/templates/workspace-core/.agents/skills/frontend-design/SKILL.md +1 -0
  390. package/src/templates/workspace-core/.agents/skills/turn-into-app/SKILL.md +76 -23
  391. package/src/templates/workspace-core/.agents/skills/turn-into-app/agents/openai.yaml +2 -2
  392. package/src/templates/workspace-core/.agents/skills/turn-into-app/references/fresh-project.md +64 -0
  393. package/src/templates/workspace-core/.agents/skills/workspace-conventions/SKILL.md +4 -0
  394. package/src/templates/workspace-core/.agents/skills/writing-agent-instructions/SKILL.md +8 -0
  395. package/src/templates/workspace-core/AGENTS.md +7 -2
  396. package/src/templates/workspace-root/AGENTS.md +5 -0
  397. package/corpus/templates/dispatch/app/routes/admin.apps.$appId.tsx +0 -1
  398. package/corpus/templates/dispatch/app/routes/admin.apps.tsx +0 -1
@@ -1,8 +1,11 @@
1
1
  import {
2
+ callAction,
3
+ useSession,
2
4
  useActionMutation,
3
- useActionQuery,
4
5
  } from "@agent-native/core/client/hooks";
5
- import { useQueryClient } from "@tanstack/react-query";
6
+ import { useQuery, useQueryClient } from "@tanstack/react-query";
7
+
8
+ import { dashboardCacheScope } from "@/lib/prefetch-keys";
6
9
 
7
10
  export interface DashboardRevision {
8
11
  id: string;
@@ -14,18 +17,29 @@ export interface DashboardRevision {
14
17
  }
15
18
 
16
19
  export function useDashboardRevisions(dashboardId: string | null) {
17
- return useActionQuery<DashboardRevision[]>(
18
- "list-dashboard-revisions",
19
- dashboardId ? { dashboardId } : undefined,
20
- {
21
- enabled: !!dashboardId,
22
- select: (data: any) => {
23
- const revisions = data?.revisions ?? data;
24
- return Array.isArray(revisions) ? revisions : [];
25
- },
26
- placeholderData: (prev: any) => prev,
27
- } as any,
28
- );
20
+ const { session } = useSession();
21
+ const scope = dashboardCacheScope(session);
22
+ return useQuery({
23
+ queryKey: ["dashboard-revisions", dashboardId, scope],
24
+ enabled: !!dashboardId,
25
+ queryFn: async () => {
26
+ if (!dashboardId) return [];
27
+ const data = await callAction(
28
+ "list-dashboard-revisions",
29
+ { dashboardId },
30
+ { method: "GET" },
31
+ );
32
+ const revisions =
33
+ data &&
34
+ typeof data === "object" &&
35
+ !Array.isArray(data) &&
36
+ "revisions" in data
37
+ ? (data as { revisions?: unknown }).revisions
38
+ : undefined;
39
+ const rows = revisions ?? data;
40
+ return (Array.isArray(rows) ? rows : []) as DashboardRevision[];
41
+ },
42
+ });
29
43
  }
30
44
 
31
45
  export function useRestoreDashboardRevision(dashboardId: string) {
@@ -45,7 +59,7 @@ export function useRestoreDashboardRevision(dashboardId: string) {
45
59
  >("restore-dashboard-revision", {
46
60
  onSuccess: () => {
47
61
  queryClient.invalidateQueries({
48
- queryKey: ["action", "list-dashboard-revisions", { dashboardId }],
62
+ queryKey: ["dashboard-revisions", dashboardId],
49
63
  });
50
64
  queryClient.invalidateQueries({
51
65
  queryKey: ["dashboard", dashboardId],
@@ -1,6 +1,8 @@
1
- import { callAction } from "@agent-native/core/client/hooks";
1
+ import { callAction, useSession } from "@agent-native/core/client/hooks";
2
2
  import { useQuery, useMutation, useQueryClient } from "@tanstack/react-query";
3
3
 
4
+ import { dashboardCacheScope } from "@/lib/prefetch-keys";
5
+
4
6
  export interface DashboardView {
5
7
  id: string;
6
8
  name: string;
@@ -20,7 +22,12 @@ async function loadViews(dashboardId: string): Promise<DashboardView[]> {
20
22
 
21
23
  export function useDashboardViews(dashboardId: string | undefined) {
22
24
  const queryClient = useQueryClient();
23
- const queryKey = ["dashboard-views", dashboardId];
25
+ const { session } = useSession();
26
+ const queryKey = [
27
+ "dashboard-views",
28
+ dashboardId,
29
+ dashboardCacheScope(session),
30
+ ];
24
31
 
25
32
  const viewsQuery = useQuery({
26
33
  queryKey,
@@ -110,8 +117,13 @@ export function useDeleteDashboardView() {
110
117
  * Returns a map of dashboardId -> DashboardView[].
111
118
  */
112
119
  export function useAllDashboardViews(dashboardIds: string[]) {
120
+ const { session } = useSession();
113
121
  return useQuery({
114
- queryKey: ["all-dashboard-views", dashboardIds.join(",")],
122
+ queryKey: [
123
+ "all-dashboard-views",
124
+ dashboardIds.join(","),
125
+ dashboardCacheScope(session),
126
+ ],
115
127
  queryFn: async (): Promise<Record<string, DashboardView[]>> => {
116
128
  const results: Record<string, DashboardView[]> = {};
117
129
  await Promise.all(
@@ -59,6 +59,27 @@ const enUS = {
59
59
  recentSales: "Recent Sales",
60
60
  recentSalesDescription: "You made 265 sales this month.",
61
61
  },
62
+ dashboardOverview: {
63
+ title: "Dashboards",
64
+ description: "All dashboards you can access, organized your way.",
65
+ searchPlaceholder: "Search dashboards...",
66
+ newFolder: "New folder",
67
+ folderName: "Folder name",
68
+ folderScope: "Folder type",
69
+ personal: "Personal",
70
+ shared: "Shared",
71
+ createFolder: "Create folder",
72
+ loading: "Loading dashboards...",
73
+ loadFailed: "Couldn't load dashboards",
74
+ loadFailedDescription: "Try again to refresh your dashboard overview.",
75
+ empty: "No dashboards yet",
76
+ emptyDescription: "Dashboards you create or can access will appear here.",
77
+ noDashboards: "No dashboards in this folder.",
78
+ unfiled: "Unfiled",
79
+ moveDashboard: "Move dashboard",
80
+ folderCreateFailed: "Couldn't create folder",
81
+ moveFailed: "Couldn't move dashboard",
82
+ },
62
83
  sidebar: {
63
84
  collapseSidebar: "Collapse sidebar",
64
85
  expandSidebar: "Expand sidebar",
@@ -499,6 +520,7 @@ const enUS = {
499
520
  },
500
521
  providerCorpusNotifier: {
501
522
  completed: "Provider corpus job completed",
523
+ incomplete: "Provider corpus job incomplete",
502
524
  quotaWait: "Provider corpus job waiting for quota",
503
525
  failed: "Provider corpus job failed",
504
526
  resumeAfter: "Resume after {{date}}",
@@ -4914,6 +4936,10 @@ function mergeMessages(overrides: {
4914
4936
  root: { ...enUS.root, ...overrides.root },
4915
4937
  navigation: { ...enUS.navigation, ...overrides.navigation },
4916
4938
  dashboardHeader: { ...enUS.dashboardHeader, ...overrides.dashboardHeader },
4939
+ dashboardOverview: {
4940
+ ...enUS.dashboardOverview,
4941
+ ...overrides.dashboardOverview,
4942
+ },
4917
4943
  sidebar: { ...enUS.sidebar, ...overrides.sidebar },
4918
4944
  settings: { ...enUS.settings, ...overrides.settings },
4919
4945
  chat: { ...enUS.chat, ...overrides.chat },
@@ -7052,6 +7078,7 @@ const translatedAnalyticsDebtTranslations = {
7052
7078
  },
7053
7079
  providerCorpusNotifier: {
7054
7080
  completed: "提供者语料库作业已完成",
7081
+ incomplete: "提供者语料库作业未完成",
7055
7082
  failed: "提供者语料库作业失败",
7056
7083
  openAsk: "打开Ask",
7057
7084
  quotaWait: "等待配额的提供者语料库作业",
@@ -7291,6 +7318,7 @@ const translatedAnalyticsDebtTranslations = {
7291
7318
  },
7292
7319
  providerCorpusNotifier: {
7293
7320
  completed: "Trabajo de corpus del proveedor completado",
7321
+ incomplete: "Trabajo de corpus del proveedor incompleto",
7294
7322
  failed: "Error en el trabajo del corpus del proveedor",
7295
7323
  openAsk: "Abrir Ask",
7296
7324
  quotaWait: "Trabajo de corpus de proveedor en espera de cuota",
@@ -7536,6 +7564,7 @@ const translatedAnalyticsDebtTranslations = {
7536
7564
  },
7537
7565
  providerCorpusNotifier: {
7538
7566
  completed: "Travail du corpus de fournisseurs terminé",
7567
+ incomplete: "Travail du corpus de fournisseurs incomplet",
7539
7568
  failed: "Échec de la tâche du corpus du fournisseur",
7540
7569
  openAsk: "Ouvrir Ask",
7541
7570
  quotaWait: "Travail de corpus de fournisseur en attente de quota",
@@ -7783,6 +7812,7 @@ const translatedAnalyticsDebtTranslations = {
7783
7812
  },
7784
7813
  providerCorpusNotifier: {
7785
7814
  completed: "Der Provider-Korpus-Job wurde abgeschlossen",
7815
+ incomplete: "Der Provider-Korpus-Job ist unvollständig",
7786
7816
  failed: "Der Provider-Korpus-Job ist fehlgeschlagen",
7787
7817
  openAsk: "Öffnen Sie Ask",
7788
7818
  quotaWait: "Anbieter-Korpus-Job wartet auf Kontingent",
@@ -8023,6 +8053,7 @@ const translatedAnalyticsDebtTranslations = {
8023
8053
  },
8024
8054
  providerCorpusNotifier: {
8025
8055
  completed: "プロバイダー コーパス ジョブが完了しました",
8056
+ incomplete: "プロバイダー コーパス ジョブが未完了です",
8026
8057
  failed: "プロバイダー コーパス ジョブが失敗しました",
8027
8058
  openAsk: "Askを開く",
8028
8059
  quotaWait: "クォータを待機しているプロバイダー コーパス ジョブ",
@@ -8262,6 +8293,7 @@ const translatedAnalyticsDebtTranslations = {
8262
8293
  },
8263
8294
  providerCorpusNotifier: {
8264
8295
  completed: "제공자 코퍼스 작업이 완료되었습니다.",
8296
+ incomplete: "제공자 코퍼스 작업이 완료되지 않았습니다.",
8265
8297
  failed: "공급자 코퍼스 작업이 실패했습니다.",
8266
8298
  openAsk: "Ask 열기",
8267
8299
  quotaWait: "할당량을 기다리는 공급자 코퍼스 작업",
@@ -8505,6 +8537,7 @@ const translatedAnalyticsDebtTranslations = {
8505
8537
  },
8506
8538
  providerCorpusNotifier: {
8507
8539
  completed: "Tarefa de corpus do provedor concluída",
8540
+ incomplete: "O trabalho de corpus do provedor está incompleto",
8508
8541
  failed: "Falha no job do corpus do provedor",
8509
8542
  openAsk: "Abra Ask",
8510
8543
  quotaWait: "Job do corpus do provedor aguardando cota",
@@ -8745,6 +8778,7 @@ const translatedAnalyticsDebtTranslations = {
8745
8778
  },
8746
8779
  providerCorpusNotifier: {
8747
8780
  completed: "प्रदाता कॉर्पस कार्य पूरा हो गया",
8781
+ incomplete: "प्रदाता कॉर्पस कार्य अधूरा है",
8748
8782
  failed: "प्रदाता कॉर्पस कार्य विफल रहा",
8749
8783
  openAsk: "Ask खोलें",
8750
8784
  quotaWait: "प्रदाता कॉर्पस जॉब कोटा की प्रतीक्षा कर रहा है",
@@ -8983,6 +9017,7 @@ const translatedAnalyticsDebtTranslations = {
8983
9017
  },
8984
9018
  providerCorpusNotifier: {
8985
9019
  completed: "اكتملت مهمة مجموعة الموفر",
9020
+ incomplete: "مهمة مجموعة الموفر غير مكتملة",
8986
9021
  failed: "فشلت مهمة مجموعة الموفر",
8987
9022
  openAsk: "Open Ask",
8988
9023
  quotaWait: "وظيفة مجموعة الموفر في انتظار الحصة النسبية",
@@ -9570,6 +9605,267 @@ for (const [locale, overrides] of Object.entries(
9570
9605
  }
9571
9606
  }
9572
9607
 
9608
+ const translatedDashboardOverviewTranslations = {
9609
+ "ar-SA": {
9610
+ dashboardOverview: {
9611
+ title: "لوحات المعلومات",
9612
+ description:
9613
+ "كل لوحات المعلومات التي يمكنك الوصول إليها، منظمة بالطريقة التي تناسبك.",
9614
+ searchPlaceholder: "ابحث عن لوحات المعلومات...",
9615
+ newFolder: "مجلد جديد",
9616
+ folderName: "اسم المجلد",
9617
+ folderScope: "نوع المجلد",
9618
+ personal: "شخصي",
9619
+ shared: "مشترك",
9620
+ createFolder: "إنشاء مجلد",
9621
+ loading: "جارٍ تحميل لوحات المعلومات...",
9622
+ loadFailed: "تعذر تحميل لوحات المعلومات",
9623
+ loadFailedDescription:
9624
+ "حاول مرة أخرى لتحديث نظرة عامة على لوحات المعلومات.",
9625
+ empty: "لا توجد لوحات معلومات بعد",
9626
+ emptyDescription:
9627
+ "ستظهر هنا لوحات المعلومات التي تنشئها أو يمكنك الوصول إليها.",
9628
+ noDashboards: "لا توجد لوحات معلومات في هذا المجلد.",
9629
+ unfiled: "غير مصنف",
9630
+ moveDashboard: "نقل لوحة المعلومات",
9631
+ folderCreateFailed: "تعذر إنشاء المجلد",
9632
+ moveFailed: "تعذر نقل لوحة المعلومات",
9633
+ },
9634
+ },
9635
+ "de-DE": {
9636
+ dashboardOverview: {
9637
+ title: "Dashboards",
9638
+ description: "Alle Dashboards, auf die du zugreifen kannst, organisiert.",
9639
+ searchPlaceholder: "Dashboards durchsuchen...",
9640
+ newFolder: "Neuer Ordner",
9641
+ folderName: "Ordnername",
9642
+ folderScope: "Ordnertyp",
9643
+ personal: "Persönlich",
9644
+ shared: "Geteilt",
9645
+ createFolder: "Ordner erstellen",
9646
+ loading: "Dashboards werden geladen...",
9647
+ loadFailed: "Dashboards konnten nicht geladen werden",
9648
+ loadFailedDescription:
9649
+ "Versuche es erneut, um die Dashboard-Übersicht zu aktualisieren.",
9650
+ empty: "Noch keine Dashboards",
9651
+ emptyDescription:
9652
+ "Dashboards, die du erstellst oder auf die du zugreifen kannst, erscheinen hier.",
9653
+ noDashboards: "Keine Dashboards in diesem Ordner.",
9654
+ unfiled: "Nicht abgelegt",
9655
+ moveDashboard: "Dashboard verschieben",
9656
+ folderCreateFailed: "Ordner konnte nicht erstellt werden",
9657
+ moveFailed: "Dashboard konnte nicht verschoben werden",
9658
+ },
9659
+ },
9660
+ "es-ES": {
9661
+ dashboardOverview: {
9662
+ title: "Paneles",
9663
+ description: "Todos los paneles a los que puedes acceder, organizados.",
9664
+ searchPlaceholder: "Buscar paneles...",
9665
+ newFolder: "Nueva carpeta",
9666
+ folderName: "Nombre de la carpeta",
9667
+ folderScope: "Tipo de carpeta",
9668
+ personal: "Personal",
9669
+ shared: "Compartido",
9670
+ createFolder: "Crear carpeta",
9671
+ loading: "Cargando paneles...",
9672
+ loadFailed: "No se han podido cargar los paneles",
9673
+ loadFailedDescription:
9674
+ "Vuelve a intentarlo para actualizar la vista general de paneles.",
9675
+ empty: "Aún no hay paneles",
9676
+ emptyDescription:
9677
+ "Aquí aparecerán los paneles que crees o a los que tengas acceso.",
9678
+ noDashboards: "No hay paneles en esta carpeta.",
9679
+ unfiled: "Sin clasificar",
9680
+ moveDashboard: "Mover panel",
9681
+ folderCreateFailed: "No se ha podido crear la carpeta",
9682
+ moveFailed: "No se ha podido mover el panel",
9683
+ },
9684
+ },
9685
+ "fr-FR": {
9686
+ dashboardOverview: {
9687
+ title: "Tableaux de bord",
9688
+ description:
9689
+ "Tous les tableaux de bord auxquels vous pouvez accéder, organisés.",
9690
+ searchPlaceholder: "Rechercher des tableaux de bord...",
9691
+ newFolder: "Nouveau dossier",
9692
+ folderName: "Nom du dossier",
9693
+ folderScope: "Type de dossier",
9694
+ personal: "Personnel",
9695
+ shared: "Partagé",
9696
+ createFolder: "Créer un dossier",
9697
+ loading: "Chargement des tableaux de bord...",
9698
+ loadFailed: "Impossible de charger les tableaux de bord",
9699
+ loadFailedDescription:
9700
+ "Réessayez pour actualiser la vue d’ensemble des tableaux de bord.",
9701
+ empty: "Aucun tableau de bord pour le moment",
9702
+ emptyDescription:
9703
+ "Les tableaux de bord que vous créez ou auxquels vous pouvez accéder apparaîtront ici.",
9704
+ noDashboards: "Aucun tableau de bord dans ce dossier.",
9705
+ unfiled: "Non classé",
9706
+ moveDashboard: "Déplacer le tableau de bord",
9707
+ folderCreateFailed: "Impossible de créer le dossier",
9708
+ moveFailed: "Impossible de déplacer le tableau de bord",
9709
+ },
9710
+ },
9711
+ "hi-IN": {
9712
+ dashboardOverview: {
9713
+ title: "डैशबोर्ड",
9714
+ description: "सभी डैशबोर्ड जिनका आप उपयोग कर सकते हैं, व्यवस्थित रूप में।",
9715
+ searchPlaceholder: "डैशबोर्ड खोजें...",
9716
+ newFolder: "नया फ़ोल्डर",
9717
+ folderName: "फ़ोल्डर का नाम",
9718
+ folderScope: "फ़ोल्डर का प्रकार",
9719
+ personal: "व्यक्तिगत",
9720
+ shared: "साझा किया गया",
9721
+ createFolder: "फ़ोल्डर बनाएँ",
9722
+ loading: "डैशबोर्ड लोड हो रहे हैं...",
9723
+ loadFailed: "डैशबोर्ड लोड नहीं हो सके",
9724
+ loadFailedDescription: "डैशबोर्ड अवलोकन को रीफ़्रेश करने के लिए फिर कोशिश करें।",
9725
+ empty: "अभी कोई डैशबोर्ड नहीं",
9726
+ emptyDescription: "आपके बनाए या जिन तक आपकी पहुँच है, वे डैशबोर्ड यहाँ दिखेंगे।",
9727
+ noDashboards: "इस फ़ोल्डर में कोई डैशबोर्ड नहीं है।",
9728
+ unfiled: "वर्गीकृत नहीं",
9729
+ moveDashboard: "डैशबोर्ड को स्थानांतरित करें",
9730
+ folderCreateFailed: "फ़ोल्डर नहीं बनाया जा सका",
9731
+ moveFailed: "डैशबोर्ड स्थानांतरित नहीं किया जा सका",
9732
+ },
9733
+ },
9734
+ "ja-JP": {
9735
+ dashboardOverview: {
9736
+ title: "ダッシュボード",
9737
+ description: "アクセスできるすべてのダッシュボードを整理できます。",
9738
+ searchPlaceholder: "ダッシュボードを検索...",
9739
+ newFolder: "新しいフォルダー",
9740
+ folderName: "フォルダー名",
9741
+ folderScope: "フォルダーの種類",
9742
+ personal: "個人",
9743
+ shared: "共有",
9744
+ createFolder: "フォルダーを作成",
9745
+ loading: "ダッシュボードを読み込んでいます...",
9746
+ loadFailed: "ダッシュボードを読み込めませんでした",
9747
+ loadFailedDescription:
9748
+ "もう一度試してダッシュボードの概要を更新してください。",
9749
+ empty: "ダッシュボードはまだありません",
9750
+ emptyDescription:
9751
+ "作成したダッシュボードやアクセスできるダッシュボードがここに表示されます。",
9752
+ noDashboards: "このフォルダーにダッシュボードはありません。",
9753
+ unfiled: "未分類",
9754
+ moveDashboard: "ダッシュボードを移動",
9755
+ folderCreateFailed: "フォルダーを作成できませんでした",
9756
+ moveFailed: "ダッシュボードを移動できませんでした",
9757
+ },
9758
+ },
9759
+ "ko-KR": {
9760
+ dashboardOverview: {
9761
+ title: "대시보드",
9762
+ description:
9763
+ "액세스할 수 있는 모든 대시보드를 원하는 방식으로 정리합니다.",
9764
+ searchPlaceholder: "대시보드 검색...",
9765
+ newFolder: "새 폴더",
9766
+ folderName: "폴더 이름",
9767
+ folderScope: "폴더 유형",
9768
+ personal: "개인",
9769
+ shared: "공유됨",
9770
+ createFolder: "폴더 만들기",
9771
+ loading: "대시보드를 불러오는 중...",
9772
+ loadFailed: "대시보드를 불러오지 못했습니다",
9773
+ loadFailedDescription: "다시 시도하여 대시보드 개요를 새로 고치세요.",
9774
+ empty: "아직 대시보드가 없습니다",
9775
+ emptyDescription:
9776
+ "만들었거나 액세스할 수 있는 대시보드가 여기에 표시됩니다.",
9777
+ noDashboards: "이 폴더에 대시보드가 없습니다.",
9778
+ unfiled: "분류되지 않음",
9779
+ moveDashboard: "대시보드 이동",
9780
+ folderCreateFailed: "폴더를 만들지 못했습니다",
9781
+ moveFailed: "대시보드를 이동하지 못했습니다",
9782
+ },
9783
+ },
9784
+ "pt-BR": {
9785
+ dashboardOverview: {
9786
+ title: "Painéis",
9787
+ description: "Todos os painéis que você pode acessar, organizados.",
9788
+ searchPlaceholder: "Pesquisar painéis...",
9789
+ newFolder: "Nova pasta",
9790
+ folderName: "Nome da pasta",
9791
+ folderScope: "Tipo de pasta",
9792
+ personal: "Pessoal",
9793
+ shared: "Compartilhado",
9794
+ createFolder: "Criar pasta",
9795
+ loading: "Carregando painéis...",
9796
+ loadFailed: "Não foi possível carregar os painéis",
9797
+ loadFailedDescription:
9798
+ "Tente novamente para atualizar a visão geral dos painéis.",
9799
+ empty: "Ainda não há painéis",
9800
+ emptyDescription:
9801
+ "Os painéis que você criar ou puder acessar aparecerão aqui.",
9802
+ noDashboards: "Não há painéis nesta pasta.",
9803
+ unfiled: "Sem classificação",
9804
+ moveDashboard: "Mover painel",
9805
+ folderCreateFailed: "Não foi possível criar a pasta",
9806
+ moveFailed: "Não foi possível mover o painel",
9807
+ },
9808
+ },
9809
+ "zh-CN": {
9810
+ dashboardOverview: {
9811
+ title: "仪表板",
9812
+ description: "整理所有你可以访问的仪表板。",
9813
+ searchPlaceholder: "搜索仪表板...",
9814
+ newFolder: "新建文件夹",
9815
+ folderName: "文件夹名称",
9816
+ folderScope: "文件夹类型",
9817
+ personal: "个人",
9818
+ shared: "共享",
9819
+ createFolder: "创建文件夹",
9820
+ loading: "正在加载仪表板...",
9821
+ loadFailed: "无法加载仪表板",
9822
+ loadFailedDescription: "请重试以刷新仪表板概览。",
9823
+ empty: "还没有仪表板",
9824
+ emptyDescription: "你创建或可以访问的仪表板会显示在这里。",
9825
+ noDashboards: "此文件夹中没有仪表板。",
9826
+ unfiled: "未分类",
9827
+ moveDashboard: "移动仪表板",
9828
+ folderCreateFailed: "无法创建文件夹",
9829
+ moveFailed: "无法移动仪表板",
9830
+ },
9831
+ },
9832
+ "zh-TW": {
9833
+ dashboardOverview: {
9834
+ title: "儀表板",
9835
+ description: "整理所有你可以存取的儀表板。",
9836
+ searchPlaceholder: "搜尋儀表板...",
9837
+ newFolder: "新增資料夾",
9838
+ folderName: "資料夾名稱",
9839
+ folderScope: "資料夾類型",
9840
+ personal: "個人",
9841
+ shared: "共用",
9842
+ createFolder: "建立資料夾",
9843
+ loading: "正在載入儀表板...",
9844
+ loadFailed: "無法載入儀表板",
9845
+ loadFailedDescription: "請重試以重新整理儀表板概覽。",
9846
+ empty: "尚無儀表板",
9847
+ emptyDescription: "你建立或可以存取的儀表板會顯示在這裡。",
9848
+ noDashboards: "此資料夾中沒有儀表板。",
9849
+ unfiled: "未分類",
9850
+ moveDashboard: "移動儀表板",
9851
+ folderCreateFailed: "無法建立資料夾",
9852
+ moveFailed: "無法移動儀表板",
9853
+ },
9854
+ },
9855
+ } satisfies Partial<Record<LocaleCode, AnalyticsPartialMessages>>;
9856
+
9857
+ for (const [locale, overrides] of Object.entries(
9858
+ translatedDashboardOverviewTranslations,
9859
+ ) as Array<[LocaleCode, AnalyticsPartialMessages]>) {
9860
+ const messages = messagesByLocale[locale];
9861
+ if (!messages) continue;
9862
+ for (const [section, sectionOverrides] of Object.entries(overrides) as Array<
9863
+ [Section, Partial<Messages[Section]>]
9864
+ >) {
9865
+ Object.assign(messages[section], sectionOverrides);
9866
+ }
9867
+ }
9868
+
9573
9869
  const translatedAnalyticsRawTranslations = {
9574
9870
  "zh-CN": {
9575
9871
  sqlDashboard: {
@@ -3,8 +3,29 @@ export type PrefetchSnapshot<T> = {
3
3
  syncVersion: number;
4
4
  };
5
5
 
6
- export const sqlDashboardPrefetchKey = (id: string) =>
7
- ["data", "sql-dashboard-prefetch", id] as const;
6
+ export type DashboardCacheSession = {
7
+ userId?: string | null;
8
+ email?: string | null;
9
+ orgId?: string | null;
10
+ };
11
+
12
+ /**
13
+ * Dashboard payloads are access-scoped. Keep the principal and active org in
14
+ * every client cache key so a session change cannot adopt another caller's
15
+ * private dashboard as placeholder or prefetch data.
16
+ */
17
+ export function dashboardCacheScope(
18
+ session: DashboardCacheSession | null | undefined,
19
+ ): string {
20
+ const principal = session?.userId ?? session?.email ?? "anonymous";
21
+ const org = session?.orgId ?? "personal";
22
+ return `${encodeURIComponent(principal)}:${encodeURIComponent(org)}`;
23
+ }
24
+
25
+ export const sqlDashboardPrefetchKey = (
26
+ id: string,
27
+ scope = "anonymous:personal",
28
+ ) => ["data", "sql-dashboard-prefetch", scope, id] as const;
8
29
 
9
30
  export const analysisDetailPrefetchKey = (id: string) =>
10
31
  ["analysis-detail-prefetch", id] as const;