@bikdotai/bik-component-library 0.0.866 → 0.0.867
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/dist/cjs/components/agent-builder/AgentBuilder.js +1 -1
- package/dist/cjs/components/agent-builder/AgentBuilder.js.map +1 -1
- package/dist/cjs/components/agent-builder/AgentBuilder.styled.js +151 -29
- package/dist/cjs/components/agent-builder/AgentBuilder.styled.js.map +1 -1
- package/dist/cjs/components/agent-builder/components/ChannelSelectModal.js +2 -0
- package/dist/cjs/components/agent-builder/components/ChannelSelectModal.js.map +1 -0
- package/dist/cjs/components/agent-builder/components/ChannelsSection.js +2 -0
- package/dist/cjs/components/agent-builder/components/ChannelsSection.js.map +1 -0
- package/dist/cjs/components/agent-builder/components/CreateSubAgentPanel.js +5 -5
- package/dist/cjs/components/agent-builder/components/CreateSubAgentPanel.js.map +1 -1
- package/dist/cjs/components/agent-builder/components/GoLiveModal.js +1 -1
- package/dist/cjs/components/agent-builder/components/GoLiveModal.js.map +1 -1
- package/dist/cjs/components/agent-builder/components/MentionEditor.js +2 -2
- package/dist/cjs/components/agent-builder/components/MentionEditor.js.map +1 -1
- package/dist/cjs/components/agent-builder/components/MentionField.js +1 -1
- package/dist/cjs/components/agent-builder/components/MentionField.js.map +1 -1
- package/dist/cjs/components/agent-builder/components/MentionPicker.js +13 -13
- package/dist/cjs/components/agent-builder/components/MentionPicker.js.map +1 -1
- package/dist/cjs/components/agent-builder/components/SelectableListSection.js +3 -3
- package/dist/cjs/components/agent-builder/components/SelectableListSection.js.map +1 -1
- package/dist/cjs/components/agent-builder/constants/channels.js +2 -0
- package/dist/cjs/components/agent-builder/constants/channels.js.map +1 -0
- package/dist/cjs/components/agent-builder/constants/steps.js +1 -1
- package/dist/cjs/components/agent-builder/constants/steps.js.map +1 -1
- package/dist/cjs/components/agent-builder/context/AgentBuilderContext.js +1 -1
- package/dist/cjs/components/agent-builder/context/AgentBuilderContext.js.map +1 -1
- package/dist/cjs/components/agent-builder/steps/Step1About.js +1 -1
- package/dist/cjs/components/agent-builder/steps/Step1About.js.map +1 -1
- package/dist/cjs/components/agent-builder/steps/Step2WhenItStepsIn.js +2 -2
- package/dist/cjs/components/agent-builder/steps/Step2WhenItStepsIn.js.map +1 -1
- package/dist/cjs/components/agent-builder/steps/Step3HowItResponds.js +1 -1
- package/dist/cjs/components/agent-builder/steps/Step3HowItResponds.js.map +1 -1
- package/dist/cjs/components/agent-builder/steps/Step4HandoverRules.js +1 -1
- package/dist/cjs/components/agent-builder/steps/Step4HandoverRules.js.map +1 -1
- package/dist/cjs/components/agent-builder/utils/mentionSerialization.js +2 -2
- package/dist/cjs/components/agent-builder/utils/mentionSerialization.js.map +1 -1
- package/dist/cjs/components/agent-builder/utils/sourceIcons.js +1 -1
- package/dist/cjs/components/agent-builder/utils/sourceIcons.js.map +1 -1
- package/dist/cjs/icons/Social/Channels/ManifestGlass.js +2 -0
- package/dist/cjs/icons/Social/Channels/ManifestGlass.js.map +1 -0
- package/dist/cjs/icons/Social/Channels/ShipStation.js +2 -0
- package/dist/cjs/icons/Social/Channels/ShipStation.js.map +1 -0
- package/dist/cjs/icons/Social/Channels/Skio.js +2 -0
- package/dist/cjs/icons/Social/Channels/Skio.js.map +1 -0
- package/dist/cjs/icons/index.js +1 -1
- package/dist/cjs/index.js +1 -1
- package/dist/esm/components/agent-builder/AgentBuilder.js +103 -97
- package/dist/esm/components/agent-builder/AgentBuilder.js.map +1 -1
- package/dist/esm/components/agent-builder/AgentBuilder.model.d.ts +76 -0
- package/dist/esm/components/agent-builder/AgentBuilder.styled.d.ts +68 -0
- package/dist/esm/components/agent-builder/AgentBuilder.styled.js +224 -59
- package/dist/esm/components/agent-builder/AgentBuilder.styled.js.map +1 -1
- package/dist/esm/components/agent-builder/components/ChannelSelectModal.d.ts +26 -0
- package/dist/esm/components/agent-builder/components/ChannelSelectModal.js +121 -0
- package/dist/esm/components/agent-builder/components/ChannelSelectModal.js.map +1 -0
- package/dist/esm/components/agent-builder/components/ChannelsSection.d.ts +10 -0
- package/dist/esm/components/agent-builder/components/ChannelsSection.js +183 -0
- package/dist/esm/components/agent-builder/components/ChannelsSection.js.map +1 -0
- package/dist/esm/components/agent-builder/components/CreateSubAgentPanel.js +135 -132
- package/dist/esm/components/agent-builder/components/CreateSubAgentPanel.js.map +1 -1
- package/dist/esm/components/agent-builder/components/GoLiveModal.js +12 -12
- package/dist/esm/components/agent-builder/components/GoLiveModal.js.map +1 -1
- package/dist/esm/components/agent-builder/components/MentionEditor.d.ts +2 -0
- package/dist/esm/components/agent-builder/components/MentionEditor.js +47 -45
- package/dist/esm/components/agent-builder/components/MentionEditor.js.map +1 -1
- package/dist/esm/components/agent-builder/components/MentionField.js +52 -51
- package/dist/esm/components/agent-builder/components/MentionField.js.map +1 -1
- package/dist/esm/components/agent-builder/components/MentionPicker.d.ts +5 -0
- package/dist/esm/components/agent-builder/components/MentionPicker.js +134 -132
- package/dist/esm/components/agent-builder/components/MentionPicker.js.map +1 -1
- package/dist/esm/components/agent-builder/components/SelectableListSection.d.ts +2 -0
- package/dist/esm/components/agent-builder/components/SelectableListSection.js +48 -46
- package/dist/esm/components/agent-builder/components/SelectableListSection.js.map +1 -1
- package/dist/esm/components/agent-builder/constants/channels.d.ts +56 -0
- package/dist/esm/components/agent-builder/constants/channels.js +41 -0
- package/dist/esm/components/agent-builder/constants/channels.js.map +1 -0
- package/dist/esm/components/agent-builder/constants/steps.d.ts +31 -1
- package/dist/esm/components/agent-builder/constants/steps.js +15 -6
- package/dist/esm/components/agent-builder/constants/steps.js.map +1 -1
- package/dist/esm/components/agent-builder/context/AgentBuilderContext.d.ts +13 -1
- package/dist/esm/components/agent-builder/context/AgentBuilderContext.js +157 -148
- package/dist/esm/components/agent-builder/context/AgentBuilderContext.js.map +1 -1
- package/dist/esm/components/agent-builder/index.d.ts +5 -2
- package/dist/esm/components/agent-builder/steps/Step1About.js +15 -13
- package/dist/esm/components/agent-builder/steps/Step1About.js.map +1 -1
- package/dist/esm/components/agent-builder/steps/Step2WhenItStepsIn.js +55 -48
- package/dist/esm/components/agent-builder/steps/Step2WhenItStepsIn.js.map +1 -1
- package/dist/esm/components/agent-builder/steps/Step3HowItResponds.js +158 -157
- package/dist/esm/components/agent-builder/steps/Step3HowItResponds.js.map +1 -1
- package/dist/esm/components/agent-builder/steps/Step4HandoverRules.d.ts +11 -0
- package/dist/esm/components/agent-builder/steps/Step4HandoverRules.js +127 -23
- package/dist/esm/components/agent-builder/steps/Step4HandoverRules.js.map +1 -1
- package/dist/esm/components/agent-builder/utils/mentionSerialization.d.ts +10 -3
- package/dist/esm/components/agent-builder/utils/mentionSerialization.js +31 -23
- package/dist/esm/components/agent-builder/utils/mentionSerialization.js.map +1 -1
- package/dist/esm/components/agent-builder/utils/sourceIcons.d.ts +7 -5
- package/dist/esm/components/agent-builder/utils/sourceIcons.js +26 -26
- package/dist/esm/components/agent-builder/utils/sourceIcons.js.map +1 -1
- package/dist/esm/icons/Social/Channels/ManifestGlass.d.ts +6 -0
- package/dist/esm/icons/Social/Channels/ManifestGlass.js +252 -0
- package/dist/esm/icons/Social/Channels/ManifestGlass.js.map +1 -0
- package/dist/esm/icons/Social/Channels/ShipStation.d.ts +6 -0
- package/dist/esm/icons/Social/Channels/ShipStation.js +31 -0
- package/dist/esm/icons/Social/Channels/ShipStation.js.map +1 -0
- package/dist/esm/icons/Social/Channels/Skio.d.ts +6 -0
- package/dist/{cjs/assets/icons/Skio.svg.js → esm/icons/Social/Channels/Skio.js} +31 -2
- package/dist/esm/icons/Social/Channels/Skio.js.map +1 -0
- package/dist/esm/icons/Social/Channels/index.d.ts +3 -0
- package/dist/esm/icons/index.d.ts +25 -25
- package/dist/esm/icons/index.js +330 -324
- package/dist/esm/icons/index.js.map +1 -1
- package/dist/esm/index.js +671 -663
- package/dist/esm/index.js.map +1 -1
- package/package.json +1 -1
- package/dist/cjs/assets/icons/BigCommerce.svg.js +0 -2
- package/dist/cjs/assets/icons/BigCommerce.svg.js.map +0 -1
- package/dist/cjs/assets/icons/Gorgias.svg.js +0 -2
- package/dist/cjs/assets/icons/Gorgias.svg.js.map +0 -1
- package/dist/cjs/assets/icons/ManifestGlass.svg.js +0 -2
- package/dist/cjs/assets/icons/ManifestGlass.svg.js.map +0 -1
- package/dist/cjs/assets/icons/ShipStation.svg.js +0 -2
- package/dist/cjs/assets/icons/ShipStation.svg.js.map +0 -1
- package/dist/cjs/assets/icons/Shopify.svg.js +0 -2
- package/dist/cjs/assets/icons/Shopify.svg.js.map +0 -1
- package/dist/cjs/assets/icons/Skio.svg.js.map +0 -1
- package/dist/esm/assets/icons/BigCommerce.svg.js +0 -6
- package/dist/esm/assets/icons/BigCommerce.svg.js.map +0 -1
- package/dist/esm/assets/icons/Gorgias.svg.js +0 -6
- package/dist/esm/assets/icons/Gorgias.svg.js.map +0 -1
- package/dist/esm/assets/icons/ManifestGlass.svg.js +0 -6
- package/dist/esm/assets/icons/ManifestGlass.svg.js.map +0 -1
- package/dist/esm/assets/icons/ShipStation.svg.js +0 -6
- package/dist/esm/assets/icons/ShipStation.svg.js.map +0 -1
- package/dist/esm/assets/icons/Shopify.svg.js +0 -6
- package/dist/esm/assets/icons/Shopify.svg.js.map +0 -1
- package/dist/esm/assets/icons/Skio.svg.js +0 -6
- package/dist/esm/assets/icons/Skio.svg.js.map +0 -1
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Step3HowItResponds.js","sources":["../../../../../src/components/agent-builder/steps/Step3HowItResponds.tsx"],"sourcesContent":["import { Shield } from '@src/icons';\nimport React, { useCallback, useEffect, useRef, useState } from 'react';\nimport { Dropdown, unwrapDropdownValue } from '@src/components/dropdown';\nimport { SingleOption } from '@src/components/dropdown/type';\nimport { Switch } from '@src/components/switch';\nimport { Tooltip } from '@src/components/tooltips';\nimport {\n\tBodyCaption,\n\tBodySecondary,\n\tTitleSmall,\n} from '@src/components/TypographyStyle';\nimport { COLORS } from '@src/constants/Theme';\nimport {\n\tAgentTool,\n\tAuthentication,\n\tConfigToolConfig,\n\tConfigToolKey,\n\tRestApiToolConfig,\n\tSubAgentDraft,\n\tSubAgentRef,\n} from '../AgentBuilder.model';\nimport {\n\tSectionBodyWrap,\n\tSideSection,\n\tSideSectionHeader,\n\tStep3Divider,\n\tStep3Grid,\n\tStep3Root,\n} from '../AgentBuilder.styled';\nimport { ConfigToolPanel } from '../components/ConfigToolPanel';\nimport { CreateSubAgentPanel } from '../components/CreateSubAgentPanel';\nimport { MentionField } from '../components/MentionField';\nimport { RequireVerificationModal } from '../components/RequireVerificationModal';\nimport { RestApiToolPanel } from '../components/RestApiToolPanel';\nimport {\n\tSelectableItem,\n\tSelectableListSection,\n\tSourceGroup,\n} from '../components/SelectableListSection';\nimport { StepSectionHeader } from '../components/StepSectionHeader';\nimport { STEP_DEFINITIONS } from '../constants/steps';\nimport { CONFIG_TOOL_SOURCES, ToolSource } from '../constants/tools';\nimport { useAgentBuilderContext } from '../context/AgentBuilderContext';\nimport {\n\tappTypeLabel,\n\tbuildAgentMentionItems,\n\tbuildCustomToolMentionItems,\n\tconfigToolMentionItem,\n\tconfigToolName,\n\trestApiMentionItem,\n\trestApiToolName,\n\ttoolSourceLabel,\n} from '../utils/mentionSerialization';\nimport {\n\trenderSourceIcon,\n\tSOURCE_ICONS,\n\tsourceIcon,\n} from '../utils/sourceIcons';\nimport { buildToolActions } from '../utils/toolActions';\n\n/** Source brand glyph for a tool, as a dropdown leadingIcon element. */\nconst toolIconEl = (source: string): JSX.Element | undefined =>\n\trenderSourceIcon(sourceIcon(source)) ?? undefined;\n\n/** Dropdown option for a tool: icon left of the name, no description. */\nconst toolOption = (t: AgentTool): SingleOption => ({\n\tlabel: t.display_name,\n\tvalue: t.tool_id,\n\tleadingIcon: toolIconEl(t.source ?? ToolSource.Manifest),\n});\n\nconst STEP = STEP_DEFINITIONS[2];\n\n/** Customer-verification OTP methods, in the dropdown's display order. */\nconst AUTH_METHOD_OPTIONS: SingleOption[] = [\n\t{ label: 'OTP to phone', value: 'phone_otp' },\n\t{ label: 'OTP to email', value: 'email_otp' },\n];\n\n/** Drawer state — null when closed; `key` remounts it fresh per open. */\ninterface SubAgentPanelState {\n\tkey: number;\n\ttitle: string;\n\teditingId?: string;\n\tinitial?: SubAgentDraft;\n}\n\n/**\n * Config-tool drawer state; `key` remounts fresh. `restapi` is the bespoke Rest\n * API panel; `config` is the shared dynamic panel (email / Slack), tagged with\n * its `toolKey`.\n */\ninterface ToolDrawerState {\n\tkey: number;\n\tkind: 'restapi' | 'config';\n\ttoolKey?: ConfigToolKey;\n\tinitialRest?: RestApiToolConfig;\n\tinitialConfig?: ConfigToolConfig;\n}\n\n/** Upsert an item by id (replace when present, append otherwise). */\nconst upsertById = <T extends { id: string }>(\n\tlist: T[] | undefined,\n\titem: T,\n): T[] => {\n\tconst arr = list ?? [];\n\treturn arr.some((x) => x.id === item.id)\n\t\t? arr.map((x) => (x.id === item.id ? item : x))\n\t\t: [...arr, item];\n};\n\nexport const Step3HowItResponds: React.FC = () => {\n\tconst {\n\t\tvalue,\n\t\tpatch,\n\t\tupdateField,\n\t\taddReference,\n\t\tremoveReference,\n\t\tavailableTools,\n\t\tavailableSubAgents,\n\t\tavailableModels,\n\t\tconfigToolTemplates,\n\t\tapplicationType,\n\t\tcharLimits,\n\t\tinsertMention,\n\t\tonCreateSubAgent,\n\t\tonFetchSubAgent,\n\t\tonUpdateSubAgent,\n\t\tonImproveSubAgent,\n\t\tonImproveToolInstructions,\n\t\tregisterSubAgentCreator,\n\t\tregisterToolActionHandler,\n\t\tintegrationStatus,\n\t\tonConnectIntegration,\n\t\tvariablesData,\n\t} = useAgentBuilderContext();\n\n\tconst [panel, setPanel] = useState<SubAgentPanelState | null>(null);\n\tconst panelKeyRef = useRef(0);\n\n\t// Rest API (bespoke) + shared config-tool drawers (separate from the sub-agent one).\n\tconst [toolDrawer, setToolDrawer] = useState<ToolDrawerState | null>(null);\n\tconst toolDrawerKeyRef = useRef(0);\n\tconst openRestApi = useCallback((initial?: RestApiToolConfig) => {\n\t\ttoolDrawerKeyRef.current += 1;\n\t\tsetToolDrawer({\n\t\t\tkey: toolDrawerKeyRef.current,\n\t\t\tkind: 'restapi',\n\t\t\tinitialRest: initial,\n\t\t});\n\t}, []);\n\tconst openConfigTool = useCallback(\n\t\t(toolKey: ConfigToolKey, initial?: ConfigToolConfig) => {\n\t\t\ttoolDrawerKeyRef.current += 1;\n\t\t\tsetToolDrawer({\n\t\t\t\tkey: toolDrawerKeyRef.current,\n\t\t\t\tkind: 'config',\n\t\t\t\ttoolKey,\n\t\t\t\tinitialConfig: initial,\n\t\t\t});\n\t\t},\n\t\t[],\n\t);\n\tconst handleSaveRestApi = useCallback(\n\t\t(config: RestApiToolConfig) => {\n\t\t\tconst isNew = !(value.restApiTools ?? []).some((t) => t.id === config.id);\n\t\t\tpatch({ restApiTools: upsertById(value.restApiTools, config) });\n\t\t\t// Drop a reference chip at the cursor on creation (edits keep the chip).\n\t\t\t// Pass the source so the fresh chip gets its icon (it isn't in the\n\t\t\t// editor's mention list yet).\n\t\t\tif (isNew) {\n\t\t\t\tinsertMention(\n\t\t\t\t\t'tool',\n\t\t\t\t\tconfig.id,\n\t\t\t\t\trestApiMentionItem(config).label,\n\t\t\t\t\tToolSource.RestApi,\n\t\t\t\t);\n\t\t\t}\n\t\t\tsetToolDrawer(null);\n\t\t},\n\t\t[patch, value.restApiTools, insertMention],\n\t);\n\tconst handleSaveConfigTool = useCallback(\n\t\t(config: ConfigToolConfig) => {\n\t\t\tconst isNew = !(value.configTools ?? []).some((t) => t.id === config.id);\n\t\t\tpatch({ configTools: upsertById(value.configTools, config) });\n\t\t\tif (isNew) {\n\t\t\t\tconst source =\n\t\t\t\t\tconfig.tool_key === 'send_slack_message'\n\t\t\t\t\t\t? ToolSource.Slack\n\t\t\t\t\t\t: ToolSource.EmailHandover;\n\t\t\t\tinsertMention(\n\t\t\t\t\t'tool',\n\t\t\t\t\tconfig.id,\n\t\t\t\t\tconfigToolMentionItem(config).label,\n\t\t\t\t\tsource,\n\t\t\t\t);\n\t\t\t}\n\t\t\tsetToolDrawer(null);\n\t\t},\n\t\t[patch, value.configTools, insertMention],\n\t);\n\n\t// Open a tool action's drawer by picker source (restapi / email / slack).\n\tconst openToolAction = useCallback(\n\t\t(source: ToolSource) => {\n\t\t\tconst toolKey = CONFIG_TOOL_SOURCES[source];\n\t\t\tif (toolKey) {\n\t\t\t\topenConfigTool(toolKey);\n\t\t\t} else {\n\t\t\t\topenRestApi();\n\t\t\t}\n\t\t},\n\t\t[openConfigTool, openRestApi],\n\t);\n\t// Let the `@` reference picker (Instructions / Guardrails) open these drawers.\n\tuseEffect(() => {\n\t\tregisterToolActionHandler(openToolAction);\n\t\treturn () => registerToolActionHandler(null);\n\t}, [registerToolActionHandler, openToolAction]);\n\t// Sub-agents created / edited in this session, so a chip resolves (and reflects\n\t// a renamed sub-agent) before the consumer refreshes `availableSubAgents`.\n\tconst [createdSubAgents, setCreatedSubAgents] = useState<SubAgentRef[]>([]);\n\t// Ids of sub-agents saved this session that use an auth_required tool — they\n\t// make customer verification mandatory on the parent, just like a direct\n\t// auth_required tool. (A persisted sub-agent's tools aren't hydrated into\n\t// `value`, so it only joins this set once opened/edited in the panel.)\n\tconst [authRequiringSubAgents, setAuthRequiringSubAgents] = useState<\n\t\tSet<string>\n\t>(() => new Set());\n\t// Created/edited refs take precedence over the consumer-supplied list.\n\tconst subAgentById = new Map<string, SubAgentRef>();\n\tavailableSubAgents.forEach((s) => subAgentById.set(s.id, s));\n\tcreatedSubAgents.forEach((s) => subAgentById.set(s.id, s));\n\tconst knownSubAgents = Array.from(subAgentById.values());\n\n\tconst openCreate = useCallback(() => {\n\t\tpanelKeyRef.current += 1;\n\t\tsetPanel({ key: panelKeyRef.current, title: 'Create sub-agent' });\n\t}, []);\n\n\t// Let the `@` picker's \"Create new\" row open this step's drawer.\n\tuseEffect(() => {\n\t\tif (!onCreateSubAgent) {\n\t\t\treturn;\n\t\t}\n\t\tregisterSubAgentCreator(openCreate);\n\t\treturn () => registerSubAgentCreator(null);\n\t}, [registerSubAgentCreator, openCreate, onCreateSubAgent]);\n\n\tconst openConfigure = useCallback(\n\t\tasync (id: string) => {\n\t\t\tif (!onFetchSubAgent) {\n\t\t\t\treturn;\n\t\t\t}\n\t\t\tconst data = await onFetchSubAgent(id);\n\t\t\tpanelKeyRef.current += 1;\n\t\t\tsetPanel({\n\t\t\t\tkey: panelKeyRef.current,\n\t\t\t\ttitle: 'Edit sub-agent',\n\t\t\t\teditingId: id,\n\t\t\t\tinitial: data,\n\t\t\t});\n\t\t},\n\t\t[onFetchSubAgent],\n\t);\n\n\t// ── Customer verification (auth) ──────────────────────────────────────────\n\t// Order tools (auth_required) can't run unless the customer is verified first,\n\t// so verification is MANDATORY whenever such a tool is attached (directly or\n\t// via a sub-agent). Derived before the handlers that read it.\n\tconst hasDirectAuthTool = value.tools.some(\n\t\t(id) => availableTools.find((t) => t.tool_id === id)?.auth_required,\n\t);\n\tconst hasAuthRequiredSubAgent = value.subagents.some((id) =>\n\t\tauthRequiringSubAgents.has(id),\n\t);\n\tconst hasAuthRequiredTool = hasDirectAuthTool || hasAuthRequiredSubAgent;\n\tconst authEnabled = value.authentication?.enabled ?? false;\n\tconst authType: Authentication['type'] =\n\t\tvalue.authentication?.type ?? 'email_otp';\n\n\tconst handlePanelSave = useCallback(\n\t\tasync (draft: SubAgentDraft) => {\n\t\t\tlet savedId: string | undefined;\n\t\t\tif (panel?.editingId) {\n\t\t\t\tif (onUpdateSubAgent) {\n\t\t\t\t\tconst ref = await onUpdateSubAgent(panel.editingId, draft);\n\t\t\t\t\tsavedId = ref.id;\n\t\t\t\t\tsetCreatedSubAgents((prev) => [\n\t\t\t\t\t\t...prev.filter((s) => s.id !== ref.id),\n\t\t\t\t\t\tref,\n\t\t\t\t\t]);\n\t\t\t\t}\n\t\t\t} else if (onCreateSubAgent) {\n\t\t\t\tconst ref = await onCreateSubAgent(draft);\n\t\t\t\tsavedId = ref.id;\n\t\t\t\tsetCreatedSubAgents((prev) => [...prev, ref]);\n\t\t\t\tpatch({ subagents: [...value.subagents, ref.id] });\n\t\t\t\tinsertMention('subagent', ref.id, `sub-agent: ${ref.name}`);\n\t\t\t}\n\t\t\t// A sub-agent that uses an auth_required tool forces customer\n\t\t\t// verification on the parent agent — the tool can't run otherwise. Record\n\t\t\t// it so verification stays mandatory (the reconcile effect turns it on and\n\t\t\t// the toggle locks), mirroring the direct-tool invariant.\n\t\t\tif (savedId) {\n\t\t\t\tconst targetId = savedId;\n\t\t\t\tconst subUsesAuthTool = draft.tools.some(\n\t\t\t\t\t(id) => availableTools.find((t) => t.tool_id === id)?.auth_required,\n\t\t\t\t);\n\t\t\t\tsetAuthRequiringSubAgents((prev) => {\n\t\t\t\t\tconst next = new Set(prev);\n\t\t\t\t\tif (subUsesAuthTool) {\n\t\t\t\t\t\tnext.add(targetId);\n\t\t\t\t\t} else {\n\t\t\t\t\t\tnext.delete(targetId);\n\t\t\t\t\t}\n\t\t\t\t\treturn next;\n\t\t\t\t});\n\t\t\t}\n\t\t\tsetPanel(null);\n\t\t},\n\t\t[\n\t\t\tpanel,\n\t\t\tonUpdateSubAgent,\n\t\t\tonCreateSubAgent,\n\t\t\tpatch,\n\t\t\tvalue.subagents,\n\t\t\tinsertMention,\n\t\t\tavailableTools,\n\t\t],\n\t);\n\n\t// Reconcile the invariant: a loaded agent that already holds an auth_required\n\t// tool must have verification on (a fail-closed tool otherwise runs silently).\n\tuseEffect(() => {\n\t\tif (hasAuthRequiredTool && !authEnabled) {\n\t\t\tpatch({ authentication: { enabled: true, type: authType } });\n\t\t}\n\t}, [hasAuthRequiredTool, authEnabled, authType, patch]);\n\n\t// A tool add awaiting the mandatory-verification confirm (null = no prompt).\n\tconst [pendingAuthTool, setPendingAuthTool] = useState<string | null>(null);\n\tconst addTool = useCallback(\n\t\t(id: string) => {\n\t\t\t// Always drop a chip at the cursor; addReference dedupes and reads the\n\t\t\t// latest value.\n\t\t\tinsertMention('tool', id);\n\t\t\taddReference('tool', id);\n\t\t},\n\t\t[insertMention, addReference],\n\t);\n\t// Adding an auth_required tool while verification is off prompts first; confirm\n\t// turns verification on and adds, cancel skips the add.\n\tconst handleAddTool = useCallback(\n\t\t(id: string) => {\n\t\t\tconst tool = availableTools.find((t) => t.tool_id === id);\n\t\t\tif (tool?.auth_required && !authEnabled) {\n\t\t\t\tsetPendingAuthTool(id);\n\t\t\t\treturn;\n\t\t\t}\n\t\t\taddTool(id);\n\t\t},\n\t\t[availableTools, authEnabled, addTool],\n\t);\n\n\tconst toolItems: SelectableItem[] = value.tools\n\t\t.map((id): SelectableItem | null => {\n\t\t\tconst tool = availableTools.find((t) => t.tool_id === id);\n\t\t\treturn tool\n\t\t\t\t? {\n\t\t\t\t\t\tid,\n\t\t\t\t\t\tlabel: tool.display_name,\n\t\t\t\t\t\ticon: sourceIcon(tool.source ?? ToolSource.Manifest),\n\t\t\t\t\t\tauthRequired: tool.auth_required,\n\t\t\t\t }\n\t\t\t\t: null;\n\t\t})\n\t\t.filter((x): x is SelectableItem => x !== null);\n\n\t// Inline-configured tools (Rest API + the shared email / Slack tools) live on\n\t// the value, not in `tools`. They render as rows in the same Tools list, each\n\t// with its own Configure (edit) action that reopens its drawer.\n\tconst restApiItems: SelectableItem[] = (value.restApiTools ?? []).map(\n\t\t(t) => ({\n\t\t\tid: t.id,\n\t\t\tlabel: restApiToolName(t),\n\t\t\ticon: SOURCE_ICONS[ToolSource.RestApi],\n\t\t\tonConfigure: () => openRestApi(t),\n\t\t}),\n\t);\n\tconst configToolItems: SelectableItem[] = (value.configTools ?? []).map(\n\t\t(t) => ({\n\t\t\tid: t.id,\n\t\t\tlabel: configToolName(t),\n\t\t\ticon: SOURCE_ICONS[\n\t\t\t\tt.tool_key === 'send_slack_message'\n\t\t\t\t\t? ToolSource.Slack\n\t\t\t\t\t: ToolSource.EmailHandover\n\t\t\t],\n\t\t\tonConfigure: () => openConfigTool(t.tool_key, t),\n\t\t}),\n\t);\n\tconst allToolItems: SelectableItem[] = [\n\t\t...toolItems,\n\t\t...restApiItems,\n\t\t...configToolItems,\n\t];\n\n\t// Built-in tools that open a config drawer instead of inserting a mention.\n\t// Shown as empty-state buttons AND in the `@` picker's Tools view. The shared\n\t// email / Slack forms are backend-driven, so each is offered only when its\n\t// template was provided.\n\tconst toolActionSources = buildToolActions(\n\t\tconfigToolTemplates,\n\t\topenToolAction,\n\t\tintegrationStatus,\n\t\tonConnectIntegration,\n\t);\n\n\t// All tools are offered (even already-added ones) so a tool can be referenced\n\t// again in the text; the chip list below still shows each only once.\n\tconst toolOptions: SingleOption[] = availableTools.map(toolOption);\n\n\t// Group tools by source (Manifest / Shopify / …) for the empty-state buttons.\n\tconst toolSourceGroups: SourceGroup[] = (() => {\n\t\tconst order: string[] = [];\n\t\tconst bySource = new Map<string, SingleOption[]>();\n\t\tavailableTools.forEach((t) => {\n\t\t\tconst src = t.source ?? ToolSource.Manifest;\n\t\t\tif (!bySource.has(src)) {\n\t\t\t\tbySource.set(src, []);\n\t\t\t\torder.push(src);\n\t\t\t}\n\t\t\tbySource.get(src)?.push(toolOption(t));\n\t\t});\n\t\treturn order.map((src) => ({\n\t\t\tsource: src,\n\t\t\tlabel: toolSourceLabel(src),\n\t\t\toptions: bySource.get(src) ?? [],\n\t\t\t// Not connected → the source button opens the connect flow instead of\n\t\t\t// its tool list (see SelectableListSection / onConnectIntegration).\n\t\t\tconnected: integrationStatus?.[src as ToolSource],\n\t\t\tonConnect: () => onConnectIntegration?.(src as ToolSource),\n\t\t}));\n\t})();\n\n\tconst subAgentItems: SelectableItem[] = value.subagents\n\t\t.map((id): SelectableItem | null => {\n\t\t\tconst sub = subAgentById.get(id);\n\t\t\treturn sub ? { id, label: sub.name } : null;\n\t\t})\n\t\t.filter((x): x is SelectableItem => x !== null);\n\n\tconst subAgentOptions: SingleOption[] = knownSubAgents.map((s) => ({\n\t\tlabel: s.name,\n\t\tvalue: s.id,\n\t}));\n\n\t// Per-section `@`-picker items so the header \"+\" opens the same reference\n\t// picker as the Instructions editor, drilled straight into this section's\n\t// category (tools OR sub-agents).\n\tconst appLabel = appTypeLabel(applicationType);\n\tconst toolMentionItems = [\n\t\t...buildAgentMentionItems(availableTools, [], appLabel),\n\t\t...buildCustomToolMentionItems(value.configTools, value.restApiTools),\n\t];\n\tconst subAgentMentionItems = buildAgentMentionItems(\n\t\t[],\n\t\tknownSubAgents,\n\t\tappLabel,\n\t);\n\n\tconst modelOptions: SingleOption[] = availableModels.map((m) => ({\n\t\tlabel: m.label,\n\t\tvalue: m.value,\n\t\tselected: m.value === value.model,\n\t}));\n\tconst selectedModel = availableModels.find((m) => m.value === value.model);\n\n\t// The template for the open shared-drawer tool (undefined unless a config\n\t// drawer is open and its template was provided).\n\tconst openConfigTemplate =\n\t\ttoolDrawer?.kind === 'config' && toolDrawer.toolKey\n\t\t\t? configToolTemplates?.[toolDrawer.toolKey]\n\t\t\t: undefined;\n\n\tconst verificationToggle = (\n\t\t<Switch\n\t\t\tdata-test=\"agent-auth-toggle\"\n\t\t\tvalue={authEnabled || hasAuthRequiredTool}\n\t\t\t// Mandatory (can't turn off) while an auth_required tool is attached.\n\t\t\tdisabled={hasAuthRequiredTool}\n\t\t\tonValueChange={async (enabled) => {\n\t\t\t\tpatch({ authentication: { enabled, type: authType } });\n\t\t\t}}\n\t\t/>\n\t);\n\t// While locked, a tooltip explains why the toggle can't be changed.\n\tconst verificationToggleNode = hasAuthRequiredTool ? (\n\t\t<Tooltip\n\t\t\tbody=\"Remove tools that requires customer verification to change this setting.\"\n\t\t\tplacement=\"bottom\"\n\t\t>\n\t\t\t<span style={{ display: 'flex' }}>{verificationToggle}</span>\n\t\t</Tooltip>\n\t) : (\n\t\tverificationToggle\n\t);\n\n\treturn (\n\t\t<Step3Root>\n\t\t\t<StepSectionHeader title={STEP.title} helper={STEP.helper} />\n\n\t\t\t<Step3Grid $grow>\n\t\t\t\t<SectionBodyWrap>\n\t\t\t\t\t<MentionField\n\t\t\t\t\t\tfieldKey=\"instructions\"\n\t\t\t\t\t\tdata-test=\"agent-instructions\"\n\t\t\t\t\t\tlabel=\"Instructions\"\n\t\t\t\t\t\tmaxLength={charLimits.instructions}\n\t\t\t\t\t\tplaceholder=\"Write the steps in plain English. The agent will follow them exactly. The more specific you are, the better it performs.\"\n\t\t\t\t\t\tminHeight=\"200px\"\n\t\t\t\t\t/>\n\n\t\t\t\t\t<MentionField\n\t\t\t\t\t\tfieldKey=\"guardrail\"\n\t\t\t\t\t\tdata-test=\"agent-guardrail\"\n\t\t\t\t\t\tlabel=\"Guardrails\"\n\t\t\t\t\t\tmaxLength={charLimits.guardrail}\n\t\t\t\t\t\tplaceholder=\"e.g. Never discuss competitor pricing. Always stay within the cancellation policy. Do not process refunds above ₹10,000 without human approval.\"\n\t\t\t\t\t\tminHeight=\"140px\"\n\t\t\t\t\t/>\n\t\t\t\t</SectionBodyWrap>\n\n\t\t\t\t<Step3Divider />\n\n\t\t\t\t<SectionBodyWrap>\n\t\t\t\t\t<SelectableListSection\n\t\t\t\t\t\ttitle=\"Tools\"\n\t\t\t\t\t\thelper=\"Actions this agent can take while responding.\"\n\t\t\t\t\t\tdataTestPrefix=\"agent-tools\"\n\t\t\t\t\t\titems={allToolItems}\n\t\t\t\t\t\taddableOptions={toolOptions}\n\t\t\t\t\t\tsourceGroups={toolSourceGroups}\n\t\t\t\t\t\tmentionItems={toolMentionItems}\n\t\t\t\t\t\tactionSources={toolActionSources}\n\t\t\t\t\t\temptyText=\"No tools added yet.\"\n\t\t\t\t\t\tonAdd={handleAddTool}\n\t\t\t\t\t\t// Strips the tool's tokens AND drops it from whichever list holds it\n\t\t\t\t\t\t// (catalog `tools` or an inline custom-tool list).\n\t\t\t\t\t\tonRemove={(id) => removeReference('tool', id)}\n\t\t\t\t\t\tconfirmDelete={{ noun: 'tool' }}\n\t\t\t\t\t/>\n\n\t\t\t\t\t<SelectableListSection\n\t\t\t\t\t\ttitle=\"Sub-agents\"\n\t\t\t\t\t\thelper=\"Other agents this agent can hand off the conversation to.\"\n\t\t\t\t\t\tdataTestPrefix=\"agent-subagents\"\n\t\t\t\t\t\titems={subAgentItems}\n\t\t\t\t\t\taddableOptions={subAgentOptions}\n\t\t\t\t\t\tmentionItems={subAgentMentionItems}\n\t\t\t\t\t\temptyText=\"No sub-agents added yet.\"\n\t\t\t\t\t\tonAdd={(id) => {\n\t\t\t\t\t\t\tinsertMention('subagent', id);\n\t\t\t\t\t\t\taddReference('subagent', id);\n\t\t\t\t\t\t}}\n\t\t\t\t\t\tonRemove={(id) => removeReference('subagent', id)}\n\t\t\t\t\t\tconfirmDelete={{ noun: 'sub-agent' }}\n\t\t\t\t\t\tonConfigure={onFetchSubAgent ? openConfigure : undefined}\n\t\t\t\t\t\tcreateOption={\n\t\t\t\t\t\t\tonCreateSubAgent\n\t\t\t\t\t\t\t\t? { label: 'Create new', onSelect: openCreate }\n\t\t\t\t\t\t\t\t: undefined\n\t\t\t\t\t\t}\n\t\t\t\t\t/>\n\n\t\t\t\t\t<SideSection>\n\t\t\t\t\t\t<SideSectionHeader>\n\t\t\t\t\t\t\t<div style={{ display: 'flex', alignItems: 'center', gap: 8 }}>\n\t\t\t\t\t\t\t\t<Shield size={20} />\n\t\t\t\t\t\t\t\t<TitleSmall color={COLORS.content.primary}>\n\t\t\t\t\t\t\t\t\tRequire customer verification\n\t\t\t\t\t\t\t\t</TitleSmall>\n\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t\t{verificationToggleNode}\n\t\t\t\t\t\t</SideSectionHeader>\n\t\t\t\t\t\t<BodyCaption color={COLORS.content.secondary}>\n\t\t\t\t\t\t\t{hasAuthRequiredTool\n\t\t\t\t\t\t\t\t? 'Required — this agent uses a tool that accesses customer order details.'\n\t\t\t\t\t\t\t\t: 'Customers must verify their identity before this agent responds.'}\n\t\t\t\t\t\t</BodyCaption>\n\t\t\t\t\t\t{(authEnabled || hasAuthRequiredTool) && (\n\t\t\t\t\t\t\t<>\n\t\t\t\t\t\t\t\t<BodySecondary color={COLORS.content.primary}>\n\t\t\t\t\t\t\t\t\tSelect verification method\n\t\t\t\t\t\t\t\t</BodySecondary>\n\t\t\t\t\t\t\t\t<Dropdown\n\t\t\t\t\t\t\t\t\tdata-test=\"agent-auth-method\"\n\t\t\t\t\t\t\t\t\tsize=\"small\"\n\t\t\t\t\t\t\t\t\twidth=\"100%\"\n\t\t\t\t\t\t\t\t\t// Popover is portalled, so \"100%\" collapses to content width —\n\t\t\t\t\t\t\t\t\t// match the input: 360px side column − 2×16px padding.\n\t\t\t\t\t\t\t\t\tdropdownWidth=\"328px\"\n\t\t\t\t\t\t\t\t\tplaceHolder=\"Select verification method\"\n\t\t\t\t\t\t\t\t\t// Flag the active method so the open list highlights that row\n\t\t\t\t\t\t\t\t\t// green (list-item 'selected' theme handles the styling).\n\t\t\t\t\t\t\t\t\toptions={AUTH_METHOD_OPTIONS.map((o) => ({\n\t\t\t\t\t\t\t\t\t\t...o,\n\t\t\t\t\t\t\t\t\t\tselected: o.value === authType,\n\t\t\t\t\t\t\t\t\t}))}\n\t\t\t\t\t\t\t\t\tdefaultOptions={[\n\t\t\t\t\t\t\t\t\t\tAUTH_METHOD_OPTIONS.find((o) => o.value === authType) ??\n\t\t\t\t\t\t\t\t\t\t\tAUTH_METHOD_OPTIONS[0],\n\t\t\t\t\t\t\t\t\t]}\n\t\t\t\t\t\t\t\t\tonSelect={(opt) => {\n\t\t\t\t\t\t\t\t\t\tconst v = unwrapDropdownValue(opt);\n\t\t\t\t\t\t\t\t\t\tif (v) {\n\t\t\t\t\t\t\t\t\t\t\tpatch({\n\t\t\t\t\t\t\t\t\t\t\t\tauthentication: {\n\t\t\t\t\t\t\t\t\t\t\t\t\tenabled: true,\n\t\t\t\t\t\t\t\t\t\t\t\t\ttype: v as Authentication['type'],\n\t\t\t\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\t\t\t});\n\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t}}\n\t\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t\t</>\n\t\t\t\t\t\t)}\n\t\t\t\t\t</SideSection>\n\n\t\t\t\t\t{availableModels.length > 0 && (\n\t\t\t\t\t\t<SideSection>\n\t\t\t\t\t\t\t<TitleSmall color={COLORS.content.primary}>\n\t\t\t\t\t\t\t\tAdvanced settings\n\t\t\t\t\t\t\t</TitleSmall>\n\t\t\t\t\t\t\t<BodySecondary color={COLORS.content.primary}>\n\t\t\t\t\t\t\t\tSelect AI model\n\t\t\t\t\t\t\t</BodySecondary>\n\t\t\t\t\t\t\t<Dropdown\n\t\t\t\t\t\t\t\tdata-test=\"agent-model\"\n\t\t\t\t\t\t\t\tsize=\"small\"\n\t\t\t\t\t\t\t\twidth=\"100%\"\n\t\t\t\t\t\t\t\t// Popover is portalled, so \"100%\" collapses to content width —\n\t\t\t\t\t\t\t\t// match the input: 360px side column − 2×16px SectionBodyWrap\n\t\t\t\t\t\t\t\t// padding.\n\t\t\t\t\t\t\t\tdropdownWidth=\"328px\"\n\t\t\t\t\t\t\t\tplaceHolder=\"Select model\"\n\t\t\t\t\t\t\t\toptions={modelOptions}\n\t\t\t\t\t\t\t\tdefaultOptions={\n\t\t\t\t\t\t\t\t\tselectedModel\n\t\t\t\t\t\t\t\t\t\t? [\n\t\t\t\t\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\t\t\t\t\tlabel: selectedModel.label,\n\t\t\t\t\t\t\t\t\t\t\t\t\tvalue: selectedModel.value,\n\t\t\t\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\t\t ]\n\t\t\t\t\t\t\t\t\t\t: undefined\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\tonSelect={(opt) => {\n\t\t\t\t\t\t\t\t\tconst v = unwrapDropdownValue(opt);\n\t\t\t\t\t\t\t\t\tif (v) {\n\t\t\t\t\t\t\t\t\t\tupdateField('model', v);\n\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t}}\n\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t</SideSection>\n\t\t\t\t\t)}\n\t\t\t\t</SectionBodyWrap>\n\t\t\t</Step3Grid>\n\n\t\t\t{panel && (\n\t\t\t\t<CreateSubAgentPanel\n\t\t\t\t\tkey={panel.key}\n\t\t\t\t\ttitle={panel.title}\n\t\t\t\t\tinitial={panel.initial}\n\t\t\t\t\t// Block reusing another sub-agent's name (exclude the one being edited).\n\t\t\t\t\texistingNames={value.subagents\n\t\t\t\t\t\t.filter((id) => id !== panel.editingId)\n\t\t\t\t\t\t.map((id) => subAgentById.get(id)?.name)\n\t\t\t\t\t\t.filter((n): n is string => !!n)}\n\t\t\t\t\tavailableTools={availableTools}\n\t\t\t\t\tconfigToolTemplates={configToolTemplates}\n\t\t\t\t\tvariablesData={variablesData}\n\t\t\t\t\tintegrationStatus={integrationStatus}\n\t\t\t\t\tonConnectIntegration={onConnectIntegration}\n\t\t\t\t\tappLabel={appTypeLabel(applicationType)}\n\t\t\t\t\tcharLimits={charLimits}\n\t\t\t\t\tonImprove={onImproveSubAgent}\n\t\t\t\t\tonImproveToolInstructions={onImproveToolInstructions}\n\t\t\t\t\tonClose={() => setPanel(null)}\n\t\t\t\t\tonSave={handlePanelSave}\n\t\t\t\t/>\n\t\t\t)}\n\n\t\t\t{toolDrawer?.kind === 'restapi' && (\n\t\t\t\t<RestApiToolPanel\n\t\t\t\t\tkey={toolDrawer.key}\n\t\t\t\t\tinitial={toolDrawer.initialRest}\n\t\t\t\t\tcharLimits={charLimits}\n\t\t\t\t\tvariablesData={variablesData}\n\t\t\t\t\t// Block reusing another tool's name (exclude the one being edited).\n\t\t\t\t\texistingNames={(value.restApiTools ?? [])\n\t\t\t\t\t\t.filter((t) => t.id !== toolDrawer.initialRest?.id)\n\t\t\t\t\t\t.map((t) => t.name)}\n\t\t\t\t\tonImprove={onImproveToolInstructions}\n\t\t\t\t\tonClose={() => setToolDrawer(null)}\n\t\t\t\t\tonSave={handleSaveRestApi}\n\t\t\t\t/>\n\t\t\t)}\n\n\t\t\t{toolDrawer?.kind === 'config' &&\n\t\t\t\ttoolDrawer.toolKey &&\n\t\t\t\topenConfigTemplate && (\n\t\t\t\t\t<ConfigToolPanel\n\t\t\t\t\t\tkey={toolDrawer.key}\n\t\t\t\t\t\ttoolKey={toolDrawer.toolKey}\n\t\t\t\t\t\ttemplate={openConfigTemplate}\n\t\t\t\t\t\tinitial={toolDrawer.initialConfig}\n\t\t\t\t\t\tcharLimits={charLimits}\n\t\t\t\t\t\tvariablesData={variablesData}\n\t\t\t\t\t\tonImprove={onImproveToolInstructions}\n\t\t\t\t\t\tonClose={() => setToolDrawer(null)}\n\t\t\t\t\t\tonSave={handleSaveConfigTool}\n\t\t\t\t\t/>\n\t\t\t\t)}\n\n\t\t\t<RequireVerificationModal\n\t\t\t\topen={pendingAuthTool !== null}\n\t\t\t\ttoolLabel={\n\t\t\t\t\tavailableTools.find((t) => t.tool_id === pendingAuthTool)\n\t\t\t\t\t\t?.display_name ?? 'This tool'\n\t\t\t\t}\n\t\t\t\tonCancel={() => setPendingAuthTool(null)}\n\t\t\t\tonConfirm={() => {\n\t\t\t\t\tpatch({ authentication: { enabled: true, type: authType } });\n\t\t\t\t\tif (pendingAuthTool) {\n\t\t\t\t\t\taddTool(pendingAuthTool);\n\t\t\t\t\t}\n\t\t\t\t\tsetPendingAuthTool(null);\n\t\t\t\t}}\n\t\t\t/>\n\t\t</Step3Root>\n\t);\n};\n"],"names":["toolIconEl","source","renderSourceIcon","sourceIcon","toolOption","t","ToolSource","STEP","STEP_DEFINITIONS","AUTH_METHOD_OPTIONS","upsertById","list","item","arr","x","Step3HowItResponds","value","patch","updateField","addReference","removeReference","availableTools","availableSubAgents","availableModels","configToolTemplates","applicationType","charLimits","insertMention","onCreateSubAgent","onFetchSubAgent","onUpdateSubAgent","onImproveSubAgent","onImproveToolInstructions","registerSubAgentCreator","registerToolActionHandler","integrationStatus","onConnectIntegration","variablesData","useAgentBuilderContext","panel","setPanel","useState","panelKeyRef","useRef","toolDrawer","setToolDrawer","toolDrawerKeyRef","openRestApi","useCallback","initial","openConfigTool","toolKey","handleSaveRestApi","config","isNew","restApiMentionItem","handleSaveConfigTool","configToolMentionItem","openToolAction","CONFIG_TOOL_SOURCES","useEffect","createdSubAgents","setCreatedSubAgents","authRequiringSubAgents","setAuthRequiringSubAgents","subAgentById","s","knownSubAgents","openCreate","openConfigure","id","data","hasDirectAuthTool","hasAuthRequiredSubAgent","hasAuthRequiredTool","authEnabled","authType","handlePanelSave","draft","savedId","ref","prev","targetId","subUsesAuthTool","next","pendingAuthTool","setPendingAuthTool","addTool","handleAddTool","toolItems","tool","restApiItems","restApiToolName","SOURCE_ICONS","configToolItems","configToolName","allToolItems","toolActionSources","buildToolActions","toolOptions","toolSourceGroups","order","bySource","src","toolSourceLabel","subAgentItems","sub","subAgentOptions","appLabel","appTypeLabel","toolMentionItems","buildAgentMentionItems","buildCustomToolMentionItems","subAgentMentionItems","modelOptions","m","selectedModel","openConfigTemplate","verificationToggle","jsx","Switch","enabled","verificationToggleNode","Tooltip","Step3Root","StepSectionHeader","jsxs","Step3Grid","SectionBodyWrap","MentionField","Step3Divider","SelectableListSection","SideSection","SideSectionHeader","Shield","TitleSmall","COLORS","BodyCaption","Fragment","BodySecondary","Dropdown","o","opt","v","unwrapDropdownValue","CreateSubAgentPanel","n","RestApiToolPanel","ConfigToolPanel","RequireVerificationModal"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"Step3HowItResponds.js","sources":["../../../../../src/components/agent-builder/steps/Step3HowItResponds.tsx"],"sourcesContent":["import { Shield } from '@src/icons';\nimport React, { useCallback, useEffect, useRef, useState } from 'react';\nimport { Dropdown, unwrapDropdownValue } from '@src/components/dropdown';\nimport { SingleOption } from '@src/components/dropdown/type';\nimport { Switch } from '@src/components/switch';\nimport { Tooltip } from '@src/components/tooltips';\nimport {\n\tBodyCaption,\n\tBodySecondary,\n\tTitleSmall,\n} from '@src/components/TypographyStyle';\nimport { COLORS } from '@src/constants/Theme';\nimport {\n\tAgentTool,\n\tAuthentication,\n\tConfigToolConfig,\n\tConfigToolKey,\n\tRestApiToolConfig,\n\tSubAgentDraft,\n\tSubAgentRef,\n} from '../AgentBuilder.model';\nimport {\n\tSectionBodyWrap,\n\tSideSection,\n\tSideSectionHeader,\n\tStep3Divider,\n\tStep3Grid,\n\tStep3Root,\n} from '../AgentBuilder.styled';\nimport { ConfigToolPanel } from '../components/ConfigToolPanel';\nimport { CreateSubAgentPanel } from '../components/CreateSubAgentPanel';\nimport { MentionField } from '../components/MentionField';\nimport { RequireVerificationModal } from '../components/RequireVerificationModal';\nimport { RestApiToolPanel } from '../components/RestApiToolPanel';\nimport {\n\tSelectableItem,\n\tSelectableListSection,\n\tSourceGroup,\n} from '../components/SelectableListSection';\nimport { StepSectionHeader } from '../components/StepSectionHeader';\nimport { STEP_DEFINITIONS } from '../constants/steps';\nimport { CONFIG_TOOL_SOURCES, ToolSource } from '../constants/tools';\nimport { useAgentBuilderContext } from '../context/AgentBuilderContext';\nimport {\n\tappTypeLabel,\n\tbuildAgentMentionItems,\n\tbuildCustomToolMentionItems,\n\tconfigToolMentionItem,\n\tconfigToolName,\n\trestApiMentionItem,\n\trestApiToolName,\n\ttoolSourceLabel,\n} from '../utils/mentionSerialization';\nimport {\n\trenderSourceIcon,\n\tSOURCE_ICONS,\n\tsourceIcon,\n} from '../utils/sourceIcons';\nimport { buildToolActions } from '../utils/toolActions';\n\n/** Source brand glyph for a tool, as a dropdown leadingIcon element. */\nconst toolIconEl = (source: string): JSX.Element | undefined =>\n\trenderSourceIcon(sourceIcon(source)) ?? undefined;\n\n/** Dropdown option for a tool: icon left of the name, no description. */\nconst toolOption = (t: AgentTool): SingleOption => ({\n\tlabel: t.display_name,\n\tvalue: t.tool_id,\n\tleadingIcon: toolIconEl(t.source ?? ToolSource.Manifest),\n});\n\nconst STEP = STEP_DEFINITIONS[2];\n\n/** Customer-verification OTP methods, in the dropdown's display order. */\nconst AUTH_METHOD_OPTIONS: SingleOption[] = [\n\t{ label: 'OTP to phone', value: 'phone_otp' },\n\t{ label: 'OTP to email', value: 'email_otp' },\n];\n\n/** Drawer state — null when closed; `key` remounts it fresh per open. */\ninterface SubAgentPanelState {\n\tkey: number;\n\ttitle: string;\n\teditingId?: string;\n\tinitial?: SubAgentDraft;\n}\n\n/**\n * Config-tool drawer state; `key` remounts fresh. `restapi` is the bespoke Rest\n * API panel; `config` is the shared dynamic panel (email / Slack), tagged with\n * its `toolKey`.\n */\ninterface ToolDrawerState {\n\tkey: number;\n\tkind: 'restapi' | 'config';\n\ttoolKey?: ConfigToolKey;\n\tinitialRest?: RestApiToolConfig;\n\tinitialConfig?: ConfigToolConfig;\n}\n\n/** Upsert an item by id (replace when present, append otherwise). */\nconst upsertById = <T extends { id: string }>(\n\tlist: T[] | undefined,\n\titem: T,\n): T[] => {\n\tconst arr = list ?? [];\n\treturn arr.some((x) => x.id === item.id)\n\t\t? arr.map((x) => (x.id === item.id ? item : x))\n\t\t: [...arr, item];\n};\n\nexport const Step3HowItResponds: React.FC = () => {\n\tconst {\n\t\tvalue,\n\t\tpatch,\n\t\tupdateField,\n\t\taddReference,\n\t\tremoveReference,\n\t\tavailableTools,\n\t\tavailableSubAgents,\n\t\tavailableModels,\n\t\tconfigToolTemplates,\n\t\tapplicationType,\n\t\tcharLimits,\n\t\tinsertMention,\n\t\tonCreateSubAgent,\n\t\tonFetchSubAgent,\n\t\tonUpdateSubAgent,\n\t\tonImproveSubAgent,\n\t\tonImproveToolInstructions,\n\t\tregisterSubAgentCreator,\n\t\tregisterToolActionHandler,\n\t\tintegrationStatus,\n\t\tonConnectIntegration,\n\t\tvariablesData,\n\t} = useAgentBuilderContext();\n\n\tconst [panel, setPanel] = useState<SubAgentPanelState | null>(null);\n\tconst panelKeyRef = useRef(0);\n\n\t// Rest API (bespoke) + shared config-tool drawers (separate from the sub-agent one).\n\tconst [toolDrawer, setToolDrawer] = useState<ToolDrawerState | null>(null);\n\tconst toolDrawerKeyRef = useRef(0);\n\tconst openRestApi = useCallback((initial?: RestApiToolConfig) => {\n\t\ttoolDrawerKeyRef.current += 1;\n\t\tsetToolDrawer({\n\t\t\tkey: toolDrawerKeyRef.current,\n\t\t\tkind: 'restapi',\n\t\t\tinitialRest: initial,\n\t\t});\n\t}, []);\n\tconst openConfigTool = useCallback(\n\t\t(toolKey: ConfigToolKey, initial?: ConfigToolConfig) => {\n\t\t\ttoolDrawerKeyRef.current += 1;\n\t\t\tsetToolDrawer({\n\t\t\t\tkey: toolDrawerKeyRef.current,\n\t\t\t\tkind: 'config',\n\t\t\t\ttoolKey,\n\t\t\t\tinitialConfig: initial,\n\t\t\t});\n\t\t},\n\t\t[],\n\t);\n\tconst handleSaveRestApi = useCallback(\n\t\t(config: RestApiToolConfig) => {\n\t\t\tconst isNew = !(value.restApiTools ?? []).some((t) => t.id === config.id);\n\t\t\tpatch({ restApiTools: upsertById(value.restApiTools, config) });\n\t\t\t// Drop a reference chip at the cursor on creation (edits keep the chip).\n\t\t\t// Pass the source so the fresh chip gets its icon (it isn't in the\n\t\t\t// editor's mention list yet).\n\t\t\tif (isNew) {\n\t\t\t\tinsertMention(\n\t\t\t\t\t'tool',\n\t\t\t\t\tconfig.id,\n\t\t\t\t\trestApiMentionItem(config).label,\n\t\t\t\t\tToolSource.RestApi,\n\t\t\t\t);\n\t\t\t}\n\t\t\tsetToolDrawer(null);\n\t\t},\n\t\t[patch, value.restApiTools, insertMention],\n\t);\n\tconst handleSaveConfigTool = useCallback(\n\t\t(config: ConfigToolConfig) => {\n\t\t\tconst isNew = !(value.configTools ?? []).some((t) => t.id === config.id);\n\t\t\tpatch({ configTools: upsertById(value.configTools, config) });\n\t\t\tif (isNew) {\n\t\t\t\tconst source =\n\t\t\t\t\tconfig.tool_key === 'send_slack_message'\n\t\t\t\t\t\t? ToolSource.Slack\n\t\t\t\t\t\t: ToolSource.EmailHandover;\n\t\t\t\tinsertMention(\n\t\t\t\t\t'tool',\n\t\t\t\t\tconfig.id,\n\t\t\t\t\tconfigToolMentionItem(config).label,\n\t\t\t\t\tsource,\n\t\t\t\t);\n\t\t\t}\n\t\t\tsetToolDrawer(null);\n\t\t},\n\t\t[patch, value.configTools, insertMention],\n\t);\n\n\t// Open a tool action's drawer by picker source (restapi / email / slack).\n\tconst openToolAction = useCallback(\n\t\t(source: ToolSource) => {\n\t\t\tconst toolKey = CONFIG_TOOL_SOURCES[source];\n\t\t\tif (toolKey) {\n\t\t\t\topenConfigTool(toolKey);\n\t\t\t} else {\n\t\t\t\topenRestApi();\n\t\t\t}\n\t\t},\n\t\t[openConfigTool, openRestApi],\n\t);\n\t// Let the `@` reference picker (Instructions / Guardrails) open these drawers.\n\tuseEffect(() => {\n\t\tregisterToolActionHandler(openToolAction);\n\t\treturn () => registerToolActionHandler(null);\n\t}, [registerToolActionHandler, openToolAction]);\n\t// Sub-agents created / edited in this session, so a chip resolves (and reflects\n\t// a renamed sub-agent) before the consumer refreshes `availableSubAgents`.\n\tconst [createdSubAgents, setCreatedSubAgents] = useState<SubAgentRef[]>([]);\n\t// Ids of sub-agents saved this session that use an auth_required tool — they\n\t// make customer verification mandatory on the parent, just like a direct\n\t// auth_required tool. (A persisted sub-agent's tools aren't hydrated into\n\t// `value`, so it only joins this set once opened/edited in the panel.)\n\tconst [authRequiringSubAgents, setAuthRequiringSubAgents] = useState<\n\t\tSet<string>\n\t>(() => new Set());\n\t// Created/edited refs take precedence over the consumer-supplied list.\n\tconst subAgentById = new Map<string, SubAgentRef>();\n\tavailableSubAgents.forEach((s) => subAgentById.set(s.id, s));\n\tcreatedSubAgents.forEach((s) => subAgentById.set(s.id, s));\n\tconst knownSubAgents = Array.from(subAgentById.values());\n\n\tconst openCreate = useCallback(() => {\n\t\tpanelKeyRef.current += 1;\n\t\tsetPanel({ key: panelKeyRef.current, title: 'Create sub-agent' });\n\t}, []);\n\n\t// Let the `@` picker's \"Create new\" row open this step's drawer.\n\tuseEffect(() => {\n\t\tif (!onCreateSubAgent) {\n\t\t\treturn;\n\t\t}\n\t\tregisterSubAgentCreator(openCreate);\n\t\treturn () => registerSubAgentCreator(null);\n\t}, [registerSubAgentCreator, openCreate, onCreateSubAgent]);\n\n\tconst openConfigure = useCallback(\n\t\tasync (id: string) => {\n\t\t\tif (!onFetchSubAgent) {\n\t\t\t\treturn;\n\t\t\t}\n\t\t\tconst data = await onFetchSubAgent(id);\n\t\t\tpanelKeyRef.current += 1;\n\t\t\tsetPanel({\n\t\t\t\tkey: panelKeyRef.current,\n\t\t\t\ttitle: 'Edit sub-agent',\n\t\t\t\teditingId: id,\n\t\t\t\tinitial: data,\n\t\t\t});\n\t\t},\n\t\t[onFetchSubAgent],\n\t);\n\n\t// ── Customer verification (auth) ──────────────────────────────────────────\n\t// Order tools (auth_required) can't run unless the customer is verified first,\n\t// so verification is MANDATORY whenever such a tool is attached (directly or\n\t// via a sub-agent). Derived before the handlers that read it.\n\tconst hasDirectAuthTool = value.tools.some(\n\t\t(id) => availableTools.find((t) => t.tool_id === id)?.auth_required,\n\t);\n\tconst hasAuthRequiredSubAgent = value.subagents.some((id) =>\n\t\tauthRequiringSubAgents.has(id),\n\t);\n\tconst hasAuthRequiredTool = hasDirectAuthTool || hasAuthRequiredSubAgent;\n\tconst authEnabled = value.authentication?.enabled ?? false;\n\tconst authType: Authentication['type'] =\n\t\tvalue.authentication?.type ?? 'email_otp';\n\t// BIK picks the OTP channel itself, so the merchant only gets the on/off\n\t// toggle there; Manifest still chooses the method.\n\tconst showAuthMethod = appTypeLabel(applicationType) !== 'BIK';\n\n\tconst handlePanelSave = useCallback(\n\t\tasync (draft: SubAgentDraft) => {\n\t\t\tlet savedId: string | undefined;\n\t\t\tif (panel?.editingId) {\n\t\t\t\tif (onUpdateSubAgent) {\n\t\t\t\t\tconst ref = await onUpdateSubAgent(panel.editingId, draft);\n\t\t\t\t\tsavedId = ref.id;\n\t\t\t\t\tsetCreatedSubAgents((prev) => [\n\t\t\t\t\t\t...prev.filter((s) => s.id !== ref.id),\n\t\t\t\t\t\tref,\n\t\t\t\t\t]);\n\t\t\t\t}\n\t\t\t} else if (onCreateSubAgent) {\n\t\t\t\tconst ref = await onCreateSubAgent(draft);\n\t\t\t\tsavedId = ref.id;\n\t\t\t\tsetCreatedSubAgents((prev) => [...prev, ref]);\n\t\t\t\tpatch({ subagents: [...value.subagents, ref.id] });\n\t\t\t\tinsertMention('subagent', ref.id, `sub-agent: ${ref.name}`);\n\t\t\t}\n\t\t\t// A sub-agent that uses an auth_required tool forces customer\n\t\t\t// verification on the parent agent — the tool can't run otherwise. Record\n\t\t\t// it so verification stays mandatory (the reconcile effect turns it on and\n\t\t\t// the toggle locks), mirroring the direct-tool invariant.\n\t\t\tif (savedId) {\n\t\t\t\tconst targetId = savedId;\n\t\t\t\tconst subUsesAuthTool = draft.tools.some(\n\t\t\t\t\t(id) => availableTools.find((t) => t.tool_id === id)?.auth_required,\n\t\t\t\t);\n\t\t\t\tsetAuthRequiringSubAgents((prev) => {\n\t\t\t\t\tconst next = new Set(prev);\n\t\t\t\t\tif (subUsesAuthTool) {\n\t\t\t\t\t\tnext.add(targetId);\n\t\t\t\t\t} else {\n\t\t\t\t\t\tnext.delete(targetId);\n\t\t\t\t\t}\n\t\t\t\t\treturn next;\n\t\t\t\t});\n\t\t\t}\n\t\t\tsetPanel(null);\n\t\t},\n\t\t[\n\t\t\tpanel,\n\t\t\tonUpdateSubAgent,\n\t\t\tonCreateSubAgent,\n\t\t\tpatch,\n\t\t\tvalue.subagents,\n\t\t\tinsertMention,\n\t\t\tavailableTools,\n\t\t],\n\t);\n\n\t// Reconcile the invariant: a loaded agent that already holds an auth_required\n\t// tool must have verification on (a fail-closed tool otherwise runs silently).\n\tuseEffect(() => {\n\t\tif (hasAuthRequiredTool && !authEnabled) {\n\t\t\tpatch({ authentication: { enabled: true, type: authType } });\n\t\t}\n\t}, [hasAuthRequiredTool, authEnabled, authType, patch]);\n\n\t// A tool add awaiting the mandatory-verification confirm (null = no prompt).\n\tconst [pendingAuthTool, setPendingAuthTool] = useState<string | null>(null);\n\tconst addTool = useCallback(\n\t\t(id: string) => {\n\t\t\t// Always drop a chip at the cursor; addReference dedupes and reads the\n\t\t\t// latest value.\n\t\t\tinsertMention('tool', id);\n\t\t\taddReference('tool', id);\n\t\t},\n\t\t[insertMention, addReference],\n\t);\n\t// Adding an auth_required tool while verification is off prompts first; confirm\n\t// turns verification on and adds, cancel skips the add.\n\tconst handleAddTool = useCallback(\n\t\t(id: string) => {\n\t\t\tconst tool = availableTools.find((t) => t.tool_id === id);\n\t\t\tif (tool?.auth_required && !authEnabled) {\n\t\t\t\tsetPendingAuthTool(id);\n\t\t\t\treturn;\n\t\t\t}\n\t\t\taddTool(id);\n\t\t},\n\t\t[availableTools, authEnabled, addTool],\n\t);\n\n\tconst toolItems: SelectableItem[] = value.tools\n\t\t.map((id): SelectableItem | null => {\n\t\t\tconst tool = availableTools.find((t) => t.tool_id === id);\n\t\t\treturn tool\n\t\t\t\t? {\n\t\t\t\t\t\tid,\n\t\t\t\t\t\tlabel: tool.display_name,\n\t\t\t\t\t\ticon: sourceIcon(tool.source ?? ToolSource.Manifest),\n\t\t\t\t\t\tauthRequired: tool.auth_required,\n\t\t\t\t }\n\t\t\t\t: null;\n\t\t})\n\t\t.filter((x): x is SelectableItem => x !== null);\n\n\t// Inline-configured tools (Rest API + the shared email / Slack tools) live on\n\t// the value, not in `tools`. They render as rows in the same Tools list, each\n\t// with its own Configure (edit) action that reopens its drawer.\n\tconst restApiItems: SelectableItem[] = (value.restApiTools ?? []).map(\n\t\t(t) => ({\n\t\t\tid: t.id,\n\t\t\tlabel: restApiToolName(t),\n\t\t\ticon: SOURCE_ICONS[ToolSource.RestApi],\n\t\t\tonConfigure: () => openRestApi(t),\n\t\t}),\n\t);\n\tconst configToolItems: SelectableItem[] = (value.configTools ?? []).map(\n\t\t(t) => ({\n\t\t\tid: t.id,\n\t\t\tlabel: configToolName(t),\n\t\t\ticon: SOURCE_ICONS[\n\t\t\t\tt.tool_key === 'send_slack_message'\n\t\t\t\t\t? ToolSource.Slack\n\t\t\t\t\t: ToolSource.EmailHandover\n\t\t\t],\n\t\t\tonConfigure: () => openConfigTool(t.tool_key, t),\n\t\t}),\n\t);\n\tconst allToolItems: SelectableItem[] = [\n\t\t...toolItems,\n\t\t...restApiItems,\n\t\t...configToolItems,\n\t];\n\n\t// Built-in tools that open a config drawer instead of inserting a mention.\n\t// Shown as empty-state buttons AND in the `@` picker's Tools view. The shared\n\t// email / Slack forms are backend-driven, so each is offered only when its\n\t// template was provided.\n\tconst toolActionSources = buildToolActions(\n\t\tconfigToolTemplates,\n\t\topenToolAction,\n\t\tintegrationStatus,\n\t\tonConnectIntegration,\n\t);\n\n\t// All tools are offered (even already-added ones) so a tool can be referenced\n\t// again in the text; the chip list below still shows each only once.\n\tconst toolOptions: SingleOption[] = availableTools.map(toolOption);\n\n\t// The native tool group is named after the host product — \"Manifest\" in\n\t// Manifest, \"BIK\" in BIK — so every surface that renders a source name needs it.\n\tconst appLabel = appTypeLabel(applicationType);\n\n\t// Group tools by source (Manifest / Shopify / …) for the empty-state buttons.\n\tconst toolSourceGroups: SourceGroup[] = (() => {\n\t\tconst order: string[] = [];\n\t\tconst bySource = new Map<string, SingleOption[]>();\n\t\tavailableTools.forEach((t) => {\n\t\t\tconst src = t.source ?? ToolSource.Manifest;\n\t\t\tif (!bySource.has(src)) {\n\t\t\t\tbySource.set(src, []);\n\t\t\t\torder.push(src);\n\t\t\t}\n\t\t\tbySource.get(src)?.push(toolOption(t));\n\t\t});\n\t\treturn order.map((src) => ({\n\t\t\tsource: src,\n\t\t\tlabel: toolSourceLabel(src, appLabel),\n\t\t\toptions: bySource.get(src) ?? [],\n\t\t\t// Not connected → the source button opens the connect flow instead of\n\t\t\t// its tool list (see SelectableListSection / onConnectIntegration).\n\t\t\tconnected: integrationStatus?.[src as ToolSource],\n\t\t\tonConnect: () => onConnectIntegration?.(src as ToolSource),\n\t\t}));\n\t})();\n\n\tconst subAgentItems: SelectableItem[] = value.subagents\n\t\t.map((id): SelectableItem | null => {\n\t\t\tconst sub = subAgentById.get(id);\n\t\t\treturn sub ? { id, label: sub.name } : null;\n\t\t})\n\t\t.filter((x): x is SelectableItem => x !== null);\n\n\tconst subAgentOptions: SingleOption[] = knownSubAgents.map((s) => ({\n\t\tlabel: s.name,\n\t\tvalue: s.id,\n\t}));\n\n\t// Per-section `@`-picker items so the header \"+\" opens the same reference\n\t// picker as the Instructions editor, drilled straight into this section's\n\t// category (tools OR sub-agents).\n\tconst toolMentionItems = [\n\t\t...buildAgentMentionItems(availableTools, [], appLabel),\n\t\t...buildCustomToolMentionItems(value.configTools, value.restApiTools),\n\t];\n\tconst subAgentMentionItems = buildAgentMentionItems(\n\t\t[],\n\t\tknownSubAgents,\n\t\tappLabel,\n\t);\n\n\tconst modelOptions: SingleOption[] = availableModels.map((m) => ({\n\t\tlabel: m.label,\n\t\tvalue: m.value,\n\t\tselected: m.value === value.model,\n\t}));\n\tconst selectedModel = availableModels.find((m) => m.value === value.model);\n\n\t// The template for the open shared-drawer tool (undefined unless a config\n\t// drawer is open and its template was provided).\n\tconst openConfigTemplate =\n\t\ttoolDrawer?.kind === 'config' && toolDrawer.toolKey\n\t\t\t? configToolTemplates?.[toolDrawer.toolKey]\n\t\t\t: undefined;\n\n\tconst verificationToggle = (\n\t\t<Switch\n\t\t\tdata-test=\"agent-auth-toggle\"\n\t\t\tvalue={authEnabled || hasAuthRequiredTool}\n\t\t\t// Mandatory (can't turn off) while an auth_required tool is attached.\n\t\t\tdisabled={hasAuthRequiredTool}\n\t\t\tonValueChange={async (enabled) => {\n\t\t\t\tpatch({ authentication: { enabled, type: authType } });\n\t\t\t}}\n\t\t/>\n\t);\n\t// While locked, a tooltip explains why the toggle can't be changed.\n\tconst verificationToggleNode = hasAuthRequiredTool ? (\n\t\t<Tooltip\n\t\t\tbody=\"Remove tools that requires customer verification to change this setting.\"\n\t\t\tplacement=\"bottom\"\n\t\t>\n\t\t\t<span style={{ display: 'flex' }}>{verificationToggle}</span>\n\t\t</Tooltip>\n\t) : (\n\t\tverificationToggle\n\t);\n\n\treturn (\n\t\t<Step3Root>\n\t\t\t<StepSectionHeader title={STEP.title} helper={STEP.helper} />\n\n\t\t\t<Step3Grid $grow>\n\t\t\t\t<SectionBodyWrap>\n\t\t\t\t\t<MentionField\n\t\t\t\t\t\tfieldKey=\"instructions\"\n\t\t\t\t\t\tdata-test=\"agent-instructions\"\n\t\t\t\t\t\tlabel=\"Instructions\"\n\t\t\t\t\t\tmaxLength={charLimits.instructions}\n\t\t\t\t\t\tplaceholder=\"Write the steps in plain English. The agent will follow them exactly. The more specific you are, the better it performs.\"\n\t\t\t\t\t\tminHeight=\"200px\"\n\t\t\t\t\t/>\n\n\t\t\t\t\t<MentionField\n\t\t\t\t\t\tfieldKey=\"guardrail\"\n\t\t\t\t\t\tdata-test=\"agent-guardrail\"\n\t\t\t\t\t\tlabel=\"Guardrails\"\n\t\t\t\t\t\tmaxLength={charLimits.guardrail}\n\t\t\t\t\t\tplaceholder=\"e.g. Never discuss competitor pricing. Always stay within the cancellation policy. Do not process refunds above ₹10,000 without human approval.\"\n\t\t\t\t\t\tminHeight=\"140px\"\n\t\t\t\t\t/>\n\t\t\t\t</SectionBodyWrap>\n\n\t\t\t\t<Step3Divider />\n\n\t\t\t\t<SectionBodyWrap>\n\t\t\t\t\t<SelectableListSection\n\t\t\t\t\t\ttitle=\"Tools\"\n\t\t\t\t\t\thelper=\"Actions this agent can take while responding.\"\n\t\t\t\t\t\tdataTestPrefix=\"agent-tools\"\n\t\t\t\t\t\titems={allToolItems}\n\t\t\t\t\t\taddableOptions={toolOptions}\n\t\t\t\t\t\tsourceGroups={toolSourceGroups}\n\t\t\t\t\t\tmentionItems={toolMentionItems}\n\t\t\t\t\t\tactionSources={toolActionSources}\n\t\t\t\t\t\temptyText=\"No tools added yet.\"\n\t\t\t\t\t\tappLabel={appLabel}\n\t\t\t\t\t\tonAdd={handleAddTool}\n\t\t\t\t\t\t// Strips the tool's tokens AND drops it from whichever list holds it\n\t\t\t\t\t\t// (catalog `tools` or an inline custom-tool list).\n\t\t\t\t\t\tonRemove={(id) => removeReference('tool', id)}\n\t\t\t\t\t\tconfirmDelete={{ noun: 'tool' }}\n\t\t\t\t\t/>\n\n\t\t\t\t\t<SelectableListSection\n\t\t\t\t\t\ttitle=\"Sub-agents\"\n\t\t\t\t\t\thelper=\"Other agents this agent can hand off the conversation to.\"\n\t\t\t\t\t\tdataTestPrefix=\"agent-subagents\"\n\t\t\t\t\t\titems={subAgentItems}\n\t\t\t\t\t\taddableOptions={subAgentOptions}\n\t\t\t\t\t\tmentionItems={subAgentMentionItems}\n\t\t\t\t\t\temptyText=\"No sub-agents added yet.\"\n\t\t\t\t\t\tonAdd={(id) => {\n\t\t\t\t\t\t\tinsertMention('subagent', id);\n\t\t\t\t\t\t\taddReference('subagent', id);\n\t\t\t\t\t\t}}\n\t\t\t\t\t\tonRemove={(id) => removeReference('subagent', id)}\n\t\t\t\t\t\tconfirmDelete={{ noun: 'sub-agent' }}\n\t\t\t\t\t\tonConfigure={onFetchSubAgent ? openConfigure : undefined}\n\t\t\t\t\t\tcreateOption={\n\t\t\t\t\t\t\tonCreateSubAgent\n\t\t\t\t\t\t\t\t? { label: 'Create new', onSelect: openCreate }\n\t\t\t\t\t\t\t\t: undefined\n\t\t\t\t\t\t}\n\t\t\t\t\t/>\n\n\t\t\t\t\t<SideSection>\n\t\t\t\t\t\t<SideSectionHeader>\n\t\t\t\t\t\t\t<div style={{ display: 'flex', alignItems: 'center', gap: 8 }}>\n\t\t\t\t\t\t\t\t<Shield size={20} />\n\t\t\t\t\t\t\t\t<TitleSmall color={COLORS.content.primary}>\n\t\t\t\t\t\t\t\t\tRequire customer verification\n\t\t\t\t\t\t\t\t</TitleSmall>\n\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t\t{verificationToggleNode}\n\t\t\t\t\t\t</SideSectionHeader>\n\t\t\t\t\t\t<BodyCaption color={COLORS.content.secondary}>\n\t\t\t\t\t\t\t{hasAuthRequiredTool\n\t\t\t\t\t\t\t\t? 'Required — this agent uses a tool that accesses customer order details.'\n\t\t\t\t\t\t\t\t: 'Customers must verify their identity before this agent responds.'}\n\t\t\t\t\t\t</BodyCaption>\n\t\t\t\t\t\t{showAuthMethod && (authEnabled || hasAuthRequiredTool) && (\n\t\t\t\t\t\t\t<>\n\t\t\t\t\t\t\t\t<BodySecondary color={COLORS.content.primary}>\n\t\t\t\t\t\t\t\t\tSelect verification method\n\t\t\t\t\t\t\t\t</BodySecondary>\n\t\t\t\t\t\t\t\t<Dropdown\n\t\t\t\t\t\t\t\t\tdata-test=\"agent-auth-method\"\n\t\t\t\t\t\t\t\t\tsize=\"small\"\n\t\t\t\t\t\t\t\t\twidth=\"100%\"\n\t\t\t\t\t\t\t\t\t// Popover is portalled, so \"100%\" collapses to content width —\n\t\t\t\t\t\t\t\t\t// match the input: 360px side column − 2×16px padding.\n\t\t\t\t\t\t\t\t\tdropdownWidth=\"328px\"\n\t\t\t\t\t\t\t\t\tplaceHolder=\"Select verification method\"\n\t\t\t\t\t\t\t\t\t// Flag the active method so the open list highlights that row\n\t\t\t\t\t\t\t\t\t// green (list-item 'selected' theme handles the styling).\n\t\t\t\t\t\t\t\t\toptions={AUTH_METHOD_OPTIONS.map((o) => ({\n\t\t\t\t\t\t\t\t\t\t...o,\n\t\t\t\t\t\t\t\t\t\tselected: o.value === authType,\n\t\t\t\t\t\t\t\t\t}))}\n\t\t\t\t\t\t\t\t\tdefaultOptions={[\n\t\t\t\t\t\t\t\t\t\tAUTH_METHOD_OPTIONS.find((o) => o.value === authType) ??\n\t\t\t\t\t\t\t\t\t\t\tAUTH_METHOD_OPTIONS[0],\n\t\t\t\t\t\t\t\t\t]}\n\t\t\t\t\t\t\t\t\tonSelect={(opt) => {\n\t\t\t\t\t\t\t\t\t\tconst v = unwrapDropdownValue(opt);\n\t\t\t\t\t\t\t\t\t\tif (v) {\n\t\t\t\t\t\t\t\t\t\t\tpatch({\n\t\t\t\t\t\t\t\t\t\t\t\tauthentication: {\n\t\t\t\t\t\t\t\t\t\t\t\t\tenabled: true,\n\t\t\t\t\t\t\t\t\t\t\t\t\ttype: v as Authentication['type'],\n\t\t\t\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\t\t\t});\n\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t}}\n\t\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t\t</>\n\t\t\t\t\t\t)}\n\t\t\t\t\t</SideSection>\n\n\t\t\t\t\t{availableModels.length > 0 && (\n\t\t\t\t\t\t<SideSection>\n\t\t\t\t\t\t\t<TitleSmall color={COLORS.content.primary}>\n\t\t\t\t\t\t\t\tAdvanced settings\n\t\t\t\t\t\t\t</TitleSmall>\n\t\t\t\t\t\t\t<BodySecondary color={COLORS.content.primary}>\n\t\t\t\t\t\t\t\tSelect AI model\n\t\t\t\t\t\t\t</BodySecondary>\n\t\t\t\t\t\t\t<Dropdown\n\t\t\t\t\t\t\t\tdata-test=\"agent-model\"\n\t\t\t\t\t\t\t\tsize=\"small\"\n\t\t\t\t\t\t\t\twidth=\"100%\"\n\t\t\t\t\t\t\t\t// Popover is portalled, so \"100%\" collapses to content width —\n\t\t\t\t\t\t\t\t// match the input: 360px side column − 2×16px SectionBodyWrap\n\t\t\t\t\t\t\t\t// padding.\n\t\t\t\t\t\t\t\tdropdownWidth=\"328px\"\n\t\t\t\t\t\t\t\tplaceHolder=\"Select model\"\n\t\t\t\t\t\t\t\toptions={modelOptions}\n\t\t\t\t\t\t\t\tdefaultOptions={\n\t\t\t\t\t\t\t\t\tselectedModel\n\t\t\t\t\t\t\t\t\t\t? [\n\t\t\t\t\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\t\t\t\t\tlabel: selectedModel.label,\n\t\t\t\t\t\t\t\t\t\t\t\t\tvalue: selectedModel.value,\n\t\t\t\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\t\t ]\n\t\t\t\t\t\t\t\t\t\t: undefined\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\tonSelect={(opt) => {\n\t\t\t\t\t\t\t\t\tconst v = unwrapDropdownValue(opt);\n\t\t\t\t\t\t\t\t\tif (v) {\n\t\t\t\t\t\t\t\t\t\tupdateField('model', v);\n\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t}}\n\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t</SideSection>\n\t\t\t\t\t)}\n\t\t\t\t</SectionBodyWrap>\n\t\t\t</Step3Grid>\n\n\t\t\t{panel && (\n\t\t\t\t<CreateSubAgentPanel\n\t\t\t\t\tkey={panel.key}\n\t\t\t\t\ttitle={panel.title}\n\t\t\t\t\tinitial={panel.initial}\n\t\t\t\t\t// Block reusing another sub-agent's name (exclude the one being edited).\n\t\t\t\t\texistingNames={value.subagents\n\t\t\t\t\t\t.filter((id) => id !== panel.editingId)\n\t\t\t\t\t\t.map((id) => subAgentById.get(id)?.name)\n\t\t\t\t\t\t.filter((n): n is string => !!n)}\n\t\t\t\t\tavailableTools={availableTools}\n\t\t\t\t\tconfigToolTemplates={configToolTemplates}\n\t\t\t\t\tvariablesData={variablesData}\n\t\t\t\t\tintegrationStatus={integrationStatus}\n\t\t\t\t\tonConnectIntegration={onConnectIntegration}\n\t\t\t\t\tappLabel={appLabel}\n\t\t\t\t\tcharLimits={charLimits}\n\t\t\t\t\tonImprove={onImproveSubAgent}\n\t\t\t\t\tonImproveToolInstructions={onImproveToolInstructions}\n\t\t\t\t\tonClose={() => setPanel(null)}\n\t\t\t\t\tonSave={handlePanelSave}\n\t\t\t\t/>\n\t\t\t)}\n\n\t\t\t{toolDrawer?.kind === 'restapi' && (\n\t\t\t\t<RestApiToolPanel\n\t\t\t\t\tkey={toolDrawer.key}\n\t\t\t\t\tinitial={toolDrawer.initialRest}\n\t\t\t\t\tcharLimits={charLimits}\n\t\t\t\t\tvariablesData={variablesData}\n\t\t\t\t\t// Block reusing another tool's name (exclude the one being edited).\n\t\t\t\t\texistingNames={(value.restApiTools ?? [])\n\t\t\t\t\t\t.filter((t) => t.id !== toolDrawer.initialRest?.id)\n\t\t\t\t\t\t.map((t) => t.name)}\n\t\t\t\t\tonImprove={onImproveToolInstructions}\n\t\t\t\t\tonClose={() => setToolDrawer(null)}\n\t\t\t\t\tonSave={handleSaveRestApi}\n\t\t\t\t/>\n\t\t\t)}\n\n\t\t\t{toolDrawer?.kind === 'config' &&\n\t\t\t\ttoolDrawer.toolKey &&\n\t\t\t\topenConfigTemplate && (\n\t\t\t\t\t<ConfigToolPanel\n\t\t\t\t\t\tkey={toolDrawer.key}\n\t\t\t\t\t\ttoolKey={toolDrawer.toolKey}\n\t\t\t\t\t\ttemplate={openConfigTemplate}\n\t\t\t\t\t\tinitial={toolDrawer.initialConfig}\n\t\t\t\t\t\tcharLimits={charLimits}\n\t\t\t\t\t\tvariablesData={variablesData}\n\t\t\t\t\t\tonImprove={onImproveToolInstructions}\n\t\t\t\t\t\tonClose={() => setToolDrawer(null)}\n\t\t\t\t\t\tonSave={handleSaveConfigTool}\n\t\t\t\t\t/>\n\t\t\t\t)}\n\n\t\t\t<RequireVerificationModal\n\t\t\t\topen={pendingAuthTool !== null}\n\t\t\t\ttoolLabel={\n\t\t\t\t\tavailableTools.find((t) => t.tool_id === pendingAuthTool)\n\t\t\t\t\t\t?.display_name ?? 'This tool'\n\t\t\t\t}\n\t\t\t\tonCancel={() => setPendingAuthTool(null)}\n\t\t\t\tonConfirm={() => {\n\t\t\t\t\tpatch({ authentication: { enabled: true, type: authType } });\n\t\t\t\t\tif (pendingAuthTool) {\n\t\t\t\t\t\taddTool(pendingAuthTool);\n\t\t\t\t\t}\n\t\t\t\t\tsetPendingAuthTool(null);\n\t\t\t\t}}\n\t\t\t/>\n\t\t</Step3Root>\n\t);\n};\n"],"names":["toolIconEl","source","renderSourceIcon","sourceIcon","toolOption","t","ToolSource","STEP","STEP_DEFINITIONS","AUTH_METHOD_OPTIONS","upsertById","list","item","arr","x","Step3HowItResponds","value","patch","updateField","addReference","removeReference","availableTools","availableSubAgents","availableModels","configToolTemplates","applicationType","charLimits","insertMention","onCreateSubAgent","onFetchSubAgent","onUpdateSubAgent","onImproveSubAgent","onImproveToolInstructions","registerSubAgentCreator","registerToolActionHandler","integrationStatus","onConnectIntegration","variablesData","useAgentBuilderContext","panel","setPanel","useState","panelKeyRef","useRef","toolDrawer","setToolDrawer","toolDrawerKeyRef","openRestApi","useCallback","initial","openConfigTool","toolKey","handleSaveRestApi","config","isNew","restApiMentionItem","handleSaveConfigTool","configToolMentionItem","openToolAction","CONFIG_TOOL_SOURCES","useEffect","createdSubAgents","setCreatedSubAgents","authRequiringSubAgents","setAuthRequiringSubAgents","subAgentById","s","knownSubAgents","openCreate","openConfigure","id","data","hasDirectAuthTool","hasAuthRequiredSubAgent","hasAuthRequiredTool","authEnabled","authType","showAuthMethod","appTypeLabel","handlePanelSave","draft","savedId","ref","prev","targetId","subUsesAuthTool","next","pendingAuthTool","setPendingAuthTool","addTool","handleAddTool","toolItems","tool","restApiItems","restApiToolName","SOURCE_ICONS","configToolItems","configToolName","allToolItems","toolActionSources","buildToolActions","toolOptions","appLabel","toolSourceGroups","order","bySource","src","toolSourceLabel","subAgentItems","sub","subAgentOptions","toolMentionItems","buildAgentMentionItems","buildCustomToolMentionItems","subAgentMentionItems","modelOptions","m","selectedModel","openConfigTemplate","verificationToggle","jsx","Switch","enabled","verificationToggleNode","Tooltip","Step3Root","StepSectionHeader","jsxs","Step3Grid","SectionBodyWrap","MentionField","Step3Divider","SelectableListSection","SideSection","SideSectionHeader","Shield","TitleSmall","COLORS","BodyCaption","Fragment","BodySecondary","Dropdown","o","opt","v","unwrapDropdownValue","CreateSubAgentPanel","n","RestApiToolPanel","ConfigToolPanel","RequireVerificationModal"],"mappings":"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"}
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
"use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const e=require("react/jsx-runtime"),
|
|
1
|
+
"use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const e=require("react/jsx-runtime"),g=require("../../../assets/icons/RedirectToNew.svg.js"),u=require("../../radioButton/RadioButton.js"),s=require("../../TypographyStyle.js"),n=require("../../../constants/Theme.js"),t=require("../AgentBuilder.styled.js"),j=require("../components/AiTextArea.js"),p=require("../components/StepSectionHeader.js"),C=require("../constants/steps.js"),v=require("../context/AgentBuilderContext.js"),y=require("../utils/mentionSerialization.js"),T=require("../../tooltips/Tooltip.js"),d=C.STEP_DEFINITIONS[3],h="default",f=()=>{const{value:l,patch:a,applicationType:c,onSmartAgentHandover:o}=v.useAgentBuilderContext(),{handover:r}=l,m=y.appTypeLabel(c)==="BIK",i=r.method!==h;return m?e.jsxs("div",{className:"bik-agent-step bik-agent-step--handover",children:[e.jsx(p.StepSectionHeader,{title:d.title,helper:d.helper}),e.jsxs(t.SectionBodyWrap,{children:[e.jsxs(t.FieldBlock,{children:[e.jsx(s.TitleSmall,{color:n.COLORS.content.primary,children:"Handover method"}),e.jsxs(t.CardRow,{children:[e.jsxs(t.RadioCard,{"data-test":"handover-method-default",type:"button",selected:!i,onClick:()=>a({handover:{...r,method:h}}),children:[e.jsx(u.RadioButton,{isActive:!i,onValueChange:()=>a({handover:{...r,method:h}}),skipSelectingOff:!0,activeColor:n.BASE_COLORS.brand[800]}),e.jsxs(t.RadioCardText,{children:[e.jsx(s.TitleSmall,{color:n.COLORS.content.primary,children:"Use default settings"}),e.jsxs(s.BodyCaption,{color:n.COLORS.content.secondary,children:["As defined in"," ",o?e.jsxs(t.ChannelsLink,{"data-test":"handover-smart-agent-link",type:"button",onClick:S=>{S.stopPropagation(),o()},style:{display:"inline-flex"},children:["Smart agent handover",e.jsx(g.default,{width:12,height:12})]}):"Smart agent handover"]})]})]}),e.jsx(T.Tooltip,{body:"Custom handover rules are coming soon. For now this agent follows your smart agent handover settings.",placement:"top",children:e.jsx("span",{style:{flex:1,display:"flex",cursor:"not-allowed"},children:e.jsxs(t.RadioCard,{"data-test":"handover-method-custom",type:"button",disabled:!0,selected:i,children:[e.jsx(u.RadioButton,{isActive:i,isDisabled:!0,onValueChange:()=>{},skipSelectingOff:!0,activeColor:n.BASE_COLORS.brand[800]}),e.jsxs(t.RadioCardText,{children:[e.jsx(s.TitleSmall,{color:n.COLORS.content.inactive,children:"Custom instructions"}),e.jsx(s.BodyCaption,{color:n.COLORS.content.inactive,children:"Write custom handover rules for this agent."})]})]})})})]})]}),i&&e.jsx(x,{})]})]}):e.jsxs("div",{className:"bik-agent-step bik-agent-step--handover",children:[e.jsx(p.StepSectionHeader,{title:d.title,helper:d.helper}),e.jsx(t.SectionBodyWrap,{children:e.jsx(x,{})})]})},x=()=>{const{value:l,patch:a,charLimits:c}=v.useAgentBuilderContext(),{handover:o}=l;return e.jsx(j.AiTextArea,{"data-test":"handover-when",label:"Handover when",value:o.when,onChange:r=>a({handover:{...o,when:r}}),maxLength:c.handoverWhen,placeholder:"e.g. Hand over if the customer is angry or asks for a human three times. Hand over if the order value exceeds ₹5,000.",minHeight:"120px"})};exports.Step4HandoverRules=f;
|
|
2
2
|
//# sourceMappingURL=Step4HandoverRules.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Step4HandoverRules.js","sources":["../../../../../src/components/agent-builder/steps/Step4HandoverRules.tsx"],"sourcesContent":["import React from 'react';\nimport { SectionBodyWrap } from '../AgentBuilder.styled';\nimport { AiTextArea } from '../components/AiTextArea';\nimport { StepSectionHeader } from '../components/StepSectionHeader';\nimport { STEP_DEFINITIONS } from '../constants/steps';\nimport { useAgentBuilderContext } from '../context/AgentBuilderContext';\n\nconst STEP = STEP_DEFINITIONS[3];\n\n// The \"Handover method\" radio section was removed: the method is UI-only and the\n// consumer always sends the seeded default ('default'); handover.method stays on\n// the value shape untouched.\nexport const Step4HandoverRules: React.FC = () => {\n\tconst { value, patch, charLimits } = useAgentBuilderContext();\n\tconst { handover } = value;\n\n\treturn (\n\t\t<div className=\"bik-agent-step bik-agent-step--handover\">\n\t\t\t<StepSectionHeader title={STEP.title} helper={STEP.helper} />\n\n\t\t\t<SectionBodyWrap>\n\t\t\t\t<AiTextArea\n\t\t\t\t\tdata-test=\"handover-when\"\n\t\t\t\t\tlabel=\"Handover when\"\n\t\t\t\t\tvalue={handover.when}\n\t\t\t\t\tonChange={(text) => patch({ handover: { ...handover, when: text } })}\n\t\t\t\t\tmaxLength={charLimits.handoverWhen}\n\t\t\t\t\tplaceholder=\"e.g. Hand over if the customer is angry or asks for a human three times. Hand over if the order value exceeds ₹5,000.\"\n\t\t\t\t\tminHeight=\"120px\"\n\t\t\t\t/>\n\t\t\t</SectionBodyWrap>\n\t\t</div>\n\t);\n};\n"],"names":["STEP","STEP_DEFINITIONS","Step4HandoverRules","value","patch","charLimits","useAgentBuilderContext","handover","jsxs","jsx","StepSectionHeader","SectionBodyWrap","AiTextArea","text"],"mappings":"uUAOMA,EAAOC,EAAAA,iBAAiB,CAAC,EAKlBC,EAA+B,IAAM,CACjD,KAAM,CAAE,MAAAC,EAAO,MAAAC,EAAO,WAAAC,CAAA,EAAeC,EAAAA,uBAAA,EAC/B,CAAE,SAAAC,GAAaJ,EAErB,OACCK,EAAAA,KAAC,MAAA,CAAI,UAAU,0CACd,SAAA,CAAAC,MAACC,EAAAA,mBAAkB,MAAOV,EAAK,MAAO,OAAQA,EAAK,OAAQ,QAE1DW,EAAAA,gBAAA,CACA,SAAAF,EAAAA,IAACG,EAAAA,WAAA,CACA,YAAU,gBACV,MAAM,gBACN,MAAOL,EAAS,KAChB,SAAWM,GAAST,EAAM,CAAE,SAAU,CAAE,GAAGG,EAAU,KAAMM,CAAA,EAAQ,EACnE,UAAWR,EAAW,aACtB,YAAY,wHACZ,UAAU,OAAA,CAAA,CACX,CACD,CAAA,EACD,CAEF"}
|
|
1
|
+
{"version":3,"file":"Step4HandoverRules.js","sources":["../../../../../src/components/agent-builder/steps/Step4HandoverRules.tsx"],"sourcesContent":["import RedirectIcon from '@src/assets/icons/RedirectToNew.svg';\nimport React from 'react';\nimport { RadioButton } from '@src/components/radioButton/RadioButton';\nimport { Tooltip } from '@src/components/tooltips';\nimport { BodyCaption, TitleSmall } from '@src/components/TypographyStyle';\nimport { BASE_COLORS, COLORS } from '@src/constants/Theme';\nimport type { HandoverMethod } from '../AgentBuilder.model';\nimport {\n\tCardRow,\n\tChannelsLink,\n\tFieldBlock,\n\tRadioCard,\n\tRadioCardText,\n\tSectionBodyWrap,\n} from '../AgentBuilder.styled';\nimport { AiTextArea } from '../components/AiTextArea';\nimport { StepSectionHeader } from '../components/StepSectionHeader';\nimport { STEP_DEFINITIONS } from '../constants/steps';\nimport { useAgentBuilderContext } from '../context/AgentBuilderContext';\nimport { appTypeLabel } from '../utils/mentionSerialization';\n\nconst STEP = STEP_DEFINITIONS[3];\n\n/**\n * The stored `handover.method` that means \"inherit the store's smart-agent\n * handover settings\" — the BIK default, and the only method selectable today.\n */\nconst DEFAULT_METHOD: HandoverMethod = 'default';\n\n/**\n * Step 4.\n *\n * **Manifest** (and any other host) keeps the original single free-text field:\n * the method is implicit and the consumer always sends the seeded `'default'`.\n *\n * **BIK** picks a handover *method* first. \"Use default settings\" is selected by\n * default and links out to where those defaults live; \"Custom instructions\" is\n * deliberately disabled until that flow is built, so the free-text field only\n * appears for an agent already saved with a non-default method.\n */\nexport const Step4HandoverRules: React.FC = () => {\n\tconst { value, patch, applicationType, onSmartAgentHandover } =\n\t\tuseAgentBuilderContext();\n\tconst { handover } = value;\n\n\tconst isBik = appTypeLabel(applicationType) === 'BIK';\n\t// Anything other than the default method means the merchant is on custom\n\t// instructions, so the free-text field is what they need to see.\n\tconst usesCustom = handover.method !== DEFAULT_METHOD;\n\n\tif (!isBik) {\n\t\treturn (\n\t\t\t<div className=\"bik-agent-step bik-agent-step--handover\">\n\t\t\t\t<StepSectionHeader title={STEP.title} helper={STEP.helper} />\n\t\t\t\t<SectionBodyWrap>\n\t\t\t\t\t<HandoverWhenField />\n\t\t\t\t</SectionBodyWrap>\n\t\t\t</div>\n\t\t);\n\t}\n\n\treturn (\n\t\t<div className=\"bik-agent-step bik-agent-step--handover\">\n\t\t\t<StepSectionHeader title={STEP.title} helper={STEP.helper} />\n\n\t\t\t<SectionBodyWrap>\n\t\t\t\t<FieldBlock>\n\t\t\t\t\t<TitleSmall color={COLORS.content.primary}>\n\t\t\t\t\t\tHandover method\n\t\t\t\t\t</TitleSmall>\n\n\t\t\t\t\t<CardRow>\n\t\t\t\t\t\t<RadioCard\n\t\t\t\t\t\t\tdata-test=\"handover-method-default\"\n\t\t\t\t\t\t\ttype=\"button\"\n\t\t\t\t\t\t\tselected={!usesCustom}\n\t\t\t\t\t\t\tonClick={() =>\n\t\t\t\t\t\t\t\tpatch({ handover: { ...handover, method: DEFAULT_METHOD } })\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t>\n\t\t\t\t\t\t\t<RadioButton\n\t\t\t\t\t\t\t\tisActive={!usesCustom}\n\t\t\t\t\t\t\t\tonValueChange={() =>\n\t\t\t\t\t\t\t\t\tpatch({ handover: { ...handover, method: DEFAULT_METHOD } })\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\tskipSelectingOff\n\t\t\t\t\t\t\t\tactiveColor={BASE_COLORS.brand['800']}\n\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t\t<RadioCardText>\n\t\t\t\t\t\t\t\t<TitleSmall color={COLORS.content.primary}>\n\t\t\t\t\t\t\t\t\tUse default settings\n\t\t\t\t\t\t\t\t</TitleSmall>\n\t\t\t\t\t\t\t\t<BodyCaption color={COLORS.content.secondary}>\n\t\t\t\t\t\t\t\t\tAs defined in{' '}\n\t\t\t\t\t\t\t\t\t{onSmartAgentHandover ? (\n\t\t\t\t\t\t\t\t\t\t<ChannelsLink\n\t\t\t\t\t\t\t\t\t\t\tdata-test=\"handover-smart-agent-link\"\n\t\t\t\t\t\t\t\t\t\t\ttype=\"button\"\n\t\t\t\t\t\t\t\t\t\t\t// The link sits inside the card's own click target, so\n\t\t\t\t\t\t\t\t\t\t\t// stop the click bubbling up and re-selecting the card.\n\t\t\t\t\t\t\t\t\t\t\tonClick={(event) => {\n\t\t\t\t\t\t\t\t\t\t\t\tevent.stopPropagation();\n\t\t\t\t\t\t\t\t\t\t\t\tonSmartAgentHandover();\n\t\t\t\t\t\t\t\t\t\t\t}}\n\t\t\t\t\t\t\t\t\t\t\tstyle={{ display: 'inline-flex' }}\n\t\t\t\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t\t\t\t\tSmart agent handover\n\t\t\t\t\t\t\t\t\t\t\t<RedirectIcon width={12} height={12} />\n\t\t\t\t\t\t\t\t\t\t</ChannelsLink>\n\t\t\t\t\t\t\t\t\t) : (\n\t\t\t\t\t\t\t\t\t\t'Smart agent handover'\n\t\t\t\t\t\t\t\t\t)}\n\t\t\t\t\t\t\t\t</BodyCaption>\n\t\t\t\t\t\t\t</RadioCardText>\n\t\t\t\t\t\t</RadioCard>\n\n\t\t\t\t\t\t{/* Custom handover rules aren't built yet — the card is shown so the\n\t\t\t\t\t\t merchant knows it's coming, but it can't be selected. */}\n\t\t\t\t\t\t<Tooltip\n\t\t\t\t\t\t\tbody=\"Custom handover rules are coming soon. For now this agent follows your smart agent handover settings.\"\n\t\t\t\t\t\t\tplacement=\"top\"\n\t\t\t\t\t\t>\n\t\t\t\t\t\t\t{/* A disabled <button> fires no mouse events, so the tooltip would\n\t\t\t\t\t\t\t never open on the card itself — the span is the hover target\n\t\t\t\t\t\t\t (same wrapper IconButton uses for its disabled tooltip). It also\n\t\t\t\t\t\t\t has to carry the card's `flex: 1`, since it is now the flex item. */}\n\t\t\t\t\t\t\t<span\n\t\t\t\t\t\t\t\tstyle={{\n\t\t\t\t\t\t\t\t\tflex: 1,\n\t\t\t\t\t\t\t\t\tdisplay: 'flex',\n\t\t\t\t\t\t\t\t\tcursor: 'not-allowed',\n\t\t\t\t\t\t\t\t}}\n\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t\t<RadioCard\n\t\t\t\t\t\t\t\t\tdata-test=\"handover-method-custom\"\n\t\t\t\t\t\t\t\t\ttype=\"button\"\n\t\t\t\t\t\t\t\t\tdisabled\n\t\t\t\t\t\t\t\t\tselected={usesCustom}\n\t\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t\t\t<RadioButton\n\t\t\t\t\t\t\t\t\t\tisActive={usesCustom}\n\t\t\t\t\t\t\t\t\t\tisDisabled\n\t\t\t\t\t\t\t\t\t\tonValueChange={() => undefined}\n\t\t\t\t\t\t\t\t\t\tskipSelectingOff\n\t\t\t\t\t\t\t\t\t\tactiveColor={BASE_COLORS.brand['800']}\n\t\t\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t\t\t\t<RadioCardText>\n\t\t\t\t\t\t\t\t\t\t<TitleSmall color={COLORS.content.inactive}>\n\t\t\t\t\t\t\t\t\t\t\tCustom instructions\n\t\t\t\t\t\t\t\t\t\t</TitleSmall>\n\t\t\t\t\t\t\t\t\t\t<BodyCaption color={COLORS.content.inactive}>\n\t\t\t\t\t\t\t\t\t\t\tWrite custom handover rules for this agent.\n\t\t\t\t\t\t\t\t\t\t</BodyCaption>\n\t\t\t\t\t\t\t\t\t</RadioCardText>\n\t\t\t\t\t\t\t\t</RadioCard>\n\t\t\t\t\t\t\t</span>\n\t\t\t\t\t\t</Tooltip>\n\t\t\t\t\t</CardRow>\n\t\t\t\t</FieldBlock>\n\n\t\t\t\t{usesCustom && <HandoverWhenField />}\n\t\t\t</SectionBodyWrap>\n\t\t</div>\n\t);\n};\n\n/** The free-text \"Handover when\" field, shared by both layouts. */\nconst HandoverWhenField: React.FC = () => {\n\tconst { value, patch, charLimits } = useAgentBuilderContext();\n\tconst { handover } = value;\n\n\treturn (\n\t\t<AiTextArea\n\t\t\tdata-test=\"handover-when\"\n\t\t\tlabel=\"Handover when\"\n\t\t\tvalue={handover.when}\n\t\t\tonChange={(text) => patch({ handover: { ...handover, when: text } })}\n\t\t\tmaxLength={charLimits.handoverWhen}\n\t\t\tplaceholder=\"e.g. Hand over if the customer is angry or asks for a human three times. Hand over if the order value exceeds ₹5,000.\"\n\t\t\tminHeight=\"120px\"\n\t\t/>\n\t);\n};\n"],"names":["STEP","STEP_DEFINITIONS","DEFAULT_METHOD","Step4HandoverRules","value","patch","applicationType","onSmartAgentHandover","useAgentBuilderContext","handover","isBik","appTypeLabel","usesCustom","jsxs","jsx","StepSectionHeader","SectionBodyWrap","FieldBlock","TitleSmall","COLORS","CardRow","RadioCard","RadioButton","BASE_COLORS","RadioCardText","BodyCaption","ChannelsLink","event","RedirectIcon","Tooltip","HandoverWhenField","charLimits","AiTextArea","text"],"mappings":"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"}
|
|
@@ -1,6 +1,6 @@
|
|
|
1
|
-
"use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const i=require("../constants/tools.js"),d=(e,t="Manifest")
|
|
1
|
+
"use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const i=require("../constants/tools.js"),d=(e,t="Manifest")=>!e||e===i.ToolSource.Manifest?t:i.TOOL_SOURCE_LABELS[e]??e,f=e=>{const t=e?String(e):"";return t==="BIK"?"BIK":t==="BSP"?"BSP":"Manifest"},L=(e,t,n="Manifest")=>[...e.map(a=>({id:a.tool_id,label:`${d(a.source,n)} : ${a.display_name}`,meta:{kind:"tool",plainLabel:a.display_name,source:a.source,authRequired:a.auth_required}})),...t.map(a=>({id:a.id,label:`sub-agent: ${a.name}`,meta:{kind:"subagent",plainLabel:a.name}}))],p=e=>e.replace(/^\{\{|\}\}$/g,""),$=(e=[])=>{const t=[],n=a=>{const o=a.actualValue;if(o){const l=p(o);t.push({id:l,label:`{{${l}}}`,meta:{kind:"variable",plainLabel:a.displayName}})}Object.values(a.variables??{}).forEach(n)};return e.forEach(n),t},b=e=>{if(e.tool_key==="send_slack_message")return String(e.params.channelId?.value??"").trim()||"Send Slack message";if(e.tool_key==="send_email"){const t=String(e.params.name?.value??"").trim();return t||String(e.params.sendTo?.value??"").split(",").map(n=>n.trim()).filter(Boolean)[0]||"Send email"}return e.tool_key},g=e=>e.name||"Rest API",S=e=>{const t=g(e);return{id:e.id,label:`${i.TOOL_SOURCE_LABELS[i.ToolSource.RestApi]} : ${t}`,meta:{kind:"tool",plainLabel:t,source:i.ToolSource.RestApi}}},T=e=>{const t=e.tool_key==="send_slack_message"?i.ToolSource.Slack:i.ToolSource.EmailHandover,n=b(e);return{id:e.id,label:`${i.TOOL_SOURCE_LABELS[t]} : ${n}`,meta:{kind:"tool",plainLabel:n,source:t}}},_=(e=[],t=[])=>[...t.map(S),...e.map(T)],r=e=>e.replace(/&/g,"&").replace(/</g,"<").replace(/>/g,">"),s=e=>r(e).replace(/"/g,"""),k=(e,t,n,a)=>`<span data-type="mentionAgent" class="bik-mention bik-mention--agent" data-id="${s(e)}" data-label="${s(t)}" data-kind="${s(n)}"`+(a?` data-source="${s(a)}"`:"")+`>${r(t)}</span>`,E=(e,t,n,a)=>k(e,t,n,a),O=e=>{const t=new Map;for(const n of e){const a=n.meta;a?.kind==="tool"?t.set(`tool:${String(n.id)}`,n):a?.kind==="subagent"?t.set(`subagent:${String(n.id)}`,n):a?.kind==="variable"&&t.set(`variable:${String(n.id)}`,n)}return t},c=/\{\{((?:tool|subagent|variable):[^{}]+)\}\}/g,v=(e,t)=>{let n="",a=0;c.lastIndex=0;let o;for(;(o=c.exec(e))!==null;){n+=r(e.slice(a,o.index));const l=t.get(o[1]);if(l){const m=l.meta;n+=k(String(l.id),l.label,m.kind,m.source)}else n+=r(o[0]);a=c.lastIndex}return n+=r(e.slice(a)),n.replace(/\n/g,"<br>")},I=(e,t=[])=>{if(!e)return"";const n=O(t);return e.split(/\n{2,}/).map(a=>`<p>${v(a,n)}</p>`).join("")},M=(e,t,n)=>t==="variable"?`{{variable:${e}}}`:(t??(n.has(e)?"tool":"subagent"))==="tool"?`{{tool:${e}}}`:`{{subagent:${e}}}`,u=(e,t)=>{switch(e.type){case"text":return e.text??"";case"mentionAgent":case"mentionTeam":{const n=e.attrs?.id;if(n==null)return"";const a=e.attrs?.kind;return M(String(n),a==null?null:String(a),t)}case"variable":return`{{${String(e.attrs?.variableName??"")}}}`;case"hardBreak":return`
|
|
2
2
|
`;case"orderedList":case"bulletList":{const n=e.type==="orderedList";return(e.content??[]).map((a,o)=>`${n?`${o+1}.`:"-"} ${u(a,t).replace(/\n+$/,"")}`).join(`
|
|
3
3
|
`)+`
|
|
4
4
|
`}default:{const n=(e.content??[]).map(o=>u(o,t)).join("");return["paragraph","heading","listItem","blockquote"].includes(e.type)?`${n}
|
|
5
|
-
`:n}}},A=(e,t)=>{if(!e)return"";const n=new Set(t.map(a=>a.tool_id));return u(e,n).replace(/\n+$/,"")};exports.TOOL_SOURCE_LABELS=i.TOOL_SOURCE_LABELS;exports.appTypeLabel=
|
|
5
|
+
`:n}}},A=(e,t)=>{if(!e)return"";const n=new Set(t.map(a=>a.tool_id));return u(e,n).replace(/\n+$/,"")};exports.TOOL_SOURCE_LABELS=i.TOOL_SOURCE_LABELS;exports.appTypeLabel=f;exports.buildAgentMentionItems=L;exports.buildCustomToolMentionItems=_;exports.buildMentionHtml=E;exports.buildVariableMentionItems=$;exports.configToolMentionItem=T;exports.configToolName=b;exports.editorDocToInstructions=A;exports.instructionsToEditorHtml=I;exports.restApiMentionItem=S;exports.restApiToolName=g;exports.toolSourceLabel=d;exports.variableTokenName=p;
|
|
6
6
|
//# sourceMappingURL=mentionSerialization.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"mentionSerialization.js","sources":["../../../../../src/components/agent-builder/utils/mentionSerialization.ts"],"sourcesContent":["import type { ApplicationType } from '@bikdotai/bik-models/growth';\nimport { MentionItem } from '@src/editor';\nimport type {\n\tSubHeader,\n\tVariableListInterfaceV3,\n\tVariableV3,\n} from '../../variable-picker-v3/model';\nimport {\n\tAgentTool,\n\tConfigToolConfig,\n\tRestApiToolConfig,\n\tSubAgentRef,\n} from '../AgentBuilder.model';\nimport { TOOL_SOURCE_LABELS, ToolSource } from '../constants/tools';\n\n/**\n * Serialization helpers between the BikEditor document and the firebase\n * `instructions` string.\n *\n * Firebase stores `instructions` as PLAIN TEXT with inline reference tokens:\n * - `{{subagent:<agentId>}}` — hand-off to another agent\n * - `{{tool:<tool_id>}}` — an action the agent can call\n * - `{{variable:<name>}}` — a template variable picked from the catalog\n *\n * In the editor those references are inserted via the `@` mention menu (which we\n * populate with BOTH tools and sub-agents). Mention nodes keep their `id` in the\n * ProseMirror doc JSON (the rendered HTML drops it), so we serialize from the doc\n * JSON — not from HTML.\n */\n\nexport interface MentionKindMeta {\n\t/** Distinguishes a tool / sub-agent / variable reference. */\n\tkind: 'tool' | 'subagent' | 'variable';\n\t/** Plain item name (no prefix) shown in the picker dropdown rows. */\n\tplainLabel?: string;\n\t/** For tools: the source bucket (manifest / shopify / …) the picker groups by. */\n\tsource?: string;\n\t/** For tools: touches customer-private data → shows a shield in the picker. */\n\tauthRequired?: boolean;\n}\n\n// Source labels moved to constants/tools.ts; re-exported for existing importers.\nexport { TOOL_SOURCE_LABELS };\n\n/** Human label for a tool source; falls back to the host-app label, then the raw key. */\nexport const toolSourceLabel = (\n\tsource: string | undefined,\n\tfallback = 'Manifest',\n): string => {\n\tif (!source) {\n\t\treturn fallback;\n\t}\n\treturn TOOL_SOURCE_LABELS[source as ToolSource] ?? source;\n};\n\n/** Human label for the host application, used as the tool-chip prefix. */\nexport const appTypeLabel = (applicationType?: ApplicationType): string => {\n\tconst key = applicationType ? String(applicationType) : '';\n\tif (key === 'BIK') {\n\t\treturn 'BIK';\n\t}\n\tif (key === 'BSP') {\n\t\treturn 'BSP';\n\t}\n\treturn 'Manifest';\n};\n\n/**\n * Build the combined `@` mention list from the available tools + sub-agents.\n *\n * The `label` is the CHIP text shown once inserted — tools read\n * `\"<App> : <tool name>\"` (e.g. \"Manifest : Look up order\"), sub-agents read\n * `\"sub-agent: <name>\"`. `meta.plainLabel` is the un-prefixed name for the\n * picker rows, and `meta.kind` drives the `{{tool}}` / `{{subagent}}` colour.\n */\nexport const buildAgentMentionItems = (\n\ttools: AgentTool[],\n\tsubAgents: SubAgentRef[],\n\tappLabel = 'Manifest',\n): MentionItem[] => [\n\t...tools.map(\n\t\t(t): MentionItem => ({\n\t\t\tid: t.tool_id,\n\t\t\tlabel: `${toolSourceLabel(t.source, appLabel)} : ${t.display_name}`,\n\t\t\tmeta: {\n\t\t\t\tkind: 'tool',\n\t\t\t\tplainLabel: t.display_name,\n\t\t\t\tsource: t.source,\n\t\t\t\tauthRequired: t.auth_required,\n\t\t\t},\n\t\t}),\n\t),\n\t...subAgents.map(\n\t\t(s): MentionItem => ({\n\t\t\tid: s.id,\n\t\t\tlabel: `sub-agent: ${s.name}`,\n\t\t\tmeta: { kind: 'subagent', plainLabel: s.name },\n\t\t}),\n\t),\n];\n\n/** Strip the `{{ }}` wrapper from a variable token (`{{a.b}}` → `a.b`). */\nexport const variableTokenName = (actualValue: string): string =>\n\tactualValue.replace(/^\\{\\{|\\}\\}$/g, '');\n\n/**\n * Flatten the (nested) variable catalog into mention items, so stored\n * `{{<name>}}` tokens rehydrate as `Variable: <display name>` chips. The item\n * id is the BARE token name (no braces) — `resolveMentionToken` re-wraps it on\n * save. Merge alongside {@link buildAgentMentionItems} for serialization.\n */\nexport const buildVariableMentionItems = (\n\tvariablesData: VariableListInterfaceV3[] = [],\n): MentionItem[] => {\n\tconst items: MentionItem[] = [];\n\tconst walk = (entry: VariableListInterfaceV3 | SubHeader | VariableV3) => {\n\t\tconst actual = (entry as VariableV3).actualValue;\n\t\tif (actual) {\n\t\t\tconst name = variableTokenName(actual);\n\t\t\titems.push({\n\t\t\t\tid: name,\n\t\t\t\t// Chip text is the raw token — designers want variables to read as\n\t\t\t\t// {{a.b.c}} (styled purple by the editor), not a labelled chip.\n\t\t\t\tlabel: `{{${name}}}`,\n\t\t\t\tmeta: { kind: 'variable', plainLabel: entry.displayName },\n\t\t\t});\n\t\t}\n\t\tObject.values(entry.variables ?? {}).forEach(walk);\n\t};\n\tvariablesData.forEach(walk);\n\treturn items;\n};\n\n/** Display name for a shared config tool: first recipient / channel, else generic. */\nexport const configToolName = (t: ConfigToolConfig): string => {\n\tif (t.tool_key === 'send_slack_message') {\n\t\treturn (\n\t\t\tString(t.params['channelId']?.value ?? '').trim() || 'Send Slack message'\n\t\t);\n\t}\n\treturn (\n\t\tString(t.params['sendTo']?.value ?? '')\n\t\t\t.split(',')\n\t\t\t.map((s) => s.trim())\n\t\t\t.filter(Boolean)[0] || 'Send email'\n\t);\n};\n\n/** Display name for a Rest API tool row / chip. */\nexport const restApiToolName = (t: RestApiToolConfig): string =>\n\tt.name || 'Rest API';\n\n/** The `@`-mention chip item for a Rest API tool (kind 'tool', restapi source). */\nexport const restApiMentionItem = (t: RestApiToolConfig): MentionItem => {\n\tconst name = restApiToolName(t);\n\treturn {\n\t\tid: t.id,\n\t\tlabel: `${TOOL_SOURCE_LABELS[ToolSource.RestApi]} : ${name}`,\n\t\tmeta: { kind: 'tool', plainLabel: name, source: ToolSource.RestApi },\n\t};\n};\n\n/** The `@`-mention chip item for a shared config tool (email / Slack). */\nexport const configToolMentionItem = (t: ConfigToolConfig): MentionItem => {\n\tconst source =\n\t\tt.tool_key === 'send_slack_message'\n\t\t\t? ToolSource.Slack\n\t\t\t: ToolSource.EmailHandover;\n\tconst name = configToolName(t);\n\treturn {\n\t\tid: t.id,\n\t\tlabel: `${TOOL_SOURCE_LABELS[source]} : ${name}`,\n\t\tmeta: { kind: 'tool', plainLabel: name, source },\n\t};\n};\n\n/**\n * Mention items for the inline-configured custom tools (Rest API + email / Slack)\n * so their `{{tool:<id>}}` tokens rehydrate as chips — they live on the agent\n * value, not in the catalog `availableTools`. Merge alongside\n * {@link buildAgentMentionItems} in the editor's mention list.\n */\nexport const buildCustomToolMentionItems = (\n\tconfigTools: ConfigToolConfig[] = [],\n\trestApiTools: RestApiToolConfig[] = [],\n): MentionItem[] => [\n\t...restApiTools.map(restApiMentionItem),\n\t...configTools.map(configToolMentionItem),\n];\n\nconst escapeHtml = (raw: string): string =>\n\traw.replace(/&/g, '&').replace(/</g, '<').replace(/>/g, '>');\n\nconst escapeAttr = (raw: string): string =>\n\tescapeHtml(raw).replace(/\"/g, '"');\n\n/**\n * The HTML for a single mention chip. Must round-trip through the TipTap mention\n * extension's `parseHTML` (`span[data-type=\"mentionAgent\"]`, reading\n * `data-id`/`data-label`/`data-kind`) — see MentionExtension.ts. `normalizeHtml`\n * is taught to keep `data-type=\"mention…\"` spans so this survives to the parser.\n */\nconst mentionSpanHtml = (\n\tid: string,\n\tlabel: string,\n\tkind: string,\n\tsource?: string,\n): string =>\n\t`<span data-type=\"mentionAgent\" class=\"bik-mention bik-mention--agent\"` +\n\t` data-id=\"${escapeAttr(id)}\" data-label=\"${escapeAttr(label)}\"` +\n\t` data-kind=\"${escapeAttr(kind)}\"` +\n\t(source ? ` data-source=\"${escapeAttr(source)}\"` : '') +\n\t`>${escapeHtml(label)}</span>`;\n\n/**\n * Public: HTML for one mention chip, for inserting at the cursor (e.g. when a\n * tool / sub-agent is added from the Step-3 side panel). Round-trips through the\n * same parser path as the rehydrated chips. `source` (tool source bucket) drives\n * the chip's leading icon.\n */\nexport const buildMentionHtml = (\n\tid: string,\n\tlabel: string,\n\tkind: 'tool' | 'subagent' | 'variable',\n\tsource?: string,\n): string => mentionSpanHtml(id, label, kind, source);\n\n/**\n * `{{tool:<id>}}` / `{{subagent:<id>}}` / `{{<variableName>}}` → the mention\n * item that produced them. The map key is the token's INNER text.\n */\nconst buildTokenLookup = (\n\tmentionItems: MentionItem[],\n): Map<string, MentionItem> => {\n\tconst byToken = new Map<string, MentionItem>();\n\tfor (const item of mentionItems) {\n\t\tconst meta = item.meta as unknown as MentionKindMeta | undefined;\n\t\t// Everything is keyed by its kind-prefixed id (a tool's id is its tool_id).\n\t\tif (meta?.kind === 'tool') {\n\t\t\tbyToken.set(`tool:${String(item.id)}`, item);\n\t\t} else if (meta?.kind === 'subagent') {\n\t\t\tbyToken.set(`subagent:${String(item.id)}`, item);\n\t\t} else if (meta?.kind === 'variable') {\n\t\t\tbyToken.set(`variable:${String(item.id)}`, item);\n\t\t}\n\t}\n\treturn byToken;\n};\n\n// Matches the kind-prefixed reference tokens we render as chips. Other\n// `{{var}}` tokens fall through untouched (left as literal text for the\n// variable decoration).\nconst REFERENCE_TOKEN = /\\{\\{((?:tool|subagent|variable):[^{}]+)\\}\\}/g;\n\n/** Escape plain text, swapping recognised reference tokens for mention spans. */\nconst inlineToHtml = (\n\tsegment: string,\n\tbyToken: Map<string, MentionItem>,\n): string => {\n\tlet out = '';\n\tlet lastIndex = 0;\n\tREFERENCE_TOKEN.lastIndex = 0;\n\tlet match: RegExpExecArray | null;\n\twhile ((match = REFERENCE_TOKEN.exec(segment)) !== null) {\n\t\tout += escapeHtml(segment.slice(lastIndex, match.index));\n\t\tconst item = byToken.get(match[1]);\n\t\tif (item) {\n\t\t\tconst meta = item.meta as unknown as MentionKindMeta;\n\t\t\tout += mentionSpanHtml(\n\t\t\t\tString(item.id),\n\t\t\t\titem.label,\n\t\t\t\tmeta.kind,\n\t\t\t\tmeta.source,\n\t\t\t);\n\t\t} else {\n\t\t\t// Not in any available list (removed tool / unknown variable) → keep the\n\t\t\t// raw token as literal text.\n\t\t\tout += escapeHtml(match[0]);\n\t\t}\n\t\tlastIndex = REFERENCE_TOKEN.lastIndex;\n\t}\n\tout += escapeHtml(segment.slice(lastIndex));\n\treturn out.replace(/\\n/g, '<br>');\n};\n\n/**\n * Convert the stored instructions string into HTML for `BikEditor.initialContent`.\n * `{{tool:KEY}}` / `{{subagent:ID}}` tokens are rehydrated into mention chips\n * (resolved via `mentionItems`); any other `{{…}}` token is left as literal text\n * for the editor's variable decoration. Newlines become paragraph / line breaks.\n */\nexport const instructionsToEditorHtml = (\n\ttext: string,\n\tmentionItems: MentionItem[] = [],\n): string => {\n\tif (!text) {\n\t\treturn '';\n\t}\n\tconst byToken = buildTokenLookup(mentionItems);\n\treturn text\n\t\t.split(/\\n{2,}/)\n\t\t.map((para) => `<p>${inlineToHtml(para, byToken)}</p>`)\n\t\t.join('');\n};\n\ninterface ProseMirrorNode {\n\ttype: string;\n\ttext?: string;\n\tattrs?: Record<string, unknown>;\n\tcontent?: ProseMirrorNode[];\n}\n\n/**\n * The token for a mention node. All kinds store their id in the node, so the\n * token value is just that id — the kind only picks the prefix. The node's\n * `kind` attr is authoritative; `toolIds` is a fallback for older content\n * saved before the kind attr existed.\n */\nconst resolveMentionToken = (\n\tid: string,\n\tkind: string | null,\n\ttoolIds: Set<string>,\n): string => {\n\tif (kind === 'variable') {\n\t\treturn `{{variable:${id}}}`;\n\t}\n\tconst resolved = kind ?? (toolIds.has(id) ? 'tool' : 'subagent');\n\treturn resolved === 'tool' ? `{{tool:${id}}}` : `{{subagent:${id}}}`;\n};\n\nconst nodeToText = (node: ProseMirrorNode, toolIds: Set<string>): string => {\n\tswitch (node.type) {\n\t\tcase 'text':\n\t\t\treturn node.text ?? '';\n\t\tcase 'mentionAgent':\n\t\tcase 'mentionTeam': {\n\t\t\tconst id = node.attrs?.['id'];\n\t\t\tif (id == null) {\n\t\t\t\treturn '';\n\t\t\t}\n\t\t\tconst kind = node.attrs?.['kind'];\n\t\t\treturn resolveMentionToken(\n\t\t\t\tString(id),\n\t\t\t\tkind == null ? null : String(kind),\n\t\t\t\ttoolIds,\n\t\t\t);\n\t\t}\n\t\tcase 'variable':\n\t\t\treturn `{{${String(node.attrs?.['variableName'] ?? '')}}}`;\n\t\tcase 'hardBreak':\n\t\t\treturn '\\n';\n\t\tcase 'orderedList':\n\t\tcase 'bulletList': {\n\t\t\t// Flattening to plain text otherwise drops the list markers, so a\n\t\t\t// numbered / bulleted list looks \"removed\" after publish. Emit an\n\t\t\t// ordinal (\"1. \") / bullet (\"- \") prefix per item to preserve it.\n\t\t\tconst ordered = node.type === 'orderedList';\n\t\t\treturn (\n\t\t\t\t(node.content ?? [])\n\t\t\t\t\t.map(\n\t\t\t\t\t\t(item, i) =>\n\t\t\t\t\t\t\t`${ordered ? `${i + 1}.` : '-'} ${nodeToText(\n\t\t\t\t\t\t\t\titem,\n\t\t\t\t\t\t\t\ttoolIds,\n\t\t\t\t\t\t\t).replace(/\\n+$/, '')}`,\n\t\t\t\t\t)\n\t\t\t\t\t.join('\\n') + '\\n'\n\t\t\t);\n\t\t}\n\t\tdefault: {\n\t\t\tconst inner = (node.content ?? [])\n\t\t\t\t.map((child) => nodeToText(child, toolIds))\n\t\t\t\t.join('');\n\t\t\t// Block nodes terminate with a newline so paragraphs stay separated.\n\t\t\tconst BLOCK_NODES = ['paragraph', 'heading', 'listItem', 'blockquote'];\n\t\t\treturn BLOCK_NODES.includes(node.type) ? `${inner}\\n` : inner;\n\t\t}\n\t}\n};\n\n/**\n * Convert a BikEditor document (from `ref.getJSON()`) into the firebase\n * instructions string, replacing mention nodes with `{{subagent:<id>}}` /\n * `{{tool:<tool_id>}}` tokens.\n */\nexport const editorDocToInstructions = (\n\tdoc: Record<string, unknown> | null,\n\ttools: AgentTool[],\n): string => {\n\tif (!doc) {\n\t\treturn '';\n\t}\n\tconst toolIds = new Set(tools.map((t) => t.tool_id));\n\treturn nodeToText(doc as unknown as ProseMirrorNode, toolIds).replace(\n\t\t/\\n+$/,\n\t\t'',\n\t);\n};\n"],"names":["toolSourceLabel","source","fallback","TOOL_SOURCE_LABELS","appTypeLabel","applicationType","key","buildAgentMentionItems","tools","subAgents","appLabel","t","s","variableTokenName","actualValue","buildVariableMentionItems","variablesData","items","walk","entry","actual","name","configToolName","restApiToolName","restApiMentionItem","ToolSource","configToolMentionItem","buildCustomToolMentionItems","configTools","restApiTools","escapeHtml","raw","escapeAttr","mentionSpanHtml","id","label","kind","buildMentionHtml","buildTokenLookup","mentionItems","byToken","item","meta","REFERENCE_TOKEN","inlineToHtml","segment","out","lastIndex","match","instructionsToEditorHtml","text","para","resolveMentionToken","toolIds","nodeToText","node","ordered","i","inner","child","editorDocToInstructions","doc"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"mentionSerialization.js","sources":["../../../../../src/components/agent-builder/utils/mentionSerialization.ts"],"sourcesContent":["import type { ApplicationType } from '@bikdotai/bik-models/growth';\nimport { MentionItem } from '@src/editor';\nimport type {\n\tSubHeader,\n\tVariableListInterfaceV3,\n\tVariableV3,\n} from '../../variable-picker-v3/model';\nimport {\n\tAgentTool,\n\tConfigToolConfig,\n\tRestApiToolConfig,\n\tSubAgentRef,\n} from '../AgentBuilder.model';\nimport { TOOL_SOURCE_LABELS, ToolSource } from '../constants/tools';\n\n/**\n * Serialization helpers between the BikEditor document and the firebase\n * `instructions` string.\n *\n * Firebase stores `instructions` as PLAIN TEXT with inline reference tokens:\n * - `{{subagent:<agentId>}}` — hand-off to another agent\n * - `{{tool:<tool_id>}}` — an action the agent can call\n * - `{{variable:<name>}}` — a template variable picked from the catalog\n *\n * In the editor those references are inserted via the `@` mention menu (which we\n * populate with BOTH tools and sub-agents). Mention nodes keep their `id` in the\n * ProseMirror doc JSON (the rendered HTML drops it), so we serialize from the doc\n * JSON — not from HTML.\n */\n\nexport interface MentionKindMeta {\n\t/** Distinguishes a tool / sub-agent / variable reference. */\n\tkind: 'tool' | 'subagent' | 'variable';\n\t/** Plain item name (no prefix) shown in the picker dropdown rows. */\n\tplainLabel?: string;\n\t/** For tools: the source bucket (manifest / shopify / …) the picker groups by. */\n\tsource?: string;\n\t/** For tools: touches customer-private data → shows a shield in the picker. */\n\tauthRequired?: boolean;\n}\n\n// Source labels moved to constants/tools.ts; re-exported for existing importers.\nexport { TOOL_SOURCE_LABELS };\n\n/**\n * Human label for a tool source. The native tools are named after whichever host\n * product the merchant is in — \"Manifest\" in Manifest, \"BIK\" in BIK — so both an\n * explicit `manifest` source and a missing one resolve to `appLabel`. Every other\n * source is a vendor name, then the raw key.\n */\nexport const toolSourceLabel = (\n\tsource: string | undefined,\n\tappLabel = 'Manifest',\n): string => {\n\tif (!source || source === ToolSource.Manifest) {\n\t\treturn appLabel;\n\t}\n\treturn TOOL_SOURCE_LABELS[source as ToolSource] ?? source;\n};\n\n/** Human label for the host application, used as the tool-chip prefix. */\nexport const appTypeLabel = (applicationType?: ApplicationType): string => {\n\tconst key = applicationType ? String(applicationType) : '';\n\tif (key === 'BIK') {\n\t\treturn 'BIK';\n\t}\n\tif (key === 'BSP') {\n\t\treturn 'BSP';\n\t}\n\treturn 'Manifest';\n};\n\n/**\n * Build the combined `@` mention list from the available tools + sub-agents.\n *\n * The `label` is the CHIP text shown once inserted — tools read\n * `\"<App> : <tool name>\"` (e.g. \"Manifest : Look up order\"), sub-agents read\n * `\"sub-agent: <name>\"`. `meta.plainLabel` is the un-prefixed name for the\n * picker rows, and `meta.kind` drives the `{{tool}}` / `{{subagent}}` colour.\n */\nexport const buildAgentMentionItems = (\n\ttools: AgentTool[],\n\tsubAgents: SubAgentRef[],\n\tappLabel = 'Manifest',\n): MentionItem[] => [\n\t...tools.map(\n\t\t(t): MentionItem => ({\n\t\t\tid: t.tool_id,\n\t\t\tlabel: `${toolSourceLabel(t.source, appLabel)} : ${t.display_name}`,\n\t\t\tmeta: {\n\t\t\t\tkind: 'tool',\n\t\t\t\tplainLabel: t.display_name,\n\t\t\t\tsource: t.source,\n\t\t\t\tauthRequired: t.auth_required,\n\t\t\t},\n\t\t}),\n\t),\n\t...subAgents.map(\n\t\t(s): MentionItem => ({\n\t\t\tid: s.id,\n\t\t\tlabel: `sub-agent: ${s.name}`,\n\t\t\tmeta: { kind: 'subagent', plainLabel: s.name },\n\t\t}),\n\t),\n];\n\n/** Strip the `{{ }}` wrapper from a variable token (`{{a.b}}` → `a.b`). */\nexport const variableTokenName = (actualValue: string): string =>\n\tactualValue.replace(/^\\{\\{|\\}\\}$/g, '');\n\n/**\n * Flatten the (nested) variable catalog into mention items, so stored\n * `{{<name>}}` tokens rehydrate as `Variable: <display name>` chips. The item\n * id is the BARE token name (no braces) — `resolveMentionToken` re-wraps it on\n * save. Merge alongside {@link buildAgentMentionItems} for serialization.\n */\nexport const buildVariableMentionItems = (\n\tvariablesData: VariableListInterfaceV3[] = [],\n): MentionItem[] => {\n\tconst items: MentionItem[] = [];\n\tconst walk = (entry: VariableListInterfaceV3 | SubHeader | VariableV3) => {\n\t\tconst actual = (entry as VariableV3).actualValue;\n\t\tif (actual) {\n\t\t\tconst name = variableTokenName(actual);\n\t\t\titems.push({\n\t\t\t\tid: name,\n\t\t\t\t// Chip text is the raw token — designers want variables to read as\n\t\t\t\t// {{a.b.c}} (styled purple by the editor), not a labelled chip.\n\t\t\t\tlabel: `{{${name}}}`,\n\t\t\t\tmeta: { kind: 'variable', plainLabel: entry.displayName },\n\t\t\t});\n\t\t}\n\t\tObject.values(entry.variables ?? {}).forEach(walk);\n\t};\n\tvariablesData.forEach(walk);\n\treturn items;\n};\n\n/** Display name for a shared config tool: the merchant's action name when set\n * (MAP-7245), else first recipient / channel (pre-action-name tools), else\n * generic. */\nexport const configToolName = (t: ConfigToolConfig): string => {\n\tif (t.tool_key === 'send_slack_message') {\n\t\treturn (\n\t\t\tString(t.params['channelId']?.value ?? '').trim() || 'Send Slack message'\n\t\t);\n\t}\n\tif (t.tool_key === 'send_email') {\n\t\tconst actionName = String(t.params['name']?.value ?? '').trim();\n\t\tif (actionName) {\n\t\t\treturn actionName;\n\t\t}\n\t\treturn (\n\t\t\tString(t.params['sendTo']?.value ?? '')\n\t\t\t\t.split(',')\n\t\t\t\t.map((s) => s.trim())\n\t\t\t\t.filter(Boolean)[0] || 'Send email'\n\t\t);\n\t}\n\t// Future config-tool keys: no bespoke naming yet — fall back to the key.\n\treturn t.tool_key;\n};\n\n/** Display name for a Rest API tool row / chip. */\nexport const restApiToolName = (t: RestApiToolConfig): string =>\n\tt.name || 'Rest API';\n\n/** The `@`-mention chip item for a Rest API tool (kind 'tool', restapi source). */\nexport const restApiMentionItem = (t: RestApiToolConfig): MentionItem => {\n\tconst name = restApiToolName(t);\n\treturn {\n\t\tid: t.id,\n\t\tlabel: `${TOOL_SOURCE_LABELS[ToolSource.RestApi]} : ${name}`,\n\t\tmeta: { kind: 'tool', plainLabel: name, source: ToolSource.RestApi },\n\t};\n};\n\n/** The `@`-mention chip item for a shared config tool (email / Slack). */\nexport const configToolMentionItem = (t: ConfigToolConfig): MentionItem => {\n\tconst source =\n\t\tt.tool_key === 'send_slack_message'\n\t\t\t? ToolSource.Slack\n\t\t\t: ToolSource.EmailHandover;\n\tconst name = configToolName(t);\n\treturn {\n\t\tid: t.id,\n\t\tlabel: `${TOOL_SOURCE_LABELS[source]} : ${name}`,\n\t\tmeta: { kind: 'tool', plainLabel: name, source },\n\t};\n};\n\n/**\n * Mention items for the inline-configured custom tools (Rest API + email / Slack)\n * so their `{{tool:<id>}}` tokens rehydrate as chips — they live on the agent\n * value, not in the catalog `availableTools`. Merge alongside\n * {@link buildAgentMentionItems} in the editor's mention list.\n */\nexport const buildCustomToolMentionItems = (\n\tconfigTools: ConfigToolConfig[] = [],\n\trestApiTools: RestApiToolConfig[] = [],\n): MentionItem[] => [\n\t...restApiTools.map(restApiMentionItem),\n\t...configTools.map(configToolMentionItem),\n];\n\nconst escapeHtml = (raw: string): string =>\n\traw.replace(/&/g, '&').replace(/</g, '<').replace(/>/g, '>');\n\nconst escapeAttr = (raw: string): string =>\n\tescapeHtml(raw).replace(/\"/g, '"');\n\n/**\n * The HTML for a single mention chip. Must round-trip through the TipTap mention\n * extension's `parseHTML` (`span[data-type=\"mentionAgent\"]`, reading\n * `data-id`/`data-label`/`data-kind`) — see MentionExtension.ts. `normalizeHtml`\n * is taught to keep `data-type=\"mention…\"` spans so this survives to the parser.\n */\nconst mentionSpanHtml = (\n\tid: string,\n\tlabel: string,\n\tkind: string,\n\tsource?: string,\n): string =>\n\t`<span data-type=\"mentionAgent\" class=\"bik-mention bik-mention--agent\"` +\n\t` data-id=\"${escapeAttr(id)}\" data-label=\"${escapeAttr(label)}\"` +\n\t` data-kind=\"${escapeAttr(kind)}\"` +\n\t(source ? ` data-source=\"${escapeAttr(source)}\"` : '') +\n\t`>${escapeHtml(label)}</span>`;\n\n/**\n * Public: HTML for one mention chip, for inserting at the cursor (e.g. when a\n * tool / sub-agent is added from the Step-3 side panel). Round-trips through the\n * same parser path as the rehydrated chips. `source` (tool source bucket) drives\n * the chip's leading icon.\n */\nexport const buildMentionHtml = (\n\tid: string,\n\tlabel: string,\n\tkind: 'tool' | 'subagent' | 'variable',\n\tsource?: string,\n): string => mentionSpanHtml(id, label, kind, source);\n\n/**\n * `{{tool:<id>}}` / `{{subagent:<id>}}` / `{{<variableName>}}` → the mention\n * item that produced them. The map key is the token's INNER text.\n */\nconst buildTokenLookup = (\n\tmentionItems: MentionItem[],\n): Map<string, MentionItem> => {\n\tconst byToken = new Map<string, MentionItem>();\n\tfor (const item of mentionItems) {\n\t\tconst meta = item.meta as unknown as MentionKindMeta | undefined;\n\t\t// Everything is keyed by its kind-prefixed id (a tool's id is its tool_id).\n\t\tif (meta?.kind === 'tool') {\n\t\t\tbyToken.set(`tool:${String(item.id)}`, item);\n\t\t} else if (meta?.kind === 'subagent') {\n\t\t\tbyToken.set(`subagent:${String(item.id)}`, item);\n\t\t} else if (meta?.kind === 'variable') {\n\t\t\tbyToken.set(`variable:${String(item.id)}`, item);\n\t\t}\n\t}\n\treturn byToken;\n};\n\n// Matches the kind-prefixed reference tokens we render as chips. Other\n// `{{var}}` tokens fall through untouched (left as literal text for the\n// variable decoration).\nconst REFERENCE_TOKEN = /\\{\\{((?:tool|subagent|variable):[^{}]+)\\}\\}/g;\n\n/** Escape plain text, swapping recognised reference tokens for mention spans. */\nconst inlineToHtml = (\n\tsegment: string,\n\tbyToken: Map<string, MentionItem>,\n): string => {\n\tlet out = '';\n\tlet lastIndex = 0;\n\tREFERENCE_TOKEN.lastIndex = 0;\n\tlet match: RegExpExecArray | null;\n\twhile ((match = REFERENCE_TOKEN.exec(segment)) !== null) {\n\t\tout += escapeHtml(segment.slice(lastIndex, match.index));\n\t\tconst item = byToken.get(match[1]);\n\t\tif (item) {\n\t\t\tconst meta = item.meta as unknown as MentionKindMeta;\n\t\t\tout += mentionSpanHtml(\n\t\t\t\tString(item.id),\n\t\t\t\titem.label,\n\t\t\t\tmeta.kind,\n\t\t\t\tmeta.source,\n\t\t\t);\n\t\t} else {\n\t\t\t// Not in any available list (removed tool / unknown variable) → keep the\n\t\t\t// raw token as literal text.\n\t\t\tout += escapeHtml(match[0]);\n\t\t}\n\t\tlastIndex = REFERENCE_TOKEN.lastIndex;\n\t}\n\tout += escapeHtml(segment.slice(lastIndex));\n\treturn out.replace(/\\n/g, '<br>');\n};\n\n/**\n * Convert the stored instructions string into HTML for `BikEditor.initialContent`.\n * `{{tool:KEY}}` / `{{subagent:ID}}` tokens are rehydrated into mention chips\n * (resolved via `mentionItems`); any other `{{…}}` token is left as literal text\n * for the editor's variable decoration. Newlines become paragraph / line breaks.\n */\nexport const instructionsToEditorHtml = (\n\ttext: string,\n\tmentionItems: MentionItem[] = [],\n): string => {\n\tif (!text) {\n\t\treturn '';\n\t}\n\tconst byToken = buildTokenLookup(mentionItems);\n\treturn text\n\t\t.split(/\\n{2,}/)\n\t\t.map((para) => `<p>${inlineToHtml(para, byToken)}</p>`)\n\t\t.join('');\n};\n\ninterface ProseMirrorNode {\n\ttype: string;\n\ttext?: string;\n\tattrs?: Record<string, unknown>;\n\tcontent?: ProseMirrorNode[];\n}\n\n/**\n * The token for a mention node. All kinds store their id in the node, so the\n * token value is just that id — the kind only picks the prefix. The node's\n * `kind` attr is authoritative; `toolIds` is a fallback for older content\n * saved before the kind attr existed.\n */\nconst resolveMentionToken = (\n\tid: string,\n\tkind: string | null,\n\ttoolIds: Set<string>,\n): string => {\n\tif (kind === 'variable') {\n\t\treturn `{{variable:${id}}}`;\n\t}\n\tconst resolved = kind ?? (toolIds.has(id) ? 'tool' : 'subagent');\n\treturn resolved === 'tool' ? `{{tool:${id}}}` : `{{subagent:${id}}}`;\n};\n\nconst nodeToText = (node: ProseMirrorNode, toolIds: Set<string>): string => {\n\tswitch (node.type) {\n\t\tcase 'text':\n\t\t\treturn node.text ?? '';\n\t\tcase 'mentionAgent':\n\t\tcase 'mentionTeam': {\n\t\t\tconst id = node.attrs?.['id'];\n\t\t\tif (id == null) {\n\t\t\t\treturn '';\n\t\t\t}\n\t\t\tconst kind = node.attrs?.['kind'];\n\t\t\treturn resolveMentionToken(\n\t\t\t\tString(id),\n\t\t\t\tkind == null ? null : String(kind),\n\t\t\t\ttoolIds,\n\t\t\t);\n\t\t}\n\t\tcase 'variable':\n\t\t\treturn `{{${String(node.attrs?.['variableName'] ?? '')}}}`;\n\t\tcase 'hardBreak':\n\t\t\treturn '\\n';\n\t\tcase 'orderedList':\n\t\tcase 'bulletList': {\n\t\t\t// Flattening to plain text otherwise drops the list markers, so a\n\t\t\t// numbered / bulleted list looks \"removed\" after publish. Emit an\n\t\t\t// ordinal (\"1. \") / bullet (\"- \") prefix per item to preserve it.\n\t\t\tconst ordered = node.type === 'orderedList';\n\t\t\treturn (\n\t\t\t\t(node.content ?? [])\n\t\t\t\t\t.map(\n\t\t\t\t\t\t(item, i) =>\n\t\t\t\t\t\t\t`${ordered ? `${i + 1}.` : '-'} ${nodeToText(\n\t\t\t\t\t\t\t\titem,\n\t\t\t\t\t\t\t\ttoolIds,\n\t\t\t\t\t\t\t).replace(/\\n+$/, '')}`,\n\t\t\t\t\t)\n\t\t\t\t\t.join('\\n') + '\\n'\n\t\t\t);\n\t\t}\n\t\tdefault: {\n\t\t\tconst inner = (node.content ?? [])\n\t\t\t\t.map((child) => nodeToText(child, toolIds))\n\t\t\t\t.join('');\n\t\t\t// Block nodes terminate with a newline so paragraphs stay separated.\n\t\t\tconst BLOCK_NODES = ['paragraph', 'heading', 'listItem', 'blockquote'];\n\t\t\treturn BLOCK_NODES.includes(node.type) ? `${inner}\\n` : inner;\n\t\t}\n\t}\n};\n\n/**\n * Convert a BikEditor document (from `ref.getJSON()`) into the firebase\n * instructions string, replacing mention nodes with `{{subagent:<id>}}` /\n * `{{tool:<tool_id>}}` tokens.\n */\nexport const editorDocToInstructions = (\n\tdoc: Record<string, unknown> | null,\n\ttools: AgentTool[],\n): string => {\n\tif (!doc) {\n\t\treturn '';\n\t}\n\tconst toolIds = new Set(tools.map((t) => t.tool_id));\n\treturn nodeToText(doc as unknown as ProseMirrorNode, toolIds).replace(\n\t\t/\\n+$/,\n\t\t'',\n\t);\n};\n"],"names":["toolSourceLabel","source","appLabel","ToolSource","TOOL_SOURCE_LABELS","appTypeLabel","applicationType","key","buildAgentMentionItems","tools","subAgents","t","s","variableTokenName","actualValue","buildVariableMentionItems","variablesData","items","walk","entry","actual","name","configToolName","actionName","restApiToolName","restApiMentionItem","configToolMentionItem","buildCustomToolMentionItems","configTools","restApiTools","escapeHtml","raw","escapeAttr","mentionSpanHtml","id","label","kind","buildMentionHtml","buildTokenLookup","mentionItems","byToken","item","meta","REFERENCE_TOKEN","inlineToHtml","segment","out","lastIndex","match","instructionsToEditorHtml","text","para","resolveMentionToken","toolIds","nodeToText","node","ordered","i","inner","child","editorDocToInstructions","doc"],"mappings":"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"}
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
"use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const n=require("
|
|
1
|
+
"use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const n=require("react"),e=require("../constants/tools.js"),u=require("../../../icons/Social/Social/SlackIcon.js"),l=require("../../../icons/Informational/Communication/Email.js"),i=require("../../../icons/BIK AI specific/Webhook.js"),a=require("../../../icons/Informational/Identity/PuzzlePiece.js"),s=require("../../../icons/Social/Social/Gorgias.js"),S=require("../../../icons/Social/Channels/Skio.js"),I=require("../../../icons/Social/Channels/ShipStation.js"),d=require("../../../icons/Social/Social/BigCommerce.js"),f=require("../../../icons/Social/Channels/ShopifyBrand.js"),h=require("../../../icons/Social/Channels/ManifestGlass.js"),q=require("../../../icons/Actions/Common actions/LinkSimpleHorizontal.js"),w=o=>o&&typeof o=="object"&&"default"in o?o:{default:o},C=w(n),c={[e.ToolSource.Manifest]:{Icon:h.default,w:24,h:24},[e.ToolSource.Shopify]:{Icon:f.default,w:24,h:24},[e.ToolSource.Bigcommerce]:{Icon:d.default,w:20,h:20},[e.ToolSource.Shipstation]:{Icon:I.default,w:22,h:22},[e.ToolSource.Skio]:{Icon:S.default,w:20,h:20},[e.ToolSource.Gorgias]:{Icon:s.default,w:20,h:20},[e.ToolSource.Integration]:{Icon:a.default,w:20,h:20},[e.ToolSource.RestApi]:{Icon:i.default,w:20,h:20},[e.ToolSource.EmailHandover]:{Icon:l.default,w:20,h:20},[e.ToolSource.Slack]:{Icon:u.default,w:20,h:20}},r={Icon:q.default,w:20,h:20},E=o=>o?c[o]??r:void 0,T=(o,t=0)=>o?C.default.createElement(o.Icon,{width:o.w+t,height:o.h+t}):null;exports.GENERIC_SOURCE_ICON=r;exports.SOURCE_ICONS=c;exports.renderSourceIcon=T;exports.sourceIcon=E;
|
|
2
2
|
//# sourceMappingURL=sourceIcons.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"sourceIcons.js","sources":["../../../../../src/components/agent-builder/utils/sourceIcons.ts"],"sourcesContent":["import
|
|
1
|
+
{"version":3,"file":"sourceIcons.js","sources":["../../../../../src/components/agent-builder/utils/sourceIcons.ts"],"sourcesContent":["import {\n\tBigCommerce,\n\tEmail,\n\tGorgias,\n\tLinkSimpleHorizontal,\n\tManifestGlass,\n\tPuzzlePiece,\n\tShipStation,\n\tShopifyBrand,\n\tSkio,\n\tSlackIcon,\n\tWebhook,\n} from '@src/icons';\nimport React from 'react';\nimport { ToolSource } from '../constants/tools';\nimport type { IconComp, SourceIcon } from '../constants/tools';\n\n// The icon types live with the source enum (constants/tools) to keep the\n// dependency one-directional (util → constants); re-exported here so existing\n// `from '../utils/sourceIcons'` importers keep resolving them.\nexport type { IconComp, SourceIcon };\n\n/**\n * Per-source brand glyph — shared by the `@` picker and the Tools source\n * buttons. Every glyph comes from the shared icon library (`@src/icons`), so all\n * of them sit on a square 24 viewBox and `w`/`h` is purely optical sizing rather\n * than aspect correction. Partial: not every source has a glyph, and the render\n * path null-guards. Look up with {@link sourceIcon} when the key is a dynamic /\n * unknown string rather than a {@link ToolSource}.\n *\n * `Aftership` is deliberately absent — we have no AfterShip brand asset yet, so\n * it resolves to {@link GENERIC_SOURCE_ICON}. Add the glyph to `@src/icons`\n * (same as ShipStation) and add its entry here to fix that.\n */\nexport const SOURCE_ICONS: Partial<Record<ToolSource, SourceIcon>> = {\n\t[ToolSource.Manifest]: { Icon: ManifestGlass as IconComp, w: 24, h: 24 },\n\t[ToolSource.Shopify]: { Icon: ShopifyBrand as IconComp, w: 24, h: 24 },\n\t[ToolSource.Bigcommerce]: { Icon: BigCommerce as IconComp, w: 20, h: 20 },\n\t[ToolSource.Shipstation]: { Icon: ShipStation as IconComp, w: 22, h: 22 },\n\t[ToolSource.Skio]: { Icon: Skio as IconComp, w: 20, h: 20 },\n\t[ToolSource.Gorgias]: { Icon: Gorgias as IconComp, w: 20, h: 20 },\n\t[ToolSource.Integration]: { Icon: PuzzlePiece as IconComp, w: 20, h: 20 },\n\t[ToolSource.RestApi]: { Icon: Webhook as IconComp, w: 20, h: 20 },\n\t[ToolSource.EmailHandover]: { Icon: Email as IconComp, w: 20, h: 20 },\n\t[ToolSource.Slack]: { Icon: SlackIcon as IconComp, w: 20, h: 20 },\n};\n\n/**\n * Generic glyph for a tool whose source has no dedicated brand icon (any custom\n * / future integration the FE doesn't bundle a logo for). Ensures EVERY tool\n * chip still leads with an icon.\n */\nexport const GENERIC_SOURCE_ICON: SourceIcon = {\n\tIcon: LinkSimpleHorizontal as IconComp,\n\tw: 20,\n\th: 20,\n};\n\n/**\n * Lenient icon lookup for a source that may be a raw/dynamic string (a\n * bik-models tool source, an integration key, or the picker's `'other'`\n * fallback). A known source returns its brand glyph; any other NON-EMPTY source\n * falls back to {@link GENERIC_SOURCE_ICON} so no tool renders iconless. An\n * empty/undefined source (e.g. a sub-agent reference) returns `undefined`.\n */\nexport const sourceIcon = (\n\tsource: string | undefined,\n): SourceIcon | undefined =>\n\tsource\n\t\t? SOURCE_ICONS[source as ToolSource] ?? GENERIC_SOURCE_ICON\n\t\t: undefined;\n\n/**\n * Render a {@link SourceIcon} at its declared box. `sizeDelta` nudges both\n * dimensions (e.g. `-4` for the smaller source-button glyph). Returns `null` when\n * no icon is supplied, so callers can drop their own `icon &&` guard.\n */\nexport const renderSourceIcon = (\n\ticon: SourceIcon | undefined,\n\tsizeDelta = 0,\n): React.ReactElement | null =>\n\ticon\n\t\t? React.createElement(icon.Icon, {\n\t\t\t\twidth: icon.w + sizeDelta,\n\t\t\t\theight: icon.h + sizeDelta,\n\t\t })\n\t\t: null;\n"],"names":["SOURCE_ICONS","ToolSource","ManifestGlass","ShopifyBrand","BigCommerce","ShipStation","Skio","Gorgias","PuzzlePiece","Webhook","Email","SlackIcon","GENERIC_SOURCE_ICON","LinkSimpleHorizontal","sourceIcon","source","renderSourceIcon","icon","sizeDelta","React"],"mappings":"61BAkCaA,EAAwD,CACpE,CAACC,EAAAA,WAAW,QAAQ,EAAG,CAAE,KAAMC,EAAAA,QAA2B,EAAG,GAAI,EAAG,EAAA,EACpE,CAACD,EAAAA,WAAW,OAAO,EAAG,CAAE,KAAME,EAAAA,QAA0B,EAAG,GAAI,EAAG,EAAA,EAClE,CAACF,EAAAA,WAAW,WAAW,EAAG,CAAE,KAAMG,EAAAA,QAAyB,EAAG,GAAI,EAAG,EAAA,EACrE,CAACH,EAAAA,WAAW,WAAW,EAAG,CAAE,KAAMI,EAAAA,QAAyB,EAAG,GAAI,EAAG,EAAA,EACrE,CAACJ,EAAAA,WAAW,IAAI,EAAG,CAAE,KAAMK,EAAAA,QAAkB,EAAG,GAAI,EAAG,EAAA,EACvD,CAACL,EAAAA,WAAW,OAAO,EAAG,CAAE,KAAMM,EAAAA,QAAqB,EAAG,GAAI,EAAG,EAAA,EAC7D,CAACN,EAAAA,WAAW,WAAW,EAAG,CAAE,KAAMO,EAAAA,QAAyB,EAAG,GAAI,EAAG,EAAA,EACrE,CAACP,EAAAA,WAAW,OAAO,EAAG,CAAE,KAAMQ,EAAAA,QAAqB,EAAG,GAAI,EAAG,EAAA,EAC7D,CAACR,EAAAA,WAAW,aAAa,EAAG,CAAE,KAAMS,EAAAA,QAAmB,EAAG,GAAI,EAAG,EAAA,EACjE,CAACT,EAAAA,WAAW,KAAK,EAAG,CAAE,KAAMU,EAAAA,QAAuB,EAAG,GAAI,EAAG,EAAA,CAC9D,EAOaC,EAAkC,CAC9C,KAAMC,EAAAA,QACN,EAAG,GACH,EAAG,EACJ,EASaC,EACZC,GAEAA,EACGf,EAAae,CAAoB,GAAKH,EACtC,OAOSI,EAAmB,CAC/BC,EACAC,EAAY,IAEZD,EACGE,UAAM,cAAcF,EAAK,KAAM,CAC/B,MAAOA,EAAK,EAAIC,EAChB,OAAQD,EAAK,EAAIC,CACjB,CAAC,EACD"}
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
"use strict";Object.defineProperties(exports,{__esModule:{value:!0},[Symbol.toStringTag]:{value:"Module"}});const e=require("react/jsx-runtime"),s=({size:r=24,...t})=>{const i={width:r,height:r,...t};return e.jsxs("svg",{viewBox:"0 0 24 24",fill:"none",xmlns:"http://www.w3.org/2000/svg",...i,children:[e.jsx("g",{transform:"scale(0.328767)",children:e.jsx("g",{filter:"url(#filter0_di_183_75946)",children:e.jsxs("g",{clipPath:"url(#clip0_183_75946)",children:[e.jsx("rect",{x:4.49512,y:1.79785,width:64,height:64,rx:32,fill:"url(#paint0_linear_183_75946)"}),e.jsxs("g",{filter:"url(#filter1_di_183_75946)",children:[e.jsx("path",{d:"M35.0908 9.95325C35.0839 10.1412 35.0791 10.33 35.0791 10.5197C35.0791 18.6633 41.47 25.3141 49.5098 25.7316V25.7745C41.9243 26.1684 35.8079 32.1112 35.1406 39.6212H35.0088C34.3183 31.8494 27.7926 25.7552 19.8418 25.7531V25.7511C28.2533 25.7495 35.0721 18.9315 35.0723 10.5197C35.0723 10.33 35.0674 10.1412 35.0605 9.95325H35.0908Z",fill:"white"}),e.jsx("path",{d:"M46.4941 31.1718C46.5247 36.2372 50.5107 40.3646 55.5195 40.621V40.6464C50.7769 40.889 46.9543 44.6028 46.5352 49.2968H46.4541C46.0211 44.4471 41.9541 40.6437 36.9941 40.6337C42.2245 40.6239 46.4629 36.397 46.4941 31.1718ZM46.4941 31.0546C46.4935 30.9542 46.489 30.8543 46.4854 30.7548H46.5039C46.5002 30.8543 46.4948 30.9542 46.4941 31.0546Z",fill:"white"}),e.jsx("path",{d:"M30.8359 38.1207C30.8362 42.2118 34.0448 45.5528 38.083 45.7653V45.7858C34.2726 45.9864 31.2029 48.9743 30.8682 52.7477H30.8037C30.4571 48.8402 27.1771 45.7761 23.1797 45.776C23.1771 45.776 23.1744 45.776 23.1719 45.776V45.775C23.1744 45.775 23.1771 45.776 23.1797 45.776C27.408 45.7759 30.8358 42.3481 30.8359 38.1198C30.8359 38.025 30.8325 37.9304 30.8291 37.8365H30.8428C30.8393 37.9308 30.8359 38.0257 30.8359 38.1207Z",fill:"white"})]})]})})}),e.jsxs("defs",{children:[e.jsxs("filter",{id:"filter0_di_183_75946",x:395298e-9,y:-371933e-10,width:72.9894,height:72.9894,filterUnits:"userSpaceOnUse",colorInterpolationFilters:"sRGB",children:[e.jsx("feFlood",{floodOpacity:0,result:"BackgroundImageFix"}),e.jsx("feColorMatrix",{in:"SourceAlpha",type:"matrix",values:"0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 127 0",result:"hardAlpha"}),e.jsx("feOffset",{dy:2.69683}),e.jsx("feGaussianBlur",{stdDeviation:2.24736}),e.jsx("feComposite",{in2:"hardAlpha",operator:"out"}),e.jsx("feColorMatrix",{type:"matrix",values:"0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0.03 0"}),e.jsx("feBlend",{mode:"normal",in2:"BackgroundImageFix",result:"effect1_dropShadow_183_75946"}),e.jsx("feBlend",{mode:"normal",in:"SourceGraphic",in2:"BackgroundImageFix",result:"shape"}),e.jsx("feColorMatrix",{in:"SourceAlpha",type:"matrix",values:"0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 127 0",result:"hardAlpha"}),e.jsx("feOffset",{dy:2.69683}),e.jsx("feGaussianBlur",{stdDeviation:1.79789}),e.jsx("feComposite",{in2:"hardAlpha",operator:"arithmetic",k2:-1,k3:1}),e.jsx("feColorMatrix",{type:"matrix",values:"0 0 0 0 0.611765 0 0 0 0 0.556863 0 0 0 0 1 0 0 0 1 0"}),e.jsx("feBlend",{mode:"normal",in2:"shape",result:"effect2_innerShadow_183_75946"}),e.jsx("feBlend",{mode:"normal",in:"effect2_innerShadow_183_75946",in2:"effect1_dropShadow_183_75946",result:"effect2_innerShadow_183_75946"})]}),e.jsxs("filter",{id:"filter1_di_183_75946",x:9.57136,y:-.317191,width:56.2186,height:63.3353,filterUnits:"userSpaceOnUse",colorInterpolationFilters:"sRGB",children:[e.jsx("feFlood",{floodOpacity:0,result:"BackgroundImageFix"}),e.jsx("feColorMatrix",{in:"SourceAlpha",type:"matrix",values:"0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 127 0",result:"hardAlpha"}),e.jsx("feOffset",{dx:.224736,dy:.224736}),e.jsx("feGaussianBlur",{stdDeviation:1.74475}),e.jsx("feColorMatrix",{type:"matrix",values:"0 0 0 0 1 0 0 0 0 1 0 0 0 0 1 0 0 0 0.32 0"}),e.jsx("feBlend",{mode:"normal",in2:"BackgroundImageFix",result:"effect1_dropShadow_183_75946"}),e.jsx("feBlend",{mode:"normal",in:"SourceGraphic",in2:"effect1_dropShadow_183_75946",result:"shape"}),e.jsx("feColorMatrix",{in:"SourceAlpha",type:"matrix",values:"0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 127 0",result:"hardAlpha"}),e.jsx("feOffset",{dy:.449472}),e.jsx("feGaussianBlur",{stdDeviation:2.48333}),e.jsx("feComposite",{in2:"hardAlpha",operator:"arithmetic",k2:-1,k3:1}),e.jsx("feColorMatrix",{type:"matrix",values:"0 0 0 0 0.631373 0 0 0 0 0.576471 0 0 0 0 1 0 0 0 0.15 0"}),e.jsx("feBlend",{mode:"normal",in2:"shape",result:"effect2_innerShadow_183_75946"})]}),e.jsxs("linearGradient",{id:"paint0_linear_183_75946",x1:5.15282,y1:8.56964,x2:79.428,y2:63.7667,gradientUnits:"userSpaceOnUse",children:[e.jsx("stop",{stopColor:"#320465"}),e.jsx("stop",{offset:.5,stopColor:"#5548D8"}),e.jsx("stop",{offset:1,stopColor:"#28034E"})]}),e.jsx("clipPath",{id:"clip0_183_75946",children:e.jsx("rect",{x:4.49512,y:1.79785,width:64,height:64,rx:32,fill:"white"})})]})]})};exports.default=s;
|
|
2
|
+
//# sourceMappingURL=ManifestGlass.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ManifestGlass.js","sources":["../../../../../src/icons/Social/Channels/ManifestGlass.tsx"],"sourcesContent":["import type { SVGProps } from 'react';\n\ninterface Props extends SVGProps<SVGSVGElement> {\n\tsize?: number | string;\n}\nconst SvgManifestGlass = ({ size = 24, ...rest }: Props) => {\n\tconst props = {\n\t\twidth: size,\n\t\theight: size,\n\t\t...rest,\n\t};\n\treturn (\n\t\t<svg\n\t\t\tviewBox=\"0 0 24 24\"\n\t\t\tfill=\"none\"\n\t\t\txmlns=\"http://www.w3.org/2000/svg\"\n\t\t\t{...props}\n\t\t>\n\t\t\t<g transform=\"scale(0.328767)\">\n\t\t\t\t<g filter=\"url(#filter0_di_183_75946)\">\n\t\t\t\t\t<g clipPath=\"url(#clip0_183_75946)\">\n\t\t\t\t\t\t<rect\n\t\t\t\t\t\t\tx={4.49512}\n\t\t\t\t\t\t\ty={1.79785}\n\t\t\t\t\t\t\twidth={64}\n\t\t\t\t\t\t\theight={64}\n\t\t\t\t\t\t\trx={32}\n\t\t\t\t\t\t\tfill=\"url(#paint0_linear_183_75946)\"\n\t\t\t\t\t\t/>\n\t\t\t\t\t\t<g filter=\"url(#filter1_di_183_75946)\">\n\t\t\t\t\t\t\t<path\n\t\t\t\t\t\t\t\td=\"M35.0908 9.95325C35.0839 10.1412 35.0791 10.33 35.0791 10.5197C35.0791 18.6633 41.47 25.3141 49.5098 25.7316V25.7745C41.9243 26.1684 35.8079 32.1112 35.1406 39.6212H35.0088C34.3183 31.8494 27.7926 25.7552 19.8418 25.7531V25.7511C28.2533 25.7495 35.0721 18.9315 35.0723 10.5197C35.0723 10.33 35.0674 10.1412 35.0605 9.95325H35.0908Z\"\n\t\t\t\t\t\t\t\tfill=\"white\"\n\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t\t<path\n\t\t\t\t\t\t\t\td=\"M46.4941 31.1718C46.5247 36.2372 50.5107 40.3646 55.5195 40.621V40.6464C50.7769 40.889 46.9543 44.6028 46.5352 49.2968H46.4541C46.0211 44.4471 41.9541 40.6437 36.9941 40.6337C42.2245 40.6239 46.4629 36.397 46.4941 31.1718ZM46.4941 31.0546C46.4935 30.9542 46.489 30.8543 46.4854 30.7548H46.5039C46.5002 30.8543 46.4948 30.9542 46.4941 31.0546Z\"\n\t\t\t\t\t\t\t\tfill=\"white\"\n\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t\t<path\n\t\t\t\t\t\t\t\td=\"M30.8359 38.1207C30.8362 42.2118 34.0448 45.5528 38.083 45.7653V45.7858C34.2726 45.9864 31.2029 48.9743 30.8682 52.7477H30.8037C30.4571 48.8402 27.1771 45.7761 23.1797 45.776C23.1771 45.776 23.1744 45.776 23.1719 45.776V45.775C23.1744 45.775 23.1771 45.776 23.1797 45.776C27.408 45.7759 30.8358 42.3481 30.8359 38.1198C30.8359 38.025 30.8325 37.9304 30.8291 37.8365H30.8428C30.8393 37.9308 30.8359 38.0257 30.8359 38.1207Z\"\n\t\t\t\t\t\t\t\tfill=\"white\"\n\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t</g>\n\t\t\t\t\t</g>\n\t\t\t\t</g>\n\t\t\t</g>\n\t\t\t<defs>\n\t\t\t\t<filter\n\t\t\t\t\tid=\"filter0_di_183_75946\"\n\t\t\t\t\tx={0.000395298}\n\t\t\t\t\ty={-0.0000371933}\n\t\t\t\t\twidth={72.9894}\n\t\t\t\t\theight={72.9894}\n\t\t\t\t\tfilterUnits=\"userSpaceOnUse\"\n\t\t\t\t\tcolorInterpolationFilters=\"sRGB\"\n\t\t\t\t>\n\t\t\t\t\t<feFlood floodOpacity={0} result=\"BackgroundImageFix\" />\n\t\t\t\t\t<feColorMatrix\n\t\t\t\t\t\tin=\"SourceAlpha\"\n\t\t\t\t\t\ttype=\"matrix\"\n\t\t\t\t\t\tvalues=\"0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 127 0\"\n\t\t\t\t\t\tresult=\"hardAlpha\"\n\t\t\t\t\t/>\n\t\t\t\t\t<feOffset dy={2.69683} />\n\t\t\t\t\t<feGaussianBlur stdDeviation={2.24736} />\n\t\t\t\t\t<feComposite in2=\"hardAlpha\" operator=\"out\" />\n\t\t\t\t\t<feColorMatrix\n\t\t\t\t\t\ttype=\"matrix\"\n\t\t\t\t\t\tvalues=\"0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0.03 0\"\n\t\t\t\t\t/>\n\t\t\t\t\t<feBlend\n\t\t\t\t\t\tmode=\"normal\"\n\t\t\t\t\t\tin2=\"BackgroundImageFix\"\n\t\t\t\t\t\tresult=\"effect1_dropShadow_183_75946\"\n\t\t\t\t\t/>\n\t\t\t\t\t<feBlend\n\t\t\t\t\t\tmode=\"normal\"\n\t\t\t\t\t\tin=\"SourceGraphic\"\n\t\t\t\t\t\tin2=\"BackgroundImageFix\"\n\t\t\t\t\t\tresult=\"shape\"\n\t\t\t\t\t/>\n\t\t\t\t\t<feColorMatrix\n\t\t\t\t\t\tin=\"SourceAlpha\"\n\t\t\t\t\t\ttype=\"matrix\"\n\t\t\t\t\t\tvalues=\"0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 127 0\"\n\t\t\t\t\t\tresult=\"hardAlpha\"\n\t\t\t\t\t/>\n\t\t\t\t\t<feOffset dy={2.69683} />\n\t\t\t\t\t<feGaussianBlur stdDeviation={1.79789} />\n\t\t\t\t\t<feComposite in2=\"hardAlpha\" operator=\"arithmetic\" k2={-1} k3={1} />\n\t\t\t\t\t<feColorMatrix\n\t\t\t\t\t\ttype=\"matrix\"\n\t\t\t\t\t\tvalues=\"0 0 0 0 0.611765 0 0 0 0 0.556863 0 0 0 0 1 0 0 0 1 0\"\n\t\t\t\t\t/>\n\t\t\t\t\t<feBlend\n\t\t\t\t\t\tmode=\"normal\"\n\t\t\t\t\t\tin2=\"shape\"\n\t\t\t\t\t\tresult=\"effect2_innerShadow_183_75946\"\n\t\t\t\t\t/>\n\t\t\t\t\t<feBlend\n\t\t\t\t\t\tmode=\"normal\"\n\t\t\t\t\t\tin=\"effect2_innerShadow_183_75946\"\n\t\t\t\t\t\tin2=\"effect1_dropShadow_183_75946\"\n\t\t\t\t\t\tresult=\"effect2_innerShadow_183_75946\"\n\t\t\t\t\t/>\n\t\t\t\t</filter>\n\t\t\t\t<filter\n\t\t\t\t\tid=\"filter1_di_183_75946\"\n\t\t\t\t\tx={9.57136}\n\t\t\t\t\ty={-0.317191}\n\t\t\t\t\twidth={56.2186}\n\t\t\t\t\theight={63.3353}\n\t\t\t\t\tfilterUnits=\"userSpaceOnUse\"\n\t\t\t\t\tcolorInterpolationFilters=\"sRGB\"\n\t\t\t\t>\n\t\t\t\t\t<feFlood floodOpacity={0} result=\"BackgroundImageFix\" />\n\t\t\t\t\t<feColorMatrix\n\t\t\t\t\t\tin=\"SourceAlpha\"\n\t\t\t\t\t\ttype=\"matrix\"\n\t\t\t\t\t\tvalues=\"0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 127 0\"\n\t\t\t\t\t\tresult=\"hardAlpha\"\n\t\t\t\t\t/>\n\t\t\t\t\t<feOffset dx={0.224736} dy={0.224736} />\n\t\t\t\t\t<feGaussianBlur stdDeviation={1.74475} />\n\t\t\t\t\t<feColorMatrix\n\t\t\t\t\t\ttype=\"matrix\"\n\t\t\t\t\t\tvalues=\"0 0 0 0 1 0 0 0 0 1 0 0 0 0 1 0 0 0 0.32 0\"\n\t\t\t\t\t/>\n\t\t\t\t\t<feBlend\n\t\t\t\t\t\tmode=\"normal\"\n\t\t\t\t\t\tin2=\"BackgroundImageFix\"\n\t\t\t\t\t\tresult=\"effect1_dropShadow_183_75946\"\n\t\t\t\t\t/>\n\t\t\t\t\t<feBlend\n\t\t\t\t\t\tmode=\"normal\"\n\t\t\t\t\t\tin=\"SourceGraphic\"\n\t\t\t\t\t\tin2=\"effect1_dropShadow_183_75946\"\n\t\t\t\t\t\tresult=\"shape\"\n\t\t\t\t\t/>\n\t\t\t\t\t<feColorMatrix\n\t\t\t\t\t\tin=\"SourceAlpha\"\n\t\t\t\t\t\ttype=\"matrix\"\n\t\t\t\t\t\tvalues=\"0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 127 0\"\n\t\t\t\t\t\tresult=\"hardAlpha\"\n\t\t\t\t\t/>\n\t\t\t\t\t<feOffset dy={0.449472} />\n\t\t\t\t\t<feGaussianBlur stdDeviation={2.48333} />\n\t\t\t\t\t<feComposite in2=\"hardAlpha\" operator=\"arithmetic\" k2={-1} k3={1} />\n\t\t\t\t\t<feColorMatrix\n\t\t\t\t\t\ttype=\"matrix\"\n\t\t\t\t\t\tvalues=\"0 0 0 0 0.631373 0 0 0 0 0.576471 0 0 0 0 1 0 0 0 0.15 0\"\n\t\t\t\t\t/>\n\t\t\t\t\t<feBlend\n\t\t\t\t\t\tmode=\"normal\"\n\t\t\t\t\t\tin2=\"shape\"\n\t\t\t\t\t\tresult=\"effect2_innerShadow_183_75946\"\n\t\t\t\t\t/>\n\t\t\t\t</filter>\n\t\t\t\t<linearGradient\n\t\t\t\t\tid=\"paint0_linear_183_75946\"\n\t\t\t\t\tx1={5.15282}\n\t\t\t\t\ty1={8.56964}\n\t\t\t\t\tx2={79.428}\n\t\t\t\t\ty2={63.7667}\n\t\t\t\t\tgradientUnits=\"userSpaceOnUse\"\n\t\t\t\t>\n\t\t\t\t\t<stop stopColor=\"#320465\" />\n\t\t\t\t\t<stop offset={0.5} stopColor=\"#5548D8\" />\n\t\t\t\t\t<stop offset={1} stopColor=\"#28034E\" />\n\t\t\t\t</linearGradient>\n\t\t\t\t<clipPath id=\"clip0_183_75946\">\n\t\t\t\t\t<rect\n\t\t\t\t\t\tx={4.49512}\n\t\t\t\t\t\ty={1.79785}\n\t\t\t\t\t\twidth={64}\n\t\t\t\t\t\theight={64}\n\t\t\t\t\t\trx={32}\n\t\t\t\t\t\tfill=\"white\"\n\t\t\t\t\t/>\n\t\t\t\t</clipPath>\n\t\t\t</defs>\n\t\t</svg>\n\t);\n};\nexport default SvgManifestGlass;\n"],"names":["SvgManifestGlass","size","rest","props","jsxs","jsx"],"mappings":"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"}
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
"use strict";Object.defineProperties(exports,{__esModule:{value:!0},[Symbol.toStringTag]:{value:"Module"}});const r=require("react/jsx-runtime"),w=({size:A=24,...t})=>{const e={width:A,height:A,...t};return r.jsx("svg",{viewBox:"0 0 24 24",fill:"none",xmlns:"http://www.w3.org/2000/svg",xmlnsXlink:"http://www.w3.org/1999/xlink",...e,children:r.jsx("image",{width:24,height:24,preserveAspectRatio:"xMidYMid meet",xlinkHref:"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAGUAAABhCAYAAADP7W/ZAAAEuElEQVR42u2d3W3bMBDH85A+pI0dN7Ak562dIIXlFH1sJmhWqDdwNogniDuBM4I6gVfwBu0G7QStLrQQxfCHRB6PJ+lPgEBRwAF5P/GOH38eT05QUOqWfhpPL8fDfzY1/+13WNBD6aWjmS0U+i0s6AVKsrSHEi1hQS/uK1nbQrlI49+wIHM5uxle2wIp6tlNdAtLKnFdLy4sgQvjKm8+Rx9cgWC0MJbTL6cX/TT6xQXF/K3LQWeNyeS2nriAcLsxrj6KlPN09EBfJLkdlw77AFJaTGYuI4b6Rn08n8QPjQBSdHwwjv7YrKTJ73O6rEOuzCbG9NJ4Rn0r/o5qMGUg250nOMeGu4ERr3zD2DVqjsExsS2e7mufSjD7gOwwwCpfXT/mC8E5VfPvOCt/eaHqZmRvt29J/1elfarAVAXShaoCDIAoAwMgysAAiDIwAKIMDIAoA0MrYDqXgKHrn+V43W/rTYYfNawpyvX9OPpLx720uNP20VB7yGbeXdi7yfBOS6fzBd6i/BWSAXI4T3raJyjYCLEdsr0z0E9Hnw6N6H4aZaFHifDxbHQbqqP5ZONrjY8nmEsTlzWRy5CMLRQ3aC/KNmD20qu5PJwAh2lSLszECPcOSsYbsk2QbRYTZP12rI6rqgfHXq5UdQISCsrcV9yQ8Mc+4w3ZphVQXOOGvQ7gat4mKAu+0ZH8FFlkCcWbgO4rzrTGDRc4HC4tWKB3mRIXWyNa9Qau8YZsI95o28VjqLhhuxZziTfiakwbbe+zKCFg3JCON6IuzEYB34arCDbuTGS02Gp7uwpFRLtsO+PqKhSvbmyjEMwas42tCEoBhnXEcGh7uw7lRbs8vGaAwbMTDCivr2JUngAYAbPRz3KflQDKXuF7ZnTL8XTPYqlFR6MNgLJdAQVQAAVQAAVQAAVQAAVQAAVQAAVQAAVQAAVQAAVQwkIhUdxgPKLt+wW3oh5Q9l18ShZk816a3FVqBKeUE1CYdW8cVwcAxZPuzUUtCOGER8G3rdK+2xIjAQW+jSvrKhSxfkO2WkO5IqmdthM8M+ieAhRbqRXZSLyhLronl0ysUoXa6JI5PMhlKFdtmNYspSTRpWxNLv0LcmnITJGjJZMgTc2DM5R3hiP9bivu0bsmlw4VNzpxj1463mwyhf/APfoK/th3vOGIG62/Ry8ZbyTStgd7bkowYc6Kw6XRGkmuzclaHAhtPUvnz7KNN77ihrrUUi5vLrq6tF46uq8+bX/9goPsRyScvEHiKQ2XeCP13MexNgouGuNZyM4ecmnmsZmw+S23Rsu9dyDUaW0pcM0+U/KoMZE12crrJiwFrtAuoYnVuxsLFeCbDUVgbw9g9CaLBhiNz60DjDIgAKMUCMAoBVIHjMkbSU/0JXPSzxoNLT2x8axdXoc26POzGnn7qE1F+zYpOrIqShZVQI6BqZpRNdQzG/RR5CCOLvCoD/vapxLILjB1X3DYgrOSOBKw0WXRvlp55KgGUgZjVJRuW9c+MmtznaEXovdGAGnC6Wawo9p2geFzZW2Qz6oonI+zNTEvsl4wDPFFXNvbhdGCUaIz6K8dgvsaFlQ2E4Pr8hZXRrPGKEu6Ut5Oht9oSmtT6bdN7PN/YyHwpPYJugAAAAAASUVORK5CYII="})})};exports.default=w;
|
|
2
|
+
//# sourceMappingURL=ShipStation.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ShipStation.js","sources":["../../../../../src/icons/Social/Channels/ShipStation.tsx"],"sourcesContent":["import type { SVGProps } from 'react';\n\ninterface Props extends SVGProps<SVGSVGElement> {\n\tsize?: number | string;\n}\nconst SvgShipStation = ({ size = 24, ...rest }: Props) => {\n\tconst props = {\n\t\twidth: size,\n\t\theight: size,\n\t\t...rest,\n\t};\n\treturn (\n\t\t<svg\n\t\t\tviewBox=\"0 0 24 24\"\n\t\t\tfill=\"none\"\n\t\t\txmlns=\"http://www.w3.org/2000/svg\"\n\t\t\txmlnsXlink=\"http://www.w3.org/1999/xlink\"\n\t\t\t{...props}\n\t\t>\n\t\t\t<image\n\t\t\t\twidth={24}\n\t\t\t\theight={24}\n\t\t\t\tpreserveAspectRatio=\"xMidYMid meet\"\n\t\t\t\txlinkHref=\"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAGUAAABhCAYAAADP7W/ZAAAEuElEQVR42u2d3W3bMBDH85A+pI0dN7Ak562dIIXlFH1sJmhWqDdwNogniDuBM4I6gVfwBu0G7QStLrQQxfCHRB6PJ+lPgEBRwAF5P/GOH38eT05QUOqWfhpPL8fDfzY1/+13WNBD6aWjmS0U+i0s6AVKsrSHEi1hQS/uK1nbQrlI49+wIHM5uxle2wIp6tlNdAtLKnFdLy4sgQvjKm8+Rx9cgWC0MJbTL6cX/TT6xQXF/K3LQWeNyeS2nriAcLsxrj6KlPN09EBfJLkdlw77AFJaTGYuI4b6Rn08n8QPjQBSdHwwjv7YrKTJ73O6rEOuzCbG9NJ4Rn0r/o5qMGUg250nOMeGu4ERr3zD2DVqjsExsS2e7mufSjD7gOwwwCpfXT/mC8E5VfPvOCt/eaHqZmRvt29J/1elfarAVAXShaoCDIAoAwMgysAAiDIwAKIMDIAoA0MrYDqXgKHrn+V43W/rTYYfNawpyvX9OPpLx720uNP20VB7yGbeXdi7yfBOS6fzBd6i/BWSAXI4T3raJyjYCLEdsr0z0E9Hnw6N6H4aZaFHifDxbHQbqqP5ZONrjY8nmEsTlzWRy5CMLRQ3aC/KNmD20qu5PJwAh2lSLszECPcOSsYbsk2QbRYTZP12rI6rqgfHXq5UdQISCsrcV9yQ8Mc+4w3ZphVQXOOGvQ7gat4mKAu+0ZH8FFlkCcWbgO4rzrTGDRc4HC4tWKB3mRIXWyNa9Qau8YZsI95o28VjqLhhuxZziTfiakwbbe+zKCFg3JCON6IuzEYB34arCDbuTGS02Gp7uwpFRLtsO+PqKhSvbmyjEMwas42tCEoBhnXEcGh7uw7lRbs8vGaAwbMTDCivr2JUngAYAbPRz3KflQDKXuF7ZnTL8XTPYqlFR6MNgLJdAQVQAAVQAAVQAAVQAAVQAAVQAAVQAAVQAAVQAAVQwkIhUdxgPKLt+wW3oh5Q9l18ShZk816a3FVqBKeUE1CYdW8cVwcAxZPuzUUtCOGER8G3rdK+2xIjAQW+jSvrKhSxfkO2WkO5IqmdthM8M+ieAhRbqRXZSLyhLronl0ysUoXa6JI5PMhlKFdtmNYspSTRpWxNLv0LcmnITJGjJZMgTc2DM5R3hiP9bivu0bsmlw4VNzpxj1463mwyhf/APfoK/th3vOGIG62/Ry8ZbyTStgd7bkowYc6Kw6XRGkmuzclaHAhtPUvnz7KNN77ihrrUUi5vLrq6tF46uq8+bX/9goPsRyScvEHiKQ2XeCP13MexNgouGuNZyM4ecmnmsZmw+S23Rsu9dyDUaW0pcM0+U/KoMZE12crrJiwFrtAuoYnVuxsLFeCbDUVgbw9g9CaLBhiNz60DjDIgAKMUCMAoBVIHjMkbSU/0JXPSzxoNLT2x8axdXoc26POzGnn7qE1F+zYpOrIqShZVQI6BqZpRNdQzG/RR5CCOLvCoD/vapxLILjB1X3DYgrOSOBKw0WXRvlp55KgGUgZjVJRuW9c+MmtznaEXovdGAGnC6Wawo9p2geFzZW2Qz6oonI+zNTEvsl4wDPFFXNvbhdGCUaIz6K8dgvsaFlQ2E4Pr8hZXRrPGKEu6Ut5Oht9oSmtT6bdN7PN/YyHwpPYJugAAAAAASUVORK5CYII=\"\n\t\t\t/>\n\t\t</svg>\n\t);\n};\nexport default SvgShipStation;\n"],"names":["SvgShipStation","size","rest","props","jsx"],"mappings":"iJAKMA,EAAiB,CAAC,CAAE,KAAAC,EAAO,GAAI,GAAGC,KAAkB,CACzD,MAAMC,EAAQ,CACb,MAAOF,EACP,OAAQA,EACR,GAAGC,CAAA,EAEJ,OACCE,EAAAA,IAAC,MAAA,CACA,QAAQ,YACR,KAAK,OACL,MAAM,6BACN,WAAW,+BACV,GAAGD,EAEJ,SAAAC,EAAAA,IAAC,QAAA,CACA,MAAO,GACP,OAAQ,GACR,oBAAoB,gBACpB,UAAU,grDAAA,CAAA,CACX,CAAA,CAGH"}
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
"use strict";Object.defineProperties(exports,{__esModule:{value:!0},[Symbol.toStringTag]:{value:"Module"}});const e=require("react/jsx-runtime"),G=({size:A=24,...s})=>{const t={width:A,height:A,...s};return e.jsx("svg",{viewBox:"0 0 24 24",fill:"none",xmlns:"http://www.w3.org/2000/svg",xmlnsXlink:"http://www.w3.org/1999/xlink",...t,children:e.jsx("image",{width:24,height:24,preserveAspectRatio:"xMidYMid meet",xlinkHref:"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAADAAAAAwCAYAAABXAvmHAAAABGdBTUEAALGPC/xhBQAAACBjSFJNAAB6JgAAgIQAAPoAAACA6AAAdTAAAOpgAAA6mAAAF3CculE8AAAAjmVYSWZNTQAqAAAACAAFARoABQAAAAEAAABKARsABQAAAAEAAABSASgAAwAAAAEAAgAAATwAAgAAAAkAAABah2kABAAAAAEAAABkAAAAAAAAAEgAAAABAAAASAAAAAFpbWFnZXJ5NAAAAAOgAQADAAAAAQABAACgAgAEAAAAAQAAADCgAwAEAAAAAQAAADAAAAAAiPHIXQAAAAlwSFlzAAALEwAACxMBAJqcGAAAAWJpVFh0WE1MOmNvbS5hZG9iZS54bXAAAAAAADx4OnhtcG1ldGEgeG1sbnM6eD0iYWRvYmU6bnM6bWV0YS8iIHg6eG1wdGs9IlhNUCBDb3JlIDYuMC4wIj4KICAgPHJkZjpSREYgeG1sbnM6cmRmPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5LzAyLzIyLXJkZi1zeW50YXgtbnMjIj4KICAgICAgPHJkZjpEZXNjcmlwdGlvbiByZGY6YWJvdXQ9IiIKICAgICAgICAgICAgeG1sbnM6dGlmZj0iaHR0cDovL25zLmFkb2JlLmNvbS90aWZmLzEuMC8iPgogICAgICAgICA8dGlmZjpIb3N0Q29tcHV0ZXI+aW1hZ2VyeTQ8L3RpZmY6SG9zdENvbXB1dGVyPgogICAgICA8L3JkZjpEZXNjcmlwdGlvbj4KICAgPC9yZGY6UkRGPgo8L3g6eG1wbWV0YT4K6GIO0QAADwtJREFUaAWVWQmUllUZfv5lVpBdYJTNERUXTFT0hJqY6MnMssUTWp5TuZQm6aHjmgspqScqU0zLpfIcs6JOZR33DExRUUFEUBbZZASGAQeG2ef//9vzvPfe7/9mBup0me+7977v8673vfd+M2TWvbHZAfxBhg/f7DL+ZX0ml0Emy4f/suzBJ0u+MJls1uREt3mQ9fJej1RJtdE4NB3skXGkia6J5/u5fAl08Tl2offQ6Kt3O++dN5nUi8olpVbSi2D66kjLcO7kN1vGeSfEltpgLoyCVTGCKjFclLFJb57nKxnOp5RYC76PjmhN+Cw1qmeLvYYZzsKcnYLxj8Z8FBR7icohPbERaTybR7rYZYiHaq7AUvQIF8DHTD+Mr5l86tNI9rkkKkK8IOFES8TmktSKpDRkxY+PULLER53owXLZotkQg02Y0Md5P7wxiIs1FmUCPXYsZy2ZqaNS34upUZz7caClFFkJCVxSyXl+9M4HQZ4cNx61qFeEnuytaRrM+i7yfW9gQUxhnJV77Udz1IKwMZdFfRJUVBRWQ7KRFCzLsIK1Mgt80eIqieRbRApvsXly0JeUYqI/DATeT8ubylR0ieNkWHA+Qqs1w5oinkRBoTktLOd6LMsayHbo/QqEXSV9xosAwThWidqPF/Kr7/eXp5CtQZ+WzZFqxySZGmepRcui3nuQfnsNUVGCkC962DwiTNilMQo6lpDHBhxRhtMrknyUgRPQCU9z3/JyRnIKL6gxQlSoFUk4HmhOGC3KSjw8shtlQ6rhtEdUlzy9MrZ0AnGe3tgSslXQEacJm/aLcPLA+EZNXiIxAA+WQ7HZiC/1ifOaRX1GJU8G1QxLphylh0Y1mtdhhMQZ4qUnbGYva1q8nA0JSBrH/ifFT5jI2y62uXfGv6NhuS+n5I02cQxHG703vqzSj8QVOjYPj55QKxNtF3kEJL23WU5WwghO+S6GWA4gUojvZzzSzB8FQowttw/KZ1RE77CX51zBh82pmeeWe6PJrh7bIGFsDL18C2o9LiiJumwPRJWRKDHLHiUjzXoaUg2LaidH4MqA59NhG5BPrPyKK2dBGk9E4TgRIKGJTLrpF6ZvE9A09mLk7eMqRTfXOPebV1gK2g85ZjTOg20araisUPmjWCyaDZnyFw9H0h03seh2yXAQbaqXSusl6Y9bjaxFnAEMGjnWswzDsWmbT2LxGNXIH6eGsbFfaa229kBVZSUqK/JYsWw1tmzaiopcjqiyEY/jPHhTyUA72zrRwaeqqiIEGT0kjsO0fHps3u7jxQXwmZURrYYSZEkiwfeO5akl5yPnjE/XmPnFLy/FVVfcjgtmzsKTf34B1QxIGGXREiaHglO5XBaP3r8A55/9bZw/43I8+LPf0R5TI/vJckjUazA1qZfZTs1tSGLen8/eilRZ01SeqiZFC2R1ekqlIq6fPQ/PvPBvHu0ORf4zPMfKuvxxIWBJVOTzeP+99Zg392EU0GNafnrnIzhl+vE49oRJ6OnuCSYUuOyFW1tUGfwvTUm2GzhH07bklLBVIT2rsrIM+VLyY7B0KvCJKZOMXwVl3Ydutui8WvwOsvOetByzrRX2X+IKNEsaS07J8iLJWzSTJ0W8yFdOk3FA+08JOUnv5bgisofQPJe9Mp+zxz4zojFuyi9+8UwMHzKUDsmlcpMBK0UqyfFR0MVCAYcfMQG3zv0ujpx0CCYdWY9b75qFIyfXo6dHK0LHgnO6G/K0matgSkU0ZtnxME0IdhMbjM7FhausqLAy2NG4C7t27UYlN1zdqAMxaPABNNhtvFKRWYwGqDWYYnmV0NVJjFnKoLIyj3xV3oL4+rfOx9e+eR52N+9l0bH4iI1NeyTLld2zqxnbtjYxiCxGjh6OQSOHAAUWKU84+1qlzWhLvV1k9N2aWDL4/qoNuPe+x7Hs7fcwasRwtLd3IFORwXnnTMell34FtQNqiI9SQVgdHXjjxSX4wc33gG5jb3cbrrz8Ilxy5QWGb93bimefehkPP7QA48cchF8+frs5lqfNXTt346H7/4iFz72O6qoqbFi3BcNGDsaZn/kkvj17JurGjUShu5A4n1jtWLvTta9pch2rm1z3uo/d5pfWuGmjvuBG43g3uXaG+3DROvf8g8+5MZjqRuI4d/OFdzq3vtVte2WjO2nYua4e09zBONH95Ir5zm3pdG0rm9zZh840+RsvnOualjU4t7XdvfT4S+6sSTPdWJxE3hR38WlXudKONldsanMNyze5c4+52A3FMW7eNfNdR0u7+/HV97k6nGDP9PqvuHVLVzvX3uEKe/a6QsteV+SjnidZ2LTsK1gqry1ejo2NDRiAGt4/JbS2tOKsc07FtCnHoZtnyNaGRltKwns1O4WqK7Bw4RtoaWvFXbfNxp3zZmPo0EH2Napy2bi+gVu+wv7FA0HFd9ctv8KylaswBINw2pknopqn1mVXX4D6ujGoRhXWbtiEOdfM52nFFQglFNffytiIVs8Z1FRX2TKpnNo6OnDVrB/h9088hWuv/yZ+c88duGPurF61G6OQ+OMPLMAVV9+OCWPH4BuXfQmFrm47cos8Jk8/cyqmHn8MD9GCiZg5btZNH3yIRS8sYbqqeS75gwM9BQwZNQzTTp/CpPWQV4XXX1mO995eiywvztiUQzu2YwAlnginTT+R2Z6CNnTYCbN+cwOuu2kerrxqLla+sw41tdXlHRs0KUt//MOzuOk21n4phyXLVuDPv3sa+RqfDNsv4ZMjHhQmyo27taEJbZ0ddCRrwe3auUfHGG1kcNzUIw2mZHa5bmzesFW7ttfu4wqQ7fF2ggwdMQT3P3AT5txwJaaeMJnLWQndEdpk83/7BH445wHidT8E79nJqSydueKSrxrW8YS6++5HsGH1RuS5sRMwg+jVOB84sMZkRNeFuOa9jbo0OClh3CF1LDefcQUxQIeHXa5lLT4ABUFarqoS/3x2MWZ+/VqsXPEBHn30diz4689x8onH2rGnffHmmyvR1rIXOX33hCA6udBf/vIM3Hj3NTj3c59ikRTQ2LwLc255AN28A7TPBFayYrMxnZw4aQLqDx1rpcLTH68uehslO4YdariCWpkCrY8cOhxHTzkMKq90U9n5kpAB1teS11fgnfVrsODpZ/HkX17EsTOmYNZ3L7Isd3GRR48egaqBtejq7kY3a1tNKjo6upidEq6/6VKMG32QZW7h4iV4+BcLkOW+0iZua+VxHP617m2HY3ADhw7E1TdczDvFu7J06Sq8tfhdYGA1GrftRCe6GFw3LrvmAoyeMBqlgr87LBV85ebMvmFOLCpd+2PH1uH9ZRuwfUcTVi1fj+E1A/CPvy/CivVrcfi4CZg793sYM3EM7v3JY3j+jdfMfX0PrX1/Ez596vEYNGgAHvv13/BxV4vxXnr1TQyuqsXOpmbMf/gJS4RKbvO2rTh41ChM5rfQ4UdPwDjafeftNdi+ZxfeWvQuSsz0o/P/hM7uLnz/um/hO9ddaBcalfqMhT5T+rDZLjj7uycDyPIIa2emdJy+s3w1De/mUlbjmMkTccb0kzDkwCFw3UUs/NcSbNnWyArlpmImCvzA+/QZJ+OAA2rxNC8rVbsqpuCKGD/+IIwYORRvLVvFr8e80XtcAUcdPRFTTzkWrsgyY7nsaNiBf7/4Jt7ladPOT+7DjhqPGZ+dhvrJh8B19bD8mf1UGWrpM8UtPgD7CqTVEq/sEr91KgfUcsfnFCdR3FQMrvnD7fyOr0Qtswx9bui0kKvadGqdXSjyJNOGzvBbJraCaNRlZzY/K3j92q3d095ukFxF1mzqRuaHl7dH56w2GVyJpZa0PgEwHWTRB33+ZrkxdVG9vGgpzvv86Xjhudewe7ffsMOGDcamjR+x1jsx8bDxaNy+E1Ws7ZraKl527bz0HD41/QTG0MUklPj50Uk/S9jb2oZulsMBg2p5sJQwhBdbS4toDIqbW99ZA3gS1R8+FnVjDkSRe8kf6wqAvynY56qcVNO6hhZITJV++BCs/wtobt6DTmZShmsGVFPE0WArtm1rsjIYVTcCa9dsQgMDHcXL5iMu++o1G7G9cSeqGYw+uvQ7RpHLXeB4OEuunntGv3Zq47YxsD1MSge/ryYcehAGcxNv+GALRhCnD0Gl3fsWnY8eixW8jvGIVNy6x98tzKAiLPbwa5I3qG5kbQ6Vk/4wpWtcpaFfC8VXU9DPPbOYvxscgbqDD7RfMRWA+CoHyevzRB7plGrY0ohDJ41HD/n6XK4gZndzi23wI46uDwEEP5V9/VIQ2z6cFytT3LabHtKCYfXyGdCxF3NhOoyv0FNKhdbVbkHqLCKPEDvjJSS1wXBcYf02F3+xV4C2+lwxlZ3wJq8tp7ERvE+RJ2rSiMnbb3AmRWAIxFxkWfnjSXDvmAnaSlHSDJATN1iYa5lNPs4lrTpWeL5CNDKVhqU+rbC5IBk+3nlZM02kqU8pFCs0/6dFAQLWcHFsWolM5hz3W0opFoB9tBF67wizrHkfXjInS00Yw4cDzVMDwwDBho0TLo9xKQ48y4wI+ol46wUKOPVhqqE1HbOpKOWIHEpgGsTHS4Q3lROYBJg4n0h6XDKNTpWV+ADC3GpXmNAS3yMtURQRoWe0UbU5H9lpp/vKphy3zBtfL2ni0xdvhOhINMA9kGSmL48KbBWE7aNM28CyVtbjIZKJtDiIfUL3hCjf3/mUvUQ2DKJQ1MVe156fRm81jcGkxymhfnqCigTSb14mJLIayGaZFfwIWvZHT4xQlJhyCZnTkuqjNJD6GUop2u/QnLBX7xUjqdcZLwUxgTZOXhr0CjJJgOfoL3Mc0efwNzjrPcEbtnEcJlFYtEGFugCwLvLC5gyo+J/jEZoIR93qJZp4aJOgmmPRo+pEWPeA3XaR6f+0Z1+mUTGLNKhKiUVmmWS6jex5veyJ1F9kH85KCx8LQgKm1QvHIWfpltoDAR4M2SUWrCarKyXJJKqhgOjxCIzykd23D3wjp8eJ42mB3quY5sTxPvZAYCVLSf96Geo1iXr23e8LmuhV1HySbJdViGQXfpm0z5H8CgFwpMxKZ7r1nad56fH/dDQN7jPudybrTtl/5mMy5a6ecglJrzmS9kaoPgb/n2kvfTEb6uXg/hTvj+4Nxwr2WoD/AK+ZiLoWdMUxAAAAAElFTkSuQmCC"})})};exports.default=G;
|
|
2
|
+
//# sourceMappingURL=Skio.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"Skio.js","sources":["../../../../../src/icons/Social/Channels/Skio.tsx"],"sourcesContent":["import type { SVGProps } from 'react';\n\ninterface Props extends SVGProps<SVGSVGElement> {\n\tsize?: number | string;\n}\nconst SvgSkio = ({ size = 24, ...rest }: Props) => {\n\tconst props = {\n\t\twidth: size,\n\t\theight: size,\n\t\t...rest,\n\t};\n\treturn (\n\t\t<svg\n\t\t\tviewBox=\"0 0 24 24\"\n\t\t\tfill=\"none\"\n\t\t\txmlns=\"http://www.w3.org/2000/svg\"\n\t\t\txmlnsXlink=\"http://www.w3.org/1999/xlink\"\n\t\t\t{...props}\n\t\t>\n\t\t\t<image\n\t\t\t\twidth={24}\n\t\t\t\theight={24}\n\t\t\t\tpreserveAspectRatio=\"xMidYMid meet\"\n\t\t\t\txlinkHref=\"data:image/png;base64,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\"\n\t\t\t/>\n\t\t</svg>\n\t);\n};\nexport default SvgSkio;\n"],"names":["SvgSkio","size","rest","props","jsx"],"mappings":"iJAKMA,EAAU,CAAC,CAAE,KAAAC,EAAO,GAAI,GAAGC,KAAkB,CAClD,MAAMC,EAAQ,CACb,MAAOF,EACP,OAAQA,EACR,GAAGC,CAAA,EAEJ,OACCE,EAAAA,IAAC,MAAA,CACA,QAAQ,YACR,KAAK,OACL,MAAM,6BACN,WAAW,+BACV,GAAGD,EAEJ,SAAAC,EAAAA,IAAC,QAAA,CACA,MAAO,GACP,OAAQ,GACR,oBAAoB,gBACpB,UAAU,o5LAAA,CAAA,CACX,CAAA,CAGH"}
|