@agent-native/core 0.77.24 → 0.78.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 (212) hide show
  1. package/corpus/README.md +2 -2
  2. package/corpus/core/CHANGELOG.md +20 -0
  3. package/corpus/core/docs/content/template-analytics.md +5 -0
  4. package/corpus/core/docs/content/tracking.md +45 -0
  5. package/corpus/core/package.json +3 -1
  6. package/corpus/core/src/agent/types.ts +22 -0
  7. package/corpus/core/src/client/AgentPanel.tsx +34 -18
  8. package/corpus/core/src/client/AssistantChat.tsx +40 -0
  9. package/corpus/core/src/client/agent-chat.ts +173 -0
  10. package/corpus/core/src/client/analytics.ts +141 -5
  11. package/corpus/core/src/client/composer/TiptapComposer.tsx +316 -60
  12. package/corpus/core/src/client/composer/extensions/MentionReference.tsx +3 -0
  13. package/corpus/core/src/client/composer/types.ts +22 -0
  14. package/corpus/core/src/client/index.ts +14 -0
  15. package/corpus/core/src/client/session-replay.ts +800 -0
  16. package/corpus/core/src/db/schema.ts +12 -0
  17. package/corpus/core/src/deploy/build.ts +75 -0
  18. package/corpus/core/src/private-blob/index.ts +18 -0
  19. package/corpus/core/src/private-blob/registry.ts +241 -0
  20. package/corpus/core/src/private-blob/types.ts +55 -0
  21. package/corpus/core/src/scripts/utils.ts +34 -6
  22. package/corpus/core/src/server/agent-chat-plugin.ts +10 -0
  23. package/corpus/core/src/server/email.ts +5 -0
  24. package/corpus/core/src/server/index.ts +1 -0
  25. package/corpus/core/src/styles/agent-native.css +24 -0
  26. package/corpus/templates/analytics/.agents/skills/dashboard-management/SKILL.md +1 -1
  27. package/corpus/templates/analytics/.agents/skills/session-replay/SKILL.md +43 -0
  28. package/corpus/templates/analytics/AGENTS.md +32 -1
  29. package/corpus/templates/analytics/DEVELOPING.md +9 -1
  30. package/corpus/templates/analytics/actions/delete-dashboard-report-subscription.ts +24 -0
  31. package/corpus/templates/analytics/actions/get-session-replay-events.ts +50 -0
  32. package/corpus/templates/analytics/actions/get-session-replay-summary.ts +27 -0
  33. package/corpus/templates/analytics/actions/list-dashboard-report-subscriptions.ts +24 -0
  34. package/corpus/templates/analytics/actions/list-session-recordings.ts +59 -0
  35. package/corpus/templates/analytics/actions/navigate.ts +15 -5
  36. package/corpus/templates/analytics/actions/query-agent-native-analytics.ts +2 -2
  37. package/corpus/templates/analytics/actions/save-dashboard-report-subscription.ts +36 -0
  38. package/corpus/templates/analytics/actions/send-dashboard-report-now.ts +60 -0
  39. package/corpus/templates/analytics/actions/view-screen.ts +50 -2
  40. package/corpus/templates/analytics/app/components/dashboard/SqlChart.tsx +51 -2
  41. package/corpus/templates/analytics/app/components/layout/Header.tsx +4 -1
  42. package/corpus/templates/analytics/app/components/layout/Layout.tsx +14 -2
  43. package/corpus/templates/analytics/app/components/layout/Sidebar.tsx +6 -6
  44. package/corpus/templates/analytics/app/hooks/use-navigation-state.ts +35 -6
  45. package/corpus/templates/analytics/app/i18n-data.ts +1119 -0
  46. package/corpus/templates/analytics/app/pages/adhoc/sql-dashboard/EmailReportDialog.tsx +437 -0
  47. package/corpus/templates/analytics/app/pages/adhoc/sql-dashboard/SqlChartCard.tsx +11 -12
  48. package/corpus/templates/analytics/app/pages/adhoc/sql-dashboard/dashboard-layout.ts +43 -0
  49. package/corpus/templates/analytics/app/pages/adhoc/sql-dashboard/index.tsx +136 -43
  50. package/corpus/templates/analytics/app/pages/adhoc/sql-dashboard/report-filters.ts +26 -0
  51. package/corpus/templates/analytics/app/pages/sessions/SessionDetailPage.tsx +450 -0
  52. package/corpus/templates/analytics/app/pages/sessions/SessionsPage.tsx +419 -0
  53. package/corpus/templates/analytics/app/routes/overview.tsx +13 -6
  54. package/corpus/templates/analytics/app/routes/sessions.$recordingId.tsx +10 -0
  55. package/corpus/templates/analytics/app/routes/sessions._index.tsx +10 -0
  56. package/corpus/templates/analytics/changelog/2026-06-25-analytics-now-opens-directly-to-ask-instead-of-the-old-overv.md +6 -0
  57. package/corpus/templates/analytics/changelog/2026-06-25-dashboard-charts-now-show-reliable-blue-placement-lines-whil.md +6 -0
  58. package/corpus/templates/analytics/changelog/2026-06-26-dashboards-can-now-send-scheduled-daily-email-reports-from-t.md +6 -0
  59. package/corpus/templates/analytics/changelog/2026-06-26-session-replay-browser-sessions-can-now-be-reviewed-from.md +6 -0
  60. package/corpus/templates/analytics/package.json +5 -2
  61. package/corpus/templates/analytics/scripts/emit-netlify-dashboard-report-cron.ts +131 -0
  62. package/corpus/templates/analytics/scripts/seed-session-replay.ts +198 -0
  63. package/corpus/templates/analytics/seeds/dashboards/agent-native-templates-first-party.json +140 -27
  64. package/corpus/templates/analytics/server/db/index.ts +12 -0
  65. package/corpus/templates/analytics/server/db/schema.ts +131 -0
  66. package/corpus/templates/analytics/server/handlers/session-replay.ts +281 -0
  67. package/corpus/templates/analytics/server/handlers/sql-query.ts +8 -348
  68. package/corpus/templates/analytics/server/jobs/dashboard-report.ts +66 -0
  69. package/corpus/templates/analytics/server/jobs/session-replay-retention.ts +29 -0
  70. package/corpus/templates/analytics/server/lib/dashboard-panel-query.ts +365 -0
  71. package/corpus/templates/analytics/server/lib/dashboard-report-subscriptions.ts +473 -0
  72. package/corpus/templates/analytics/server/lib/dashboard-report.ts +405 -0
  73. package/corpus/templates/analytics/server/lib/first-party-analytics.ts +63 -18
  74. package/corpus/templates/analytics/server/lib/first-party-metric-catalog.ts +98 -26
  75. package/corpus/templates/analytics/server/lib/session-replay.ts +1645 -0
  76. package/corpus/templates/analytics/server/plugins/auth.ts +1 -1
  77. package/corpus/templates/analytics/server/plugins/dashboard-report-jobs.ts +47 -0
  78. package/corpus/templates/analytics/server/plugins/db.ts +200 -0
  79. package/corpus/templates/analytics/server/plugins/session-replay-retention-jobs.ts +41 -0
  80. package/corpus/templates/analytics/server/routes/api/analytics/replay.options.ts +1 -0
  81. package/corpus/templates/analytics/server/routes/api/analytics/replay.post.ts +1 -0
  82. package/corpus/templates/analytics/server/routes/api/dashboard-reports/run.post.ts +61 -0
  83. package/corpus/templates/analytics/server/routes/api/session-replay/recordings/[recordingId]/chunks/[seq].get.ts +1 -0
  84. package/corpus/templates/analytics/server/routes/api/session-replay/recordings/[recordingId]/events.get.ts +1 -0
  85. package/corpus/templates/analytics/server/routes/api/session-replay/recordings/[recordingId]/manifest.get.ts +1 -0
  86. package/corpus/templates/analytics/server/routes/api/session-replay/recordings/[recordingId].get.ts +1 -0
  87. package/corpus/templates/analytics/server/routes/api/session-replay/recordings.get.ts +1 -0
  88. package/corpus/templates/assets/.agents/skills/asset-generation/SKILL.md +10 -2
  89. package/corpus/templates/assets/.agents/skills/image-generation/SKILL.md +14 -7
  90. package/corpus/templates/assets/.agents/skills/library-management/SKILL.md +12 -0
  91. package/corpus/templates/assets/AGENTS.md +18 -3
  92. package/corpus/templates/assets/actions/_image-model-default.ts +24 -0
  93. package/corpus/templates/assets/actions/dismiss-variant-slots.ts +15 -22
  94. package/corpus/templates/assets/actions/generate-asset.ts +30 -23
  95. package/corpus/templates/assets/actions/generate-image-batch.ts +76 -29
  96. package/corpus/templates/assets/actions/generate-image.ts +46 -30
  97. package/corpus/templates/assets/actions/generate-video.ts +18 -3
  98. package/corpus/templates/assets/actions/list-assets.ts +39 -8
  99. package/corpus/templates/assets/actions/list-libraries.ts +24 -2
  100. package/corpus/templates/assets/actions/navigate.ts +1 -1
  101. package/corpus/templates/assets/actions/open-asset-picker.ts +38 -1
  102. package/corpus/templates/assets/actions/refresh-generation-run.ts +10 -0
  103. package/corpus/templates/assets/actions/save-generated-image.ts +21 -19
  104. package/corpus/templates/assets/actions/variant-slots.ts +131 -28
  105. package/corpus/templates/assets/actions/view-screen.ts +9 -0
  106. package/corpus/templates/assets/app/components/generation/GenerationResults.tsx +425 -0
  107. package/corpus/templates/assets/app/components/layout/Header.tsx +3 -1
  108. package/corpus/templates/assets/app/components/layout/Layout.tsx +5 -0
  109. package/corpus/templates/assets/app/components/layout/Sidebar.tsx +4 -6
  110. package/corpus/templates/assets/app/hooks/use-navigation-state.ts +47 -21
  111. package/corpus/templates/assets/app/i18n-data.ts +1815 -0
  112. package/corpus/templates/assets/app/lib/libraries.ts +6 -0
  113. package/corpus/templates/assets/app/lib/picker-chat-handoff.ts +71 -0
  114. package/corpus/templates/assets/app/routes/_index.tsx +4 -0
  115. package/corpus/templates/assets/app/routes/asset.$id.tsx +2 -2
  116. package/corpus/templates/assets/app/routes/audit.tsx +1 -1
  117. package/corpus/templates/assets/app/routes/brand-kits.$id.tsx +1557 -2164
  118. package/corpus/templates/assets/app/routes/brand-kits._index.tsx +7 -191
  119. package/corpus/templates/assets/app/routes/brand-kits.tsx +1 -5
  120. package/corpus/templates/assets/app/routes/libraries.tsx +4 -4
  121. package/corpus/templates/assets/app/routes/library.$id.tsx +9 -7
  122. package/corpus/templates/assets/app/routes/library.tsx +1454 -175
  123. package/corpus/templates/assets/server/db/index.ts +1 -1
  124. package/corpus/templates/assets/server/lib/generation.ts +86 -15
  125. package/corpus/templates/assets/server/plugins/agent-chat.ts +196 -0
  126. package/corpus/templates/assets/server/plugins/db.ts +5 -0
  127. package/corpus/templates/assets/shared/api.ts +6 -3
  128. package/dist/agent/types.d.ts +21 -0
  129. package/dist/agent/types.d.ts.map +1 -1
  130. package/dist/agent/types.js.map +1 -1
  131. package/dist/client/AgentPanel.d.ts +6 -2
  132. package/dist/client/AgentPanel.d.ts.map +1 -1
  133. package/dist/client/AgentPanel.js +10 -4
  134. package/dist/client/AgentPanel.js.map +1 -1
  135. package/dist/client/AssistantChat.d.ts +6 -0
  136. package/dist/client/AssistantChat.d.ts.map +1 -1
  137. package/dist/client/AssistantChat.js +15 -3
  138. package/dist/client/AssistantChat.js.map +1 -1
  139. package/dist/client/agent-chat.d.ts +32 -0
  140. package/dist/client/agent-chat.d.ts.map +1 -1
  141. package/dist/client/agent-chat.js +113 -0
  142. package/dist/client/agent-chat.js.map +1 -1
  143. package/dist/client/analytics.d.ts +22 -3
  144. package/dist/client/analytics.d.ts.map +1 -1
  145. package/dist/client/analytics.js +96 -4
  146. package/dist/client/analytics.js.map +1 -1
  147. package/dist/client/composer/TiptapComposer.d.ts +2 -1
  148. package/dist/client/composer/TiptapComposer.d.ts.map +1 -1
  149. package/dist/client/composer/TiptapComposer.js +228 -56
  150. package/dist/client/composer/TiptapComposer.js.map +1 -1
  151. package/dist/client/composer/extensions/MentionReference.d.ts.map +1 -1
  152. package/dist/client/composer/extensions/MentionReference.js +3 -0
  153. package/dist/client/composer/extensions/MentionReference.js.map +1 -1
  154. package/dist/client/composer/types.d.ts +21 -0
  155. package/dist/client/composer/types.d.ts.map +1 -1
  156. package/dist/client/composer/types.js.map +1 -1
  157. package/dist/client/index.d.ts +2 -2
  158. package/dist/client/index.d.ts.map +1 -1
  159. package/dist/client/index.js +2 -2
  160. package/dist/client/index.js.map +1 -1
  161. package/dist/client/session-replay.d.ts +41 -0
  162. package/dist/client/session-replay.d.ts.map +1 -0
  163. package/dist/client/session-replay.js +595 -0
  164. package/dist/client/session-replay.js.map +1 -0
  165. package/dist/collab/awareness.d.ts +2 -2
  166. package/dist/collab/awareness.d.ts.map +1 -1
  167. package/dist/collab/routes.d.ts +2 -2
  168. package/dist/db/schema.d.ts +3 -1
  169. package/dist/db/schema.d.ts.map +1 -1
  170. package/dist/db/schema.js +6 -2
  171. package/dist/db/schema.js.map +1 -1
  172. package/dist/deploy/build.d.ts +8 -0
  173. package/dist/deploy/build.d.ts.map +1 -1
  174. package/dist/deploy/build.js +66 -0
  175. package/dist/deploy/build.js.map +1 -1
  176. package/dist/file-upload/actions/upload-image.d.ts +2 -2
  177. package/dist/notifications/routes.d.ts +3 -3
  178. package/dist/observability/routes.d.ts +8 -8
  179. package/dist/private-blob/index.d.ts +3 -0
  180. package/dist/private-blob/index.d.ts.map +1 -0
  181. package/dist/private-blob/index.js +2 -0
  182. package/dist/private-blob/index.js.map +1 -0
  183. package/dist/private-blob/registry.d.ts +10 -0
  184. package/dist/private-blob/registry.d.ts.map +1 -0
  185. package/dist/private-blob/registry.js +152 -0
  186. package/dist/private-blob/registry.js.map +1 -0
  187. package/dist/private-blob/types.d.ts +51 -0
  188. package/dist/private-blob/types.d.ts.map +1 -0
  189. package/dist/private-blob/types.js +2 -0
  190. package/dist/private-blob/types.js.map +1 -0
  191. package/dist/resources/handlers.d.ts +3 -3
  192. package/dist/scripts/utils.d.ts +4 -4
  193. package/dist/scripts/utils.d.ts.map +1 -1
  194. package/dist/scripts/utils.js +30 -6
  195. package/dist/scripts/utils.js.map +1 -1
  196. package/dist/server/agent-chat-plugin.d.ts.map +1 -1
  197. package/dist/server/agent-chat-plugin.js +5 -0
  198. package/dist/server/agent-chat-plugin.js.map +1 -1
  199. package/dist/server/agent-engine-api-key-route.d.ts +2 -2
  200. package/dist/server/email.d.ts +2 -0
  201. package/dist/server/email.d.ts.map +1 -1
  202. package/dist/server/email.js +3 -0
  203. package/dist/server/email.js.map +1 -1
  204. package/dist/server/index.d.ts +1 -1
  205. package/dist/server/index.d.ts.map +1 -1
  206. package/dist/server/index.js.map +1 -1
  207. package/dist/server/transcribe-voice.d.ts +1 -1
  208. package/dist/styles/agent-native.css +24 -0
  209. package/docs/content/template-analytics.md +5 -0
  210. package/docs/content/tracking.md +45 -0
  211. package/package.json +3 -1
  212. package/corpus/templates/analytics/app/pages/overview/OverviewPage.tsx +0 -209
@@ -6,8 +6,17 @@ import {
6
6
  type LlmConnectionStatus,
7
7
  } from "../shared/llm-connection.js";
8
8
  import { agentNativePath } from "./api-path.js";
9
+ import type {
10
+ SessionReplayOptions,
11
+ SessionReplayStartResult,
12
+ } from "./session-replay.js";
9
13
  import { scrubUrl } from "./url-scrub.js";
10
14
  export { scrubUrl } from "./url-scrub.js";
15
+ export type {
16
+ SessionReplayOptions,
17
+ SessionReplayStartResult,
18
+ SessionReplayUrlMatcher,
19
+ } from "./session-replay.js";
11
20
 
12
21
  declare global {
13
22
  interface Window {
@@ -29,6 +38,21 @@ type PageviewTrackingState = {
29
38
  lastPageviewKey: string | null;
30
39
  };
31
40
 
41
+ export type ConfigureTrackingOptions = {
42
+ /**
43
+ * Agent Native first-party analytics public key. This mirrors hosted
44
+ * analytics SDKs where consumers pass the key at setup time instead of
45
+ * relying on build-time environment variables.
46
+ */
47
+ key?: string;
48
+ /** Alias for `key`, matching the replay ingest payload name. */
49
+ publicKey?: string;
50
+ /** First-party analytics track endpoint. */
51
+ endpoint?: string;
52
+ getDefaultProps?: GetDefaultProps;
53
+ sessionReplay?: boolean | SessionReplayOptions;
54
+ };
55
+
32
56
  type SentryUser = {
33
57
  id?: string;
34
58
  email?: string;
@@ -36,6 +60,8 @@ type SentryUser = {
36
60
  };
37
61
 
38
62
  let _getDefaultProps: GetDefaultProps | null = null;
63
+ let _agentNativeAnalyticsPublicKey: string | null = null;
64
+ let _agentNativeAnalyticsEndpoint: string | null = null;
39
65
  let _amplitudeInitialized = false;
40
66
  let _sentryInitialized = false;
41
67
  let _llmConnectionStatus: LlmConnectionStatus | null = null;
@@ -233,6 +259,10 @@ function getOrCreateAnonymousId(): string | undefined {
233
259
  return id;
234
260
  }
235
261
 
262
+ export function getAnalyticsAnonymousId(): string | undefined {
263
+ return getOrCreateAnonymousId();
264
+ }
265
+
236
266
  function getOrCreateSessionId(): string | undefined {
237
267
  if (typeof window === "undefined") return undefined;
238
268
  const now = Date.now();
@@ -253,6 +283,10 @@ function getOrCreateSessionId(): string | undefined {
253
283
  return id;
254
284
  }
255
285
 
286
+ export function getAnalyticsSessionId(): string | undefined {
287
+ return getOrCreateSessionId();
288
+ }
289
+
256
290
  function truncateFirstTouchField(value: string | null | undefined): string {
257
291
  if (!value) return "";
258
292
  const trimmed = value.trim();
@@ -725,9 +759,14 @@ function getPageviewTrackingState(): PageviewTrackingState {
725
759
  return g[PAGEVIEW_TRACKING_STATE_KEY];
726
760
  }
727
761
 
728
- export function configureTracking(options: {
729
- getDefaultProps?: GetDefaultProps;
730
- }): void {
762
+ export function configureTracking(options: ConfigureTrackingOptions): void {
763
+ const publicKey = options.key || options.publicKey;
764
+ if (publicKey) {
765
+ _agentNativeAnalyticsPublicKey = publicKey;
766
+ }
767
+ if (options.endpoint) {
768
+ _agentNativeAnalyticsEndpoint = options.endpoint;
769
+ }
731
770
  if (options.getDefaultProps) {
732
771
  _getDefaultProps = options.getDefaultProps;
733
772
  }
@@ -737,7 +776,101 @@ export function configureTracking(options: {
737
776
  captureFirstTouchAttribution();
738
777
  installLlmConnectionRefresh();
739
778
  installPageviewTracking();
779
+ maybeInstallSessionReplay(options.sessionReplay, {
780
+ endpoint: options.endpoint,
781
+ publicKey,
782
+ });
783
+ }
784
+ }
785
+
786
+ function sessionReplayEnabledFromEnv(): boolean {
787
+ const env = (import.meta.env as Record<string, string | undefined>) ?? {};
788
+ const value =
789
+ env.VITE_AGENT_NATIVE_SESSION_REPLAY_ENABLED ||
790
+ env.VITE_SESSION_REPLAY_ENABLED;
791
+ return /^(1|true|yes|on)$/i.test((value ?? "").trim());
792
+ }
793
+
794
+ function configuredSessionReplayOptions(
795
+ config: boolean | SessionReplayOptions | undefined,
796
+ tracking: { endpoint?: string; publicKey?: string } = {},
797
+ ): SessionReplayOptions | null {
798
+ const publicKey = tracking.publicKey || _agentNativeAnalyticsPublicKey;
799
+ const trackingEndpoint = tracking.endpoint || _agentNativeAnalyticsEndpoint;
800
+ const endpoint = trackingEndpoint
801
+ ? replayEndpointFromTrackingEndpoint(trackingEndpoint)
802
+ : undefined;
803
+ const withTrackingDefaults = (
804
+ options: SessionReplayOptions,
805
+ ): SessionReplayOptions => ({
806
+ ...(publicKey && !options.publicKey ? { publicKey } : {}),
807
+ ...(endpoint && !options.endpoint ? { endpoint } : {}),
808
+ ...options,
809
+ });
810
+
811
+ if (config === true) return withTrackingDefaults({});
812
+ if (config && typeof config === "object") {
813
+ if (config.enabled === false) return null;
814
+ return withTrackingDefaults(config);
740
815
  }
816
+ return sessionReplayEnabledFromEnv() ? withTrackingDefaults({}) : null;
817
+ }
818
+
819
+ function replayEndpointFromTrackingEndpoint(value: string): string | undefined {
820
+ try {
821
+ const url = new URL(value);
822
+ if (url.pathname.endsWith("/api/analytics/track")) {
823
+ url.pathname = url.pathname.replace(
824
+ /\/api\/analytics\/track$/,
825
+ "/api/analytics/replay",
826
+ );
827
+ return url.toString();
828
+ }
829
+ if (url.pathname.endsWith("/track")) {
830
+ url.pathname = url.pathname.replace(/\/track$/, "/api/analytics/replay");
831
+ return url.toString();
832
+ }
833
+ } catch {
834
+ // Fall through to relative-path handling below.
835
+ }
836
+ if (value.endsWith("/api/analytics/track")) {
837
+ return value.replace(/\/api\/analytics\/track$/, "/api/analytics/replay");
838
+ }
839
+ if (value.endsWith("/track")) {
840
+ return value.replace(/\/track$/, "/api/analytics/replay");
841
+ }
842
+ return undefined;
843
+ }
844
+
845
+ function maybeInstallSessionReplay(
846
+ config: boolean | SessionReplayOptions | undefined,
847
+ tracking?: { endpoint?: string; publicKey?: string },
848
+ ): void {
849
+ if (typeof window === "undefined") return;
850
+ const options = configuredSessionReplayOptions(config, tracking);
851
+ if (!options) return;
852
+ import("./session-replay.js")
853
+ .then((mod) => mod.startSessionReplay(options))
854
+ .catch(() => {});
855
+ }
856
+
857
+ export async function startSessionReplay(
858
+ options: SessionReplayOptions = {},
859
+ ): Promise<SessionReplayStartResult> {
860
+ const mod = await import("./session-replay.js");
861
+ return mod.startSessionReplay(options);
862
+ }
863
+
864
+ export async function maybeStartSessionReplay(
865
+ options: SessionReplayOptions = {},
866
+ ): Promise<SessionReplayStartResult> {
867
+ const mod = await import("./session-replay.js");
868
+ return mod.maybeStartSessionReplay(options);
869
+ }
870
+
871
+ export async function stopSessionReplay(reason = "manual"): Promise<void> {
872
+ const mod = await import("./session-replay.js");
873
+ mod.stopSessionReplay(reason);
741
874
  }
742
875
 
743
876
  function inferTemplateName(properties: Record<string, unknown>): string | null {
@@ -862,11 +995,14 @@ function sendAgentNativeAnalytics(
862
995
  ): void {
863
996
  if (isLocalAnalyticsHostname(window.location.hostname)) return;
864
997
 
865
- const publicKey = (import.meta.env as Record<string, string | undefined>)
866
- ?.VITE_AGENT_NATIVE_ANALYTICS_PUBLIC_KEY;
998
+ const publicKey =
999
+ _agentNativeAnalyticsPublicKey ||
1000
+ (import.meta.env as Record<string, string | undefined>)
1001
+ ?.VITE_AGENT_NATIVE_ANALYTICS_PUBLIC_KEY;
867
1002
  if (!publicKey) return;
868
1003
 
869
1004
  const endpoint =
1005
+ _agentNativeAnalyticsEndpoint ||
870
1006
  (import.meta.env as Record<string, string | undefined>)
871
1007
  ?.VITE_AGENT_NATIVE_ANALYTICS_ENDPOINT ||
872
1008
  AGENT_NATIVE_ANALYTICS_DEFAULT_ENDPOINT;