@agent-native/core 0.99.3 → 0.100.1
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/agent-surfaces.mdx +43 -0
- package/corpus/core/docs/content/external-agents.mdx +11 -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/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/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/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/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/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/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/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/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/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/AGENTS.md +9 -0
- package/corpus/templates/calendar/actions/list-events.ts +659 -44
- 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/calendar/changelog/2026-07-13-calendar-inventory-reads-report-source-coverage.md +6 -0
- package/corpus/templates/calendar/server/lib/calendar-connector-catalog.ts +8 -0
- package/corpus/templates/calendar/server/lib/google-calendar.ts +173 -51
- package/corpus/templates/calendar/server/lib/ical-fetcher.ts +13 -2
- package/corpus/templates/calendar/server/plugins/agent-chat.ts +5 -3
- package/corpus/templates/calendar/shared/api.ts +2 -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/AGENTS.md +12 -0
- package/corpus/templates/mail/actions/list-emails.ts +486 -4
- 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-coverage-aware-connected-inbox-inventory.md +6 -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/mail/server/db/schema.ts +17 -0
- package/corpus/templates/mail/server/lib/google-auth.ts +33 -5
- package/corpus/templates/mail/server/lib/inventory-cursor.ts +406 -0
- package/corpus/templates/mail/server/lib/list-inbox-emails.ts +21 -2
- package/corpus/templates/mail/server/lib/mail-connector-catalog.ts +8 -0
- package/corpus/templates/mail/server/plugins/agent-chat.ts +4 -9
- package/corpus/templates/mail/server/plugins/db.ts +20 -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/collab/routes.d.ts +1 -1
- package/dist/collab/struct-routes.d.ts +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 +1 -1
- package/dist/observability/routes.d.ts +5 -5
- package/dist/progress/routes.d.ts +1 -1
- package/dist/resources/handlers.d.ts +3 -3
- package/dist/secrets/routes.d.ts +9 -9
- 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/agent-engine-api-key-route.d.ts +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/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/agent-surfaces.mdx +43 -0
- package/docs/content/external-agents.mdx +11 -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/agent-surfaces.mdx +34 -0
- package/docs/content/locales/de-DE/external-agents.mdx +10 -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/agent-surfaces.mdx +34 -0
- package/docs/content/locales/fr-FR/external-agents.mdx +11 -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/agent-surfaces.mdx +32 -0
- package/docs/content/locales/ja-JP/external-agents.mdx +10 -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/agent-surfaces.mdx +33 -0
- package/docs/content/locales/pt-BR/external-agents.mdx +10 -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/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
|
@@ -48,6 +48,10 @@ import {
|
|
|
48
48
|
type ReasoningEffort,
|
|
49
49
|
} from "../shared/reasoning-effort.js";
|
|
50
50
|
import { actionPreparationContinuationNote } from "./action-continuation-guidance.js";
|
|
51
|
+
import {
|
|
52
|
+
buildSystemManifestSections,
|
|
53
|
+
readContextXraySystemSections,
|
|
54
|
+
} from "./context-xray/manifest.js";
|
|
51
55
|
import {
|
|
52
56
|
AGENT_CHAT_BACKGROUND_RUN_FIELD,
|
|
53
57
|
AGENT_CHAT_PROCESS_RUN_PATH,
|
|
@@ -1799,6 +1803,12 @@ export interface AgentLoopToolResultSummary {
|
|
|
1799
1803
|
|
|
1800
1804
|
export interface AgentLoopFinalResponseGuardContext {
|
|
1801
1805
|
messages: EngineMessage[];
|
|
1806
|
+
/**
|
|
1807
|
+
* Stable text from the real user request that started this turn. Unlike the
|
|
1808
|
+
* trailing entry in `messages`, this never points at an internal continuation
|
|
1809
|
+
* or a final-guard corrective retry.
|
|
1810
|
+
*/
|
|
1811
|
+
requestText?: string;
|
|
1802
1812
|
assistantContent: EngineContentPart[];
|
|
1803
1813
|
text: string;
|
|
1804
1814
|
toolCalls: AgentLoopToolCallSummary[];
|
|
@@ -2049,6 +2059,17 @@ function findCurrentTurnStartForContinuation(
|
|
|
2049
2059
|
return 0;
|
|
2050
2060
|
}
|
|
2051
2061
|
|
|
2062
|
+
/** Resolve the real user request behind any internal continuation messages. */
|
|
2063
|
+
export function resolveFinalResponseGuardRequestText(
|
|
2064
|
+
messages: EngineMessage[],
|
|
2065
|
+
): string | undefined {
|
|
2066
|
+
const message = messages[findCurrentTurnStartForContinuation(messages)];
|
|
2067
|
+
if (!message || message.role !== "user") return undefined;
|
|
2068
|
+
const text = textFromEngineMessage(message).trim();
|
|
2069
|
+
if (text.startsWith(AGENT_INTERNAL_CONTINUE_PROMPT)) return undefined;
|
|
2070
|
+
return text || undefined;
|
|
2071
|
+
}
|
|
2072
|
+
|
|
2052
2073
|
/**
|
|
2053
2074
|
* First message index that is safe to start a trimmed window on. A window must
|
|
2054
2075
|
* not begin with a tool-result-only user message — that would orphan it from
|
|
@@ -2913,6 +2934,7 @@ export async function runAgentLoop(opts: {
|
|
|
2913
2934
|
tools: EngineTool[];
|
|
2914
2935
|
availableTools?: EngineTool[];
|
|
2915
2936
|
messages: EngineMessage[];
|
|
2937
|
+
systemSections?: import("../shared/context-xray.js").ContextManifestSystemSection[];
|
|
2916
2938
|
actions: Record<string, ActionEntry>;
|
|
2917
2939
|
send: (event: AgentChatEvent) => void;
|
|
2918
2940
|
signal: AbortSignal;
|
|
@@ -2932,6 +2954,12 @@ export async function runAgentLoop(opts: {
|
|
|
2932
2954
|
executionMode?: AgentExecutionMode;
|
|
2933
2955
|
maxIterations?: number;
|
|
2934
2956
|
finalResponseGuard?: AgentLoopFinalResponseGuard;
|
|
2957
|
+
/**
|
|
2958
|
+
* Stable real-user request text preserved across internal continuation
|
|
2959
|
+
* attempts. Callers normally omit this; continuation wrappers freeze it
|
|
2960
|
+
* before appending their synthetic user messages.
|
|
2961
|
+
*/
|
|
2962
|
+
finalResponseGuardRequestText?: string;
|
|
2935
2963
|
threadId?: string;
|
|
2936
2964
|
turnId?: string;
|
|
2937
2965
|
/**
|
|
@@ -2967,6 +2995,9 @@ export async function runAgentLoop(opts: {
|
|
|
2967
2995
|
send,
|
|
2968
2996
|
signal,
|
|
2969
2997
|
} = opts;
|
|
2998
|
+
const finalResponseGuardRequestText =
|
|
2999
|
+
opts.finalResponseGuardRequestText ??
|
|
3000
|
+
resolveFinalResponseGuardRequestText(messages);
|
|
2970
3001
|
const availableToolMap = new Map(
|
|
2971
3002
|
(availableTools ?? tools).map((tool) => [tool.name, tool]),
|
|
2972
3003
|
);
|
|
@@ -3106,6 +3137,7 @@ export async function runAgentLoop(opts: {
|
|
|
3106
3137
|
turnId: opts.turnId,
|
|
3107
3138
|
model,
|
|
3108
3139
|
messages,
|
|
3140
|
+
systemSections: opts.systemSections,
|
|
3109
3141
|
});
|
|
3110
3142
|
|
|
3111
3143
|
// Observational Memory (consumer): for long threads that have already been
|
|
@@ -3680,11 +3712,41 @@ export async function runAgentLoop(opts: {
|
|
|
3680
3712
|
appendAgentLoopContinuation(messages, "max_tokens");
|
|
3681
3713
|
continue;
|
|
3682
3714
|
}
|
|
3715
|
+
|
|
3716
|
+
// Some providers (notably OpenAI Responses for gpt-5+) can complete a
|
|
3717
|
+
// successful turn with reasoning content but no text or tool call. App
|
|
3718
|
+
// final-answer guards validate an actual draft; letting them see this
|
|
3719
|
+
// contentless turn can misclassify our synthetic recovery message and
|
|
3720
|
+
// replace the shared retry with an unrelated app fallback.
|
|
3721
|
+
const hasEmptyFinalResponse =
|
|
3722
|
+
collectTextParts(assistantContentForHistory).trim().length === 0 &&
|
|
3723
|
+
streamedAssistantText.trim().length === 0;
|
|
3724
|
+
if (hasEmptyFinalResponse) {
|
|
3725
|
+
if (emptyFinalResponseRetries < EMPTY_FINAL_RESPONSE_RETRY_LIMIT) {
|
|
3726
|
+
emptyFinalResponseRetries += 1;
|
|
3727
|
+
effectiveMaxOutputTokens =
|
|
3728
|
+
resolveEmptyResponseRetryMaxOutputTokens(model);
|
|
3729
|
+
effectiveReasoningEffort = stepDownReasoningEffort(
|
|
3730
|
+
effectiveReasoningEffort,
|
|
3731
|
+
);
|
|
3732
|
+
send({ type: "clear" });
|
|
3733
|
+
appendAgentLoopContinuation(messages, "max_tokens");
|
|
3734
|
+
continue;
|
|
3735
|
+
}
|
|
3736
|
+
send({ type: "clear" });
|
|
3737
|
+
send({
|
|
3738
|
+
type: "text",
|
|
3739
|
+
text: "The model returned an empty response. This usually means reasoning used the full output-token budget. Try again, or pick a different model from the model menu.",
|
|
3740
|
+
});
|
|
3741
|
+
break;
|
|
3742
|
+
}
|
|
3743
|
+
|
|
3683
3744
|
let guard: Awaited<ReturnType<AgentLoopFinalResponseGuard>> | null = null;
|
|
3684
3745
|
if (opts.finalResponseGuard) {
|
|
3685
3746
|
try {
|
|
3686
3747
|
guard = await opts.finalResponseGuard({
|
|
3687
3748
|
messages,
|
|
3749
|
+
requestText: finalResponseGuardRequestText,
|
|
3688
3750
|
assistantContent: assistantContentForHistory,
|
|
3689
3751
|
text: collectTextParts(assistantContentForHistory),
|
|
3690
3752
|
toolCalls: [...toolCallHistory],
|
|
@@ -3697,7 +3759,6 @@ export async function runAgentLoop(opts: {
|
|
|
3697
3759
|
throw err;
|
|
3698
3760
|
}
|
|
3699
3761
|
}
|
|
3700
|
-
let guardEmittedFallback = false;
|
|
3701
3762
|
if (guard) {
|
|
3702
3763
|
const retryMessage =
|
|
3703
3764
|
typeof guard === "string" ? guard : guard.retryMessage;
|
|
@@ -3730,45 +3791,12 @@ export async function runAgentLoop(opts: {
|
|
|
3730
3791
|
}
|
|
3731
3792
|
send({ type: "clear" });
|
|
3732
3793
|
send({ type: "text", text: fallbackMessage ?? retryMessage });
|
|
3733
|
-
guardEmittedFallback = true;
|
|
3734
3794
|
} else {
|
|
3735
3795
|
flushUnstreamedAssistantText();
|
|
3736
3796
|
}
|
|
3737
|
-
|
|
3738
|
-
|
|
3739
|
-
|
|
3740
|
-
// budget. Without a final text part the SSE stream still ends with a
|
|
3741
|
-
// clean `done`, which renders as a totally empty assistant bubble.
|
|
3742
|
-
// Retry so a reasoning-budget miss can still finish; each retry raises
|
|
3743
|
-
// the token ceiling and steps reasoning effort down a tier so it's not
|
|
3744
|
-
// just re-issuing the identical doomed request. If retries also come
|
|
3745
|
-
// back empty, surface a plain-language error.
|
|
3746
|
-
const hasEmptyFinalResponse =
|
|
3747
|
-
!guardEmittedFallback &&
|
|
3748
|
-
collectTextParts(assistantContentForHistory).trim().length === 0 &&
|
|
3749
|
-
streamedAssistantText.trim().length === 0;
|
|
3750
|
-
if (hasEmptyFinalResponse) {
|
|
3751
|
-
if (emptyFinalResponseRetries < EMPTY_FINAL_RESPONSE_RETRY_LIMIT) {
|
|
3752
|
-
emptyFinalResponseRetries += 1;
|
|
3753
|
-
effectiveMaxOutputTokens =
|
|
3754
|
-
resolveEmptyResponseRetryMaxOutputTokens(model);
|
|
3755
|
-
effectiveReasoningEffort = stepDownReasoningEffort(
|
|
3756
|
-
effectiveReasoningEffort,
|
|
3757
|
-
);
|
|
3758
|
-
send({ type: "clear" });
|
|
3759
|
-
appendAgentLoopContinuation(messages, "max_tokens");
|
|
3760
|
-
continue;
|
|
3761
|
-
}
|
|
3762
|
-
send({ type: "clear" });
|
|
3763
|
-
send({
|
|
3764
|
-
type: "text",
|
|
3765
|
-
text: "The model returned an empty response. This usually means reasoning used the full output-token budget. Try again, or pick a different model from the model menu.",
|
|
3766
|
-
});
|
|
3767
|
-
} else {
|
|
3768
|
-
emptyFinalResponseRetries = 0;
|
|
3769
|
-
effectiveMaxOutputTokens = opts.maxOutputTokens;
|
|
3770
|
-
effectiveReasoningEffort = opts.reasoningEffort;
|
|
3771
|
-
}
|
|
3797
|
+
emptyFinalResponseRetries = 0;
|
|
3798
|
+
effectiveMaxOutputTokens = opts.maxOutputTokens;
|
|
3799
|
+
effectiveReasoningEffort = opts.reasoningEffort;
|
|
3772
3800
|
break;
|
|
3773
3801
|
}
|
|
3774
3802
|
|
|
@@ -4965,6 +4993,9 @@ export async function runAgentLoopWithMainChatInternalContinuations(
|
|
|
4965
4993
|
maxContinuations?: number;
|
|
4966
4994
|
},
|
|
4967
4995
|
): Promise<Awaited<ReturnType<typeof runAgentLoop>>> {
|
|
4996
|
+
const finalResponseGuardRequestText =
|
|
4997
|
+
opts.finalResponseGuardRequestText ??
|
|
4998
|
+
resolveFinalResponseGuardRequestText(opts.messages);
|
|
4968
4999
|
const usage: Awaited<ReturnType<typeof runAgentLoop>> = {
|
|
4969
5000
|
inputTokens: 0,
|
|
4970
5001
|
outputTokens: 0,
|
|
@@ -5010,7 +5041,11 @@ export async function runAgentLoopWithMainChatInternalContinuations(
|
|
|
5010
5041
|
};
|
|
5011
5042
|
|
|
5012
5043
|
try {
|
|
5013
|
-
const nextUsage = await runAgentLoop({
|
|
5044
|
+
const nextUsage = await runAgentLoop({
|
|
5045
|
+
...opts,
|
|
5046
|
+
send,
|
|
5047
|
+
finalResponseGuardRequestText,
|
|
5048
|
+
});
|
|
5014
5049
|
addUsage(nextUsage);
|
|
5015
5050
|
} catch (err) {
|
|
5016
5051
|
// Preserve exact prior behavior unless explicitly opted in: an aborted
|
|
@@ -6669,6 +6704,31 @@ export function createProductionAgentHandler(
|
|
|
6669
6704
|
availableRequestTools,
|
|
6670
6705
|
options.initialToolNames,
|
|
6671
6706
|
);
|
|
6707
|
+
// System sections are emitted by the prompt builder once per request. Tool
|
|
6708
|
+
// schemas become known just after prompt setup, so append their measured
|
|
6709
|
+
// contribution here and reuse the immutable result for every loop pass.
|
|
6710
|
+
const contextXraySystemSections = [
|
|
6711
|
+
...readContextXraySystemSections(event),
|
|
6712
|
+
...(requestTools.length > 0
|
|
6713
|
+
? await buildSystemManifestSections([
|
|
6714
|
+
{
|
|
6715
|
+
label: "Action and MCP tool schemas",
|
|
6716
|
+
provenance: "tools",
|
|
6717
|
+
governance: "required",
|
|
6718
|
+
content: requestTools
|
|
6719
|
+
.map((tool) =>
|
|
6720
|
+
JSON.stringify({
|
|
6721
|
+
name: tool.name,
|
|
6722
|
+
description: tool.description,
|
|
6723
|
+
parameters: tool.inputSchema,
|
|
6724
|
+
}),
|
|
6725
|
+
)
|
|
6726
|
+
.join("\n"),
|
|
6727
|
+
sourceRef: { scope: "tools" },
|
|
6728
|
+
},
|
|
6729
|
+
])
|
|
6730
|
+
: []),
|
|
6731
|
+
];
|
|
6672
6732
|
setupMark("actions");
|
|
6673
6733
|
// DIAGNOSTIC-ONLY: action/tool resolution + engine-tool filtering finished.
|
|
6674
6734
|
workerStep("action_tool_setup");
|
|
@@ -7648,6 +7708,7 @@ export function createProductionAgentHandler(
|
|
|
7648
7708
|
tools: requestTools,
|
|
7649
7709
|
availableTools: availableRequestTools,
|
|
7650
7710
|
messages,
|
|
7711
|
+
systemSections: contextXraySystemSections,
|
|
7651
7712
|
actions: requestActions,
|
|
7652
7713
|
send,
|
|
7653
7714
|
signal,
|
|
@@ -7664,6 +7725,7 @@ export function createProductionAgentHandler(
|
|
|
7664
7725
|
executionMode: requestMode,
|
|
7665
7726
|
maxIterations: loopSettings.maxIterations,
|
|
7666
7727
|
finalResponseGuard: options.finalResponseGuard,
|
|
7728
|
+
finalResponseGuardRequestText: messageToPersist,
|
|
7667
7729
|
...(options.toolLimits ? { toolLimits: options.toolLimits } : {}),
|
|
7668
7730
|
...(threadId
|
|
7669
7731
|
? { threadId: effectiveThreadId, turnId: effectiveTurnId }
|
|
@@ -28,6 +28,7 @@ import {
|
|
|
28
28
|
isResumableEngineError,
|
|
29
29
|
continuationReasonForResumableError,
|
|
30
30
|
lastUnfinishedPreparingActionToolFromEvents,
|
|
31
|
+
resolveFinalResponseGuardRequestText,
|
|
31
32
|
type AgentLoopContinuationReason,
|
|
32
33
|
} from "./production-agent.js";
|
|
33
34
|
import { resolveRunSoftTimeoutMs } from "./run-manager.js";
|
|
@@ -203,8 +204,12 @@ export async function runAgentLoopDirectWithSoftTimeout(
|
|
|
203
204
|
softTimeoutMs?: number,
|
|
204
205
|
timeoutOptions?: ResolveRunSoftTimeoutOptions,
|
|
205
206
|
): Promise<Awaited<ReturnType<typeof runAgentLoop>>> {
|
|
207
|
+
const finalResponseGuardRequestText =
|
|
208
|
+
opts.finalResponseGuardRequestText ??
|
|
209
|
+
resolveFinalResponseGuardRequestText(opts.messages);
|
|
210
|
+
const stableOpts = { ...opts, finalResponseGuardRequestText };
|
|
206
211
|
const timeoutMs = resolveRunSoftTimeoutMs(softTimeoutMs, timeoutOptions);
|
|
207
|
-
if (timeoutMs <= 0) return runAgentLoop(
|
|
212
|
+
if (timeoutMs <= 0) return runAgentLoop(stableOpts);
|
|
208
213
|
|
|
209
214
|
const upstreamSignal = opts.signal;
|
|
210
215
|
const usage: Awaited<ReturnType<typeof runAgentLoop>> = {
|
|
@@ -260,7 +265,7 @@ export async function runAgentLoopDirectWithSoftTimeout(
|
|
|
260
265
|
|
|
261
266
|
try {
|
|
262
267
|
const nextUsage = await runAgentLoop({
|
|
263
|
-
...
|
|
268
|
+
...stableOpts,
|
|
264
269
|
send,
|
|
265
270
|
signal: controller.signal,
|
|
266
271
|
});
|
|
@@ -79,7 +79,7 @@ const MultiTabAssistantChatLazy = lazy(() =>
|
|
|
79
79
|
})),
|
|
80
80
|
);
|
|
81
81
|
import { useQuery, useQueryClient } from "@tanstack/react-query";
|
|
82
|
-
import { useLocation, useNavigate } from "react-router";
|
|
82
|
+
import { Link, useLocation, useNavigate } from "react-router";
|
|
83
83
|
|
|
84
84
|
import type { AgentChatSurfaceKind } from "./agent-chat-adapter.js";
|
|
85
85
|
import {
|
|
@@ -595,6 +595,8 @@ export interface AgentPanelProps extends Omit<
|
|
|
595
595
|
showPageNewChatButton?: boolean;
|
|
596
596
|
/** Allow the sidebar settings view to render inside this panel. Default: true. */
|
|
597
597
|
allowSettingsMode?: boolean;
|
|
598
|
+
/** Optional link shown in Resources and Settings modes for the full Agent page. */
|
|
599
|
+
agentPageHref?: string;
|
|
598
600
|
/** Capability gate for source edits and CLI access. */
|
|
599
601
|
codeAccess?: AgentPanelCodeAccess;
|
|
600
602
|
}
|
|
@@ -745,6 +747,7 @@ function AgentPanelInner({
|
|
|
745
747
|
showTabBar = true,
|
|
746
748
|
showPageNewChatButton = false,
|
|
747
749
|
allowSettingsMode = true,
|
|
750
|
+
agentPageHref,
|
|
748
751
|
codeAccess,
|
|
749
752
|
...assistantChatProps
|
|
750
753
|
}: AgentPanelProps) {
|
|
@@ -1807,11 +1810,11 @@ function AgentPanelInner({
|
|
|
1807
1810
|
".agent-tabs-scroll::-webkit-scrollbar{display:none;}" +
|
|
1808
1811
|
`[data-agent-fullscreen='true'] .agent-thread-content,` +
|
|
1809
1812
|
`[data-agent-fullscreen='true'] .agent-running-activity{` +
|
|
1810
|
-
`max-width:${
|
|
1813
|
+
`max-width:${FULLSCREEN_CHAT_COLUMN_MAX_PX}px;` +
|
|
1811
1814
|
`margin-left:auto;margin-right:auto;width:100%;}` +
|
|
1812
1815
|
`[data-agent-fullscreen='true'] .agent-composer-area,` +
|
|
1813
1816
|
`[data-agent-fullscreen='true'] .agent-plan-mode-callout{` +
|
|
1814
|
-
`max-width:${
|
|
1817
|
+
`max-width:${FULLSCREEN_CHAT_COLUMN_MAX_PX}px;` +
|
|
1815
1818
|
`margin-left:auto;margin-right:auto;width:100%;}`,
|
|
1816
1819
|
}}
|
|
1817
1820
|
/>
|
|
@@ -1933,7 +1936,18 @@ function AgentPanelInner({
|
|
|
1933
1936
|
|
|
1934
1937
|
{/* Resources view */}
|
|
1935
1938
|
{mode === "resources" && (
|
|
1936
|
-
<div className="flex-1 min-h-0">
|
|
1939
|
+
<div className="flex flex-1 flex-col min-h-0">
|
|
1940
|
+
{agentPageHref && (
|
|
1941
|
+
<div className="flex shrink-0 justify-end border-b border-border px-3 py-1.5">
|
|
1942
|
+
<Link
|
|
1943
|
+
to={agentPageHref}
|
|
1944
|
+
className="inline-flex cursor-pointer items-center gap-1 text-[11px] font-medium text-muted-foreground hover:text-foreground"
|
|
1945
|
+
>
|
|
1946
|
+
{t("agentPanel.openFullView")}
|
|
1947
|
+
<IconExternalLink className="h-3 w-3" />
|
|
1948
|
+
</Link>
|
|
1949
|
+
</div>
|
|
1950
|
+
)}
|
|
1937
1951
|
<Suspense
|
|
1938
1952
|
fallback={
|
|
1939
1953
|
<div className="flex h-full flex-col min-h-0">
|
|
@@ -1954,6 +1968,17 @@ function AgentPanelInner({
|
|
|
1954
1968
|
{/* Settings / Setup view */}
|
|
1955
1969
|
{mode === "settings" && (
|
|
1956
1970
|
<div className="flex flex-col flex-1 min-h-0">
|
|
1971
|
+
{agentPageHref && (
|
|
1972
|
+
<div className="flex shrink-0 justify-end border-b border-border px-3 py-1.5">
|
|
1973
|
+
<Link
|
|
1974
|
+
to={agentPageHref}
|
|
1975
|
+
className="inline-flex cursor-pointer items-center gap-1 text-[11px] font-medium text-muted-foreground hover:text-foreground"
|
|
1976
|
+
>
|
|
1977
|
+
{t("agentPanel.openFullView")}
|
|
1978
|
+
<IconExternalLink className="h-3 w-3" />
|
|
1979
|
+
</Link>
|
|
1980
|
+
</div>
|
|
1981
|
+
)}
|
|
1957
1982
|
<Suspense
|
|
1958
1983
|
fallback={
|
|
1959
1984
|
<div className="p-3 space-y-2">
|
|
@@ -1987,10 +2012,8 @@ const SIDEBAR_MAX = 700;
|
|
|
1987
2012
|
const SIDEBAR_ANIMATION_MS = 260;
|
|
1988
2013
|
const SIDEBAR_OVERLAY_Z_INDEX = 70;
|
|
1989
2014
|
const SIDEBAR_FULLSCREEN_Z_INDEX = 90;
|
|
1990
|
-
/**
|
|
1991
|
-
const
|
|
1992
|
-
/** Max width of the centered composer in fullscreen mode. */
|
|
1993
|
-
const FULLSCREEN_COMPOSER_MAX_PX = 684;
|
|
2015
|
+
/** Shared max width of the centered fullscreen chat column and composer. */
|
|
2016
|
+
const FULLSCREEN_CHAT_COLUMN_MAX_PX = 684;
|
|
1994
2017
|
|
|
1995
2018
|
function ResizeHandle({
|
|
1996
2019
|
position,
|
|
@@ -2594,6 +2617,8 @@ export interface AgentSidebarProps {
|
|
|
2594
2617
|
browserTabId?: string;
|
|
2595
2618
|
/** Keep chat thread selection in URL state. */
|
|
2596
2619
|
threadUrlSync?: MultiTabAssistantChatProps["threadUrlSync"];
|
|
2620
|
+
/** Optional link shown in Resources and Settings modes for the full Agent page. */
|
|
2621
|
+
agentPageHref?: string;
|
|
2597
2622
|
}
|
|
2598
2623
|
|
|
2599
2624
|
/**
|
|
@@ -2624,6 +2649,7 @@ export function AgentSidebar({
|
|
|
2624
2649
|
showScopeBadge,
|
|
2625
2650
|
browserTabId,
|
|
2626
2651
|
threadUrlSync,
|
|
2652
|
+
agentPageHref,
|
|
2627
2653
|
}: AgentSidebarProps) {
|
|
2628
2654
|
const initialWidth = defaultSidebarWidth ?? sidebarWidth ?? 380;
|
|
2629
2655
|
const [open, setOpen] = useState(
|
|
@@ -3160,6 +3186,7 @@ export function AgentSidebar({
|
|
|
3160
3186
|
showScopeBadge={showScopeBadge}
|
|
3161
3187
|
browserTabId={browserTabId}
|
|
3162
3188
|
threadUrlSync={threadUrlSync}
|
|
3189
|
+
agentPageHref={agentPageHref}
|
|
3163
3190
|
allowSettingsMode={false}
|
|
3164
3191
|
/>
|
|
3165
3192
|
</div>
|