@agent-native/core 0.99.3 → 0.100.0

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 (362) hide show
  1. package/corpus/README.md +2 -2
  2. package/corpus/core/CHANGELOG.md +15 -0
  3. package/corpus/core/docs/content/agent-surfaces.mdx +43 -0
  4. package/corpus/core/docs/content/external-agents.mdx +11 -0
  5. package/corpus/core/docs/content/locales/ar-SA/agent-surfaces.mdx +30 -0
  6. package/corpus/core/docs/content/locales/ar-SA/external-agents.mdx +9 -0
  7. package/corpus/core/docs/content/locales/de-DE/agent-surfaces.mdx +34 -0
  8. package/corpus/core/docs/content/locales/de-DE/external-agents.mdx +10 -0
  9. package/corpus/core/docs/content/locales/es-ES/agent-surfaces.mdx +34 -0
  10. package/corpus/core/docs/content/locales/es-ES/external-agents.mdx +10 -0
  11. package/corpus/core/docs/content/locales/fr-FR/agent-surfaces.mdx +34 -0
  12. package/corpus/core/docs/content/locales/fr-FR/external-agents.mdx +11 -0
  13. package/corpus/core/docs/content/locales/hi-IN/agent-surfaces.mdx +31 -0
  14. package/corpus/core/docs/content/locales/hi-IN/external-agents.mdx +9 -0
  15. package/corpus/core/docs/content/locales/ja-JP/agent-surfaces.mdx +32 -0
  16. package/corpus/core/docs/content/locales/ja-JP/external-agents.mdx +10 -0
  17. package/corpus/core/docs/content/locales/ko-KR/agent-surfaces.mdx +32 -0
  18. package/corpus/core/docs/content/locales/ko-KR/external-agents.mdx +9 -0
  19. package/corpus/core/docs/content/locales/pt-BR/agent-surfaces.mdx +33 -0
  20. package/corpus/core/docs/content/locales/pt-BR/external-agents.mdx +10 -0
  21. package/corpus/core/docs/content/locales/zh-CN/agent-surfaces.mdx +29 -0
  22. package/corpus/core/docs/content/locales/zh-CN/external-agents.mdx +8 -0
  23. package/corpus/core/docs/content/locales/zh-TW/agent-surfaces.mdx +29 -0
  24. package/corpus/core/docs/content/locales/zh-TW/external-agents.mdx +8 -0
  25. package/corpus/core/package.json +1 -1
  26. package/corpus/core/src/agent/context-xray/actions/context-evict.ts +11 -0
  27. package/corpus/core/src/agent/context-xray/actions/context-pin.ts +11 -0
  28. package/corpus/core/src/agent/context-xray/actions/context-preview-get.ts +134 -0
  29. package/corpus/core/src/agent/context-xray/actions/context-restore.ts +11 -0
  30. package/corpus/core/src/agent/context-xray/actions/errors.ts +20 -0
  31. package/corpus/core/src/agent/context-xray/manifest.ts +106 -7
  32. package/corpus/core/src/agent/engine/context-directives-transform.ts +5 -1
  33. package/corpus/core/src/agent/production-agent.ts +100 -38
  34. package/corpus/core/src/agent/run-loop-with-resume.ts +7 -2
  35. package/corpus/core/src/client/AgentPanel.tsx +35 -8
  36. package/corpus/core/src/client/agent-page/AgentContextTab.tsx +501 -0
  37. package/corpus/core/src/client/agent-page/AgentJobsTab.tsx +370 -0
  38. package/corpus/core/src/client/agent-page/AgentTabsPage.tsx +1084 -0
  39. package/corpus/core/src/client/agent-page/types.ts +18 -0
  40. package/corpus/core/src/client/agent-page/use-jobs.ts +150 -0
  41. package/corpus/core/src/client/context-xray/ContextMeter.tsx +22 -5
  42. package/corpus/core/src/client/context-xray/ContextTreemap.tsx +16 -1
  43. package/corpus/core/src/client/context-xray/ContextXRayPanel.tsx +168 -3
  44. package/corpus/core/src/client/context-xray/format.ts +6 -0
  45. package/corpus/core/src/client/index.ts +6 -0
  46. package/corpus/core/src/client/resources/ResourcesPanel.tsx +51 -23
  47. package/corpus/core/src/client/settings/AutomationsSection.tsx +407 -387
  48. package/corpus/core/src/jobs/actions/list-recurring-jobs.ts +105 -0
  49. package/corpus/core/src/jobs/actions/manage-recurring-job.ts +85 -0
  50. package/corpus/core/src/jobs/tools.ts +1 -1
  51. package/corpus/core/src/localization/default-messages.ts +110 -0
  52. package/corpus/core/src/mcp/build-server.ts +1 -0
  53. package/corpus/core/src/mcp/connect-route.ts +62 -65
  54. package/corpus/core/src/server/action-discovery.ts +23 -0
  55. package/corpus/core/src/server/agent-chat/prompt-resources.ts +174 -2
  56. package/corpus/core/src/server/agent-chat-plugin.ts +175 -2
  57. package/corpus/core/src/server/auth.ts +1 -7
  58. package/corpus/core/src/server/google-oauth.ts +1 -7
  59. package/corpus/core/src/server/workspace-oauth.ts +31 -0
  60. package/corpus/core/src/shared/context-xray.ts +84 -1
  61. package/corpus/core/src/shared/mcp-connect-content.ts +130 -0
  62. package/corpus/core/src/templates/default/app/routes/_index.tsx +11 -0
  63. package/corpus/core/src/templates/default/app/routes/agent.tsx +33 -0
  64. package/corpus/core/src/templates/workspace-core/.agents/skills/agent-native-toolkit/SKILL.md +6 -0
  65. package/corpus/core/src/templates/workspace-core/.agents/skills/agent-page/SKILL.md +59 -0
  66. package/corpus/core/src/templates/workspace-core/.agents/skills/context-xray/SKILL.md +25 -0
  67. package/corpus/core/src/templates/workspace-core/.agents/skills/external-agents/SKILL.md +7 -0
  68. package/corpus/core/src/templates/workspace-core/.agents/skills/recurring-jobs/SKILL.md +9 -0
  69. package/corpus/core/src/triggers/actions/list-automations.ts +99 -0
  70. package/corpus/core/src/triggers/actions/manage-automation.ts +78 -0
  71. package/corpus/templates/analytics/actions/data-source-status.ts +33 -15
  72. package/corpus/templates/analytics/actions/query-agent-native-analytics.ts +1 -1
  73. package/corpus/templates/analytics/app/components/dashboard/SqlChart.tsx +149 -24
  74. package/corpus/templates/analytics/app/components/layout/CommandPalette.tsx +17 -0
  75. package/corpus/templates/analytics/app/components/layout/Header.tsx +1 -0
  76. package/corpus/templates/analytics/app/components/layout/Layout.tsx +1 -0
  77. package/corpus/templates/analytics/app/components/layout/Sidebar.tsx +8 -0
  78. package/corpus/templates/analytics/app/i18n/zh-TW.ts +1 -0
  79. package/corpus/templates/analytics/app/i18n-data.ts +1 -0
  80. package/corpus/templates/analytics/app/routes/agent.tsx +5 -0
  81. package/corpus/templates/analytics/changelog/2026-07-13-a-full-agent-page-now-brings-context-files-connections-jobs-.md +6 -0
  82. package/corpus/templates/analytics/changelog/2026-07-13-analytics-answers-can-use-built-in-first-party-event-data.md +6 -0
  83. package/corpus/templates/analytics/changelog/2026-07-13-chart-legends-can-filter-to-one-series-or-hide-a-series-on-h.md +6 -0
  84. package/corpus/templates/analytics/changelog/2026-07-13-gpt-5-6-luna-answers-now-recover-normally-instead-of-showing.md +6 -0
  85. package/corpus/templates/analytics/server/plugins/agent-chat.ts +11 -2
  86. package/corpus/templates/assets/app/components/layout/Header.tsx +1 -0
  87. package/corpus/templates/assets/app/components/layout/Layout.tsx +1 -0
  88. package/corpus/templates/assets/app/components/layout/Sidebar.tsx +2 -0
  89. package/corpus/templates/assets/app/routes/agent.tsx +5 -0
  90. package/corpus/templates/assets/changelog/2026-07-13-a-full-agent-page-now-brings-context-files-connections-jobs-.md +6 -0
  91. package/corpus/templates/brain/app/components/layout/Layout.tsx +1 -0
  92. package/corpus/templates/brain/app/components/layout/Sidebar.tsx +4 -1
  93. package/corpus/templates/brain/app/lib/brain.ts +11 -0
  94. package/corpus/templates/brain/app/root.tsx +15 -1
  95. package/corpus/templates/brain/app/routes/agent.tsx +11 -0
  96. package/corpus/templates/brain/changelog/2026-07-13-a-full-agent-page-now-brings-context-files-connections-jobs-.md +6 -0
  97. package/corpus/templates/calendar/app/components/layout/AppLayout.tsx +1 -0
  98. package/corpus/templates/calendar/app/components/layout/Sidebar.tsx +2 -0
  99. package/corpus/templates/calendar/app/root.tsx +17 -1
  100. package/corpus/templates/calendar/app/routes/_app.agent.tsx +25 -0
  101. package/corpus/templates/calendar/changelog/2026-07-13-a-full-agent-page-now-brings-context-files-connections-jobs-.md +6 -0
  102. package/corpus/templates/chat/app/components/layout/Header.tsx +1 -0
  103. package/corpus/templates/chat/app/components/layout/Layout.tsx +1 -0
  104. package/corpus/templates/chat/app/components/layout/Sidebar.tsx +7 -0
  105. package/corpus/templates/chat/app/hooks/use-navigation-state.ts +3 -0
  106. package/corpus/templates/chat/app/root.tsx +24 -2
  107. package/corpus/templates/chat/app/routes/agent.tsx +15 -0
  108. package/corpus/templates/chat/changelog/2026-07-13-a-full-agent-page-now-brings-context-files-connections-jobs-.md +6 -0
  109. package/corpus/templates/clips/app/components/library/library-layout.tsx +8 -0
  110. package/corpus/templates/clips/app/i18n/ar-SA.ts +2 -0
  111. package/corpus/templates/clips/app/i18n/de-DE.ts +2 -0
  112. package/corpus/templates/clips/app/i18n/en-US.ts +2 -0
  113. package/corpus/templates/clips/app/i18n/es-ES.ts +2 -0
  114. package/corpus/templates/clips/app/i18n/fr-FR.ts +2 -0
  115. package/corpus/templates/clips/app/i18n/hi-IN.ts +2 -0
  116. package/corpus/templates/clips/app/i18n/ja-JP.ts +2 -0
  117. package/corpus/templates/clips/app/i18n/ko-KR.ts +2 -0
  118. package/corpus/templates/clips/app/i18n/pt-BR.ts +2 -0
  119. package/corpus/templates/clips/app/i18n/zh-CN.ts +2 -0
  120. package/corpus/templates/clips/app/i18n/zh-TW.ts +2 -0
  121. package/corpus/templates/clips/app/root.tsx +7 -1
  122. package/corpus/templates/clips/app/routes/_app.agent.tsx +15 -0
  123. package/corpus/templates/clips/changelog/2026-07-13-new-agent-page-see-and-manage-your-agent-s-context-files-con.md +6 -0
  124. package/corpus/templates/content/app/components/layout/Layout.tsx +1 -0
  125. package/corpus/templates/content/app/components/sidebar/DocumentSidebar.tsx +36 -0
  126. package/corpus/templates/content/app/i18n/zh-TW.ts +2 -0
  127. package/corpus/templates/content/app/i18n-data.ts +44 -6
  128. package/corpus/templates/content/app/root.tsx +8 -0
  129. package/corpus/templates/content/app/routes/_app.agent.tsx +15 -0
  130. package/corpus/templates/content/changelog/2026-07-13-new-agent-page-see-and-manage-your-agent-s-context-files-con.md +6 -0
  131. package/corpus/templates/design/app/components/layout/Layout.tsx +1 -0
  132. package/corpus/templates/design/app/components/layout/Sidebar.tsx +2 -0
  133. package/corpus/templates/design/app/i18n/zh-TW.ts +2 -0
  134. package/corpus/templates/design/app/i18n-data.ts +20 -0
  135. package/corpus/templates/design/app/root.tsx +7 -1
  136. package/corpus/templates/design/app/routes/agent.tsx +15 -0
  137. package/corpus/templates/design/changelog/2026-07-13-new-agent-page-see-and-manage-your-agent-s-context-files-con.md +6 -0
  138. package/corpus/templates/dispatch/app/dispatch-extensions.tsx +10 -1
  139. package/corpus/templates/dispatch/app/i18n/zh-TW.ts +2 -0
  140. package/corpus/templates/dispatch/app/i18n-data.ts +20 -0
  141. package/corpus/templates/dispatch/app/root.tsx +7 -2
  142. package/corpus/templates/dispatch/app/routes/agent.tsx +18 -0
  143. package/corpus/templates/dispatch/changelog/2026-07-13-new-agent-page-see-and-manage-your-agent-s-context-files-con.md +6 -0
  144. package/corpus/templates/forms/app/components/layout/Layout.tsx +1 -0
  145. package/corpus/templates/forms/app/components/layout/Sidebar.tsx +35 -0
  146. package/corpus/templates/forms/app/i18n/ar-SA.ts +2 -0
  147. package/corpus/templates/forms/app/i18n/de-DE.ts +2 -0
  148. package/corpus/templates/forms/app/i18n/en-US.ts +2 -0
  149. package/corpus/templates/forms/app/i18n/es-ES.ts +2 -0
  150. package/corpus/templates/forms/app/i18n/fr-FR.ts +2 -0
  151. package/corpus/templates/forms/app/i18n/hi-IN.ts +2 -0
  152. package/corpus/templates/forms/app/i18n/ja-JP.ts +2 -0
  153. package/corpus/templates/forms/app/i18n/ko-KR.ts +2 -0
  154. package/corpus/templates/forms/app/i18n/pt-BR.ts +2 -0
  155. package/corpus/templates/forms/app/i18n/zh-CN.ts +2 -0
  156. package/corpus/templates/forms/app/i18n/zh-TW.ts +2 -0
  157. package/corpus/templates/forms/app/root.tsx +6 -1
  158. package/corpus/templates/forms/app/routes/_app.agent.tsx +15 -0
  159. package/corpus/templates/forms/changelog/2026-07-13-new-agent-page-see-and-manage-your-agent-s-context-files-con.md +6 -0
  160. package/corpus/templates/macros/app/components/layout/AppLayout.tsx +14 -2
  161. package/corpus/templates/macros/app/components/layout/Header.tsx +1 -0
  162. package/corpus/templates/macros/app/root.tsx +17 -2
  163. package/corpus/templates/macros/app/routes/agent.tsx +15 -0
  164. package/corpus/templates/macros/changelog/2026-07-13-new-agent-page-see-and-manage-your-agent-s-context-files-con.md +6 -0
  165. package/corpus/templates/mail/app/components/layout/AppLayout.tsx +42 -0
  166. package/corpus/templates/mail/app/components/layout/CommandPalette.tsx +6 -0
  167. package/corpus/templates/mail/app/routes/agent.tsx +15 -0
  168. package/corpus/templates/mail/changelog/2026-07-13-new-agent-page-see-and-manage-your-agent-s-context-files-con.md +6 -0
  169. package/corpus/templates/plan/app/components/layout/Header.tsx +1 -0
  170. package/corpus/templates/plan/app/components/layout/Layout.tsx +1 -0
  171. package/corpus/templates/plan/app/components/layout/Sidebar.tsx +2 -0
  172. package/corpus/templates/plan/app/root.tsx +8 -0
  173. package/corpus/templates/plan/app/routes/agent.tsx +15 -0
  174. package/corpus/templates/plan/changelog/2026-07-13-new-agent-page-see-and-manage-your-agent-s-context-files-con.md +6 -0
  175. package/corpus/templates/slides/app/components/layout/Header.tsx +1 -0
  176. package/corpus/templates/slides/app/components/layout/Layout.tsx +1 -0
  177. package/corpus/templates/slides/app/components/layout/Sidebar.tsx +2 -0
  178. package/corpus/templates/slides/app/root.tsx +10 -1
  179. package/corpus/templates/slides/app/routes/agent.tsx +15 -0
  180. package/corpus/templates/slides/changelog/2026-07-13-new-agent-page-see-and-manage-your-agent-s-context-files-con.md +6 -0
  181. package/dist/agent/context-xray/actions/context-evict.js +5 -2
  182. package/dist/agent/context-xray/actions/context-evict.js.map +1 -1
  183. package/dist/agent/context-xray/actions/context-pin.js +5 -2
  184. package/dist/agent/context-xray/actions/context-pin.js.map +1 -1
  185. package/dist/agent/context-xray/actions/context-preview-get.d.ts +17 -0
  186. package/dist/agent/context-xray/actions/context-preview-get.d.ts.map +1 -0
  187. package/dist/agent/context-xray/actions/context-preview-get.js +94 -0
  188. package/dist/agent/context-xray/actions/context-preview-get.js.map +1 -0
  189. package/dist/agent/context-xray/actions/context-restore.js +5 -2
  190. package/dist/agent/context-xray/actions/context-restore.js.map +1 -1
  191. package/dist/agent/context-xray/actions/errors.d.ts +3 -0
  192. package/dist/agent/context-xray/actions/errors.d.ts.map +1 -1
  193. package/dist/agent/context-xray/actions/errors.js +6 -0
  194. package/dist/agent/context-xray/actions/errors.js.map +1 -1
  195. package/dist/agent/context-xray/manifest.d.ts +18 -1
  196. package/dist/agent/context-xray/manifest.d.ts.map +1 -1
  197. package/dist/agent/context-xray/manifest.js +68 -6
  198. package/dist/agent/context-xray/manifest.js.map +1 -1
  199. package/dist/agent/engine/context-directives-transform.d.ts +2 -0
  200. package/dist/agent/engine/context-directives-transform.d.ts.map +1 -1
  201. package/dist/agent/engine/context-directives-transform.js +2 -1
  202. package/dist/agent/engine/context-directives-transform.js.map +1 -1
  203. package/dist/agent/production-agent.d.ts +15 -0
  204. package/dist/agent/production-agent.d.ts.map +1 -1
  205. package/dist/agent/production-agent.js +74 -36
  206. package/dist/agent/production-agent.js.map +1 -1
  207. package/dist/agent/run-loop-with-resume.d.ts.map +1 -1
  208. package/dist/agent/run-loop-with-resume.js +6 -3
  209. package/dist/agent/run-loop-with-resume.js.map +1 -1
  210. package/dist/client/AgentPanel.d.ts +5 -1
  211. package/dist/client/AgentPanel.d.ts.map +1 -1
  212. package/dist/client/AgentPanel.js +9 -11
  213. package/dist/client/AgentPanel.js.map +1 -1
  214. package/dist/client/agent-page/AgentContextTab.d.ts +5 -0
  215. package/dist/client/agent-page/AgentContextTab.d.ts.map +1 -0
  216. package/dist/client/agent-page/AgentContextTab.js +202 -0
  217. package/dist/client/agent-page/AgentContextTab.js.map +1 -0
  218. package/dist/client/agent-page/AgentJobsTab.d.ts +3 -0
  219. package/dist/client/agent-page/AgentJobsTab.d.ts.map +1 -0
  220. package/dist/client/agent-page/AgentJobsTab.js +98 -0
  221. package/dist/client/agent-page/AgentJobsTab.js.map +1 -0
  222. package/dist/client/agent-page/AgentTabsPage.d.ts +20 -0
  223. package/dist/client/agent-page/AgentTabsPage.d.ts.map +1 -0
  224. package/dist/client/agent-page/AgentTabsPage.js +420 -0
  225. package/dist/client/agent-page/AgentTabsPage.js.map +1 -0
  226. package/dist/client/agent-page/types.d.ts +17 -0
  227. package/dist/client/agent-page/types.d.ts.map +1 -0
  228. package/dist/client/agent-page/types.js +9 -0
  229. package/dist/client/agent-page/types.js.map +1 -0
  230. package/dist/client/agent-page/use-jobs.d.ts +61 -0
  231. package/dist/client/agent-page/use-jobs.d.ts.map +1 -0
  232. package/dist/client/agent-page/use-jobs.js +71 -0
  233. package/dist/client/agent-page/use-jobs.js.map +1 -0
  234. package/dist/client/context-xray/ContextMeter.d.ts +3 -1
  235. package/dist/client/context-xray/ContextMeter.d.ts.map +1 -1
  236. package/dist/client/context-xray/ContextMeter.js +14 -5
  237. package/dist/client/context-xray/ContextMeter.js.map +1 -1
  238. package/dist/client/context-xray/ContextTreemap.d.ts +3 -2
  239. package/dist/client/context-xray/ContextTreemap.d.ts.map +1 -1
  240. package/dist/client/context-xray/ContextTreemap.js +9 -1
  241. package/dist/client/context-xray/ContextTreemap.js.map +1 -1
  242. package/dist/client/context-xray/ContextXRayPanel.d.ts.map +1 -1
  243. package/dist/client/context-xray/ContextXRayPanel.js +95 -20
  244. package/dist/client/context-xray/ContextXRayPanel.js.map +1 -1
  245. package/dist/client/context-xray/format.d.ts.map +1 -1
  246. package/dist/client/context-xray/format.js +12 -0
  247. package/dist/client/context-xray/format.js.map +1 -1
  248. package/dist/client/index.d.ts +3 -0
  249. package/dist/client/index.d.ts.map +1 -1
  250. package/dist/client/index.js +1 -0
  251. package/dist/client/index.js.map +1 -1
  252. package/dist/client/resources/ResourcesPanel.d.ts +9 -1
  253. package/dist/client/resources/ResourcesPanel.d.ts.map +1 -1
  254. package/dist/client/resources/ResourcesPanel.js +26 -10
  255. package/dist/client/resources/ResourcesPanel.js.map +1 -1
  256. package/dist/client/settings/AutomationsSection.d.ts +9 -0
  257. package/dist/client/settings/AutomationsSection.d.ts.map +1 -1
  258. package/dist/client/settings/AutomationsSection.js +128 -147
  259. package/dist/client/settings/AutomationsSection.js.map +1 -1
  260. package/dist/collab/routes.d.ts +1 -1
  261. package/dist/file-upload/actions/upload-image.d.ts +1 -1
  262. package/dist/jobs/actions/list-recurring-jobs.d.ts +21 -0
  263. package/dist/jobs/actions/list-recurring-jobs.d.ts.map +1 -0
  264. package/dist/jobs/actions/list-recurring-jobs.js +74 -0
  265. package/dist/jobs/actions/list-recurring-jobs.js.map +1 -0
  266. package/dist/jobs/actions/manage-recurring-job.d.ts +18 -0
  267. package/dist/jobs/actions/manage-recurring-job.d.ts.map +1 -0
  268. package/dist/jobs/actions/manage-recurring-job.js +68 -0
  269. package/dist/jobs/actions/manage-recurring-job.js.map +1 -0
  270. package/dist/jobs/tools.d.ts +13 -0
  271. package/dist/jobs/tools.d.ts.map +1 -1
  272. package/dist/jobs/tools.js +1 -1
  273. package/dist/jobs/tools.js.map +1 -1
  274. package/dist/localization/default-messages.d.ts +96 -0
  275. package/dist/localization/default-messages.d.ts.map +1 -1
  276. package/dist/localization/default-messages.js +96 -0
  277. package/dist/localization/default-messages.js.map +1 -1
  278. package/dist/mcp/build-server.d.ts.map +1 -1
  279. package/dist/mcp/build-server.js +1 -0
  280. package/dist/mcp/build-server.js.map +1 -1
  281. package/dist/mcp/connect-route.d.ts.map +1 -1
  282. package/dist/mcp/connect-route.js +44 -59
  283. package/dist/mcp/connect-route.js.map +1 -1
  284. package/dist/notifications/routes.d.ts +2 -2
  285. package/dist/observability/routes.d.ts +5 -5
  286. package/dist/progress/routes.d.ts +1 -1
  287. package/dist/resources/handlers.d.ts +1 -1
  288. package/dist/secrets/routes.d.ts +9 -9
  289. package/dist/server/action-discovery.d.ts.map +1 -1
  290. package/dist/server/action-discovery.js +23 -0
  291. package/dist/server/action-discovery.js.map +1 -1
  292. package/dist/server/agent-chat/prompt-resources.d.ts +14 -0
  293. package/dist/server/agent-chat/prompt-resources.d.ts.map +1 -1
  294. package/dist/server/agent-chat/prompt-resources.js +139 -2
  295. package/dist/server/agent-chat/prompt-resources.js.map +1 -1
  296. package/dist/server/agent-chat-plugin.d.ts +1 -0
  297. package/dist/server/agent-chat-plugin.d.ts.map +1 -1
  298. package/dist/server/agent-chat-plugin.js +136 -3
  299. package/dist/server/agent-chat-plugin.js.map +1 -1
  300. package/dist/server/auth.d.ts.map +1 -1
  301. package/dist/server/auth.js +1 -4
  302. package/dist/server/auth.js.map +1 -1
  303. package/dist/server/google-oauth.d.ts.map +1 -1
  304. package/dist/server/google-oauth.js +1 -4
  305. package/dist/server/google-oauth.js.map +1 -1
  306. package/dist/server/workspace-oauth.d.ts +11 -0
  307. package/dist/server/workspace-oauth.d.ts.map +1 -0
  308. package/dist/server/workspace-oauth.js +25 -0
  309. package/dist/server/workspace-oauth.js.map +1 -0
  310. package/dist/shared/context-xray.d.ts +45 -1
  311. package/dist/shared/context-xray.d.ts.map +1 -1
  312. package/dist/shared/context-xray.js +12 -0
  313. package/dist/shared/context-xray.js.map +1 -1
  314. package/dist/shared/mcp-connect-content.d.ts +37 -0
  315. package/dist/shared/mcp-connect-content.d.ts.map +1 -0
  316. package/dist/shared/mcp-connect-content.js +92 -0
  317. package/dist/shared/mcp-connect-content.js.map +1 -0
  318. package/dist/templates/default/app/routes/_index.tsx +11 -0
  319. package/dist/templates/default/app/routes/agent.tsx +33 -0
  320. package/dist/templates/workspace-core/.agents/skills/agent-native-toolkit/SKILL.md +6 -0
  321. package/dist/templates/workspace-core/.agents/skills/agent-page/SKILL.md +59 -0
  322. package/dist/templates/workspace-core/.agents/skills/context-xray/SKILL.md +25 -0
  323. package/dist/templates/workspace-core/.agents/skills/external-agents/SKILL.md +7 -0
  324. package/dist/templates/workspace-core/.agents/skills/recurring-jobs/SKILL.md +9 -0
  325. package/dist/triggers/actions/list-automations.d.ts +24 -0
  326. package/dist/triggers/actions/list-automations.d.ts.map +1 -0
  327. package/dist/triggers/actions/list-automations.js +72 -0
  328. package/dist/triggers/actions/list-automations.js.map +1 -0
  329. package/dist/triggers/actions/manage-automation.d.ts +18 -0
  330. package/dist/triggers/actions/manage-automation.d.ts.map +1 -0
  331. package/dist/triggers/actions/manage-automation.js +60 -0
  332. package/dist/triggers/actions/manage-automation.js.map +1 -0
  333. package/docs/content/agent-surfaces.mdx +43 -0
  334. package/docs/content/external-agents.mdx +11 -0
  335. package/docs/content/locales/ar-SA/agent-surfaces.mdx +30 -0
  336. package/docs/content/locales/ar-SA/external-agents.mdx +9 -0
  337. package/docs/content/locales/de-DE/agent-surfaces.mdx +34 -0
  338. package/docs/content/locales/de-DE/external-agents.mdx +10 -0
  339. package/docs/content/locales/es-ES/agent-surfaces.mdx +34 -0
  340. package/docs/content/locales/es-ES/external-agents.mdx +10 -0
  341. package/docs/content/locales/fr-FR/agent-surfaces.mdx +34 -0
  342. package/docs/content/locales/fr-FR/external-agents.mdx +11 -0
  343. package/docs/content/locales/hi-IN/agent-surfaces.mdx +31 -0
  344. package/docs/content/locales/hi-IN/external-agents.mdx +9 -0
  345. package/docs/content/locales/ja-JP/agent-surfaces.mdx +32 -0
  346. package/docs/content/locales/ja-JP/external-agents.mdx +10 -0
  347. package/docs/content/locales/ko-KR/agent-surfaces.mdx +32 -0
  348. package/docs/content/locales/ko-KR/external-agents.mdx +9 -0
  349. package/docs/content/locales/pt-BR/agent-surfaces.mdx +33 -0
  350. package/docs/content/locales/pt-BR/external-agents.mdx +10 -0
  351. package/docs/content/locales/zh-CN/agent-surfaces.mdx +29 -0
  352. package/docs/content/locales/zh-CN/external-agents.mdx +8 -0
  353. package/docs/content/locales/zh-TW/agent-surfaces.mdx +29 -0
  354. package/docs/content/locales/zh-TW/external-agents.mdx +8 -0
  355. package/package.json +1 -1
  356. package/src/templates/default/app/routes/_index.tsx +11 -0
  357. package/src/templates/default/app/routes/agent.tsx +33 -0
  358. package/src/templates/workspace-core/.agents/skills/agent-native-toolkit/SKILL.md +6 -0
  359. package/src/templates/workspace-core/.agents/skills/agent-page/SKILL.md +59 -0
  360. package/src/templates/workspace-core/.agents/skills/context-xray/SKILL.md +25 -0
  361. package/src/templates/workspace-core/.agents/skills/external-agents/SKILL.md +7 -0
  362. package/src/templates/workspace-core/.agents/skills/recurring-jobs/SKILL.md +9 -0
@@ -11,7 +11,7 @@ import {
11
11
  useT,
12
12
  } from "@agent-native/core/client";
13
13
  import { Layout as AppLayout } from "@agent-native/dispatch/components";
14
- import { IconSun, IconMoon } from "@tabler/icons-react";
14
+ import { IconBrain, IconSun, IconMoon } from "@tabler/icons-react";
15
15
  import { useQueryClient } from "@tanstack/react-query";
16
16
  import { useTheme } from "next-themes";
17
17
  import { useCallback, useEffect, useRef, useState } from "react";
@@ -177,6 +177,7 @@ function ThemeToggleItem() {
177
177
  function AppContent() {
178
178
  const [cmdkOpen, setCmdkOpen] = useState(false);
179
179
  const t = useT();
180
+ const navigate = useNavigate();
180
181
  useCommandMenuShortcut(useCallback(() => setCmdkOpen(true), []));
181
182
  return (
182
183
  <>
@@ -188,6 +189,10 @@ function AppContent() {
188
189
  changelogKey="dispatch"
189
190
  >
190
191
  <CommandMenu.Group heading={t("root.commandActions")}>
192
+ <CommandMenu.Item onSelect={() => navigate("/agent")}>
193
+ <IconBrain size={16} />
194
+ {t("root.openAgent")}
195
+ </CommandMenu.Item>
191
196
  <CommandMenu.Item onSelect={() => {}}>
192
197
  {t("root.commandSearch")}
193
198
  </CommandMenu.Item>
@@ -196,7 +201,7 @@ function AppContent() {
196
201
  <ThemeToggleItem />
197
202
  </CommandMenu.Group>
198
203
  </CommandMenu>
199
- <AppLayout extensions={dispatchExtensions}>
204
+ <AppLayout extensions={dispatchExtensions} agentPageHref="/agent">
200
205
  <Outlet />
201
206
  </AppLayout>
202
207
  </>
@@ -0,0 +1,18 @@
1
+ import { AgentTabsPage, useT } from "@agent-native/core/client";
2
+ import { DispatchShell } from "@agent-native/dispatch/components";
3
+
4
+ import { messagesByLocale } from "@/i18n-data";
5
+
6
+ export function meta() {
7
+ return [{ title: messagesByLocale["en-US"].settings.agentTitle }];
8
+ }
9
+
10
+ export default function AgentRoute() {
11
+ const t = useT();
12
+
13
+ return (
14
+ <DispatchShell title={t("settings.agentTitle")}>
15
+ <AgentTabsPage />
16
+ </DispatchShell>
17
+ );
18
+ }
@@ -0,0 +1,6 @@
1
+ ---
2
+ type: added
3
+ date: 2026-07-13
4
+ ---
5
+
6
+ New Agent page: see and manage your agent's context, files, connections, jobs, and external access in one place
@@ -88,6 +88,7 @@ export function Layout({ children }: LayoutProps) {
88
88
  ) : (
89
89
  <AgentSidebar
90
90
  position="right"
91
+ agentPageHref="/agent"
91
92
  defaultOpen
92
93
  chatViewTransition
93
94
  storageKey="forms"
@@ -15,6 +15,7 @@ import {
15
15
  IconMenu2,
16
16
  IconX,
17
17
  IconMessageCircle,
18
+ IconBrain,
18
19
  IconSettings,
19
20
  IconForms,
20
21
  IconLayoutSidebarLeftCollapse,
@@ -273,6 +274,26 @@ export function Sidebar() {
273
274
  {newFormPopover}
274
275
  </Popover>
275
276
 
277
+ <Tooltip>
278
+ <TooltipTrigger asChild>
279
+ <Link
280
+ to="/agent"
281
+ aria-label={t("navigation.agent")}
282
+ className={cn(
283
+ "forms-sidebar-nav-item flex size-10 items-center justify-center rounded-lg active:scale-[0.96] transition-[background-color,box-shadow,color,transform]",
284
+ location.pathname.startsWith("/agent")
285
+ ? "bg-accent text-accent-foreground"
286
+ : "text-muted-foreground hover:bg-accent/50 hover:text-foreground",
287
+ )}
288
+ >
289
+ <IconBrain className="h-4 w-4" />
290
+ </Link>
291
+ </TooltipTrigger>
292
+ <TooltipContent side="right">
293
+ {t("navigation.agent")}
294
+ </TooltipContent>
295
+ </Tooltip>
296
+
276
297
  <Tooltip>
277
298
  <TooltipTrigger asChild>
278
299
  <Link
@@ -411,6 +432,20 @@ export function Sidebar() {
411
432
 
412
433
  {/* Pinned nav + footer */}
413
434
  <div className="shrink-0 px-3 py-1.5">
435
+ <Link
436
+ to="/agent"
437
+ onClick={() => isMobile && setMobileOpen(false)}
438
+ className={cn(
439
+ "forms-sidebar-nav-item flex min-h-[44px] w-full items-center gap-2.5 rounded-lg px-3 py-2 text-sm active:scale-[0.96] transition-[background-color,box-shadow,color,transform]",
440
+ location.pathname.startsWith("/agent")
441
+ ? "bg-accent text-accent-foreground"
442
+ : "text-muted-foreground hover:bg-accent/50 hover:text-foreground",
443
+ )}
444
+ >
445
+ <IconBrain size={14} className="shrink-0" />
446
+ <span>{t("navigation.agent")}</span>
447
+ </Link>
448
+
414
449
  <Link
415
450
  to="/settings"
416
451
  onClick={() => isMobile && setMobileOpen(false)}
@@ -4,6 +4,7 @@ const messages = {
4
4
  searchForms: "بحث في النماذج",
5
5
  appearance: "المظهر",
6
6
  toggleTheme: "تبديل السمة",
7
+ openAgent: "فتح الوكيل",
7
8
  },
8
9
  header: {
9
10
  settings: "الإعدادات",
@@ -19,6 +20,7 @@ const messages = {
19
20
  askForms: "اسأل Forms",
20
21
  allForms: "كل النماذج",
21
22
  team: "الفريق",
23
+ agent: "الوكيل",
22
24
  },
23
25
  settings: {
24
26
  title: "الإعدادات",
@@ -4,6 +4,7 @@ const messages = {
4
4
  searchForms: "Formulare suchen",
5
5
  appearance: "Darstellung",
6
6
  toggleTheme: "Design wechseln",
7
+ openAgent: "Agent öffnen",
7
8
  },
8
9
  header: {
9
10
  settings: "Einstellungen",
@@ -19,6 +20,7 @@ const messages = {
19
20
  askForms: "Fragen Sie nach Formularen",
20
21
  allForms: "Alle Formulare",
21
22
  team: "Team",
23
+ agent: "Agent",
22
24
  },
23
25
  settings: {
24
26
  title: "Einstellungen",
@@ -4,6 +4,7 @@ const messages = {
4
4
  searchForms: "Search forms",
5
5
  appearance: "Appearance",
6
6
  toggleTheme: "Toggle theme",
7
+ openAgent: "Open Agent",
7
8
  },
8
9
  header: {
9
10
  settings: "Settings",
@@ -19,6 +20,7 @@ const messages = {
19
20
  askForms: "Ask Forms",
20
21
  allForms: "All forms",
21
22
  team: "Team",
23
+ agent: "Agent",
22
24
  },
23
25
  settings: {
24
26
  title: "Settings",
@@ -4,6 +4,7 @@ const messages = {
4
4
  searchForms: "Buscar formularios",
5
5
  appearance: "Apariencia",
6
6
  toggleTheme: "Cambiar tema",
7
+ openAgent: "Abrir agente",
7
8
  },
8
9
  header: {
9
10
  settings: "Ajustes",
@@ -19,6 +20,7 @@ const messages = {
19
20
  askForms: "Preguntar a Forms",
20
21
  allForms: "Todos los formularios",
21
22
  team: "Equipo",
23
+ agent: "Agente",
22
24
  },
23
25
  settings: {
24
26
  title: "Ajustes",
@@ -4,6 +4,7 @@ const messages = {
4
4
  searchForms: "Rechercher des formulaires",
5
5
  appearance: "Apparence",
6
6
  toggleTheme: "Changer de theme",
7
+ openAgent: "Ouvrir l’agent",
7
8
  },
8
9
  header: {
9
10
  settings: "Paramètres",
@@ -19,6 +20,7 @@ const messages = {
19
20
  askForms: "Demander a Forms",
20
21
  allForms: "Tous les formulaires",
21
22
  team: "Equipe",
23
+ agent: "Agent",
22
24
  },
23
25
  settings: {
24
26
  title: "Paramètres",
@@ -4,6 +4,7 @@ const messages = {
4
4
  searchForms: "फॉर्म खोजें",
5
5
  appearance: "दिखावट",
6
6
  toggleTheme: "थीम बदलें",
7
+ openAgent: "एजेंट खोलें",
7
8
  },
8
9
  header: {
9
10
  settings: "सेटिंग्स",
@@ -19,6 +20,7 @@ const messages = {
19
20
  askForms: "प्रपत्र पूछें",
20
21
  allForms: "सभी फॉर्म",
21
22
  team: "टीम",
23
+ agent: "एजेंट",
22
24
  },
23
25
  settings: {
24
26
  title: "सेटिंग्स",
@@ -4,6 +4,7 @@ const messages = {
4
4
  searchForms: "フォームを検索",
5
5
  appearance: "表示",
6
6
  toggleTheme: "テーマを切り替え",
7
+ openAgent: "エージェントを開く",
7
8
  },
8
9
  header: {
9
10
  settings: "設定",
@@ -19,6 +20,7 @@ const messages = {
19
20
  askForms: "フォームに質問する",
20
21
  allForms: "すべてのフォーム",
21
22
  team: "チーム",
23
+ agent: "エージェント",
22
24
  },
23
25
  settings: {
24
26
  title: "設定",
@@ -4,6 +4,7 @@ const messages = {
4
4
  searchForms: "양식 검색",
5
5
  appearance: "모양",
6
6
  toggleTheme: "테마 전환",
7
+ openAgent: "에이전트 열기",
7
8
  },
8
9
  header: {
9
10
  settings: "설정",
@@ -19,6 +20,7 @@ const messages = {
19
20
  askForms: "양식에 문의하기",
20
21
  allForms: "모든 양식",
21
22
  team: "팀",
23
+ agent: "에이전트",
22
24
  },
23
25
  settings: {
24
26
  title: "설정",
@@ -4,6 +4,7 @@ const messages = {
4
4
  searchForms: "Pesquisar formularios",
5
5
  appearance: "Aparencia",
6
6
  toggleTheme: "Alternar tema",
7
+ openAgent: "Abrir agente",
7
8
  },
8
9
  header: {
9
10
  settings: "Configurações",
@@ -19,6 +20,7 @@ const messages = {
19
20
  askForms: "Perguntar ao Forms",
20
21
  allForms: "Todos os formulários",
21
22
  team: "Equipe",
23
+ agent: "Agente",
22
24
  },
23
25
  settings: {
24
26
  title: "Configurações",
@@ -4,6 +4,7 @@ const messages = {
4
4
  searchForms: "搜索表单",
5
5
  appearance: "外观",
6
6
  toggleTheme: "切换主题",
7
+ openAgent: "打开代理",
7
8
  },
8
9
  header: {
9
10
  settings: "设置",
@@ -19,6 +20,7 @@ const messages = {
19
20
  askForms: "询问表单",
20
21
  allForms: "所有表单",
21
22
  team: "团队",
23
+ agent: "代理",
22
24
  },
23
25
  settings: {
24
26
  title: "设置",
@@ -4,6 +4,7 @@ const messages = {
4
4
  searchForms: "搜尋表單",
5
5
  appearance: "外觀",
6
6
  toggleTheme: "切換主題",
7
+ openAgent: "開啟代理",
7
8
  },
8
9
  header: {
9
10
  settings: "設定",
@@ -19,6 +20,7 @@ const messages = {
19
20
  askForms: "詢問表單",
20
21
  allForms: "所有表單",
21
22
  team: "團隊",
23
+ agent: "代理",
22
24
  },
23
25
  settings: {
24
26
  title: "設定",
@@ -13,7 +13,7 @@ import {
13
13
  setClientAppState,
14
14
  useT,
15
15
  } from "@agent-native/core/client";
16
- import { IconSun, IconMoon } from "@tabler/icons-react";
16
+ import { IconBrain, IconSun, IconMoon } from "@tabler/icons-react";
17
17
  import { useQueryClient } from "@tanstack/react-query";
18
18
  import { useTheme } from "next-themes";
19
19
  import { useCallback, useEffect, useState } from "react";
@@ -235,6 +235,7 @@ function FormsCommandMenu({
235
235
  onOpenChange: (open: boolean) => void;
236
236
  }) {
237
237
  const t = useT();
238
+ const navigate = useNavigate();
238
239
  return (
239
240
  <CommandMenu
240
241
  open={open}
@@ -246,6 +247,10 @@ function FormsCommandMenu({
246
247
  <CommandMenu.Item onSelect={() => {}}>
247
248
  {t("root.searchForms")}
248
249
  </CommandMenu.Item>
250
+ <CommandMenu.Item onSelect={() => navigate("/agent")}>
251
+ <IconBrain size={16} />
252
+ {t("root.openAgent")}
253
+ </CommandMenu.Item>
249
254
  </CommandMenu.Group>
250
255
  <CommandMenu.Group heading={t("root.appearance")}>
251
256
  <ThemeToggleItem />
@@ -0,0 +1,15 @@
1
+ import { AgentTabsPage, useT } from "@agent-native/core/client";
2
+ import { useSetPageTitle } from "@agent-native/toolkit/app-shell";
3
+
4
+ import messages from "@/i18n/en-US";
5
+
6
+ export function meta() {
7
+ return [{ title: messages.settings.agentTitle }];
8
+ }
9
+
10
+ export default function AgentRoute() {
11
+ const t = useT();
12
+ useSetPageTitle(t("settings.agentTitle"));
13
+
14
+ return <AgentTabsPage />;
15
+ }
@@ -0,0 +1,6 @@
1
+ ---
2
+ type: added
3
+ date: 2026-07-13
4
+ ---
5
+
6
+ New Agent page: see and manage your agent's context, files, connections, jobs, and external access in one place
@@ -13,6 +13,7 @@ import {
13
13
  IconFlame,
14
14
  IconLoader2,
15
15
  IconChartBar,
16
+ IconBrain,
16
17
  IconSettings,
17
18
  IconLayoutSidebarLeftCollapse,
18
19
  IconLayoutSidebarLeftExpand,
@@ -41,6 +42,7 @@ import { Header } from "./Header";
41
42
  const navItems = [
42
43
  { icon: IconFlame, labelKey: "navigation.entry", href: "/" },
43
44
  { icon: IconChartBar, labelKey: "navigation.analytics", href: "/analytics" },
45
+ { icon: IconBrain, labelKey: "settings.agentTitle", href: "/agent" },
44
46
  { icon: IconSettings, labelKey: "navigation.settings", href: "/settings" },
45
47
  ];
46
48
 
@@ -58,6 +60,7 @@ export function AppLayout({ children }: { children: React.ReactNode }) {
58
60
 
59
61
  const isAnalytics = location.pathname === "/analytics";
60
62
  const isSettings = location.pathname.startsWith("/settings");
63
+ const isAgent = location.pathname.startsWith("/agent");
61
64
 
62
65
  // Auto-close sidebar on route change (mobile)
63
66
  useEffect(() => {
@@ -73,12 +76,18 @@ export function AppLayout({ children }: { children: React.ReactNode }) {
73
76
 
74
77
  // Navigation state sync - write current view to application state
75
78
  useEffect(() => {
76
- const view = isSettings ? "settings" : isAnalytics ? "analytics" : "entry";
79
+ const view = isAgent
80
+ ? "agent"
81
+ : isSettings
82
+ ? "settings"
83
+ : isAnalytics
84
+ ? "analytics"
85
+ : "entry";
77
86
  apiFetch(agentNativePath("/_agent-native/application-state/navigation"), {
78
87
  method: "PUT",
79
88
  body: JSON.stringify({ view, path: location.pathname }),
80
89
  }).catch(() => {});
81
- }, [location.pathname, isAnalytics, isSettings]);
90
+ }, [location.pathname, isAgent, isAnalytics, isSettings]);
82
91
 
83
92
  // useDbSync invalidates this key when the agent writes a navigate command.
84
93
  const { data: navCommand } = useQuery({
@@ -108,6 +117,8 @@ export function AppLayout({ children }: { children: React.ReactNode }) {
108
117
  navigate("/analytics");
109
118
  } else if (cmd.view === "settings") {
110
119
  navigate("/settings");
120
+ } else if (cmd.view === "agent") {
121
+ navigate("/agent");
111
122
  } else if (cmd.view === "entry") {
112
123
  navigate("/");
113
124
  }
@@ -131,6 +142,7 @@ export function AppLayout({ children }: { children: React.ReactNode }) {
131
142
  t("agent.suggestionMacros"),
132
143
  t("agent.suggestionRun"),
133
144
  ]}
145
+ agentPageHref="/agent"
134
146
  >
135
147
  <div className="agent-layout-shell flex flex-1 overflow-hidden">
136
148
  {/* Desktop sidebar */}
@@ -10,6 +10,7 @@ const pageTitles: Record<string, string> = {
10
10
  "/": "header.entry",
11
11
  "/entry": "header.entry",
12
12
  "/analytics": "header.analytics",
13
+ "/agent": "settings.agentTitle",
13
14
  "/settings": "header.settings",
14
15
  "/extensions": "header.extensions",
15
16
  };
@@ -10,11 +10,18 @@ import {
10
10
  useCommandMenuShortcut,
11
11
  useT,
12
12
  } from "@agent-native/core/client";
13
- import { IconSun, IconMoon } from "@tabler/icons-react";
13
+ import { IconBrain, IconSun, IconMoon } from "@tabler/icons-react";
14
14
  import { useQueryClient } from "@tanstack/react-query";
15
15
  import { useTheme } from "next-themes";
16
16
  import { useCallback, useState } from "react";
17
- import { Links, Meta, Outlet, Scripts, ScrollRestoration } from "react-router";
17
+ import {
18
+ Links,
19
+ Meta,
20
+ Outlet,
21
+ Scripts,
22
+ ScrollRestoration,
23
+ useNavigate,
24
+ } from "react-router";
18
25
  import type { LinksFunction } from "react-router";
19
26
 
20
27
  import { AppLayout } from "@/components/layout/AppLayout";
@@ -145,6 +152,7 @@ function MacrosCommandMenu({
145
152
  onOpenChange: (open: boolean) => void;
146
153
  }) {
147
154
  const t = useT();
155
+ const navigate = useNavigate();
148
156
  return (
149
157
  <CommandMenu
150
158
  open={open}
@@ -156,6 +164,13 @@ function MacrosCommandMenu({
156
164
  <CommandMenu.Item onSelect={() => {}}>
157
165
  {t("root.search")}
158
166
  </CommandMenu.Item>
167
+ <CommandMenu.Item
168
+ onSelect={() => navigate("/agent")}
169
+ keywords={["agent", "context", "connections", "jobs", "access"]}
170
+ >
171
+ <IconBrain size={16} />
172
+ {t("settings.openAgentSettings")}
173
+ </CommandMenu.Item>
159
174
  </CommandMenu.Group>
160
175
  <CommandMenu.Group heading={t("root.appearance")}>
161
176
  <ThemeToggleItem />
@@ -0,0 +1,15 @@
1
+ import { AgentTabsPage, useT } from "@agent-native/core/client";
2
+ import { useSetPageTitle } from "@agent-native/toolkit/app-shell";
3
+
4
+ import messages from "@/i18n/en-US";
5
+
6
+ export function meta() {
7
+ return [{ title: messages.settings.agentTitle }];
8
+ }
9
+
10
+ export default function AgentRoute() {
11
+ const t = useT();
12
+ useSetPageTitle(t("settings.agentTitle"));
13
+
14
+ return <AgentTabsPage appName="Macros" />;
15
+ }
@@ -0,0 +1,6 @@
1
+ ---
2
+ type: added
3
+ date: 2026-07-13
4
+ ---
5
+
6
+ New Agent page: see and manage your agent's context, files, connections, jobs, and external access in one place
@@ -13,6 +13,7 @@ import { normalizeMailLabel } from "@shared/gmail-labels";
13
13
  import type { Label } from "@shared/types";
14
14
  import {
15
15
  IconMenu2,
16
+ IconBrain,
16
17
  IconSettings,
17
18
  IconSearch,
18
19
  IconCheck,
@@ -144,6 +145,7 @@ function AccountAvatar({
144
145
  function isStandardLayoutPath(pathname: string): boolean {
145
146
  return (
146
147
  pathname === "/settings" ||
148
+ pathname === "/agent" ||
147
149
  pathname === "/team" ||
148
150
  pathname === "/draft-queue" ||
149
151
  pathname.startsWith("/draft-queue/") ||
@@ -195,6 +197,7 @@ export function AppLayout({ children }: AppLayoutProps) {
195
197
  <AgentSidebar
196
198
  position="right"
197
199
  defaultOpen={!isMobile}
200
+ agentPageHref="/agent"
198
201
  emptyStateText={t("agent.emptyState")}
199
202
  suggestions={[
200
203
  t("agent.suggestionSummarize"),
@@ -1748,6 +1751,25 @@ function AppLayoutInner({ children }: AppLayoutProps) {
1748
1751
  <div className="flex items-center gap-1 px-2 py-2">
1749
1752
  <DevDatabaseLink />
1750
1753
  <FeedbackButton className="min-w-0 flex-1" />
1754
+ <Tooltip>
1755
+ <TooltipTrigger asChild>
1756
+ <Link
1757
+ to="/agent"
1758
+ onClick={closeSidebar}
1759
+ aria-label={t("settings.openAgentSettings")}
1760
+ className={cn(
1761
+ "flex h-8 w-8 shrink-0 items-center justify-center rounded-md text-muted-foreground transition-colors hover:bg-accent/50 hover:text-foreground",
1762
+ location.pathname === "/agent" &&
1763
+ "bg-accent/60 text-foreground",
1764
+ )}
1765
+ >
1766
+ <IconBrain className="h-4 w-4" />
1767
+ </Link>
1768
+ </TooltipTrigger>
1769
+ <TooltipContent>
1770
+ {t("settings.openAgentSettings")}
1771
+ </TooltipContent>
1772
+ </Tooltip>
1751
1773
  <Tooltip>
1752
1774
  <TooltipTrigger asChild>
1753
1775
  <Link
@@ -1967,6 +1989,7 @@ function StandardLayout({ children }: AppLayoutProps) {
1967
1989
 
1968
1990
  const fallbackTitle = (() => {
1969
1991
  if (location.pathname === "/settings") return t("settings.title");
1992
+ if (location.pathname === "/agent") return t("settings.agentTitle");
1970
1993
  if (location.pathname === "/team") return t("mail.pages.team");
1971
1994
  if (location.pathname.startsWith("/draft-queue"))
1972
1995
  return t("mail.views.draftQueue");
@@ -2101,6 +2124,25 @@ function StandardLayout({ children }: AppLayoutProps) {
2101
2124
  <DevDatabaseLink />
2102
2125
  <FeedbackButton className="min-w-0 flex-1" />
2103
2126
  <div className="flex shrink-0 items-center gap-0.5">
2127
+ <Tooltip>
2128
+ <TooltipTrigger asChild>
2129
+ <Link
2130
+ to="/agent"
2131
+ onClick={() => setSidebarOpen(false)}
2132
+ aria-label={t("settings.openAgentSettings")}
2133
+ className={cn(
2134
+ "flex h-8 w-8 items-center justify-center rounded-md text-muted-foreground transition-colors hover:bg-accent/50 hover:text-foreground",
2135
+ location.pathname === "/agent" &&
2136
+ "bg-accent/60 text-foreground",
2137
+ )}
2138
+ >
2139
+ <IconBrain className="h-4 w-4" />
2140
+ </Link>
2141
+ </TooltipTrigger>
2142
+ <TooltipContent>
2143
+ {t("settings.openAgentSettings")}
2144
+ </TooltipContent>
2145
+ </Tooltip>
2104
2146
  <Tooltip>
2105
2147
  <TooltipTrigger asChild>
2106
2148
  <Link
@@ -1,5 +1,6 @@
1
1
  import { CommandMenu, useT } from "@agent-native/core/client";
2
2
  import {
3
+ IconBrain,
3
4
  IconInbox,
4
5
  IconStar,
5
6
  IconSend,
@@ -74,6 +75,11 @@ const navCommands = [
74
75
  shortcut: "G A",
75
76
  },
76
77
  { labelKey: "commandPalette.goToTrash", icon: IconTrash, route: "/trash" },
78
+ {
79
+ labelKey: "settings.openAgentSettings",
80
+ icon: IconBrain,
81
+ route: "/agent",
82
+ },
77
83
  ];
78
84
 
79
85
  export function CommandPalette({
@@ -0,0 +1,15 @@
1
+ import { AgentTabsPage, useT } from "@agent-native/core/client";
2
+ import { useSetPageTitle } from "@agent-native/toolkit/app-shell";
3
+
4
+ import messages from "@/i18n/en-US";
5
+
6
+ export function meta() {
7
+ return [{ title: messages.settings.agentTitle }];
8
+ }
9
+
10
+ export default function AgentRoute() {
11
+ const t = useT();
12
+ useSetPageTitle(t("settings.agentTitle"));
13
+
14
+ return <AgentTabsPage appName="Mail" />;
15
+ }
@@ -0,0 +1,6 @@
1
+ ---
2
+ type: added
3
+ date: 2026-07-13
4
+ ---
5
+
6
+ New Agent page: see and manage your agent's context, files, connections, jobs, and external access in one place
@@ -11,6 +11,7 @@ import { APP_TITLE } from "@/lib/app-config";
11
11
  const pageTitleKeys: Record<string, string> = {
12
12
  "/": "header.plan",
13
13
  "/plans": "header.plan",
14
+ "/agent": "settings.agentTitle",
14
15
  "/settings": "header.settings",
15
16
  };
16
17
 
@@ -204,6 +204,7 @@ export function Layout({ children }: LayoutProps) {
204
204
  chatViewTransition
205
205
  storageKey="plans"
206
206
  openOnChatRunning={chatHomeHandoffActive}
207
+ agentPageHref="/agent"
207
208
  emptyStateText={t("agent.emptyState")}
208
209
  suggestions={[
209
210
  t("agent.suggestionShipped"),
@@ -18,6 +18,7 @@ import { ExtensionsSidebarSection } from "@agent-native/core/client/extensions";
18
18
  import { OrgSwitcher } from "@agent-native/core/client/org";
19
19
  import {
20
20
  IconArchive,
21
+ IconBrain,
21
22
  IconClipboardCheck,
22
23
  IconDots,
23
24
  IconEdit,
@@ -87,6 +88,7 @@ function buildBrandingCustomizationMessage(request: string) {
87
88
  const navItems = [
88
89
  { icon: IconMessageCircle, labelKey: "navigation.ask", href: "/" },
89
90
  { icon: IconClipboardCheck, labelKey: "navigation.plan", href: "/plans" },
91
+ { icon: IconBrain, labelKey: "settings.agentTitle", href: "/agent" },
90
92
  { icon: IconSettings, labelKey: "navigation.settings", href: "/settings" },
91
93
  ];
92
94