@agent-native/core 0.99.2 → 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.
- package/corpus/README.md +2 -2
- package/corpus/core/CHANGELOG.md +21 -0
- package/corpus/core/docs/content/a2a-protocol.mdx +42 -0
- package/corpus/core/docs/content/agent-surfaces.mdx +43 -0
- package/corpus/core/docs/content/external-agents.mdx +11 -0
- package/corpus/core/docs/content/locales/ar-SA/a2a-protocol.mdx +42 -0
- package/corpus/core/docs/content/locales/ar-SA/agent-surfaces.mdx +30 -0
- package/corpus/core/docs/content/locales/ar-SA/external-agents.mdx +9 -0
- package/corpus/core/docs/content/locales/de-DE/a2a-protocol.mdx +42 -0
- package/corpus/core/docs/content/locales/de-DE/agent-surfaces.mdx +34 -0
- package/corpus/core/docs/content/locales/de-DE/external-agents.mdx +10 -0
- package/corpus/core/docs/content/locales/es-ES/a2a-protocol.mdx +42 -0
- package/corpus/core/docs/content/locales/es-ES/agent-surfaces.mdx +34 -0
- package/corpus/core/docs/content/locales/es-ES/external-agents.mdx +10 -0
- package/corpus/core/docs/content/locales/fr-FR/a2a-protocol.mdx +42 -0
- package/corpus/core/docs/content/locales/fr-FR/agent-surfaces.mdx +34 -0
- package/corpus/core/docs/content/locales/fr-FR/external-agents.mdx +11 -0
- package/corpus/core/docs/content/locales/hi-IN/a2a-protocol.mdx +42 -0
- package/corpus/core/docs/content/locales/hi-IN/agent-surfaces.mdx +31 -0
- package/corpus/core/docs/content/locales/hi-IN/external-agents.mdx +9 -0
- package/corpus/core/docs/content/locales/ja-JP/a2a-protocol.mdx +42 -0
- package/corpus/core/docs/content/locales/ja-JP/agent-surfaces.mdx +32 -0
- package/corpus/core/docs/content/locales/ja-JP/external-agents.mdx +10 -0
- package/corpus/core/docs/content/locales/ko-KR/a2a-protocol.mdx +42 -0
- package/corpus/core/docs/content/locales/ko-KR/agent-surfaces.mdx +32 -0
- package/corpus/core/docs/content/locales/ko-KR/external-agents.mdx +9 -0
- package/corpus/core/docs/content/locales/pt-BR/a2a-protocol.mdx +42 -0
- package/corpus/core/docs/content/locales/pt-BR/agent-surfaces.mdx +33 -0
- package/corpus/core/docs/content/locales/pt-BR/external-agents.mdx +10 -0
- package/corpus/core/docs/content/locales/zh-CN/a2a-protocol.mdx +42 -0
- package/corpus/core/docs/content/locales/zh-CN/agent-surfaces.mdx +29 -0
- package/corpus/core/docs/content/locales/zh-CN/external-agents.mdx +8 -0
- package/corpus/core/docs/content/locales/zh-TW/a2a-protocol.mdx +42 -0
- package/corpus/core/docs/content/locales/zh-TW/agent-surfaces.mdx +29 -0
- package/corpus/core/docs/content/locales/zh-TW/external-agents.mdx +8 -0
- package/corpus/core/package.json +1 -1
- package/corpus/core/src/agent/context-xray/actions/context-evict.ts +11 -0
- package/corpus/core/src/agent/context-xray/actions/context-pin.ts +11 -0
- package/corpus/core/src/agent/context-xray/actions/context-preview-get.ts +134 -0
- package/corpus/core/src/agent/context-xray/actions/context-restore.ts +11 -0
- package/corpus/core/src/agent/context-xray/actions/errors.ts +20 -0
- package/corpus/core/src/agent/context-xray/manifest.ts +106 -7
- package/corpus/core/src/agent/engine/context-directives-transform.ts +5 -1
- package/corpus/core/src/agent/production-agent.ts +100 -38
- package/corpus/core/src/agent/run-loop-with-resume.ts +7 -2
- package/corpus/core/src/client/AgentPanel.tsx +35 -8
- package/corpus/core/src/client/agent-page/AgentContextTab.tsx +501 -0
- package/corpus/core/src/client/agent-page/AgentJobsTab.tsx +370 -0
- package/corpus/core/src/client/agent-page/AgentTabsPage.tsx +1084 -0
- package/corpus/core/src/client/agent-page/types.ts +18 -0
- package/corpus/core/src/client/agent-page/use-jobs.ts +150 -0
- package/corpus/core/src/client/context-xray/ContextMeter.tsx +22 -5
- package/corpus/core/src/client/context-xray/ContextTreemap.tsx +16 -1
- package/corpus/core/src/client/context-xray/ContextXRayPanel.tsx +168 -3
- package/corpus/core/src/client/context-xray/format.ts +6 -0
- package/corpus/core/src/client/index.ts +6 -0
- package/corpus/core/src/client/resources/ResourcesPanel.tsx +51 -23
- package/corpus/core/src/client/settings/AutomationsSection.tsx +407 -387
- package/corpus/core/src/jobs/actions/list-recurring-jobs.ts +105 -0
- package/corpus/core/src/jobs/actions/manage-recurring-job.ts +85 -0
- package/corpus/core/src/jobs/tools.ts +1 -1
- package/corpus/core/src/localization/default-messages.ts +110 -0
- package/corpus/core/src/mcp/build-server.ts +1 -0
- package/corpus/core/src/mcp/connect-route.ts +62 -65
- package/corpus/core/src/server/action-discovery.ts +23 -0
- package/corpus/core/src/server/agent-chat/prompt-resources.ts +174 -2
- package/corpus/core/src/server/agent-chat-plugin.ts +175 -2
- package/corpus/core/src/server/auth.ts +1 -7
- package/corpus/core/src/server/google-oauth.ts +1 -7
- package/corpus/core/src/server/workspace-oauth.ts +31 -0
- package/corpus/core/src/shared/context-xray.ts +84 -1
- package/corpus/core/src/shared/mcp-connect-content.ts +130 -0
- package/corpus/core/src/templates/default/app/routes/_index.tsx +11 -0
- package/corpus/core/src/templates/default/app/routes/agent.tsx +33 -0
- package/corpus/core/src/templates/workspace-core/.agents/skills/agent-native-toolkit/SKILL.md +6 -0
- package/corpus/core/src/templates/workspace-core/.agents/skills/agent-page/SKILL.md +59 -0
- package/corpus/core/src/templates/workspace-core/.agents/skills/context-xray/SKILL.md +25 -0
- package/corpus/core/src/templates/workspace-core/.agents/skills/external-agents/SKILL.md +7 -0
- package/corpus/core/src/templates/workspace-core/.agents/skills/recurring-jobs/SKILL.md +9 -0
- package/corpus/core/src/triggers/actions/list-automations.ts +99 -0
- package/corpus/core/src/triggers/actions/manage-automation.ts +78 -0
- package/corpus/templates/analytics/actions/data-source-status.ts +33 -15
- package/corpus/templates/analytics/actions/query-agent-native-analytics.ts +1 -1
- package/corpus/templates/analytics/app/components/dashboard/SqlChart.tsx +149 -24
- package/corpus/templates/analytics/app/components/layout/CommandPalette.tsx +17 -0
- package/corpus/templates/analytics/app/components/layout/Header.tsx +1 -0
- package/corpus/templates/analytics/app/components/layout/Layout.tsx +1 -0
- package/corpus/templates/analytics/app/components/layout/Sidebar.tsx +8 -0
- package/corpus/templates/analytics/app/i18n/zh-TW.ts +1 -0
- package/corpus/templates/analytics/app/i18n-data.ts +1 -0
- package/corpus/templates/analytics/app/routes/agent.tsx +5 -0
- package/corpus/templates/analytics/changelog/2026-07-13-a-full-agent-page-now-brings-context-files-connections-jobs-.md +6 -0
- package/corpus/templates/analytics/changelog/2026-07-13-analytics-answers-can-use-built-in-first-party-event-data.md +6 -0
- package/corpus/templates/analytics/changelog/2026-07-13-chart-legends-can-filter-to-one-series-or-hide-a-series-on-h.md +6 -0
- package/corpus/templates/analytics/changelog/2026-07-13-gpt-5-6-luna-answers-now-recover-normally-instead-of-showing.md +6 -0
- package/corpus/templates/analytics/server/plugins/agent-chat.ts +11 -2
- package/corpus/templates/assets/app/components/layout/Header.tsx +1 -0
- package/corpus/templates/assets/app/components/layout/Layout.tsx +1 -0
- package/corpus/templates/assets/app/components/layout/Sidebar.tsx +2 -0
- package/corpus/templates/assets/app/routes/agent.tsx +5 -0
- package/corpus/templates/assets/changelog/2026-07-13-a-full-agent-page-now-brings-context-files-connections-jobs-.md +6 -0
- package/corpus/templates/brain/app/components/layout/Layout.tsx +1 -0
- package/corpus/templates/brain/app/components/layout/Sidebar.tsx +4 -1
- package/corpus/templates/brain/app/lib/brain.ts +11 -0
- package/corpus/templates/brain/app/root.tsx +15 -1
- package/corpus/templates/brain/app/routes/agent.tsx +11 -0
- package/corpus/templates/brain/changelog/2026-07-13-a-full-agent-page-now-brings-context-files-connections-jobs-.md +6 -0
- package/corpus/templates/calendar/app/components/layout/AppLayout.tsx +1 -0
- package/corpus/templates/calendar/app/components/layout/Sidebar.tsx +2 -0
- package/corpus/templates/calendar/app/root.tsx +17 -1
- package/corpus/templates/calendar/app/routes/_app.agent.tsx +25 -0
- package/corpus/templates/calendar/changelog/2026-07-13-a-full-agent-page-now-brings-context-files-connections-jobs-.md +6 -0
- package/corpus/templates/chat/app/components/layout/Header.tsx +1 -0
- package/corpus/templates/chat/app/components/layout/Layout.tsx +1 -0
- package/corpus/templates/chat/app/components/layout/Sidebar.tsx +7 -0
- package/corpus/templates/chat/app/hooks/use-navigation-state.ts +3 -0
- package/corpus/templates/chat/app/root.tsx +24 -2
- package/corpus/templates/chat/app/routes/agent.tsx +15 -0
- package/corpus/templates/chat/changelog/2026-07-13-a-full-agent-page-now-brings-context-files-connections-jobs-.md +6 -0
- package/corpus/templates/clips/app/components/library/library-layout.tsx +8 -0
- package/corpus/templates/clips/app/i18n/ar-SA.ts +2 -0
- package/corpus/templates/clips/app/i18n/de-DE.ts +2 -0
- package/corpus/templates/clips/app/i18n/en-US.ts +2 -0
- package/corpus/templates/clips/app/i18n/es-ES.ts +2 -0
- package/corpus/templates/clips/app/i18n/fr-FR.ts +2 -0
- package/corpus/templates/clips/app/i18n/hi-IN.ts +2 -0
- package/corpus/templates/clips/app/i18n/ja-JP.ts +2 -0
- package/corpus/templates/clips/app/i18n/ko-KR.ts +2 -0
- package/corpus/templates/clips/app/i18n/pt-BR.ts +2 -0
- package/corpus/templates/clips/app/i18n/zh-CN.ts +2 -0
- package/corpus/templates/clips/app/i18n/zh-TW.ts +2 -0
- package/corpus/templates/clips/app/root.tsx +7 -1
- package/corpus/templates/clips/app/routes/_app.agent.tsx +15 -0
- package/corpus/templates/clips/changelog/2026-07-13-new-agent-page-see-and-manage-your-agent-s-context-files-con.md +6 -0
- package/corpus/templates/content/app/components/layout/Layout.tsx +1 -0
- package/corpus/templates/content/app/components/sidebar/DocumentSidebar.tsx +36 -0
- package/corpus/templates/content/app/i18n/zh-TW.ts +2 -0
- package/corpus/templates/content/app/i18n-data.ts +44 -6
- package/corpus/templates/content/app/root.tsx +8 -0
- package/corpus/templates/content/app/routes/_app.agent.tsx +15 -0
- package/corpus/templates/content/changelog/2026-07-13-new-agent-page-see-and-manage-your-agent-s-context-files-con.md +6 -0
- package/corpus/templates/design/app/components/layout/Layout.tsx +1 -0
- package/corpus/templates/design/app/components/layout/Sidebar.tsx +2 -0
- package/corpus/templates/design/app/i18n/zh-TW.ts +2 -0
- package/corpus/templates/design/app/i18n-data.ts +20 -0
- package/corpus/templates/design/app/root.tsx +7 -1
- package/corpus/templates/design/app/routes/agent.tsx +15 -0
- package/corpus/templates/design/changelog/2026-07-13-new-agent-page-see-and-manage-your-agent-s-context-files-con.md +6 -0
- package/corpus/templates/dispatch/app/dispatch-extensions.tsx +10 -1
- package/corpus/templates/dispatch/app/i18n/zh-TW.ts +2 -0
- package/corpus/templates/dispatch/app/i18n-data.ts +20 -0
- package/corpus/templates/dispatch/app/root.tsx +7 -2
- package/corpus/templates/dispatch/app/routes/agent.tsx +18 -0
- package/corpus/templates/dispatch/changelog/2026-07-13-new-agent-page-see-and-manage-your-agent-s-context-files-con.md +6 -0
- package/corpus/templates/forms/app/components/layout/Layout.tsx +1 -0
- package/corpus/templates/forms/app/components/layout/Sidebar.tsx +35 -0
- package/corpus/templates/forms/app/i18n/ar-SA.ts +2 -0
- package/corpus/templates/forms/app/i18n/de-DE.ts +2 -0
- package/corpus/templates/forms/app/i18n/en-US.ts +2 -0
- package/corpus/templates/forms/app/i18n/es-ES.ts +2 -0
- package/corpus/templates/forms/app/i18n/fr-FR.ts +2 -0
- package/corpus/templates/forms/app/i18n/hi-IN.ts +2 -0
- package/corpus/templates/forms/app/i18n/ja-JP.ts +2 -0
- package/corpus/templates/forms/app/i18n/ko-KR.ts +2 -0
- package/corpus/templates/forms/app/i18n/pt-BR.ts +2 -0
- package/corpus/templates/forms/app/i18n/zh-CN.ts +2 -0
- package/corpus/templates/forms/app/i18n/zh-TW.ts +2 -0
- package/corpus/templates/forms/app/root.tsx +6 -1
- package/corpus/templates/forms/app/routes/_app.agent.tsx +15 -0
- package/corpus/templates/forms/changelog/2026-07-13-new-agent-page-see-and-manage-your-agent-s-context-files-con.md +6 -0
- package/corpus/templates/macros/app/components/layout/AppLayout.tsx +14 -2
- package/corpus/templates/macros/app/components/layout/Header.tsx +1 -0
- package/corpus/templates/macros/app/root.tsx +17 -2
- package/corpus/templates/macros/app/routes/agent.tsx +15 -0
- package/corpus/templates/macros/changelog/2026-07-13-new-agent-page-see-and-manage-your-agent-s-context-files-con.md +6 -0
- package/corpus/templates/mail/app/components/layout/AppLayout.tsx +42 -0
- package/corpus/templates/mail/app/components/layout/CommandPalette.tsx +6 -0
- package/corpus/templates/mail/app/routes/agent.tsx +15 -0
- package/corpus/templates/mail/changelog/2026-07-13-new-agent-page-see-and-manage-your-agent-s-context-files-con.md +6 -0
- package/corpus/templates/plan/app/components/layout/Header.tsx +1 -0
- package/corpus/templates/plan/app/components/layout/Layout.tsx +1 -0
- package/corpus/templates/plan/app/components/layout/Sidebar.tsx +2 -0
- package/corpus/templates/plan/app/root.tsx +8 -0
- package/corpus/templates/plan/app/routes/agent.tsx +15 -0
- package/corpus/templates/plan/changelog/2026-07-13-new-agent-page-see-and-manage-your-agent-s-context-files-con.md +6 -0
- package/corpus/templates/slides/app/components/layout/Header.tsx +1 -0
- package/corpus/templates/slides/app/components/layout/Layout.tsx +1 -0
- package/corpus/templates/slides/app/components/layout/Sidebar.tsx +2 -0
- package/corpus/templates/slides/app/root.tsx +10 -1
- package/corpus/templates/slides/app/routes/agent.tsx +15 -0
- package/corpus/templates/slides/changelog/2026-07-13-new-agent-page-see-and-manage-your-agent-s-context-files-con.md +6 -0
- package/dist/agent/context-xray/actions/context-evict.js +5 -2
- package/dist/agent/context-xray/actions/context-evict.js.map +1 -1
- package/dist/agent/context-xray/actions/context-pin.js +5 -2
- package/dist/agent/context-xray/actions/context-pin.js.map +1 -1
- package/dist/agent/context-xray/actions/context-preview-get.d.ts +17 -0
- package/dist/agent/context-xray/actions/context-preview-get.d.ts.map +1 -0
- package/dist/agent/context-xray/actions/context-preview-get.js +94 -0
- package/dist/agent/context-xray/actions/context-preview-get.js.map +1 -0
- package/dist/agent/context-xray/actions/context-restore.js +5 -2
- package/dist/agent/context-xray/actions/context-restore.js.map +1 -1
- package/dist/agent/context-xray/actions/errors.d.ts +3 -0
- package/dist/agent/context-xray/actions/errors.d.ts.map +1 -1
- package/dist/agent/context-xray/actions/errors.js +6 -0
- package/dist/agent/context-xray/actions/errors.js.map +1 -1
- package/dist/agent/context-xray/manifest.d.ts +18 -1
- package/dist/agent/context-xray/manifest.d.ts.map +1 -1
- package/dist/agent/context-xray/manifest.js +68 -6
- package/dist/agent/context-xray/manifest.js.map +1 -1
- package/dist/agent/engine/context-directives-transform.d.ts +2 -0
- package/dist/agent/engine/context-directives-transform.d.ts.map +1 -1
- package/dist/agent/engine/context-directives-transform.js +2 -1
- package/dist/agent/engine/context-directives-transform.js.map +1 -1
- package/dist/agent/production-agent.d.ts +15 -0
- package/dist/agent/production-agent.d.ts.map +1 -1
- package/dist/agent/production-agent.js +74 -36
- package/dist/agent/production-agent.js.map +1 -1
- package/dist/agent/run-loop-with-resume.d.ts.map +1 -1
- package/dist/agent/run-loop-with-resume.js +6 -3
- package/dist/agent/run-loop-with-resume.js.map +1 -1
- package/dist/client/AgentPanel.d.ts +5 -1
- package/dist/client/AgentPanel.d.ts.map +1 -1
- package/dist/client/AgentPanel.js +9 -11
- package/dist/client/AgentPanel.js.map +1 -1
- package/dist/client/agent-page/AgentContextTab.d.ts +5 -0
- package/dist/client/agent-page/AgentContextTab.d.ts.map +1 -0
- package/dist/client/agent-page/AgentContextTab.js +202 -0
- package/dist/client/agent-page/AgentContextTab.js.map +1 -0
- package/dist/client/agent-page/AgentJobsTab.d.ts +3 -0
- package/dist/client/agent-page/AgentJobsTab.d.ts.map +1 -0
- package/dist/client/agent-page/AgentJobsTab.js +98 -0
- package/dist/client/agent-page/AgentJobsTab.js.map +1 -0
- package/dist/client/agent-page/AgentTabsPage.d.ts +20 -0
- package/dist/client/agent-page/AgentTabsPage.d.ts.map +1 -0
- package/dist/client/agent-page/AgentTabsPage.js +420 -0
- package/dist/client/agent-page/AgentTabsPage.js.map +1 -0
- package/dist/client/agent-page/types.d.ts +17 -0
- package/dist/client/agent-page/types.d.ts.map +1 -0
- package/dist/client/agent-page/types.js +9 -0
- package/dist/client/agent-page/types.js.map +1 -0
- package/dist/client/agent-page/use-jobs.d.ts +61 -0
- package/dist/client/agent-page/use-jobs.d.ts.map +1 -0
- package/dist/client/agent-page/use-jobs.js +71 -0
- package/dist/client/agent-page/use-jobs.js.map +1 -0
- package/dist/client/context-xray/ContextMeter.d.ts +3 -1
- package/dist/client/context-xray/ContextMeter.d.ts.map +1 -1
- package/dist/client/context-xray/ContextMeter.js +14 -5
- package/dist/client/context-xray/ContextMeter.js.map +1 -1
- package/dist/client/context-xray/ContextTreemap.d.ts +3 -2
- package/dist/client/context-xray/ContextTreemap.d.ts.map +1 -1
- package/dist/client/context-xray/ContextTreemap.js +9 -1
- package/dist/client/context-xray/ContextTreemap.js.map +1 -1
- package/dist/client/context-xray/ContextXRayPanel.d.ts.map +1 -1
- package/dist/client/context-xray/ContextXRayPanel.js +95 -20
- package/dist/client/context-xray/ContextXRayPanel.js.map +1 -1
- package/dist/client/context-xray/format.d.ts.map +1 -1
- package/dist/client/context-xray/format.js +12 -0
- package/dist/client/context-xray/format.js.map +1 -1
- package/dist/client/index.d.ts +3 -0
- package/dist/client/index.d.ts.map +1 -1
- package/dist/client/index.js +1 -0
- package/dist/client/index.js.map +1 -1
- package/dist/client/resources/ResourcesPanel.d.ts +9 -1
- package/dist/client/resources/ResourcesPanel.d.ts.map +1 -1
- package/dist/client/resources/ResourcesPanel.js +26 -10
- package/dist/client/resources/ResourcesPanel.js.map +1 -1
- package/dist/client/settings/AutomationsSection.d.ts +9 -0
- package/dist/client/settings/AutomationsSection.d.ts.map +1 -1
- package/dist/client/settings/AutomationsSection.js +128 -147
- package/dist/client/settings/AutomationsSection.js.map +1 -1
- package/dist/file-upload/actions/upload-image.d.ts +1 -1
- package/dist/jobs/actions/list-recurring-jobs.d.ts +21 -0
- package/dist/jobs/actions/list-recurring-jobs.d.ts.map +1 -0
- package/dist/jobs/actions/list-recurring-jobs.js +74 -0
- package/dist/jobs/actions/list-recurring-jobs.js.map +1 -0
- package/dist/jobs/actions/manage-recurring-job.d.ts +18 -0
- package/dist/jobs/actions/manage-recurring-job.d.ts.map +1 -0
- package/dist/jobs/actions/manage-recurring-job.js +68 -0
- package/dist/jobs/actions/manage-recurring-job.js.map +1 -0
- package/dist/jobs/tools.d.ts +13 -0
- package/dist/jobs/tools.d.ts.map +1 -1
- package/dist/jobs/tools.js +1 -1
- package/dist/jobs/tools.js.map +1 -1
- package/dist/localization/default-messages.d.ts +96 -0
- package/dist/localization/default-messages.d.ts.map +1 -1
- package/dist/localization/default-messages.js +96 -0
- package/dist/localization/default-messages.js.map +1 -1
- package/dist/mcp/build-server.d.ts.map +1 -1
- package/dist/mcp/build-server.js +1 -0
- package/dist/mcp/build-server.js.map +1 -1
- package/dist/mcp/connect-route.d.ts.map +1 -1
- package/dist/mcp/connect-route.js +44 -59
- package/dist/mcp/connect-route.js.map +1 -1
- package/dist/notifications/routes.d.ts +2 -2
- package/dist/resources/handlers.d.ts +1 -1
- package/dist/server/action-discovery.d.ts.map +1 -1
- package/dist/server/action-discovery.js +23 -0
- package/dist/server/action-discovery.js.map +1 -1
- package/dist/server/agent-chat/prompt-resources.d.ts +14 -0
- package/dist/server/agent-chat/prompt-resources.d.ts.map +1 -1
- package/dist/server/agent-chat/prompt-resources.js +139 -2
- package/dist/server/agent-chat/prompt-resources.js.map +1 -1
- package/dist/server/agent-chat-plugin.d.ts +1 -0
- package/dist/server/agent-chat-plugin.d.ts.map +1 -1
- package/dist/server/agent-chat-plugin.js +136 -3
- package/dist/server/agent-chat-plugin.js.map +1 -1
- package/dist/server/auth.d.ts.map +1 -1
- package/dist/server/auth.js +1 -4
- package/dist/server/auth.js.map +1 -1
- package/dist/server/google-oauth.d.ts.map +1 -1
- package/dist/server/google-oauth.js +1 -4
- package/dist/server/google-oauth.js.map +1 -1
- package/dist/server/transcribe-voice.d.ts +1 -1
- package/dist/server/workspace-oauth.d.ts +11 -0
- package/dist/server/workspace-oauth.d.ts.map +1 -0
- package/dist/server/workspace-oauth.js +25 -0
- package/dist/server/workspace-oauth.js.map +1 -0
- package/dist/shared/context-xray.d.ts +45 -1
- package/dist/shared/context-xray.d.ts.map +1 -1
- package/dist/shared/context-xray.js +12 -0
- package/dist/shared/context-xray.js.map +1 -1
- package/dist/shared/mcp-connect-content.d.ts +37 -0
- package/dist/shared/mcp-connect-content.d.ts.map +1 -0
- package/dist/shared/mcp-connect-content.js +92 -0
- package/dist/shared/mcp-connect-content.js.map +1 -0
- package/dist/templates/default/app/routes/_index.tsx +11 -0
- package/dist/templates/default/app/routes/agent.tsx +33 -0
- package/dist/templates/workspace-core/.agents/skills/agent-native-toolkit/SKILL.md +6 -0
- package/dist/templates/workspace-core/.agents/skills/agent-page/SKILL.md +59 -0
- package/dist/templates/workspace-core/.agents/skills/context-xray/SKILL.md +25 -0
- package/dist/templates/workspace-core/.agents/skills/external-agents/SKILL.md +7 -0
- package/dist/templates/workspace-core/.agents/skills/recurring-jobs/SKILL.md +9 -0
- package/dist/triggers/actions/list-automations.d.ts +24 -0
- package/dist/triggers/actions/list-automations.d.ts.map +1 -0
- package/dist/triggers/actions/list-automations.js +72 -0
- package/dist/triggers/actions/list-automations.js.map +1 -0
- package/dist/triggers/actions/manage-automation.d.ts +18 -0
- package/dist/triggers/actions/manage-automation.d.ts.map +1 -0
- package/dist/triggers/actions/manage-automation.js +60 -0
- package/dist/triggers/actions/manage-automation.js.map +1 -0
- package/docs/content/a2a-protocol.mdx +42 -0
- package/docs/content/agent-surfaces.mdx +43 -0
- package/docs/content/external-agents.mdx +11 -0
- package/docs/content/locales/ar-SA/a2a-protocol.mdx +42 -0
- package/docs/content/locales/ar-SA/agent-surfaces.mdx +30 -0
- package/docs/content/locales/ar-SA/external-agents.mdx +9 -0
- package/docs/content/locales/de-DE/a2a-protocol.mdx +42 -0
- package/docs/content/locales/de-DE/agent-surfaces.mdx +34 -0
- package/docs/content/locales/de-DE/external-agents.mdx +10 -0
- package/docs/content/locales/es-ES/a2a-protocol.mdx +42 -0
- package/docs/content/locales/es-ES/agent-surfaces.mdx +34 -0
- package/docs/content/locales/es-ES/external-agents.mdx +10 -0
- package/docs/content/locales/fr-FR/a2a-protocol.mdx +42 -0
- package/docs/content/locales/fr-FR/agent-surfaces.mdx +34 -0
- package/docs/content/locales/fr-FR/external-agents.mdx +11 -0
- package/docs/content/locales/hi-IN/a2a-protocol.mdx +42 -0
- package/docs/content/locales/hi-IN/agent-surfaces.mdx +31 -0
- package/docs/content/locales/hi-IN/external-agents.mdx +9 -0
- package/docs/content/locales/ja-JP/a2a-protocol.mdx +42 -0
- package/docs/content/locales/ja-JP/agent-surfaces.mdx +32 -0
- package/docs/content/locales/ja-JP/external-agents.mdx +10 -0
- package/docs/content/locales/ko-KR/a2a-protocol.mdx +42 -0
- package/docs/content/locales/ko-KR/agent-surfaces.mdx +32 -0
- package/docs/content/locales/ko-KR/external-agents.mdx +9 -0
- package/docs/content/locales/pt-BR/a2a-protocol.mdx +42 -0
- package/docs/content/locales/pt-BR/agent-surfaces.mdx +33 -0
- package/docs/content/locales/pt-BR/external-agents.mdx +10 -0
- package/docs/content/locales/zh-CN/a2a-protocol.mdx +42 -0
- package/docs/content/locales/zh-CN/agent-surfaces.mdx +29 -0
- package/docs/content/locales/zh-CN/external-agents.mdx +8 -0
- package/docs/content/locales/zh-TW/a2a-protocol.mdx +42 -0
- package/docs/content/locales/zh-TW/agent-surfaces.mdx +29 -0
- package/docs/content/locales/zh-TW/external-agents.mdx +8 -0
- package/package.json +1 -1
- package/src/templates/default/app/routes/_index.tsx +11 -0
- package/src/templates/default/app/routes/agent.tsx +33 -0
- package/src/templates/workspace-core/.agents/skills/agent-native-toolkit/SKILL.md +6 -0
- package/src/templates/workspace-core/.agents/skills/agent-page/SKILL.md +59 -0
- package/src/templates/workspace-core/.agents/skills/context-xray/SKILL.md +25 -0
- package/src/templates/workspace-core/.agents/skills/external-agents/SKILL.md +7 -0
- 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
|
+
}
|
|
@@ -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
|
+
}
|
|
@@ -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 =
|
|
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,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 {
|
|
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
|
+
}
|
|
@@ -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
|
+
}
|
|
@@ -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
|
|