@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
@@ -0,0 +1,370 @@
1
+ import { Button } from "@agent-native/toolkit/ui/button";
2
+ import {
3
+ IconClock,
4
+ IconEye,
5
+ IconLoader2,
6
+ IconPlayerPause,
7
+ IconPlayerPlay,
8
+ IconTrash,
9
+ } from "@tabler/icons-react";
10
+ import { useState } from "react";
11
+
12
+ import {
13
+ Dialog,
14
+ DialogContent,
15
+ DialogDescription,
16
+ DialogFooter,
17
+ DialogHeader,
18
+ DialogTitle,
19
+ } from "../components/ui/dialog.js";
20
+ import { useFormatters, useT } from "../i18n.js";
21
+ import { AutomationsList } from "../settings/AutomationsSection.js";
22
+ import type { AgentPageTabProps } from "./types.js";
23
+ import {
24
+ useManageRecurringJob,
25
+ useRecurringJobs,
26
+ type RecurringJob,
27
+ } from "./use-jobs.js";
28
+
29
+ export function AgentJobsTab({
30
+ scope,
31
+ canManageOrg = false,
32
+ }: AgentPageTabProps) {
33
+ const t = useT();
34
+ const { formatDate } = useFormatters();
35
+ const query = useRecurringJobs(scope);
36
+ const mutation = useManageRecurringJob(scope);
37
+ const [deleteTarget, setDeleteTarget] = useState<RecurringJob | null>(null);
38
+ const [detailsTarget, setDetailsTarget] = useState<RecurringJob | null>(null);
39
+
40
+ const formatDateTime = (value: string | null) => {
41
+ if (!value || Number.isNaN(new Date(value).getTime())) return null;
42
+ return formatDate(value, {
43
+ month: "short",
44
+ day: "numeric",
45
+ hour: "numeric",
46
+ minute: "2-digit",
47
+ });
48
+ };
49
+
50
+ const jobs = query.data ?? [];
51
+
52
+ return (
53
+ <div className="mx-auto flex w-full max-w-5xl flex-col gap-8 p-6 lg:p-10">
54
+ <header className="space-y-3">
55
+ <p className="text-xs font-medium uppercase tracking-[0.16em] text-muted-foreground">
56
+ {t("jobs.agent", { defaultValue: "Agent" })}
57
+ </p>
58
+ <div>
59
+ <h1 className="text-2xl font-semibold tracking-tight">
60
+ {t("jobs.pageTitle", { defaultValue: "Jobs" })}
61
+ </h1>
62
+ <p className="mt-1 max-w-2xl text-sm leading-relaxed text-muted-foreground">
63
+ {t("jobs.pageDescription", {
64
+ defaultValue:
65
+ "See recurring jobs and automations that run work for you.",
66
+ })}
67
+ </p>
68
+ </div>
69
+ </header>
70
+
71
+ <section className="space-y-4">
72
+ <div className="flex flex-wrap items-end justify-between gap-3">
73
+ <div>
74
+ <h2 className="text-lg font-semibold">
75
+ {t("jobs.recurringTitle", { defaultValue: "Recurring jobs" })}
76
+ </h2>
77
+ <p className="mt-1 text-sm text-muted-foreground">
78
+ {scope === "org"
79
+ ? t("jobs.organizationRecurringDescription", {
80
+ defaultValue:
81
+ "Cron jobs shared with this organization. Members can view them; creators and admins can manage them.",
82
+ })
83
+ : t("jobs.recurringDescription", {
84
+ defaultValue:
85
+ "Scheduled prompts that ask the agent to do work automatically.",
86
+ })}
87
+ </p>
88
+ </div>
89
+ {scope === "org" && !canManageOrg ? (
90
+ <span className="text-xs text-muted-foreground">
91
+ {t("jobs.organizationMemberNote", {
92
+ defaultValue: "You can manage jobs you created.",
93
+ })}
94
+ </span>
95
+ ) : null}
96
+ </div>
97
+
98
+ {query.isLoading ? (
99
+ <div
100
+ className="flex items-center gap-2 text-sm text-muted-foreground"
101
+ aria-busy="true"
102
+ >
103
+ <IconLoader2 className="size-4 animate-spin" />
104
+ {t("jobs.loading", { defaultValue: "Loading…" })}
105
+ </div>
106
+ ) : query.error ? (
107
+ <p className="text-sm text-destructive">
108
+ {t("jobs.recurringLoadError", {
109
+ defaultValue: "Could not load recurring jobs.",
110
+ })}
111
+ </p>
112
+ ) : jobs.length === 0 ? (
113
+ <div className="rounded-lg border border-dashed border-border p-6 text-center">
114
+ <IconClock className="mx-auto size-5 text-muted-foreground" />
115
+ <p className="mt-2 text-sm text-muted-foreground">
116
+ {scope === "org"
117
+ ? t("jobs.organizationEmpty", {
118
+ defaultValue: "No organization jobs yet.",
119
+ })
120
+ : t("jobs.recurringEmpty", {
121
+ defaultValue:
122
+ "No recurring jobs yet. Ask the agent: “every morning, summarize my inbox”.",
123
+ })}
124
+ </p>
125
+ </div>
126
+ ) : (
127
+ <div className="space-y-3">
128
+ {jobs.map((job) => {
129
+ const lastRun = formatDateTime(job.lastRun);
130
+ const nextRun = formatDateTime(job.nextRun);
131
+ return (
132
+ <article
133
+ key={job.id}
134
+ className="rounded-lg border border-border bg-card p-4"
135
+ >
136
+ <div className="flex items-start gap-3">
137
+ <div className="mt-0.5 text-muted-foreground">
138
+ <IconClock className="size-4" />
139
+ </div>
140
+ <div className="min-w-0 flex-1">
141
+ <div className="flex flex-wrap items-center gap-2">
142
+ <h3 className="truncate text-sm font-medium">
143
+ {job.name.replace(/-/g, " ")}
144
+ </h3>
145
+ <span
146
+ className={
147
+ job.enabled
148
+ ? "rounded-full bg-emerald-500/15 px-2 py-0.5 text-[10px] font-medium text-emerald-600 dark:text-emerald-400"
149
+ : "rounded-full bg-muted px-2 py-0.5 text-[10px] font-medium text-muted-foreground"
150
+ }
151
+ >
152
+ {job.enabled
153
+ ? t("jobs.enabled", { defaultValue: "Enabled" })
154
+ : t("jobs.paused", { defaultValue: "Paused" })}
155
+ </span>
156
+ {job.lastStatus ? (
157
+ <span className="rounded-full bg-muted px-2 py-0.5 text-[10px] font-medium text-muted-foreground">
158
+ {job.lastStatus}
159
+ </span>
160
+ ) : null}
161
+ </div>
162
+ <p className="mt-1 text-sm text-muted-foreground">
163
+ {job.scheduleDescription || job.schedule}
164
+ </p>
165
+ <p className="mt-1 line-clamp-2 text-xs text-muted-foreground/80">
166
+ {job.instructions}
167
+ </p>
168
+ {lastRun || nextRun ? (
169
+ <div className="mt-2 flex flex-wrap gap-x-4 gap-y-1 text-[11px] text-muted-foreground">
170
+ {nextRun ? (
171
+ <span>
172
+ {t("jobs.nextRun", { defaultValue: "Next run" })}:{" "}
173
+ {nextRun}
174
+ </span>
175
+ ) : null}
176
+ {lastRun ? (
177
+ <span>
178
+ {t("jobs.lastRun", { defaultValue: "Last run" })}:{" "}
179
+ {lastRun}
180
+ </span>
181
+ ) : null}
182
+ </div>
183
+ ) : null}
184
+ </div>
185
+ <div className="flex shrink-0 items-center gap-1">
186
+ <Button
187
+ type="button"
188
+ variant="ghost"
189
+ size="sm"
190
+ className="cursor-pointer px-2 text-xs"
191
+ onClick={() => setDetailsTarget(job)}
192
+ >
193
+ <IconEye className="size-3.5" />
194
+ {t("jobs.details", { defaultValue: "Details" })}
195
+ </Button>
196
+ {job.canUpdate ? (
197
+ <>
198
+ <Button
199
+ type="button"
200
+ variant="ghost"
201
+ size="sm"
202
+ className="cursor-pointer px-2 text-xs"
203
+ disabled={mutation.isPending}
204
+ onClick={() =>
205
+ mutation.mutate({
206
+ operation: "update",
207
+ name: job.name,
208
+ scope: job.scope,
209
+ enabled: !job.enabled,
210
+ })
211
+ }
212
+ >
213
+ {job.enabled ? (
214
+ <IconPlayerPause className="size-3.5" />
215
+ ) : (
216
+ <IconPlayerPlay className="size-3.5" />
217
+ )}
218
+ {job.enabled
219
+ ? t("jobs.pause", { defaultValue: "Pause" })
220
+ : t("jobs.resume", { defaultValue: "Resume" })}
221
+ </Button>
222
+ <Button
223
+ type="button"
224
+ variant="ghost"
225
+ size="icon"
226
+ className="size-8 cursor-pointer text-muted-foreground hover:text-destructive"
227
+ aria-label={t("jobs.delete", {
228
+ defaultValue: "Delete",
229
+ })}
230
+ onClick={() => setDeleteTarget(job)}
231
+ >
232
+ <IconTrash className="size-3.5" />
233
+ </Button>
234
+ </>
235
+ ) : null}
236
+ </div>
237
+ </div>
238
+ </article>
239
+ );
240
+ })}
241
+ </div>
242
+ )}
243
+ {mutation.error ? (
244
+ <p className="text-sm text-destructive">
245
+ {mutation.error.message ||
246
+ t("jobs.recurringUpdateError", {
247
+ defaultValue: "Could not update recurring job.",
248
+ })}
249
+ </p>
250
+ ) : null}
251
+ </section>
252
+
253
+ <section className="space-y-4">
254
+ <div>
255
+ <h2 className="text-lg font-semibold">
256
+ {t("jobs.automationsTitle", { defaultValue: "Automations" })}
257
+ </h2>
258
+ <p className="mt-1 text-sm text-muted-foreground">
259
+ {scope === "org"
260
+ ? t("jobs.organizationAutomationsDescription", {
261
+ defaultValue:
262
+ "Automations are personal today, so none are shown in the organization view.",
263
+ })
264
+ : t("jobs.automationsDescription", {
265
+ defaultValue:
266
+ "Event-triggered and scheduled agent tasks managed from one place.",
267
+ })}
268
+ </p>
269
+ </div>
270
+ <AutomationsList
271
+ scope={scope}
272
+ emptyMessage={
273
+ scope === "org"
274
+ ? t("jobs.automationsPersonalOnly", {
275
+ defaultValue: "Automations are personal today.",
276
+ })
277
+ : undefined
278
+ }
279
+ />
280
+ </section>
281
+
282
+ <Dialog
283
+ open={deleteTarget !== null}
284
+ onOpenChange={(open) => {
285
+ if (!open && !mutation.isPending) setDeleteTarget(null);
286
+ }}
287
+ >
288
+ <DialogContent>
289
+ <DialogHeader>
290
+ <DialogTitle>
291
+ {t("jobs.deleteRecurringTitle", {
292
+ defaultValue: "Delete recurring job?",
293
+ })}
294
+ </DialogTitle>
295
+ <DialogDescription>
296
+ {t("jobs.deleteRecurringDescription", {
297
+ defaultValue:
298
+ "This permanently removes the job and cannot be undone.",
299
+ })}
300
+ </DialogDescription>
301
+ </DialogHeader>
302
+ <DialogFooter>
303
+ <Button
304
+ type="button"
305
+ variant="outline"
306
+ className="cursor-pointer"
307
+ disabled={mutation.isPending}
308
+ onClick={() => setDeleteTarget(null)}
309
+ >
310
+ {t("jobs.cancel", { defaultValue: "Cancel" })}
311
+ </Button>
312
+ <Button
313
+ type="button"
314
+ variant="destructive"
315
+ className="cursor-pointer"
316
+ disabled={mutation.isPending}
317
+ onClick={() => {
318
+ if (!deleteTarget) return;
319
+ mutation.mutate(
320
+ {
321
+ operation: "delete",
322
+ name: deleteTarget.name,
323
+ scope: deleteTarget.scope,
324
+ },
325
+ { onSuccess: () => setDeleteTarget(null) },
326
+ );
327
+ }}
328
+ >
329
+ {mutation.isPending ? (
330
+ <IconLoader2 className="size-4 animate-spin" />
331
+ ) : null}
332
+ {t("jobs.delete", { defaultValue: "Delete" })}
333
+ </Button>
334
+ </DialogFooter>
335
+ </DialogContent>
336
+ </Dialog>
337
+
338
+ <Dialog
339
+ open={detailsTarget !== null}
340
+ onOpenChange={(open) => {
341
+ if (!open) setDetailsTarget(null);
342
+ }}
343
+ >
344
+ <DialogContent className="max-w-2xl">
345
+ <DialogHeader>
346
+ <DialogTitle>
347
+ {detailsTarget?.name.replace(/-/g, " ") ??
348
+ t("jobs.recurringDetails", {
349
+ defaultValue: "Recurring job details",
350
+ })}
351
+ </DialogTitle>
352
+ <DialogDescription>
353
+ {detailsTarget?.scheduleDescription || detailsTarget?.schedule}
354
+ </DialogDescription>
355
+ </DialogHeader>
356
+ {detailsTarget ? (
357
+ <div>
358
+ <p className="text-xs font-medium text-foreground">
359
+ {t("jobs.instructions", { defaultValue: "Instructions" })}
360
+ </p>
361
+ <p className="mt-1 whitespace-pre-wrap text-sm text-muted-foreground">
362
+ {detailsTarget.instructions}
363
+ </p>
364
+ </div>
365
+ ) : null}
366
+ </DialogContent>
367
+ </Dialog>
368
+ </div>
369
+ );
370
+ }