{"version":3,"file":"inkeep-BiivUYGJ.js","sources":["../../../frontend/entrypoints/inline/inkeep.js"],"sourcesContent":["import posthog from 'posthog-js';\n\nconst openHubSpotConversations = () => {\n window.HubSpotConversations?.widget.load();\n window.HubSpotConversations?.widget.open();\n\n window.HubSpotConversations?.on('widgetClosed', () => {\n window.HubSpotConversations.widget.remove();\n window.HubSpotConversations.off('widgetClosed', null);\n });\n};\n\nconst getTools = () => [\n {\n type: 'function',\n function: {\n name: 'contactSales',\n description:\n \"Detect if there is buyer intent or the customer is asking about pricing information or Ably's paid plans.\",\n parameters: {\n type: 'object',\n properties: {\n aiAnnotations: {\n type: 'object',\n properties: {\n answerConfidence: {\n anyOf: [\n { type: 'string', const: 'very_confident' },\n { type: 'string', const: 'somewhat_confident' },\n { type: 'string', const: 'not_confident' },\n { type: 'string', const: 'no_sources' },\n ],\n },\n },\n required: ['answerConfidence'],\n },\n },\n required: ['aiAnnotations'],\n },\n },\n renderMessageButtons: ({ args }) => {\n const confidence = args.aiAnnotations.answerConfidence;\n if (confidence === 'very_confident' || confidence === 'somewhat_confident') {\n return [\n {\n label: 'Talk to Sales',\n icon: { builtIn: 'LuUsers' },\n action: {\n type: 'invoke_callback',\n callback: () => {\n window.history.pushState({}, '', '?chat-type=product');\n openHubSpotConversations();\n },\n shouldCloseModal: true,\n },\n },\n ];\n }\n return [];\n },\n },\n];\n\nconst transformSource = (source) => {\n const { url, breadcrumbs } = source;\n if (!url) return source;\n try {\n const { pathname } = new URL(url);\n const urlPatterns = [\n { pattern: '/docs', tabName: 'Docs' },\n { pattern: '/blog', tabName: 'Blog' },\n { pattern: 'faqs.ably.com', tabName: 'FAQs' },\n ];\n\n const matchingPattern = urlPatterns.find(({ pattern }) => pathname.startsWith(pattern) || url.includes(pattern));\n\n if (matchingPattern) {\n const { tabName } = matchingPattern;\n return {\n ...source,\n tabs: [\n [\n tabName,\n {\n breadcrumbs: breadcrumbs[0] === tabName ? breadcrumbs.slice(1) : breadcrumbs,\n },\n ],\n ],\n };\n }\n return source;\n } catch (error) {\n return source;\n }\n};\n\nconst prefilledSearchText = () => {\n const queryParam = new URLSearchParams(window.location.search).get('q');\n\n return queryParam || '';\n};\nconst searchSettings = {\n defaultQuery: prefilledSearchText(),\n tabs: ['All', 'Docs', 'Blog', 'FAQs', 'GitHub'],\n};\nconst theme = {\n styles: [\n {\n key: 'custom-style',\n type: 'style',\n value: `css\n .ikp-ai-chat-message-toolbar {\n flex-wrap: wrap;\n justify-content: flex-end;\n }\n .ikp-ai-chat-message-tool-actions {\n width: 100%;\n }\n .ikp-ai-chat-message-tool-action {\n background: #03020d;\n color: white;\n height: 36px;\n font-size: 15px;\n border: none;\n margin: 0px auto;\n margin-bottom: 8px;\n padding: 12px 24px;\n height: auto;\n gap: 12px;\n }\n .ikp-ai-chat-message-tool-action > .ikp-icon {\n font-size: 18px;\n }\n .ikp-ai-chat-message-tool-action:hover:not([disabled]) {\n background: #2c3344;\n color: white;\n }\n `,\n },\n ],\n};\nconst baseSettings = { ...window.inkeepBaseSettings, transformSource, theme };\nconst config = () => ({\n baseSettings,\n label: 'Ask Ably',\n aiChatSettings: {\n organizationDisplayName: 'Ably',\n aiAssistantAvatar:\n 'https://storage.googleapis.com/organization-image-assets/ably-botAvatarSrcUrl-1744182878600.png',\n getHelpOptions: [\n {\n name: 'Request a meeting',\n action: {\n type: 'open_link',\n url: 'https://meetings.hubspot.com/cameron-michie/ably-demo',\n },\n isPinnedToToolbar: true,\n },\n {\n name: 'Chat with support',\n action: {\n type: 'invoke_callback',\n callback: () => {\n openHubSpotConversations();\n },\n shouldCloseModal: true,\n },\n isPinnedToToolbar: true,\n },\n ],\n exampleQuestions: ['What is a channel?', 'How do I authenticate with Ably?', 'How to manage user status?'],\n shouldShowCopyChatButton: true,\n ...(posthog.isFeatureEnabled('inkeep-intent') ? { getTools } : {}),\n },\n searchSettings,\n});\n\nposthog.onFeatureFlags(() => {\n window.Inkeep.ChatButton({\n ...config(),\n });\n});\n\nlet searchWidget;\nconst handleSearchChange = (isOpen) => {\n searchWidget.update({ modalSettings: { isOpen } });\n};\nconst modalSettings = {\n modalSettings: {\n defaultView: 'SEARCH',\n onOpenChange: handleSearchChange,\n },\n};\nsearchWidget = window.Inkeep.ModalSearchAndChat({ ...config(), ...modalSettings });\nconst searchButton = { element: document.querySelector(\"[data-id='window.Inkeep-search']\"), event: 'click' };\nconst searchInput = { element: document.querySelector(\"[data-id='window.Inkeep-search-input']\"), event: 'focus' };\n\n[searchButton, searchInput].forEach((input) => {\n input.element?.addEventListener(input.event, () => {\n handleSearchChange(true);\n });\n});\n"],"names":["openHubSpotConversations","_a","_b","_c","getTools","args","confidence","transformSource","source","url","breadcrumbs","pathname","matchingPattern","pattern","tabName","prefilledSearchText","searchSettings","theme","baseSettings","config","posthog","searchWidget","handleSearchChange","isOpen","modalSettings","searchButton","searchInput","input"],"mappings":"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"}