@agent-native/core 0.107.0 → 0.107.2
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 +1 -1
- package/corpus/core/CHANGELOG.md +16 -0
- package/corpus/core/docs/content/integrations.mdx +27 -27
- package/corpus/core/package.json +1 -1
- package/corpus/core/src/a2a/artifact-response.ts +32 -10
- 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 +13 -0
- 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/resources/McpConnectionSuggestion.tsx +41 -11
- package/corpus/core/src/client/resources/McpIntegrationDialog.tsx +27 -9
- package/corpus/core/src/client/resources/mcp-integration-catalog.ts +45 -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/integrations/a2a-continuation-processor.ts +107 -3
- package/corpus/core/src/integrations/pending-tasks-store.ts +98 -1
- package/corpus/core/src/integrations/plugin.ts +129 -4
- package/corpus/core/src/integrations/webhook-handler.ts +339 -36
- package/corpus/core/src/localization/default-messages.ts +4 -1
- package/corpus/core/src/secrets/register-framework-secrets.ts +28 -0
- package/corpus/core/src/server/agent-chat-plugin.ts +122 -9
- package/corpus/core/src/vite/client.ts +24 -0
- package/corpus/templates/analytics/.agents/skills/dashboard-management/SKILL.md +29 -21
- package/corpus/templates/analytics/AGENTS.md +8 -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 +1 -3
- 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 +27 -0
- package/corpus/templates/analytics/app/pages/adhoc/sql-dashboard/types.ts +6 -0
- package/corpus/templates/analytics/changelog/2026-07-17-dashboard-extension-boxes.md +6 -0
- package/corpus/templates/analytics/server/lib/agent-readable-resource-context.ts +8 -0
- package/corpus/templates/analytics/server/plugins/agent-chat.ts +1 -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/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/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/app/components/library/library-layout.tsx +1 -1
- 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/content/actions/_content-space-access.ts +45 -2
- package/corpus/templates/content/actions/create-content-database.ts +41 -7
- package/corpus/templates/content/app/components/layout/Layout.tsx +1 -1
- 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-the-agent-chat-sidebar-stays-closed-until-you-open-it-or-sta.md +6 -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/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/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-the-agent-chat-sidebar-stays-closed-until-you-open-it-or-sta.md +6 -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/a2a/artifact-response.d.ts +5 -1
- package/dist/a2a/artifact-response.d.ts.map +1 -1
- package/dist/a2a/artifact-response.js +18 -12
- package/dist/a2a/artifact-response.js.map +1 -1
- 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 +10 -1
- 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/resources/McpConnectionSuggestion.d.ts.map +1 -1
- package/dist/client/resources/McpConnectionSuggestion.js +27 -8
- package/dist/client/resources/McpConnectionSuggestion.js.map +1 -1
- package/dist/client/resources/McpIntegrationDialog.d.ts.map +1 -1
- package/dist/client/resources/McpIntegrationDialog.js +4 -2
- package/dist/client/resources/McpIntegrationDialog.js.map +1 -1
- package/dist/client/resources/mcp-integration-catalog.d.ts +6 -0
- package/dist/client/resources/mcp-integration-catalog.d.ts.map +1 -1
- package/dist/client/resources/mcp-integration-catalog.js +33 -0
- package/dist/client/resources/mcp-integration-catalog.js.map +1 -1
- 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/awareness.d.ts +2 -2
- package/dist/collab/awareness.d.ts.map +1 -1
- package/dist/collab/routes.d.ts +1 -1
- package/dist/integrations/a2a-continuation-processor.js +62 -5
- package/dist/integrations/a2a-continuation-processor.js.map +1 -1
- package/dist/integrations/pending-tasks-store.d.ts +3 -0
- package/dist/integrations/pending-tasks-store.d.ts.map +1 -1
- package/dist/integrations/pending-tasks-store.js +75 -1
- package/dist/integrations/pending-tasks-store.js.map +1 -1
- package/dist/integrations/plugin.d.ts.map +1 -1
- package/dist/integrations/plugin.js +81 -5
- package/dist/integrations/plugin.js.map +1 -1
- package/dist/integrations/webhook-handler.d.ts +23 -2
- package/dist/integrations/webhook-handler.d.ts.map +1 -1
- package/dist/integrations/webhook-handler.js +257 -35
- package/dist/integrations/webhook-handler.js.map +1 -1
- package/dist/localization/default-messages.d.ts +2 -0
- package/dist/localization/default-messages.d.ts.map +1 -1
- package/dist/localization/default-messages.js +3 -1
- package/dist/localization/default-messages.js.map +1 -1
- package/dist/notifications/routes.d.ts +2 -2
- package/dist/observability/routes.d.ts +5 -5
- 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 +6 -0
- package/dist/server/agent-chat-plugin.d.ts.map +1 -1
- package/dist/server/agent-chat-plugin.js +94 -7
- package/dist/server/agent-chat-plugin.js.map +1 -1
- package/dist/server/agent-engine-api-key-route.d.ts +1 -1
- 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/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 +27 -27
- 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
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"mcp-integration-catalog.js","sourceRoot":"","sources":["../../../src/client/resources/mcp-integration-catalog.ts"],"names":[],"mappings":"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","sourcesContent":["import {\n normalizeMcpIntegrationsConfig,\n type McpIntegrationsConfigInput,\n type NormalizedMcpIntegrationsConfig,\n} from \"../../shared/mcp-integration-config.js\";\nimport { mcpIntegrationLogo } from \"./mcp-integration-logos.js\";\n\nexport type McpIntegrationAuthMode = \"none\" | \"headers\" | \"oauth\";\nexport type McpIntegrationConnectionMode =\n | \"direct\"\n | \"headers\"\n | \"oauth\"\n | \"manual\";\nexport type McpIntegrationAvailability =\n | \"ready\"\n | \"beta\"\n | \"provider-setup\"\n | \"client-restricted\";\nexport type McpIntegrationVerification =\n | \"verified\"\n | \"preflight-only\"\n | \"restricted\";\n\ndeclare const __AGENT_NATIVE_MCP_INTEGRATIONS_CONFIG__:\n | NormalizedMcpIntegrationsConfig\n | undefined;\n\nexport interface DefaultMcpIntegration {\n id: string;\n name: string;\n provider: string;\n description: string;\n descriptionKey: string;\n useCase: string;\n useCaseKey: string;\n url: string;\n authMode: McpIntegrationAuthMode;\n connectionMode: McpIntegrationConnectionMode;\n availability: McpIntegrationAvailability;\n verification: McpIntegrationVerification;\n logoUrl: string;\n docsUrl?: string;\n setupNoteKey?: string;\n headerPlaceholder?: string;\n keywords: string[];\n}\n\nexport interface McpIntegrationFormDefaults {\n name: string;\n url: string;\n description: string;\n headersText: string;\n}\n\nexport interface McpOAuthStartParams {\n name: string;\n url: string;\n description: string;\n scope: \"user\" | \"org\";\n returnUrl: string;\n}\n\nexport const DEFAULT_MCP_INTEGRATIONS: DefaultMcpIntegration[] = [\n {\n id: \"context7\",\n name: \"Context7\",\n provider: \"context7\",\n description: \"Fetch current library docs in agent chats.\",\n descriptionKey: \"mcpIntegrations.catalog.context7.description\",\n useCase: \"documentation, technical reference, API docs, framework guides\",\n useCaseKey: \"mcpIntegrations.catalog.context7.useCase\",\n url: \"https://mcp.context7.com/mcp\",\n authMode: \"none\",\n connectionMode: \"direct\",\n availability: \"ready\",\n verification: \"verified\",\n logoUrl: mcpIntegrationLogo(\"context7\"),\n docsUrl: \"https://context7.com/\",\n keywords: [\"docs\", \"documentation\", \"libraries\", \"frameworks\"],\n },\n {\n id: \"sentry\",\n name: \"Sentry\",\n provider: \"sentry\",\n description: \"Inspect issues, events, and debugging data.\",\n descriptionKey: \"mcpIntegrations.catalog.sentry.description\",\n useCase: \"error monitoring, debugging, performance, crash reports\",\n useCaseKey: \"mcpIntegrations.catalog.sentry.useCase\",\n url: \"https://mcp.sentry.dev/mcp\",\n authMode: \"headers\",\n connectionMode: \"headers\",\n availability: \"ready\",\n verification: \"preflight-only\",\n logoUrl: mcpIntegrationLogo(\"sentry\"),\n docsUrl: \"https://docs.sentry.io/product/sentry-mcp/\",\n headerPlaceholder: \"Authorization: Bearer <sentry-token>\",\n keywords: [\"errors\", \"monitoring\", \"debugging\", \"issues\"],\n },\n {\n id: \"notion\",\n name: \"Notion\",\n provider: \"notion\",\n description: \"Search pages and team knowledge.\",\n descriptionKey: \"mcpIntegrations.catalog.notion.description\",\n useCase: \"documentation, knowledge management, notes, content creation\",\n useCaseKey: \"mcpIntegrations.catalog.notion.useCase\",\n url: \"https://mcp.notion.com/mcp\",\n authMode: \"oauth\",\n connectionMode: \"oauth\",\n availability: \"ready\",\n verification: \"preflight-only\",\n logoUrl: mcpIntegrationLogo(\"notion\"),\n docsUrl: \"https://developers.notion.com/guides/mcp/get-started-with-mcp\",\n setupNoteKey: \"mcpIntegrations.catalog.notion.setupNote\",\n keywords: [\"docs\", \"knowledge\", \"notes\", \"pages\"],\n },\n {\n id: \"semgrep\",\n name: \"Semgrep\",\n provider: \"semgrep\",\n description: \"Scan code for security findings.\",\n descriptionKey: \"mcpIntegrations.catalog.semgrep.description\",\n useCase: \"security scanning, vulnerability detection, code analysis\",\n useCaseKey: \"mcpIntegrations.catalog.semgrep.useCase\",\n url: \"https://mcp.semgrep.ai/mcp\",\n authMode: \"none\",\n connectionMode: \"direct\",\n availability: \"ready\",\n verification: \"preflight-only\",\n logoUrl: mcpIntegrationLogo(\"semgrep\"),\n docsUrl: \"https://github.com/semgrep/mcp#readme\",\n keywords: [\"security\", \"sast\", \"code scanning\", \"vulnerabilities\"],\n },\n {\n id: \"linear\",\n name: \"Linear\",\n provider: \"linear\",\n description: \"Read and write Linear issues.\",\n descriptionKey: \"mcpIntegrations.catalog.linear.description\",\n useCase: \"project management, issue tracking, planning, bug reports\",\n useCaseKey: \"mcpIntegrations.catalog.linear.useCase\",\n url: \"https://mcp.linear.app/mcp\",\n authMode: \"oauth\",\n connectionMode: \"oauth\",\n availability: \"ready\",\n verification: \"preflight-only\",\n logoUrl: mcpIntegrationLogo(\"linear\"),\n docsUrl: \"https://linear.app/docs/mcp\",\n keywords: [\"issues\", \"tickets\", \"planning\", \"project management\"],\n },\n {\n id: \"atlassian\",\n name: \"Atlassian\",\n provider: \"atlassian\",\n description: \"Read and write Jira issues and Confluence content.\",\n descriptionKey: \"mcpIntegrations.catalog.atlassian.description\",\n useCase:\n \"project management, issue tracking, documentation, team collaboration\",\n useCaseKey: \"mcpIntegrations.catalog.atlassian.useCase\",\n url: \"https://mcp.atlassian.com/v1/mcp/authv2\",\n authMode: \"oauth\",\n connectionMode: \"oauth\",\n availability: \"provider-setup\",\n verification: \"restricted\",\n logoUrl: mcpIntegrationLogo(\"atlassian\"),\n docsUrl:\n \"https://developer.atlassian.com/cloud/rovo-mcp/guides/getting-started/\",\n setupNoteKey: \"mcpIntegrations.catalog.atlassian.setupNote\",\n keywords: [\"atlassian\", \"jira\", \"confluence\", \"issues\", \"tickets\"],\n },\n {\n id: \"supabase\",\n name: \"Supabase\",\n provider: \"supabase\",\n description: \"Manage data, auth, and backend services.\",\n descriptionKey: \"mcpIntegrations.catalog.supabase.description\",\n useCase: \"database, authentication, storage, edge functions\",\n useCaseKey: \"mcpIntegrations.catalog.supabase.useCase\",\n url: \"https://mcp.supabase.com/mcp\",\n authMode: \"oauth\",\n connectionMode: \"oauth\",\n availability: \"ready\",\n verification: \"preflight-only\",\n logoUrl: mcpIntegrationLogo(\"supabase\"),\n docsUrl: \"https://www.builder.io/c/docs/fusion-connect-to-supabase\",\n keywords: [\"database\", \"auth\", \"postgres\", \"storage\"],\n },\n {\n id: \"neon\",\n name: \"Neon\",\n provider: \"neon\",\n description: \"Work with serverless Postgres projects.\",\n descriptionKey: \"mcpIntegrations.catalog.neon.description\",\n useCase: \"database management, serverless postgres, data storage\",\n useCaseKey: \"mcpIntegrations.catalog.neon.useCase\",\n url: \"https://mcp.neon.tech/sse\",\n authMode: \"oauth\",\n connectionMode: \"oauth\",\n availability: \"ready\",\n verification: \"preflight-only\",\n logoUrl: mcpIntegrationLogo(\"neon\"),\n docsUrl: \"https://www.builder.io/c/docs/fusion-connect-to-neon\",\n keywords: [\"database\", \"postgres\", \"serverless\", \"backend\"],\n },\n {\n id: \"stripe\",\n name: \"Stripe\",\n provider: \"stripe\",\n description: \"Manage payments, subscriptions, and customers.\",\n descriptionKey: \"mcpIntegrations.catalog.stripe.description\",\n useCase: \"payments, subscriptions, invoicing, customer management\",\n useCaseKey: \"mcpIntegrations.catalog.stripe.useCase\",\n url: \"https://mcp.stripe.com\",\n authMode: \"oauth\",\n connectionMode: \"oauth\",\n availability: \"ready\",\n verification: \"preflight-only\",\n logoUrl: mcpIntegrationLogo(\"stripe\"),\n docsUrl: \"https://docs.stripe.com/mcp\",\n keywords: [\"payments\", \"billing\", \"subscriptions\", \"customers\"],\n },\n {\n id: \"cloudflare\",\n name: \"Cloudflare\",\n provider: \"cloudflare\",\n description: \"Search and operate Cloudflare services through MCP.\",\n descriptionKey: \"mcpIntegrations.catalog.cloudflare.description\",\n useCase: \"DNS, Workers, domains, security, observability, platform APIs\",\n useCaseKey: \"mcpIntegrations.catalog.cloudflare.useCase\",\n url: \"https://mcp.cloudflare.com/mcp\",\n authMode: \"oauth\",\n connectionMode: \"oauth\",\n availability: \"ready\",\n verification: \"preflight-only\",\n logoUrl: mcpIntegrationLogo(\"cloudflare\"),\n docsUrl:\n \"https://developers.cloudflare.com/agents/model-context-protocol/cloudflare/servers-for-cloudflare/\",\n setupNoteKey: \"mcpIntegrations.catalog.cloudflare.setupNote\",\n keywords: [\"cloud\", \"workers\", \"dns\", \"security\", \"observability\"],\n },\n {\n id: \"gitlab\",\n name: \"GitLab\",\n provider: \"gitlab\",\n description: \"Read and manage GitLab projects, issues, and merge requests.\",\n descriptionKey: \"mcpIntegrations.catalog.gitlab.description\",\n useCase: \"repositories, issues, merge requests, CI/CD, code analytics\",\n useCaseKey: \"mcpIntegrations.catalog.gitlab.useCase\",\n url: \"https://gitlab.com/api/v4/mcp\",\n authMode: \"oauth\",\n connectionMode: \"oauth\",\n availability: \"beta\",\n verification: \"restricted\",\n logoUrl: mcpIntegrationLogo(\"gitlab\"),\n docsUrl: \"https://docs.gitlab.com/user/model_context_protocol/mcp_server/\",\n setupNoteKey: \"mcpIntegrations.catalog.gitlab.setupNote\",\n keywords: [\"git\", \"repositories\", \"issues\", \"merge requests\", \"ci\"],\n },\n {\n id: \"figma\",\n name: \"Figma\",\n provider: \"figma\",\n description: \"Bring Figma design context and canvas actions into an agent.\",\n descriptionKey: \"mcpIntegrations.catalog.figma.description\",\n useCase: \"design files, components, variables, design systems, canvas\",\n useCaseKey: \"mcpIntegrations.catalog.figma.useCase\",\n url: \"https://mcp.figma.com/mcp\",\n authMode: \"oauth\",\n connectionMode: \"manual\",\n availability: \"client-restricted\",\n verification: \"restricted\",\n logoUrl: mcpIntegrationLogo(\"figma\"),\n docsUrl: \"https://developers.figma.com/docs/figma-mcp-server/\",\n setupNoteKey: \"mcpIntegrations.catalog.figma.setupNote\",\n keywords: [\"design\", \"figjam\", \"components\", \"variables\", \"canvas\"],\n },\n {\n id: \"canva\",\n name: \"Canva\",\n provider: \"canva\",\n description: \"Search, create, and update Canva designs and assets.\",\n descriptionKey: \"mcpIntegrations.catalog.canva.description\",\n useCase: \"designs, templates, assets, brand kits, exports, collaboration\",\n useCaseKey: \"mcpIntegrations.catalog.canva.useCase\",\n url: \"https://mcp.canva.com/mcp\",\n authMode: \"oauth\",\n connectionMode: \"manual\",\n availability: \"client-restricted\",\n verification: \"restricted\",\n logoUrl: mcpIntegrationLogo(\"canva\"),\n docsUrl: \"https://www.canva.dev/docs/mcp/\",\n setupNoteKey: \"mcpIntegrations.catalog.canva.setupNote\",\n keywords: [\"design\", \"templates\", \"assets\", \"brand\", \"exports\"],\n },\n {\n id: \"vercel\",\n name: \"Vercel\",\n provider: \"vercel\",\n description:\n \"Search Vercel docs and inspect projects, deployments, and logs.\",\n descriptionKey: \"mcpIntegrations.catalog.vercel.description\",\n useCase: \"deployments, projects, logs, domains, hosting, documentation\",\n useCaseKey: \"mcpIntegrations.catalog.vercel.useCase\",\n url: \"https://mcp.vercel.com\",\n authMode: \"oauth\",\n connectionMode: \"manual\",\n availability: \"client-restricted\",\n verification: \"restricted\",\n logoUrl: mcpIntegrationLogo(\"vercel\"),\n docsUrl: \"https://vercel.com/docs/agent-resources/vercel-mcp\",\n setupNoteKey: \"mcpIntegrations.catalog.vercel.setupNote\",\n keywords: [\"deployments\", \"hosting\", \"projects\", \"logs\", \"domains\"],\n },\n {\n id: \"github\",\n name: \"GitHub\",\n provider: \"github\",\n description: \"Read repositories, issues, pull requests, and code context.\",\n descriptionKey: \"mcpIntegrations.catalog.github.description\",\n useCase: \"repositories, issues, pull requests, code, engineering analytics\",\n useCaseKey: \"mcpIntegrations.catalog.github.useCase\",\n url: \"https://api.githubcopilot.com/mcp/\",\n authMode: \"oauth\",\n connectionMode: \"manual\",\n availability: \"provider-setup\",\n verification: \"restricted\",\n logoUrl: mcpIntegrationLogo(\"github\"),\n docsUrl: \"https://github.com/github/github-mcp-server\",\n setupNoteKey: \"mcpIntegrations.catalog.github.setupNote\",\n keywords: [\"git\", \"repositories\", \"issues\", \"pull requests\", \"code\"],\n },\n {\n id: \"slack\",\n name: \"Slack\",\n provider: \"slack\",\n description:\n \"Search Slack conversations and take workspace actions through MCP.\",\n descriptionKey: \"mcpIntegrations.catalog.slack.description\",\n useCase: \"messages, channels, people, company memory, workflows\",\n useCaseKey: \"mcpIntegrations.catalog.slack.useCase\",\n url: \"https://mcp.slack.com/mcp\",\n authMode: \"oauth\",\n connectionMode: \"manual\",\n availability: \"client-restricted\",\n verification: \"restricted\",\n logoUrl: mcpIntegrationLogo(\"slack\"),\n docsUrl: \"https://docs.slack.dev/ai/slack-mcp-server/\",\n setupNoteKey: \"mcpIntegrations.catalog.slack.setupNote\",\n keywords: [\"messages\", \"channels\", \"search\", \"people\", \"chat\"],\n },\n {\n id: \"asana\",\n name: \"Asana\",\n provider: \"asana\",\n description:\n \"Search and manage Asana tasks, projects, and work graph data.\",\n descriptionKey: \"mcpIntegrations.catalog.asana.description\",\n useCase: \"tasks, projects, portfolios, planning, workload\",\n useCaseKey: \"mcpIntegrations.catalog.asana.useCase\",\n url: \"https://mcp.asana.com/v2/mcp\",\n authMode: \"oauth\",\n connectionMode: \"manual\",\n availability: \"provider-setup\",\n verification: \"restricted\",\n logoUrl: mcpIntegrationLogo(\"asana\"),\n docsUrl:\n \"https://developers.asana.com/docs/integrating-with-asanas-mcp-server\",\n setupNoteKey: \"mcpIntegrations.catalog.asana.setupNote\",\n keywords: [\"tasks\", \"projects\", \"planning\", \"workload\", \"portfolios\"],\n },\n {\n id: \"hubspot\",\n name: \"HubSpot\",\n provider: \"hubspot\",\n description: \"Search and update HubSpot CRM records through MCP.\",\n descriptionKey: \"mcpIntegrations.catalog.hubspot.description\",\n useCase: \"CRM, contacts, companies, deals, tickets, customer analytics\",\n useCaseKey: \"mcpIntegrations.catalog.hubspot.useCase\",\n url: \"https://mcp.hubspot.com\",\n authMode: \"oauth\",\n connectionMode: \"manual\",\n availability: \"provider-setup\",\n verification: \"restricted\",\n logoUrl: mcpIntegrationLogo(\"hubspot\"),\n docsUrl:\n \"https://developers.hubspot.com/docs/apps/developer-platform/build-apps/integrate-with-the-remote-hubspot-mcp-server\",\n setupNoteKey: \"mcpIntegrations.catalog.hubspot.setupNote\",\n keywords: [\"crm\", \"contacts\", \"companies\", \"deals\", \"tickets\"],\n },\n {\n id: \"intercom\",\n name: \"Intercom\",\n provider: \"intercom\",\n description: \"Search conversations and customer support knowledge.\",\n descriptionKey: \"mcpIntegrations.catalog.intercom.description\",\n useCase: \"customer support, conversations, contacts, help center content\",\n useCaseKey: \"mcpIntegrations.catalog.intercom.useCase\",\n url: \"https://mcp.intercom.com/mcp\",\n authMode: \"oauth\",\n connectionMode: \"oauth\",\n availability: \"ready\",\n verification: \"preflight-only\",\n logoUrl: mcpIntegrationLogo(\"intercom\"),\n docsUrl: \"https://developers.intercom.com/docs/guides/mcp\",\n setupNoteKey: \"mcpIntegrations.catalog.intercom.setupNote\",\n keywords: [\"support\", \"conversations\", \"customers\", \"help center\"],\n },\n {\n id: \"monday\",\n name: \"monday.com\",\n provider: \"monday\",\n description: \"Work with boards, items, and team workflows.\",\n descriptionKey: \"mcpIntegrations.catalog.monday.description\",\n useCase: \"work management, boards, projects, tasks, team operations\",\n useCaseKey: \"mcpIntegrations.catalog.monday.useCase\",\n url: \"https://mcp.monday.com/mcp\",\n authMode: \"oauth\",\n connectionMode: \"oauth\",\n availability: \"ready\",\n verification: \"preflight-only\",\n logoUrl: mcpIntegrationLogo(\"monday\"),\n docsUrl:\n \"https://developer.monday.com/api-reference/docs/build-on-monday-with-ai\",\n setupNoteKey: \"mcpIntegrations.catalog.monday.setupNote\",\n keywords: [\"work management\", \"boards\", \"projects\", \"tasks\", \"teams\"],\n },\n {\n id: \"webflow\",\n name: \"Webflow\",\n provider: \"webflow\",\n description: \"Read and update Webflow sites and content.\",\n descriptionKey: \"mcpIntegrations.catalog.webflow.description\",\n useCase: \"websites, CMS, site content, publishing, design workflows\",\n useCaseKey: \"mcpIntegrations.catalog.webflow.useCase\",\n url: \"https://mcp.webflow.com/mcp\",\n authMode: \"oauth\",\n connectionMode: \"oauth\",\n availability: \"ready\",\n verification: \"preflight-only\",\n logoUrl: mcpIntegrationLogo(\"webflow\"),\n docsUrl: \"https://developers.webflow.com/mcp/reference/getting-started\",\n setupNoteKey: \"mcpIntegrations.catalog.webflow.setupNote\",\n keywords: [\"websites\", \"cms\", \"content\", \"publishing\", \"design\"],\n },\n {\n id: \"paypal\",\n name: \"PayPal\",\n provider: \"paypal\",\n description: \"Work with PayPal payments, invoices, and commerce data.\",\n descriptionKey: \"mcpIntegrations.catalog.paypal.description\",\n useCase: \"payments, invoices, transactions, merchant operations\",\n useCaseKey: \"mcpIntegrations.catalog.paypal.useCase\",\n url: \"https://mcp.paypal.com/sse\",\n authMode: \"oauth\",\n connectionMode: \"oauth\",\n availability: \"ready\",\n verification: \"preflight-only\",\n logoUrl: mcpIntegrationLogo(\"paypal\"),\n docsUrl: \"https://developer.paypal.com/ai-tools/mcp-server/\",\n setupNoteKey: \"mcpIntegrations.catalog.paypal.setupNote\",\n keywords: [\"payments\", \"invoices\", \"transactions\", \"commerce\"],\n },\n {\n id: \"box\",\n name: \"Box\",\n provider: \"box\",\n description: \"Search and manage files and folders in Box.\",\n descriptionKey: \"mcpIntegrations.catalog.box.description\",\n useCase: \"files, folders, enterprise content, search, collaboration\",\n useCaseKey: \"mcpIntegrations.catalog.box.useCase\",\n url: \"https://mcp.box.com\",\n authMode: \"oauth\",\n connectionMode: \"manual\",\n availability: \"provider-setup\",\n verification: \"restricted\",\n logoUrl: mcpIntegrationLogo(\"box\"),\n docsUrl: \"https://developer.box.com/guides/box-mcp\",\n setupNoteKey: \"mcpIntegrations.catalog.box.setupNote\",\n keywords: [\"files\", \"folders\", \"documents\", \"enterprise content\"],\n },\n {\n id: \"netlify\",\n name: \"Netlify\",\n provider: \"netlify\",\n description: \"Inspect and operate Netlify sites and deployments.\",\n descriptionKey: \"mcpIntegrations.catalog.netlify.description\",\n useCase: \"sites, deployments, builds, domains, hosting operations\",\n useCaseKey: \"mcpIntegrations.catalog.netlify.useCase\",\n url: \"https://netlify-mcp.netlify.app/mcp\",\n authMode: \"oauth\",\n connectionMode: \"oauth\",\n availability: \"ready\",\n verification: \"preflight-only\",\n logoUrl: mcpIntegrationLogo(\"netlify\"),\n docsUrl:\n \"https://docs.netlify.com/build/build-with-ai/agent-setup-guides/agent-setup-overview/\",\n setupNoteKey: \"mcpIntegrations.catalog.netlify.setupNote\",\n keywords: [\"deployments\", \"builds\", \"sites\", \"hosting\", \"domains\"],\n },\n {\n id: \"zapier\",\n name: \"Zapier\",\n provider: \"zapier\",\n description: \"Connect MCP tools to thousands of app actions.\",\n descriptionKey: \"mcpIntegrations.catalog.zapier.description\",\n useCase: \"automation, workflows, app actions, cross-service operations\",\n useCaseKey: \"mcpIntegrations.catalog.zapier.useCase\",\n url: \"https://mcp.zapier.com/api/v1/connect\",\n authMode: \"headers\",\n connectionMode: \"headers\",\n availability: \"ready\",\n verification: \"restricted\",\n logoUrl: mcpIntegrationLogo(\"zapier\"),\n docsUrl:\n \"https://help.zapier.com/hc/en-us/articles/36265392843917-Use-Zapier-MCP-with-your-client\",\n setupNoteKey: \"mcpIntegrations.catalog.zapier.setupNote\",\n headerPlaceholder: \"Authorization: Bearer <zapier-mcp-token>\",\n keywords: [\"automation\", \"workflows\", \"actions\", \"apps\", \"integrations\"],\n },\n];\n\nfunction readRuntimeMcpIntegrationsConfig(): NormalizedMcpIntegrationsConfig {\n try {\n if (typeof __AGENT_NATIVE_MCP_INTEGRATIONS_CONFIG__ !== \"undefined\") {\n return normalizeMcpIntegrationsConfig(\n __AGENT_NATIVE_MCP_INTEGRATIONS_CONFIG__,\n );\n }\n } catch {\n // Test and non-Vite contexts may not define the compile-time constant.\n }\n return normalizeMcpIntegrationsConfig();\n}\n\nfunction normalizePresetConfig(\n config?: McpIntegrationsConfigInput | NormalizedMcpIntegrationsConfig,\n): NormalizedMcpIntegrationsConfig {\n if (config === undefined) return readRuntimeMcpIntegrationsConfig();\n return normalizeMcpIntegrationsConfig(config);\n}\n\nexport function getDefaultMcpIntegrations(\n config?: McpIntegrationsConfigInput | NormalizedMcpIntegrationsConfig,\n): DefaultMcpIntegration[] {\n const normalized = normalizePresetConfig(config);\n if (!normalized.enabled || !normalized.defaults.enabled) return [];\n\n const include = normalized.defaults.include\n ? new Set(normalized.defaults.include)\n : null;\n const exclude = new Set(normalized.defaults.exclude);\n return DEFAULT_MCP_INTEGRATIONS.filter((integration) => {\n const id = integration.id.toLowerCase();\n if (include && !include.has(id)) return false;\n return !exclude.has(id);\n });\n}\n\nexport function isCustomMcpIntegrationEnabled(\n config?: McpIntegrationsConfigInput | NormalizedMcpIntegrationsConfig,\n): boolean {\n const normalized = normalizePresetConfig(config);\n return normalized.enabled && normalized.custom;\n}\n\nexport function isMcpIntegrationCatalogAvailable(\n config?: McpIntegrationsConfigInput | NormalizedMcpIntegrationsConfig,\n): boolean {\n const normalized = normalizePresetConfig(config);\n if (!normalized.enabled) return false;\n return normalized.custom || getDefaultMcpIntegrations(normalized).length > 0;\n}\n\nexport function mcpIntegrationAuthLabel(mode: McpIntegrationAuthMode): string {\n if (mode === \"none\") return \"No auth\";\n if (mode === \"headers\") return \"Header\";\n return \"OAuth\";\n}\n\nexport function buildMcpOAuthStartUrl({\n name,\n url,\n description,\n scope,\n returnUrl,\n}: McpOAuthStartParams): string {\n const params = new URLSearchParams({\n name,\n url,\n description,\n scope,\n return: returnUrl,\n });\n return `/_agent-native/mcp/servers/oauth/start?${params.toString()}`;\n}\n\nexport function resolveMcpIntegrationScope(\n defaultScope: \"user\" | \"org\",\n hasOrg: boolean,\n canCreateOrgMcp: boolean,\n): \"user\" | \"org\" {\n return defaultScope === \"org\" && hasOrg && canCreateOrgMcp ? \"org\" : \"user\";\n}\n\nexport function filterMcpIntegrations(\n query: string,\n integrations: DefaultMcpIntegration[] = getDefaultMcpIntegrations(),\n): DefaultMcpIntegration[] {\n const needle = query.trim().toLowerCase();\n if (!needle) return integrations;\n return integrations.filter((integration) => {\n const haystack = [\n integration.name,\n integration.provider,\n integration.description,\n integration.useCase,\n integration.url,\n ...integration.keywords,\n ]\n .join(\" \")\n .toLowerCase();\n return haystack.includes(needle);\n });\n}\n\nconst MCP_LINK_HOSTS: Record<string, string[]> = {\n notion: [\"notion.so\", \"notion.site\"],\n canva: [\"canva.com\", \"canva.ai\"],\n figma: [\"figma.com\"],\n linear: [\"linear.app\"],\n github: [\"github.com\", \"github.dev\"],\n gitlab: [\"gitlab.com\"],\n slack: [\"slack.com\"],\n asana: [\"asana.com\"],\n hubspot: [\"hubspot.com\"],\n intercom: [\"intercom.com\"],\n monday: [\"monday.com\"],\n webflow: [\"webflow.com\"],\n paypal: [\"paypal.com\"],\n box: [\"box.com\"],\n netlify: [\"netlify.com\"],\n};\n\nfunction hostMatches(hostname: string, domain: string): boolean {\n return hostname === domain || hostname.endsWith(`.${domain}`);\n}\n\nfunction findUrlForText(text: string): URL | null {\n const candidates = text.match(/https?:\\/\\/[^\\s<>()[\\]{}]+/gi) ?? [];\n for (const candidate of candidates) {\n try {\n return new URL(candidate.replace(/[.,!?;:'\\\"]+$/, \"\"));\n } catch {\n // Ignore prose that only looks like a URL.\n }\n }\n return null;\n}\n\nconst MCP_RESOURCE_INTENT_PATTERN =\n /\\b(?:connect|connected|connection|integration|integrate|link|page|document|doc|file|workspace|project|issue|design|board|channel|message|ticket|read|access|open|see|fetch|sync|import)\\b/i;\n\nexport function findMcpIntegrationForText(\n text: string,\n integrations: DefaultMcpIntegration[] = getDefaultMcpIntegrations(),\n): DefaultMcpIntegration | null {\n const url = findUrlForText(text);\n if (url) {\n const match = integrations.find((integration) =>\n (MCP_LINK_HOSTS[integration.id] ?? []).some((domain) =>\n hostMatches(url.hostname.toLowerCase(), domain),\n ),\n );\n if (match) return match;\n }\n\n const normalizedText = text.toLowerCase();\n const hasResourceIntent =\n MCP_RESOURCE_INTENT_PATTERN.test(normalizedText) ||\n isMcpConnectionFailureText(normalizedText);\n if (!hasResourceIntent) return null;\n return (\n integrations.find((integration) => {\n const aliases = [integration.name, integration.provider, integration.id];\n return aliases.some((alias) => {\n const escaped = alias.replace(/[.*+?^${}()|[\\]\\\\]/g, \"\\\\$&\");\n return new RegExp(`(^|[^a-z0-9])${escaped}([^a-z0-9]|$)`, \"i\").test(\n normalizedText,\n );\n });\n }) ?? null\n );\n}\n\nexport function isMcpConnectionFailureText(text: string): boolean {\n return /\\b(?:can(?:not|'t|’t)|could(?: not|n't|n’t)|unable|failed|don't have access|don’t have access|not connected|not able)\\b[\\s\\S]{0,80}\\b(?:read|access|open|see|fetch|connect)\\b/i.test(\n text,\n );\n}\n\nexport function createMcpIntegrationFormDefaults(\n integration?: DefaultMcpIntegration | null,\n): McpIntegrationFormDefaults {\n if (!integration) {\n return {\n name: \"\",\n url: \"\",\n description: \"\",\n headersText: \"\",\n };\n }\n return {\n name: integration.name,\n url: integration.url,\n description: integration.description,\n headersText: \"\",\n };\n}\n"]}
|
|
1
|
+
{"version":3,"file":"mcp-integration-catalog.js","sourceRoot":"","sources":["../../../src/client/resources/mcp-integration-catalog.ts"],"names":[],"mappings":"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","sourcesContent":["import {\n normalizeMcpIntegrationsConfig,\n type McpIntegrationsConfigInput,\n type NormalizedMcpIntegrationsConfig,\n} from \"../../shared/mcp-integration-config.js\";\nimport { mcpIntegrationLogo } from \"./mcp-integration-logos.js\";\n\nexport type McpIntegrationAuthMode = \"none\" | \"headers\" | \"oauth\";\nexport type McpIntegrationConnectionMode =\n | \"direct\"\n | \"headers\"\n | \"oauth\"\n | \"manual\";\nexport type McpIntegrationAvailability =\n | \"ready\"\n | \"beta\"\n | \"provider-setup\"\n | \"client-restricted\";\nexport type McpIntegrationVerification =\n | \"verified\"\n | \"preflight-only\"\n | \"restricted\";\n\ndeclare const __AGENT_NATIVE_MCP_INTEGRATIONS_CONFIG__:\n | NormalizedMcpIntegrationsConfig\n | undefined;\ndeclare const __AGENT_NATIVE_TEMPLATE__: string | undefined;\n\nexport interface DefaultMcpIntegration {\n id: string;\n name: string;\n provider: string;\n description: string;\n descriptionKey: string;\n useCase: string;\n useCaseKey: string;\n url: string;\n authMode: McpIntegrationAuthMode;\n connectionMode: McpIntegrationConnectionMode;\n availability: McpIntegrationAvailability;\n verification: McpIntegrationVerification;\n logoUrl: string;\n docsUrl?: string;\n setupNoteKey?: string;\n apiFallback?: {\n secretKey: string;\n docsUrl: string;\n templateUses?: readonly string[];\n };\n headerPlaceholder?: string;\n keywords: string[];\n}\n\nexport interface McpIntegrationFormDefaults {\n name: string;\n url: string;\n description: string;\n headersText: string;\n}\n\nexport interface McpOAuthStartParams {\n name: string;\n url: string;\n description: string;\n scope: \"user\" | \"org\";\n returnUrl: string;\n}\n\nexport const DEFAULT_MCP_INTEGRATIONS: DefaultMcpIntegration[] = [\n {\n id: \"context7\",\n name: \"Context7\",\n provider: \"context7\",\n description: \"Fetch current library docs in agent chats.\",\n descriptionKey: \"mcpIntegrations.catalog.context7.description\",\n useCase: \"documentation, technical reference, API docs, framework guides\",\n useCaseKey: \"mcpIntegrations.catalog.context7.useCase\",\n url: \"https://mcp.context7.com/mcp\",\n authMode: \"none\",\n connectionMode: \"direct\",\n availability: \"ready\",\n verification: \"verified\",\n logoUrl: mcpIntegrationLogo(\"context7\"),\n docsUrl: \"https://context7.com/\",\n keywords: [\"docs\", \"documentation\", \"libraries\", \"frameworks\"],\n },\n {\n id: \"sentry\",\n name: \"Sentry\",\n provider: \"sentry\",\n description: \"Inspect issues, events, and debugging data.\",\n descriptionKey: \"mcpIntegrations.catalog.sentry.description\",\n useCase: \"error monitoring, debugging, performance, crash reports\",\n useCaseKey: \"mcpIntegrations.catalog.sentry.useCase\",\n url: \"https://mcp.sentry.dev/mcp\",\n authMode: \"headers\",\n connectionMode: \"headers\",\n availability: \"ready\",\n verification: \"preflight-only\",\n logoUrl: mcpIntegrationLogo(\"sentry\"),\n docsUrl: \"https://docs.sentry.io/product/sentry-mcp/\",\n headerPlaceholder: \"Authorization: Bearer <sentry-token>\",\n keywords: [\"errors\", \"monitoring\", \"debugging\", \"issues\"],\n },\n {\n id: \"notion\",\n name: \"Notion\",\n provider: \"notion\",\n description: \"Search pages and team knowledge.\",\n descriptionKey: \"mcpIntegrations.catalog.notion.description\",\n useCase: \"documentation, knowledge management, notes, content creation\",\n useCaseKey: \"mcpIntegrations.catalog.notion.useCase\",\n url: \"https://mcp.notion.com/mcp\",\n authMode: \"oauth\",\n connectionMode: \"oauth\",\n availability: \"ready\",\n verification: \"preflight-only\",\n logoUrl: mcpIntegrationLogo(\"notion\"),\n docsUrl: \"https://developers.notion.com/guides/mcp/get-started-with-mcp\",\n setupNoteKey: \"mcpIntegrations.catalog.notion.setupNote\",\n keywords: [\"docs\", \"knowledge\", \"notes\", \"pages\"],\n },\n {\n id: \"semgrep\",\n name: \"Semgrep\",\n provider: \"semgrep\",\n description: \"Scan code for security findings.\",\n descriptionKey: \"mcpIntegrations.catalog.semgrep.description\",\n useCase: \"security scanning, vulnerability detection, code analysis\",\n useCaseKey: \"mcpIntegrations.catalog.semgrep.useCase\",\n url: \"https://mcp.semgrep.ai/mcp\",\n authMode: \"none\",\n connectionMode: \"direct\",\n availability: \"ready\",\n verification: \"preflight-only\",\n logoUrl: mcpIntegrationLogo(\"semgrep\"),\n docsUrl: \"https://github.com/semgrep/mcp#readme\",\n keywords: [\"security\", \"sast\", \"code scanning\", \"vulnerabilities\"],\n },\n {\n id: \"linear\",\n name: \"Linear\",\n provider: \"linear\",\n description: \"Read and write Linear issues.\",\n descriptionKey: \"mcpIntegrations.catalog.linear.description\",\n useCase: \"project management, issue tracking, planning, bug reports\",\n useCaseKey: \"mcpIntegrations.catalog.linear.useCase\",\n url: \"https://mcp.linear.app/mcp\",\n authMode: \"oauth\",\n connectionMode: \"oauth\",\n availability: \"ready\",\n verification: \"preflight-only\",\n logoUrl: mcpIntegrationLogo(\"linear\"),\n docsUrl: \"https://linear.app/docs/mcp\",\n keywords: [\"issues\", \"tickets\", \"planning\", \"project management\"],\n },\n {\n id: \"atlassian\",\n name: \"Atlassian\",\n provider: \"atlassian\",\n description: \"Read and write Jira issues and Confluence content.\",\n descriptionKey: \"mcpIntegrations.catalog.atlassian.description\",\n useCase:\n \"project management, issue tracking, documentation, team collaboration\",\n useCaseKey: \"mcpIntegrations.catalog.atlassian.useCase\",\n url: \"https://mcp.atlassian.com/v1/mcp/authv2\",\n authMode: \"oauth\",\n connectionMode: \"oauth\",\n availability: \"provider-setup\",\n verification: \"restricted\",\n logoUrl: mcpIntegrationLogo(\"atlassian\"),\n docsUrl:\n \"https://developer.atlassian.com/cloud/rovo-mcp/guides/getting-started/\",\n setupNoteKey: \"mcpIntegrations.catalog.atlassian.setupNote\",\n keywords: [\"atlassian\", \"jira\", \"confluence\", \"issues\", \"tickets\"],\n },\n {\n id: \"supabase\",\n name: \"Supabase\",\n provider: \"supabase\",\n description: \"Manage data, auth, and backend services.\",\n descriptionKey: \"mcpIntegrations.catalog.supabase.description\",\n useCase: \"database, authentication, storage, edge functions\",\n useCaseKey: \"mcpIntegrations.catalog.supabase.useCase\",\n url: \"https://mcp.supabase.com/mcp\",\n authMode: \"oauth\",\n connectionMode: \"oauth\",\n availability: \"ready\",\n verification: \"preflight-only\",\n logoUrl: mcpIntegrationLogo(\"supabase\"),\n docsUrl: \"https://www.builder.io/c/docs/fusion-connect-to-supabase\",\n keywords: [\"database\", \"auth\", \"postgres\", \"storage\"],\n },\n {\n id: \"neon\",\n name: \"Neon\",\n provider: \"neon\",\n description: \"Work with serverless Postgres projects.\",\n descriptionKey: \"mcpIntegrations.catalog.neon.description\",\n useCase: \"database management, serverless postgres, data storage\",\n useCaseKey: \"mcpIntegrations.catalog.neon.useCase\",\n url: \"https://mcp.neon.tech/sse\",\n authMode: \"oauth\",\n connectionMode: \"oauth\",\n availability: \"ready\",\n verification: \"preflight-only\",\n logoUrl: mcpIntegrationLogo(\"neon\"),\n docsUrl: \"https://www.builder.io/c/docs/fusion-connect-to-neon\",\n keywords: [\"database\", \"postgres\", \"serverless\", \"backend\"],\n },\n {\n id: \"stripe\",\n name: \"Stripe\",\n provider: \"stripe\",\n description: \"Manage payments, subscriptions, and customers.\",\n descriptionKey: \"mcpIntegrations.catalog.stripe.description\",\n useCase: \"payments, subscriptions, invoicing, customer management\",\n useCaseKey: \"mcpIntegrations.catalog.stripe.useCase\",\n url: \"https://mcp.stripe.com\",\n authMode: \"oauth\",\n connectionMode: \"oauth\",\n availability: \"ready\",\n verification: \"preflight-only\",\n logoUrl: mcpIntegrationLogo(\"stripe\"),\n docsUrl: \"https://docs.stripe.com/mcp\",\n keywords: [\"payments\", \"billing\", \"subscriptions\", \"customers\"],\n },\n {\n id: \"cloudflare\",\n name: \"Cloudflare\",\n provider: \"cloudflare\",\n description: \"Search and operate Cloudflare services through MCP.\",\n descriptionKey: \"mcpIntegrations.catalog.cloudflare.description\",\n useCase: \"DNS, Workers, domains, security, observability, platform APIs\",\n useCaseKey: \"mcpIntegrations.catalog.cloudflare.useCase\",\n url: \"https://mcp.cloudflare.com/mcp\",\n authMode: \"oauth\",\n connectionMode: \"oauth\",\n availability: \"ready\",\n verification: \"preflight-only\",\n logoUrl: mcpIntegrationLogo(\"cloudflare\"),\n docsUrl:\n \"https://developers.cloudflare.com/agents/model-context-protocol/cloudflare/servers-for-cloudflare/\",\n setupNoteKey: \"mcpIntegrations.catalog.cloudflare.setupNote\",\n keywords: [\"cloud\", \"workers\", \"dns\", \"security\", \"observability\"],\n },\n {\n id: \"gitlab\",\n name: \"GitLab\",\n provider: \"gitlab\",\n description: \"Read and manage GitLab projects, issues, and merge requests.\",\n descriptionKey: \"mcpIntegrations.catalog.gitlab.description\",\n useCase: \"repositories, issues, merge requests, CI/CD, code analytics\",\n useCaseKey: \"mcpIntegrations.catalog.gitlab.useCase\",\n url: \"https://gitlab.com/api/v4/mcp\",\n authMode: \"oauth\",\n connectionMode: \"oauth\",\n availability: \"beta\",\n verification: \"restricted\",\n logoUrl: mcpIntegrationLogo(\"gitlab\"),\n docsUrl: \"https://docs.gitlab.com/user/model_context_protocol/mcp_server/\",\n setupNoteKey: \"mcpIntegrations.catalog.gitlab.setupNote\",\n keywords: [\"git\", \"repositories\", \"issues\", \"merge requests\", \"ci\"],\n },\n {\n id: \"figma\",\n name: \"Figma\",\n provider: \"figma\",\n description: \"Bring Figma design context and canvas actions into an agent.\",\n descriptionKey: \"mcpIntegrations.catalog.figma.description\",\n useCase: \"design files, components, variables, design systems, canvas\",\n useCaseKey: \"mcpIntegrations.catalog.figma.useCase\",\n url: \"https://mcp.figma.com/mcp\",\n authMode: \"oauth\",\n connectionMode: \"manual\",\n availability: \"client-restricted\",\n verification: \"restricted\",\n logoUrl: mcpIntegrationLogo(\"figma\"),\n docsUrl: \"https://developers.figma.com/docs/figma-mcp-server/\",\n setupNoteKey: \"mcpIntegrations.catalog.figma.setupNote\",\n apiFallback: {\n secretKey: \"FIGMA_ACCESS_TOKEN\",\n docsUrl:\n \"https://developers.figma.com/docs/rest-api/personal-access-tokens/\",\n templateUses: [\"design\"],\n },\n keywords: [\"design\", \"figjam\", \"components\", \"variables\", \"canvas\"],\n },\n {\n id: \"canva\",\n name: \"Canva\",\n provider: \"canva\",\n description: \"Search, create, and update Canva designs and assets.\",\n descriptionKey: \"mcpIntegrations.catalog.canva.description\",\n useCase: \"designs, templates, assets, brand kits, exports, collaboration\",\n useCaseKey: \"mcpIntegrations.catalog.canva.useCase\",\n url: \"https://mcp.canva.com/mcp\",\n authMode: \"oauth\",\n connectionMode: \"manual\",\n availability: \"client-restricted\",\n verification: \"restricted\",\n logoUrl: mcpIntegrationLogo(\"canva\"),\n docsUrl: \"https://www.canva.dev/docs/mcp/\",\n setupNoteKey: \"mcpIntegrations.catalog.canva.setupNote\",\n keywords: [\"design\", \"templates\", \"assets\", \"brand\", \"exports\"],\n },\n {\n id: \"vercel\",\n name: \"Vercel\",\n provider: \"vercel\",\n description:\n \"Search Vercel docs and inspect projects, deployments, and logs.\",\n descriptionKey: \"mcpIntegrations.catalog.vercel.description\",\n useCase: \"deployments, projects, logs, domains, hosting, documentation\",\n useCaseKey: \"mcpIntegrations.catalog.vercel.useCase\",\n url: \"https://mcp.vercel.com\",\n authMode: \"oauth\",\n connectionMode: \"manual\",\n availability: \"client-restricted\",\n verification: \"restricted\",\n logoUrl: mcpIntegrationLogo(\"vercel\"),\n docsUrl: \"https://vercel.com/docs/agent-resources/vercel-mcp\",\n setupNoteKey: \"mcpIntegrations.catalog.vercel.setupNote\",\n keywords: [\"deployments\", \"hosting\", \"projects\", \"logs\", \"domains\"],\n },\n {\n id: \"github\",\n name: \"GitHub\",\n provider: \"github\",\n description: \"Read repositories, issues, pull requests, and code context.\",\n descriptionKey: \"mcpIntegrations.catalog.github.description\",\n useCase: \"repositories, issues, pull requests, code, engineering analytics\",\n useCaseKey: \"mcpIntegrations.catalog.github.useCase\",\n url: \"https://api.githubcopilot.com/mcp/\",\n authMode: \"oauth\",\n connectionMode: \"manual\",\n availability: \"provider-setup\",\n verification: \"restricted\",\n logoUrl: mcpIntegrationLogo(\"github\"),\n docsUrl: \"https://github.com/github/github-mcp-server\",\n setupNoteKey: \"mcpIntegrations.catalog.github.setupNote\",\n keywords: [\"git\", \"repositories\", \"issues\", \"pull requests\", \"code\"],\n },\n {\n id: \"slack\",\n name: \"Slack\",\n provider: \"slack\",\n description:\n \"Search Slack conversations and take workspace actions through MCP.\",\n descriptionKey: \"mcpIntegrations.catalog.slack.description\",\n useCase: \"messages, channels, people, company memory, workflows\",\n useCaseKey: \"mcpIntegrations.catalog.slack.useCase\",\n url: \"https://mcp.slack.com/mcp\",\n authMode: \"oauth\",\n connectionMode: \"manual\",\n availability: \"client-restricted\",\n verification: \"restricted\",\n logoUrl: mcpIntegrationLogo(\"slack\"),\n docsUrl: \"https://docs.slack.dev/ai/slack-mcp-server/\",\n setupNoteKey: \"mcpIntegrations.catalog.slack.setupNote\",\n keywords: [\"messages\", \"channels\", \"search\", \"people\", \"chat\"],\n },\n {\n id: \"asana\",\n name: \"Asana\",\n provider: \"asana\",\n description:\n \"Search and manage Asana tasks, projects, and work graph data.\",\n descriptionKey: \"mcpIntegrations.catalog.asana.description\",\n useCase: \"tasks, projects, portfolios, planning, workload\",\n useCaseKey: \"mcpIntegrations.catalog.asana.useCase\",\n url: \"https://mcp.asana.com/v2/mcp\",\n authMode: \"oauth\",\n connectionMode: \"manual\",\n availability: \"provider-setup\",\n verification: \"restricted\",\n logoUrl: mcpIntegrationLogo(\"asana\"),\n docsUrl:\n \"https://developers.asana.com/docs/integrating-with-asanas-mcp-server\",\n setupNoteKey: \"mcpIntegrations.catalog.asana.setupNote\",\n keywords: [\"tasks\", \"projects\", \"planning\", \"workload\", \"portfolios\"],\n },\n {\n id: \"hubspot\",\n name: \"HubSpot\",\n provider: \"hubspot\",\n description: \"Search and update HubSpot CRM records through MCP.\",\n descriptionKey: \"mcpIntegrations.catalog.hubspot.description\",\n useCase: \"CRM, contacts, companies, deals, tickets, customer analytics\",\n useCaseKey: \"mcpIntegrations.catalog.hubspot.useCase\",\n url: \"https://mcp.hubspot.com\",\n authMode: \"oauth\",\n connectionMode: \"manual\",\n availability: \"provider-setup\",\n verification: \"restricted\",\n logoUrl: mcpIntegrationLogo(\"hubspot\"),\n docsUrl:\n \"https://developers.hubspot.com/docs/apps/developer-platform/build-apps/integrate-with-the-remote-hubspot-mcp-server\",\n setupNoteKey: \"mcpIntegrations.catalog.hubspot.setupNote\",\n keywords: [\"crm\", \"contacts\", \"companies\", \"deals\", \"tickets\"],\n },\n {\n id: \"intercom\",\n name: \"Intercom\",\n provider: \"intercom\",\n description: \"Search conversations and customer support knowledge.\",\n descriptionKey: \"mcpIntegrations.catalog.intercom.description\",\n useCase: \"customer support, conversations, contacts, help center content\",\n useCaseKey: \"mcpIntegrations.catalog.intercom.useCase\",\n url: \"https://mcp.intercom.com/mcp\",\n authMode: \"oauth\",\n connectionMode: \"oauth\",\n availability: \"ready\",\n verification: \"preflight-only\",\n logoUrl: mcpIntegrationLogo(\"intercom\"),\n docsUrl: \"https://developers.intercom.com/docs/guides/mcp\",\n setupNoteKey: \"mcpIntegrations.catalog.intercom.setupNote\",\n keywords: [\"support\", \"conversations\", \"customers\", \"help center\"],\n },\n {\n id: \"monday\",\n name: \"monday.com\",\n provider: \"monday\",\n description: \"Work with boards, items, and team workflows.\",\n descriptionKey: \"mcpIntegrations.catalog.monday.description\",\n useCase: \"work management, boards, projects, tasks, team operations\",\n useCaseKey: \"mcpIntegrations.catalog.monday.useCase\",\n url: \"https://mcp.monday.com/mcp\",\n authMode: \"oauth\",\n connectionMode: \"oauth\",\n availability: \"ready\",\n verification: \"preflight-only\",\n logoUrl: mcpIntegrationLogo(\"monday\"),\n docsUrl:\n \"https://developer.monday.com/api-reference/docs/build-on-monday-with-ai\",\n setupNoteKey: \"mcpIntegrations.catalog.monday.setupNote\",\n keywords: [\"work management\", \"boards\", \"projects\", \"tasks\", \"teams\"],\n },\n {\n id: \"webflow\",\n name: \"Webflow\",\n provider: \"webflow\",\n description: \"Read and update Webflow sites and content.\",\n descriptionKey: \"mcpIntegrations.catalog.webflow.description\",\n useCase: \"websites, CMS, site content, publishing, design workflows\",\n useCaseKey: \"mcpIntegrations.catalog.webflow.useCase\",\n url: \"https://mcp.webflow.com/mcp\",\n authMode: \"oauth\",\n connectionMode: \"oauth\",\n availability: \"ready\",\n verification: \"preflight-only\",\n logoUrl: mcpIntegrationLogo(\"webflow\"),\n docsUrl: \"https://developers.webflow.com/mcp/reference/getting-started\",\n setupNoteKey: \"mcpIntegrations.catalog.webflow.setupNote\",\n keywords: [\"websites\", \"cms\", \"content\", \"publishing\", \"design\"],\n },\n {\n id: \"paypal\",\n name: \"PayPal\",\n provider: \"paypal\",\n description: \"Work with PayPal payments, invoices, and commerce data.\",\n descriptionKey: \"mcpIntegrations.catalog.paypal.description\",\n useCase: \"payments, invoices, transactions, merchant operations\",\n useCaseKey: \"mcpIntegrations.catalog.paypal.useCase\",\n url: \"https://mcp.paypal.com/sse\",\n authMode: \"oauth\",\n connectionMode: \"oauth\",\n availability: \"ready\",\n verification: \"preflight-only\",\n logoUrl: mcpIntegrationLogo(\"paypal\"),\n docsUrl: \"https://developer.paypal.com/ai-tools/mcp-server/\",\n setupNoteKey: \"mcpIntegrations.catalog.paypal.setupNote\",\n keywords: [\"payments\", \"invoices\", \"transactions\", \"commerce\"],\n },\n {\n id: \"box\",\n name: \"Box\",\n provider: \"box\",\n description: \"Search and manage files and folders in Box.\",\n descriptionKey: \"mcpIntegrations.catalog.box.description\",\n useCase: \"files, folders, enterprise content, search, collaboration\",\n useCaseKey: \"mcpIntegrations.catalog.box.useCase\",\n url: \"https://mcp.box.com\",\n authMode: \"oauth\",\n connectionMode: \"manual\",\n availability: \"provider-setup\",\n verification: \"restricted\",\n logoUrl: mcpIntegrationLogo(\"box\"),\n docsUrl: \"https://developer.box.com/guides/box-mcp\",\n setupNoteKey: \"mcpIntegrations.catalog.box.setupNote\",\n keywords: [\"files\", \"folders\", \"documents\", \"enterprise content\"],\n },\n {\n id: \"netlify\",\n name: \"Netlify\",\n provider: \"netlify\",\n description: \"Inspect and operate Netlify sites and deployments.\",\n descriptionKey: \"mcpIntegrations.catalog.netlify.description\",\n useCase: \"sites, deployments, builds, domains, hosting operations\",\n useCaseKey: \"mcpIntegrations.catalog.netlify.useCase\",\n url: \"https://netlify-mcp.netlify.app/mcp\",\n authMode: \"oauth\",\n connectionMode: \"oauth\",\n availability: \"ready\",\n verification: \"preflight-only\",\n logoUrl: mcpIntegrationLogo(\"netlify\"),\n docsUrl:\n \"https://docs.netlify.com/build/build-with-ai/agent-setup-guides/agent-setup-overview/\",\n setupNoteKey: \"mcpIntegrations.catalog.netlify.setupNote\",\n keywords: [\"deployments\", \"builds\", \"sites\", \"hosting\", \"domains\"],\n },\n {\n id: \"zapier\",\n name: \"Zapier\",\n provider: \"zapier\",\n description: \"Connect MCP tools to thousands of app actions.\",\n descriptionKey: \"mcpIntegrations.catalog.zapier.description\",\n useCase: \"automation, workflows, app actions, cross-service operations\",\n useCaseKey: \"mcpIntegrations.catalog.zapier.useCase\",\n url: \"https://mcp.zapier.com/api/v1/connect\",\n authMode: \"headers\",\n connectionMode: \"headers\",\n availability: \"ready\",\n verification: \"restricted\",\n logoUrl: mcpIntegrationLogo(\"zapier\"),\n docsUrl:\n \"https://help.zapier.com/hc/en-us/articles/36265392843917-Use-Zapier-MCP-with-your-client\",\n setupNoteKey: \"mcpIntegrations.catalog.zapier.setupNote\",\n headerPlaceholder: \"Authorization: Bearer <zapier-mcp-token>\",\n keywords: [\"automation\", \"workflows\", \"actions\", \"apps\", \"integrations\"],\n },\n];\n\nfunction readRuntimeMcpIntegrationsConfig(): NormalizedMcpIntegrationsConfig {\n try {\n if (typeof __AGENT_NATIVE_MCP_INTEGRATIONS_CONFIG__ !== \"undefined\") {\n return normalizeMcpIntegrationsConfig(\n __AGENT_NATIVE_MCP_INTEGRATIONS_CONFIG__,\n );\n }\n } catch {\n // Test and non-Vite contexts may not define the compile-time constant.\n }\n return normalizeMcpIntegrationsConfig();\n}\n\nfunction normalizeTemplateName(value: unknown): string | null {\n if (typeof value !== \"string\") return null;\n const normalized = value.trim().toLowerCase();\n return normalized || null;\n}\n\nfunction getActiveTemplateName(): string | null {\n try {\n const compiledTemplate = normalizeTemplateName(__AGENT_NATIVE_TEMPLATE__);\n if (compiledTemplate) return compiledTemplate;\n } catch {\n // Test and non-Vite contexts may not define the compile-time constant.\n }\n\n const runtimeConfig = (\n globalThis as typeof globalThis & {\n __AGENT_NATIVE_CONFIG__?: { template?: unknown };\n }\n ).__AGENT_NATIVE_CONFIG__;\n return normalizeTemplateName(runtimeConfig?.template);\n}\n\nexport function getMcpIntegrationApiFallback(\n integration: DefaultMcpIntegration,\n templateName = getActiveTemplateName(),\n): DefaultMcpIntegration[\"apiFallback\"] | null {\n const fallback = integration.apiFallback;\n if (!fallback) return null;\n if (!fallback.templateUses?.length) return fallback;\n if (!templateName) return null;\n return fallback.templateUses.includes(templateName) ? fallback : null;\n}\n\nfunction normalizePresetConfig(\n config?: McpIntegrationsConfigInput | NormalizedMcpIntegrationsConfig,\n): NormalizedMcpIntegrationsConfig {\n if (config === undefined) return readRuntimeMcpIntegrationsConfig();\n return normalizeMcpIntegrationsConfig(config);\n}\n\nexport function getDefaultMcpIntegrations(\n config?: McpIntegrationsConfigInput | NormalizedMcpIntegrationsConfig,\n): DefaultMcpIntegration[] {\n const normalized = normalizePresetConfig(config);\n if (!normalized.enabled || !normalized.defaults.enabled) return [];\n\n const include = normalized.defaults.include\n ? new Set(normalized.defaults.include)\n : null;\n const exclude = new Set(normalized.defaults.exclude);\n return DEFAULT_MCP_INTEGRATIONS.filter((integration) => {\n const id = integration.id.toLowerCase();\n if (include && !include.has(id)) return false;\n return !exclude.has(id);\n });\n}\n\nexport function isCustomMcpIntegrationEnabled(\n config?: McpIntegrationsConfigInput | NormalizedMcpIntegrationsConfig,\n): boolean {\n const normalized = normalizePresetConfig(config);\n return normalized.enabled && normalized.custom;\n}\n\nexport function isMcpIntegrationCatalogAvailable(\n config?: McpIntegrationsConfigInput | NormalizedMcpIntegrationsConfig,\n): boolean {\n const normalized = normalizePresetConfig(config);\n if (!normalized.enabled) return false;\n return normalized.custom || getDefaultMcpIntegrations(normalized).length > 0;\n}\n\nexport function mcpIntegrationAuthLabel(mode: McpIntegrationAuthMode): string {\n if (mode === \"none\") return \"No auth\";\n if (mode === \"headers\") return \"Header\";\n return \"OAuth\";\n}\n\nexport function buildMcpOAuthStartUrl({\n name,\n url,\n description,\n scope,\n returnUrl,\n}: McpOAuthStartParams): string {\n const params = new URLSearchParams({\n name,\n url,\n description,\n scope,\n return: returnUrl,\n });\n return `/_agent-native/mcp/servers/oauth/start?${params.toString()}`;\n}\n\nexport function resolveMcpIntegrationScope(\n defaultScope: \"user\" | \"org\",\n hasOrg: boolean,\n canCreateOrgMcp: boolean,\n): \"user\" | \"org\" {\n return defaultScope === \"org\" && hasOrg && canCreateOrgMcp ? \"org\" : \"user\";\n}\n\nexport function filterMcpIntegrations(\n query: string,\n integrations: DefaultMcpIntegration[] = getDefaultMcpIntegrations(),\n): DefaultMcpIntegration[] {\n const needle = query.trim().toLowerCase();\n if (!needle) return integrations;\n return integrations.filter((integration) => {\n const haystack = [\n integration.name,\n integration.provider,\n integration.description,\n integration.useCase,\n integration.url,\n ...integration.keywords,\n ]\n .join(\" \")\n .toLowerCase();\n return haystack.includes(needle);\n });\n}\n\nconst MCP_LINK_HOSTS: Record<string, string[]> = {\n notion: [\"notion.so\", \"notion.site\"],\n canva: [\"canva.com\", \"canva.ai\"],\n figma: [\"figma.com\"],\n linear: [\"linear.app\"],\n github: [\"github.com\", \"github.dev\"],\n gitlab: [\"gitlab.com\"],\n slack: [\"slack.com\"],\n asana: [\"asana.com\"],\n hubspot: [\"hubspot.com\"],\n intercom: [\"intercom.com\"],\n monday: [\"monday.com\"],\n webflow: [\"webflow.com\"],\n paypal: [\"paypal.com\"],\n box: [\"box.com\"],\n netlify: [\"netlify.com\"],\n};\n\nfunction hostMatches(hostname: string, domain: string): boolean {\n return hostname === domain || hostname.endsWith(`.${domain}`);\n}\n\nfunction findUrlForText(text: string): URL | null {\n const candidates = text.match(/https?:\\/\\/[^\\s<>()[\\]{}]+/gi) ?? [];\n for (const candidate of candidates) {\n try {\n return new URL(candidate.replace(/[.,!?;:'\\\"]+$/, \"\"));\n } catch {\n // Ignore prose that only looks like a URL.\n }\n }\n return null;\n}\n\nconst MCP_RESOURCE_INTENT_PATTERN =\n /\\b(?:connect|connected|connection|integration|integrate|link|page|document|doc|file|workspace|project|issue|design|board|channel|message|ticket|read|access|open|see|fetch|sync|import)\\b/i;\n\nexport function findMcpIntegrationForText(\n text: string,\n integrations: DefaultMcpIntegration[] = getDefaultMcpIntegrations(),\n): DefaultMcpIntegration | null {\n const url = findUrlForText(text);\n if (url) {\n const match = integrations.find((integration) =>\n (MCP_LINK_HOSTS[integration.id] ?? []).some((domain) =>\n hostMatches(url.hostname.toLowerCase(), domain),\n ),\n );\n if (match) return match;\n }\n\n const normalizedText = text.toLowerCase();\n const hasResourceIntent =\n MCP_RESOURCE_INTENT_PATTERN.test(normalizedText) ||\n isMcpConnectionFailureText(normalizedText);\n if (!hasResourceIntent) return null;\n return (\n integrations.find((integration) => {\n const aliases = [integration.name, integration.provider, integration.id];\n return aliases.some((alias) => {\n const escaped = alias.replace(/[.*+?^${}()|[\\]\\\\]/g, \"\\\\$&\");\n return new RegExp(`(^|[^a-z0-9])${escaped}([^a-z0-9]|$)`, \"i\").test(\n normalizedText,\n );\n });\n }) ?? null\n );\n}\n\nexport function isMcpConnectionFailureText(text: string): boolean {\n return /\\b(?:can(?:not|'t|’t)|could(?: not|n't|n’t)|unable|failed|don't have access|don’t have access|not connected|not able)\\b[\\s\\S]{0,80}\\b(?:read|access|open|see|fetch|connect)\\b/i.test(\n text,\n );\n}\n\nexport function createMcpIntegrationFormDefaults(\n integration?: DefaultMcpIntegration | null,\n): McpIntegrationFormDefaults {\n if (!integration) {\n return {\n name: \"\",\n url: \"\",\n description: \"\",\n headersText: \"\",\n };\n }\n return {\n name: integration.name,\n url: integration.url,\n description: integration.description,\n headersText: \"\",\n };\n}\n"]}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ShareButton.d.ts","sourceRoot":"","sources":["../../../src/client/sharing/ShareButton.tsx"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"ShareButton.d.ts","sourceRoot":"","sources":["../../../src/client/sharing/ShareButton.tsx"],"names":[],"mappings":"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"}
|
|
@@ -72,6 +72,7 @@ function handleSharePopoverInteractOutside(event) {
|
|
|
72
72
|
*/
|
|
73
73
|
export function ShareButton(props) {
|
|
74
74
|
const [open, setOpen] = useState(false);
|
|
75
|
+
const [inviteEmail, setInviteEmail] = useState("");
|
|
75
76
|
const shareTabDefaultValue = props.shareTabs?.defaultValue ?? "share";
|
|
76
77
|
const [activeShareTab, setActiveShareTab] = useState(shareTabDefaultValue);
|
|
77
78
|
const [pendingVisibility, setPendingVisibility] = useState(null);
|
|
@@ -95,6 +96,9 @@ export function ShareButton(props) {
|
|
|
95
96
|
sharesQuery.refetch();
|
|
96
97
|
}
|
|
97
98
|
};
|
|
99
|
+
useEffect(() => {
|
|
100
|
+
setInviteEmail("");
|
|
101
|
+
}, [props.resourceType, props.resourceId]);
|
|
98
102
|
const handleShareTabChange = (value) => {
|
|
99
103
|
setActiveShareTab(value);
|
|
100
104
|
props.shareTabs?.onValueChange?.(value);
|
|
@@ -158,7 +162,7 @@ export function ShareButton(props) {
|
|
|
158
162
|
const TriggerIcon = triggerMeta?.Icon ?? IconShare3;
|
|
159
163
|
const triggerLabel = triggerMeta ? `Share (${triggerMeta.label})` : "Share";
|
|
160
164
|
const iconOnly = props.trigger === "icon";
|
|
161
|
-
return (_jsxs(Popover, { open: open, onOpenChange: handleOpenChange, children: [_jsx(PopoverTrigger, { asChild: true, children: _jsxs("button", { type: "button", className: cn(iconOnly ? BUTTON_GHOST_ICON : BUTTON_OUTLINE_SM, props.triggerClassName), "aria-label": triggerLabel, title: triggerLabel, children: [_jsx(TriggerIcon, { size: 16, strokeWidth: 1.75 }), !iconOnly && _jsx("span", { children: "Share" })] }) }), _jsx(PopoverContent, { align: "end", sideOffset: 6, "data-agent-native-share-overlay": "", className: cn("z-[2000] w-[min(460px,92vw)] rounded-lg p-4 shadow-lg", SHARE_POPOVER_SURFACE, props.popoverClassName), onOpenAutoFocus: (e) => e.preventDefault(), onInteractOutside: handleSharePopoverInteractOutside, children: _jsx(SharePanel, { ...props, sharesQuery: sharesQuery, visibilityOverride: pendingVisibility, onVisibilityChange: handleVisibilityChange, onClose: () => handleOpenChange(false), activeTab: activeShareTab, onTabChange: handleShareTabChange }) })] }));
|
|
165
|
+
return (_jsxs(Popover, { open: open, onOpenChange: handleOpenChange, children: [_jsx(PopoverTrigger, { asChild: true, children: _jsxs("button", { type: "button", className: cn(iconOnly ? BUTTON_GHOST_ICON : BUTTON_OUTLINE_SM, props.triggerClassName), "aria-label": triggerLabel, title: triggerLabel, children: [_jsx(TriggerIcon, { size: 16, strokeWidth: 1.75 }), !iconOnly && _jsx("span", { children: "Share" })] }) }), _jsx(PopoverContent, { align: "end", sideOffset: 6, "data-agent-native-share-overlay": "", className: cn("z-[2000] w-[min(460px,92vw)] rounded-lg p-4 shadow-lg", SHARE_POPOVER_SURFACE, props.popoverClassName), onOpenAutoFocus: (e) => e.preventDefault(), onInteractOutside: handleSharePopoverInteractOutside, children: _jsx(SharePanel, { ...props, inviteEmail: inviteEmail, onInviteEmailChange: setInviteEmail, sharesQuery: sharesQuery, visibilityOverride: pendingVisibility, onVisibilityChange: handleVisibilityChange, onClose: () => handleOpenChange(false), activeTab: activeShareTab, onTabChange: handleShareTabChange }) })] }));
|
|
162
166
|
}
|
|
163
167
|
function useOrgMemberSearch(query, enabled) {
|
|
164
168
|
const search = query.trim();
|
|
@@ -292,15 +296,14 @@ function mergeMembers(existing, next) {
|
|
|
292
296
|
return merged;
|
|
293
297
|
}
|
|
294
298
|
function SharePanel(props) {
|
|
295
|
-
const { resourceType, resourceId, resourceTitle, sharesQuery, visibilityOverride, onVisibilityChange, onClose, } = props;
|
|
299
|
+
const { resourceType, resourceId, resourceTitle, sharesQuery, visibilityOverride, onVisibilityChange, onClose, inviteEmail, onInviteEmailChange, } = props;
|
|
296
300
|
const share = useActionMutation("share-resource");
|
|
297
301
|
const unshare = useActionMutation("unshare-resource");
|
|
298
|
-
const [email, setEmail] = useState("");
|
|
299
302
|
const [role, setRole] = useState("viewer");
|
|
300
303
|
const [notifyPeople, setNotifyPeople] = useState(true);
|
|
301
304
|
const [shareError, setShareError] = useState(null);
|
|
302
305
|
const [suggestionsOpen, setSuggestionsOpen] = useState(false);
|
|
303
|
-
const hasInviteEmail =
|
|
306
|
+
const hasInviteEmail = inviteEmail.trim().length > 0;
|
|
304
307
|
// Optimistic overlays so clicks feel instant.
|
|
305
308
|
const [pendingAdds, setPendingAdds] = useState([]);
|
|
306
309
|
const [pendingRemoves, setPendingRemoves] = useState(new Set());
|
|
@@ -349,7 +352,7 @@ function SharePanel(props) {
|
|
|
349
352
|
.map((s) => ({ ...s, role: roleOverrides[keyOf(s)] ?? s.role })),
|
|
350
353
|
...pendingAdds,
|
|
351
354
|
];
|
|
352
|
-
const memberSearch = useOrgMemberSearch(
|
|
355
|
+
const memberSearch = useOrgMemberSearch(inviteEmail, canManage && suggestionsOpen);
|
|
353
356
|
const excludedMemberEmails = new Set();
|
|
354
357
|
if (data?.ownerEmail)
|
|
355
358
|
excludedMemberEmails.add(data.ownerEmail.toLowerCase());
|
|
@@ -387,7 +390,7 @@ function SharePanel(props) {
|
|
|
387
390
|
}
|
|
388
391
|
};
|
|
389
392
|
const handleAdd = () => {
|
|
390
|
-
const trimmed =
|
|
393
|
+
const trimmed = inviteEmail.trim();
|
|
391
394
|
if (!trimmed)
|
|
392
395
|
return;
|
|
393
396
|
const optimistic = {
|
|
@@ -402,7 +405,7 @@ function SharePanel(props) {
|
|
|
402
405
|
return;
|
|
403
406
|
setShareError(null);
|
|
404
407
|
setPendingAdds((p) => [...p, optimistic]);
|
|
405
|
-
|
|
408
|
+
onInviteEmailChange("");
|
|
406
409
|
setSuggestionsOpen(false);
|
|
407
410
|
addInFlight(k);
|
|
408
411
|
share.mutate({
|
|
@@ -423,7 +426,7 @@ function SharePanel(props) {
|
|
|
423
426
|
onError: (err) => {
|
|
424
427
|
setPendingAdds((p) => p.filter((s) => s.id !== optimistic.id));
|
|
425
428
|
clearInFlight(k);
|
|
426
|
-
|
|
429
|
+
onInviteEmailChange(trimmed);
|
|
427
430
|
setShareError(extractShareErrorMessage(err));
|
|
428
431
|
},
|
|
429
432
|
});
|
|
@@ -511,18 +514,18 @@ function SharePanel(props) {
|
|
|
511
514
|
const titleText = resourceTitle
|
|
512
515
|
? `Share "${resourceTitle}"`
|
|
513
516
|
: `Share ${resourceType}`;
|
|
514
|
-
const sharePanel = isLoading ? (_jsxs("div", { children: [!hasTabs ? (_jsx("div", { className: "mb-3 truncate text-base font-semibold", title: titleText, children: titleText })) : null, _jsx("div", { className: "mb-4 h-9 rounded-md bg-muted animate-pulse" }), _jsx("div", { className: "mb-2 text-sm font-semibold", children: peopleAccessLabel }), _jsx("div", { className: "mb-4 h-7 rounded-md bg-muted animate-pulse" }), _jsx("div", { className: "mb-2 text-sm font-semibold", children: generalAccessLabel }), _jsx("div", { className: "mb-4 h-9 rounded-md bg-muted animate-pulse" }), showDoneButton ? (_jsx("div", { className: "mt-2 flex justify-end", children: _jsx("button", { type: "button", onClick: onClose, className: BUTTON_PRIMARY_SM, children: "Done" }) })) : null] })) : (_jsxs("div", { children: [!hasTabs ? (_jsx("div", { className: "mb-3 truncate text-base font-semibold", title: titleText, children: titleText })) : null, showShareLinks && shareUrlPlacement === "top" ? shareLinks : null, canManage ? (_jsxs("div", { className: "mb-4 space-y-2", children: [_jsxs("div", { className: "flex items-stretch gap-2", children: [_jsx(MemberAutocomplete, { value:
|
|
515
|
-
|
|
517
|
+
const sharePanel = isLoading ? (_jsxs("div", { children: [!hasTabs ? (_jsx("div", { className: "mb-3 truncate text-base font-semibold", title: titleText, children: titleText })) : null, _jsx("div", { className: "mb-4 h-9 rounded-md bg-muted animate-pulse" }), _jsx("div", { className: "mb-2 text-sm font-semibold", children: peopleAccessLabel }), _jsx("div", { className: "mb-4 h-7 rounded-md bg-muted animate-pulse" }), _jsx("div", { className: "mb-2 text-sm font-semibold", children: generalAccessLabel }), _jsx("div", { className: "mb-4 h-9 rounded-md bg-muted animate-pulse" }), showDoneButton ? (_jsx("div", { className: "mt-2 flex justify-end", children: _jsx("button", { type: "button", onClick: onClose, className: BUTTON_PRIMARY_SM, children: "Done" }) })) : null] })) : (_jsxs("div", { children: [!hasTabs ? (_jsx("div", { className: "mb-3 truncate text-base font-semibold", title: titleText, children: titleText })) : null, showShareLinks && shareUrlPlacement === "top" ? shareLinks : null, canManage ? (_jsxs("div", { className: "mb-4 space-y-2", children: [_jsxs("div", { className: "flex items-stretch gap-2", children: [_jsx(MemberAutocomplete, { value: inviteEmail, open: suggestionsOpen, onOpenChange: setSuggestionsOpen, onValueChange: (next) => {
|
|
518
|
+
onInviteEmailChange(next);
|
|
516
519
|
if (shareError)
|
|
517
520
|
setShareError(null);
|
|
518
521
|
}, onSelectMember: (member) => {
|
|
519
|
-
|
|
522
|
+
onInviteEmailChange(member.email);
|
|
520
523
|
setSuggestionsOpen(false);
|
|
521
524
|
if (shareError)
|
|
522
525
|
setShareError(null);
|
|
523
526
|
}, onSubmit: handleAdd, placeholder: policy.requireOrgMemberForUserShares
|
|
524
527
|
? "Add people from your organization"
|
|
525
|
-
: "Add people by email", suggestions: memberSuggestions, search: memberSearch }), _jsx(RoleSelect, { value: role, onChange: setRole })] }), shareError ? (_jsx("div", { role: "alert", className: "rounded-md border border-destructive/40 bg-destructive/10 px-3 py-2 text-xs text-destructive", children: shareError })) : null, hasInviteEmail ? (_jsxs("label", { className: "inline-flex items-center gap-2 text-xs text-muted-foreground", children: [_jsx("input", { type: "checkbox", checked: notifyPeople, onChange: (e) => setNotifyPeople(e.target.checked), className: "h-4 w-4 rounded border-input accent-primary" }), "Notify people"] })) : null] })) : null, _jsx("div", { className: "mb-2 text-sm font-semibold", children: peopleAccessLabel }), _jsxs("ul", { className: "mb-4 flex flex-col gap-1 list-none p-0 m-0", children: [data?.ownerEmail ? (_jsxs("li", { className: "flex items-center gap-3 px-1 py-1.5 text-sm", children: [_jsx(Avatar, { label: displayName(data.ownerEmail, knownMembers) }), _jsx("span", { className: "flex-1 min-w-0 truncate", children: displayName(data.ownerEmail, knownMembers) }), _jsx("span", { className: "text-xs text-muted-foreground", children: "Owner" })] })) : null, shares.map((s) => (_jsxs("li", { className: cn("flex items-center gap-3 px-1 py-1.5 text-sm", inFlight.has(keyOf(s)) && "opacity-60"), children: [_jsx(Avatar, { label: principalLabel(s, knownMembers), org: s.principalType === "org" }), _jsx("span", { className: "flex-1 min-w-0 truncate", children: principalLabel(s, knownMembers) }), canManage ? (_jsx(RoleSelect, { value: s.role, onChange: (r) => handleChangeRole(s, r), disabled: inFlight.has(keyOf(s)), plain: true })) : (_jsx("span", { className: "text-xs text-muted-foreground", children: cap(s.role) })), canManage ? (_jsx("button", { type: "button", "aria-label": "Remove", onClick: () => handleRemove(s), disabled: inFlight.has(keyOf(s)), className: BUTTON_GHOST_ICON, children: _jsx(IconTrash, { size: 14 }) })) : null] }, keyOf(s)))), !shares.length && !data?.ownerEmail ? (_jsx("li", { className: "px-1 py-1.5 text-sm text-muted-foreground", children: "No one has access yet." })) : null] }), _jsx("div", { className: "mb-2 text-sm font-semibold", children: generalAccessLabel }), _jsxs("div", { className: "mb-4 flex items-center gap-3", children: [_jsx("span", { "aria-hidden": true, className: "inline-flex h-9 w-9 shrink-0 items-center justify-center rounded-full bg-muted text-muted-foreground", children: _jsx(meta.Icon, { size: 16, strokeWidth: 1.75 }) }), _jsxs("div", { className: "min-w-0 flex-1", children: [_jsx(VisibilitySelect, { value: visibility, onChange: handleVisibility, disabled: !canManage, visibilityCopy: props.visibilityCopy, allowPublic: policy.allowPublic }), _jsxs("div", { className: "mt-0.5 flex flex-wrap items-center gap-x-2 gap-y-1 text-xs text-muted-foreground", children: [_jsx("span", { children: meta.description }), visibility === "org" && props.hideInSearchControl ? (_jsx(AdvancedAccessPopover, { control: props.hideInSearchControl, canManage: canManage, onToggle: handleHideInSearch })) : null] })] })] }), shareError && !canManage ? (_jsx("div", { role: "alert", className: "mb-4 rounded-md border border-destructive/40 bg-destructive/10 px-3 py-2 text-xs text-destructive", children: shareError })) : null, props.accessNote ? (_jsx("div", { className: "mb-4 rounded-md border border-border bg-muted/35 p-3 text-xs text-muted-foreground", children: props.accessNote })) : null, showShareLinks && shareUrlPlacement === "bottom" ? shareLinks : null, props.shareFooterContent, showDoneButton ? (_jsx("div", { className: "mt-2 flex justify-end", children: _jsx("button", { type: "button", onClick: handleDone, className: BUTTON_PRIMARY_SM, children: "Done" }) })) : null] }));
|
|
528
|
+
: "Add people by email", suggestions: memberSuggestions, search: memberSearch }), _jsx(RoleSelect, { value: role, onChange: setRole }), _jsx("button", { type: "button", onClick: handleAdd, disabled: !hasInviteEmail, className: BUTTON_PRIMARY_SM, children: "Add" })] }), shareError ? (_jsx("div", { role: "alert", className: "rounded-md border border-destructive/40 bg-destructive/10 px-3 py-2 text-xs text-destructive", children: shareError })) : null, hasInviteEmail ? (_jsxs("label", { className: "inline-flex items-center gap-2 text-xs text-muted-foreground", children: [_jsx("input", { type: "checkbox", checked: notifyPeople, onChange: (e) => setNotifyPeople(e.target.checked), className: "h-4 w-4 rounded border-input accent-primary" }), "Notify people"] })) : null] })) : null, _jsx("div", { className: "mb-2 text-sm font-semibold", children: peopleAccessLabel }), _jsxs("ul", { className: "mb-4 flex flex-col gap-1 list-none p-0 m-0", children: [data?.ownerEmail ? (_jsxs("li", { className: "flex items-center gap-3 px-1 py-1.5 text-sm", children: [_jsx(Avatar, { label: displayName(data.ownerEmail, knownMembers) }), _jsx("span", { className: "flex-1 min-w-0 truncate", children: displayName(data.ownerEmail, knownMembers) }), _jsx("span", { className: "text-xs text-muted-foreground", children: "Owner" })] })) : null, shares.map((s) => (_jsxs("li", { className: cn("flex items-center gap-3 px-1 py-1.5 text-sm", inFlight.has(keyOf(s)) && "opacity-60"), children: [_jsx(Avatar, { label: principalLabel(s, knownMembers), org: s.principalType === "org" }), _jsx("span", { className: "flex-1 min-w-0 truncate", children: principalLabel(s, knownMembers) }), canManage ? (_jsx(RoleSelect, { value: s.role, onChange: (r) => handleChangeRole(s, r), disabled: inFlight.has(keyOf(s)), plain: true })) : (_jsx("span", { className: "text-xs text-muted-foreground", children: cap(s.role) })), canManage ? (_jsx("button", { type: "button", "aria-label": "Remove", onClick: () => handleRemove(s), disabled: inFlight.has(keyOf(s)), className: BUTTON_GHOST_ICON, children: _jsx(IconTrash, { size: 14 }) })) : null] }, keyOf(s)))), !shares.length && !data?.ownerEmail ? (_jsx("li", { className: "px-1 py-1.5 text-sm text-muted-foreground", children: "No one has access yet." })) : null] }), _jsx("div", { className: "mb-2 text-sm font-semibold", children: generalAccessLabel }), _jsxs("div", { className: "mb-4 flex items-center gap-3", children: [_jsx("span", { "aria-hidden": true, className: "inline-flex h-9 w-9 shrink-0 items-center justify-center rounded-full bg-muted text-muted-foreground", children: _jsx(meta.Icon, { size: 16, strokeWidth: 1.75 }) }), _jsxs("div", { className: "min-w-0 flex-1", children: [_jsx(VisibilitySelect, { value: visibility, onChange: handleVisibility, disabled: !canManage, visibilityCopy: props.visibilityCopy, allowPublic: policy.allowPublic }), _jsxs("div", { className: "mt-0.5 flex flex-wrap items-center gap-x-2 gap-y-1 text-xs text-muted-foreground", children: [_jsx("span", { children: meta.description }), visibility === "org" && props.hideInSearchControl ? (_jsx(AdvancedAccessPopover, { control: props.hideInSearchControl, canManage: canManage, onToggle: handleHideInSearch })) : null] })] })] }), shareError && !canManage ? (_jsx("div", { role: "alert", className: "mb-4 rounded-md border border-destructive/40 bg-destructive/10 px-3 py-2 text-xs text-destructive", children: shareError })) : null, props.accessNote ? (_jsx("div", { className: "mb-4 rounded-md border border-border bg-muted/35 p-3 text-xs text-muted-foreground", children: props.accessNote })) : null, showShareLinks && shareUrlPlacement === "bottom" ? shareLinks : null, props.shareFooterContent, showDoneButton ? (_jsx("div", { className: "mt-2 flex justify-end", children: _jsx("button", { type: "button", onClick: handleDone, className: BUTTON_PRIMARY_SM, children: "Done" }) })) : null] }));
|
|
526
529
|
if (!hasTabs)
|
|
527
530
|
return sharePanel;
|
|
528
531
|
const tabs = [
|