@agent-native/core 0.178.1 → 0.178.2-nightly-20260910214741

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 (50) hide show
  1. package/corpus/templates/analytics/app/components/layout/Sidebar.tsx +108 -121
  2. package/corpus/templates/assets/actions/create-generation-session.ts +2 -6
  3. package/corpus/templates/assets/actions/generate-image.ts +3 -12
  4. package/corpus/templates/assets/app/components/layout/Sidebar.tsx +87 -220
  5. package/corpus/templates/assets/server/lib/library-access.ts +23 -0
  6. package/corpus/templates/brain/app/components/layout/Sidebar.tsx +83 -221
  7. package/corpus/templates/calendar/app/components/layout/Sidebar.tsx +324 -460
  8. package/corpus/templates/chat/app/components/layout/Sidebar.tsx +57 -247
  9. package/corpus/templates/clips/app/components/library/library-layout.tsx +15 -48
  10. package/corpus/templates/clips/changelog/2026-09-10-open-mcp-connections-in-new-tabs.md +1 -0
  11. package/corpus/templates/content/app/components/sidebar/DocumentSidebar.tsx +84 -94
  12. package/corpus/templates/crm/app/components/layout/CrmLayout.tsx +1 -1
  13. package/corpus/templates/crm/app/components/layout/CrmSidebar.tsx +108 -296
  14. package/corpus/templates/design/app/components/layout/Sidebar.tsx +55 -212
  15. package/corpus/templates/factory/app/components/layout/Sidebar.tsx +72 -260
  16. package/corpus/templates/forms/app/components/layout/Sidebar.tsx +143 -362
  17. package/corpus/templates/macros/app/components/layout/AppLayout.tsx +64 -159
  18. package/corpus/templates/mail/app/components/layout/AppLayout.tsx +152 -165
  19. package/corpus/templates/plan/app/components/layout/Sidebar.tsx +82 -207
  20. package/corpus/templates/slides/app/components/layout/Sidebar.tsx +61 -234
  21. package/corpus/templates/tasks/app/components/layout/Sidebar.tsx +73 -225
  22. package/dist/client/EnvironmentBadge.d.ts +7 -4
  23. package/dist/client/EnvironmentBadge.js +26 -18
  24. package/dist/client/FeedbackButton.js +23 -8
  25. package/dist/client/app-providers.js +1 -1
  26. package/dist/client/auth/AuthPage.js +0 -38
  27. package/dist/client/components/icons/AgentNativeIcon.js +1 -1
  28. package/dist/client/index.d.ts +1 -0
  29. package/dist/client/index.js +1 -0
  30. package/dist/client/ui/AppSidebar.d.ts +15 -0
  31. package/dist/client/ui/AppSidebar.js +34 -0
  32. package/dist/client/ui/index.d.ts +1 -0
  33. package/dist/client/ui/index.js +1 -0
  34. package/dist/collab/routes.d.ts +1 -1
  35. package/dist/config.d.ts +4 -0
  36. package/dist/config.js +19 -3
  37. package/dist/file-upload/actions/upload-image.d.ts +3 -3
  38. package/dist/notifications/routes.d.ts +2 -2
  39. package/dist/observability/routes.d.ts +5 -5
  40. package/dist/provider-api/actions/custom-provider-registration.d.ts +9 -9
  41. package/dist/provider-api/actions/provider-api.d.ts +15 -15
  42. package/dist/provider-api/corpus-jobs.d.ts +2 -2
  43. package/dist/server/agent-engine-api-key-route.d.ts +1 -1
  44. package/dist/server/beta-opt-out-html.js +2 -2
  45. package/dist/templates/chat/app/components/layout/Sidebar.tsx +57 -247
  46. package/dist/vite/client.js +4 -1
  47. package/docs/content/template-clips-anonymous-intake.mdx +7 -5
  48. package/docs/content/template-clips-developers.mdx +1 -1
  49. package/package.json +2 -2
  50. package/src/templates/chat/app/components/layout/Sidebar.tsx +57 -247
@@ -0,0 +1,15 @@
1
+ import { type AppSidebarProps as ToolkitAppSidebarProps, type AppSidebarHeaderProps as ToolkitAppSidebarHeaderProps, type AppSidebarFooterProps as ToolkitAppSidebarFooterProps } from "@agent-native/toolkit/app-shell";
2
+ export interface AppSidebarHeaderProps extends ToolkitAppSidebarHeaderProps {
3
+ badgeText?: string;
4
+ showBadge?: boolean;
5
+ }
6
+ export declare const AppSidebarHeader: import("react").ForwardRefExoticComponent<AppSidebarHeaderProps & import("react").RefAttributes<HTMLDivElement>>;
7
+ export interface AppSidebarFooterProps extends ToolkitAppSidebarFooterProps {
8
+ }
9
+ export declare const AppSidebarFooter: import("react").ForwardRefExoticComponent<AppSidebarFooterProps & import("react").RefAttributes<HTMLDivElement>>;
10
+ export interface AppSidebarProps extends ToolkitAppSidebarProps {
11
+ badgeText?: string;
12
+ showBadge?: boolean;
13
+ }
14
+ export declare const AppSidebar: import("react").ForwardRefExoticComponent<AppSidebarProps & import("react").RefAttributes<HTMLElement>>;
15
+ export { AppSidebarNavItem, AppSidebarNavGroup, AppSidebarSection, AppSidebarFeedbackButton, useAppSidebar, type AppSidebarNavItemProps, type AppSidebarNavGroupProps, type AppSidebarSectionProps, type AppSidebarFeedbackButtonProps, type AppSidebarItemDefinition, type AppSidebarContextValue, type AppSidebarLinkComponent, } from "@agent-native/toolkit/app-shell";
@@ -0,0 +1,34 @@
1
+ import { jsx as _jsx } from "react/jsx-runtime";
2
+ import { AppSidebar as ToolkitAppSidebar, AppSidebarHeader as ToolkitAppSidebarHeader, AppSidebarFooter as ToolkitAppSidebarFooter, useAppSidebar, } from "@agent-native/toolkit/app-shell";
3
+ import { forwardRef } from "react";
4
+ import { Link } from "react-router";
5
+ import { AgentNativeIcon } from "../components/icons/AgentNativeIcon.js";
6
+ import { EnvironmentBadge } from "../EnvironmentBadge.js";
7
+ import { FeedbackButton } from "../FeedbackButton.js";
8
+ function RouterSidebarLink({ to, href, className, onClick, children, "aria-label": ariaLabel, }) {
9
+ return (_jsx(Link, { to: to ?? href ?? "/", className: className, onClick: onClick, "aria-label": ariaLabel, children: children }));
10
+ }
11
+ export const AppSidebarHeader = forwardRef(({ brandIcon, badge, badgeText, showBadge = true, brandLink, brandHref = "/", ...props }, ref) => {
12
+ const resolvedBrandIcon = brandIcon ?? (_jsx(AgentNativeIcon, { "aria-hidden": "true", className: "h-3.5 w-6 shrink-0 text-primary" }));
13
+ const resolvedBadge = badge ??
14
+ (showBadge ? (_jsx(EnvironmentBadge, { placement: "inline", badgeText: badgeText })) : undefined);
15
+ return (_jsx(ToolkitAppSidebarHeader, { ref: ref, brandIcon: resolvedBrandIcon, badge: resolvedBadge, brandHref: brandHref, ...props }));
16
+ });
17
+ AppSidebarHeader.displayName = "AppSidebarHeader";
18
+ export const AppSidebarFooter = forwardRef(({ feedback, collapsed: propCollapsed, ...props }, ref) => {
19
+ const context = useAppSidebar();
20
+ const collapsed = propCollapsed ?? context.collapsed;
21
+ const resolvedFeedback = feedback !== undefined ? (feedback) : (_jsx(FeedbackButton, { variant: collapsed ? "icon" : "sidebar", side: "right" }));
22
+ return (_jsx(ToolkitAppSidebarFooter, { ref: ref, collapsed: collapsed, feedback: resolvedFeedback, ...props }));
23
+ });
24
+ AppSidebarFooter.displayName = "AppSidebarFooter";
25
+ export const AppSidebar = forwardRef(({ brandIcon, badge, badgeText, showBadge = true, linkComponent, ...props }, ref) => {
26
+ const resolvedBrandIcon = brandIcon ?? (_jsx(AgentNativeIcon, { "aria-hidden": "true", className: "h-3.5 w-6 shrink-0 text-primary" }));
27
+ const resolvedBadge = badge ??
28
+ (showBadge ? (_jsx(EnvironmentBadge, { placement: "inline", badgeText: badgeText })) : undefined);
29
+ const resolvedLinkComponent = linkComponent ?? RouterSidebarLink;
30
+ const resolvedFeedback = props.feedback !== undefined ? (props.feedback) : (_jsx(FeedbackButton, { variant: props.collapsed ? "icon" : "sidebar" }));
31
+ return (_jsx(ToolkitAppSidebar, { ref: ref, brandIcon: resolvedBrandIcon, badge: resolvedBadge, linkComponent: resolvedLinkComponent, ...props, feedback: resolvedFeedback }));
32
+ });
33
+ AppSidebar.displayName = "AppSidebar";
34
+ export { AppSidebarNavItem, AppSidebarNavGroup, AppSidebarSection, AppSidebarFeedbackButton, useAppSidebar, } from "@agent-native/toolkit/app-shell";
@@ -19,3 +19,4 @@ export { applyEmbeddedThemeUpdate, buildEmbeddedThemeUpdate, EMBEDDED_THEME_CHAN
19
19
  export { APPEARANCE_PRESETS, applyAppearance, getStoredAppearance, useAppearance, useAppearanceSync, type AppearancePresetId, } from "../appearance.js";
20
20
  export { AppearancePicker, type AppearancePickerProps, } from "../AppearancePicker.js";
21
21
  export { AgentNativeIcon } from "../components/icons/AgentNativeIcon.js";
22
+ export { AppSidebar, AppSidebarHeader, AppSidebarNavItem, AppSidebarNavGroup, AppSidebarSection, AppSidebarFeedbackButton, AppSidebarFooter, useAppSidebar, type AppSidebarProps, type AppSidebarHeaderProps, type AppSidebarNavItemProps, type AppSidebarNavGroupProps, type AppSidebarSectionProps, type AppSidebarFeedbackButtonProps, type AppSidebarFooterProps, type AppSidebarItemDefinition, type AppSidebarContextValue, } from "./AppSidebar.js";
@@ -19,3 +19,4 @@ export { applyEmbeddedThemeUpdate, buildEmbeddedThemeUpdate, EMBEDDED_THEME_CHAN
19
19
  export { APPEARANCE_PRESETS, applyAppearance, getStoredAppearance, useAppearance, useAppearanceSync, } from "../appearance.js";
20
20
  export { AppearancePicker, } from "../AppearancePicker.js";
21
21
  export { AgentNativeIcon } from "../components/icons/AgentNativeIcon.js";
22
+ export { AppSidebar, AppSidebarHeader, AppSidebarNavItem, AppSidebarNavGroup, AppSidebarSection, AppSidebarFeedbackButton, AppSidebarFooter, useAppSidebar, } from "./AppSidebar.js";
@@ -26,8 +26,8 @@ export declare const getCollabState: import("h3").EventHandlerWithFetch<import("
26
26
  * Body: { update: string (base64), requestSource?: string }
27
27
  */
28
28
  export declare const postCollabUpdate: import("h3").EventHandlerWithFetch<import("h3").EventHandlerRequest, Promise<{
29
- ok?: undefined;
30
29
  error: string;
30
+ ok?: undefined;
31
31
  } | {
32
32
  error?: undefined;
33
33
  ok: boolean;
package/dist/config.d.ts CHANGED
@@ -42,6 +42,8 @@ export type AgentNativeDeploymentEnvironment = "local" | "beta" | "production" |
42
42
  export interface AgentNativeDeploymentConfig {
43
43
  /** The release lane that produced the currently running client bundle. */
44
44
  environment?: AgentNativeDeploymentEnvironment;
45
+ /** Badge text override shown in the top-left sidebar header badge (e.g. "alpha" or "beta"). Defaults to "alpha". */
46
+ badgeText?: string;
45
47
  }
46
48
  export interface AgentNativeDiagnosticsConfig {
47
49
  /** Fail a production Vite build when runtime configuration has issues. */
@@ -79,6 +81,8 @@ export interface AgentNativeConfig {
79
81
  onboarding?: AgentNativeOnboardingConfig;
80
82
  runtime?: AgentNativeRuntimeConfig;
81
83
  deployment?: AgentNativeDeploymentConfig;
84
+ /** Badge text override shown in the top-left sidebar header badge (e.g. "alpha" or "beta"). Defaults to "alpha". */
85
+ badgeText?: string;
82
86
  diagnostics?: AgentNativeDiagnosticsConfig;
83
87
  instructions?: AgentNativeInstructionsConfig;
84
88
  translations?: AgentNativeTranslationsConfig;
package/dist/config.js CHANGED
@@ -275,6 +275,7 @@ export function normalizeAgentNativeConfig(input, source = "agent-native config"
275
275
  const onboardingValue = input.onboarding;
276
276
  const runtimeValue = input.runtime;
277
277
  const deploymentValue = input.deployment;
278
+ const badgeTextValue = input.badgeText;
278
279
  const diagnosticsValue = input.diagnostics;
279
280
  const instructionsValue = input.instructions;
280
281
  const translationsValue = input.translations;
@@ -285,6 +286,12 @@ export function normalizeAgentNativeConfig(input, source = "agent-native config"
285
286
  ? {}
286
287
  : { version: AGENT_NATIVE_CONFIG_VERSION }),
287
288
  };
289
+ if (badgeTextValue !== undefined) {
290
+ if (typeof badgeTextValue !== "string") {
291
+ throw new Error(`${source}.badgeText must be a string`);
292
+ }
293
+ normalized.badgeText = badgeTextValue;
294
+ }
288
295
  if (onboardingValue !== undefined) {
289
296
  if (!isRecord(onboardingValue)) {
290
297
  throw new Error(`${source}.onboarding must be an object`);
@@ -360,6 +367,7 @@ export function mergeAgentNativeConfigs(base, override, options = {}) {
360
367
  ...override.deployment,
361
368
  }
362
369
  : undefined,
370
+ badgeText: override.badgeText ?? base.badgeText,
363
371
  diagnostics: base.diagnostics || override.diagnostics
364
372
  ? {
365
373
  ...base.diagnostics,
@@ -469,12 +477,20 @@ function normalizeDeploymentConfig(value, source) {
469
477
  throw new Error(`${source} must be an object`);
470
478
  }
471
479
  const environment = value.environment;
472
- if (environment === undefined)
473
- return {};
480
+ const badgeText = value.badgeText;
481
+ if (badgeText !== undefined && typeof badgeText !== "string") {
482
+ throw new Error(`${source}.badgeText must be a string`);
483
+ }
484
+ if (environment === undefined) {
485
+ return badgeText === undefined ? {} : { badgeText };
486
+ }
474
487
  if (!isAgentNativeDeploymentEnvironment(environment)) {
475
488
  throw new Error(`${source}.environment must be "local", "beta", "production", or "preview"`);
476
489
  }
477
- return { environment };
490
+ return {
491
+ environment,
492
+ ...(badgeText === undefined ? {} : { badgeText }),
493
+ };
478
494
  }
479
495
  function normalizeDiagnosticsConfig(value, source) {
480
496
  if (!isRecord(value)) {
@@ -3,25 +3,25 @@ declare const _default: import("../../action.js").ActionDefinition<{
3
3
  url?: string;
4
4
  filename?: string;
5
5
  }, {
6
+ id?: undefined;
6
7
  error: string;
7
8
  configured?: undefined;
8
9
  connectPath?: undefined;
9
10
  url?: undefined;
10
- id?: undefined;
11
11
  provider?: undefined;
12
12
  } | {
13
+ id?: undefined;
13
14
  error: string;
14
15
  configured: boolean;
15
16
  connectPath: string;
16
17
  url?: undefined;
17
- id?: undefined;
18
18
  provider?: undefined;
19
19
  } | {
20
- error?: undefined;
21
20
  configured?: undefined;
22
21
  connectPath?: undefined;
23
22
  url: string;
24
23
  id: string;
25
24
  provider: string;
25
+ error?: undefined;
26
26
  }>;
27
27
  export default _default;
@@ -13,13 +13,13 @@
13
13
  export declare function createNotificationsHandler(): import("h3").EventHandlerWithFetch<import("h3").EventHandlerRequest, Promise<"" | import("./types.js").Notification[] | {
14
14
  count: number;
15
15
  updated?: undefined;
16
- ok?: undefined;
17
16
  error?: undefined;
17
+ ok?: undefined;
18
18
  } | {
19
19
  count?: undefined;
20
20
  updated: number;
21
- ok?: undefined;
22
21
  error?: undefined;
22
+ ok?: undefined;
23
23
  } | {
24
24
  count?: undefined;
25
25
  updated?: undefined;
@@ -43,25 +43,25 @@ export declare function createObservabilityHandler(): import("h3").EventHandlerW
43
43
  } | {
44
44
  summary: import("./types.js").TraceSummary;
45
45
  spans: import("./types.js").TraceSpan[];
46
- ok?: undefined;
47
- error?: undefined;
48
46
  id?: undefined;
47
+ error?: undefined;
48
+ ok?: undefined;
49
49
  } | {
50
50
  summary?: undefined;
51
51
  spans?: undefined;
52
52
  id: string;
53
- ok?: undefined;
54
53
  error?: undefined;
54
+ ok?: undefined;
55
55
  } | {
56
56
  summary?: undefined;
57
57
  spans?: undefined;
58
+ id?: undefined;
58
59
  error: any;
59
60
  ok?: undefined;
60
- id?: undefined;
61
61
  } | {
62
62
  summary?: undefined;
63
63
  spans?: undefined;
64
+ id?: undefined;
64
65
  ok: boolean;
65
66
  error?: undefined;
66
- id?: undefined;
67
67
  }>>;
@@ -76,9 +76,7 @@ export declare function createCustomProviderRegistrationAction<TSchema extends Z
76
76
  }>>;
77
77
  }, z.core.$strip>>, {
78
78
  id?: undefined;
79
- message?: undefined;
80
79
  deleted?: undefined;
81
- provider?: undefined;
82
80
  providers: {
83
81
  id: string;
84
82
  label: string;
@@ -89,44 +87,46 @@ export declare function createCustomProviderRegistrationAction<TSchema extends Z
89
87
  updatedAt: number;
90
88
  }[];
91
89
  count: number;
90
+ provider?: undefined;
92
91
  found?: undefined;
93
92
  registered?: undefined;
94
93
  label?: undefined;
94
+ message?: undefined;
95
95
  } | {
96
96
  id?: undefined;
97
- message?: undefined;
98
97
  deleted?: undefined;
99
- count?: undefined;
100
98
  providers?: undefined;
99
+ count?: undefined;
101
100
  found: boolean;
102
101
  provider: import("../custom-registry.js").CustomProviderConfig;
103
102
  registered?: undefined;
104
103
  label?: undefined;
105
- } | {
106
104
  message?: undefined;
105
+ } | {
107
106
  deleted?: undefined;
107
+ providers?: undefined;
108
108
  count?: undefined;
109
109
  provider?: undefined;
110
- providers?: undefined;
111
110
  found: boolean;
112
111
  id: string;
113
112
  registered?: undefined;
114
113
  label?: undefined;
115
- } | {
116
114
  message?: undefined;
115
+ } | {
116
+ providers?: undefined;
117
117
  count?: undefined;
118
118
  provider?: undefined;
119
- providers?: undefined;
120
119
  found?: undefined;
121
120
  deleted: boolean;
122
121
  id: string;
123
122
  registered?: undefined;
124
123
  label?: undefined;
124
+ message?: undefined;
125
125
  } | {
126
126
  deleted?: undefined;
127
+ providers?: undefined;
127
128
  count?: undefined;
128
129
  provider?: undefined;
129
- providers?: undefined;
130
130
  found?: undefined;
131
131
  registered: boolean;
132
132
  id: string;
@@ -311,6 +311,10 @@ export declare function createProviderApiActions(runtime: Pick<ProviderApiRuntim
311
311
  notes?: string | undefined;
312
312
  scope?: "org" | "user" | undefined;
313
313
  }, {
314
+ id?: undefined;
315
+ message?: undefined;
316
+ deleted?: undefined;
317
+ provider?: undefined;
314
318
  providers: {
315
319
  id: string;
316
320
  label: string;
@@ -321,49 +325,45 @@ export declare function createProviderApiActions(runtime: Pick<ProviderApiRuntim
321
325
  updatedAt: number;
322
326
  }[];
323
327
  count: number;
324
- provider?: undefined;
325
328
  found?: undefined;
326
- deleted?: undefined;
327
329
  registered?: undefined;
328
- id?: undefined;
329
330
  label?: undefined;
330
- message?: undefined;
331
331
  } | {
332
- providers?: undefined;
332
+ id?: undefined;
333
+ message?: undefined;
334
+ deleted?: undefined;
333
335
  count?: undefined;
336
+ providers?: undefined;
334
337
  found: boolean;
335
338
  provider: import("../custom-registry.js").CustomProviderConfig;
336
- deleted?: undefined;
337
339
  registered?: undefined;
338
- id?: undefined;
339
340
  label?: undefined;
340
- message?: undefined;
341
341
  } | {
342
- providers?: undefined;
342
+ message?: undefined;
343
+ deleted?: undefined;
343
344
  count?: undefined;
344
345
  provider?: undefined;
346
+ providers?: undefined;
345
347
  found: boolean;
346
348
  id: string;
347
- deleted?: undefined;
348
349
  registered?: undefined;
349
350
  label?: undefined;
350
- message?: undefined;
351
351
  } | {
352
- providers?: undefined;
352
+ message?: undefined;
353
353
  count?: undefined;
354
354
  provider?: undefined;
355
+ providers?: undefined;
355
356
  found?: undefined;
356
357
  deleted: boolean;
357
358
  id: string;
358
359
  registered?: undefined;
359
360
  label?: undefined;
360
- message?: undefined;
361
361
  } | {
362
- providers?: undefined;
362
+ deleted?: undefined;
363
363
  count?: undefined;
364
364
  provider?: undefined;
365
+ providers?: undefined;
365
366
  found?: undefined;
366
- deleted?: undefined;
367
367
  registered: boolean;
368
368
  id: string;
369
369
  label: string;
@@ -73,7 +73,6 @@ export declare function createProviderCorpusJobAction(options: CreateProviderCor
73
73
  offset?: unknown;
74
74
  limit?: unknown;
75
75
  }, {
76
- deleted?: undefined;
77
76
  jobs: {
78
77
  id: string;
79
78
  name: string;
@@ -84,6 +83,7 @@ export declare function createProviderCorpusJobAction(options: CreateProviderCor
84
83
  updatedAt: string;
85
84
  }[];
86
85
  total: number;
86
+ deleted?: undefined;
87
87
  jobId?: undefined;
88
88
  } | {
89
89
  jobs?: undefined;
@@ -91,9 +91,9 @@ export declare function createProviderCorpusJobAction(options: CreateProviderCor
91
91
  deleted: boolean;
92
92
  jobId: string;
93
93
  } | {
94
- deleted?: undefined;
95
94
  jobs?: undefined;
96
95
  total?: undefined;
96
+ deleted?: undefined;
97
97
  jobId?: undefined;
98
98
  hits: Record<string, unknown>[];
99
99
  offset: number;
@@ -34,10 +34,10 @@ export declare function resolveAgentEngineApiKeyWriteTarget(event: H3Event, scop
34
34
  export declare function createAgentEngineApiKeyHandler(): import("h3").EventHandlerWithFetch<import("h3").EventHandlerRequest, Promise<{
35
35
  error: any;
36
36
  } | {
37
+ error?: undefined;
37
38
  ok: boolean;
38
39
  key: string;
39
40
  baseUrlKey?: string;
40
41
  scope: AgentEngineApiKeyScope;
41
- error?: undefined;
42
42
  }>>;
43
43
  export {};
@@ -25,9 +25,9 @@ function betaRedirectBasePath(requestPath) {
25
25
  : configuredBasePath;
26
26
  }
27
27
  const environmentSwitcherMarkup = `<div class="environment-switcher" id="environment-switcher" ${ENVIRONMENT_SWITCHER_MARKER} hidden>
28
- <button type="button" class="environment-badge" id="environment-badge" aria-expanded="false" aria-controls="environment-popover">beta</button>
28
+ <button type="button" class="environment-badge" id="environment-badge" aria-expanded="false" aria-controls="environment-popover">alpha</button>
29
29
  <div class="environment-popover" id="environment-popover" role="dialog" aria-labelledby="environment-popover-title" hidden>
30
- <div class="environment-popover-title" id="environment-popover-title">You're on Agent-Native Beta</div>
30
+ <div class="environment-popover-title" id="environment-popover-title">You're on Agent-Native Alpha</div>
31
31
  <div class="environment-popover-copy">Choose where you want to continue.</div>
32
32
  <a class="environment-production-link" id="environment-production-link" href="">Switch to production</a>
33
33
  <button type="button" class="environment-hide-badge" id="environment-hide-badge">Hide badge</button>