@agent-native/core 0.92.0 → 0.92.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 (375) hide show
  1. package/corpus/README.md +1 -1
  2. package/corpus/core/CHANGELOG.md +20 -0
  3. package/corpus/core/package.json +1 -1
  4. package/corpus/core/src/application-state/store.ts +12 -1
  5. package/corpus/core/src/cli/sync-builder-starter-manifest.ts +29 -1
  6. package/corpus/core/src/client/AssistantChat.tsx +27 -14
  7. package/corpus/core/src/client/PoweredByBadge.tsx +1 -8
  8. package/corpus/core/src/client/agent-chat-adapter.ts +37 -10
  9. package/corpus/core/src/client/chat/widgets/DataTableWidget.tsx +52 -1
  10. package/corpus/core/src/client/db-admin/TableEditor.tsx +49 -0
  11. package/corpus/core/src/client/db-admin/export-utils.ts +13 -4
  12. package/corpus/core/src/client/db-admin/useAgentSync.ts +72 -0
  13. package/corpus/core/src/client/error-capture.ts +69 -7
  14. package/corpus/core/src/client/extensions/EmbeddedExtension.tsx +5 -1
  15. package/corpus/core/src/client/extensions/ExtensionViewer.tsx +53 -8
  16. package/corpus/core/src/client/extensions/InlineExtensionFrame.tsx +5 -1
  17. package/corpus/core/src/client/extensions/portable-extension.ts +1 -0
  18. package/corpus/core/src/client/org/OrgSwitcher.tsx +12 -9
  19. package/corpus/core/src/client/org/TeamPage.tsx +77 -71
  20. package/corpus/core/src/client/settings/SettingsPanel.tsx +205 -52
  21. package/corpus/core/src/client/settings/SettingsSection.tsx +8 -1
  22. package/corpus/core/src/client/settings/SettingsTabsPage.tsx +25 -9
  23. package/corpus/core/src/db-admin/agent-tools.ts +8 -2
  24. package/corpus/core/src/db-admin/operations.ts +116 -4
  25. package/corpus/core/src/db-admin/routes.ts +1 -0
  26. package/corpus/core/src/db-admin/types.ts +4 -0
  27. package/corpus/core/src/extensions/html-shell.ts +5 -4
  28. package/corpus/core/src/extensions/routes.ts +10 -0
  29. package/corpus/core/src/navigation/index.ts +1 -1
  30. package/corpus/core/src/notifications/channels.ts +1 -22
  31. package/corpus/core/src/resources/handlers.ts +10 -8
  32. package/corpus/core/src/server/poll.ts +293 -8
  33. package/corpus/core/src/styles/agent-native.css +27 -0
  34. package/corpus/core/src/templates/default/.agents/skills/actions/SKILL.md +5 -0
  35. package/corpus/core/src/templates/default/.agents/skills/adding-a-feature/SKILL.md +5 -0
  36. package/corpus/core/src/templates/default/.agents/skills/real-time-sync/SKILL.md +1 -1
  37. package/corpus/core/src/templates/default/.agents/skills/security/SKILL.md +7 -0
  38. package/corpus/core/src/templates/default/.agents/skills/storing-data/SKILL.md +5 -1
  39. package/corpus/core/src/templates/default/AGENTS.md +4 -2
  40. package/corpus/core/src/templates/headless/AGENTS.md +4 -0
  41. package/corpus/core/src/templates/workspace-core/.agents/skills/actions/SKILL.md +5 -0
  42. package/corpus/core/src/templates/workspace-core/.agents/skills/adding-a-feature/SKILL.md +5 -0
  43. package/corpus/core/src/templates/workspace-core/.agents/skills/context-awareness/SKILL.md +4 -0
  44. package/corpus/core/src/templates/workspace-core/.agents/skills/extensions/SKILL.md +6 -0
  45. package/corpus/core/src/templates/workspace-core/.agents/skills/performance/SKILL.md +4 -0
  46. package/corpus/core/src/templates/workspace-core/.agents/skills/real-time-sync/SKILL.md +1 -1
  47. package/corpus/core/src/templates/workspace-core/.agents/skills/security/SKILL.md +7 -0
  48. package/corpus/core/src/templates/workspace-core/.agents/skills/storing-data/SKILL.md +5 -1
  49. package/corpus/core/src/templates/workspace-core/AGENTS.md +7 -1
  50. package/corpus/core/src/templates/workspace-root/AGENTS.md +7 -1
  51. package/corpus/templates/analytics/.agents/skills/actions/SKILL.md +5 -0
  52. package/corpus/templates/analytics/.agents/skills/dashboard-management/SKILL.md +10 -0
  53. package/corpus/templates/analytics/.agents/skills/real-time-sync/SKILL.md +1 -1
  54. package/corpus/templates/analytics/.agents/skills/security/SKILL.md +7 -0
  55. package/corpus/templates/analytics/.agents/skills/storing-data/SKILL.md +5 -1
  56. package/corpus/templates/analytics/AGENTS.md +33 -14
  57. package/corpus/templates/analytics/actions/capture-test-error.ts +4 -0
  58. package/corpus/templates/analytics/actions/get-analytics-alert-rule-defaults.ts +23 -0
  59. package/corpus/templates/analytics/actions/get-error-issue.ts +1 -1
  60. package/corpus/templates/analytics/actions/list-analysis-revisions.ts +40 -0
  61. package/corpus/templates/analytics/actions/list-dashboard-revisions.ts +40 -0
  62. package/corpus/templates/analytics/actions/list-dashboard-usage-stats.ts +299 -0
  63. package/corpus/templates/analytics/actions/navigate.ts +4 -2
  64. package/corpus/templates/analytics/actions/restore-analysis-revision.ts +43 -0
  65. package/corpus/templates/analytics/actions/restore-dashboard-revision.ts +68 -0
  66. package/corpus/templates/analytics/actions/save-analytics-alert-rule.ts +14 -0
  67. package/corpus/templates/analytics/actions/save-monitor.ts +1 -1
  68. package/corpus/templates/analytics/actions/view-screen.ts +24 -0
  69. package/corpus/templates/analytics/app/components/analysis/AnalysisHistoryPanel.tsx +181 -0
  70. package/corpus/templates/analytics/app/components/dashboard/DashboardHistoryPanel.tsx +184 -0
  71. package/corpus/templates/analytics/app/components/layout/CommandPalette.tsx +22 -16
  72. package/corpus/templates/analytics/app/components/layout/Header.tsx +1 -1
  73. package/corpus/templates/analytics/app/components/layout/Sidebar.tsx +27 -21
  74. package/corpus/templates/analytics/app/hooks/use-analysis-revisions.ts +43 -0
  75. package/corpus/templates/analytics/app/hooks/use-dashboard-chat-context.ts +110 -0
  76. package/corpus/templates/analytics/app/hooks/use-dashboard-revisions.ts +43 -0
  77. package/corpus/templates/analytics/app/hooks/use-navigation-state.ts +8 -3
  78. package/corpus/templates/analytics/app/i18n/zh-TW.ts +64 -2
  79. package/corpus/templates/analytics/app/i18n-data.ts +783 -3
  80. package/corpus/templates/analytics/app/pages/Agents.tsx +359 -19
  81. package/corpus/templates/analytics/app/pages/Settings.tsx +3 -2
  82. package/corpus/templates/analytics/app/pages/adhoc/explorer-dashboard/index.tsx +34 -1
  83. package/corpus/templates/analytics/app/pages/adhoc/sql-dashboard/index.tsx +28 -0
  84. package/corpus/templates/analytics/app/pages/analyses/AnalysisDetail.tsx +18 -1
  85. package/corpus/templates/analytics/app/pages/monitoring/ErrorsPanel.tsx +7 -10
  86. package/corpus/templates/analytics/app/pages/monitoring/errors/IssueDetail.tsx +479 -23
  87. package/corpus/templates/analytics/app/pages/monitoring/errors/IssueList.tsx +0 -9
  88. package/corpus/templates/analytics/app/pages/monitoring/errors/i18n.ts +11 -0
  89. package/corpus/templates/analytics/app/pages/monitoring/errors/types.ts +9 -1
  90. package/corpus/templates/analytics/app/pages/monitoring/uptime/MonitorFormPage.tsx +6 -3
  91. package/corpus/templates/analytics/app/pages/sessions/SessionDetailPage.tsx +26 -30
  92. package/corpus/templates/analytics/app/pages/sessions/SessionsPage.tsx +9 -99
  93. package/corpus/templates/analytics/app/pages/settings/AlertRulesSettingsCard.tsx +262 -104
  94. package/corpus/templates/analytics/app/routes/team.tsx +1 -1
  95. package/corpus/templates/analytics/changelog/2026-07-08-admins-can-audit-dashboard-usage-ownership-and-cleanup-signa.md +6 -0
  96. package/corpus/templates/analytics/changelog/2026-07-08-agent-monitoring-stays-available-to-non-admins.md +6 -0
  97. package/corpus/templates/analytics/changelog/2026-07-08-alert-emails-now-show-the-message-without-raw-metadata-json.md +6 -0
  98. package/corpus/templates/analytics/changelog/2026-07-08-alert-rules-are-easier-to-scan-expand-and-edit-from-settings.md +6 -0
  99. package/corpus/templates/analytics/changelog/2026-07-08-analytics-alert-forms-remember-last-email-recipients.md +6 -0
  100. package/corpus/templates/analytics/changelog/2026-07-08-analytics-alert-rules-can-now-use-per-rule-slack-and-webhook.md +6 -0
  101. package/corpus/templates/analytics/changelog/2026-07-08-dashboard-history-and-chat-context.md +5 -0
  102. package/corpus/templates/analytics/changelog/2026-07-08-dashboard-usage-now-counts-explorer-dashboard-traffic.md +6 -0
  103. package/corpus/templates/analytics/changelog/2026-07-08-demo-mode-session-emails-are-filtered-and-anonymized.md +6 -0
  104. package/corpus/templates/analytics/changelog/2026-07-08-error-issue-detail-adds-stack-traces-and-frequency-bars.md +6 -0
  105. package/corpus/templates/analytics/changelog/2026-07-08-error-issue-detail-now-shows-the-latest-occurrence-message-a.md +6 -0
  106. package/corpus/templates/analytics/changelog/2026-07-08-monitoring-errors-only-show-test-action-when-empty.md +6 -0
  107. package/corpus/templates/analytics/changelog/2026-07-08-production-session-replay-now-requires-private-blob-storage-.md +6 -0
  108. package/corpus/templates/analytics/changelog/2026-07-08-shared-extension-links-now-show-a-clear-message-when-you-do-.md +6 -0
  109. package/corpus/templates/analytics/changelog/2026-07-08-team-settings-show-access-controls-next-to-member-lists.md +6 -0
  110. package/corpus/templates/analytics/changelog/2026-07-08-uptime-checks-no-longer-count-ssrf-setup-time-against-the-re.md +6 -0
  111. package/corpus/templates/analytics/changelog/2026-07-08-uptime-checks-reuse-one-keep-alive-connection-so-recorded-la.md +6 -0
  112. package/corpus/templates/analytics/changelog/2026-07-08-uptime-monitors-now-confirm-transient-timeout-failures-befor.md +6 -0
  113. package/corpus/templates/analytics/changelog/2026-07-08-uptime-monitors-now-use-a-10-second-request-timeout-by-defau.md +6 -0
  114. package/corpus/templates/analytics/docs/uptime-monitoring.md +30 -18
  115. package/corpus/templates/analytics/server/db/schema-monitoring.ts +1 -1
  116. package/corpus/templates/analytics/server/db/schema.ts +56 -0
  117. package/corpus/templates/analytics/server/lib/analytics-alerts.ts +92 -0
  118. package/corpus/templates/analytics/server/lib/dashboards-store.ts +334 -5
  119. package/corpus/templates/analytics/server/lib/error-capture.ts +231 -36
  120. package/corpus/templates/analytics/server/lib/session-replay.ts +114 -8
  121. package/corpus/templates/analytics/server/lib/uptime-monitors.ts +244 -33
  122. package/corpus/templates/analytics/server/plugins/db.ts +112 -2
  123. package/corpus/templates/analytics/server/routes/api/dashboard-agent-context.json.get.ts +1 -0
  124. package/corpus/templates/assets/.agents/skills/actions/SKILL.md +5 -0
  125. package/corpus/templates/assets/.agents/skills/real-time-sync/SKILL.md +1 -1
  126. package/corpus/templates/assets/.agents/skills/security/SKILL.md +7 -0
  127. package/corpus/templates/assets/.agents/skills/storing-data/SKILL.md +5 -1
  128. package/corpus/templates/assets/AGENTS.md +4 -0
  129. package/corpus/templates/assets/app/routes/settings.tsx +1 -1
  130. package/corpus/templates/assets/app/routes/team.tsx +1 -1
  131. package/corpus/templates/brain/.agents/skills/actions/SKILL.md +5 -0
  132. package/corpus/templates/brain/.agents/skills/adding-a-feature/SKILL.md +5 -0
  133. package/corpus/templates/brain/.agents/skills/real-time-sync/SKILL.md +1 -1
  134. package/corpus/templates/brain/.agents/skills/security/SKILL.md +7 -0
  135. package/corpus/templates/brain/AGENTS.md +4 -0
  136. package/corpus/templates/brain/app/routes/team.tsx +1 -1
  137. package/corpus/templates/calendar/.agents/skills/actions/SKILL.md +5 -0
  138. package/corpus/templates/calendar/.agents/skills/real-time-sync/SKILL.md +1 -1
  139. package/corpus/templates/calendar/.agents/skills/security/SKILL.md +7 -0
  140. package/corpus/templates/calendar/.agents/skills/storing-data/SKILL.md +5 -1
  141. package/corpus/templates/calendar/AGENTS.md +4 -0
  142. package/corpus/templates/calendar/app/components/calendar/DayView.tsx +11 -2
  143. package/corpus/templates/calendar/app/components/calendar/EventDetailPopover.tsx +21 -8
  144. package/corpus/templates/calendar/app/components/calendar/MonthView.tsx +7 -1
  145. package/corpus/templates/calendar/app/components/calendar/WeekView.tsx +11 -2
  146. package/corpus/templates/calendar/app/lib/popover-click-guard.ts +48 -4
  147. package/corpus/templates/calendar/app/pages/Settings.tsx +1 -1
  148. package/corpus/templates/calendar/app/routes/_app.team.tsx +1 -1
  149. package/corpus/templates/calendar/changelog/2026-07-08-clicking-empty-calendar-space-closes-an-open-event-popover-b.md +6 -0
  150. package/corpus/templates/chat/.agents/skills/actions/SKILL.md +5 -0
  151. package/corpus/templates/chat/.agents/skills/adding-a-feature/SKILL.md +5 -0
  152. package/corpus/templates/chat/.agents/skills/real-time-sync/SKILL.md +1 -1
  153. package/corpus/templates/chat/.agents/skills/security/SKILL.md +7 -0
  154. package/corpus/templates/chat/AGENTS.md +4 -0
  155. package/corpus/templates/chat/app/hooks/use-navigation-state.ts +1 -1
  156. package/corpus/templates/chat/app/routes/settings.tsx +2 -2
  157. package/corpus/templates/chat/app/routes/team.tsx +1 -1
  158. package/corpus/templates/clips/.agents/skills/actions/SKILL.md +5 -0
  159. package/corpus/templates/clips/.agents/skills/security/SKILL.md +7 -0
  160. package/corpus/templates/clips/AGENTS.md +4 -0
  161. package/corpus/templates/clips/actions/finalize-recording.ts +9 -3
  162. package/corpus/templates/clips/actions/set-thumbnail.ts +11 -2
  163. package/corpus/templates/clips/app/components/meetings/canvas-editor.tsx +1 -7
  164. package/corpus/templates/clips/app/components/player/player-controls.tsx +21 -13
  165. package/corpus/templates/clips/app/components/player/video-player.tsx +30 -75
  166. package/corpus/templates/clips/app/i18n/ar-SA.ts +6 -5
  167. package/corpus/templates/clips/app/i18n/de-DE.ts +6 -6
  168. package/corpus/templates/clips/app/i18n/en-US.ts +6 -5
  169. package/corpus/templates/clips/app/i18n/es-ES.ts +6 -5
  170. package/corpus/templates/clips/app/i18n/fr-FR.ts +6 -6
  171. package/corpus/templates/clips/app/i18n/hi-IN.ts +6 -5
  172. package/corpus/templates/clips/app/i18n/ja-JP.ts +6 -5
  173. package/corpus/templates/clips/app/i18n/ko-KR.ts +6 -5
  174. package/corpus/templates/clips/app/i18n/pt-BR.ts +6 -5
  175. package/corpus/templates/clips/app/i18n/zh-CN.ts +6 -5
  176. package/corpus/templates/clips/app/i18n/zh-TW.ts +6 -5
  177. package/corpus/templates/clips/app/routes/_app.meetings.$meetingId.tsx +51 -118
  178. package/corpus/templates/clips/changelog/2026-07-08-hosted-clip-uploads-now-clear-failed-buffered-chunks.md +6 -0
  179. package/corpus/templates/clips/changelog/2026-07-08-hosted-recording-uploads-now-avoid-sql-chunk-storage.md +6 -0
  180. package/corpus/templates/clips/changelog/2026-07-08-meeting-recaps-now-keep-summaries-action-items-and-transcrip.md +6 -0
  181. package/corpus/templates/clips/changelog/2026-07-08-video-playback-controls-now-match-loom-style-5-second-skips-.md +6 -0
  182. package/corpus/templates/clips/server/lib/recording-upload-state.ts +63 -0
  183. package/corpus/templates/clips/server/lib/video-storage.ts +4 -0
  184. package/corpus/templates/clips/server/routes/api/recordings/[recordingId]/thumbnail.post.ts +19 -13
  185. package/corpus/templates/clips/server/routes/api/uploads/[recordingId]/chunk.post.ts +40 -1
  186. package/corpus/templates/content/.agents/skills/actions/SKILL.md +5 -0
  187. package/corpus/templates/content/.agents/skills/real-time-sync/SKILL.md +1 -1
  188. package/corpus/templates/content/.agents/skills/security/SKILL.md +7 -0
  189. package/corpus/templates/content/.agents/skills/storing-data/SKILL.md +5 -1
  190. package/corpus/templates/content/AGENTS.md +4 -0
  191. package/corpus/templates/content/app/routes/_app.settings.tsx +2 -2
  192. package/corpus/templates/content/app/routes/_app.team.tsx +1 -1
  193. package/corpus/templates/design/.agents/skills/actions/SKILL.md +5 -0
  194. package/corpus/templates/design/.agents/skills/security/SKILL.md +7 -0
  195. package/corpus/templates/design/AGENTS.md +4 -0
  196. package/corpus/templates/design/actions/take-design-screenshot.ts +12 -9
  197. package/corpus/templates/design/app/components/design/inspector/ImageFillControls.tsx +57 -13
  198. package/corpus/templates/design/app/routes/team.tsx +1 -1
  199. package/corpus/templates/design/changelog/2026-07-08-local-images-added-to-designs-now-upload-to-file-storage-ins.md +6 -0
  200. package/corpus/templates/dispatch/.agents/skills/actions/SKILL.md +5 -0
  201. package/corpus/templates/dispatch/.agents/skills/security/SKILL.md +7 -0
  202. package/corpus/templates/dispatch/AGENTS.md +4 -0
  203. package/corpus/templates/dispatch/app/hooks/use-navigation-state.ts +1 -1
  204. package/corpus/templates/dispatch/app/routes/settings.tsx +2 -2
  205. package/corpus/templates/dispatch/app/routes/team.tsx +1 -1
  206. package/corpus/templates/forms/.agents/skills/actions/SKILL.md +5 -0
  207. package/corpus/templates/forms/.agents/skills/real-time-sync/SKILL.md +1 -1
  208. package/corpus/templates/forms/.agents/skills/security/SKILL.md +7 -0
  209. package/corpus/templates/forms/.agents/skills/storing-data/SKILL.md +5 -1
  210. package/corpus/templates/forms/AGENTS.md +4 -0
  211. package/corpus/templates/forms/app/routes/_app.settings.tsx +2 -2
  212. package/corpus/templates/forms/app/routes/_app.team.tsx +1 -1
  213. package/corpus/templates/forms/shared/navigation.ts +1 -1
  214. package/corpus/templates/macros/.agents/skills/security/SKILL.md +7 -0
  215. package/corpus/templates/macros/AGENTS.md +4 -0
  216. package/corpus/templates/macros/app/routes/settings.tsx +2 -2
  217. package/corpus/templates/macros/app/routes/team.tsx +1 -1
  218. package/corpus/templates/mail/.agents/skills/actions/SKILL.md +5 -0
  219. package/corpus/templates/mail/.agents/skills/email-drafts/SKILL.md +1 -1
  220. package/corpus/templates/mail/.agents/skills/real-time-sync/SKILL.md +1 -1
  221. package/corpus/templates/mail/.agents/skills/security/SKILL.md +7 -0
  222. package/corpus/templates/mail/.agents/skills/storing-data/SKILL.md +5 -1
  223. package/corpus/templates/mail/AGENTS.md +4 -0
  224. package/corpus/templates/mail/changelog/2026-07-08-mail-attachments-in-hosted-environments-now-require-file-sto.md +6 -0
  225. package/corpus/templates/mail/server/handlers/media.ts +26 -1
  226. package/corpus/templates/mail/server/lib/outgoing-email.ts +24 -1
  227. package/corpus/templates/mail/server/lib/upload-store.ts +2 -1
  228. package/corpus/templates/plan/.agents/skills/actions/SKILL.md +5 -0
  229. package/corpus/templates/plan/.agents/skills/adding-a-feature/SKILL.md +5 -0
  230. package/corpus/templates/plan/.agents/skills/real-time-sync/SKILL.md +1 -1
  231. package/corpus/templates/plan/.agents/skills/security/SKILL.md +7 -0
  232. package/corpus/templates/plan/AGENTS.md +4 -0
  233. package/corpus/templates/plan/app/hooks/use-navigation-state.ts +1 -1
  234. package/corpus/templates/plan/app/routes/settings.tsx +2 -2
  235. package/corpus/templates/plan/app/routes/team.tsx +1 -1
  236. package/corpus/templates/plan/changelog/2026-07-08-hosted-plan-images-now-require-connected-storage.md +6 -0
  237. package/corpus/templates/plan/server/lib/plan-assets.ts +33 -4
  238. package/corpus/templates/slides/.agents/skills/actions/SKILL.md +5 -0
  239. package/corpus/templates/slides/.agents/skills/security/SKILL.md +7 -0
  240. package/corpus/templates/slides/AGENTS.md +4 -0
  241. package/corpus/templates/slides/actions/generate-image-api.ts +15 -3
  242. package/corpus/templates/slides/app/routes/settings.tsx +2 -2
  243. package/corpus/templates/slides/app/routes/team.tsx +1 -1
  244. package/corpus/templates/slides/changelog/2026-07-08-generated-slide-images-now-return-hosted-file-storage-urls-i.md +6 -0
  245. package/corpus/templates/slides/shared/api.ts +1 -1
  246. package/dist/application-state/store.d.ts.map +1 -1
  247. package/dist/application-state/store.js +8 -2
  248. package/dist/application-state/store.js.map +1 -1
  249. package/dist/cli/sync-builder-starter-manifest.d.ts.map +1 -1
  250. package/dist/cli/sync-builder-starter-manifest.js +24 -1
  251. package/dist/cli/sync-builder-starter-manifest.js.map +1 -1
  252. package/dist/client/AssistantChat.d.ts.map +1 -1
  253. package/dist/client/AssistantChat.js +24 -13
  254. package/dist/client/AssistantChat.js.map +1 -1
  255. package/dist/client/PoweredByBadge.d.ts +1 -1
  256. package/dist/client/PoweredByBadge.d.ts.map +1 -1
  257. package/dist/client/PoweredByBadge.js +3 -9
  258. package/dist/client/PoweredByBadge.js.map +1 -1
  259. package/dist/client/agent-chat-adapter.d.ts.map +1 -1
  260. package/dist/client/agent-chat-adapter.js +28 -9
  261. package/dist/client/agent-chat-adapter.js.map +1 -1
  262. package/dist/client/chat/widgets/DataTableWidget.d.ts.map +1 -1
  263. package/dist/client/chat/widgets/DataTableWidget.js +19 -2
  264. package/dist/client/chat/widgets/DataTableWidget.js.map +1 -1
  265. package/dist/client/db-admin/TableEditor.d.ts.map +1 -1
  266. package/dist/client/db-admin/TableEditor.js +19 -2
  267. package/dist/client/db-admin/TableEditor.js.map +1 -1
  268. package/dist/client/db-admin/export-utils.d.ts +2 -0
  269. package/dist/client/db-admin/export-utils.d.ts.map +1 -1
  270. package/dist/client/db-admin/export-utils.js +11 -3
  271. package/dist/client/db-admin/export-utils.js.map +1 -1
  272. package/dist/client/db-admin/useAgentSync.d.ts.map +1 -1
  273. package/dist/client/db-admin/useAgentSync.js +63 -0
  274. package/dist/client/db-admin/useAgentSync.js.map +1 -1
  275. package/dist/client/error-capture.d.ts.map +1 -1
  276. package/dist/client/error-capture.js +41 -7
  277. package/dist/client/error-capture.js.map +1 -1
  278. package/dist/client/extensions/EmbeddedExtension.d.ts.map +1 -1
  279. package/dist/client/extensions/EmbeddedExtension.js +3 -1
  280. package/dist/client/extensions/EmbeddedExtension.js.map +1 -1
  281. package/dist/client/extensions/ExtensionViewer.d.ts.map +1 -1
  282. package/dist/client/extensions/ExtensionViewer.js +32 -5
  283. package/dist/client/extensions/ExtensionViewer.js.map +1 -1
  284. package/dist/client/extensions/InlineExtensionFrame.d.ts.map +1 -1
  285. package/dist/client/extensions/InlineExtensionFrame.js +3 -1
  286. package/dist/client/extensions/InlineExtensionFrame.js.map +1 -1
  287. package/dist/client/extensions/portable-extension.d.ts.map +1 -1
  288. package/dist/client/extensions/portable-extension.js +1 -0
  289. package/dist/client/extensions/portable-extension.js.map +1 -1
  290. package/dist/client/org/OrgSwitcher.d.ts +1 -1
  291. package/dist/client/org/OrgSwitcher.d.ts.map +1 -1
  292. package/dist/client/org/OrgSwitcher.js +11 -6
  293. package/dist/client/org/OrgSwitcher.js.map +1 -1
  294. package/dist/client/org/TeamPage.d.ts.map +1 -1
  295. package/dist/client/org/TeamPage.js +5 -5
  296. package/dist/client/org/TeamPage.js.map +1 -1
  297. package/dist/client/settings/SettingsPanel.d.ts.map +1 -1
  298. package/dist/client/settings/SettingsPanel.js +37 -14
  299. package/dist/client/settings/SettingsPanel.js.map +1 -1
  300. package/dist/client/settings/SettingsSection.js +1 -1
  301. package/dist/client/settings/SettingsSection.js.map +1 -1
  302. package/dist/client/settings/SettingsTabsPage.d.ts.map +1 -1
  303. package/dist/client/settings/SettingsTabsPage.js +21 -10
  304. package/dist/client/settings/SettingsTabsPage.js.map +1 -1
  305. package/dist/collab/routes.d.ts +1 -1
  306. package/dist/db-admin/agent-tools.d.ts.map +1 -1
  307. package/dist/db-admin/agent-tools.js +7 -2
  308. package/dist/db-admin/agent-tools.js.map +1 -1
  309. package/dist/db-admin/operations.d.ts.map +1 -1
  310. package/dist/db-admin/operations.js +90 -4
  311. package/dist/db-admin/operations.js.map +1 -1
  312. package/dist/db-admin/routes.d.ts.map +1 -1
  313. package/dist/db-admin/routes.js +1 -0
  314. package/dist/db-admin/routes.js.map +1 -1
  315. package/dist/db-admin/types.d.ts +4 -0
  316. package/dist/db-admin/types.d.ts.map +1 -1
  317. package/dist/db-admin/types.js.map +1 -1
  318. package/dist/extensions/html-shell.d.ts +5 -4
  319. package/dist/extensions/html-shell.d.ts.map +1 -1
  320. package/dist/extensions/html-shell.js.map +1 -1
  321. package/dist/extensions/routes.d.ts.map +1 -1
  322. package/dist/extensions/routes.js +8 -0
  323. package/dist/extensions/routes.js.map +1 -1
  324. package/dist/navigation/index.d.ts +1 -1
  325. package/dist/navigation/index.d.ts.map +1 -1
  326. package/dist/navigation/index.js +1 -1
  327. package/dist/navigation/index.js.map +1 -1
  328. package/dist/notifications/channels.js +1 -17
  329. package/dist/notifications/channels.js.map +1 -1
  330. package/dist/notifications/routes.d.ts +1 -1
  331. package/dist/resources/handlers.d.ts +5 -0
  332. package/dist/resources/handlers.d.ts.map +1 -1
  333. package/dist/resources/handlers.js +9 -8
  334. package/dist/resources/handlers.js.map +1 -1
  335. package/dist/server/agent-engine-api-key-route.d.ts +1 -1
  336. package/dist/server/poll.d.ts +12 -4
  337. package/dist/server/poll.d.ts.map +1 -1
  338. package/dist/server/poll.js +236 -9
  339. package/dist/server/poll.js.map +1 -1
  340. package/dist/styles/agent-native.css +27 -0
  341. package/dist/templates/default/.agents/skills/actions/SKILL.md +5 -0
  342. package/dist/templates/default/.agents/skills/adding-a-feature/SKILL.md +5 -0
  343. package/dist/templates/default/.agents/skills/real-time-sync/SKILL.md +1 -1
  344. package/dist/templates/default/.agents/skills/security/SKILL.md +7 -0
  345. package/dist/templates/default/.agents/skills/storing-data/SKILL.md +5 -1
  346. package/dist/templates/default/AGENTS.md +4 -2
  347. package/dist/templates/headless/AGENTS.md +4 -0
  348. package/dist/templates/workspace-core/.agents/skills/actions/SKILL.md +5 -0
  349. package/dist/templates/workspace-core/.agents/skills/adding-a-feature/SKILL.md +5 -0
  350. package/dist/templates/workspace-core/.agents/skills/context-awareness/SKILL.md +4 -0
  351. package/dist/templates/workspace-core/.agents/skills/extensions/SKILL.md +6 -0
  352. package/dist/templates/workspace-core/.agents/skills/performance/SKILL.md +4 -0
  353. package/dist/templates/workspace-core/.agents/skills/real-time-sync/SKILL.md +1 -1
  354. package/dist/templates/workspace-core/.agents/skills/security/SKILL.md +7 -0
  355. package/dist/templates/workspace-core/.agents/skills/storing-data/SKILL.md +5 -1
  356. package/dist/templates/workspace-core/AGENTS.md +7 -1
  357. package/dist/templates/workspace-root/AGENTS.md +7 -1
  358. package/package.json +1 -1
  359. package/src/templates/default/.agents/skills/actions/SKILL.md +5 -0
  360. package/src/templates/default/.agents/skills/adding-a-feature/SKILL.md +5 -0
  361. package/src/templates/default/.agents/skills/real-time-sync/SKILL.md +1 -1
  362. package/src/templates/default/.agents/skills/security/SKILL.md +7 -0
  363. package/src/templates/default/.agents/skills/storing-data/SKILL.md +5 -1
  364. package/src/templates/default/AGENTS.md +4 -2
  365. package/src/templates/headless/AGENTS.md +4 -0
  366. package/src/templates/workspace-core/.agents/skills/actions/SKILL.md +5 -0
  367. package/src/templates/workspace-core/.agents/skills/adding-a-feature/SKILL.md +5 -0
  368. package/src/templates/workspace-core/.agents/skills/context-awareness/SKILL.md +4 -0
  369. package/src/templates/workspace-core/.agents/skills/extensions/SKILL.md +6 -0
  370. package/src/templates/workspace-core/.agents/skills/performance/SKILL.md +4 -0
  371. package/src/templates/workspace-core/.agents/skills/real-time-sync/SKILL.md +1 -1
  372. package/src/templates/workspace-core/.agents/skills/security/SKILL.md +7 -0
  373. package/src/templates/workspace-core/.agents/skills/storing-data/SKILL.md +5 -1
  374. package/src/templates/workspace-core/AGENTS.md +7 -1
  375. package/src/templates/workspace-root/AGENTS.md +7 -1
@@ -16,6 +16,13 @@ export interface ParsedStackFrame {
16
16
  colno: number | null;
17
17
  inApp: boolean;
18
18
  raw: string;
19
+ sourceContext?: SourceContextLine[];
20
+ }
21
+
22
+ export interface SourceContextLine {
23
+ line: number;
24
+ text: string;
25
+ highlight: boolean;
19
26
  }
20
27
 
21
28
  export interface ErrorIssueSummary {
@@ -45,6 +52,7 @@ export interface ErrorEventDetail {
45
52
  culprit: string | null;
46
53
  level: ExceptionLevel;
47
54
  stack: ParsedStackFrame[];
55
+ rawStack: string | null;
48
56
  handled: boolean;
49
57
  url: string | null;
50
58
  userId: string | null;
@@ -57,7 +65,7 @@ export interface ErrorEventDetail {
57
65
  environment: string | null;
58
66
  tags: Record<string, unknown>;
59
67
  extra: Record<string, unknown>;
60
- breadcrumbs: ErrorBreadcrumb[];
68
+ breadcrumbs: unknown[];
61
69
  occurredAt: string;
62
70
  }
63
71
 
@@ -71,6 +71,7 @@ const INTERVAL_OPTIONS = [
71
71
 
72
72
  const STATUS_CLASSES = ["2xx", "3xx", "4xx", "5xx"] as const;
73
73
  const KNOWN_CHANNELS = ["inbox", "email", "slack", "webhook"] as const;
74
+ const DEFAULT_TIMEOUT_SECONDS = 10;
74
75
  const ASSERTION_TYPES: AssertionType[] = [
75
76
  "body_contains",
76
77
  "body_absent",
@@ -142,7 +143,9 @@ function defaultValues(monitor: MonitorSummary | null): MonitorFormValues {
142
143
  url: monitor?.url ?? "",
143
144
  method: monitor?.method ?? "GET",
144
145
  intervalSeconds: monitor?.intervalSeconds ?? 300,
145
- timeoutSeconds: Math.round((monitor?.timeoutMs ?? 15000) / 1000),
146
+ timeoutSeconds: Math.round(
147
+ (monitor?.timeoutMs ?? DEFAULT_TIMEOUT_SECONDS * 1000) / 1000,
148
+ ),
146
149
  matcherMode: matcher.mode,
147
150
  classes: classFlags,
148
151
  codes: matcher.mode === "list" ? matcher.codes.join(", ") : "200",
@@ -215,7 +218,7 @@ function initialSections(monitor: MonitorSummary | null): SectionState {
215
218
  monitor.severity !== "critical",
216
219
  advanced:
217
220
  monitor.method !== "GET" ||
218
- monitor.timeoutMs !== 15000 ||
221
+ monitor.timeoutMs !== DEFAULT_TIMEOUT_SECONDS * 1000 ||
219
222
  monitor.cooldownMinutes !== 15 ||
220
223
  !monitor.followRedirects ||
221
224
  !monitor.enabled,
@@ -336,7 +339,7 @@ export function MonitorFormPage({
336
339
  const advancedSummary = useMemo(() => {
337
340
  const parts = [
338
341
  values.method,
339
- `${values.timeoutSeconds || 15}s`,
342
+ `${values.timeoutSeconds || DEFAULT_TIMEOUT_SECONDS}s`,
340
343
  `${values.cooldownMinutes ?? 15}m`,
341
344
  ];
342
345
  if (!values.enabled) parts.push(t.pausedBadge);
@@ -450,6 +450,7 @@ function ReplayWorkbench({
450
450
  />
451
451
  <ReplayTimeline
452
452
  markers={markers}
453
+ isLoading={!response.isComplete}
453
454
  activeMarkerId={activeMarkerId}
454
455
  onSeek={(ms) => seekRef.current(ms, true)}
455
456
  />
@@ -1226,10 +1227,12 @@ function ReplayIconButton({
1226
1227
 
1227
1228
  function ReplayTimeline({
1228
1229
  markers,
1230
+ isLoading,
1229
1231
  activeMarkerId,
1230
1232
  onSeek,
1231
1233
  }: {
1232
1234
  markers: ReplayMarker[];
1235
+ isLoading: boolean;
1233
1236
  activeMarkerId: string | null;
1234
1237
  onSeek: (ms: number) => void;
1235
1238
  }) {
@@ -1268,35 +1271,28 @@ function ReplayTimeline({
1268
1271
  }, [activeMarkerId, filteredMarkers]);
1269
1272
 
1270
1273
  return (
1271
- <Card className="analytics-session-detail-timeline min-h-0 overflow-hidden">
1272
- <CardContent className="flex min-h-0 flex-1 flex-col p-0">
1273
- <div className="shrink-0 space-y-2 border-b px-3 py-2">
1274
- <div className="flex items-center gap-2 text-sm font-semibold">
1275
- <IconTimelineEvent className="h-4 w-4" />
1274
+ <Card className="analytics-session-detail-timeline min-h-0 min-w-0 overflow-hidden">
1275
+ <CardContent className="flex min-h-0 min-w-0 flex-1 flex-col p-0">
1276
+ <div className="min-w-0 shrink-0 space-y-2 border-b px-3 py-2">
1277
+ <div className="truncate text-sm font-semibold">
1276
1278
  {t("sessions.timeline")}
1277
1279
  </div>
1278
- <p className="text-xs text-muted-foreground">
1279
- {filteredMarkers.length
1280
- ? t("sessions.timelineDescription", {
1281
- count: String(filteredMarkers.length),
1282
- total: String(markers.length),
1283
- })
1284
- : t("sessions.noTimelineEvents")}
1285
- </p>
1286
- <div className="relative">
1287
- <IconSearch className="pointer-events-none absolute start-2 top-1/2 h-3.5 w-3.5 -translate-y-1/2 text-muted-foreground" />
1288
- <Input
1289
- type="search"
1290
- className="h-7 ps-7 text-xs"
1291
- value={query}
1292
- placeholder={t("sessions.timelineSearch")}
1293
- onChange={(event) => setQuery(event.target.value)}
1294
- />
1295
- </div>
1280
+ {!isLoading || markers.length ? (
1281
+ <div className="relative">
1282
+ <IconSearch className="pointer-events-none absolute start-2 top-1/2 h-3.5 w-3.5 -translate-y-1/2 text-muted-foreground" />
1283
+ <Input
1284
+ type="search"
1285
+ className="h-7 ps-7 text-xs"
1286
+ value={query}
1287
+ placeholder={t("sessions.timelineSearch")}
1288
+ onChange={(event) => setQuery(event.target.value)}
1289
+ />
1290
+ </div>
1291
+ ) : null}
1296
1292
  </div>
1297
1293
  <div
1298
1294
  ref={listRef}
1299
- className="min-h-0 flex-1 overflow-auto"
1295
+ className="min-h-0 min-w-0 flex-1 overflow-y-auto overflow-x-hidden"
1300
1296
  onWheel={() => {
1301
1297
  lastManualScrollAtRef.current = Date.now();
1302
1298
  }}
@@ -1305,7 +1301,7 @@ function ReplayTimeline({
1305
1301
  }}
1306
1302
  >
1307
1303
  {filteredMarkers.length ? (
1308
- <div className="divide-y">
1304
+ <div className="min-w-0 divide-y">
1309
1305
  {filteredMarkers.map((marker) => {
1310
1306
  const expanded = marker.id === expandedMarkerId;
1311
1307
  const active = marker.id === activeMarkerId;
@@ -1320,7 +1316,7 @@ function ReplayTimeline({
1320
1316
  >
1321
1317
  <button
1322
1318
  type="button"
1323
- className="flex w-full gap-2.5 px-3 py-2.5 text-left transition-colors hover:bg-muted/50"
1319
+ className="flex w-full min-w-0 gap-2.5 px-3 py-2.5 text-left transition-colors hover:bg-muted/50"
1324
1320
  aria-expanded={expanded}
1325
1321
  aria-current={active ? "true" : undefined}
1326
1322
  onClick={() => {
@@ -1351,12 +1347,12 @@ function ReplayTimeline({
1351
1347
  >
1352
1348
  <MarkerIcon kind={marker.kind} />
1353
1349
  </span>
1354
- <span className="min-w-0 flex-1">
1355
- <span className="flex items-center justify-between gap-3">
1350
+ <span className="min-w-0 flex-1 overflow-hidden">
1351
+ <span className="flex min-w-0 items-center justify-between gap-3">
1356
1352
  <span className="truncate text-sm font-medium">
1357
1353
  {marker.label}
1358
1354
  </span>
1359
- <span className="font-mono text-xs text-muted-foreground">
1355
+ <span className="shrink-0 font-mono text-xs text-muted-foreground">
1360
1356
  {formatClock(marker.offsetMs)}
1361
1357
  </span>
1362
1358
  </span>
@@ -1378,7 +1374,7 @@ function ReplayTimeline({
1378
1374
  );
1379
1375
  })}
1380
1376
  </div>
1381
- ) : (
1377
+ ) : isLoading ? null : (
1382
1378
  <div className="p-4 text-sm text-muted-foreground">
1383
1379
  {query.trim()
1384
1380
  ? t("sessions.timelineNoMatches")
@@ -1,6 +1,5 @@
1
1
  import { CodeSurface } from "@agent-native/core/blocks";
2
2
  import {
3
- agentNativePath,
4
3
  useActionQuery,
5
4
  useBuilderConnectFlow,
6
5
  useBuilderStatus,
@@ -80,13 +79,7 @@ type SessionRecordingIdentity = Pick<
80
79
 
81
80
  type SessionRecordingDevice = Pick<SessionRecordingSummary, "metadata">;
82
81
 
83
- type DemoStatus = {
84
- enabled?: boolean;
85
- forced?: boolean;
86
- };
87
-
88
82
  const RANGE_OPTIONS: ReplayRange[] = ["24h", "7d", "30d", "90d", "all"];
89
- const DEMO_STATUS_URL = agentNativePath("/_agent-native/demo/status");
90
83
 
91
84
  export default function SessionsPage() {
92
85
  const t = useT();
@@ -111,7 +104,6 @@ export default function SessionsPage() {
111
104
  { staleTime: 30_000 },
112
105
  );
113
106
 
114
- const demoModeEnabled = useDemoModeEnabled();
115
107
  const recordings = data ?? [];
116
108
 
117
109
  function updateFilter(key: string, value: string) {
@@ -256,7 +248,7 @@ export default function SessionsPage() {
256
248
  </span>
257
249
  <span className="min-w-0">
258
250
  <span className="block truncate text-sm font-medium text-foreground">
259
- {visitorLabel(recording, t, demoModeEnabled)}
251
+ {visitorLabel(recording, t)}
260
252
  </span>
261
253
  <span className="mt-0.5 block truncate text-xs text-muted-foreground">
262
254
  {formatDateTime(lastSeen)} ·{" "}
@@ -278,11 +270,7 @@ export default function SessionsPage() {
278
270
  </span>
279
271
  <span className="analytics-session-app-meta min-w-0 text-left">
280
272
  <span className="analytics-session-badges flex flex-wrap gap-1.5 text-xs text-muted-foreground">
281
- <span>
282
- {t("sessions.pageCountCompact", {
283
- count: formatNumber(recording.pageCount),
284
- })}
285
- </span>
273
+ <span>{formatPageCount(recording.pageCount, t)}</span>
286
274
  {recording.errorCount > 0 ? (
287
275
  <span className="font-medium text-destructive">
288
276
  {t("sessions.errorCount", {
@@ -316,22 +304,6 @@ export default function SessionsPage() {
316
304
  );
317
305
  }
318
306
 
319
- function useDemoModeEnabled(): boolean {
320
- const { data } = useQuery({
321
- queryKey: ["agent-native", "demo-mode"],
322
- queryFn: async () => {
323
- const res = await fetch(DEMO_STATUS_URL, {
324
- credentials: "same-origin",
325
- });
326
- if (!res.ok) return null;
327
- return (await res.json()) as DemoStatus | null;
328
- },
329
- refetchInterval: 4_000,
330
- staleTime: 2_000,
331
- });
332
- return data?.enabled === true || data?.forced === true;
333
- }
334
-
335
307
  function EmptySessionsState() {
336
308
  const t = useT();
337
309
  const storageStatus = useReplayStorageStatus();
@@ -504,9 +476,7 @@ function rangeLabel(value: ReplayRange, t: ReturnType<typeof useT>): string {
504
476
  function visitorLabel(
505
477
  recording: SessionRecordingIdentity,
506
478
  t: ReturnType<typeof useT>,
507
- demoModeEnabled: boolean,
508
479
  ): string {
509
- if (demoModeEnabled) return demoVisitorLabel(recording);
510
480
  const email = emailLike(recording.userId) || emailLike(recording.userKey);
511
481
  if (email) return email;
512
482
  return (
@@ -517,29 +487,6 @@ function visitorLabel(
517
487
  );
518
488
  }
519
489
 
520
- export function demoVisitorLabel(recording: SessionRecordingIdentity): string {
521
- const source =
522
- emailLike(recording.userId) ||
523
- emailLike(recording.userKey) ||
524
- recording.userId ||
525
- recording.userKey ||
526
- recording.anonymousId ||
527
- recording.sessionId ||
528
- recording.id;
529
- const hash = stableHash(source);
530
- const first = DEMO_FIRST_NAMES[hash % DEMO_FIRST_NAMES.length];
531
- const last =
532
- DEMO_LAST_NAMES[
533
- Math.floor(hash / DEMO_FIRST_NAMES.length) % DEMO_LAST_NAMES.length
534
- ];
535
- const domain =
536
- DEMO_DOMAINS[
537
- Math.floor(hash / (DEMO_FIRST_NAMES.length * DEMO_LAST_NAMES.length)) %
538
- DEMO_DOMAINS.length
539
- ];
540
- return `${first}.${last}@${domain}`.toLowerCase();
541
- }
542
-
543
490
  function emailLike(value: string | null): string | null {
544
491
  if (!value?.includes("@")) return null;
545
492
  return value;
@@ -667,53 +614,16 @@ function formatNumber(value: number): string {
667
614
  return new Intl.NumberFormat().format(value);
668
615
  }
669
616
 
670
- function stableHash(value: string): number {
671
- let hash = 2166136261;
672
- for (let i = 0; i < value.length; i += 1) {
673
- hash ^= value.charCodeAt(i);
674
- hash = Math.imul(hash, 16777619);
617
+ function formatPageCount(value: number, t: ReturnType<typeof useT>): string {
618
+ const count = Math.max(0, Math.round(value || 0));
619
+ if (count === 1) {
620
+ return t("sessions.pageCountCompactSingular", {
621
+ count: formatNumber(count),
622
+ });
675
623
  }
676
- return hash >>> 0;
624
+ return t("sessions.pageCountCompact", { count: formatNumber(count) });
677
625
  }
678
626
 
679
- const DEMO_FIRST_NAMES = [
680
- "Avery",
681
- "Blake",
682
- "Cameron",
683
- "Devon",
684
- "Emerson",
685
- "Finley",
686
- "Harper",
687
- "Jordan",
688
- "Morgan",
689
- "Quinn",
690
- "Riley",
691
- "Taylor",
692
- ];
693
-
694
- const DEMO_LAST_NAMES = [
695
- "Bennett",
696
- "Carter",
697
- "Ellis",
698
- "Hayes",
699
- "Keller",
700
- "Monroe",
701
- "Parker",
702
- "Reed",
703
- "Sullivan",
704
- "Walker",
705
- "Young",
706
- "Zimmer",
707
- ];
708
-
709
- const DEMO_DOMAINS = [
710
- "acme.test",
711
- "northstar.test",
712
- "orbit.test",
713
- "riverbank.test",
714
- "summit.test",
715
- ];
716
-
717
627
  const SESSION_REPLAY_SNIPPET = `// Agent Native templates already call configureTracking().
718
628
  import { configureTracking } from "@agent-native/core/client";
719
629