@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.
Files changed (292) hide show
  1. package/corpus/README.md +2 -2
  2. package/corpus/core/CHANGELOG.md +23 -0
  3. package/corpus/core/docs/content/integrations.mdx +597 -0
  4. package/corpus/core/docs/content/locales/ar-SA/mcp-clients.mdx +19 -1
  5. package/corpus/core/docs/content/locales/de-DE/mcp-clients.mdx +22 -1
  6. package/corpus/core/docs/content/locales/es-ES/mcp-clients.mdx +23 -1
  7. package/corpus/core/docs/content/locales/fr-FR/mcp-clients.mdx +23 -1
  8. package/corpus/core/docs/content/locales/hi-IN/mcp-clients.mdx +22 -1
  9. package/corpus/core/docs/content/locales/ja-JP/mcp-clients.mdx +21 -1
  10. package/corpus/core/docs/content/locales/ko-KR/mcp-clients.mdx +20 -1
  11. package/corpus/core/docs/content/locales/pt-BR/mcp-clients.mdx +22 -1
  12. package/corpus/core/docs/content/locales/zh-CN/mcp-clients.mdx +17 -1
  13. package/corpus/core/docs/content/locales/zh-TW/mcp-clients.mdx +17 -1
  14. package/corpus/core/docs/content/mcp-clients.mdx +51 -1
  15. package/corpus/core/docs/content/organizations-teams-permissions.mdx +413 -0
  16. package/corpus/core/package.json +1 -1
  17. package/corpus/core/src/agent/production-agent.ts +19 -0
  18. package/corpus/core/src/agent/run-store.ts +98 -2
  19. package/corpus/core/src/client/AssistantChat.tsx +26 -1
  20. package/corpus/core/src/client/CommandMenu.tsx +5 -0
  21. package/corpus/core/src/client/active-run-state.ts +34 -0
  22. package/corpus/core/src/client/agent-chat-adapter.ts +4 -0
  23. package/corpus/core/src/client/chat/message-components.tsx +41 -0
  24. package/corpus/core/src/client/composer/TiptapComposer.tsx +45 -8
  25. package/corpus/core/src/client/integrations/IntegrationsPanel.tsx +30 -11
  26. package/corpus/core/src/client/resources/McpConnectionSuggestion.tsx +270 -0
  27. package/corpus/core/src/client/resources/McpIntegrationDialog.tsx +177 -40
  28. package/corpus/core/src/client/resources/mcp-integration-catalog.ts +478 -4
  29. package/corpus/core/src/client/resources/mcp-integration-logos.ts +108 -0
  30. package/corpus/core/src/client/sharing/ShareButton.tsx +30 -9
  31. package/corpus/core/src/client/use-agent-chat-home-handoff.ts +2 -2
  32. package/corpus/core/src/deploy/build.ts +32 -0
  33. package/corpus/core/src/extensions/html-shell.ts +33 -1
  34. package/corpus/core/src/ingestion/office.ts +1 -2
  35. package/corpus/core/src/ingestion/pptx.ts +2 -4
  36. package/corpus/core/src/localization/default-messages.ts +129 -1
  37. package/corpus/core/src/mcp/actions/call-mcp-tool.ts +1 -0
  38. package/corpus/core/src/secrets/register-framework-secrets.ts +28 -0
  39. package/corpus/core/src/server/agent-chat-plugin.ts +29 -1
  40. package/corpus/core/src/server/index.ts +4 -0
  41. package/corpus/core/src/server/org-admin.ts +28 -0
  42. package/corpus/core/src/templates/workspace-core/.agents/skills/extensions/SKILL.md +9 -0
  43. package/corpus/core/src/templates/workspace-core/.agents/skills/extensions/references/api.md +31 -0
  44. package/corpus/core/src/templates/workspace-core/.agents/skills/external-agents/SKILL.md +9 -0
  45. package/corpus/core/src/vite/client.ts +24 -0
  46. package/corpus/templates/analytics/.agents/skills/creative-context/SKILL.md +64 -0
  47. package/corpus/templates/analytics/.agents/skills/dashboard-management/SKILL.md +29 -21
  48. package/corpus/templates/analytics/AGENTS.md +13 -0
  49. package/corpus/templates/analytics/actions/clone-creative-context-dashboard.ts +86 -0
  50. package/corpus/templates/analytics/actions/dashboard-mutation-api.ts +1 -1
  51. package/corpus/templates/analytics/actions/update-dashboard.ts +6 -2
  52. package/corpus/templates/analytics/app/components/dashboard/SqlChart.tsx +35 -7
  53. package/corpus/templates/analytics/app/components/layout/Layout.tsx +3 -3
  54. package/corpus/templates/analytics/app/i18n/zh-TW.ts +1 -0
  55. package/corpus/templates/analytics/app/i18n-data.ts +1 -0
  56. package/corpus/templates/analytics/app/pages/Ask.tsx +8 -4
  57. package/corpus/templates/analytics/app/pages/adhoc/sql-dashboard/SqlChartCard.tsx +11 -1
  58. package/corpus/templates/analytics/app/pages/adhoc/sql-dashboard/extension-slot.ts +11 -0
  59. package/corpus/templates/analytics/app/pages/adhoc/sql-dashboard/index.tsx +86 -0
  60. package/corpus/templates/analytics/app/pages/adhoc/sql-dashboard/types.ts +6 -0
  61. package/corpus/templates/analytics/app/routes/agent.tsx +7 -1
  62. package/corpus/templates/analytics/changelog/2026-07-17-dashboard-extension-boxes.md +6 -0
  63. package/corpus/templates/analytics/changelog/2026-07-17-library-now-flags-published-dashboards-with-newer-versions-a.md +6 -0
  64. package/corpus/templates/analytics/changelog/2026-07-17-resources-can-be-added-to-creative-context-from-their-action.md +6 -0
  65. package/corpus/templates/analytics/changelog/2026-07-17-you-can-add-exact-approved-artifact-versions-to-governed-cre.md +6 -0
  66. package/corpus/templates/analytics/package.json +1 -0
  67. package/corpus/templates/analytics/server/lib/agent-readable-resource-context.ts +8 -0
  68. package/corpus/templates/analytics/server/lib/native-creative-context.ts +158 -0
  69. package/corpus/templates/analytics/server/plugins/agent-chat.ts +1 -0
  70. package/corpus/templates/analytics/server/plugins/creative-context.ts +10 -0
  71. package/corpus/templates/assets/.agents/skills/creative-context/SKILL.md +12 -3
  72. package/corpus/templates/assets/AGENTS.md +5 -0
  73. package/corpus/templates/assets/actions/clone-creative-context-asset.ts +74 -0
  74. package/corpus/templates/assets/app/hooks/use-navigation-state.ts +2 -1
  75. package/corpus/templates/assets/app/routes/brand-kits.$id.tsx +308 -178
  76. package/corpus/templates/assets/app/routes/library.tsx +5 -11
  77. package/corpus/templates/assets/changelog/2026-07-17-library-now-flags-published-assets-with-newer-versions-and-l.md +6 -0
  78. package/corpus/templates/assets/changelog/2026-07-17-the-agent-chat-sidebar-stays-closed-until-you-open-it-or-sta.md +6 -0
  79. package/corpus/templates/assets/changelog/2026-07-17-you-can-add-exact-approved-artifact-versions-to-governed-cre.md +6 -0
  80. package/corpus/templates/assets/server/lib/native-creative-context.ts +198 -0
  81. package/corpus/templates/assets/server/plugins/creative-context.ts +4 -0
  82. package/corpus/templates/brain/actions/provider-api-request.ts +1 -0
  83. package/corpus/templates/brain/app/hooks/use-navigation-state.ts +6 -1
  84. package/corpus/templates/brain/changelog/2026-07-17-the-agent-chat-sidebar-stays-closed-until-you-open-it-or-sta.md +6 -0
  85. package/corpus/templates/calendar/actions/provider-api-request.ts +1 -0
  86. package/corpus/templates/calendar/app/components/layout/AppLayout.tsx +1 -1
  87. package/corpus/templates/calendar/changelog/2026-07-17-the-agent-chat-sidebar-stays-closed-until-you-open-it-or-sta.md +6 -0
  88. package/corpus/templates/chat/app/hooks/use-navigation-state.ts +4 -1
  89. package/corpus/templates/chat/changelog/2026-07-17-the-agent-chat-sidebar-stays-closed-until-you-open-it-or-sta.md +6 -0
  90. package/corpus/templates/clips/actions/get-recording-insights.ts +7 -4
  91. package/corpus/templates/clips/actions/list-recordings.ts +48 -0
  92. package/corpus/templates/clips/actions/list-viewers.ts +2 -1
  93. package/corpus/templates/clips/app/components/editor/stitch-manager.tsx +3 -1
  94. package/corpus/templates/clips/app/components/library/library-layout.tsx +1 -1
  95. package/corpus/templates/clips/app/components/player/share-dialog.tsx +1 -3
  96. package/corpus/templates/clips/app/hooks/use-desktop-promo.ts +11 -6
  97. package/corpus/templates/clips/app/hooks/use-view-tracking.ts +6 -1
  98. package/corpus/templates/clips/app/lib/ffmpeg-export.ts +4 -2
  99. package/corpus/templates/clips/app/routes/share.$shareId.tsx +21 -3
  100. package/corpus/templates/clips/changelog/2026-07-17-dictation-keeps-sentence-spacing-and-no-longer-crashes-when-.md +6 -0
  101. package/corpus/templates/clips/changelog/2026-07-17-shared-clips-now-preserve-editor-access-and-show-editor-insi.md +6 -0
  102. package/corpus/templates/clips/changelog/2026-07-17-stitching-clips-no-longer-fails-when-editor-media-metadata-i.md +6 -0
  103. package/corpus/templates/clips/changelog/2026-07-17-the-agent-chat-sidebar-stays-closed-until-you-open-it-or-sta.md +6 -0
  104. package/corpus/templates/clips/server/routes/api/public-recording.get.ts +14 -8
  105. package/corpus/templates/clips/shared/view-analytics.ts +4 -0
  106. package/corpus/templates/content/.agents/skills/creative-context/SKILL.md +12 -3
  107. package/corpus/templates/content/AGENTS.md +5 -0
  108. package/corpus/templates/content/actions/_content-space-access.ts +45 -2
  109. package/corpus/templates/content/actions/clone-creative-context-document.ts +61 -0
  110. package/corpus/templates/content/actions/create-content-database.ts +41 -7
  111. package/corpus/templates/content/actions/provider-api-request.ts +1 -0
  112. package/corpus/templates/content/app/components/editor/DocumentToolbar.tsx +21 -0
  113. package/corpus/templates/content/app/components/layout/Layout.tsx +1 -1
  114. package/corpus/templates/content/app/components/sidebar/DocumentTreeItem.tsx +29 -0
  115. package/corpus/templates/content/app/root.tsx +1 -10
  116. package/corpus/templates/content/changelog/2026-07-17-creating-a-database-now-completes-reliably-in-hosted-workspa.md +6 -0
  117. package/corpus/templates/content/changelog/2026-07-17-library-now-flags-published-documents-with-newer-versions-an.md +6 -0
  118. package/corpus/templates/content/changelog/2026-07-17-resources-can-be-added-to-creative-context-from-their-action.md +6 -0
  119. package/corpus/templates/content/changelog/2026-07-17-the-agent-chat-sidebar-stays-closed-until-you-open-it-or-sta.md +6 -0
  120. package/corpus/templates/content/changelog/2026-07-17-you-can-add-exact-approved-artifact-versions-to-governed-cre.md +6 -0
  121. package/corpus/templates/content/parity/matrix.md +1 -1
  122. package/corpus/templates/content/parity/matrix.ts +1 -0
  123. package/corpus/templates/content/server/lib/native-creative-context.ts +191 -0
  124. package/corpus/templates/content/server/plugins/creative-context.ts +8 -1
  125. package/corpus/templates/design/.agents/skills/creative-context/SKILL.md +11 -3
  126. package/corpus/templates/design/AGENTS.md +5 -0
  127. package/corpus/templates/design/actions/clone-creative-context-design-native.ts +111 -0
  128. package/corpus/templates/design/actions/provider-api-request.ts +1 -0
  129. package/corpus/templates/design/app/pages/Index.tsx +44 -0
  130. package/corpus/templates/design/app/pages/design-editor/types.ts +1 -0
  131. package/corpus/templates/design/changelog/2026-07-17-library-now-flags-published-designs-with-newer-versions-and-.md +6 -0
  132. package/corpus/templates/design/changelog/2026-07-17-resources-can-be-added-to-creative-context-from-their-action.md +6 -0
  133. package/corpus/templates/design/changelog/2026-07-17-you-can-add-exact-approved-artifact-versions-to-governed-cre.md +6 -0
  134. package/corpus/templates/design/server/lib/native-creative-context.ts +265 -0
  135. package/corpus/templates/design/server/plugins/creative-context.ts +8 -1
  136. package/corpus/templates/dispatch/actions/provider-api-request.ts +1 -0
  137. package/corpus/templates/dispatch/app/hooks/use-navigation-state.ts +4 -1
  138. package/corpus/templates/dispatch/changelog/2026-07-17-the-agent-chat-sidebar-stays-closed-until-you-open-it-or-sta.md +6 -0
  139. package/corpus/templates/forms/app/components/layout/Layout.tsx +2 -4
  140. package/corpus/templates/forms/app/components/ui/popover.tsx +25 -1
  141. package/corpus/templates/forms/app/hooks/use-navigation-state.ts +6 -1
  142. package/corpus/templates/forms/app/pages/FormBuilderPage.tsx +13 -10
  143. package/corpus/templates/forms/app/root.tsx +6 -1
  144. package/corpus/templates/forms/changelog/2026-07-17-form-builder-popovers-stay-within-the-viewport.md +6 -0
  145. package/corpus/templates/forms/changelog/2026-07-17-form-editor-loading-matches-current-sidebar-free-layout.md +6 -0
  146. package/corpus/templates/forms/changelog/2026-07-17-the-agent-chat-sidebar-stays-closed-until-you-open-it-or-sta.md +6 -0
  147. package/corpus/templates/mail/actions/provider-api-request.ts +1 -0
  148. package/corpus/templates/mail/app/components/layout/AppLayout.tsx +1 -1
  149. package/corpus/templates/mail/changelog/2026-07-17-the-agent-chat-sidebar-stays-closed-until-you-open-it-or-sta.md +6 -0
  150. package/corpus/templates/plan/app/components/layout/Sidebar.tsx +14 -3
  151. package/corpus/templates/plan/app/hooks/use-navigation-state.ts +8 -1
  152. package/corpus/templates/plan/app/root.tsx +0 -2
  153. package/corpus/templates/plan/changelog/2026-07-17-the-agent-chat-sidebar-stays-closed-until-you-open-it-or-sta.md +6 -0
  154. package/corpus/templates/slides/.agents/skills/creative-context/SKILL.md +11 -3
  155. package/corpus/templates/slides/AGENTS.md +5 -0
  156. package/corpus/templates/slides/actions/clone-creative-context-deck.ts +96 -0
  157. package/corpus/templates/slides/actions/extract-pdf.ts +3 -2
  158. package/corpus/templates/slides/actions/import-file.ts +3 -2
  159. package/corpus/templates/slides/actions/provider-api-request.ts +1 -0
  160. package/corpus/templates/slides/app/components/deck/DeckCard.tsx +27 -0
  161. package/corpus/templates/slides/app/components/editor/EditorToolbar.tsx +21 -0
  162. package/corpus/templates/slides/app/components/layout/Layout.tsx +1 -1
  163. package/corpus/templates/slides/app/context/DeckContext.tsx +23 -23
  164. package/corpus/templates/slides/changelog/2026-07-17-duplicated-slides-now-stay-in-the-deck.md +6 -0
  165. package/corpus/templates/slides/changelog/2026-07-17-library-now-flags-published-decks-with-newer-versions-and-le.md +6 -0
  166. package/corpus/templates/slides/changelog/2026-07-17-pdf-and-powerpoint-imports-now-work-reliably-in-hosted-decks.md +6 -0
  167. package/corpus/templates/slides/changelog/2026-07-17-resources-can-be-added-to-creative-context-from-their-action.md +6 -0
  168. package/corpus/templates/slides/changelog/2026-07-17-the-agent-chat-sidebar-stays-closed-until-you-open-it-or-sta.md +6 -0
  169. package/corpus/templates/slides/changelog/2026-07-17-you-can-add-exact-approved-artifact-versions-to-governed-cre.md +6 -0
  170. package/corpus/templates/slides/server/lib/native-creative-context.ts +288 -0
  171. package/corpus/templates/slides/server/plugins/creative-context.ts +4 -0
  172. package/corpus/templates/tasks/app/components/layout/Layout.tsx +2 -13
  173. package/corpus/templates/tasks/changelog/2026-07-17-the-agent-chat-sidebar-stays-closed-until-you-open-it.md +6 -0
  174. package/dist/agent/production-agent.d.ts.map +1 -1
  175. package/dist/agent/production-agent.js +13 -1
  176. package/dist/agent/production-agent.js.map +1 -1
  177. package/dist/agent/run-store.d.ts +17 -0
  178. package/dist/agent/run-store.d.ts.map +1 -1
  179. package/dist/agent/run-store.js +84 -2
  180. package/dist/agent/run-store.js.map +1 -1
  181. package/dist/client/AssistantChat.d.ts.map +1 -1
  182. package/dist/client/AssistantChat.js +18 -3
  183. package/dist/client/AssistantChat.js.map +1 -1
  184. package/dist/client/CommandMenu.d.ts.map +1 -1
  185. package/dist/client/CommandMenu.js +4 -0
  186. package/dist/client/CommandMenu.js.map +1 -1
  187. package/dist/client/active-run-state.d.ts +7 -0
  188. package/dist/client/active-run-state.d.ts.map +1 -1
  189. package/dist/client/active-run-state.js +28 -0
  190. package/dist/client/active-run-state.js.map +1 -1
  191. package/dist/client/agent-chat-adapter.d.ts.map +1 -1
  192. package/dist/client/agent-chat-adapter.js +4 -1
  193. package/dist/client/agent-chat-adapter.js.map +1 -1
  194. package/dist/client/chat/message-components.d.ts.map +1 -1
  195. package/dist/client/chat/message-components.js +35 -1
  196. package/dist/client/chat/message-components.js.map +1 -1
  197. package/dist/client/composer/TiptapComposer.d.ts +7 -0
  198. package/dist/client/composer/TiptapComposer.d.ts.map +1 -1
  199. package/dist/client/composer/TiptapComposer.js +37 -8
  200. package/dist/client/composer/TiptapComposer.js.map +1 -1
  201. package/dist/client/integrations/IntegrationsPanel.d.ts.map +1 -1
  202. package/dist/client/integrations/IntegrationsPanel.js +3 -2
  203. package/dist/client/integrations/IntegrationsPanel.js.map +1 -1
  204. package/dist/client/resources/McpConnectionSuggestion.d.ts +9 -0
  205. package/dist/client/resources/McpConnectionSuggestion.d.ts.map +1 -0
  206. package/dist/client/resources/McpConnectionSuggestion.js +134 -0
  207. package/dist/client/resources/McpConnectionSuggestion.js.map +1 -0
  208. package/dist/client/resources/McpIntegrationDialog.d.ts +2 -1
  209. package/dist/client/resources/McpIntegrationDialog.d.ts.map +1 -1
  210. package/dist/client/resources/McpIntegrationDialog.js +51 -21
  211. package/dist/client/resources/McpIntegrationDialog.js.map +1 -1
  212. package/dist/client/resources/mcp-integration-catalog.d.ts +15 -0
  213. package/dist/client/resources/mcp-integration-catalog.d.ts.map +1 -1
  214. package/dist/client/resources/mcp-integration-catalog.js +420 -4
  215. package/dist/client/resources/mcp-integration-catalog.js.map +1 -1
  216. package/dist/client/resources/mcp-integration-logos.d.ts +2 -0
  217. package/dist/client/resources/mcp-integration-logos.d.ts.map +1 -0
  218. package/dist/client/resources/mcp-integration-logos.js +109 -0
  219. package/dist/client/resources/mcp-integration-logos.js.map +1 -0
  220. package/dist/client/sharing/ShareButton.d.ts.map +1 -1
  221. package/dist/client/sharing/ShareButton.js +15 -12
  222. package/dist/client/sharing/ShareButton.js.map +1 -1
  223. package/dist/client/use-agent-chat-home-handoff.d.ts +1 -1
  224. package/dist/client/use-agent-chat-home-handoff.d.ts.map +1 -1
  225. package/dist/client/use-agent-chat-home-handoff.js +1 -1
  226. package/dist/client/use-agent-chat-home-handoff.js.map +1 -1
  227. package/dist/collab/routes.d.ts +1 -1
  228. package/dist/collab/struct-routes.d.ts +1 -1
  229. package/dist/deploy/build.d.ts.map +1 -1
  230. package/dist/deploy/build.js +23 -0
  231. package/dist/deploy/build.js.map +1 -1
  232. package/dist/extensions/html-shell.d.ts.map +1 -1
  233. package/dist/extensions/html-shell.js +33 -1
  234. package/dist/extensions/html-shell.js.map +1 -1
  235. package/dist/ingestion/office.d.ts.map +1 -1
  236. package/dist/ingestion/office.js +1 -2
  237. package/dist/ingestion/office.js.map +1 -1
  238. package/dist/ingestion/pptx.js +2 -4
  239. package/dist/ingestion/pptx.js.map +1 -1
  240. package/dist/localization/default-messages.d.ts +100 -0
  241. package/dist/localization/default-messages.d.ts.map +1 -1
  242. package/dist/localization/default-messages.js +101 -1
  243. package/dist/localization/default-messages.js.map +1 -1
  244. package/dist/mcp/actions/call-mcp-tool.js +1 -0
  245. package/dist/mcp/actions/call-mcp-tool.js.map +1 -1
  246. package/dist/notifications/routes.d.ts +1 -1
  247. package/dist/observability/routes.d.ts +5 -5
  248. package/dist/provider-api/corpus-jobs.d.ts +2 -2
  249. package/dist/resources/handlers.d.ts +1 -1
  250. package/dist/secrets/register-framework-secrets.d.ts.map +1 -1
  251. package/dist/secrets/register-framework-secrets.js +25 -0
  252. package/dist/secrets/register-framework-secrets.js.map +1 -1
  253. package/dist/secrets/routes.d.ts +9 -9
  254. package/dist/server/agent-chat-plugin.d.ts.map +1 -1
  255. package/dist/server/agent-chat-plugin.js +23 -1
  256. package/dist/server/agent-chat-plugin.js.map +1 -1
  257. package/dist/server/agent-engine-api-key-route.d.ts +1 -1
  258. package/dist/server/index.d.ts +1 -0
  259. package/dist/server/index.d.ts.map +1 -1
  260. package/dist/server/index.js +1 -0
  261. package/dist/server/index.js.map +1 -1
  262. package/dist/server/org-admin.d.ts +3 -0
  263. package/dist/server/org-admin.d.ts.map +1 -0
  264. package/dist/server/org-admin.js +24 -0
  265. package/dist/server/org-admin.js.map +1 -0
  266. package/dist/templates/chat/app/hooks/use-navigation-state.ts +4 -1
  267. package/dist/templates/chat/changelog/2026-07-17-the-agent-chat-sidebar-stays-closed-until-you-open-it-or-sta.md +6 -0
  268. package/dist/templates/workspace-core/.agents/skills/extensions/SKILL.md +9 -0
  269. package/dist/templates/workspace-core/.agents/skills/extensions/references/api.md +31 -0
  270. package/dist/templates/workspace-core/.agents/skills/external-agents/SKILL.md +9 -0
  271. package/dist/vite/client.d.ts.map +1 -1
  272. package/dist/vite/client.js +20 -0
  273. package/dist/vite/client.js.map +1 -1
  274. package/docs/content/integrations.mdx +597 -0
  275. package/docs/content/locales/ar-SA/mcp-clients.mdx +19 -1
  276. package/docs/content/locales/de-DE/mcp-clients.mdx +22 -1
  277. package/docs/content/locales/es-ES/mcp-clients.mdx +23 -1
  278. package/docs/content/locales/fr-FR/mcp-clients.mdx +23 -1
  279. package/docs/content/locales/hi-IN/mcp-clients.mdx +22 -1
  280. package/docs/content/locales/ja-JP/mcp-clients.mdx +21 -1
  281. package/docs/content/locales/ko-KR/mcp-clients.mdx +20 -1
  282. package/docs/content/locales/pt-BR/mcp-clients.mdx +22 -1
  283. package/docs/content/locales/zh-CN/mcp-clients.mdx +17 -1
  284. package/docs/content/locales/zh-TW/mcp-clients.mdx +17 -1
  285. package/docs/content/mcp-clients.mdx +51 -1
  286. package/docs/content/organizations-teams-permissions.mdx +413 -0
  287. package/package.json +1 -1
  288. package/src/templates/chat/app/hooks/use-navigation-state.ts +4 -1
  289. package/src/templates/chat/changelog/2026-07-17-the-agent-chat-sidebar-stays-closed-until-you-open-it-or-sta.md +6 -0
  290. package/src/templates/workspace-core/.agents/skills/extensions/SKILL.md +9 -0
  291. package/src/templates/workspace-core/.agents/skills/extensions/references/api.md +31 -0
  292. package/src/templates/workspace-core/.agents/skills/external-agents/SKILL.md +9 -0
@@ -1,4 +1,5 @@
1
1
  import { normalizeMcpIntegrationsConfig, } from "../../shared/mcp-integration-config.js";
2
+ import { mcpIntegrationLogo } from "./mcp-integration-logos.js";
2
3
  export const DEFAULT_MCP_INTEGRATIONS = [
3
4
  {
4
5
  id: "context7",
@@ -10,6 +11,10 @@ export const DEFAULT_MCP_INTEGRATIONS = [
10
11
  useCaseKey: "mcpIntegrations.catalog.context7.useCase",
11
12
  url: "https://mcp.context7.com/mcp",
12
13
  authMode: "none",
14
+ connectionMode: "direct",
15
+ availability: "ready",
16
+ verification: "verified",
17
+ logoUrl: mcpIntegrationLogo("context7"),
13
18
  docsUrl: "https://context7.com/",
14
19
  keywords: ["docs", "documentation", "libraries", "frameworks"],
15
20
  },
@@ -23,6 +28,10 @@ export const DEFAULT_MCP_INTEGRATIONS = [
23
28
  useCaseKey: "mcpIntegrations.catalog.sentry.useCase",
24
29
  url: "https://mcp.sentry.dev/mcp",
25
30
  authMode: "headers",
31
+ connectionMode: "headers",
32
+ availability: "ready",
33
+ verification: "preflight-only",
34
+ logoUrl: mcpIntegrationLogo("sentry"),
26
35
  docsUrl: "https://docs.sentry.io/product/sentry-mcp/",
27
36
  headerPlaceholder: "Authorization: Bearer <sentry-token>",
28
37
  keywords: ["errors", "monitoring", "debugging", "issues"],
@@ -35,9 +44,14 @@ export const DEFAULT_MCP_INTEGRATIONS = [
35
44
  descriptionKey: "mcpIntegrations.catalog.notion.description",
36
45
  useCase: "documentation, knowledge management, notes, content creation",
37
46
  useCaseKey: "mcpIntegrations.catalog.notion.useCase",
38
- url: "https://mcp.notion.com/sse",
47
+ url: "https://mcp.notion.com/mcp",
39
48
  authMode: "oauth",
40
- docsUrl: "https://developers.notion.com/docs/mcp",
49
+ connectionMode: "oauth",
50
+ availability: "ready",
51
+ verification: "preflight-only",
52
+ logoUrl: mcpIntegrationLogo("notion"),
53
+ docsUrl: "https://developers.notion.com/guides/mcp/get-started-with-mcp",
54
+ setupNoteKey: "mcpIntegrations.catalog.notion.setupNote",
41
55
  keywords: ["docs", "knowledge", "notes", "pages"],
42
56
  },
43
57
  {
@@ -50,6 +64,10 @@ export const DEFAULT_MCP_INTEGRATIONS = [
50
64
  useCaseKey: "mcpIntegrations.catalog.semgrep.useCase",
51
65
  url: "https://mcp.semgrep.ai/mcp",
52
66
  authMode: "none",
67
+ connectionMode: "direct",
68
+ availability: "ready",
69
+ verification: "preflight-only",
70
+ logoUrl: mcpIntegrationLogo("semgrep"),
53
71
  docsUrl: "https://github.com/semgrep/mcp#readme",
54
72
  keywords: ["security", "sast", "code scanning", "vulnerabilities"],
55
73
  },
@@ -61,9 +79,13 @@ export const DEFAULT_MCP_INTEGRATIONS = [
61
79
  descriptionKey: "mcpIntegrations.catalog.linear.description",
62
80
  useCase: "project management, issue tracking, planning, bug reports",
63
81
  useCaseKey: "mcpIntegrations.catalog.linear.useCase",
64
- url: "https://mcp.linear.app/sse",
82
+ url: "https://mcp.linear.app/mcp",
65
83
  authMode: "oauth",
66
- docsUrl: "https://www.builder.io/c/docs/fusion-connect-to-linear",
84
+ connectionMode: "oauth",
85
+ availability: "ready",
86
+ verification: "preflight-only",
87
+ logoUrl: mcpIntegrationLogo("linear"),
88
+ docsUrl: "https://linear.app/docs/mcp",
67
89
  keywords: ["issues", "tickets", "planning", "project management"],
68
90
  },
69
91
  {
@@ -76,6 +98,10 @@ export const DEFAULT_MCP_INTEGRATIONS = [
76
98
  useCaseKey: "mcpIntegrations.catalog.atlassian.useCase",
77
99
  url: "https://mcp.atlassian.com/v1/mcp/authv2",
78
100
  authMode: "oauth",
101
+ connectionMode: "oauth",
102
+ availability: "provider-setup",
103
+ verification: "restricted",
104
+ logoUrl: mcpIntegrationLogo("atlassian"),
79
105
  docsUrl: "https://developer.atlassian.com/cloud/rovo-mcp/guides/getting-started/",
80
106
  setupNoteKey: "mcpIntegrations.catalog.atlassian.setupNote",
81
107
  keywords: ["atlassian", "jira", "confluence", "issues", "tickets"],
@@ -90,6 +116,10 @@ export const DEFAULT_MCP_INTEGRATIONS = [
90
116
  useCaseKey: "mcpIntegrations.catalog.supabase.useCase",
91
117
  url: "https://mcp.supabase.com/mcp",
92
118
  authMode: "oauth",
119
+ connectionMode: "oauth",
120
+ availability: "ready",
121
+ verification: "preflight-only",
122
+ logoUrl: mcpIntegrationLogo("supabase"),
93
123
  docsUrl: "https://www.builder.io/c/docs/fusion-connect-to-supabase",
94
124
  keywords: ["database", "auth", "postgres", "storage"],
95
125
  },
@@ -103,6 +133,10 @@ export const DEFAULT_MCP_INTEGRATIONS = [
103
133
  useCaseKey: "mcpIntegrations.catalog.neon.useCase",
104
134
  url: "https://mcp.neon.tech/sse",
105
135
  authMode: "oauth",
136
+ connectionMode: "oauth",
137
+ availability: "ready",
138
+ verification: "preflight-only",
139
+ logoUrl: mcpIntegrationLogo("neon"),
106
140
  docsUrl: "https://www.builder.io/c/docs/fusion-connect-to-neon",
107
141
  keywords: ["database", "postgres", "serverless", "backend"],
108
142
  },
@@ -116,9 +150,307 @@ export const DEFAULT_MCP_INTEGRATIONS = [
116
150
  useCaseKey: "mcpIntegrations.catalog.stripe.useCase",
117
151
  url: "https://mcp.stripe.com",
118
152
  authMode: "oauth",
153
+ connectionMode: "oauth",
154
+ availability: "ready",
155
+ verification: "preflight-only",
156
+ logoUrl: mcpIntegrationLogo("stripe"),
119
157
  docsUrl: "https://docs.stripe.com/mcp",
120
158
  keywords: ["payments", "billing", "subscriptions", "customers"],
121
159
  },
160
+ {
161
+ id: "cloudflare",
162
+ name: "Cloudflare",
163
+ provider: "cloudflare",
164
+ description: "Search and operate Cloudflare services through MCP.",
165
+ descriptionKey: "mcpIntegrations.catalog.cloudflare.description",
166
+ useCase: "DNS, Workers, domains, security, observability, platform APIs",
167
+ useCaseKey: "mcpIntegrations.catalog.cloudflare.useCase",
168
+ url: "https://mcp.cloudflare.com/mcp",
169
+ authMode: "oauth",
170
+ connectionMode: "oauth",
171
+ availability: "ready",
172
+ verification: "preflight-only",
173
+ logoUrl: mcpIntegrationLogo("cloudflare"),
174
+ docsUrl: "https://developers.cloudflare.com/agents/model-context-protocol/cloudflare/servers-for-cloudflare/",
175
+ setupNoteKey: "mcpIntegrations.catalog.cloudflare.setupNote",
176
+ keywords: ["cloud", "workers", "dns", "security", "observability"],
177
+ },
178
+ {
179
+ id: "gitlab",
180
+ name: "GitLab",
181
+ provider: "gitlab",
182
+ description: "Read and manage GitLab projects, issues, and merge requests.",
183
+ descriptionKey: "mcpIntegrations.catalog.gitlab.description",
184
+ useCase: "repositories, issues, merge requests, CI/CD, code analytics",
185
+ useCaseKey: "mcpIntegrations.catalog.gitlab.useCase",
186
+ url: "https://gitlab.com/api/v4/mcp",
187
+ authMode: "oauth",
188
+ connectionMode: "oauth",
189
+ availability: "beta",
190
+ verification: "restricted",
191
+ logoUrl: mcpIntegrationLogo("gitlab"),
192
+ docsUrl: "https://docs.gitlab.com/user/model_context_protocol/mcp_server/",
193
+ setupNoteKey: "mcpIntegrations.catalog.gitlab.setupNote",
194
+ keywords: ["git", "repositories", "issues", "merge requests", "ci"],
195
+ },
196
+ {
197
+ id: "figma",
198
+ name: "Figma",
199
+ provider: "figma",
200
+ description: "Bring Figma design context and canvas actions into an agent.",
201
+ descriptionKey: "mcpIntegrations.catalog.figma.description",
202
+ useCase: "design files, components, variables, design systems, canvas",
203
+ useCaseKey: "mcpIntegrations.catalog.figma.useCase",
204
+ url: "https://mcp.figma.com/mcp",
205
+ authMode: "oauth",
206
+ connectionMode: "manual",
207
+ availability: "client-restricted",
208
+ verification: "restricted",
209
+ logoUrl: mcpIntegrationLogo("figma"),
210
+ docsUrl: "https://developers.figma.com/docs/figma-mcp-server/",
211
+ setupNoteKey: "mcpIntegrations.catalog.figma.setupNote",
212
+ apiFallback: {
213
+ secretKey: "FIGMA_ACCESS_TOKEN",
214
+ docsUrl: "https://developers.figma.com/docs/rest-api/personal-access-tokens/",
215
+ templateUses: ["design"],
216
+ },
217
+ keywords: ["design", "figjam", "components", "variables", "canvas"],
218
+ },
219
+ {
220
+ id: "canva",
221
+ name: "Canva",
222
+ provider: "canva",
223
+ description: "Search, create, and update Canva designs and assets.",
224
+ descriptionKey: "mcpIntegrations.catalog.canva.description",
225
+ useCase: "designs, templates, assets, brand kits, exports, collaboration",
226
+ useCaseKey: "mcpIntegrations.catalog.canva.useCase",
227
+ url: "https://mcp.canva.com/mcp",
228
+ authMode: "oauth",
229
+ connectionMode: "manual",
230
+ availability: "client-restricted",
231
+ verification: "restricted",
232
+ logoUrl: mcpIntegrationLogo("canva"),
233
+ docsUrl: "https://www.canva.dev/docs/mcp/",
234
+ setupNoteKey: "mcpIntegrations.catalog.canva.setupNote",
235
+ keywords: ["design", "templates", "assets", "brand", "exports"],
236
+ },
237
+ {
238
+ id: "vercel",
239
+ name: "Vercel",
240
+ provider: "vercel",
241
+ description: "Search Vercel docs and inspect projects, deployments, and logs.",
242
+ descriptionKey: "mcpIntegrations.catalog.vercel.description",
243
+ useCase: "deployments, projects, logs, domains, hosting, documentation",
244
+ useCaseKey: "mcpIntegrations.catalog.vercel.useCase",
245
+ url: "https://mcp.vercel.com",
246
+ authMode: "oauth",
247
+ connectionMode: "manual",
248
+ availability: "client-restricted",
249
+ verification: "restricted",
250
+ logoUrl: mcpIntegrationLogo("vercel"),
251
+ docsUrl: "https://vercel.com/docs/agent-resources/vercel-mcp",
252
+ setupNoteKey: "mcpIntegrations.catalog.vercel.setupNote",
253
+ keywords: ["deployments", "hosting", "projects", "logs", "domains"],
254
+ },
255
+ {
256
+ id: "github",
257
+ name: "GitHub",
258
+ provider: "github",
259
+ description: "Read repositories, issues, pull requests, and code context.",
260
+ descriptionKey: "mcpIntegrations.catalog.github.description",
261
+ useCase: "repositories, issues, pull requests, code, engineering analytics",
262
+ useCaseKey: "mcpIntegrations.catalog.github.useCase",
263
+ url: "https://api.githubcopilot.com/mcp/",
264
+ authMode: "oauth",
265
+ connectionMode: "manual",
266
+ availability: "provider-setup",
267
+ verification: "restricted",
268
+ logoUrl: mcpIntegrationLogo("github"),
269
+ docsUrl: "https://github.com/github/github-mcp-server",
270
+ setupNoteKey: "mcpIntegrations.catalog.github.setupNote",
271
+ keywords: ["git", "repositories", "issues", "pull requests", "code"],
272
+ },
273
+ {
274
+ id: "slack",
275
+ name: "Slack",
276
+ provider: "slack",
277
+ description: "Search Slack conversations and take workspace actions through MCP.",
278
+ descriptionKey: "mcpIntegrations.catalog.slack.description",
279
+ useCase: "messages, channels, people, company memory, workflows",
280
+ useCaseKey: "mcpIntegrations.catalog.slack.useCase",
281
+ url: "https://mcp.slack.com/mcp",
282
+ authMode: "oauth",
283
+ connectionMode: "manual",
284
+ availability: "client-restricted",
285
+ verification: "restricted",
286
+ logoUrl: mcpIntegrationLogo("slack"),
287
+ docsUrl: "https://docs.slack.dev/ai/slack-mcp-server/",
288
+ setupNoteKey: "mcpIntegrations.catalog.slack.setupNote",
289
+ keywords: ["messages", "channels", "search", "people", "chat"],
290
+ },
291
+ {
292
+ id: "asana",
293
+ name: "Asana",
294
+ provider: "asana",
295
+ description: "Search and manage Asana tasks, projects, and work graph data.",
296
+ descriptionKey: "mcpIntegrations.catalog.asana.description",
297
+ useCase: "tasks, projects, portfolios, planning, workload",
298
+ useCaseKey: "mcpIntegrations.catalog.asana.useCase",
299
+ url: "https://mcp.asana.com/v2/mcp",
300
+ authMode: "oauth",
301
+ connectionMode: "manual",
302
+ availability: "provider-setup",
303
+ verification: "restricted",
304
+ logoUrl: mcpIntegrationLogo("asana"),
305
+ docsUrl: "https://developers.asana.com/docs/integrating-with-asanas-mcp-server",
306
+ setupNoteKey: "mcpIntegrations.catalog.asana.setupNote",
307
+ keywords: ["tasks", "projects", "planning", "workload", "portfolios"],
308
+ },
309
+ {
310
+ id: "hubspot",
311
+ name: "HubSpot",
312
+ provider: "hubspot",
313
+ description: "Search and update HubSpot CRM records through MCP.",
314
+ descriptionKey: "mcpIntegrations.catalog.hubspot.description",
315
+ useCase: "CRM, contacts, companies, deals, tickets, customer analytics",
316
+ useCaseKey: "mcpIntegrations.catalog.hubspot.useCase",
317
+ url: "https://mcp.hubspot.com",
318
+ authMode: "oauth",
319
+ connectionMode: "manual",
320
+ availability: "provider-setup",
321
+ verification: "restricted",
322
+ logoUrl: mcpIntegrationLogo("hubspot"),
323
+ docsUrl: "https://developers.hubspot.com/docs/apps/developer-platform/build-apps/integrate-with-the-remote-hubspot-mcp-server",
324
+ setupNoteKey: "mcpIntegrations.catalog.hubspot.setupNote",
325
+ keywords: ["crm", "contacts", "companies", "deals", "tickets"],
326
+ },
327
+ {
328
+ id: "intercom",
329
+ name: "Intercom",
330
+ provider: "intercom",
331
+ description: "Search conversations and customer support knowledge.",
332
+ descriptionKey: "mcpIntegrations.catalog.intercom.description",
333
+ useCase: "customer support, conversations, contacts, help center content",
334
+ useCaseKey: "mcpIntegrations.catalog.intercom.useCase",
335
+ url: "https://mcp.intercom.com/mcp",
336
+ authMode: "oauth",
337
+ connectionMode: "oauth",
338
+ availability: "ready",
339
+ verification: "preflight-only",
340
+ logoUrl: mcpIntegrationLogo("intercom"),
341
+ docsUrl: "https://developers.intercom.com/docs/guides/mcp",
342
+ setupNoteKey: "mcpIntegrations.catalog.intercom.setupNote",
343
+ keywords: ["support", "conversations", "customers", "help center"],
344
+ },
345
+ {
346
+ id: "monday",
347
+ name: "monday.com",
348
+ provider: "monday",
349
+ description: "Work with boards, items, and team workflows.",
350
+ descriptionKey: "mcpIntegrations.catalog.monday.description",
351
+ useCase: "work management, boards, projects, tasks, team operations",
352
+ useCaseKey: "mcpIntegrations.catalog.monday.useCase",
353
+ url: "https://mcp.monday.com/mcp",
354
+ authMode: "oauth",
355
+ connectionMode: "oauth",
356
+ availability: "ready",
357
+ verification: "preflight-only",
358
+ logoUrl: mcpIntegrationLogo("monday"),
359
+ docsUrl: "https://developer.monday.com/api-reference/docs/build-on-monday-with-ai",
360
+ setupNoteKey: "mcpIntegrations.catalog.monday.setupNote",
361
+ keywords: ["work management", "boards", "projects", "tasks", "teams"],
362
+ },
363
+ {
364
+ id: "webflow",
365
+ name: "Webflow",
366
+ provider: "webflow",
367
+ description: "Read and update Webflow sites and content.",
368
+ descriptionKey: "mcpIntegrations.catalog.webflow.description",
369
+ useCase: "websites, CMS, site content, publishing, design workflows",
370
+ useCaseKey: "mcpIntegrations.catalog.webflow.useCase",
371
+ url: "https://mcp.webflow.com/mcp",
372
+ authMode: "oauth",
373
+ connectionMode: "oauth",
374
+ availability: "ready",
375
+ verification: "preflight-only",
376
+ logoUrl: mcpIntegrationLogo("webflow"),
377
+ docsUrl: "https://developers.webflow.com/mcp/reference/getting-started",
378
+ setupNoteKey: "mcpIntegrations.catalog.webflow.setupNote",
379
+ keywords: ["websites", "cms", "content", "publishing", "design"],
380
+ },
381
+ {
382
+ id: "paypal",
383
+ name: "PayPal",
384
+ provider: "paypal",
385
+ description: "Work with PayPal payments, invoices, and commerce data.",
386
+ descriptionKey: "mcpIntegrations.catalog.paypal.description",
387
+ useCase: "payments, invoices, transactions, merchant operations",
388
+ useCaseKey: "mcpIntegrations.catalog.paypal.useCase",
389
+ url: "https://mcp.paypal.com/sse",
390
+ authMode: "oauth",
391
+ connectionMode: "oauth",
392
+ availability: "ready",
393
+ verification: "preflight-only",
394
+ logoUrl: mcpIntegrationLogo("paypal"),
395
+ docsUrl: "https://developer.paypal.com/ai-tools/mcp-server/",
396
+ setupNoteKey: "mcpIntegrations.catalog.paypal.setupNote",
397
+ keywords: ["payments", "invoices", "transactions", "commerce"],
398
+ },
399
+ {
400
+ id: "box",
401
+ name: "Box",
402
+ provider: "box",
403
+ description: "Search and manage files and folders in Box.",
404
+ descriptionKey: "mcpIntegrations.catalog.box.description",
405
+ useCase: "files, folders, enterprise content, search, collaboration",
406
+ useCaseKey: "mcpIntegrations.catalog.box.useCase",
407
+ url: "https://mcp.box.com",
408
+ authMode: "oauth",
409
+ connectionMode: "manual",
410
+ availability: "provider-setup",
411
+ verification: "restricted",
412
+ logoUrl: mcpIntegrationLogo("box"),
413
+ docsUrl: "https://developer.box.com/guides/box-mcp",
414
+ setupNoteKey: "mcpIntegrations.catalog.box.setupNote",
415
+ keywords: ["files", "folders", "documents", "enterprise content"],
416
+ },
417
+ {
418
+ id: "netlify",
419
+ name: "Netlify",
420
+ provider: "netlify",
421
+ description: "Inspect and operate Netlify sites and deployments.",
422
+ descriptionKey: "mcpIntegrations.catalog.netlify.description",
423
+ useCase: "sites, deployments, builds, domains, hosting operations",
424
+ useCaseKey: "mcpIntegrations.catalog.netlify.useCase",
425
+ url: "https://netlify-mcp.netlify.app/mcp",
426
+ authMode: "oauth",
427
+ connectionMode: "oauth",
428
+ availability: "ready",
429
+ verification: "preflight-only",
430
+ logoUrl: mcpIntegrationLogo("netlify"),
431
+ docsUrl: "https://docs.netlify.com/build/build-with-ai/agent-setup-guides/agent-setup-overview/",
432
+ setupNoteKey: "mcpIntegrations.catalog.netlify.setupNote",
433
+ keywords: ["deployments", "builds", "sites", "hosting", "domains"],
434
+ },
435
+ {
436
+ id: "zapier",
437
+ name: "Zapier",
438
+ provider: "zapier",
439
+ description: "Connect MCP tools to thousands of app actions.",
440
+ descriptionKey: "mcpIntegrations.catalog.zapier.description",
441
+ useCase: "automation, workflows, app actions, cross-service operations",
442
+ useCaseKey: "mcpIntegrations.catalog.zapier.useCase",
443
+ url: "https://mcp.zapier.com/api/v1/connect",
444
+ authMode: "headers",
445
+ connectionMode: "headers",
446
+ availability: "ready",
447
+ verification: "restricted",
448
+ logoUrl: mcpIntegrationLogo("zapier"),
449
+ docsUrl: "https://help.zapier.com/hc/en-us/articles/36265392843917-Use-Zapier-MCP-with-your-client",
450
+ setupNoteKey: "mcpIntegrations.catalog.zapier.setupNote",
451
+ headerPlaceholder: "Authorization: Bearer <zapier-mcp-token>",
452
+ keywords: ["automation", "workflows", "actions", "apps", "integrations"],
453
+ },
122
454
  ];
123
455
  function readRuntimeMcpIntegrationsConfig() {
124
456
  try {
@@ -131,6 +463,34 @@ function readRuntimeMcpIntegrationsConfig() {
131
463
  }
132
464
  return normalizeMcpIntegrationsConfig();
133
465
  }
466
+ function normalizeTemplateName(value) {
467
+ if (typeof value !== "string")
468
+ return null;
469
+ const normalized = value.trim().toLowerCase();
470
+ return normalized || null;
471
+ }
472
+ function getActiveTemplateName() {
473
+ try {
474
+ const compiledTemplate = normalizeTemplateName(__AGENT_NATIVE_TEMPLATE__);
475
+ if (compiledTemplate)
476
+ return compiledTemplate;
477
+ }
478
+ catch {
479
+ // Test and non-Vite contexts may not define the compile-time constant.
480
+ }
481
+ const runtimeConfig = globalThis.__AGENT_NATIVE_CONFIG__;
482
+ return normalizeTemplateName(runtimeConfig?.template);
483
+ }
484
+ export function getMcpIntegrationApiFallback(integration, templateName = getActiveTemplateName()) {
485
+ const fallback = integration.apiFallback;
486
+ if (!fallback)
487
+ return null;
488
+ if (!fallback.templateUses?.length)
489
+ return fallback;
490
+ if (!templateName)
491
+ return null;
492
+ return fallback.templateUses.includes(templateName) ? fallback : null;
493
+ }
134
494
  function normalizePresetConfig(config) {
135
495
  if (config === undefined)
136
496
  return readRuntimeMcpIntegrationsConfig();
@@ -199,6 +559,62 @@ export function filterMcpIntegrations(query, integrations = getDefaultMcpIntegra
199
559
  return haystack.includes(needle);
200
560
  });
201
561
  }
562
+ const MCP_LINK_HOSTS = {
563
+ notion: ["notion.so", "notion.site"],
564
+ canva: ["canva.com", "canva.ai"],
565
+ figma: ["figma.com"],
566
+ linear: ["linear.app"],
567
+ github: ["github.com", "github.dev"],
568
+ gitlab: ["gitlab.com"],
569
+ slack: ["slack.com"],
570
+ asana: ["asana.com"],
571
+ hubspot: ["hubspot.com"],
572
+ intercom: ["intercom.com"],
573
+ monday: ["monday.com"],
574
+ webflow: ["webflow.com"],
575
+ paypal: ["paypal.com"],
576
+ box: ["box.com"],
577
+ netlify: ["netlify.com"],
578
+ };
579
+ function hostMatches(hostname, domain) {
580
+ return hostname === domain || hostname.endsWith(`.${domain}`);
581
+ }
582
+ function findUrlForText(text) {
583
+ const candidates = text.match(/https?:\/\/[^\s<>()[\]{}]+/gi) ?? [];
584
+ for (const candidate of candidates) {
585
+ try {
586
+ return new URL(candidate.replace(/[.,!?;:'\"]+$/, ""));
587
+ }
588
+ catch {
589
+ // Ignore prose that only looks like a URL.
590
+ }
591
+ }
592
+ return null;
593
+ }
594
+ const MCP_RESOURCE_INTENT_PATTERN = /\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;
595
+ export function findMcpIntegrationForText(text, integrations = getDefaultMcpIntegrations()) {
596
+ const url = findUrlForText(text);
597
+ if (url) {
598
+ const match = integrations.find((integration) => (MCP_LINK_HOSTS[integration.id] ?? []).some((domain) => hostMatches(url.hostname.toLowerCase(), domain)));
599
+ if (match)
600
+ return match;
601
+ }
602
+ const normalizedText = text.toLowerCase();
603
+ const hasResourceIntent = MCP_RESOURCE_INTENT_PATTERN.test(normalizedText) ||
604
+ isMcpConnectionFailureText(normalizedText);
605
+ if (!hasResourceIntent)
606
+ return null;
607
+ return (integrations.find((integration) => {
608
+ const aliases = [integration.name, integration.provider, integration.id];
609
+ return aliases.some((alias) => {
610
+ const escaped = alias.replace(/[.*+?^${}()|[\]\\]/g, "\\$&");
611
+ return new RegExp(`(^|[^a-z0-9])${escaped}([^a-z0-9]|$)`, "i").test(normalizedText);
612
+ });
613
+ }) ?? null);
614
+ }
615
+ export function isMcpConnectionFailureText(text) {
616
+ 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(text);
617
+ }
202
618
  export function createMcpIntegrationFormDefaults(integration) {
203
619
  if (!integration) {
204
620
  return {