@agent-native/core 0.106.3 → 0.107.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 +23 -0
- package/corpus/core/docs/content/integrations.mdx +597 -0
- package/corpus/core/docs/content/locales/ar-SA/mcp-clients.mdx +19 -1
- package/corpus/core/docs/content/locales/de-DE/mcp-clients.mdx +22 -1
- package/corpus/core/docs/content/locales/es-ES/mcp-clients.mdx +23 -1
- package/corpus/core/docs/content/locales/fr-FR/mcp-clients.mdx +23 -1
- package/corpus/core/docs/content/locales/hi-IN/mcp-clients.mdx +22 -1
- package/corpus/core/docs/content/locales/ja-JP/mcp-clients.mdx +21 -1
- package/corpus/core/docs/content/locales/ko-KR/mcp-clients.mdx +20 -1
- package/corpus/core/docs/content/locales/pt-BR/mcp-clients.mdx +22 -1
- package/corpus/core/docs/content/locales/zh-CN/mcp-clients.mdx +17 -1
- package/corpus/core/docs/content/locales/zh-TW/mcp-clients.mdx +17 -1
- package/corpus/core/docs/content/mcp-clients.mdx +51 -1
- package/corpus/core/docs/content/organizations-teams-permissions.mdx +413 -0
- package/corpus/core/package.json +1 -1
- package/corpus/core/src/agent/production-agent.ts +19 -0
- package/corpus/core/src/agent/run-store.ts +98 -2
- package/corpus/core/src/client/AssistantChat.tsx +26 -1
- package/corpus/core/src/client/CommandMenu.tsx +5 -0
- package/corpus/core/src/client/active-run-state.ts +34 -0
- package/corpus/core/src/client/agent-chat-adapter.ts +4 -0
- package/corpus/core/src/client/chat/message-components.tsx +41 -0
- package/corpus/core/src/client/composer/TiptapComposer.tsx +45 -8
- package/corpus/core/src/client/integrations/IntegrationsPanel.tsx +30 -11
- package/corpus/core/src/client/resources/McpConnectionSuggestion.tsx +270 -0
- package/corpus/core/src/client/resources/McpIntegrationDialog.tsx +177 -40
- package/corpus/core/src/client/resources/mcp-integration-catalog.ts +478 -4
- package/corpus/core/src/client/resources/mcp-integration-logos.ts +108 -0
- package/corpus/core/src/client/sharing/ShareButton.tsx +30 -9
- package/corpus/core/src/client/use-agent-chat-home-handoff.ts +2 -2
- package/corpus/core/src/deploy/build.ts +32 -0
- package/corpus/core/src/extensions/html-shell.ts +33 -1
- package/corpus/core/src/ingestion/office.ts +1 -2
- package/corpus/core/src/ingestion/pptx.ts +2 -4
- package/corpus/core/src/localization/default-messages.ts +129 -1
- package/corpus/core/src/mcp/actions/call-mcp-tool.ts +1 -0
- package/corpus/core/src/secrets/register-framework-secrets.ts +28 -0
- package/corpus/core/src/server/agent-chat-plugin.ts +29 -1
- package/corpus/core/src/server/index.ts +4 -0
- package/corpus/core/src/server/org-admin.ts +28 -0
- package/corpus/core/src/templates/workspace-core/.agents/skills/extensions/SKILL.md +9 -0
- package/corpus/core/src/templates/workspace-core/.agents/skills/extensions/references/api.md +31 -0
- package/corpus/core/src/templates/workspace-core/.agents/skills/external-agents/SKILL.md +9 -0
- package/corpus/core/src/vite/client.ts +24 -0
- package/corpus/templates/analytics/.agents/skills/creative-context/SKILL.md +64 -0
- package/corpus/templates/analytics/.agents/skills/dashboard-management/SKILL.md +29 -21
- package/corpus/templates/analytics/AGENTS.md +13 -0
- package/corpus/templates/analytics/actions/clone-creative-context-dashboard.ts +86 -0
- package/corpus/templates/analytics/actions/dashboard-mutation-api.ts +1 -1
- package/corpus/templates/analytics/actions/update-dashboard.ts +6 -2
- package/corpus/templates/analytics/app/components/dashboard/SqlChart.tsx +35 -7
- package/corpus/templates/analytics/app/components/layout/Layout.tsx +3 -3
- 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/pages/Ask.tsx +8 -4
- package/corpus/templates/analytics/app/pages/adhoc/sql-dashboard/SqlChartCard.tsx +11 -1
- package/corpus/templates/analytics/app/pages/adhoc/sql-dashboard/extension-slot.ts +11 -0
- package/corpus/templates/analytics/app/pages/adhoc/sql-dashboard/index.tsx +86 -0
- package/corpus/templates/analytics/app/pages/adhoc/sql-dashboard/types.ts +6 -0
- package/corpus/templates/analytics/app/routes/agent.tsx +7 -1
- package/corpus/templates/analytics/changelog/2026-07-17-dashboard-extension-boxes.md +6 -0
- package/corpus/templates/analytics/changelog/2026-07-17-library-now-flags-published-dashboards-with-newer-versions-a.md +6 -0
- package/corpus/templates/analytics/changelog/2026-07-17-resources-can-be-added-to-creative-context-from-their-action.md +6 -0
- package/corpus/templates/analytics/changelog/2026-07-17-you-can-add-exact-approved-artifact-versions-to-governed-cre.md +6 -0
- package/corpus/templates/analytics/package.json +1 -0
- package/corpus/templates/analytics/server/lib/agent-readable-resource-context.ts +8 -0
- package/corpus/templates/analytics/server/lib/native-creative-context.ts +158 -0
- package/corpus/templates/analytics/server/plugins/agent-chat.ts +1 -0
- package/corpus/templates/analytics/server/plugins/creative-context.ts +10 -0
- package/corpus/templates/assets/.agents/skills/creative-context/SKILL.md +12 -3
- package/corpus/templates/assets/AGENTS.md +5 -0
- package/corpus/templates/assets/actions/clone-creative-context-asset.ts +74 -0
- package/corpus/templates/assets/app/hooks/use-navigation-state.ts +2 -1
- package/corpus/templates/assets/app/routes/brand-kits.$id.tsx +308 -178
- package/corpus/templates/assets/app/routes/library.tsx +5 -11
- package/corpus/templates/assets/changelog/2026-07-17-library-now-flags-published-assets-with-newer-versions-and-l.md +6 -0
- package/corpus/templates/assets/changelog/2026-07-17-the-agent-chat-sidebar-stays-closed-until-you-open-it-or-sta.md +6 -0
- package/corpus/templates/assets/changelog/2026-07-17-you-can-add-exact-approved-artifact-versions-to-governed-cre.md +6 -0
- package/corpus/templates/assets/server/lib/native-creative-context.ts +198 -0
- package/corpus/templates/assets/server/plugins/creative-context.ts +4 -0
- package/corpus/templates/brain/actions/provider-api-request.ts +1 -0
- package/corpus/templates/brain/app/hooks/use-navigation-state.ts +6 -1
- package/corpus/templates/brain/changelog/2026-07-17-the-agent-chat-sidebar-stays-closed-until-you-open-it-or-sta.md +6 -0
- package/corpus/templates/calendar/actions/provider-api-request.ts +1 -0
- package/corpus/templates/calendar/app/components/layout/AppLayout.tsx +1 -1
- package/corpus/templates/calendar/changelog/2026-07-17-the-agent-chat-sidebar-stays-closed-until-you-open-it-or-sta.md +6 -0
- package/corpus/templates/chat/app/hooks/use-navigation-state.ts +4 -1
- package/corpus/templates/chat/changelog/2026-07-17-the-agent-chat-sidebar-stays-closed-until-you-open-it-or-sta.md +6 -0
- package/corpus/templates/clips/actions/get-recording-insights.ts +7 -4
- package/corpus/templates/clips/actions/list-recordings.ts +48 -0
- package/corpus/templates/clips/actions/list-viewers.ts +2 -1
- package/corpus/templates/clips/app/components/editor/stitch-manager.tsx +3 -1
- package/corpus/templates/clips/app/components/library/library-layout.tsx +1 -1
- package/corpus/templates/clips/app/components/player/share-dialog.tsx +1 -3
- package/corpus/templates/clips/app/hooks/use-desktop-promo.ts +11 -6
- package/corpus/templates/clips/app/hooks/use-view-tracking.ts +6 -1
- package/corpus/templates/clips/app/lib/ffmpeg-export.ts +4 -2
- package/corpus/templates/clips/app/routes/share.$shareId.tsx +21 -3
- package/corpus/templates/clips/changelog/2026-07-17-dictation-keeps-sentence-spacing-and-no-longer-crashes-when-.md +6 -0
- package/corpus/templates/clips/changelog/2026-07-17-shared-clips-now-preserve-editor-access-and-show-editor-insi.md +6 -0
- package/corpus/templates/clips/changelog/2026-07-17-stitching-clips-no-longer-fails-when-editor-media-metadata-i.md +6 -0
- package/corpus/templates/clips/changelog/2026-07-17-the-agent-chat-sidebar-stays-closed-until-you-open-it-or-sta.md +6 -0
- package/corpus/templates/clips/server/routes/api/public-recording.get.ts +14 -8
- package/corpus/templates/clips/shared/view-analytics.ts +4 -0
- package/corpus/templates/content/.agents/skills/creative-context/SKILL.md +12 -3
- package/corpus/templates/content/AGENTS.md +5 -0
- package/corpus/templates/content/actions/_content-space-access.ts +45 -2
- package/corpus/templates/content/actions/clone-creative-context-document.ts +61 -0
- package/corpus/templates/content/actions/create-content-database.ts +41 -7
- package/corpus/templates/content/actions/provider-api-request.ts +1 -0
- package/corpus/templates/content/app/components/editor/DocumentToolbar.tsx +21 -0
- package/corpus/templates/content/app/components/layout/Layout.tsx +1 -1
- package/corpus/templates/content/app/components/sidebar/DocumentTreeItem.tsx +29 -0
- package/corpus/templates/content/app/root.tsx +1 -10
- package/corpus/templates/content/changelog/2026-07-17-creating-a-database-now-completes-reliably-in-hosted-workspa.md +6 -0
- package/corpus/templates/content/changelog/2026-07-17-library-now-flags-published-documents-with-newer-versions-an.md +6 -0
- package/corpus/templates/content/changelog/2026-07-17-resources-can-be-added-to-creative-context-from-their-action.md +6 -0
- package/corpus/templates/content/changelog/2026-07-17-the-agent-chat-sidebar-stays-closed-until-you-open-it-or-sta.md +6 -0
- package/corpus/templates/content/changelog/2026-07-17-you-can-add-exact-approved-artifact-versions-to-governed-cre.md +6 -0
- package/corpus/templates/content/parity/matrix.md +1 -1
- package/corpus/templates/content/parity/matrix.ts +1 -0
- package/corpus/templates/content/server/lib/native-creative-context.ts +191 -0
- package/corpus/templates/content/server/plugins/creative-context.ts +8 -1
- package/corpus/templates/design/.agents/skills/creative-context/SKILL.md +11 -3
- package/corpus/templates/design/AGENTS.md +5 -0
- package/corpus/templates/design/actions/clone-creative-context-design-native.ts +111 -0
- package/corpus/templates/design/actions/provider-api-request.ts +1 -0
- package/corpus/templates/design/app/pages/Index.tsx +44 -0
- package/corpus/templates/design/app/pages/design-editor/types.ts +1 -0
- package/corpus/templates/design/changelog/2026-07-17-library-now-flags-published-designs-with-newer-versions-and-.md +6 -0
- package/corpus/templates/design/changelog/2026-07-17-resources-can-be-added-to-creative-context-from-their-action.md +6 -0
- package/corpus/templates/design/changelog/2026-07-17-you-can-add-exact-approved-artifact-versions-to-governed-cre.md +6 -0
- package/corpus/templates/design/server/lib/native-creative-context.ts +265 -0
- package/corpus/templates/design/server/plugins/creative-context.ts +8 -1
- package/corpus/templates/dispatch/actions/provider-api-request.ts +1 -0
- package/corpus/templates/dispatch/app/hooks/use-navigation-state.ts +4 -1
- package/corpus/templates/dispatch/changelog/2026-07-17-the-agent-chat-sidebar-stays-closed-until-you-open-it-or-sta.md +6 -0
- package/corpus/templates/forms/app/components/layout/Layout.tsx +2 -4
- package/corpus/templates/forms/app/components/ui/popover.tsx +25 -1
- package/corpus/templates/forms/app/hooks/use-navigation-state.ts +6 -1
- package/corpus/templates/forms/app/pages/FormBuilderPage.tsx +13 -10
- package/corpus/templates/forms/app/root.tsx +6 -1
- package/corpus/templates/forms/changelog/2026-07-17-form-builder-popovers-stay-within-the-viewport.md +6 -0
- package/corpus/templates/forms/changelog/2026-07-17-form-editor-loading-matches-current-sidebar-free-layout.md +6 -0
- package/corpus/templates/forms/changelog/2026-07-17-the-agent-chat-sidebar-stays-closed-until-you-open-it-or-sta.md +6 -0
- package/corpus/templates/mail/actions/provider-api-request.ts +1 -0
- package/corpus/templates/mail/app/components/layout/AppLayout.tsx +1 -1
- package/corpus/templates/mail/changelog/2026-07-17-the-agent-chat-sidebar-stays-closed-until-you-open-it-or-sta.md +6 -0
- package/corpus/templates/plan/app/components/layout/Sidebar.tsx +14 -3
- package/corpus/templates/plan/app/hooks/use-navigation-state.ts +8 -1
- package/corpus/templates/plan/app/root.tsx +0 -2
- package/corpus/templates/plan/changelog/2026-07-17-the-agent-chat-sidebar-stays-closed-until-you-open-it-or-sta.md +6 -0
- package/corpus/templates/slides/.agents/skills/creative-context/SKILL.md +11 -3
- package/corpus/templates/slides/AGENTS.md +5 -0
- package/corpus/templates/slides/actions/clone-creative-context-deck.ts +96 -0
- package/corpus/templates/slides/actions/extract-pdf.ts +3 -2
- package/corpus/templates/slides/actions/import-file.ts +3 -2
- package/corpus/templates/slides/actions/provider-api-request.ts +1 -0
- package/corpus/templates/slides/app/components/deck/DeckCard.tsx +27 -0
- package/corpus/templates/slides/app/components/editor/EditorToolbar.tsx +21 -0
- package/corpus/templates/slides/app/components/layout/Layout.tsx +1 -1
- package/corpus/templates/slides/app/context/DeckContext.tsx +23 -23
- package/corpus/templates/slides/changelog/2026-07-17-duplicated-slides-now-stay-in-the-deck.md +6 -0
- package/corpus/templates/slides/changelog/2026-07-17-library-now-flags-published-decks-with-newer-versions-and-le.md +6 -0
- package/corpus/templates/slides/changelog/2026-07-17-pdf-and-powerpoint-imports-now-work-reliably-in-hosted-decks.md +6 -0
- package/corpus/templates/slides/changelog/2026-07-17-resources-can-be-added-to-creative-context-from-their-action.md +6 -0
- package/corpus/templates/slides/changelog/2026-07-17-the-agent-chat-sidebar-stays-closed-until-you-open-it-or-sta.md +6 -0
- package/corpus/templates/slides/changelog/2026-07-17-you-can-add-exact-approved-artifact-versions-to-governed-cre.md +6 -0
- package/corpus/templates/slides/server/lib/native-creative-context.ts +288 -0
- package/corpus/templates/slides/server/plugins/creative-context.ts +4 -0
- package/corpus/templates/tasks/app/components/layout/Layout.tsx +2 -13
- package/corpus/templates/tasks/changelog/2026-07-17-the-agent-chat-sidebar-stays-closed-until-you-open-it.md +6 -0
- package/dist/agent/production-agent.d.ts.map +1 -1
- package/dist/agent/production-agent.js +13 -1
- package/dist/agent/production-agent.js.map +1 -1
- package/dist/agent/run-store.d.ts +17 -0
- package/dist/agent/run-store.d.ts.map +1 -1
- package/dist/agent/run-store.js +84 -2
- package/dist/agent/run-store.js.map +1 -1
- package/dist/client/AssistantChat.d.ts.map +1 -1
- package/dist/client/AssistantChat.js +18 -3
- package/dist/client/AssistantChat.js.map +1 -1
- package/dist/client/CommandMenu.d.ts.map +1 -1
- package/dist/client/CommandMenu.js +4 -0
- package/dist/client/CommandMenu.js.map +1 -1
- package/dist/client/active-run-state.d.ts +7 -0
- package/dist/client/active-run-state.d.ts.map +1 -1
- package/dist/client/active-run-state.js +28 -0
- package/dist/client/active-run-state.js.map +1 -1
- package/dist/client/agent-chat-adapter.d.ts.map +1 -1
- package/dist/client/agent-chat-adapter.js +4 -1
- package/dist/client/agent-chat-adapter.js.map +1 -1
- package/dist/client/chat/message-components.d.ts.map +1 -1
- package/dist/client/chat/message-components.js +35 -1
- package/dist/client/chat/message-components.js.map +1 -1
- package/dist/client/composer/TiptapComposer.d.ts +7 -0
- package/dist/client/composer/TiptapComposer.d.ts.map +1 -1
- package/dist/client/composer/TiptapComposer.js +37 -8
- package/dist/client/composer/TiptapComposer.js.map +1 -1
- package/dist/client/integrations/IntegrationsPanel.d.ts.map +1 -1
- package/dist/client/integrations/IntegrationsPanel.js +3 -2
- package/dist/client/integrations/IntegrationsPanel.js.map +1 -1
- package/dist/client/resources/McpConnectionSuggestion.d.ts +9 -0
- package/dist/client/resources/McpConnectionSuggestion.d.ts.map +1 -0
- package/dist/client/resources/McpConnectionSuggestion.js +134 -0
- package/dist/client/resources/McpConnectionSuggestion.js.map +1 -0
- package/dist/client/resources/McpIntegrationDialog.d.ts +2 -1
- package/dist/client/resources/McpIntegrationDialog.d.ts.map +1 -1
- package/dist/client/resources/McpIntegrationDialog.js +51 -21
- package/dist/client/resources/McpIntegrationDialog.js.map +1 -1
- package/dist/client/resources/mcp-integration-catalog.d.ts +15 -0
- package/dist/client/resources/mcp-integration-catalog.d.ts.map +1 -1
- package/dist/client/resources/mcp-integration-catalog.js +420 -4
- package/dist/client/resources/mcp-integration-catalog.js.map +1 -1
- package/dist/client/resources/mcp-integration-logos.d.ts +2 -0
- package/dist/client/resources/mcp-integration-logos.d.ts.map +1 -0
- package/dist/client/resources/mcp-integration-logos.js +109 -0
- package/dist/client/resources/mcp-integration-logos.js.map +1 -0
- package/dist/client/sharing/ShareButton.d.ts.map +1 -1
- package/dist/client/sharing/ShareButton.js +15 -12
- package/dist/client/sharing/ShareButton.js.map +1 -1
- package/dist/client/use-agent-chat-home-handoff.d.ts +1 -1
- package/dist/client/use-agent-chat-home-handoff.d.ts.map +1 -1
- package/dist/client/use-agent-chat-home-handoff.js +1 -1
- package/dist/client/use-agent-chat-home-handoff.js.map +1 -1
- package/dist/collab/routes.d.ts +1 -1
- package/dist/collab/struct-routes.d.ts +1 -1
- package/dist/deploy/build.d.ts.map +1 -1
- package/dist/deploy/build.js +23 -0
- package/dist/deploy/build.js.map +1 -1
- package/dist/extensions/html-shell.d.ts.map +1 -1
- package/dist/extensions/html-shell.js +33 -1
- package/dist/extensions/html-shell.js.map +1 -1
- package/dist/ingestion/office.d.ts.map +1 -1
- package/dist/ingestion/office.js +1 -2
- package/dist/ingestion/office.js.map +1 -1
- package/dist/ingestion/pptx.js +2 -4
- package/dist/ingestion/pptx.js.map +1 -1
- package/dist/localization/default-messages.d.ts +100 -0
- package/dist/localization/default-messages.d.ts.map +1 -1
- package/dist/localization/default-messages.js +101 -1
- package/dist/localization/default-messages.js.map +1 -1
- package/dist/mcp/actions/call-mcp-tool.js +1 -0
- package/dist/mcp/actions/call-mcp-tool.js.map +1 -1
- package/dist/notifications/routes.d.ts +1 -1
- package/dist/observability/routes.d.ts +5 -5
- package/dist/provider-api/corpus-jobs.d.ts +2 -2
- package/dist/resources/handlers.d.ts +1 -1
- package/dist/secrets/register-framework-secrets.d.ts.map +1 -1
- package/dist/secrets/register-framework-secrets.js +25 -0
- package/dist/secrets/register-framework-secrets.js.map +1 -1
- package/dist/secrets/routes.d.ts +9 -9
- package/dist/server/agent-chat-plugin.d.ts.map +1 -1
- package/dist/server/agent-chat-plugin.js +23 -1
- 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/index.d.ts +1 -0
- package/dist/server/index.d.ts.map +1 -1
- package/dist/server/index.js +1 -0
- package/dist/server/index.js.map +1 -1
- package/dist/server/org-admin.d.ts +3 -0
- package/dist/server/org-admin.d.ts.map +1 -0
- package/dist/server/org-admin.js +24 -0
- package/dist/server/org-admin.js.map +1 -0
- package/dist/templates/chat/app/hooks/use-navigation-state.ts +4 -1
- package/dist/templates/chat/changelog/2026-07-17-the-agent-chat-sidebar-stays-closed-until-you-open-it-or-sta.md +6 -0
- package/dist/templates/workspace-core/.agents/skills/extensions/SKILL.md +9 -0
- package/dist/templates/workspace-core/.agents/skills/extensions/references/api.md +31 -0
- package/dist/templates/workspace-core/.agents/skills/external-agents/SKILL.md +9 -0
- package/dist/vite/client.d.ts.map +1 -1
- package/dist/vite/client.js +20 -0
- package/dist/vite/client.js.map +1 -1
- package/docs/content/integrations.mdx +597 -0
- package/docs/content/locales/ar-SA/mcp-clients.mdx +19 -1
- package/docs/content/locales/de-DE/mcp-clients.mdx +22 -1
- package/docs/content/locales/es-ES/mcp-clients.mdx +23 -1
- package/docs/content/locales/fr-FR/mcp-clients.mdx +23 -1
- package/docs/content/locales/hi-IN/mcp-clients.mdx +22 -1
- package/docs/content/locales/ja-JP/mcp-clients.mdx +21 -1
- package/docs/content/locales/ko-KR/mcp-clients.mdx +20 -1
- package/docs/content/locales/pt-BR/mcp-clients.mdx +22 -1
- package/docs/content/locales/zh-CN/mcp-clients.mdx +17 -1
- package/docs/content/locales/zh-TW/mcp-clients.mdx +17 -1
- package/docs/content/mcp-clients.mdx +51 -1
- package/docs/content/organizations-teams-permissions.mdx +413 -0
- package/package.json +1 -1
- package/src/templates/chat/app/hooks/use-navigation-state.ts +4 -1
- package/src/templates/chat/changelog/2026-07-17-the-agent-chat-sidebar-stays-closed-until-you-open-it-or-sta.md +6 -0
- package/src/templates/workspace-core/.agents/skills/extensions/SKILL.md +9 -0
- package/src/templates/workspace-core/.agents/skills/extensions/references/api.md +31 -0
- package/src/templates/workspace-core/.agents/skills/external-agents/SKILL.md +9 -0
|
@@ -7,7 +7,9 @@ import {
|
|
|
7
7
|
} from "@tabler/icons-react";
|
|
8
8
|
import { useEffect, useMemo, useRef, useState } from "react";
|
|
9
9
|
|
|
10
|
+
import { AgentAskPopover } from "../AgentAskPopover.js";
|
|
10
11
|
import { agentNativePath } from "../api-path.js";
|
|
12
|
+
import { openAgentSettings } from "../CommandMenu.js";
|
|
11
13
|
import {
|
|
12
14
|
Dialog,
|
|
13
15
|
DialogContent,
|
|
@@ -26,6 +28,7 @@ import {
|
|
|
26
28
|
buildMcpOAuthStartUrl,
|
|
27
29
|
createMcpIntegrationFormDefaults,
|
|
28
30
|
filterMcpIntegrations,
|
|
31
|
+
getMcpIntegrationApiFallback,
|
|
29
32
|
getDefaultMcpIntegrations,
|
|
30
33
|
isCustomMcpIntegrationEnabled,
|
|
31
34
|
resolveMcpIntegrationScope,
|
|
@@ -45,6 +48,7 @@ type DialogMode = "catalog" | "form";
|
|
|
45
48
|
interface McpIntegrationDialogProps {
|
|
46
49
|
open: boolean;
|
|
47
50
|
onOpenChange: (open: boolean) => void;
|
|
51
|
+
initialIntegrationId?: string | null;
|
|
48
52
|
defaultScope: McpServerScope;
|
|
49
53
|
canCreateOrgMcp: boolean;
|
|
50
54
|
hasOrg: boolean;
|
|
@@ -85,6 +89,7 @@ function compareUrl(value: string): string {
|
|
|
85
89
|
export function McpIntegrationDialog({
|
|
86
90
|
open,
|
|
87
91
|
onOpenChange,
|
|
92
|
+
initialIntegrationId = null,
|
|
88
93
|
defaultScope,
|
|
89
94
|
canCreateOrgMcp,
|
|
90
95
|
hasOrg,
|
|
@@ -138,21 +143,41 @@ export function McpIntegrationDialog({
|
|
|
138
143
|
[defaultIntegrations, query],
|
|
139
144
|
);
|
|
140
145
|
|
|
146
|
+
const selectedRequiresSetup = Boolean(
|
|
147
|
+
selected &&
|
|
148
|
+
(selected.connectionMode === "manual" ||
|
|
149
|
+
selected.availability === "provider-setup" ||
|
|
150
|
+
selected.availability === "client-restricted"),
|
|
151
|
+
);
|
|
152
|
+
|
|
141
153
|
useEffect(() => {
|
|
142
154
|
if (!open) return;
|
|
143
|
-
|
|
155
|
+
const initialIntegration = initialIntegrationId
|
|
156
|
+
? defaultIntegrations.find(
|
|
157
|
+
(integration) => integration.id === initialIntegrationId,
|
|
158
|
+
)
|
|
159
|
+
: null;
|
|
160
|
+
const initialDefaults =
|
|
161
|
+
createMcpIntegrationFormDefaults(initialIntegration);
|
|
162
|
+
setMode(initialIntegration || !showCatalog ? "form" : "catalog");
|
|
144
163
|
setQuery("");
|
|
145
|
-
setSelected(null);
|
|
164
|
+
setSelected(initialIntegration ?? null);
|
|
146
165
|
setScope(safeDefaultScope);
|
|
147
|
-
setName(
|
|
148
|
-
setUrl(
|
|
149
|
-
setDescription(
|
|
150
|
-
setHeadersText(
|
|
166
|
+
setName(initialDefaults.name);
|
|
167
|
+
setUrl(initialDefaults.url);
|
|
168
|
+
setDescription(initialDefaults.description);
|
|
169
|
+
setHeadersText(initialDefaults.headersText);
|
|
151
170
|
setBusy(false);
|
|
152
171
|
setQuickBusyId(null);
|
|
153
172
|
setError(null);
|
|
154
173
|
setTestResult(null);
|
|
155
|
-
}, [
|
|
174
|
+
}, [
|
|
175
|
+
defaultIntegrations,
|
|
176
|
+
initialIntegrationId,
|
|
177
|
+
open,
|
|
178
|
+
safeDefaultScope,
|
|
179
|
+
showCatalog,
|
|
180
|
+
]);
|
|
156
181
|
|
|
157
182
|
useEffect(() => {
|
|
158
183
|
if (open && mode === "form") {
|
|
@@ -268,6 +293,12 @@ export function McpIntegrationDialog({
|
|
|
268
293
|
};
|
|
269
294
|
|
|
270
295
|
const quickConnect = (integration: DefaultMcpIntegration) => {
|
|
296
|
+
if (
|
|
297
|
+
integration.connectionMode === "manual" ||
|
|
298
|
+
integration.availability === "provider-setup"
|
|
299
|
+
) {
|
|
300
|
+
return;
|
|
301
|
+
}
|
|
271
302
|
if (integration.authMode === "oauth") {
|
|
272
303
|
connectWithOAuth(integration);
|
|
273
304
|
return;
|
|
@@ -399,6 +430,14 @@ export function McpIntegrationDialog({
|
|
|
399
430
|
>
|
|
400
431
|
{t("mcpIntegrations.addYourOwn")}
|
|
401
432
|
</button>
|
|
433
|
+
<AgentAskPopover
|
|
434
|
+
label={t("mcpIntegrations.addSomething")}
|
|
435
|
+
title={t("mcpIntegrations.addSomethingTitle")}
|
|
436
|
+
placeholder={t("mcpIntegrations.addSomethingPlaceholder")}
|
|
437
|
+
prompt=""
|
|
438
|
+
context="The user wants to add an MCP or provider integration that is not in the current directory. Research the provider's official remote MCP endpoint and OAuth, client-registration, or allowlist requirements. Prefer Streamable HTTP endpoints over legacy SSE, reuse an existing provider OAuth connector when appropriate, and never ask the user to paste credentials into a prompt. If this should become a reusable preset, update the integration catalog, official docs link, bundled logo, localization, and tests."
|
|
439
|
+
className="h-9 whitespace-nowrap border-dashed px-3 text-[12px] font-medium"
|
|
440
|
+
/>
|
|
402
441
|
</div>
|
|
403
442
|
<div className="min-h-0 flex-1 overflow-y-auto px-7 pb-7">
|
|
404
443
|
{error && (
|
|
@@ -408,46 +447,121 @@ export function McpIntegrationDialog({
|
|
|
408
447
|
)}
|
|
409
448
|
<div className="grid gap-3 sm:grid-cols-2">
|
|
410
449
|
{filteredIntegrations.map((integration) => {
|
|
450
|
+
const apiFallback = getMcpIntegrationApiFallback(integration);
|
|
411
451
|
const connected = connectedUrls.has(
|
|
412
452
|
compareUrl(integration.url),
|
|
413
453
|
);
|
|
414
454
|
const requiresHeaders = integration.authMode === "headers";
|
|
455
|
+
const setupOnly =
|
|
456
|
+
integration.connectionMode === "manual" ||
|
|
457
|
+
integration.availability === "provider-setup" ||
|
|
458
|
+
integration.availability === "client-restricted";
|
|
415
459
|
return (
|
|
416
460
|
<article
|
|
417
461
|
key={integration.id}
|
|
418
462
|
className="flex min-h-[128px] flex-col rounded-md border border-border bg-card p-4 transition-colors hover:border-border/80 hover:bg-accent/20"
|
|
419
463
|
>
|
|
420
|
-
<
|
|
421
|
-
|
|
422
|
-
|
|
464
|
+
<div className="flex items-center gap-3">
|
|
465
|
+
<div className="relative flex h-8 w-8 shrink-0 items-center justify-center overflow-hidden rounded-md border border-border bg-background text-[11px] font-semibold text-muted-foreground">
|
|
466
|
+
<span aria-hidden="true">
|
|
467
|
+
{integration.name.slice(0, 1)}
|
|
468
|
+
</span>
|
|
469
|
+
<img
|
|
470
|
+
src={integration.logoUrl}
|
|
471
|
+
alt=""
|
|
472
|
+
loading="lazy"
|
|
473
|
+
decoding="async"
|
|
474
|
+
className="absolute inset-1 h-6 w-6 object-contain"
|
|
475
|
+
onError={(event) => {
|
|
476
|
+
event.currentTarget.hidden = true;
|
|
477
|
+
}}
|
|
478
|
+
/>
|
|
479
|
+
</div>
|
|
480
|
+
<div className="min-w-0">
|
|
481
|
+
<h3 className="truncate text-[13px] font-semibold text-foreground">
|
|
482
|
+
{integration.name}
|
|
483
|
+
</h3>
|
|
484
|
+
{integration.availability !== "ready" && (
|
|
485
|
+
<span className="mt-0.5 inline-flex rounded-full border border-amber-500/20 bg-amber-500/5 px-1.5 py-0.5 text-[9px] font-medium text-amber-700 dark:text-amber-300">
|
|
486
|
+
{integration.availability === "beta"
|
|
487
|
+
? t("mcpIntegrations.status.beta")
|
|
488
|
+
: integration.availability ===
|
|
489
|
+
"client-restricted"
|
|
490
|
+
? t("mcpIntegrations.status.clientRestricted")
|
|
491
|
+
: t("mcpIntegrations.status.setupRequired")}
|
|
492
|
+
</span>
|
|
493
|
+
)}
|
|
494
|
+
<span className="ms-1 mt-0.5 inline-flex rounded-full border border-border/70 bg-muted/40 px-1.5 py-0.5 text-[9px] font-medium text-muted-foreground">
|
|
495
|
+
{integration.verification === "verified"
|
|
496
|
+
? t("mcpIntegrations.status.verified")
|
|
497
|
+
: integration.verification === "restricted"
|
|
498
|
+
? t("mcpIntegrations.status.restricted")
|
|
499
|
+
: t("mcpIntegrations.status.preflightOnly")}
|
|
500
|
+
</span>
|
|
501
|
+
</div>
|
|
502
|
+
</div>
|
|
423
503
|
<p className="mt-1 line-clamp-2 flex-1 text-[12px] leading-relaxed text-muted-foreground">
|
|
424
504
|
{t(integration.descriptionKey)}
|
|
425
505
|
</p>
|
|
506
|
+
{integration.setupNoteKey && (
|
|
507
|
+
<p className="mt-2 line-clamp-3 text-[10px] leading-relaxed text-amber-700 dark:text-amber-300">
|
|
508
|
+
{t(integration.setupNoteKey)}
|
|
509
|
+
</p>
|
|
510
|
+
)}
|
|
426
511
|
<div className="mt-3 flex items-center gap-2">
|
|
427
|
-
|
|
428
|
-
|
|
429
|
-
|
|
430
|
-
|
|
431
|
-
|
|
432
|
-
|
|
433
|
-
connected
|
|
434
|
-
|
|
435
|
-
|
|
436
|
-
|
|
437
|
-
|
|
438
|
-
|
|
439
|
-
|
|
440
|
-
|
|
441
|
-
|
|
442
|
-
|
|
443
|
-
|
|
444
|
-
|
|
445
|
-
|
|
512
|
+
{connected ? (
|
|
513
|
+
<button
|
|
514
|
+
type="button"
|
|
515
|
+
disabled
|
|
516
|
+
className="inline-flex h-8 flex-1 cursor-not-allowed items-center justify-center gap-1.5 rounded-md border border-border bg-muted px-2.5 text-[12px] font-medium text-muted-foreground opacity-70"
|
|
517
|
+
>
|
|
518
|
+
{t("mcpIntegrations.connected")}
|
|
519
|
+
</button>
|
|
520
|
+
) : setupOnly ? (
|
|
521
|
+
<>
|
|
522
|
+
{apiFallback && (
|
|
523
|
+
<button
|
|
524
|
+
type="button"
|
|
525
|
+
onClick={() =>
|
|
526
|
+
openAgentSettings(
|
|
527
|
+
`secrets:${apiFallback.secretKey}`,
|
|
528
|
+
)
|
|
529
|
+
}
|
|
530
|
+
className="inline-flex h-8 flex-1 items-center justify-center gap-1.5 rounded-md bg-primary px-2.5 text-[12px] font-medium text-primary-foreground hover:bg-primary/90"
|
|
531
|
+
>
|
|
532
|
+
{t("mcpIntegrations.useApiToken")}
|
|
533
|
+
</button>
|
|
534
|
+
)}
|
|
535
|
+
<a
|
|
536
|
+
href={integration.docsUrl}
|
|
537
|
+
target="_blank"
|
|
538
|
+
rel="noopener noreferrer"
|
|
539
|
+
className="inline-flex h-8 flex-1 items-center justify-center gap-1.5 rounded-md border border-border bg-background px-2.5 text-[12px] font-medium text-foreground hover:bg-accent"
|
|
540
|
+
>
|
|
541
|
+
{t("mcpIntegrations.viewSetup")}
|
|
542
|
+
<IconExternalLink className="h-3.5 w-3.5" />
|
|
543
|
+
</a>
|
|
544
|
+
</>
|
|
545
|
+
) : (
|
|
546
|
+
<button
|
|
547
|
+
type="button"
|
|
548
|
+
onClick={() => quickConnect(integration)}
|
|
549
|
+
disabled={busy}
|
|
550
|
+
className={cn(
|
|
551
|
+
"inline-flex h-8 flex-1 items-center justify-center gap-1.5 rounded-md bg-primary px-2.5 text-[12px] font-medium text-primary-foreground hover:bg-primary/90",
|
|
552
|
+
busy && "cursor-not-allowed opacity-70",
|
|
553
|
+
)}
|
|
554
|
+
>
|
|
555
|
+
{quickBusyId === integration.id ? (
|
|
556
|
+
<IconLoader2 className="h-3.5 w-3.5 animate-spin" />
|
|
557
|
+
) : null}
|
|
558
|
+
{integration.authMode === "oauth"
|
|
446
559
|
? t("mcpIntegrations.connectWithOAuth")
|
|
447
560
|
: requiresHeaders
|
|
448
561
|
? t("mcpIntegrations.configure")
|
|
449
562
|
: t("mcpIntegrations.connect")}
|
|
450
|
-
|
|
563
|
+
</button>
|
|
564
|
+
)}
|
|
451
565
|
{integration.docsUrl && (
|
|
452
566
|
<Tooltip>
|
|
453
567
|
<TooltipTrigger asChild>
|
|
@@ -638,7 +752,16 @@ export function McpIntegrationDialog({
|
|
|
638
752
|
>
|
|
639
753
|
{t("mcpIntegrations.test")}
|
|
640
754
|
</button>
|
|
641
|
-
{
|
|
755
|
+
{selected?.authMode === "oauth" && !selectedRequiresSetup ? (
|
|
756
|
+
<button
|
|
757
|
+
type="button"
|
|
758
|
+
onClick={() => connectWithOAuth(selected)}
|
|
759
|
+
disabled={!name.trim() || !url.trim() || busy}
|
|
760
|
+
className="rounded-md border border-border bg-background px-3 py-1.5 text-[12px] font-medium text-foreground hover:bg-accent disabled:pointer-events-none disabled:opacity-40"
|
|
761
|
+
>
|
|
762
|
+
{t("mcpIntegrations.connectWithOAuth")}
|
|
763
|
+
</button>
|
|
764
|
+
) : !selected ? (
|
|
642
765
|
<button
|
|
643
766
|
type="button"
|
|
644
767
|
onClick={connectCustomWithOAuth}
|
|
@@ -647,16 +770,30 @@ export function McpIntegrationDialog({
|
|
|
647
770
|
>
|
|
648
771
|
{t("mcpIntegrations.connectWithOAuth")}
|
|
649
772
|
</button>
|
|
773
|
+
) : null}
|
|
774
|
+
{selectedRequiresSetup ? (
|
|
775
|
+
selected?.docsUrl ? (
|
|
776
|
+
<a
|
|
777
|
+
href={selected.docsUrl}
|
|
778
|
+
target="_blank"
|
|
779
|
+
rel="noopener noreferrer"
|
|
780
|
+
className="inline-flex min-w-[92px] items-center justify-center gap-1.5 rounded-md bg-primary px-3 py-1.5 text-[12px] font-medium text-primary-foreground hover:bg-primary/90"
|
|
781
|
+
>
|
|
782
|
+
{t("mcpIntegrations.viewSetup")}
|
|
783
|
+
<IconExternalLink className="h-3 w-3" />
|
|
784
|
+
</a>
|
|
785
|
+
) : null
|
|
786
|
+
) : (
|
|
787
|
+
<button
|
|
788
|
+
type="button"
|
|
789
|
+
onClick={submitForm}
|
|
790
|
+
disabled={!name.trim() || !url.trim() || busy}
|
|
791
|
+
className="inline-flex min-w-[92px] items-center justify-center gap-1.5 rounded-md bg-primary px-3 py-1.5 text-[12px] font-medium text-primary-foreground hover:bg-primary/90 disabled:pointer-events-none disabled:opacity-40"
|
|
792
|
+
>
|
|
793
|
+
{busy && <IconLoader2 className="h-3.5 w-3.5 animate-spin" />}
|
|
794
|
+
{t("mcpIntegrations.connect")}
|
|
795
|
+
</button>
|
|
650
796
|
)}
|
|
651
|
-
<button
|
|
652
|
-
type="button"
|
|
653
|
-
onClick={submitForm}
|
|
654
|
-
disabled={!name.trim() || !url.trim() || busy}
|
|
655
|
-
className="inline-flex min-w-[92px] items-center justify-center gap-1.5 rounded-md bg-primary px-3 py-1.5 text-[12px] font-medium text-primary-foreground hover:bg-primary/90 disabled:pointer-events-none disabled:opacity-40"
|
|
656
|
-
>
|
|
657
|
-
{busy && <IconLoader2 className="h-3.5 w-3.5 animate-spin" />}
|
|
658
|
-
{t("mcpIntegrations.connect")}
|
|
659
|
-
</button>
|
|
660
797
|
</div>
|
|
661
798
|
</>
|
|
662
799
|
)}
|