@agent-native/core 0.146.3 → 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 (283) hide show
  1. package/corpus/README.md +1 -1
  2. package/corpus/templates/analytics/.agents/skills/dashboard-management/SKILL.md +13 -10
  3. package/corpus/templates/analytics/.agents/skills/self-modifying-code/SKILL.md +7 -3
  4. package/corpus/templates/analytics/.agents/skills/upgrade-agent-native/SKILL.md +5 -2
  5. package/corpus/templates/analytics/actions/compose-dashboard.ts +53 -6
  6. package/corpus/templates/analytics/actions/dashboard-mutation-api.ts +8 -2
  7. package/corpus/templates/analytics/actions/migrate-first-party-analytics-to-bigquery.ts +3 -1
  8. package/corpus/templates/analytics/actions/mutate-dashboard.ts +48 -9
  9. package/corpus/templates/analytics/actions/update-dashboard.ts +80 -6
  10. package/corpus/templates/analytics/app/components/layout/CommandPalette.tsx +1 -1
  11. package/corpus/templates/analytics/app/components/layout/Layout.tsx +1 -1
  12. package/corpus/templates/analytics/app/pages/Settings.tsx +5 -1
  13. package/corpus/templates/analytics/app/routes/agent.tsx +7 -5
  14. package/corpus/templates/analytics/changelog/2026-08-07-dashboard-creation-and-edits-now-save-faster-with-reliable-s.md +6 -0
  15. package/corpus/templates/analytics/seeds/dashboards/agent-native-templates-first-party.json +19 -19
  16. package/corpus/templates/analytics/server/jobs/analytics-bigquery-backfill.ts +21 -2
  17. package/corpus/templates/analytics/server/lib/bigquery.ts +59 -24
  18. package/corpus/templates/analytics/server/lib/canonical-first-party-dashboard-repair.ts +44 -8
  19. package/corpus/templates/analytics/server/lib/dashboard-catalog.ts +3 -5
  20. package/corpus/templates/analytics/server/lib/first-party-analytics-backend.ts +33 -69
  21. package/corpus/templates/analytics/server/lib/first-party-metric-catalog.ts +90 -24
  22. package/corpus/templates/analytics/server/lib/real-data-actions.ts +1 -1
  23. package/corpus/templates/analytics/server/plugins/agent-chat.ts +17 -2
  24. package/corpus/templates/analytics/shared/dashboard-report-timeouts.ts +2 -0
  25. package/corpus/templates/assets/.agents/skills/self-modifying-code/SKILL.md +7 -3
  26. package/corpus/templates/assets/.agents/skills/upgrade-agent-native/SKILL.md +5 -2
  27. package/corpus/templates/assets/app/components/layout/Layout.tsx +1 -1
  28. package/corpus/templates/assets/app/routes/agent.tsx +7 -5
  29. package/corpus/templates/assets/app/routes/settings.tsx +7 -2
  30. package/corpus/templates/assets/netlify.toml +1 -1
  31. package/corpus/templates/assets/package.json +1 -0
  32. package/corpus/templates/assets/scripts/migrate-production.ts +24 -0
  33. package/corpus/templates/assets/server/plugins/creative-context.ts +1 -1
  34. package/corpus/templates/assets/server/plugins/db.ts +1 -1
  35. package/corpus/templates/assets/tsconfig.json +1 -0
  36. package/corpus/templates/brain/.agents/skills/self-modifying-code/SKILL.md +7 -3
  37. package/corpus/templates/brain/.agents/skills/upgrade-agent-native/SKILL.md +5 -2
  38. package/corpus/templates/brain/app/components/layout/Layout.tsx +1 -1
  39. package/corpus/templates/brain/app/lib/brain.ts +4 -2
  40. package/corpus/templates/brain/app/root.tsx +1 -1
  41. package/corpus/templates/brain/app/routes/agent.tsx +10 -2
  42. package/corpus/templates/brain/netlify.toml +1 -1
  43. package/corpus/templates/brain/package.json +2 -0
  44. package/corpus/templates/brain/scripts/migrate-production.ts +24 -0
  45. package/corpus/templates/brain/server/plugins/db.ts +1 -1
  46. package/corpus/templates/brain/tsconfig.json +1 -0
  47. package/corpus/templates/calendar/.agents/skills/self-modifying-code/SKILL.md +7 -3
  48. package/corpus/templates/calendar/.agents/skills/upgrade-agent-native/SKILL.md +5 -2
  49. package/corpus/templates/calendar/app/components/layout/AppLayout.tsx +1 -1
  50. package/corpus/templates/calendar/app/root.tsx +1 -1
  51. package/corpus/templates/calendar/app/routes/_app.agent.tsx +8 -16
  52. package/corpus/templates/calendar/netlify.toml +1 -1
  53. package/corpus/templates/calendar/package.json +1 -0
  54. package/corpus/templates/calendar/scripts/migrate-production.ts +24 -0
  55. package/corpus/templates/calendar/server/plugins/db.ts +1 -1
  56. package/corpus/templates/calendar/tsconfig.json +1 -0
  57. package/corpus/templates/chat/.agents/skills/self-modifying-code/SKILL.md +7 -3
  58. package/corpus/templates/chat/.agents/skills/upgrade-agent-native/SKILL.md +5 -2
  59. package/corpus/templates/chat/app/hooks/use-navigation-state.ts +5 -2
  60. package/corpus/templates/chat/app/routes/agent.tsx +7 -31
  61. package/corpus/templates/chat/netlify.toml +1 -1
  62. package/corpus/templates/chat/package.json +1 -0
  63. package/corpus/templates/chat/scripts/migrate-production.ts +31 -0
  64. package/corpus/templates/chat/tsconfig.json +1 -0
  65. package/corpus/templates/clips/.agents/skills/self-modifying-code/SKILL.md +7 -3
  66. package/corpus/templates/clips/.agents/skills/upgrade-agent-native/SKILL.md +5 -2
  67. package/corpus/templates/clips/app/components/library/library-layout.tsx +1 -1
  68. package/corpus/templates/clips/app/root.tsx +1 -1
  69. package/corpus/templates/clips/app/routes/_app.agent.tsx +9 -7
  70. package/corpus/templates/clips/netlify.toml +1 -1
  71. package/corpus/templates/clips/package.json +1 -0
  72. package/corpus/templates/clips/scripts/migrate-production.ts +24 -0
  73. package/corpus/templates/clips/server/plugins/db.ts +1 -1
  74. package/corpus/templates/clips/tsconfig.json +1 -0
  75. package/corpus/templates/content/.agents/skills/self-modifying-code/SKILL.md +7 -3
  76. package/corpus/templates/content/.agents/skills/upgrade-agent-native/SKILL.md +5 -2
  77. package/corpus/templates/content/app/components/layout/Layout.tsx +1 -1
  78. package/corpus/templates/content/app/root.tsx +1 -1
  79. package/corpus/templates/content/app/routes/_app.agent.tsx +9 -8
  80. package/corpus/templates/content/app/routes/_app.settings.tsx +7 -2
  81. package/corpus/templates/content/netlify.toml +1 -1
  82. package/corpus/templates/content/package.json +2 -0
  83. package/corpus/templates/content/scripts/migrate-production.ts +28 -0
  84. package/corpus/templates/content/server/plugins/creative-context.ts +1 -1
  85. package/corpus/templates/content/server/plugins/db.ts +2 -2
  86. package/corpus/templates/crm/.agents/skills/upgrade-agent-native/SKILL.md +5 -2
  87. package/corpus/templates/crm/app/components/crm/RecordActions.tsx +4 -1
  88. package/corpus/templates/crm/app/components/layout/CrmLayout.tsx +1 -1
  89. package/corpus/templates/crm/app/routes/agent.tsx +10 -2
  90. package/corpus/templates/crm/netlify.toml +1 -1
  91. package/corpus/templates/crm/package.json +2 -0
  92. package/corpus/templates/crm/scripts/migrate-production.ts +24 -0
  93. package/corpus/templates/crm/server/plugins/db.ts +1 -1
  94. package/corpus/templates/crm/tsconfig.json +1 -0
  95. package/corpus/templates/design/.agents/skills/self-modifying-code/SKILL.md +7 -3
  96. package/corpus/templates/design/.agents/skills/upgrade-agent-native/SKILL.md +5 -2
  97. package/corpus/templates/design/app/components/layout/Layout.tsx +1 -1
  98. package/corpus/templates/design/app/root.tsx +1 -1
  99. package/corpus/templates/design/app/routes/agent.tsx +9 -7
  100. package/corpus/templates/design/app/routes/settings.tsx +7 -2
  101. package/corpus/templates/design/netlify.toml +1 -1
  102. package/corpus/templates/design/package.json +1 -0
  103. package/corpus/templates/design/scripts/migrate-production.ts +24 -0
  104. package/corpus/templates/design/server/plugins/creative-context.ts +1 -1
  105. package/corpus/templates/design/server/plugins/db.ts +1 -1
  106. package/corpus/templates/design/tsconfig.json +1 -0
  107. package/corpus/templates/dispatch/.agents/skills/self-modifying-code/SKILL.md +7 -3
  108. package/corpus/templates/dispatch/.agents/skills/upgrade-agent-native/SKILL.md +5 -2
  109. package/corpus/templates/dispatch/app/root.tsx +5 -2
  110. package/corpus/templates/dispatch/app/routes/agent.tsx +7 -7
  111. package/corpus/templates/dispatch/netlify.toml +1 -1
  112. package/corpus/templates/dispatch/package.json +1 -0
  113. package/corpus/templates/dispatch/scripts/migrate-production.ts +23 -0
  114. package/corpus/templates/dispatch/tsconfig.json +1 -0
  115. package/corpus/templates/factory/.agents/skills/self-modifying-code/SKILL.md +7 -3
  116. package/corpus/templates/factory/.agents/skills/upgrade-agent-native/SKILL.md +5 -2
  117. package/corpus/templates/factory/app/components/layout/Layout.tsx +1 -1
  118. package/corpus/templates/factory/app/hooks/use-navigation-state.ts +5 -2
  119. package/corpus/templates/factory/app/root.tsx +1 -1
  120. package/corpus/templates/factory/app/routes/agent.tsx +9 -14
  121. package/corpus/templates/factory/netlify.toml +1 -1
  122. package/corpus/templates/factory/package.json +1 -0
  123. package/corpus/templates/factory/scripts/migrate-production.ts +31 -0
  124. package/corpus/templates/factory/server/plugins/factory-scheduler-job.ts +2 -0
  125. package/corpus/templates/factory/tsconfig.json +1 -0
  126. package/corpus/templates/forms/.agents/skills/self-modifying-code/SKILL.md +7 -3
  127. package/corpus/templates/forms/.agents/skills/upgrade-agent-native/SKILL.md +5 -2
  128. package/corpus/templates/forms/app/components/layout/Layout.tsx +1 -1
  129. package/corpus/templates/forms/app/root.tsx +1 -1
  130. package/corpus/templates/forms/app/routes/_app.agent.tsx +9 -7
  131. package/corpus/templates/forms/netlify.toml +1 -1
  132. package/corpus/templates/forms/package.json +2 -0
  133. package/corpus/templates/forms/scripts/migrate-production.ts +24 -0
  134. package/corpus/templates/forms/server/plugins/db.ts +1 -1
  135. package/corpus/templates/forms/tsconfig.json +1 -0
  136. package/corpus/templates/macros/.agents/skills/upgrade-agent-native/SKILL.md +5 -2
  137. package/corpus/templates/macros/app/components/layout/AppLayout.tsx +5 -3
  138. package/corpus/templates/macros/app/root.tsx +1 -1
  139. package/corpus/templates/macros/app/routes/agent.tsx +9 -6
  140. package/corpus/templates/macros/netlify.toml +1 -1
  141. package/corpus/templates/macros/package.json +1 -0
  142. package/corpus/templates/macros/scripts/migrate-production.ts +24 -0
  143. package/corpus/templates/macros/server/plugins/db.ts +1 -1
  144. package/corpus/templates/macros/tsconfig.json +1 -0
  145. package/corpus/templates/mail/.agents/skills/self-modifying-code/SKILL.md +7 -3
  146. package/corpus/templates/mail/.agents/skills/upgrade-agent-native/SKILL.md +5 -2
  147. package/corpus/templates/mail/app/components/layout/AppLayout.tsx +8 -2
  148. package/corpus/templates/mail/app/components/layout/CommandPalette.tsx +1 -1
  149. package/corpus/templates/mail/app/routes/agent.tsx +9 -6
  150. package/corpus/templates/mail/netlify.toml +1 -1
  151. package/corpus/templates/mail/package.json +1 -0
  152. package/corpus/templates/mail/scripts/migrate-production.ts +24 -0
  153. package/corpus/templates/mail/server/plugins/db.ts +1 -1
  154. package/corpus/templates/mail/tsconfig.json +1 -0
  155. package/corpus/templates/plan/.agents/skills/self-modifying-code/SKILL.md +7 -3
  156. package/corpus/templates/plan/.agents/skills/upgrade-agent-native/SKILL.md +5 -2
  157. package/corpus/templates/plan/app/components/layout/Layout.tsx +1 -1
  158. package/corpus/templates/plan/app/root.tsx +1 -1
  159. package/corpus/templates/plan/app/routes/agent.tsx +9 -6
  160. package/corpus/templates/plan/netlify.toml +1 -1
  161. package/corpus/templates/plan/package.json +1 -0
  162. package/corpus/templates/plan/scripts/migrate-production.ts +24 -0
  163. package/corpus/templates/plan/server/plugins/00-mcp.ts +3 -2
  164. package/corpus/templates/plan/server/plugins/db.ts +1 -1
  165. package/corpus/templates/plan/tsconfig.json +1 -0
  166. package/corpus/templates/slides/.agents/skills/self-modifying-code/SKILL.md +7 -3
  167. package/corpus/templates/slides/.agents/skills/upgrade-agent-native/SKILL.md +5 -2
  168. package/corpus/templates/slides/app/components/editor/ImageGenPanel.tsx +8 -12
  169. package/corpus/templates/slides/app/components/editor/SlideEditor.tsx +39 -2
  170. package/corpus/templates/slides/app/components/layout/Layout.tsx +1 -1
  171. package/corpus/templates/slides/app/i18n/en-US.ts +1 -0
  172. package/corpus/templates/slides/app/lib/create-deck-generation.ts +22 -5
  173. package/corpus/templates/slides/app/pages/Index.tsx +20 -5
  174. package/corpus/templates/slides/app/root.tsx +1 -1
  175. package/corpus/templates/slides/app/routes/agent.tsx +6 -9
  176. package/corpus/templates/slides/app/routes/settings.tsx +7 -2
  177. package/corpus/templates/slides/netlify.toml +1 -1
  178. package/corpus/templates/slides/package.json +1 -0
  179. package/corpus/templates/slides/scripts/migrate-production.ts +24 -0
  180. package/corpus/templates/slides/server/plugins/creative-context.ts +1 -1
  181. package/corpus/templates/slides/server/plugins/db.ts +1 -1
  182. package/corpus/templates/slides/tsconfig.json +1 -0
  183. package/corpus/templates/tasks/.agents/skills/self-modifying-code/SKILL.md +7 -3
  184. package/corpus/templates/tasks/.agents/skills/upgrade-agent-native/SKILL.md +5 -2
  185. package/corpus/templates/tasks/app/components/layout/Layout.tsx +1 -1
  186. package/corpus/templates/tasks/app/routes/agent.tsx +10 -2
  187. package/corpus/templates/tasks/netlify.toml +1 -1
  188. package/corpus/templates/tasks/package.json +1 -0
  189. package/corpus/templates/tasks/scripts/migrate-production.ts +24 -0
  190. package/corpus/templates/tasks/server/plugins/db.ts +1 -1
  191. package/corpus/templates/tasks/tsconfig.json +1 -0
  192. package/dist/action.d.ts +2 -0
  193. package/dist/agent/production-agent.d.ts +1 -0
  194. package/dist/agent/production-agent.js +2 -0
  195. package/dist/agent/thread-data-builder.d.ts +4 -0
  196. package/dist/agent/thread-data-builder.js +44 -0
  197. package/dist/automations/service.d.ts +1 -0
  198. package/dist/automations/service.js +21 -2
  199. package/dist/cli/create.js +20 -2
  200. package/dist/client/agent-page/AgentJobsTab.js +3 -1
  201. package/dist/client/agent-page/AutomationDetailsDialog.js +9 -2
  202. package/dist/client/index.d.ts +1 -1
  203. package/dist/client/navigation/index.d.ts +1 -1
  204. package/dist/client/navigation/index.js +1 -1
  205. package/dist/client/org/OrgSwitcher.js +1 -1
  206. package/dist/client/settings/SettingsPanel.d.ts +8 -0
  207. package/dist/client/settings/SettingsPanel.js +16 -1
  208. package/dist/client/settings/index.d.ts +1 -1
  209. package/dist/collab/struct-routes.d.ts +1 -1
  210. package/dist/db/migrations.js +7 -13
  211. package/dist/file-upload/actions/upload-image.d.ts +1 -1
  212. package/dist/jobs/actions/list-automation-runs.d.ts +1 -0
  213. package/dist/jobs/actions/list-automation-runs.js +9 -2
  214. package/dist/jobs/actions/list-recurring-jobs.js +3 -1
  215. package/dist/jobs/actions/manage-recurring-job.js +1 -1
  216. package/dist/jobs/actions/run-automation-now.js +1 -0
  217. package/dist/jobs/background-automation-runner.js +2 -0
  218. package/dist/jobs/frontmatter.d.ts +2 -0
  219. package/dist/jobs/frontmatter.js +4 -0
  220. package/dist/jobs/run-history.d.ts +4 -0
  221. package/dist/jobs/run-history.js +28 -8
  222. package/dist/jobs/run-now.d.ts +4 -1
  223. package/dist/jobs/run-now.js +4 -3
  224. package/dist/jobs/scheduler.js +18 -0
  225. package/dist/jobs/tools.d.ts +3 -2
  226. package/dist/jobs/tools.js +26 -12
  227. package/dist/localization/default-messages.d.ts +1 -0
  228. package/dist/localization/default-messages.js +1 -0
  229. package/dist/navigation/index.d.ts +1 -0
  230. package/dist/navigation/index.js +34 -0
  231. package/dist/notifications/routes.d.ts +1 -1
  232. package/dist/observability/routes.d.ts +1 -1
  233. package/dist/resources/handlers.d.ts +1 -1
  234. package/dist/server/action-routes.d.ts +2 -0
  235. package/dist/server/action-routes.js +1 -0
  236. package/dist/server/agent-chat-plugin.js +3 -2
  237. package/dist/server/builder-browser.js +24 -8
  238. package/dist/templates/chat/.agents/skills/self-modifying-code/SKILL.md +7 -3
  239. package/dist/templates/chat/.agents/skills/upgrade-agent-native/SKILL.md +5 -2
  240. package/dist/templates/chat/app/hooks/use-navigation-state.ts +5 -2
  241. package/dist/templates/chat/app/routes/agent.tsx +7 -31
  242. package/dist/templates/chat/netlify.toml +1 -1
  243. package/dist/templates/chat/package.json +1 -0
  244. package/dist/templates/chat/scripts/migrate-production.ts +31 -0
  245. package/dist/templates/chat/tsconfig.json +1 -0
  246. package/dist/templates/default/.agents/skills/self-modifying-code/SKILL.md +7 -3
  247. package/dist/templates/default/.agents/skills/upgrade-agent-native/SKILL.md +5 -2
  248. package/dist/templates/default/app/routes/_index.tsx +1 -1
  249. package/dist/templates/default/app/routes/agent.tsx +7 -25
  250. package/dist/templates/default/package.json +1 -0
  251. package/dist/templates/default/scripts/migrate-production.ts +31 -0
  252. package/dist/templates/default/tsconfig.json +1 -0
  253. package/dist/templates/headless/.agents/skills/upgrade-agent-native/SKILL.md +5 -2
  254. package/dist/templates/workspace-core/.agents/skills/self-modifying-code/SKILL.md +7 -3
  255. package/dist/templates/workspace-core/.agents/skills/upgrade-agent-native/SKILL.md +5 -2
  256. package/dist/templates/workspace-root/AGENTS.md +2 -1
  257. package/dist/triggers/actions/list-automations.js +1 -1
  258. package/dist/triggers/actions/manage-automation.js +5 -1
  259. package/dist/triggers/actions.d.ts +1 -1
  260. package/dist/triggers/actions.js +21 -15
  261. package/dist/triggers/dispatcher.js +17 -2
  262. package/dist/triggers/routes.d.ts +1 -0
  263. package/dist/triggers/routes.js +1 -0
  264. package/package.json +3 -3
  265. package/src/templates/chat/.agents/skills/self-modifying-code/SKILL.md +7 -3
  266. package/src/templates/chat/.agents/skills/upgrade-agent-native/SKILL.md +5 -2
  267. package/src/templates/chat/app/hooks/use-navigation-state.ts +5 -2
  268. package/src/templates/chat/app/routes/agent.tsx +7 -31
  269. package/src/templates/chat/netlify.toml +1 -1
  270. package/src/templates/chat/package.json +1 -0
  271. package/src/templates/chat/scripts/migrate-production.ts +31 -0
  272. package/src/templates/chat/tsconfig.json +1 -0
  273. package/src/templates/default/.agents/skills/self-modifying-code/SKILL.md +7 -3
  274. package/src/templates/default/.agents/skills/upgrade-agent-native/SKILL.md +5 -2
  275. package/src/templates/default/app/routes/_index.tsx +1 -1
  276. package/src/templates/default/app/routes/agent.tsx +7 -25
  277. package/src/templates/default/package.json +1 -0
  278. package/src/templates/default/scripts/migrate-production.ts +31 -0
  279. package/src/templates/default/tsconfig.json +1 -0
  280. package/src/templates/headless/.agents/skills/upgrade-agent-native/SKILL.md +5 -2
  281. package/src/templates/workspace-core/.agents/skills/self-modifying-code/SKILL.md +7 -3
  282. package/src/templates/workspace-core/.agents/skills/upgrade-agent-native/SKILL.md +5 -2
  283. package/src/templates/workspace-root/AGENTS.md +2 -1
@@ -15,8 +15,9 @@ metadata:
15
15
 
16
16
  When an older Agent Native app/branch needs to run on current packages, use
17
17
  `agent-native upgrade`. Never "fix" upgrade breakage with
18
- `pnpm.overrides`, `patchedDependencies`, `resolutions`, local patches, or
19
- edits under `node_modules/@agent-native/*` — especially not against
18
+ `pnpm patch`, `pnpm patch-commit`, `pnpm.patchedDependencies`,
19
+ `pnpm.overrides`, `patchedDependencies`, `resolutions`, local patch artifacts,
20
+ or edits under `node_modules/@agent-native/*` — especially not against
20
21
  `@agent-native/core` or `@agent-native/dispatch`.
21
22
 
22
23
  ## Why
@@ -109,6 +110,8 @@ install → refresh scaffold skills → verify, then fix **app** code only.
109
110
 
110
111
  - Don't add `pnpm.overrides`, `overrides`, `resolutions`, or
111
112
  `patchedDependencies` for any `@agent-native/*` package
113
+ - Don't run `pnpm patch` or `pnpm patch-commit`, or commit files under
114
+ `patches/`, for any dependency
112
115
  - Don't edit `node_modules/@agent-native/core` or
113
116
  `node_modules/@agent-native/dispatch`
114
117
  - Don't invent local "dispatch behavior" shims to paper over version skew
@@ -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[]>(
@@ -1,6 +1,6 @@
1
1
  [build]
2
2
  ignore = "node ./scripts/netlify-ignore-build.mjs design"
3
- command = "export DATABASE_URL=${NETLIFY_DATABASE_URL:-$DATABASE_URL} && pnpm install && NITRO_PRESET=netlify pnpm --filter design build"
3
+ command = "export DATABASE_URL=${NETLIFY_DATABASE_URL:-$DATABASE_URL} && pnpm install && NITRO_PRESET=netlify pnpm --filter design build && if [ \"${CONTEXT:-}\" = \"production\" ]; then pnpm --filter design migrate:production; fi"
4
4
  publish = "templates/design/dist"
5
5
  functions = "templates/design/.netlify/functions-internal"
6
6
 
@@ -11,6 +11,7 @@
11
11
  "typecheck": "agent-native typecheck && pnpm exec tsc --noEmit -p app/components/design/bridge/tsconfig.json",
12
12
  "codegen:bridge": "tsx app/components/design/bridge/codegen.ts",
13
13
  "qa:figma-stress-import": "tsx scripts/qa-figma-stress-import.ts",
14
+ "migrate:production": "tsx scripts/migrate-production.ts",
14
15
  "action": "agent-native action",
15
16
  "script": "agent-native script",
16
17
  "e2e": "playwright test",
@@ -0,0 +1,24 @@
1
+ import { closeDbExec, withMigrationRuntime } from "@agent-native/core/db";
2
+ import { runFrameworkReleaseMigrations } from "@agent-native/core/server";
3
+
4
+ import { runDesignMigrations } from "../server/plugins/db.js";
5
+
6
+ /**
7
+ * Release-time schema entrypoint for Design.
8
+ *
9
+ * This script is the production owner of schema changes. It runs against the
10
+ * direct migration endpoint selected by core, while request functions skip
11
+ * all migration and ensure-table work automatically.
12
+ */
13
+ async function main(): Promise<void> {
14
+ await withMigrationRuntime(async () => {
15
+ await runFrameworkReleaseMigrations(null);
16
+ await runDesignMigrations(null);
17
+ });
18
+ }
19
+
20
+ try {
21
+ await main();
22
+ } finally {
23
+ await closeDbExec();
24
+ }
@@ -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 () => {
@@ -30,7 +30,7 @@ const schemaTables = Object.values(schema).filter(isDrizzleTable);
30
30
  // this list independently — see the analytics template's v75-v83 incident
31
31
  // documented in templates/analytics/server/plugins/db.ts for the failure
32
32
  // class this guards against.
33
- const runDesignMigrations = runMigrations(
33
+ export const runDesignMigrations = runMigrations(
34
34
  [
35
35
  {
36
36
  version: 1,
@@ -13,6 +13,7 @@
13
13
  "app/**/*",
14
14
  "server/**/*",
15
15
  "shared/**/*",
16
+ "scripts/**/*",
16
17
  "vite.config.ts",
17
18
  "react-router.config.ts",
18
19
  ".react-router/types/**/*",
@@ -36,8 +36,10 @@ Tier 4 includes **all** of the following — not only editing package source:
36
36
  - Files under `node_modules/@agent-native/*` (core, dispatch, scheduling, …)
37
37
  - `pnpm.overrides`, `overrides`, `resolutions`, or `patchedDependencies` that
38
38
  target any `@agent-native/*` package
39
- - Local package patches or invented "dispatch/core behavior" shims meant to
40
- paper over a version skew or failed upgrade
39
+ - `pnpm patch`, `pnpm patch-commit`, or local package patch artifacts for any
40
+ dependency
41
+ - Invented "dispatch/core behavior" shims meant to paper over a version skew
42
+ or failed upgrade
41
43
 
42
44
  This does not prohibit intentional app-owned UI customization. When public
43
45
  props and composition are insufficient, the `customizing-agent-native` skill
@@ -100,8 +102,10 @@ inline strings in components.
100
102
  - Don't confuse readable package source with app-owned code: use
101
103
  `customizing-agent-native` and `agent-native eject` for supported ownership
102
104
  transfer
105
+ - Don't use `pnpm patch` / `pnpm patch-commit`, commit `patches/` artifacts, or
106
+ add `pnpm.patchedDependencies` to "make the app run" after a version bump
103
107
  - Don't add `pnpm.overrides` / `patchedDependencies` / `resolutions` for
104
- `@agent-native/*` to "make the app run" after a version bump
108
+ `@agent-native/*` to paper over a broken upgrade
105
109
  - Don't invent local dispatch/core behavior overrides when upgrade fails —
106
110
  run `npx @agent-native/core@latest upgrade`, then fix app-level errors only
107
111
  - Don't modify `.agents/skills/` or `AGENTS.md` unless explicitly requested
@@ -15,8 +15,9 @@ metadata:
15
15
 
16
16
  When an older Agent Native app/branch needs to run on current packages, use
17
17
  `agent-native upgrade`. Never "fix" upgrade breakage with
18
- `pnpm.overrides`, `patchedDependencies`, `resolutions`, local patches, or
19
- edits under `node_modules/@agent-native/*` — especially not against
18
+ `pnpm patch`, `pnpm patch-commit`, `pnpm.patchedDependencies`,
19
+ `pnpm.overrides`, `patchedDependencies`, `resolutions`, local patch artifacts,
20
+ or edits under `node_modules/@agent-native/*` — especially not against
20
21
  `@agent-native/core` or `@agent-native/dispatch`.
21
22
 
22
23
  ## Why
@@ -109,6 +110,8 @@ install → refresh scaffold skills → verify, then fix **app** code only.
109
110
 
110
111
  - Don't add `pnpm.overrides`, `overrides`, `resolutions`, or
111
112
  `patchedDependencies` for any `@agent-native/*` package
113
+ - Don't run `pnpm patch` or `pnpm patch-commit`, or commit files under
114
+ `patches/`, for any dependency
112
115
  - Don't edit `node_modules/@agent-native/core` or
113
116
  `node_modules/@agent-native/dispatch`
114
117
  - Don't invent local "dispatch behavior" shims to paper over version skew
@@ -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
  }
@@ -1,6 +1,6 @@
1
1
  [build]
2
2
  ignore = "node ./scripts/netlify-ignore-build.mjs dispatch"
3
- command = "export DATABASE_URL=${NETLIFY_DATABASE_URL:-$DATABASE_URL} && pnpm install && NITRO_PRESET=netlify pnpm --filter dispatch build"
3
+ command = "export DATABASE_URL=${NETLIFY_DATABASE_URL:-$DATABASE_URL} && pnpm install && NITRO_PRESET=netlify pnpm --filter dispatch build && if [ \"${CONTEXT:-}\" = \"production\" ]; then pnpm --filter dispatch migrate:production; fi"
4
4
  publish = "templates/dispatch/dist"
5
5
  functions = "templates/dispatch/.netlify/functions-internal"
6
6
 
@@ -8,6 +8,7 @@
8
8
  "build": "agent-native build",
9
9
  "start": "agent-native start",
10
10
  "typecheck": "agent-native typecheck",
11
+ "migrate:production": "tsx scripts/migrate-production.ts",
11
12
  "test": "vitest --run --passWithNoTests",
12
13
  "action": "agent-native action",
13
14
  "script": "agent-native script"
@@ -0,0 +1,23 @@
1
+ import { closeDbExec, withMigrationRuntime } from "@agent-native/core/db";
2
+ import { runFrameworkReleaseMigrations } from "@agent-native/core/server";
3
+ import { runDispatchMigrations } from "@agent-native/dispatch/server";
4
+
5
+ /**
6
+ * Release-time schema entrypoint for Dispatch.
7
+ *
8
+ * This script is the production owner of schema changes. It runs against the
9
+ * direct migration endpoint selected by core, while request functions skip
10
+ * all migration and ensure-table work automatically.
11
+ */
12
+ async function main(): Promise<void> {
13
+ await withMigrationRuntime(async () => {
14
+ await runFrameworkReleaseMigrations(null);
15
+ await runDispatchMigrations(null);
16
+ });
17
+ }
18
+
19
+ try {
20
+ await main();
21
+ } finally {
22
+ await closeDbExec();
23
+ }
@@ -13,6 +13,7 @@
13
13
  "app/**/*",
14
14
  "server/**/*",
15
15
  "shared/**/*",
16
+ "scripts/**/*",
16
17
  "vite.config.ts",
17
18
  "react-router.config.ts",
18
19
  ".react-router/types/**/*",
@@ -36,8 +36,10 @@ Tier 4 includes **all** of the following — not only editing package source:
36
36
  - Files under `node_modules/@agent-native/*` (core, dispatch, scheduling, …)
37
37
  - `pnpm.overrides`, `overrides`, `resolutions`, or `patchedDependencies` that
38
38
  target any `@agent-native/*` package
39
- - Local package patches or invented "dispatch/core behavior" shims meant to
40
- paper over a version skew or failed upgrade
39
+ - `pnpm patch`, `pnpm patch-commit`, or local package patch artifacts for any
40
+ dependency
41
+ - Invented "dispatch/core behavior" shims meant to paper over a version skew
42
+ or failed upgrade
41
43
 
42
44
  This does not prohibit intentional app-owned UI customization. When public
43
45
  props and composition are insufficient, the `customizing-agent-native` skill
@@ -100,8 +102,10 @@ inline strings in components.
100
102
  - Don't confuse readable package source with app-owned code: use
101
103
  `customizing-agent-native` and `agent-native eject` for supported ownership
102
104
  transfer
105
+ - Don't use `pnpm patch` / `pnpm patch-commit`, commit `patches/` artifacts, or
106
+ add `pnpm.patchedDependencies` to "make the app run" after a version bump
103
107
  - Don't add `pnpm.overrides` / `patchedDependencies` / `resolutions` for
104
- `@agent-native/*` to "make the app run" after a version bump
108
+ `@agent-native/*` to paper over a broken upgrade
105
109
  - Don't invent local dispatch/core behavior overrides when upgrade fails —
106
110
  run `npx @agent-native/core@latest upgrade`, then fix app-level errors only
107
111
  - Don't modify `.agents/skills/` or `AGENTS.md` unless explicitly requested
@@ -15,8 +15,9 @@ metadata:
15
15
 
16
16
  When an older Agent Native app/branch needs to run on current packages, use
17
17
  `agent-native upgrade`. Never "fix" upgrade breakage with
18
- `pnpm.overrides`, `patchedDependencies`, `resolutions`, local patches, or
19
- edits under `node_modules/@agent-native/*` — especially not against
18
+ `pnpm patch`, `pnpm patch-commit`, `pnpm.patchedDependencies`,
19
+ `pnpm.overrides`, `patchedDependencies`, `resolutions`, local patch artifacts,
20
+ or edits under `node_modules/@agent-native/*` — especially not against
20
21
  `@agent-native/core` or `@agent-native/dispatch`.
21
22
 
22
23
  ## Why
@@ -109,6 +110,8 @@ install → refresh scaffold skills → verify, then fix **app** code only.
109
110
 
110
111
  - Don't add `pnpm.overrides`, `overrides`, `resolutions`, or
111
112
  `patchedDependencies` for any `@agent-native/*` package
113
+ - Don't run `pnpm patch` or `pnpm patch-commit`, or commit files under
114
+ `patches/`, for any dependency
112
115
  - Don't edit `node_modules/@agent-native/core` or
113
116
  `node_modules/@agent-native/dispatch`
114
117
  - Don't invent local "dispatch behavior" shims to paper over version skew
@@ -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":
@@ -135,7 +135,7 @@ function AppContent() {
135
135
  {t("root.commandSearch")}
136
136
  </CommandMenu.Item>
137
137
  <CommandMenu.Item
138
- onSelect={() => navigate("/agent")}
138
+ onSelect={() => navigate("/settings/agent")}
139
139
  keywords={[
140
140
  "agent",
141
141
  "context",
@@ -1,11 +1,6 @@
1
- import {
2
- AgentChatSurface,
3
- AgentTabsPage,
4
- } from "@agent-native/core/client/agent-chat";
5
- import { useT } from "@agent-native/core/client/i18n";
6
- import { useSetPageTitle } from "@agent-native/toolkit/app-shell";
1
+ import { buildLegacyAgentSettingsRoute } from "@agent-native/core/client/navigation";
2
+ import { Navigate, useLocation } from "react-router";
7
3
 
8
- import { resolveAgentPageComponent } from "@/lib/agent-page";
9
4
  import { APP_TITLE } from "@/lib/app-config";
10
5
 
11
6
  export function meta() {
@@ -13,12 +8,12 @@ export function meta() {
13
8
  }
14
9
 
15
10
  export default function AgentRoute() {
16
- const t = useT();
17
- useSetPageTitle(t("settings.agentTitle"));
11
+ const location = useLocation();
18
12
 
19
- const AgentPage = resolveAgentPageComponent({
20
- AgentChatSurface,
21
- AgentTabsPage,
22
- });
23
- return <AgentPage appName={APP_TITLE} />;
13
+ return (
14
+ <Navigate
15
+ to={buildLegacyAgentSettingsRoute(location.hash, location.search)}
16
+ replace
17
+ />
18
+ );
24
19
  }
@@ -1,5 +1,5 @@
1
1
  [build]
2
- command = "NITRO_PRESET=netlify pnpm --filter factory build"
2
+ command = "NITRO_PRESET=netlify pnpm --filter factory build && if [ \"${CONTEXT:-}\" = \"production\" ]; then pnpm --filter factory migrate:production; fi"
3
3
  publish = "dist"
4
4
  functions = ".netlify/functions-internal"
5
5
 
@@ -5,6 +5,7 @@
5
5
  "description": "Build agent factories: work in one end, shipped changes out the other, with gates you control.",
6
6
  "type": "module",
7
7
  "scripts": {
8
+ "migrate:production": "tsx scripts/migrate-production.ts",
8
9
  "dev": "agent-native dev --open",
9
10
  "build": "agent-native build",
10
11
  "start": "agent-native start",
@@ -0,0 +1,31 @@
1
+ import { closeDbExec, withMigrationRuntime } from "@agent-native/core/db";
2
+ import { runFrameworkReleaseMigrations } from "@agent-native/core/server";
3
+
4
+ import { runFactoryMigrations } from "../server/plugins/factory-migrations.js";
5
+
6
+ /**
7
+ * Release-time schema entrypoint.
8
+ *
9
+ * Every deploy runs this once, and request functions never touch schema. That
10
+ * ordering is not an optimization: on serverless, "migrate on first use" means
11
+ * migrate on EVERY cold start, and a production incident traced a multi-hour
12
+ * outage to schema introspection running 4-6 times concurrently on the request
13
+ * path.
14
+ *
15
+ * `withMigrationRuntime()` is load-bearing. The Netlify BUILD environment sets
16
+ * NETLIFY=true, so this script looks like a serverless request to the guard in
17
+ * `runMigrations` — it is allowed to migrate only because it claims duty here.
18
+ * A release entrypoint that forgets the wrapper silently does nothing.
19
+ */
20
+ async function main(): Promise<void> {
21
+ await withMigrationRuntime(async () => {
22
+ await runFrameworkReleaseMigrations(null);
23
+ await runFactoryMigrations(null);
24
+ });
25
+ }
26
+
27
+ try {
28
+ await main();
29
+ } finally {
30
+ await closeDbExec();
31
+ }
@@ -358,6 +358,7 @@ schedule: "${seed.schedule}"
358
358
  ${seed.timezone ? `timezone: ${seed.timezone}\n` : ""}enabled: true
359
359
  triggerType: schedule
360
360
  domain: factory
361
+ appId: factory
361
362
  orgId: ${orgId}
362
363
  createdBy: ${ownerEmail}
363
364
  runAs: creator
@@ -405,6 +406,7 @@ async function ensureOrganizationAutomations(
405
406
  let repaired = existing.content;
406
407
  repaired = setFrontmatterField(repaired, "triggerType", "schedule");
407
408
  repaired = setFrontmatterField(repaired, "domain", "factory");
409
+ repaired = setFrontmatterField(repaired, "appId", "factory");
408
410
  repaired = setFrontmatterField(repaired, "orgId", orgId);
409
411
  repaired = setFrontmatterField(repaired, "createdBy", ownerEmail);
410
412
  repaired = setFrontmatterField(repaired, "runAs", "creator");
@@ -13,6 +13,7 @@
13
13
  "app/**/*",
14
14
  "server/**/*",
15
15
  "shared/**/*",
16
+ "scripts/**/*",
16
17
  "vite.config.ts",
17
18
  "react-router.config.ts",
18
19
  ".react-router/types/**/*",
@@ -36,8 +36,10 @@ Tier 4 includes **all** of the following — not only editing package source:
36
36
  - Files under `node_modules/@agent-native/*` (core, dispatch, scheduling, …)
37
37
  - `pnpm.overrides`, `overrides`, `resolutions`, or `patchedDependencies` that
38
38
  target any `@agent-native/*` package
39
- - Local package patches or invented "dispatch/core behavior" shims meant to
40
- paper over a version skew or failed upgrade
39
+ - `pnpm patch`, `pnpm patch-commit`, or local package patch artifacts for any
40
+ dependency
41
+ - Invented "dispatch/core behavior" shims meant to paper over a version skew
42
+ or failed upgrade
41
43
 
42
44
  This does not prohibit intentional app-owned UI customization. When public
43
45
  props and composition are insufficient, the `customizing-agent-native` skill
@@ -100,8 +102,10 @@ inline strings in components.
100
102
  - Don't confuse readable package source with app-owned code: use
101
103
  `customizing-agent-native` and `agent-native eject` for supported ownership
102
104
  transfer
105
+ - Don't use `pnpm patch` / `pnpm patch-commit`, commit `patches/` artifacts, or
106
+ add `pnpm.patchedDependencies` to "make the app run" after a version bump
103
107
  - Don't add `pnpm.overrides` / `patchedDependencies` / `resolutions` for
104
- `@agent-native/*` to "make the app run" after a version bump
108
+ `@agent-native/*` to paper over a broken upgrade
105
109
  - Don't invent local dispatch/core behavior overrides when upgrade fails —
106
110
  run `npx @agent-native/core@latest upgrade`, then fix app-level errors only
107
111
  - Don't modify `.agents/skills/` or `AGENTS.md` unless explicitly requested
@@ -15,8 +15,9 @@ metadata:
15
15
 
16
16
  When an older Agent Native app/branch needs to run on current packages, use
17
17
  `agent-native upgrade`. Never "fix" upgrade breakage with
18
- `pnpm.overrides`, `patchedDependencies`, `resolutions`, local patches, or
19
- edits under `node_modules/@agent-native/*` — especially not against
18
+ `pnpm patch`, `pnpm patch-commit`, `pnpm.patchedDependencies`,
19
+ `pnpm.overrides`, `patchedDependencies`, `resolutions`, local patch artifacts,
20
+ or edits under `node_modules/@agent-native/*` — especially not against
20
21
  `@agent-native/core` or `@agent-native/dispatch`.
21
22
 
22
23
  ## Why
@@ -109,6 +110,8 @@ install → refresh scaffold skills → verify, then fix **app** code only.
109
110
 
110
111
  - Don't add `pnpm.overrides`, `overrides`, `resolutions`, or
111
112
  `patchedDependencies` for any `@agent-native/*` package
113
+ - Don't run `pnpm patch` or `pnpm patch-commit`, or commit files under
114
+ `patches/`, for any dependency
112
115
  - Don't edit `node_modules/@agent-native/core` or
113
116
  `node_modules/@agent-native/dispatch`
114
117
  - Don't invent local "dispatch behavior" shims to paper over version skew
@@ -89,7 +89,7 @@ export function Layout({ children }: LayoutProps) {
89
89
  ) : (
90
90
  <AgentSidebar
91
91
  position="right"
92
- agentPageHref="/agent"
92
+ agentPageHref="/settings/agent"
93
93
  defaultOpen={false}
94
94
  chatViewTransition
95
95
  chatViewTransitionHandoff={chatHomeHandoffPending}
@@ -244,7 +244,7 @@ function FormsCommandMenu({
244
244
  <CommandMenu.Item onSelect={() => {}}>
245
245
  {t("root.searchForms")}
246
246
  </CommandMenu.Item>
247
- <CommandMenu.Item onSelect={() => navigate("/agent")}>
247
+ <CommandMenu.Item onSelect={() => navigate("/settings/agent")}>
248
248
  <IconHierarchy2 size={16} />
249
249
  {t("root.openAgent")}
250
250
  </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
  }
@@ -1,6 +1,6 @@
1
1
  [build]
2
2
  ignore = "node ./scripts/netlify-ignore-build.mjs forms"
3
- command = "export DATABASE_URL=${NETLIFY_DATABASE_URL:-$DATABASE_URL} && pnpm install && DATABASE_URL=${NETLIFY_DATABASE_URL_UNPOOLED:-$DATABASE_URL} NITRO_PRESET=netlify pnpm --filter forms build"
3
+ command = "export DATABASE_URL=${NETLIFY_DATABASE_URL:-$DATABASE_URL} && pnpm install && DATABASE_URL=${NETLIFY_DATABASE_URL_UNPOOLED:-$DATABASE_URL} NITRO_PRESET=netlify pnpm --filter forms build && if [ \"${CONTEXT:-}\" = \"production\" ]; then DATABASE_URL=${NETLIFY_DATABASE_URL_UNPOOLED:-$DATABASE_URL} pnpm --filter forms migrate:production; fi"
4
4
  publish = "templates/forms/dist"
5
5
  functions = "templates/forms/.netlify/functions-internal"
6
6
 
@@ -9,6 +9,7 @@
9
9
  "start": "agent-native start",
10
10
  "format.fix": "oxfmt --write .",
11
11
  "typecheck": "agent-native typecheck",
12
+ "migrate:production": "tsx scripts/migrate-production.ts",
12
13
  "action": "agent-native action",
13
14
  "script": "agent-native script",
14
15
  "db:push": "drizzle-kit push",
@@ -87,6 +88,7 @@
87
88
  "sonner": "^2.0.7",
88
89
  "tailwind-merge": "^3.5.0",
89
90
  "tailwindcss": "catalog:",
91
+ "tsx": "^4.20.3",
90
92
  "typescript-7": "catalog:",
91
93
  "vite": "catalog:",
92
94
  "vitest": "catalog:"