@agent-native/core 0.90.11 → 0.91.1

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 (322) hide show
  1. package/corpus/README.md +2 -2
  2. package/corpus/core/CHANGELOG.md +34 -0
  3. package/corpus/core/docs/content/toolkit-settings.mdx +56 -3
  4. package/corpus/core/package.json +2 -1
  5. package/corpus/core/src/agent/run-ownership.ts +29 -1
  6. package/corpus/core/src/changelog/parse.ts +78 -0
  7. package/corpus/core/src/chat-threads/schema.ts +43 -0
  8. package/corpus/core/src/chat-threads/store.ts +144 -12
  9. package/corpus/core/src/cli/design-connect.ts +53 -9
  10. package/corpus/core/src/cli/workspace-dev.ts +25 -5
  11. package/corpus/core/src/client/AgentPanel.tsx +79 -14
  12. package/corpus/core/src/client/AssistantChat.tsx +359 -425
  13. package/corpus/core/src/client/analytics-session.ts +70 -0
  14. package/corpus/core/src/client/analytics.ts +175 -49
  15. package/corpus/core/src/client/chat/message-components.tsx +22 -2
  16. package/corpus/core/src/client/components/ui/message-scroller.tsx +131 -0
  17. package/corpus/core/src/client/conversation/AgentConversation.tsx +63 -41
  18. package/corpus/core/src/client/error-capture.ts +616 -0
  19. package/corpus/core/src/client/index.ts +12 -0
  20. package/corpus/core/src/client/session-replay.ts +57 -7
  21. package/corpus/core/src/client/settings/SettingsPanel.tsx +123 -1
  22. package/corpus/core/src/client/settings/SettingsTabsPage.tsx +292 -45
  23. package/corpus/core/src/client/settings/index.ts +1 -0
  24. package/corpus/core/src/client/sharing/ShareButton.tsx +14 -11
  25. package/corpus/core/src/client/sharing/ShareDialog.tsx +13 -10
  26. package/corpus/core/src/mcp/builtin-tools.ts +29 -2
  27. package/corpus/core/src/server/agent-chat-plugin.ts +174 -79
  28. package/corpus/core/src/server/onboarding-html.ts +28 -16
  29. package/corpus/core/src/sharing/actions/list-resource-shares.ts +45 -1
  30. package/corpus/core/src/sharing/actions/share-resource.ts +9 -0
  31. package/corpus/core/src/templates/workspace-core/.agents/skills/agent-native-toolkit/SKILL.md +4 -2
  32. package/corpus/core/src/templates/workspace-core/.agents/skills/changelog/SKILL.md +9 -6
  33. package/corpus/core/src/vite/client.ts +217 -35
  34. package/corpus/templates/analytics/.agents/skills/adhoc-analysis/SKILL.md +8 -7
  35. package/corpus/templates/analytics/.agents/skills/analysis-workspace/SKILL.md +14 -10
  36. package/corpus/templates/analytics/.agents/skills/bigquery/SKILL.md +15 -15
  37. package/corpus/templates/analytics/.agents/skills/cross-source-analysis/SKILL.md +1 -0
  38. package/corpus/templates/analytics/.agents/skills/dashboard-management/SKILL.md +38 -22
  39. package/corpus/templates/analytics/.agents/skills/data-programs/SKILL.md +114 -61
  40. package/corpus/templates/analytics/.agents/skills/data-querying/SKILL.md +1 -0
  41. package/corpus/templates/analytics/.agents/skills/gong/SKILL.md +7 -7
  42. package/corpus/templates/analytics/.agents/skills/hubspot/SKILL.md +1 -0
  43. package/corpus/templates/analytics/.agents/skills/prometheus/SKILL.md +1 -1
  44. package/corpus/templates/analytics/.builder/skills/bigquery/SKILL.md +17 -17
  45. package/corpus/templates/analytics/.builder/skills/gcloud/SKILL.md +5 -5
  46. package/corpus/templates/analytics/.builder/skills/github/SKILL.md +7 -7
  47. package/corpus/templates/analytics/.builder/skills/gong/SKILL.md +12 -12
  48. package/corpus/templates/analytics/.builder/skills/grafana/SKILL.md +7 -7
  49. package/corpus/templates/analytics/.builder/skills/sentry/SKILL.md +7 -7
  50. package/corpus/templates/analytics/.builder/skills/slack/SKILL.md +6 -6
  51. package/corpus/templates/analytics/.builder/skills/stripe/SKILL.md +7 -7
  52. package/corpus/templates/analytics/AGENTS.md +47 -2
  53. package/corpus/templates/analytics/actions/add-status-page-monitor.ts +36 -0
  54. package/corpus/templates/analytics/actions/capture-test-error.ts +33 -0
  55. package/corpus/templates/analytics/actions/delete-monitor.ts +24 -0
  56. package/corpus/templates/analytics/actions/delete-status-page.ts +23 -0
  57. package/corpus/templates/analytics/actions/get-error-issue.ts +36 -0
  58. package/corpus/templates/analytics/actions/get-monitor-stats.ts +55 -0
  59. package/corpus/templates/analytics/actions/get-monitor.ts +27 -0
  60. package/corpus/templates/analytics/actions/get-public-status-page.ts +41 -0
  61. package/corpus/templates/analytics/actions/get-status-page.ts +29 -0
  62. package/corpus/templates/analytics/actions/list-error-issues.ts +40 -0
  63. package/corpus/templates/analytics/actions/list-monitors.ts +21 -0
  64. package/corpus/templates/analytics/actions/list-status-pages.ts +21 -0
  65. package/corpus/templates/analytics/actions/match-error-issues.ts +51 -0
  66. package/corpus/templates/analytics/actions/navigate.ts +58 -4
  67. package/corpus/templates/analytics/actions/remove-status-page-monitor.ts +22 -0
  68. package/corpus/templates/analytics/actions/reorder-status-page-monitors.ts +25 -0
  69. package/corpus/templates/analytics/actions/resolve-error-issue.ts +38 -0
  70. package/corpus/templates/analytics/actions/run-monitor-check.ts +23 -0
  71. package/corpus/templates/analytics/actions/save-analysis.ts +1 -0
  72. package/corpus/templates/analytics/actions/save-monitor.ts +145 -0
  73. package/corpus/templates/analytics/actions/save-status-page.ts +47 -0
  74. package/corpus/templates/analytics/actions/view-screen.ts +212 -0
  75. package/corpus/templates/analytics/app/components/layout/Header.tsx +1 -0
  76. package/corpus/templates/analytics/app/components/layout/Layout.tsx +10 -1
  77. package/corpus/templates/analytics/app/components/layout/Sidebar.tsx +134 -39
  78. package/corpus/templates/analytics/app/components/monitoring/PublicStatusView.tsx +351 -0
  79. package/corpus/templates/analytics/app/components/monitoring/ResponseTimeChart.tsx +174 -0
  80. package/corpus/templates/analytics/app/components/monitoring/UptimeStatCards.tsx +85 -0
  81. package/corpus/templates/analytics/app/components/monitoring/UptimeTimelineBars.tsx +106 -0
  82. package/corpus/templates/analytics/app/components/monitoring/chart-utils.ts +101 -0
  83. package/corpus/templates/analytics/app/components/monitoring/index.ts +28 -0
  84. package/corpus/templates/analytics/app/components/monitoring/types.ts +42 -0
  85. package/corpus/templates/analytics/app/hooks/use-navigation-state.ts +34 -0
  86. package/corpus/templates/analytics/app/i18n/zh-TW.ts +6 -0
  87. package/corpus/templates/analytics/app/i18n-data.ts +33 -0
  88. package/corpus/templates/analytics/app/pages/DataSources.tsx +28 -0
  89. package/corpus/templates/analytics/app/pages/Settings.tsx +77 -9
  90. package/corpus/templates/analytics/app/pages/adhoc/sql-dashboard/SqlChartCard.tsx +3 -3
  91. package/corpus/templates/analytics/app/pages/adhoc/sql-dashboard/dashboard-layout.ts +7 -0
  92. package/corpus/templates/analytics/app/pages/monitoring/ErrorsPanel.tsx +205 -0
  93. package/corpus/templates/analytics/app/pages/monitoring/MonitoringPage.tsx +100 -0
  94. package/corpus/templates/analytics/app/pages/monitoring/UptimePanel.tsx +475 -0
  95. package/corpus/templates/analytics/app/pages/monitoring/errors/IssueDetail.tsx +372 -0
  96. package/corpus/templates/analytics/app/pages/monitoring/errors/IssueList.tsx +360 -0
  97. package/corpus/templates/analytics/app/pages/monitoring/errors/Sparkline.tsx +55 -0
  98. package/corpus/templates/analytics/app/pages/monitoring/errors/i18n.ts +106 -0
  99. package/corpus/templates/analytics/app/pages/monitoring/errors/types.ts +75 -0
  100. package/corpus/templates/analytics/app/pages/monitoring/errors/utils.ts +132 -0
  101. package/corpus/templates/analytics/app/pages/monitoring/uptime/MonitorDetail.tsx +535 -0
  102. package/corpus/templates/analytics/app/pages/monitoring/uptime/MonitorFormPage.tsx +1026 -0
  103. package/corpus/templates/analytics/app/pages/monitoring/uptime/MonitorList.tsx +311 -0
  104. package/corpus/templates/analytics/app/pages/monitoring/uptime/i18n.ts +235 -0
  105. package/corpus/templates/analytics/app/pages/monitoring/uptime/status-pages/StatusPageEditor.tsx +661 -0
  106. package/corpus/templates/analytics/app/pages/monitoring/uptime/status-pages/StatusPagesView.tsx +355 -0
  107. package/corpus/templates/analytics/app/pages/monitoring/uptime/status-pages/i18n.ts +106 -0
  108. package/corpus/templates/analytics/app/pages/monitoring/uptime/status-pages/slug.ts +24 -0
  109. package/corpus/templates/analytics/app/pages/monitoring/uptime/status-pages/types.ts +20 -0
  110. package/corpus/templates/analytics/app/pages/monitoring/uptime/status-summary.ts +87 -0
  111. package/corpus/templates/analytics/app/pages/monitoring/uptime/types.ts +161 -0
  112. package/corpus/templates/analytics/app/pages/monitoring/uptime/utils.ts +210 -0
  113. package/corpus/templates/analytics/app/pages/sessions/SessionDetailPage.tsx +76 -1
  114. package/corpus/templates/analytics/app/pages/sessions/SessionDevToolsPanel.tsx +74 -9
  115. package/corpus/templates/analytics/app/pages/sessions/SessionsPage.tsx +197 -20
  116. package/corpus/templates/analytics/app/root.tsx +33 -1
  117. package/corpus/templates/analytics/app/routes/monitoring._index.tsx +10 -0
  118. package/corpus/templates/analytics/app/routes/status.$slug.tsx +118 -0
  119. package/corpus/templates/analytics/changelog/2026-07-08-add-uptime-monitors-that-ping-your-urls-and-alert-you-when-t.md +6 -0
  120. package/corpus/templates/analytics/changelog/2026-07-08-analytics-chats-keep-large-data-dictionaries-compact-so-prov.md +6 -0
  121. package/corpus/templates/analytics/changelog/2026-07-08-create-public-status-pages-that-share-the-live-health-of-cho.md +6 -0
  122. package/corpus/templates/analytics/changelog/2026-07-08-dashboard-extension-panels-use-clearer-open-copy.md +6 -0
  123. package/corpus/templates/analytics/changelog/2026-07-08-error-capture.md +6 -0
  124. package/corpus/templates/analytics/changelog/2026-07-08-fixed-single-panel-dashboard-drags-so-they-no-longer-rewrite.md +6 -0
  125. package/corpus/templates/analytics/changelog/2026-07-08-jump-straight-from-an-error-in-a-session-recording-to-its-fu.md +6 -0
  126. package/corpus/templates/analytics/changelog/2026-07-08-monitor-detail-and-list-now-show-colorful-uptime-timelines-r.md +6 -0
  127. package/corpus/templates/analytics/changelog/2026-07-08-pinned-ask-chats-now-show-a-pin-icon-in-the-sidebar.md +6 -0
  128. package/corpus/templates/analytics/changelog/2026-07-08-publish-a-public-uptime-status-page-with-colorful-uptime-tim.md +6 -0
  129. package/corpus/templates/analytics/changelog/2026-07-08-sessions-now-hide-visitor-emails-in-demo-mode-and-show-clean.md +6 -0
  130. package/corpus/templates/analytics/changelog/2026-07-08-settings-are-cleaner-searchable-and-alerts-have-their-own-tab.md +5 -0
  131. package/corpus/templates/analytics/changelog/2026-07-08-sidebar-sections-stay-collapsed-until-opened.md +5 -0
  132. package/corpus/templates/analytics/changelog/2026-07-08-the-uptime-monitor-list-now-has-a-current-status-overview-wi.md +6 -0
  133. package/corpus/templates/analytics/docs/error-capture.md +172 -0
  134. package/corpus/templates/analytics/docs/uptime-monitoring.md +150 -0
  135. package/corpus/templates/analytics/server/db/schema-errors.ts +150 -0
  136. package/corpus/templates/analytics/server/db/schema-monitoring.ts +177 -0
  137. package/corpus/templates/analytics/server/db/schema.ts +6 -0
  138. package/corpus/templates/analytics/server/jobs/uptime-monitors.ts +123 -0
  139. package/corpus/templates/analytics/server/lib/agent-chat-plan-mode.ts +41 -0
  140. package/corpus/templates/analytics/server/lib/data-dictionary-context.ts +55 -12
  141. package/corpus/templates/analytics/server/lib/error-capture.ts +1331 -0
  142. package/corpus/templates/analytics/server/lib/first-party-analytics.ts +47 -1
  143. package/corpus/templates/analytics/server/lib/monitor-stats.ts +494 -0
  144. package/corpus/templates/analytics/server/lib/status-pages.ts +798 -0
  145. package/corpus/templates/analytics/server/lib/uptime-monitors.ts +1665 -0
  146. package/corpus/templates/analytics/server/plugins/agent-chat.ts +7 -37
  147. package/corpus/templates/analytics/server/plugins/auth.ts +11 -1
  148. package/corpus/templates/analytics/server/plugins/db.ts +408 -0
  149. package/corpus/templates/analytics/server/plugins/uptime-monitor-jobs.ts +63 -0
  150. package/corpus/templates/assets/app/routes/_index.tsx +1 -1
  151. package/corpus/templates/assets/app/routes/settings.tsx +22 -1
  152. package/corpus/templates/assets/changelog/2026-07-08-recent-drafts-keep-comfortable-side-padding.md +6 -0
  153. package/corpus/templates/assets/changelog/2026-07-08-settings-are-cleaner-and-searchable.md +5 -0
  154. package/corpus/templates/brain/app/routes/settings.tsx +43 -5
  155. package/corpus/templates/brain/changelog/2026-07-08-settings-are-cleaner-and-searchable.md +5 -0
  156. package/corpus/templates/calendar/app/pages/Settings.tsx +44 -6
  157. package/corpus/templates/calendar/changelog/2026-07-08-settings-are-cleaner-and-searchable.md +5 -0
  158. package/corpus/templates/chat/app/routes/settings.tsx +16 -1
  159. package/corpus/templates/chat/changelog/2026-07-08-settings-are-cleaner-and-searchable.md +5 -0
  160. package/corpus/templates/clips/actions/lib/audio-only-transcription.ts +79 -37
  161. package/corpus/templates/clips/app/components/player/player-controls.tsx +35 -0
  162. package/corpus/templates/clips/app/components/player/video-player.tsx +162 -18
  163. package/corpus/templates/clips/app/routes/_app.settings._index.tsx +63 -6
  164. package/corpus/templates/clips/app/routes/record.tsx +18 -1
  165. package/corpus/templates/clips/changelog/2026-07-07-shared-clips-start-playback-reliably-from-the-first-play-click.md +6 -0
  166. package/corpus/templates/clips/changelog/2026-07-08-chrome-extension-camera-and-microphone-menus-now-show-which-.md +6 -0
  167. package/corpus/templates/clips/changelog/2026-07-08-chrome-extension-copies-new-clip-links-after-saving.md +6 -0
  168. package/corpus/templates/clips/changelog/2026-07-08-chrome-extension-recordings-now-continue-after-granting-came.md +6 -0
  169. package/corpus/templates/clips/changelog/2026-07-08-mobile-shared-clips-now-have-loom-style-tap-and-skip-controls.md +6 -0
  170. package/corpus/templates/clips/changelog/2026-07-08-recordings-and-uploads-copy-links-after-saving.md +6 -0
  171. package/corpus/templates/clips/changelog/2026-07-08-settings-are-cleaner-searchable-and-collapse-s3-with-builder.md +5 -0
  172. package/corpus/templates/clips/changelog/2026-07-08-transcripts-are-more-reliable-for-longer-desktop-recordings-.md +6 -0
  173. package/corpus/templates/clips/chrome-extension/public/manifest.json +1 -0
  174. package/corpus/templates/clips/chrome-extension/src/background.ts +162 -13
  175. package/corpus/templates/clips/chrome-extension/src/content-script.ts +14 -0
  176. package/corpus/templates/clips/chrome-extension/src/offscreen.ts +36 -0
  177. package/corpus/templates/clips/chrome-extension/src/overlay.ts +99 -25
  178. package/corpus/templates/clips/chrome-extension/src/permission.ts +63 -14
  179. package/corpus/templates/clips/chrome-extension/src/popup.ts +123 -23
  180. package/corpus/templates/content/actions/_builder-cms-read-client.ts +47 -0
  181. package/corpus/templates/content/actions/_database-source-utils.ts +33 -4
  182. package/corpus/templates/content/actions/add-content-database-source-field-property.ts +214 -29
  183. package/corpus/templates/content/actions/attach-content-database-source.ts +3 -0
  184. package/corpus/templates/content/actions/change-content-database-source-role.ts +1 -0
  185. package/corpus/templates/content/app/components/editor/DocumentProperties.tsx +42 -32
  186. package/corpus/templates/content/app/components/editor/database/DatabaseView.tsx +352 -81
  187. package/corpus/templates/content/app/components/editor/database/settings.tsx +49 -24
  188. package/corpus/templates/content/app/routes/_app.settings.tsx +19 -1
  189. package/corpus/templates/content/changelog/2026-07-07-builder-source-tag-fields-now-import-as-multi-select.md +6 -0
  190. package/corpus/templates/content/changelog/2026-07-08-settings-are-cleaner-and-searchable.md +5 -0
  191. package/corpus/templates/content/shared/api.ts +3 -0
  192. package/corpus/templates/content/shared/properties.ts +42 -0
  193. package/corpus/templates/design/AGENTS.md +9 -0
  194. package/corpus/templates/design/actions/generate-design.ts +3 -0
  195. package/corpus/templates/design/actions/get-design-system.ts +147 -1
  196. package/corpus/templates/design/actions/request-localhost-write-consent.ts +141 -0
  197. package/corpus/templates/design/app/components/design/DesignCanvas.tsx +13 -19
  198. package/corpus/templates/design/app/routes/settings.tsx +16 -1
  199. package/corpus/templates/design/changelog/2026-07-08-design-generation-now-follows-hydrated-builder-design-system.md +6 -0
  200. package/corpus/templates/design/changelog/2026-07-08-settings-are-cleaner-and-searchable.md +5 -0
  201. package/corpus/templates/design/server/lib/verify-write-grant.ts +4 -2
  202. package/corpus/templates/dispatch/app/routes/settings.tsx +23 -2
  203. package/corpus/templates/dispatch/changelog/2026-07-08-settings-are-cleaner-and-searchable.md +5 -0
  204. package/corpus/templates/forms/app/routes/_app.settings.tsx +16 -1
  205. package/corpus/templates/forms/changelog/2026-07-08-settings-are-cleaner-and-searchable.md +5 -0
  206. package/corpus/templates/macros/app/routes/settings.tsx +16 -1
  207. package/corpus/templates/macros/changelog/2026-07-08-settings-are-cleaner-and-searchable.md +5 -0
  208. package/corpus/templates/mail/app/components/settings/GmailFiltersSection.tsx +1 -1
  209. package/corpus/templates/mail/app/components/settings/SnippetsSection.tsx +1 -1
  210. package/corpus/templates/mail/app/pages/SettingsPage.tsx +123 -105
  211. package/corpus/templates/mail/changelog/2026-07-08-settings-redesigned-with-a-consistent-searchable-layout.md +5 -0
  212. package/corpus/templates/plan/app/routes/settings.tsx +23 -2
  213. package/corpus/templates/plan/changelog/2026-07-08-settings-are-cleaner-and-searchable.md +5 -0
  214. package/corpus/templates/slides/actions/add-slide.ts +1 -0
  215. package/corpus/templates/slides/actions/get-design-system.ts +147 -1
  216. package/corpus/templates/slides/app/pages/Index.tsx +46 -1
  217. package/corpus/templates/slides/app/routes/settings.tsx +16 -1
  218. package/corpus/templates/slides/changelog/2026-07-08-deck-generation-now-follows-hydrated-builder-design-system-g.md +6 -0
  219. package/corpus/templates/slides/changelog/2026-07-08-settings-are-cleaner-and-searchable.md +5 -0
  220. package/dist/agent/run-ownership.d.ts +6 -0
  221. package/dist/agent/run-ownership.d.ts.map +1 -1
  222. package/dist/agent/run-ownership.js +11 -1
  223. package/dist/agent/run-ownership.js.map +1 -1
  224. package/dist/changelog/parse.d.ts +7 -0
  225. package/dist/changelog/parse.d.ts.map +1 -1
  226. package/dist/changelog/parse.js +64 -0
  227. package/dist/changelog/parse.js.map +1 -1
  228. package/dist/chat-threads/schema.d.ts +445 -0
  229. package/dist/chat-threads/schema.d.ts.map +1 -0
  230. package/dist/chat-threads/schema.js +39 -0
  231. package/dist/chat-threads/schema.js.map +1 -0
  232. package/dist/chat-threads/store.d.ts +12 -0
  233. package/dist/chat-threads/store.d.ts.map +1 -1
  234. package/dist/chat-threads/store.js +99 -10
  235. package/dist/chat-threads/store.js.map +1 -1
  236. package/dist/cli/design-connect.d.ts.map +1 -1
  237. package/dist/cli/design-connect.js +40 -10
  238. package/dist/cli/design-connect.js.map +1 -1
  239. package/dist/cli/workspace-dev.d.ts.map +1 -1
  240. package/dist/cli/workspace-dev.js +20 -5
  241. package/dist/cli/workspace-dev.js.map +1 -1
  242. package/dist/client/AgentPanel.d.ts.map +1 -1
  243. package/dist/client/AgentPanel.js +35 -7
  244. package/dist/client/AgentPanel.js.map +1 -1
  245. package/dist/client/AssistantChat.d.ts.map +1 -1
  246. package/dist/client/AssistantChat.js +105 -183
  247. package/dist/client/AssistantChat.js.map +1 -1
  248. package/dist/client/analytics-session.d.ts +3 -0
  249. package/dist/client/analytics-session.d.ts.map +1 -0
  250. package/dist/client/analytics-session.js +66 -0
  251. package/dist/client/analytics-session.js.map +1 -0
  252. package/dist/client/analytics.d.ts +32 -0
  253. package/dist/client/analytics.d.ts.map +1 -1
  254. package/dist/client/analytics.js +116 -46
  255. package/dist/client/analytics.js.map +1 -1
  256. package/dist/client/chat/message-components.d.ts +2 -1
  257. package/dist/client/chat/message-components.d.ts.map +1 -1
  258. package/dist/client/chat/message-components.js +16 -6
  259. package/dist/client/chat/message-components.js.map +1 -1
  260. package/dist/client/components/ui/message-scroller.d.ts +16 -0
  261. package/dist/client/components/ui/message-scroller.d.ts.map +1 -0
  262. package/dist/client/components/ui/message-scroller.js +25 -0
  263. package/dist/client/components/ui/message-scroller.js.map +1 -0
  264. package/dist/client/conversation/AgentConversation.d.ts +1 -1
  265. package/dist/client/conversation/AgentConversation.d.ts.map +1 -1
  266. package/dist/client/conversation/AgentConversation.js +3 -8
  267. package/dist/client/conversation/AgentConversation.js.map +1 -1
  268. package/dist/client/error-capture.d.ts +99 -0
  269. package/dist/client/error-capture.d.ts.map +1 -0
  270. package/dist/client/error-capture.js +437 -0
  271. package/dist/client/error-capture.js.map +1 -0
  272. package/dist/client/index.d.ts +2 -2
  273. package/dist/client/index.d.ts.map +1 -1
  274. package/dist/client/index.js +3 -1
  275. package/dist/client/index.js.map +1 -1
  276. package/dist/client/session-replay.d.ts +22 -0
  277. package/dist/client/session-replay.d.ts.map +1 -1
  278. package/dist/client/session-replay.js +45 -4
  279. package/dist/client/session-replay.js.map +1 -1
  280. package/dist/client/settings/SettingsPanel.d.ts.map +1 -1
  281. package/dist/client/settings/SettingsPanel.js +100 -5
  282. package/dist/client/settings/SettingsPanel.js.map +1 -1
  283. package/dist/client/settings/SettingsTabsPage.d.ts +49 -1
  284. package/dist/client/settings/SettingsTabsPage.d.ts.map +1 -1
  285. package/dist/client/settings/SettingsTabsPage.js +131 -19
  286. package/dist/client/settings/SettingsTabsPage.js.map +1 -1
  287. package/dist/client/settings/index.d.ts +1 -1
  288. package/dist/client/settings/index.d.ts.map +1 -1
  289. package/dist/client/settings/index.js.map +1 -1
  290. package/dist/client/sharing/ShareButton.d.ts.map +1 -1
  291. package/dist/client/sharing/ShareButton.js +13 -8
  292. package/dist/client/sharing/ShareButton.js.map +1 -1
  293. package/dist/client/sharing/ShareDialog.d.ts.map +1 -1
  294. package/dist/client/sharing/ShareDialog.js +12 -7
  295. package/dist/client/sharing/ShareDialog.js.map +1 -1
  296. package/dist/collab/routes.d.ts +1 -1
  297. package/dist/file-upload/actions/upload-image.d.ts +1 -1
  298. package/dist/mcp/builtin-tools.d.ts.map +1 -1
  299. package/dist/mcp/builtin-tools.js +21 -2
  300. package/dist/mcp/builtin-tools.js.map +1 -1
  301. package/dist/observability/routes.d.ts +1 -1
  302. package/dist/org/schema.d.ts +15 -15
  303. package/dist/provider-api/corpus-jobs.d.ts +2 -2
  304. package/dist/server/agent-chat-plugin.d.ts.map +1 -1
  305. package/dist/server/agent-chat-plugin.js +109 -73
  306. package/dist/server/agent-chat-plugin.js.map +1 -1
  307. package/dist/server/onboarding-html.d.ts.map +1 -1
  308. package/dist/server/onboarding-html.js +28 -16
  309. package/dist/server/onboarding-html.js.map +1 -1
  310. package/dist/sharing/actions/list-resource-shares.js +30 -1
  311. package/dist/sharing/actions/list-resource-shares.js.map +1 -1
  312. package/dist/sharing/actions/share-resource.js +6 -0
  313. package/dist/sharing/actions/share-resource.js.map +1 -1
  314. package/dist/templates/workspace-core/.agents/skills/agent-native-toolkit/SKILL.md +4 -2
  315. package/dist/templates/workspace-core/.agents/skills/changelog/SKILL.md +9 -6
  316. package/dist/vite/client.d.ts.map +1 -1
  317. package/dist/vite/client.js +192 -30
  318. package/dist/vite/client.js.map +1 -1
  319. package/docs/content/toolkit-settings.mdx +56 -3
  320. package/package.json +2 -1
  321. package/src/templates/workspace-core/.agents/skills/agent-native-toolkit/SKILL.md +4 -2
  322. package/src/templates/workspace-core/.agents/skills/changelog/SKILL.md +9 -6
@@ -115,6 +115,7 @@ export default defineAction({
115
115
  description:
116
116
  "Save an ad-hoc analysis as a reusable artifact. Do not call this for ordinary in-chat analysis or deep-dive answers unless the user explicitly asks to save/create a reusable analysis, or this turn is re-running an existing saved analysis. Stores the analysis question, instructions for re-running, data sources used, and compact results. " +
117
117
  "This creates a reusable analysis that anyone can re-run later to get updated results. " +
118
+ "Saved analyses appear in the Analyses sidebar, so do not use this as scratch storage, as a transient summary, or as a duplicate companion artifact when creating a dashboard or extension unless the user explicitly asked for a saved analysis too. " +
118
119
  "Call this only after you've gathered real evidence and include non-empty, compact resultData with structured evidence from those data-source action results. For qualitative analyses, resultData may include call/message IDs, short transcript excerpts, coded themes, mention counts, and sentiment labels derived from actual source records. Never include full Gong transcripts, full tool outputs, or bulk raw provider payloads.",
119
120
  schema: z.object({
120
121
  id: z
@@ -0,0 +1,145 @@
1
+ import { defineAction } from "@agent-native/core";
2
+ import {
3
+ getRequestOrgId,
4
+ getRequestUserEmail,
5
+ } from "@agent-native/core/server";
6
+ import { z } from "zod";
7
+
8
+ import { hostFromUrl, saveMonitor } from "../server/lib/uptime-monitors";
9
+
10
+ /**
11
+ * Friendly default name from a URL: the host without a leading `www.`
12
+ * (e.g. `example.com` from `https://www.example.com/health`). Keeps
13
+ * agent-created monitors sensible when no name is provided.
14
+ */
15
+ function deriveNameFromUrl(url: string): string {
16
+ return hostFromUrl((url ?? "").trim()).replace(/^www\./i, "");
17
+ }
18
+
19
+ const assertionSchema = z.object({
20
+ type: z
21
+ .enum([
22
+ "body_contains",
23
+ "body_absent",
24
+ "header_contains",
25
+ "header_equals",
26
+ "max_latency_ms",
27
+ ])
28
+ .describe(
29
+ "Assertion type: body_contains/body_absent check the response text; header_contains/header_equals check a response header; max_latency_ms flags a slow response (degraded).",
30
+ ),
31
+ value: z
32
+ .union([z.string(), z.number()])
33
+ .describe(
34
+ "Expected value: text for body/header checks, milliseconds for max_latency_ms.",
35
+ ),
36
+ header: z
37
+ .string()
38
+ .optional()
39
+ .describe("Header name (required for header_contains / header_equals)."),
40
+ });
41
+
42
+ const statusMatcherSchema = z
43
+ .union([
44
+ z.object({
45
+ mode: z.literal("class"),
46
+ classes: z
47
+ .array(z.string())
48
+ .describe('Status classes to accept, e.g. ["2xx","3xx"].'),
49
+ }),
50
+ z.object({
51
+ mode: z.literal("list"),
52
+ codes: z
53
+ .array(z.number().int())
54
+ .describe("Exact status codes to accept, e.g. [200,204]."),
55
+ }),
56
+ z.object({
57
+ mode: z.literal("range"),
58
+ min: z.number().int(),
59
+ max: z.number().int(),
60
+ }),
61
+ ])
62
+ .describe(
63
+ "Which HTTP status counts as healthy. Defaults to the 2xx class when omitted.",
64
+ );
65
+
66
+ export default defineAction({
67
+ description:
68
+ "Create or update an uptime monitor that pings a URL on a schedule and alerts when it is down, returns the wrong status, is too slow, or its body is missing/contains specific text.",
69
+ schema: z.object({
70
+ id: z.string().optional().describe("Existing monitor id to update."),
71
+ name: z
72
+ .string()
73
+ .optional()
74
+ .describe(
75
+ "Human-readable monitor name. Optional — defaults to the URL host (without www) when omitted or blank.",
76
+ ),
77
+ url: z.string().describe("Absolute http(s) URL to probe."),
78
+ method: z
79
+ .enum(["GET", "HEAD", "POST", "PUT", "PATCH", "DELETE", "OPTIONS"])
80
+ .optional()
81
+ .describe("HTTP method for the probe (default GET)."),
82
+ requestHeaders: z
83
+ .record(z.string(), z.string())
84
+ .optional()
85
+ .describe("Extra request headers as a key/value object."),
86
+ requestBody: z
87
+ .string()
88
+ .nullable()
89
+ .optional()
90
+ .describe("Optional request body for POST/PUT/PATCH."),
91
+ intervalSeconds: z
92
+ .number()
93
+ .int()
94
+ .min(30)
95
+ .max(86400)
96
+ .optional()
97
+ .describe("How often to check, in seconds (default 300, min 30)."),
98
+ timeoutMs: z
99
+ .number()
100
+ .int()
101
+ .min(1000)
102
+ .max(120000)
103
+ .optional()
104
+ .describe("Request timeout in milliseconds (default 15000)."),
105
+ expectedStatus: statusMatcherSchema.optional(),
106
+ assertions: z
107
+ .array(assertionSchema)
108
+ .optional()
109
+ .describe("Response-body/header/latency assertions to evaluate."),
110
+ followRedirects: z
111
+ .boolean()
112
+ .optional()
113
+ .describe("Follow 3xx redirects to allowed hosts (default true)."),
114
+ severity: z
115
+ .enum(["warning", "critical"])
116
+ .optional()
117
+ .describe("Alert severity when the monitor fails (default critical)."),
118
+ channels: z
119
+ .array(z.string())
120
+ .optional()
121
+ .describe("Notification channels, e.g. inbox, email, slack, webhook."),
122
+ emailRecipients: z
123
+ .array(z.string().email())
124
+ .optional()
125
+ .describe("Email recipients used by the email channel."),
126
+ cooldownMinutes: z
127
+ .number()
128
+ .int()
129
+ .min(0)
130
+ .max(1440)
131
+ .optional()
132
+ .describe(
133
+ "Minutes to suppress a repeat 'down' alert after a recent recovery (anti-flap; default 15).",
134
+ ),
135
+ enabled: z.boolean().optional().describe("Whether the monitor is active."),
136
+ }),
137
+ http: { method: "POST" },
138
+ run: async (args) => {
139
+ const email = getRequestUserEmail();
140
+ if (!email) throw new Error("no authenticated user");
141
+ const orgId = getRequestOrgId() || null;
142
+ const name = args.name?.trim() || deriveNameFromUrl(args.url);
143
+ return saveMonitor({ ...args, name }, { email, orgId });
144
+ },
145
+ });
@@ -0,0 +1,47 @@
1
+ import { defineAction } from "@agent-native/core";
2
+ import {
3
+ getRequestOrgId,
4
+ getRequestUserEmail,
5
+ } from "@agent-native/core/server";
6
+ import { z } from "zod";
7
+
8
+ import { saveStatusPage } from "../server/lib/status-pages";
9
+
10
+ export default defineAction({
11
+ description:
12
+ "Create or update a public status page. Pass id to update, omit to create. Include monitors to set the full included set (each with an optional display-name override and per-monitor showUrl opt-in).",
13
+ schema: z.object({
14
+ id: z.string().optional().describe("Status page id (omit to create)."),
15
+ slug: z
16
+ .string()
17
+ .optional()
18
+ .describe("Public URL slug; auto-derived from the title when omitted."),
19
+ title: z.string().optional().describe("Status page title."),
20
+ description: z.string().nullable().optional(),
21
+ published: z
22
+ .boolean()
23
+ .optional()
24
+ .describe("Whether the page is publicly readable."),
25
+ showUptimeBars: z.boolean().optional(),
26
+ showOverallUptime: z.boolean().optional(),
27
+ showResponseTime: z.boolean().optional(),
28
+ density: z.enum(["comfortable", "compact"]).optional(),
29
+ alignment: z.enum(["left", "center"]).optional(),
30
+ monitors: z
31
+ .array(
32
+ z.object({
33
+ monitorId: z.string(),
34
+ displayName: z.string().nullable().optional(),
35
+ showUrl: z.boolean().optional(),
36
+ }),
37
+ )
38
+ .optional()
39
+ .describe("Full set of included monitors, in display order."),
40
+ }),
41
+ run: async (input) => {
42
+ const email = getRequestUserEmail();
43
+ if (!email) throw new Error("no authenticated user");
44
+ const orgId = getRequestOrgId() || null;
45
+ return saveStatusPage(input, { email, orgId });
46
+ },
47
+ });
@@ -12,6 +12,7 @@ import { z } from "zod";
12
12
  import { listAnalyticsAlertRules } from "../server/lib/analytics-alerts";
13
13
  import { listDashboardCatalog } from "../server/lib/dashboard-catalog";
14
14
  import { getAnalysis, getDashboard } from "../server/lib/dashboards-store";
15
+ import { getErrorIssue, listErrorIssues } from "../server/lib/error-capture.js";
15
16
  import { listAnalyticsPublicKeys } from "../server/lib/first-party-analytics.js";
16
17
  import {
17
18
  getSessionReplaySummary,
@@ -19,6 +20,11 @@ import {
19
20
  replayRangeToIso,
20
21
  type ReplayRange,
21
22
  } from "../server/lib/session-replay.js";
23
+ import {
24
+ getStatusPagePreview,
25
+ listStatusPages,
26
+ } from "../server/lib/status-pages.js";
27
+ import { getMonitor, listMonitors } from "../server/lib/uptime-monitors.js";
22
28
 
23
29
  const SESSION_FILTER_KEYS = new Set(["range", "app", "q"]);
24
30
  const REPLAY_RANGES = new Set(["24h", "7d", "30d", "90d", "all"]);
@@ -150,6 +156,212 @@ export default defineAction({
150
156
  screen.sessionReplayError = error?.message || String(error);
151
157
  }
152
158
  }
159
+ } else if (nav?.view === "monitoring") {
160
+ screen.page = "monitoring";
161
+ const monitoringView =
162
+ nav?.monitoringView === "errors" ? "errors" : "uptime";
163
+ screen.monitoringView = monitoringView;
164
+ screen.monitoringSurfaces = [
165
+ {
166
+ id: "uptime",
167
+ label: "Uptime",
168
+ path: "/monitoring",
169
+ includes: [
170
+ "synthetic HTTP/status uptime checks",
171
+ "latency + body/header assertions",
172
+ "incidents",
173
+ "down/degraded alerting",
174
+ ],
175
+ },
176
+ {
177
+ id: "status-pages",
178
+ label: "Status pages",
179
+ path: "/monitoring?statuspage=list",
180
+ includes: [
181
+ "public status page config (under the uptime subview)",
182
+ "monitor selection + ordering",
183
+ "publish / slug management",
184
+ "public URL /status/<slug>",
185
+ ],
186
+ },
187
+ {
188
+ id: "errors",
189
+ label: "Errors",
190
+ path: "/monitoring?view=errors",
191
+ includes: [
192
+ "captured JavaScript exceptions",
193
+ "grouped error issues",
194
+ "linked session replays",
195
+ ],
196
+ },
197
+ ];
198
+ const email = getRequestUserEmail();
199
+ if (email) {
200
+ const orgId = getRequestOrgId() || null;
201
+ try {
202
+ if (monitoringView === "errors") {
203
+ if (nav?.errorIssueId) {
204
+ screen.errorIssueId = nav.errorIssueId;
205
+ const detail = await getErrorIssue(
206
+ { userEmail: email, orgId },
207
+ nav.errorIssueId,
208
+ );
209
+ const issue = detail.issue;
210
+ const sample = detail.events[0];
211
+ screen.errorIssue = {
212
+ id: issue.id,
213
+ title: issue.title,
214
+ type: issue.type,
215
+ culprit: issue.culprit,
216
+ level: issue.level,
217
+ status: issue.status,
218
+ firstSeenAt: issue.firstSeenAt,
219
+ lastSeenAt: issue.lastSeenAt,
220
+ eventCount: issue.eventCount,
221
+ usersAffected: issue.usersAffected,
222
+ assignee: issue.assignee,
223
+ app: issue.app,
224
+ template: issue.template,
225
+ lastSessionRecordingPath: issue.lastSessionRecordingPath,
226
+ sampleEvent: sample
227
+ ? {
228
+ message: sample.message,
229
+ culprit: sample.culprit,
230
+ handled: sample.handled,
231
+ url: sample.url,
232
+ occurredAt: sample.occurredAt,
233
+ sessionRecordingPath: sample.sessionRecordingPath,
234
+ }
235
+ : null,
236
+ linkedSessions: detail.sessions.slice(0, 5),
237
+ };
238
+ } else {
239
+ const issues = await listErrorIssues(
240
+ { userEmail: email, orgId },
241
+ { status: "unresolved", limit: 25 },
242
+ );
243
+ screen.errorIssues = issues.map((issue) => ({
244
+ id: issue.id,
245
+ title: issue.title,
246
+ culprit: issue.culprit,
247
+ level: issue.level,
248
+ status: issue.status,
249
+ eventCount: issue.eventCount,
250
+ usersAffected: issue.usersAffected,
251
+ lastSeenAt: issue.lastSeenAt,
252
+ }));
253
+ }
254
+ } else if (nav?.statusPageId) {
255
+ // Status pages are a config sub-view under the uptime panel.
256
+ screen.uptimeSubview = "status-pages";
257
+ if (nav.statusPageId === "new") {
258
+ screen.statusPageMode = "create";
259
+ } else if (nav.statusPageId === "list") {
260
+ const pages = await listStatusPages({ email, orgId });
261
+ screen.statusPages = pages.map((page) => ({
262
+ id: page.id,
263
+ slug: page.slug,
264
+ title: page.title,
265
+ published: page.published,
266
+ monitorCount: page.monitors.length,
267
+ publicUrl: `/status/${page.slug}`,
268
+ updatedAt: page.updatedAt,
269
+ }));
270
+ } else {
271
+ screen.statusPageId = nav.statusPageId;
272
+ const preview = await getStatusPagePreview(nav.statusPageId, {
273
+ email,
274
+ orgId,
275
+ });
276
+ if (preview) {
277
+ const { page, view } = preview;
278
+ screen.statusPage = {
279
+ id: page.id,
280
+ slug: page.slug,
281
+ title: page.title,
282
+ description: page.description,
283
+ published: page.published,
284
+ publicUrl: `/status/${page.slug}`,
285
+ layout: {
286
+ density: page.density,
287
+ alignment: page.alignment,
288
+ showUptimeBars: page.showUptimeBars,
289
+ showOverallUptime: page.showOverallUptime,
290
+ showResponseTime: page.showResponseTime,
291
+ },
292
+ monitorCount: page.monitors.length,
293
+ overall: view.overall,
294
+ counts: view.counts,
295
+ includedMonitors: view.monitors.map((monitor) => ({
296
+ id: monitor.id,
297
+ name: monitor.name,
298
+ host: monitor.host,
299
+ status: monitor.status,
300
+ uptime24h: monitor.windows.uptime24h,
301
+ uptime7d: monitor.windows.uptime7d,
302
+ })),
303
+ updatedAt: page.updatedAt,
304
+ };
305
+ }
306
+ }
307
+ } else if (nav?.monitorId === "new") {
308
+ screen.monitorMode = "create";
309
+ } else if (nav?.monitorId) {
310
+ screen.monitorId = nav.monitorId;
311
+ const detail = await getMonitor(nav.monitorId, { email, orgId });
312
+ if (detail) {
313
+ const monitor = detail.monitor;
314
+ const openIncidents = detail.incidents.filter(
315
+ (incident) => !incident.resolvedAt,
316
+ );
317
+ screen.monitor = {
318
+ id: monitor.id,
319
+ name: monitor.name,
320
+ url: monitor.url,
321
+ method: monitor.method,
322
+ enabled: monitor.enabled,
323
+ severity: monitor.severity,
324
+ intervalSeconds: monitor.intervalSeconds,
325
+ lastStatus: monitor.lastStatus,
326
+ lastCheckedAt: monitor.lastCheckedAt,
327
+ lastSuccessAt: monitor.lastSuccessAt,
328
+ lastError: monitor.lastError,
329
+ lastLatencyMs: monitor.lastLatencyMs,
330
+ lastStatusCode: monitor.lastStatusCode,
331
+ consecutiveFailures: monitor.consecutiveFailures,
332
+ uptime24h: monitor.uptime24h,
333
+ uptime7d: monitor.uptime7d,
334
+ checks24h: monitor.checks24h,
335
+ openIncidentCount: openIncidents.length,
336
+ recentIncidents: detail.incidents
337
+ .slice(0, 5)
338
+ .map((incident) => ({
339
+ id: incident.id,
340
+ startedAt: incident.startedAt,
341
+ resolvedAt: incident.resolvedAt,
342
+ status: incident.status,
343
+ severity: incident.severity,
344
+ cause: incident.cause,
345
+ })),
346
+ };
347
+ }
348
+ } else {
349
+ const monitors = await listMonitors({ email, orgId });
350
+ screen.monitors = monitors.map((monitor) => ({
351
+ id: monitor.id,
352
+ name: monitor.name,
353
+ url: monitor.url,
354
+ enabled: monitor.enabled,
355
+ lastStatus: monitor.lastStatus,
356
+ lastCheckedAt: monitor.lastCheckedAt,
357
+ uptime24h: monitor.uptime24h,
358
+ uptime7d: monitor.uptime7d,
359
+ }));
360
+ }
361
+ } catch (error: any) {
362
+ screen.monitoringError = error?.message || String(error);
363
+ }
364
+ }
153
365
  } else if (nav?.view === "overview" || nav?.view === "home" || !nav?.view) {
154
366
  screen.page = "ask";
155
367
  } else if (nav?.view === "ask") {
@@ -20,6 +20,7 @@ const pageTitleKeys: Record<string, string> = {
20
20
  "/catalog": "navigation.templateCatalog",
21
21
  "/analyses": "navigation.analyses",
22
22
  "/sessions": "navigation.sessions",
23
+ "/monitoring": "navigation.monitoring",
23
24
  "/agents": "navigation.agents",
24
25
  "/dashboards/explorer": "navigation.explorer",
25
26
  "/settings": "navigation.settings",
@@ -147,6 +147,12 @@ export function Layout({ children }: LayoutProps) {
147
147
  location.pathname.startsWith("/extensions/");
148
148
  const isSessionsRoute = isAnalyticsSessionsRoute(location.pathname);
149
149
  const isSessionDetailRoute = /^\/sessions\/[^/]+/.test(location.pathname);
150
+ // Monitoring renders its own header row (section tabs / "Back to monitors"
151
+ // + the relocated agent toggle), so skip the framework Header to avoid a
152
+ // redundant second title bar.
153
+ const isMonitoringRoute =
154
+ location.pathname === "/monitoring" ||
155
+ location.pathname.startsWith("/monitoring/");
150
156
  const isAskRoute = location.pathname === "/ask";
151
157
  const chatHomeHandoffActive = useAgentChatHomeHandoff({
152
158
  storageKey: ANALYTICS_CHAT_STORAGE_KEY,
@@ -222,7 +228,10 @@ export function Layout({ children }: LayoutProps) {
222
228
  const contentFrame = (
223
229
  <div className="flex h-full flex-1 flex-col overflow-hidden">
224
230
  <MobileNav showNewChat={isAskRoute} />
225
- {!isExtensionsRoute && !isAskRoute && !isSessionDetailRoute && <Header />}
231
+ {!isExtensionsRoute &&
232
+ !isAskRoute &&
233
+ !isSessionDetailRoute &&
234
+ !isMonitoringRoute && <Header />}
226
235
  <InvitationBanner />
227
236
  <main
228
237
  className={