@agent-native/core 0.146.4 → 0.146.5

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 (86) hide show
  1. package/corpus/templates/analytics/app/components/layout/CommandPalette.tsx +1 -1
  2. package/corpus/templates/analytics/app/components/layout/Layout.tsx +1 -1
  3. package/corpus/templates/analytics/app/pages/Settings.tsx +5 -1
  4. package/corpus/templates/analytics/app/routes/agent.tsx +7 -5
  5. package/corpus/templates/assets/app/components/layout/Layout.tsx +1 -1
  6. package/corpus/templates/assets/app/routes/agent.tsx +7 -5
  7. package/corpus/templates/assets/app/routes/settings.tsx +7 -2
  8. package/corpus/templates/assets/server/plugins/creative-context.ts +1 -1
  9. package/corpus/templates/brain/app/components/layout/Layout.tsx +1 -1
  10. package/corpus/templates/brain/app/lib/brain.ts +4 -2
  11. package/corpus/templates/brain/app/root.tsx +1 -1
  12. package/corpus/templates/brain/app/routes/agent.tsx +10 -2
  13. package/corpus/templates/calendar/app/components/layout/AppLayout.tsx +1 -1
  14. package/corpus/templates/calendar/app/root.tsx +1 -1
  15. package/corpus/templates/calendar/app/routes/_app.agent.tsx +8 -16
  16. package/corpus/templates/chat/app/hooks/use-navigation-state.ts +5 -2
  17. package/corpus/templates/chat/app/routes/agent.tsx +7 -31
  18. package/corpus/templates/clips/app/components/library/library-layout.tsx +1 -1
  19. package/corpus/templates/clips/app/root.tsx +1 -1
  20. package/corpus/templates/clips/app/routes/_app.agent.tsx +9 -7
  21. package/corpus/templates/content/app/components/layout/Layout.tsx +1 -1
  22. package/corpus/templates/content/app/root.tsx +1 -1
  23. package/corpus/templates/content/app/routes/_app.agent.tsx +9 -8
  24. package/corpus/templates/content/app/routes/_app.settings.tsx +7 -2
  25. package/corpus/templates/content/server/plugins/creative-context.ts +1 -1
  26. package/corpus/templates/crm/app/components/crm/RecordActions.tsx +4 -1
  27. package/corpus/templates/crm/app/components/layout/CrmLayout.tsx +1 -1
  28. package/corpus/templates/crm/app/routes/agent.tsx +10 -2
  29. package/corpus/templates/design/app/components/layout/Layout.tsx +1 -1
  30. package/corpus/templates/design/app/root.tsx +1 -1
  31. package/corpus/templates/design/app/routes/agent.tsx +9 -7
  32. package/corpus/templates/design/app/routes/settings.tsx +7 -2
  33. package/corpus/templates/design/server/plugins/creative-context.ts +1 -1
  34. package/corpus/templates/dispatch/app/root.tsx +5 -2
  35. package/corpus/templates/dispatch/app/routes/agent.tsx +7 -7
  36. package/corpus/templates/factory/app/components/layout/Layout.tsx +1 -1
  37. package/corpus/templates/factory/app/hooks/use-navigation-state.ts +5 -2
  38. package/corpus/templates/factory/app/root.tsx +1 -1
  39. package/corpus/templates/factory/app/routes/agent.tsx +9 -14
  40. package/corpus/templates/forms/app/components/layout/Layout.tsx +1 -1
  41. package/corpus/templates/forms/app/root.tsx +1 -1
  42. package/corpus/templates/forms/app/routes/_app.agent.tsx +9 -7
  43. package/corpus/templates/macros/app/components/layout/AppLayout.tsx +5 -3
  44. package/corpus/templates/macros/app/root.tsx +1 -1
  45. package/corpus/templates/macros/app/routes/agent.tsx +9 -6
  46. package/corpus/templates/mail/app/components/layout/AppLayout.tsx +8 -2
  47. package/corpus/templates/mail/app/components/layout/CommandPalette.tsx +1 -1
  48. package/corpus/templates/mail/app/routes/agent.tsx +9 -6
  49. package/corpus/templates/plan/app/components/layout/Layout.tsx +1 -1
  50. package/corpus/templates/plan/app/root.tsx +1 -1
  51. package/corpus/templates/plan/app/routes/agent.tsx +9 -6
  52. package/corpus/templates/slides/app/components/editor/ImageGenPanel.tsx +8 -12
  53. package/corpus/templates/slides/app/components/editor/SlideEditor.tsx +39 -2
  54. package/corpus/templates/slides/app/components/layout/Layout.tsx +1 -1
  55. package/corpus/templates/slides/app/i18n/en-US.ts +1 -0
  56. package/corpus/templates/slides/app/lib/create-deck-generation.ts +22 -5
  57. package/corpus/templates/slides/app/pages/Index.tsx +20 -5
  58. package/corpus/templates/slides/app/root.tsx +1 -1
  59. package/corpus/templates/slides/app/routes/agent.tsx +6 -9
  60. package/corpus/templates/slides/app/routes/settings.tsx +7 -2
  61. package/corpus/templates/slides/server/plugins/creative-context.ts +1 -1
  62. package/corpus/templates/tasks/app/components/layout/Layout.tsx +1 -1
  63. package/corpus/templates/tasks/app/routes/agent.tsx +10 -2
  64. package/dist/client/index.d.ts +1 -1
  65. package/dist/client/navigation/index.d.ts +1 -1
  66. package/dist/client/navigation/index.js +1 -1
  67. package/dist/client/org/OrgSwitcher.js +1 -1
  68. package/dist/client/settings/SettingsPanel.d.ts +8 -0
  69. package/dist/client/settings/SettingsPanel.js +16 -1
  70. package/dist/client/settings/index.d.ts +1 -1
  71. package/dist/collab/awareness.d.ts +2 -2
  72. package/dist/navigation/index.d.ts +1 -0
  73. package/dist/navigation/index.js +34 -0
  74. package/dist/notifications/routes.d.ts +3 -3
  75. package/dist/observability/routes.d.ts +3 -3
  76. package/dist/progress/routes.d.ts +1 -1
  77. package/dist/server/transcribe-voice.d.ts +1 -1
  78. package/dist/templates/chat/app/hooks/use-navigation-state.ts +5 -2
  79. package/dist/templates/chat/app/routes/agent.tsx +7 -31
  80. package/dist/templates/default/app/routes/_index.tsx +1 -1
  81. package/dist/templates/default/app/routes/agent.tsx +7 -25
  82. package/package.json +3 -3
  83. package/src/templates/chat/app/hooks/use-navigation-state.ts +5 -2
  84. package/src/templates/chat/app/routes/agent.tsx +7 -31
  85. package/src/templates/default/app/routes/_index.tsx +1 -1
  86. package/src/templates/default/app/routes/agent.tsx +7 -25
@@ -508,7 +508,7 @@ export function CommandPalette() {
508
508
  <CommandGroup key="settings" heading={t("navigation.settings")}>
509
509
  <CommandItem
510
510
  value={`setting:agent-page:${t("settings.agentTitle")}`}
511
- onSelect={() => go("/agent")}
511
+ onSelect={() => go("/settings/agent")}
512
512
  keywords={commandPaletteKeywords(
513
513
  t("settings.agentTitle"),
514
514
  "agent",
@@ -205,7 +205,7 @@ function InteractiveLayout({ children }: LayoutProps) {
205
205
  openOnChatRunning={chatHomeHandoffActive}
206
206
  onFullscreenRequest={openAskAgentFullscreen}
207
207
  emptyStateText={t("chat.emptyState")}
208
- agentPageHref="/agent"
208
+ agentPageHref="/settings/agent"
209
209
  suggestions={[
210
210
  t("chat.suggestionArrGrowth"),
211
211
  t("chat.suggestionChurn"),
@@ -13,6 +13,7 @@ import {
13
13
  useAgentSettingsTabs,
14
14
  type SettingsTabItem,
15
15
  } from "@agent-native/core/client/settings";
16
+ import { createCreativeContextAgentTab } from "@agent-native/creative-context/client";
16
17
  import { IconBell } from "@tabler/icons-react";
17
18
  import { useEffect, useMemo, useState } from "react";
18
19
  import { Link } from "react-router";
@@ -136,7 +137,10 @@ export default function Settings() {
136
137
  }
137
138
  />
138
139
  );
139
- const agentSettingsTabs = useAgentSettingsTabs({ agentAdditionalContent });
140
+ const agentSettingsTabs = useAgentSettingsTabs({
141
+ agentAdditionalContent,
142
+ agentAdditionalTabFactories: [createCreativeContextAgentTab],
143
+ });
140
144
 
141
145
  const extraTabs = useMemo<SettingsTabItem[]>(
142
146
  () => [
@@ -1,11 +1,13 @@
1
- import { AgentTabsPage } from "@agent-native/core/client/agent-chat";
2
- import { createCreativeContextAgentTab } from "@agent-native/creative-context/client";
1
+ import { buildLegacyAgentSettingsRoute } from "@agent-native/core/client/navigation";
2
+ import { Navigate, useLocation } from "react-router";
3
3
 
4
4
  export default function AgentRoute() {
5
+ const location = useLocation();
6
+
5
7
  return (
6
- <AgentTabsPage
7
- appName="Analytics"
8
- extraTabFactories={[createCreativeContextAgentTab]}
8
+ <Navigate
9
+ to={buildLegacyAgentSettingsRoute(location.hash, location.search)}
10
+ replace
9
11
  />
10
12
  );
11
13
  }
@@ -165,7 +165,7 @@ export function Layout({ children }: LayoutProps) {
165
165
  openOnChatRunning={chatHomeHandoffActive}
166
166
  onFullscreenRequest={openCreateChatFullscreen}
167
167
  emptyStateText={t("chat.emptyState")}
168
- agentPageHref="/agent"
168
+ agentPageHref="/settings/agent"
169
169
  suggestions={[
170
170
  t("chat.suggestionBlogHeroes"),
171
171
  t("chat.suggestionProductVideo"),
@@ -1,11 +1,13 @@
1
- import { AgentTabsPage } from "@agent-native/core/client/agent-chat";
2
- import { createCreativeContextAgentTab } from "@agent-native/creative-context/client";
1
+ import { buildLegacyAgentSettingsRoute } from "@agent-native/core/client/navigation";
2
+ import { Navigate, useLocation } from "react-router";
3
3
 
4
4
  export default function AgentRoute() {
5
+ const location = useLocation();
6
+
5
7
  return (
6
- <AgentTabsPage
7
- appName="Assets"
8
- extraTabFactories={[createCreativeContextAgentTab]}
8
+ <Navigate
9
+ to={buildLegacyAgentSettingsRoute(location.hash, location.search)}
10
+ replace
9
11
  />
10
12
  );
11
13
  }
@@ -18,7 +18,10 @@ import {
18
18
  useBuilderStatus,
19
19
  type SettingsSearchEntry,
20
20
  } from "@agent-native/core/client/settings";
21
- import { CreativeContextSettingsLink } from "@agent-native/creative-context/client";
21
+ import {
22
+ CreativeContextSettingsLink,
23
+ createCreativeContextAgentTab,
24
+ } from "@agent-native/creative-context/client";
22
25
  import {
23
26
  IconAlertCircle,
24
27
  IconCheck,
@@ -87,7 +90,9 @@ type FormOnboardingMethod = Extract<OnboardingMethod, { kind: "form" }>;
87
90
 
88
91
  export default function SettingsPage() {
89
92
  const t = useT();
90
- const agentSettingsTabs = useAgentSettingsTabs();
93
+ const agentSettingsTabs = useAgentSettingsTabs({
94
+ agentAdditionalTabFactories: [createCreativeContextAgentTab],
95
+ });
91
96
  const { data } = useActionQuery("list-libraries", { compact: true }) as {
92
97
  data?: { count?: number };
93
98
  };
@@ -191,7 +191,7 @@ registerOnboardingStep({
191
191
  kind: "link",
192
192
  primary: true,
193
193
  label: "Open Library",
194
- payload: { url: "/agent#library", external: false },
194
+ payload: { url: "/settings/library", external: false },
195
195
  },
196
196
  ],
197
197
  isComplete: async () => {
@@ -137,7 +137,7 @@ export function Layout({ children }: { children: React.ReactNode }) {
137
137
  openOnChatRunning={chatHomeHandoffActive}
138
138
  onFullscreenRequest={openAskAgentFullscreen}
139
139
  emptyStateText={t("chat.emptyState")}
140
- agentPageHref="/agent"
140
+ agentPageHref="/settings/agent"
141
141
  suggestions={[
142
142
  t("chat.suggestionSecurity"),
143
143
  t("chat.suggestionStaleFacts"),
@@ -1050,7 +1050,9 @@ export function viewFromPath(pathname: string): BrainView {
1050
1050
  if (pathname.startsWith("/review")) return "review";
1051
1051
  if (pathname.startsWith("/sources")) return "sources";
1052
1052
  if (pathname.startsWith("/ops")) return "ops";
1053
- if (pathname.startsWith("/agent")) return "agent";
1053
+ if (pathname.startsWith("/settings/agent") || pathname.startsWith("/agent")) {
1054
+ return "agent";
1055
+ }
1054
1056
  if (pathname.startsWith("/settings")) return "settings";
1055
1057
  return "ask";
1056
1058
  }
@@ -1070,7 +1072,7 @@ export function pathFromView(view?: string): string {
1070
1072
  case "ops":
1071
1073
  return "/ops";
1072
1074
  case "agent":
1073
- return "/agent";
1075
+ return "/settings/agent";
1074
1076
  case "settings":
1075
1077
  return "/settings";
1076
1078
  case "ask":
@@ -183,7 +183,7 @@ function AppContent() {
183
183
  {t("navigation.settings")}
184
184
  </CommandMenu.Item>
185
185
  <CommandMenu.Item
186
- onSelect={() => navigate("/agent")}
186
+ onSelect={() => navigate("/settings/agent")}
187
187
  keywords={[
188
188
  "agent",
189
189
  "context",
@@ -1,4 +1,5 @@
1
- import { AgentTabsPage } from "@agent-native/core/client/agent-chat";
1
+ import { buildLegacyAgentSettingsRoute } from "@agent-native/core/client/navigation";
2
+ import { Navigate, useLocation } from "react-router";
2
3
 
3
4
  import { messagesByLocale } from "@/i18n-data";
4
5
 
@@ -7,5 +8,12 @@ export function meta() {
7
8
  }
8
9
 
9
10
  export default function AgentRoute() {
10
- return <AgentTabsPage appName="Brain" />;
11
+ const location = useLocation();
12
+
13
+ return (
14
+ <Navigate
15
+ to={buildLegacyAgentSettingsRoute(location.hash, location.search)}
16
+ replace
17
+ />
18
+ );
11
19
  }
@@ -394,7 +394,7 @@ export function AppLayout({ children }: AppLayoutProps) {
394
394
  position="right"
395
395
  defaultOpen={false}
396
396
  emptyStateText={t("agentSidebar.emptyState")}
397
- agentPageHref="/agent"
397
+ agentPageHref="/settings/agent"
398
398
  suggestions={[
399
399
  t("agentSidebar.suggestions.today"),
400
400
  t("agentSidebar.suggestions.findSlot"),
@@ -223,7 +223,7 @@ function AppContent() {
223
223
  {t("root.commandSearch")}
224
224
  </CommandMenu.Item>
225
225
  <CommandMenu.Item
226
- onSelect={() => navigate("/agent")}
226
+ onSelect={() => navigate("/settings/agent")}
227
227
  keywords={[
228
228
  "agent",
229
229
  "context",
@@ -1,8 +1,6 @@
1
- import { AgentTabsPage } from "@agent-native/core/client/agent-chat";
2
- import { useT } from "@agent-native/core/client/i18n";
3
- import { useMemo } from "react";
1
+ import { buildLegacyAgentSettingsRoute } from "@agent-native/core/client/navigation";
2
+ import { Navigate, useLocation } from "react-router";
4
3
 
5
- import { useAppHeaderControls } from "@/components/layout/AppLayout";
6
4
  import { messagesByLocale } from "@/i18n-data";
7
5
 
8
6
  export function meta() {
@@ -10,17 +8,11 @@ export function meta() {
10
8
  }
11
9
 
12
10
  export default function AgentRoute() {
13
- const t = useT();
14
- const controls = useMemo(
15
- () => ({
16
- left: (
17
- <h1 className="truncate text-lg font-semibold tracking-tight">
18
- {t("settings.agentTitle")}
19
- </h1>
20
- ),
21
- }),
22
- [t],
11
+ const location = useLocation();
12
+ return (
13
+ <Navigate
14
+ to={buildLegacyAgentSettingsRoute(location.hash, location.search)}
15
+ replace
16
+ />
23
17
  );
24
- useAppHeaderControls(controls);
25
- return <AgentTabsPage appName="Calendar" />;
26
18
  }
@@ -42,7 +42,10 @@ function viewForPath(pathname: string): string {
42
42
  if (pathname.startsWith("/database")) return "database";
43
43
  if (pathname.startsWith("/extensions")) return "extensions";
44
44
  if (pathname.startsWith("/observability")) return "observability";
45
- if (pathname.startsWith("/agent")) return "agent";
45
+ if (pathname.startsWith("/settings/agent") || pathname.startsWith("/agent")) {
46
+ return "agent";
47
+ }
48
+ if (pathname.startsWith("/settings")) return "settings";
46
49
  if (pathname.startsWith("/team")) return "settings";
47
50
  return "chat";
48
51
  }
@@ -60,7 +63,7 @@ function pathForView(view?: string): string {
60
63
  case "observability":
61
64
  return "/observability";
62
65
  case "agent":
63
- return "/agent";
66
+ return "/settings/agent";
64
67
  case "settings":
65
68
  return "/settings";
66
69
  case "team":
@@ -1,5 +1,4 @@
1
- import { useT } from "@agent-native/core/client/i18n";
2
- import { useSetPageTitle } from "@agent-native/toolkit/app-shell";
1
+ import { buildLegacyAgentSettingsRoute } from "@agent-native/core/client/navigation";
3
2
  import { Navigate, useLocation } from "react-router";
4
3
 
5
4
  export function meta() {
@@ -7,34 +6,11 @@ export function meta() {
7
6
  }
8
7
 
9
8
  export default function AgentRoute() {
10
- const t = useT();
11
9
  const location = useLocation();
12
- useSetPageTitle(t("settings.agentTitle"));
13
-
14
- const legacyTab = location.hash.replace(/^#/, "").toLowerCase();
15
- const resourceTabs = new Set([
16
- "files",
17
- "instructions",
18
- "agents",
19
- "memory",
20
- "skills",
21
- "learnings",
22
- ]);
23
- const destination = resourceTabs.has(legacyTab)
24
- ? `/settings/agent/resources/${legacyTab}`
25
- : legacyTab === "remote-agents"
26
- ? "/settings/agent/agents"
27
- : legacyTab === "connections"
28
- ? "/settings/integrations"
29
- : legacyTab === "jobs"
30
- ? "/settings/agent/automations"
31
- : legacyTab === "access"
32
- ? "/settings/agent"
33
- : ["llm", "app-models", "limits", "voice", "background"].includes(
34
- legacyTab,
35
- )
36
- ? `/settings/agent/${legacyTab}`
37
- : "/settings/agent";
38
-
39
- return <Navigate to={destination} replace />;
10
+ return (
11
+ <Navigate
12
+ to={buildLegacyAgentSettingsRoute(location.hash, location.search)}
13
+ replace
14
+ />
15
+ );
40
16
  }
@@ -722,7 +722,7 @@ export function LibraryLayout({ children }: LibraryLayoutProps) {
722
722
  t("navigation.agentSuggestionPricing"),
723
723
  t("navigation.agentSuggestionFiller"),
724
724
  ]}
725
- agentPageHref="/agent"
725
+ agentPageHref="/settings/agent"
726
726
  scope={recordingScope}
727
727
  browserTabId={getBrowserTabId()}
728
728
  >
@@ -369,7 +369,7 @@ function AppContent() {
369
369
  changelogKey="clips"
370
370
  >
371
371
  <CommandMenu.Group heading={t("root.commandActions")}>
372
- <CommandMenu.Item onSelect={() => navigate("/agent")}>
372
+ <CommandMenu.Item onSelect={() => navigate("/settings/agent")}>
373
373
  <IconHierarchy2 size={16} />
374
374
  {t("root.openAgent")}
375
375
  </CommandMenu.Item>
@@ -1,6 +1,5 @@
1
- import { AgentTabsPage } from "@agent-native/core/client/agent-chat";
2
- import { useT } from "@agent-native/core/client/i18n";
3
- import { useSetPageTitle } from "@agent-native/toolkit/app-shell";
1
+ import { buildLegacyAgentSettingsRoute } from "@agent-native/core/client/navigation";
2
+ import { Navigate, useLocation } from "react-router";
4
3
 
5
4
  import messages from "@/i18n/en-US";
6
5
 
@@ -9,8 +8,11 @@ export function meta() {
9
8
  }
10
9
 
11
10
  export default function AgentRoute() {
12
- const t = useT();
13
- useSetPageTitle(t("settings.agentTitle"));
14
-
15
- return <AgentTabsPage />;
11
+ const location = useLocation();
12
+ return (
13
+ <Navigate
14
+ to={buildLegacyAgentSettingsRoute(location.hash, location.search)}
15
+ replace
16
+ />
17
+ );
16
18
  }
@@ -192,7 +192,7 @@ export function Layout({ children }: LayoutProps) {
192
192
  <AgentSidebar
193
193
  position="right"
194
194
  defaultOpen={false}
195
- agentPageHref="/agent"
195
+ agentPageHref="/settings/agent"
196
196
  emptyStateText={t("chat.emptyState")}
197
197
  suggestions={[
198
198
  t("chat.suggestionPrd"),
@@ -570,7 +570,7 @@ function ContentCommandMenu({
570
570
  )}
571
571
  >
572
572
  <CommandMenu.Group heading={t("root.commandContent")}>
573
- <CommandMenu.Item onSelect={() => navigate("/agent")}>
573
+ <CommandMenu.Item onSelect={() => navigate("/settings/agent")}>
574
574
  <IconHierarchy2 size={16} />
575
575
  {t("root.openAgent")}
576
576
  </CommandMenu.Item>
@@ -1,7 +1,5 @@
1
- import { AgentTabsPage } from "@agent-native/core/client/agent-chat";
2
- import { useT } from "@agent-native/core/client/i18n";
3
- import { createCreativeContextAgentTab } from "@agent-native/creative-context/client";
4
- import { useSetPageTitle } from "@agent-native/toolkit/app-shell";
1
+ import { buildLegacyAgentSettingsRoute } from "@agent-native/core/client/navigation";
2
+ import { Navigate, useLocation } from "react-router";
5
3
 
6
4
  import { messagesByLocale } from "@/i18n-data";
7
5
 
@@ -10,8 +8,11 @@ export function meta() {
10
8
  }
11
9
 
12
10
  export default function AgentRoute() {
13
- const t = useT();
14
- useSetPageTitle(t("settings.agentTitle"));
15
-
16
- return <AgentTabsPage extraTabFactories={[createCreativeContextAgentTab]} />;
11
+ const location = useLocation();
12
+ return (
13
+ <Navigate
14
+ to={buildLegacyAgentSettingsRoute(location.hash, location.search)}
15
+ replace
16
+ />
17
+ );
17
18
  }
@@ -9,7 +9,10 @@ import {
9
9
  useAgentSettingsTabs,
10
10
  type SettingsSearchEntry,
11
11
  } from "@agent-native/core/client/settings";
12
- import { CreativeContextSettingsLink } from "@agent-native/creative-context/client";
12
+ import {
13
+ CreativeContextSettingsLink,
14
+ createCreativeContextAgentTab,
15
+ } from "@agent-native/creative-context/client";
13
16
  import { useSetPageTitle } from "@agent-native/toolkit/app-shell";
14
17
  import { useMemo } from "react";
15
18
  import { toast } from "sonner";
@@ -26,7 +29,9 @@ export function meta() {
26
29
 
27
30
  export default function SettingsRoute() {
28
31
  const t = useT();
29
- const agentSettingsTabs = useAgentSettingsTabs();
32
+ const agentSettingsTabs = useAgentSettingsTabs({
33
+ agentAdditionalTabFactories: [createCreativeContextAgentTab],
34
+ });
30
35
  useSetPageTitle(t("settings.title"));
31
36
  const { prefs, loading: prefsLoading, save: savePrefs } = useContentPrefs();
32
37
 
@@ -20,7 +20,7 @@ registerOnboardingStep({
20
20
  kind: "link",
21
21
  primary: true,
22
22
  label: "Open Library",
23
- payload: { url: "/agent#library", external: false },
23
+ payload: { url: "/settings/library", external: false },
24
24
  },
25
25
  ],
26
26
  isComplete: async () => {
@@ -601,7 +601,10 @@ function CallEvidenceAutomationDialog({ record }: { record: CrmRecordDetail }) {
601
601
  </div>
602
602
  <DialogFooter className="flex-row flex-wrap justify-end gap-2 sm:justify-end">
603
603
  <Button asChild variant="ghost" size="sm" className="gap-1.5">
604
- <Link to="/agent#jobs" onClick={() => setOpen(false)}>
604
+ <Link
605
+ to="/settings/agent/automations"
606
+ onClick={() => setOpen(false)}
607
+ >
605
608
  <IconExternalLink className="size-4" />{" "}
606
609
  {t("recordActions.manageAutomations")}
607
610
  </Link>
@@ -121,7 +121,7 @@ export function CrmLayout({ children }: { children: React.ReactNode }) {
121
121
  "Summarize this account",
122
122
  "Which opportunities need attention?",
123
123
  ]}
124
- agentPageHref="/agent"
124
+ agentPageHref="/settings/agent"
125
125
  >
126
126
  {shell}
127
127
  </AgentSidebar>
@@ -1,5 +1,13 @@
1
- import { AgentTabsPage } from "@agent-native/core/client/agent-chat";
1
+ import { buildLegacyAgentSettingsRoute } from "@agent-native/core/client/navigation";
2
+ import { Navigate, useLocation } from "react-router";
2
3
 
3
4
  export default function AgentRoute() {
4
- return <AgentTabsPage appName="CRM" />;
5
+ const location = useLocation();
6
+
7
+ return (
8
+ <Navigate
9
+ to={buildLegacyAgentSettingsRoute(location.hash, location.search)}
10
+ replace
11
+ />
12
+ );
5
13
  }
@@ -153,7 +153,7 @@ export function Layout({ children }: LayoutProps) {
153
153
  <AgentSidebar
154
154
  position="right"
155
155
  storageKey={DESIGN_CHAT_STORAGE_KEY}
156
- agentPageHref="/agent"
156
+ agentPageHref="/settings/agent"
157
157
  emptyStateText={t("chat.emptyState")}
158
158
  suggestions={[
159
159
  t("chat.suggestionLandingPage"),
@@ -145,7 +145,7 @@ function DesignCommandMenu({
145
145
  changelogKey="design"
146
146
  >
147
147
  <CommandMenu.Group heading={t("root.commandActions")}>
148
- <CommandMenu.Item onSelect={() => navigate("/agent")}>
148
+ <CommandMenu.Item onSelect={() => navigate("/settings/agent")}>
149
149
  <IconHierarchy2 size={16} />
150
150
  {t("root.openAgent")}
151
151
  </CommandMenu.Item>
@@ -1,7 +1,5 @@
1
- import { AgentTabsPage } from "@agent-native/core/client/agent-chat";
2
- import { useT } from "@agent-native/core/client/i18n";
3
- import { createCreativeContextAgentTab } from "@agent-native/creative-context/client";
4
- import { useSetPageTitle } from "@agent-native/toolkit/app-shell";
1
+ import { buildLegacyAgentSettingsRoute } from "@agent-native/core/client/navigation";
2
+ import { Navigate, useLocation } from "react-router";
5
3
 
6
4
  import messages from "@/i18n/en-US";
7
5
 
@@ -10,8 +8,12 @@ export function meta() {
10
8
  }
11
9
 
12
10
  export default function AgentRoute() {
13
- const t = useT();
14
- useSetPageTitle(t("settings.agentTitle"));
11
+ const location = useLocation();
15
12
 
16
- return <AgentTabsPage extraTabFactories={[createCreativeContextAgentTab]} />;
13
+ return (
14
+ <Navigate
15
+ to={buildLegacyAgentSettingsRoute(location.hash, location.search)}
16
+ replace
17
+ />
18
+ );
17
19
  }
@@ -9,7 +9,10 @@ import {
9
9
  useAgentSettingsTabs,
10
10
  type SettingsSearchEntry,
11
11
  } from "@agent-native/core/client/settings";
12
- import { CreativeContextSettingsLink } from "@agent-native/creative-context/client";
12
+ import {
13
+ CreativeContextSettingsLink,
14
+ createCreativeContextAgentTab,
15
+ } from "@agent-native/creative-context/client";
13
16
  import { useMemo } from "react";
14
17
 
15
18
  import { messagesByLocale } from "@/i18n-data";
@@ -21,7 +24,9 @@ export function meta() {
21
24
  }
22
25
 
23
26
  export default function SettingsRoute() {
24
- const agentSettingsTabs = useAgentSettingsTabs();
27
+ const agentSettingsTabs = useAgentSettingsTabs({
28
+ agentAdditionalTabFactories: [createCreativeContextAgentTab],
29
+ });
25
30
  const t = useT();
26
31
 
27
32
  const generalSearchEntries = useMemo<SettingsSearchEntry[]>(
@@ -20,7 +20,7 @@ registerOnboardingStep({
20
20
  kind: "link",
21
21
  primary: true,
22
22
  label: "Open Library",
23
- payload: { url: "/agent#library", external: false },
23
+ payload: { url: "/settings/library", external: false },
24
24
  },
25
25
  ],
26
26
  isComplete: async () => {
@@ -191,7 +191,7 @@ function AppContent() {
191
191
  changelogKey="dispatch"
192
192
  >
193
193
  <CommandMenu.Group heading={t("root.commandActions")}>
194
- <CommandMenu.Item onSelect={() => navigate("/agent")}>
194
+ <CommandMenu.Item onSelect={() => navigate("/settings/agent")}>
195
195
  <IconHierarchy2 size={16} />
196
196
  {t("root.openAgent")}
197
197
  </CommandMenu.Item>
@@ -203,7 +203,10 @@ function AppContent() {
203
203
  <ThemeToggleItem />
204
204
  </CommandMenu.Group>
205
205
  </CommandMenu>
206
- <AppLayout extensions={dispatchExtensions} agentPageHref="/agent">
206
+ <AppLayout
207
+ extensions={dispatchExtensions}
208
+ agentPageHref="/settings/agent"
209
+ >
207
210
  <Outlet />
208
211
  </AppLayout>
209
212
  </>
@@ -1,6 +1,5 @@
1
- import { AgentTabsPage } from "@agent-native/core/client/agent-chat";
2
- import { useT } from "@agent-native/core/client/i18n";
3
- import { DispatchShell } from "@agent-native/dispatch/components";
1
+ import { buildLegacyAgentSettingsRoute } from "@agent-native/core/client/navigation";
2
+ import { Navigate, useLocation } from "react-router";
4
3
 
5
4
  import { messagesByLocale } from "@/i18n-data";
6
5
 
@@ -9,11 +8,12 @@ export function meta() {
9
8
  }
10
9
 
11
10
  export default function AgentRoute() {
12
- const t = useT();
11
+ const location = useLocation();
13
12
 
14
13
  return (
15
- <DispatchShell title={t("settings.agentTitle")}>
16
- <AgentTabsPage />
17
- </DispatchShell>
14
+ <Navigate
15
+ to={buildLegacyAgentSettingsRoute(location.hash, location.search)}
16
+ replace
17
+ />
18
18
  );
19
19
  }
@@ -174,7 +174,7 @@ export function Layout({ children }: LayoutProps) {
174
174
  openOnChatRunning={chatHomeHandoffActive}
175
175
  onFullscreenRequest={openAskAgentFullscreen}
176
176
  emptyStateText={t("chat.inspectEmptyState")}
177
- agentPageHref="/agent"
177
+ agentPageHref="/settings/agent"
178
178
  suggestions={[
179
179
  t("chat.inspectSuggestionCapabilities"),
180
180
  t("chat.inspectSuggestionHello"),
@@ -67,7 +67,10 @@ function viewForPath(pathname: string): string {
67
67
  if (pathname.startsWith("/extensions")) return "extensions";
68
68
  if (pathname.startsWith("/observability")) return "observability";
69
69
  if (pathname.startsWith("/factory")) return "factory";
70
- if (pathname.startsWith("/agent")) return "agent";
70
+ if (pathname.startsWith("/settings/agent") || pathname.startsWith("/agent")) {
71
+ return "agent";
72
+ }
73
+ if (pathname.startsWith("/settings")) return "settings";
71
74
  if (pathname.startsWith("/team")) return "settings";
72
75
  return "chat";
73
76
  }
@@ -87,7 +90,7 @@ function pathForView(view?: string): string {
87
90
  case "factory":
88
91
  return "/factory";
89
92
  case "agent":
90
- return "/agent";
93
+ return "/settings/agent";
91
94
  case "settings":
92
95
  return "/settings";
93
96
  case "team":