@bikdotai/bik-component-library 0.0.821-beta.9 → 0.0.821

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (513) hide show
  1. package/dist/cjs/assets/icons/ManifestGlass.svg.js +2 -0
  2. package/dist/cjs/assets/icons/ManifestGlass.svg.js.map +1 -0
  3. package/dist/cjs/assets/icons/Shopify.svg.js +2 -0
  4. package/dist/cjs/assets/icons/Shopify.svg.js.map +1 -0
  5. package/dist/cjs/assets/icons/playOutline.svg.js +2 -0
  6. package/dist/cjs/assets/icons/playOutline.svg.js.map +1 -0
  7. package/dist/cjs/components/BikGiftedChat/Bubble/Bubble.js +1 -1
  8. package/dist/cjs/components/BikGiftedChat/Bubble/Bubble.js.map +1 -1
  9. package/dist/cjs/components/BikGiftedChat/GiftedChat/Day.js +1 -1
  10. package/dist/cjs/components/BikGiftedChat/GiftedChat/Day.js.map +1 -1
  11. package/dist/cjs/components/BikGiftedChat/GiftedChat/GiftedChat.js +1 -1
  12. package/dist/cjs/components/BikGiftedChat/GiftedChat/GiftedChat.js.map +1 -1
  13. package/dist/cjs/components/BikGiftedChat/GiftedChat/types.js.map +1 -1
  14. package/dist/cjs/components/TypographyStyle.js +20 -41
  15. package/dist/cjs/components/TypographyStyle.js.map +1 -1
  16. package/dist/cjs/components/agent-builder/AgentBuilder.js +2 -0
  17. package/dist/cjs/components/agent-builder/AgentBuilder.js.map +1 -0
  18. package/dist/cjs/components/agent-builder/AgentBuilder.styled.js +411 -0
  19. package/dist/cjs/components/agent-builder/AgentBuilder.styled.js.map +1 -0
  20. package/dist/cjs/components/agent-builder/components/AgentBuilderFooter.js +2 -0
  21. package/dist/cjs/components/agent-builder/components/AgentBuilderFooter.js.map +1 -0
  22. package/dist/cjs/components/agent-builder/components/AgentBuilderTopBar.js +2 -0
  23. package/dist/cjs/components/agent-builder/components/AgentBuilderTopBar.js.map +1 -0
  24. package/dist/cjs/components/agent-builder/components/AiTextArea.js +2 -0
  25. package/dist/cjs/components/agent-builder/components/AiTextArea.js.map +1 -0
  26. package/dist/cjs/components/agent-builder/components/CreateSubAgentPanel.js +2 -0
  27. package/dist/cjs/components/agent-builder/components/CreateSubAgentPanel.js.map +1 -0
  28. package/dist/cjs/components/agent-builder/components/DiscardModal.js +2 -0
  29. package/dist/cjs/components/agent-builder/components/DiscardModal.js.map +1 -0
  30. package/dist/cjs/components/agent-builder/components/GoLiveModal.js +2 -0
  31. package/dist/cjs/components/agent-builder/components/GoLiveModal.js.map +1 -0
  32. package/dist/cjs/components/agent-builder/components/MentionEditor.js +2 -0
  33. package/dist/cjs/components/agent-builder/components/MentionEditor.js.map +1 -0
  34. package/dist/cjs/components/agent-builder/components/MentionField.js +2 -0
  35. package/dist/cjs/components/agent-builder/components/MentionField.js.map +1 -0
  36. package/dist/cjs/components/agent-builder/components/MentionPicker.js +78 -0
  37. package/dist/cjs/components/agent-builder/components/MentionPicker.js.map +1 -0
  38. package/dist/cjs/components/agent-builder/components/SelectableListSection.js +2 -0
  39. package/dist/cjs/components/agent-builder/components/SelectableListSection.js.map +1 -0
  40. package/dist/cjs/components/agent-builder/components/StepRail.js +2 -0
  41. package/dist/cjs/components/agent-builder/components/StepRail.js.map +1 -0
  42. package/dist/cjs/components/agent-builder/components/StepSectionHeader.js +2 -0
  43. package/dist/cjs/components/agent-builder/components/StepSectionHeader.js.map +1 -0
  44. package/dist/cjs/components/agent-builder/components/UndoToast.js +2 -0
  45. package/dist/cjs/components/agent-builder/components/UndoToast.js.map +1 -0
  46. package/dist/cjs/components/agent-builder/constants/charLimits.js +2 -0
  47. package/dist/cjs/components/agent-builder/constants/charLimits.js.map +1 -0
  48. package/dist/cjs/components/agent-builder/constants/editorStyle.js +2 -0
  49. package/dist/cjs/components/agent-builder/constants/editorStyle.js.map +1 -0
  50. package/dist/cjs/components/agent-builder/constants/steps.js +2 -0
  51. package/dist/cjs/components/agent-builder/constants/steps.js.map +1 -0
  52. package/dist/cjs/components/agent-builder/context/AgentBuilderContext.js +2 -0
  53. package/dist/cjs/components/agent-builder/context/AgentBuilderContext.js.map +1 -0
  54. package/dist/cjs/components/agent-builder/hooks/useAgentDraft.js +2 -0
  55. package/dist/cjs/components/agent-builder/hooks/useAgentDraft.js.map +1 -0
  56. package/dist/cjs/components/agent-builder/steps/Step1About.js +2 -0
  57. package/dist/cjs/components/agent-builder/steps/Step1About.js.map +1 -0
  58. package/dist/cjs/components/agent-builder/steps/Step2WhenItStepsIn.js +2 -0
  59. package/dist/cjs/components/agent-builder/steps/Step2WhenItStepsIn.js.map +1 -0
  60. package/dist/cjs/components/agent-builder/steps/Step3HowItResponds.js +2 -0
  61. package/dist/cjs/components/agent-builder/steps/Step3HowItResponds.js.map +1 -0
  62. package/dist/cjs/components/agent-builder/steps/Step4HandoverRules.js +2 -0
  63. package/dist/cjs/components/agent-builder/steps/Step4HandoverRules.js.map +1 -0
  64. package/dist/cjs/components/agent-builder/utils/mentionSerialization.js +4 -0
  65. package/dist/cjs/components/agent-builder/utils/mentionSerialization.js.map +1 -0
  66. package/dist/cjs/components/agent-builder/utils/sourceIcons.js +2 -0
  67. package/dist/cjs/components/agent-builder/utils/sourceIcons.js.map +1 -0
  68. package/dist/cjs/components/agent-listing/AgentListing.js +2 -0
  69. package/dist/cjs/components/agent-listing/AgentListing.js.map +1 -0
  70. package/dist/cjs/components/agent-listing/AgentListing.styled.js +115 -0
  71. package/dist/cjs/components/agent-listing/AgentListing.styled.js.map +1 -0
  72. package/dist/cjs/components/agent-listing/AgentListingFilters.js +2 -0
  73. package/dist/cjs/components/agent-listing/AgentListingFilters.js.map +1 -0
  74. package/dist/cjs/components/agent-listing/AgentListingHeader.js +2 -0
  75. package/dist/cjs/components/agent-listing/AgentListingHeader.js.map +1 -0
  76. package/dist/cjs/components/agent-listing/AgentTable.js +2 -0
  77. package/dist/cjs/components/agent-listing/AgentTable.js.map +1 -0
  78. package/dist/cjs/components/agent-listing/AgentTableRow.js +2 -0
  79. package/dist/cjs/components/agent-listing/AgentTableRow.js.map +1 -0
  80. package/dist/cjs/components/agent-listing/DeleteAgentModal.js +2 -0
  81. package/dist/cjs/components/agent-listing/DeleteAgentModal.js.map +1 -0
  82. package/dist/cjs/components/avatar/Avatar.js +1 -1
  83. package/dist/cjs/components/avatar/Avatar.js.map +1 -1
  84. package/dist/cjs/components/avatar/Avatar.styled.js +4 -4
  85. package/dist/cjs/components/avatar/Avatar.styled.js.map +1 -1
  86. package/dist/cjs/components/avatar/AvatarHelper.js +1 -1
  87. package/dist/cjs/components/avatar/AvatarHelper.js.map +1 -1
  88. package/dist/cjs/components/bik-layout/BikSidebar.js.map +1 -1
  89. package/dist/cjs/components/bik-layout/CommonStyles.js +1 -1
  90. package/dist/cjs/components/bik-layout/CommonStyles.js.map +1 -1
  91. package/dist/cjs/components/button/Button.js +1 -1
  92. package/dist/cjs/components/button/Button.js.map +1 -1
  93. package/dist/cjs/components/button/Button.styled.js +13 -13
  94. package/dist/cjs/components/button/Button.styled.js.map +1 -1
  95. package/dist/cjs/components/button/themes.js +6 -6
  96. package/dist/cjs/components/button/themes.js.map +1 -1
  97. package/dist/cjs/components/checkBox/CheckBox.js +1 -1
  98. package/dist/cjs/components/checkBox/CheckBox.js.map +1 -1
  99. package/dist/cjs/components/checkBox/CheckBox.styled.js +20 -21
  100. package/dist/cjs/components/checkBox/CheckBox.styled.js.map +1 -1
  101. package/dist/cjs/components/country-code-picker/CountryCodePicker.js.map +1 -1
  102. package/dist/cjs/components/country-code-picker/CountryPicker.js.map +1 -1
  103. package/dist/cjs/components/dropdown/Dropdown.js +1 -1
  104. package/dist/cjs/components/dropdown/Dropdown.js.map +1 -1
  105. package/dist/cjs/components/dropdown/DropdownPopover/index.js +1 -1
  106. package/dist/cjs/components/dropdown/DropdownPopover/index.js.map +1 -1
  107. package/dist/cjs/components/dropdown/OpenedDropdown/components/OpennedDropdown.js +1 -1
  108. package/dist/cjs/components/dropdown/OpenedDropdown/components/OpennedDropdown.js.map +1 -1
  109. package/dist/cjs/components/dropdown/OpenedDropdown/components/OpennedDropdown.styled.js +8 -9
  110. package/dist/cjs/components/dropdown/OpenedDropdown/components/OpennedDropdown.styled.js.map +1 -1
  111. package/dist/cjs/components/dropdown/OpenedDropdown/components/description/Description.js.map +1 -1
  112. package/dist/cjs/components/dropdown/OpenedDropdown/components/description/Description.styled.js.map +1 -1
  113. package/dist/cjs/components/dropdown/OpenedDropdown/components/menu/FreeFormMenu.js +1 -1
  114. package/dist/cjs/components/dropdown/OpenedDropdown/components/menu/FreeFormMenu.js.map +1 -1
  115. package/dist/cjs/components/dropdown/OpenedDropdown/components/menu/MenuItem.js +9 -9
  116. package/dist/cjs/components/dropdown/OpenedDropdown/components/menu/MenuItem.js.map +1 -1
  117. package/dist/cjs/components/dropdown/OpenedDropdown/components/menu/MenuList.js +1 -1
  118. package/dist/cjs/components/dropdown/OpenedDropdown/components/menu/MenuList.js.map +1 -1
  119. package/dist/cjs/components/dropdown/OpenedDropdown/components/menu/MenuList.styled.js +2 -6
  120. package/dist/cjs/components/dropdown/OpenedDropdown/components/menu/MenuList.styled.js.map +1 -1
  121. package/dist/cjs/components/dropdown/OpenedDropdown/components/menu/SelectAllMenu.js +1 -1
  122. package/dist/cjs/components/dropdown/OpenedDropdown/components/menu/SelectAllMenu.js.map +1 -1
  123. package/dist/cjs/components/dropdown/OpenedDropdown/components/searchbox/SearchBox.js +1 -1
  124. package/dist/cjs/components/dropdown/OpenedDropdown/components/searchbox/SearchBox.js.map +1 -1
  125. package/dist/cjs/components/dropdown/OpenedDropdown/components/searchbox/SearchZeroState.js +1 -1
  126. package/dist/cjs/components/dropdown/OpenedDropdown/components/searchbox/SearchZeroState.js.map +1 -1
  127. package/dist/cjs/components/dropdown-button/DropdownButton.js +1 -1
  128. package/dist/cjs/components/dropdown-button/DropdownButton.js.map +1 -1
  129. package/dist/cjs/components/dropdown-button/DropdownButton.style.js +6 -20
  130. package/dist/cjs/components/dropdown-button/DropdownButton.style.js.map +1 -1
  131. package/dist/cjs/components/fab-menu/FABMenu.js.map +1 -1
  132. package/dist/cjs/components/icon-button/IconButton.js +1 -1
  133. package/dist/cjs/components/icon-button/IconButton.js.map +1 -1
  134. package/dist/cjs/components/icon-button/IconButton.styled.js +12 -18
  135. package/dist/cjs/components/icon-button/IconButton.styled.js.map +1 -1
  136. package/dist/cjs/components/icon-button/theme.js +1 -1
  137. package/dist/cjs/components/icon-button/theme.js.map +1 -1
  138. package/dist/cjs/components/input/Input.js +1 -1
  139. package/dist/cjs/components/input/Input.js.map +1 -1
  140. package/dist/cjs/components/input/Input.styled.js +16 -27
  141. package/dist/cjs/components/input/Input.styled.js.map +1 -1
  142. package/dist/cjs/components/input-with-vars/InputWithVariables.js +3 -3
  143. package/dist/cjs/components/input-with-vars/InputWithVariables.js.map +1 -1
  144. package/dist/cjs/components/list-item/ListItem.js +1 -1
  145. package/dist/cjs/components/list-item/ListItem.js.map +1 -1
  146. package/dist/cjs/components/list-item/ListItem.styled.js +6 -6
  147. package/dist/cjs/components/list-item/ListItem.styled.js.map +1 -1
  148. package/dist/cjs/components/list-item/themes.js +20 -32
  149. package/dist/cjs/components/list-item/themes.js.map +1 -1
  150. package/dist/cjs/components/multi-level-dropdown/GroupedMenuList.js +1 -1
  151. package/dist/cjs/components/multi-level-dropdown/GroupedMenuList.js.map +1 -1
  152. package/dist/cjs/components/multi-level-dropdown/MenuItem.js +1 -1
  153. package/dist/cjs/components/multi-level-dropdown/MenuItem.js.map +1 -1
  154. package/dist/cjs/components/multi-level-dropdown/MenuList.js +1 -1
  155. package/dist/cjs/components/multi-level-dropdown/MenuList.js.map +1 -1
  156. package/dist/cjs/components/multi-level-dropdown/MultiLevelDropdown.js +1 -1
  157. package/dist/cjs/components/multi-level-dropdown/MultiLevelDropdown.js.map +1 -1
  158. package/dist/cjs/components/multi-level-dropdown/MultiLevelDropdown.styled.js +29 -32
  159. package/dist/cjs/components/multi-level-dropdown/MultiLevelDropdown.styled.js.map +1 -1
  160. package/dist/cjs/components/tag/Tag.js +1 -1
  161. package/dist/cjs/components/tag/Tag.js.map +1 -1
  162. package/dist/cjs/components/tag/Tag.styled.js +4 -4
  163. package/dist/cjs/components/tag/Tag.styled.js.map +1 -1
  164. package/dist/cjs/components/tag/model.js.map +1 -1
  165. package/dist/cjs/components/variable-picker-v3/Content.js +1 -1
  166. package/dist/cjs/components/variable-picker-v3/Content.js.map +1 -1
  167. package/dist/cjs/components/variable-picker-v3/model.js.map +1 -1
  168. package/dist/cjs/components/whats-new/WhatsNew.js +1 -1
  169. package/dist/cjs/components/whats-new/WhatsNew.js.map +1 -1
  170. package/dist/cjs/components/whats-new/WhatsNewButton.js +2 -2
  171. package/dist/cjs/components/whats-new/WhatsNewButton.js.map +1 -1
  172. package/dist/cjs/components/whats-new/WhatsNewPanel.js.map +1 -1
  173. package/dist/cjs/constants/Theme.js +1 -1
  174. package/dist/cjs/constants/Theme.js.map +1 -1
  175. package/dist/cjs/editor/BikEditor.js +1 -1
  176. package/dist/cjs/editor/BikEditor.js.map +1 -1
  177. package/dist/cjs/editor/BikEditor.styles.js +14 -1
  178. package/dist/cjs/editor/BikEditor.styles.js.map +1 -1
  179. package/dist/cjs/editor/BikEditor.types.js.map +1 -1
  180. package/dist/cjs/editor/BikEditor.utils.js +2 -2
  181. package/dist/cjs/editor/BikEditor.utils.js.map +1 -1
  182. package/dist/cjs/editor/extensions/buildExtensions.js +1 -1
  183. package/dist/cjs/editor/extensions/buildExtensions.js.map +1 -1
  184. package/dist/cjs/editor/extensions/editorDropdown.styles.js +15 -10
  185. package/dist/cjs/editor/extensions/editorDropdown.styles.js.map +1 -1
  186. package/dist/cjs/editor/extensions/mention/MentionDropdown.js +1 -1
  187. package/dist/cjs/editor/extensions/mention/MentionDropdown.js.map +1 -1
  188. package/dist/cjs/editor/extensions/mention/MentionExtension.js +1 -1
  189. package/dist/cjs/editor/extensions/mention/MentionExtension.js.map +1 -1
  190. package/dist/cjs/icons/Arrows/Chevron/ChevronUp.js +1 -1
  191. package/dist/cjs/icons/Arrows/Chevron/ChevronUp.js.map +1 -1
  192. package/dist/cjs/index.js +1 -1
  193. package/dist/esm/assets/icons/ManifestGlass.svg.js +6 -0
  194. package/dist/esm/assets/icons/ManifestGlass.svg.js.map +1 -0
  195. package/dist/esm/assets/icons/Shopify.svg.js +6 -0
  196. package/dist/esm/assets/icons/Shopify.svg.js.map +1 -0
  197. package/dist/esm/assets/icons/playOutline.svg.js +6 -0
  198. package/dist/esm/assets/icons/playOutline.svg.js.map +1 -0
  199. package/dist/esm/components/BikGiftedChat/Bubble/Bubble.js +59 -61
  200. package/dist/esm/components/BikGiftedChat/Bubble/Bubble.js.map +1 -1
  201. package/dist/esm/components/BikGiftedChat/GiftedChat/Day.d.ts +0 -6
  202. package/dist/esm/components/BikGiftedChat/GiftedChat/Day.js +88 -124
  203. package/dist/esm/components/BikGiftedChat/GiftedChat/Day.js.map +1 -1
  204. package/dist/esm/components/BikGiftedChat/GiftedChat/GiftedChat.js +128 -225
  205. package/dist/esm/components/BikGiftedChat/GiftedChat/GiftedChat.js.map +1 -1
  206. package/dist/esm/components/BikGiftedChat/GiftedChat/types.d.ts +2 -6
  207. package/dist/esm/components/BikGiftedChat/GiftedChat/types.js.map +1 -1
  208. package/dist/esm/components/TypographyStyle.d.ts +0 -8
  209. package/dist/esm/components/TypographyStyle.js +40 -63
  210. package/dist/esm/components/TypographyStyle.js.map +1 -1
  211. package/dist/esm/components/agent-builder/AgentBuilder.d.ts +18 -0
  212. package/dist/esm/components/agent-builder/AgentBuilder.js +203 -0
  213. package/dist/esm/components/agent-builder/AgentBuilder.js.map +1 -0
  214. package/dist/esm/components/agent-builder/AgentBuilder.model.d.ts +107 -0
  215. package/dist/esm/components/agent-builder/AgentBuilder.styled.d.ts +161 -0
  216. package/dist/esm/components/agent-builder/AgentBuilder.styled.js +517 -0
  217. package/dist/esm/components/agent-builder/AgentBuilder.styled.js.map +1 -0
  218. package/dist/esm/components/agent-builder/components/AgentBuilderFooter.d.ts +10 -0
  219. package/dist/esm/components/agent-builder/components/AgentBuilderFooter.js +70 -0
  220. package/dist/esm/components/agent-builder/components/AgentBuilderFooter.js.map +1 -0
  221. package/dist/esm/components/agent-builder/components/AgentBuilderTopBar.d.ts +12 -0
  222. package/dist/esm/components/agent-builder/components/AgentBuilderTopBar.js +73 -0
  223. package/dist/esm/components/agent-builder/components/AgentBuilderTopBar.js.map +1 -0
  224. package/dist/esm/components/agent-builder/components/AiTextArea.d.ts +14 -0
  225. package/dist/esm/components/agent-builder/components/AiTextArea.js +44 -0
  226. package/dist/esm/components/agent-builder/components/AiTextArea.js.map +1 -0
  227. package/dist/esm/components/agent-builder/components/CreateSubAgentPanel.d.ts +25 -0
  228. package/dist/esm/components/agent-builder/components/CreateSubAgentPanel.js +215 -0
  229. package/dist/esm/components/agent-builder/components/CreateSubAgentPanel.js.map +1 -0
  230. package/dist/esm/components/agent-builder/components/DiscardModal.d.ts +18 -0
  231. package/dist/esm/components/agent-builder/components/DiscardModal.js +54 -0
  232. package/dist/esm/components/agent-builder/components/DiscardModal.js.map +1 -0
  233. package/dist/esm/components/agent-builder/components/GoLiveModal.d.ts +18 -0
  234. package/dist/esm/components/agent-builder/components/GoLiveModal.js +73 -0
  235. package/dist/esm/components/agent-builder/components/GoLiveModal.js.map +1 -0
  236. package/dist/esm/components/agent-builder/components/MentionEditor.d.ts +39 -0
  237. package/dist/esm/components/agent-builder/components/MentionEditor.js +100 -0
  238. package/dist/esm/components/agent-builder/components/MentionEditor.js.map +1 -0
  239. package/dist/esm/components/agent-builder/components/MentionField.d.ts +19 -0
  240. package/dist/esm/components/agent-builder/components/MentionField.js +64 -0
  241. package/dist/esm/components/agent-builder/components/MentionField.js.map +1 -0
  242. package/dist/esm/components/agent-builder/components/MentionPicker.d.ts +17 -0
  243. package/dist/esm/components/agent-builder/components/MentionPicker.js +268 -0
  244. package/dist/esm/components/agent-builder/components/MentionPicker.js.map +1 -0
  245. package/dist/esm/components/agent-builder/components/SelectableListSection.d.ts +52 -0
  246. package/dist/esm/components/agent-builder/components/SelectableListSection.js +192 -0
  247. package/dist/esm/components/agent-builder/components/SelectableListSection.js.map +1 -0
  248. package/dist/esm/components/agent-builder/components/StepRail.d.ts +2 -0
  249. package/dist/esm/components/agent-builder/components/StepRail.js +35 -0
  250. package/dist/esm/components/agent-builder/components/StepRail.js.map +1 -0
  251. package/dist/esm/components/agent-builder/components/StepSectionHeader.d.ts +7 -0
  252. package/dist/esm/components/agent-builder/components/StepSectionHeader.js +15 -0
  253. package/dist/esm/components/agent-builder/components/StepSectionHeader.js.map +1 -0
  254. package/dist/esm/components/agent-builder/components/UndoToast.d.ts +7 -0
  255. package/dist/esm/components/agent-builder/components/UndoToast.js +27 -0
  256. package/dist/esm/components/agent-builder/components/UndoToast.js.map +1 -0
  257. package/dist/esm/components/agent-builder/constants/charLimits.d.ts +21 -0
  258. package/dist/esm/components/agent-builder/constants/charLimits.js +18 -0
  259. package/dist/esm/components/agent-builder/constants/charLimits.js.map +1 -0
  260. package/dist/esm/components/agent-builder/constants/editorStyle.d.ts +8 -0
  261. package/dist/esm/components/agent-builder/constants/editorStyle.js +10 -0
  262. package/dist/esm/components/agent-builder/constants/editorStyle.js.map +1 -0
  263. package/dist/esm/components/agent-builder/constants/steps.d.ts +13 -0
  264. package/dist/esm/components/agent-builder/constants/steps.js +32 -0
  265. package/dist/esm/components/agent-builder/constants/steps.js.map +1 -0
  266. package/dist/esm/components/agent-builder/context/AgentBuilderContext.d.ts +98 -0
  267. package/dist/esm/components/agent-builder/context/AgentBuilderContext.js +174 -0
  268. package/dist/esm/components/agent-builder/context/AgentBuilderContext.js.map +1 -0
  269. package/dist/esm/components/agent-builder/hooks/useAgentDraft.d.ts +24 -0
  270. package/dist/esm/components/agent-builder/hooks/useAgentDraft.js +27 -0
  271. package/dist/esm/components/agent-builder/hooks/useAgentDraft.js.map +1 -0
  272. package/dist/esm/components/agent-builder/index.d.ts +7 -0
  273. package/dist/esm/components/agent-builder/steps/Step1About.d.ts +2 -0
  274. package/dist/esm/components/agent-builder/steps/Step1About.js +43 -0
  275. package/dist/esm/components/agent-builder/steps/Step1About.js.map +1 -0
  276. package/dist/esm/components/agent-builder/steps/Step2WhenItStepsIn.d.ts +2 -0
  277. package/dist/esm/components/agent-builder/steps/Step2WhenItStepsIn.js +148 -0
  278. package/dist/esm/components/agent-builder/steps/Step2WhenItStepsIn.js.map +1 -0
  279. package/dist/esm/components/agent-builder/steps/Step3HowItResponds.d.ts +2 -0
  280. package/dist/esm/components/agent-builder/steps/Step3HowItResponds.js +218 -0
  281. package/dist/esm/components/agent-builder/steps/Step3HowItResponds.js.map +1 -0
  282. package/dist/esm/components/agent-builder/steps/Step4HandoverRules.d.ts +2 -0
  283. package/dist/esm/components/agent-builder/steps/Step4HandoverRules.js +83 -0
  284. package/dist/esm/components/agent-builder/steps/Step4HandoverRules.js.map +1 -0
  285. package/dist/esm/components/agent-builder/utils/mentionSerialization.d.ts +61 -0
  286. package/dist/esm/components/agent-builder/utils/mentionSerialization.js +96 -0
  287. package/dist/esm/components/agent-builder/utils/mentionSerialization.js.map +1 -0
  288. package/dist/esm/components/agent-builder/utils/sourceIcons.d.ts +10 -0
  289. package/dist/esm/components/agent-builder/utils/sourceIcons.js +10 -0
  290. package/dist/esm/components/agent-builder/utils/sourceIcons.js.map +1 -0
  291. package/dist/esm/components/agent-listing/AgentListing.d.ts +18 -0
  292. package/dist/esm/components/agent-listing/AgentListing.js +176 -0
  293. package/dist/esm/components/agent-listing/AgentListing.js.map +1 -0
  294. package/dist/esm/components/agent-listing/AgentListing.model.d.ts +78 -0
  295. package/dist/esm/components/agent-listing/AgentListing.styled.d.ts +56 -0
  296. package/dist/esm/components/agent-listing/AgentListing.styled.js +145 -0
  297. package/dist/esm/components/agent-listing/AgentListing.styled.js.map +1 -0
  298. package/dist/esm/components/agent-listing/AgentListingFilters.d.ts +18 -0
  299. package/dist/esm/components/agent-listing/AgentListingFilters.js +85 -0
  300. package/dist/esm/components/agent-listing/AgentListingFilters.js.map +1 -0
  301. package/dist/esm/components/agent-listing/AgentListingHeader.d.ts +8 -0
  302. package/dist/esm/components/agent-listing/AgentListingHeader.js +40 -0
  303. package/dist/esm/components/agent-listing/AgentListingHeader.js.map +1 -0
  304. package/dist/esm/components/agent-listing/AgentTable.d.ts +11 -0
  305. package/dist/esm/components/agent-listing/AgentTable.js +35 -0
  306. package/dist/esm/components/agent-listing/AgentTable.js.map +1 -0
  307. package/dist/esm/components/agent-listing/AgentTableRow.d.ts +12 -0
  308. package/dist/esm/components/agent-listing/AgentTableRow.js +108 -0
  309. package/dist/esm/components/agent-listing/AgentTableRow.js.map +1 -0
  310. package/dist/esm/components/agent-listing/DeleteAgentModal.d.ts +16 -0
  311. package/dist/esm/components/agent-listing/DeleteAgentModal.js +69 -0
  312. package/dist/esm/components/agent-listing/DeleteAgentModal.js.map +1 -0
  313. package/dist/esm/components/agent-listing/index.d.ts +2 -0
  314. package/dist/esm/components/avatar/Avatar.d.ts +1 -2
  315. package/dist/esm/components/avatar/Avatar.js +73 -51
  316. package/dist/esm/components/avatar/Avatar.js.map +1 -1
  317. package/dist/esm/components/avatar/Avatar.styled.js +8 -8
  318. package/dist/esm/components/avatar/Avatar.styled.js.map +1 -1
  319. package/dist/esm/components/avatar/AvatarHelper.d.ts +4 -5
  320. package/dist/esm/components/avatar/AvatarHelper.js +4 -4
  321. package/dist/esm/components/avatar/AvatarHelper.js.map +1 -1
  322. package/dist/esm/components/bik-layout/BikSidebar.js.map +1 -1
  323. package/dist/esm/components/bik-layout/CommonStyles.js +1 -1
  324. package/dist/esm/components/bik-layout/CommonStyles.js.map +1 -1
  325. package/dist/esm/components/bik-layout/index.d.ts +0 -2
  326. package/dist/esm/components/button/Button.js +31 -31
  327. package/dist/esm/components/button/Button.js.map +1 -1
  328. package/dist/esm/components/button/Button.styled.d.ts +1 -1
  329. package/dist/esm/components/button/Button.styled.js +20 -20
  330. package/dist/esm/components/button/Button.styled.js.map +1 -1
  331. package/dist/esm/components/button/model.d.ts +3 -3
  332. package/dist/esm/components/button/themes.d.ts +2 -2
  333. package/dist/esm/components/button/themes.js +17 -31
  334. package/dist/esm/components/button/themes.js.map +1 -1
  335. package/dist/esm/components/checkBox/CheckBox.d.ts +1 -2
  336. package/dist/esm/components/checkBox/CheckBox.js +87 -124
  337. package/dist/esm/components/checkBox/CheckBox.js.map +1 -1
  338. package/dist/esm/components/checkBox/CheckBox.styled.d.ts +1 -1
  339. package/dist/esm/components/checkBox/CheckBox.styled.js +9 -10
  340. package/dist/esm/components/checkBox/CheckBox.styled.js.map +1 -1
  341. package/dist/esm/components/country-code-picker/CountryCodePicker.d.ts +1 -1
  342. package/dist/esm/components/country-code-picker/CountryCodePicker.js.map +1 -1
  343. package/dist/esm/components/country-code-picker/CountryPicker.d.ts +1 -1
  344. package/dist/esm/components/country-code-picker/CountryPicker.js.map +1 -1
  345. package/dist/esm/components/dropdown/Dropdown.js +67 -67
  346. package/dist/esm/components/dropdown/Dropdown.js.map +1 -1
  347. package/dist/esm/components/dropdown/DropdownPopover/index.js +61 -74
  348. package/dist/esm/components/dropdown/DropdownPopover/index.js.map +1 -1
  349. package/dist/esm/components/dropdown/OpenedDropdown/components/OpennedDropdown.js +174 -183
  350. package/dist/esm/components/dropdown/OpenedDropdown/components/OpennedDropdown.js.map +1 -1
  351. package/dist/esm/components/dropdown/OpenedDropdown/components/OpennedDropdown.styled.d.ts +1 -1
  352. package/dist/esm/components/dropdown/OpenedDropdown/components/OpennedDropdown.styled.js +4 -5
  353. package/dist/esm/components/dropdown/OpenedDropdown/components/OpennedDropdown.styled.js.map +1 -1
  354. package/dist/esm/components/dropdown/OpenedDropdown/components/description/Description.d.ts +1 -1
  355. package/dist/esm/components/dropdown/OpenedDropdown/components/description/Description.js.map +1 -1
  356. package/dist/esm/components/dropdown/OpenedDropdown/components/description/Description.styled.d.ts +1 -1
  357. package/dist/esm/components/dropdown/OpenedDropdown/components/description/Description.styled.js.map +1 -1
  358. package/dist/esm/components/dropdown/OpenedDropdown/components/menu/FreeFormMenu.d.ts +1 -3
  359. package/dist/esm/components/dropdown/OpenedDropdown/components/menu/FreeFormMenu.js +20 -29
  360. package/dist/esm/components/dropdown/OpenedDropdown/components/menu/FreeFormMenu.js.map +1 -1
  361. package/dist/esm/components/dropdown/OpenedDropdown/components/menu/MenuItem.d.ts +1 -3
  362. package/dist/esm/components/dropdown/OpenedDropdown/components/menu/MenuItem.js +87 -93
  363. package/dist/esm/components/dropdown/OpenedDropdown/components/menu/MenuItem.js.map +1 -1
  364. package/dist/esm/components/dropdown/OpenedDropdown/components/menu/MenuList.d.ts +1 -3
  365. package/dist/esm/components/dropdown/OpenedDropdown/components/menu/MenuList.js +61 -68
  366. package/dist/esm/components/dropdown/OpenedDropdown/components/menu/MenuList.js.map +1 -1
  367. package/dist/esm/components/dropdown/OpenedDropdown/components/menu/MenuList.styled.d.ts +1 -2
  368. package/dist/esm/components/dropdown/OpenedDropdown/components/menu/MenuList.styled.js +2 -7
  369. package/dist/esm/components/dropdown/OpenedDropdown/components/menu/MenuList.styled.js.map +1 -1
  370. package/dist/esm/components/dropdown/OpenedDropdown/components/menu/SelectAllMenu.d.ts +1 -3
  371. package/dist/esm/components/dropdown/OpenedDropdown/components/menu/SelectAllMenu.js +10 -18
  372. package/dist/esm/components/dropdown/OpenedDropdown/components/menu/SelectAllMenu.js.map +1 -1
  373. package/dist/esm/components/dropdown/OpenedDropdown/components/searchbox/SearchBox.d.ts +1 -1
  374. package/dist/esm/components/dropdown/OpenedDropdown/components/searchbox/SearchBox.js +18 -18
  375. package/dist/esm/components/dropdown/OpenedDropdown/components/searchbox/SearchBox.js.map +1 -1
  376. package/dist/esm/components/dropdown/OpenedDropdown/components/searchbox/SearchZeroState.d.ts +0 -1
  377. package/dist/esm/components/dropdown/OpenedDropdown/components/searchbox/SearchZeroState.js +17 -43
  378. package/dist/esm/components/dropdown/OpenedDropdown/components/searchbox/SearchZeroState.js.map +1 -1
  379. package/dist/esm/components/dropdown/OpenedDropdown/utils/iterationOnOptions.d.ts +0 -2
  380. package/dist/esm/components/dropdown/hooks/useDropdown.d.ts +0 -2
  381. package/dist/esm/components/dropdown/type.d.ts +1 -6
  382. package/dist/esm/components/dropdown-button/DropdownButton.d.ts +1 -3
  383. package/dist/esm/components/dropdown-button/DropdownButton.js +17 -71
  384. package/dist/esm/components/dropdown-button/DropdownButton.js.map +1 -1
  385. package/dist/esm/components/dropdown-button/DropdownButton.style.d.ts +2 -9
  386. package/dist/esm/components/dropdown-button/DropdownButton.style.js +9 -35
  387. package/dist/esm/components/dropdown-button/DropdownButton.style.js.map +1 -1
  388. package/dist/esm/components/fab-menu/FABMenu.d.ts +1 -1
  389. package/dist/esm/components/fab-menu/FABMenu.js.map +1 -1
  390. package/dist/esm/components/icon-button/IconButton.js +32 -36
  391. package/dist/esm/components/icon-button/IconButton.js.map +1 -1
  392. package/dist/esm/components/icon-button/IconButton.styled.d.ts +1 -3
  393. package/dist/esm/components/icon-button/IconButton.styled.js +14 -20
  394. package/dist/esm/components/icon-button/IconButton.styled.js.map +1 -1
  395. package/dist/esm/components/icon-button/model.d.ts +1 -12
  396. package/dist/esm/components/icon-button/theme.js +10 -12
  397. package/dist/esm/components/icon-button/theme.js.map +1 -1
  398. package/dist/esm/components/input/Input.js +115 -119
  399. package/dist/esm/components/input/Input.js.map +1 -1
  400. package/dist/esm/components/input/Input.model.d.ts +3 -2
  401. package/dist/esm/components/input/Input.styled.d.ts +1 -8
  402. package/dist/esm/components/input/Input.styled.js +22 -34
  403. package/dist/esm/components/input/Input.styled.js.map +1 -1
  404. package/dist/esm/components/input-with-vars/InputWithVariables.d.ts +2 -0
  405. package/dist/esm/components/input-with-vars/InputWithVariables.js +81 -75
  406. package/dist/esm/components/input-with-vars/InputWithVariables.js.map +1 -1
  407. package/dist/esm/components/list-item/List.model.d.ts +1 -2
  408. package/dist/esm/components/list-item/ListItem.js +38 -40
  409. package/dist/esm/components/list-item/ListItem.js.map +1 -1
  410. package/dist/esm/components/list-item/ListItem.styled.d.ts +1 -2
  411. package/dist/esm/components/list-item/ListItem.styled.js +8 -8
  412. package/dist/esm/components/list-item/ListItem.styled.js.map +1 -1
  413. package/dist/esm/components/list-item/themes.d.ts +2 -2
  414. package/dist/esm/components/list-item/themes.js +6 -20
  415. package/dist/esm/components/list-item/themes.js.map +1 -1
  416. package/dist/esm/components/multi-level-dropdown/GroupedMenuList.d.ts +0 -1
  417. package/dist/esm/components/multi-level-dropdown/GroupedMenuList.js +28 -30
  418. package/dist/esm/components/multi-level-dropdown/GroupedMenuList.js.map +1 -1
  419. package/dist/esm/components/multi-level-dropdown/MenuItem.d.ts +0 -1
  420. package/dist/esm/components/multi-level-dropdown/MenuItem.js +54 -57
  421. package/dist/esm/components/multi-level-dropdown/MenuItem.js.map +1 -1
  422. package/dist/esm/components/multi-level-dropdown/MenuList.d.ts +0 -1
  423. package/dist/esm/components/multi-level-dropdown/MenuList.js +42 -46
  424. package/dist/esm/components/multi-level-dropdown/MenuList.js.map +1 -1
  425. package/dist/esm/components/multi-level-dropdown/MultiLevelDropdown.js +59 -95
  426. package/dist/esm/components/multi-level-dropdown/MultiLevelDropdown.js.map +1 -1
  427. package/dist/esm/components/multi-level-dropdown/MultiLevelDropdown.styled.d.ts +3 -13
  428. package/dist/esm/components/multi-level-dropdown/MultiLevelDropdown.styled.js +41 -50
  429. package/dist/esm/components/multi-level-dropdown/MultiLevelDropdown.styled.js.map +1 -1
  430. package/dist/esm/components/multi-level-dropdown/type.d.ts +0 -1
  431. package/dist/esm/components/tag/Tag.d.ts +1 -1
  432. package/dist/esm/components/tag/Tag.js +18 -22
  433. package/dist/esm/components/tag/Tag.js.map +1 -1
  434. package/dist/esm/components/tag/Tag.styled.d.ts +1 -3
  435. package/dist/esm/components/tag/Tag.styled.js +7 -7
  436. package/dist/esm/components/tag/Tag.styled.js.map +1 -1
  437. package/dist/esm/components/tag/model.d.ts +1 -5
  438. package/dist/esm/components/tag/model.js.map +1 -1
  439. package/dist/esm/components/variable-picker-v3/Content.js +69 -69
  440. package/dist/esm/components/variable-picker-v3/Content.js.map +1 -1
  441. package/dist/esm/components/variable-picker-v3/model.d.ts +2 -0
  442. package/dist/esm/components/variable-picker-v3/model.js.map +1 -1
  443. package/dist/esm/components/whats-new/WhatsNew.d.ts +0 -2
  444. package/dist/esm/components/whats-new/WhatsNew.js +19 -23
  445. package/dist/esm/components/whats-new/WhatsNew.js.map +1 -1
  446. package/dist/esm/components/whats-new/WhatsNew.types.d.ts +0 -2
  447. package/dist/esm/components/whats-new/WhatsNewButton.js +38 -34
  448. package/dist/esm/components/whats-new/WhatsNewButton.js.map +1 -1
  449. package/dist/esm/components/whats-new/WhatsNewPanel.js.map +1 -1
  450. package/dist/esm/constants/Theme.d.ts +0 -36
  451. package/dist/esm/constants/Theme.js +1 -21
  452. package/dist/esm/constants/Theme.js.map +1 -1
  453. package/dist/esm/editor/BikEditor.js +19 -18
  454. package/dist/esm/editor/BikEditor.js.map +1 -1
  455. package/dist/esm/editor/BikEditor.styles.js +13 -0
  456. package/dist/esm/editor/BikEditor.styles.js.map +1 -1
  457. package/dist/esm/editor/BikEditor.types.d.ts +21 -0
  458. package/dist/esm/editor/BikEditor.types.js.map +1 -1
  459. package/dist/esm/editor/BikEditor.utils.js +76 -75
  460. package/dist/esm/editor/BikEditor.utils.js.map +1 -1
  461. package/dist/esm/editor/extensions/buildExtensions.d.ts +1 -0
  462. package/dist/esm/editor/extensions/buildExtensions.js +31 -29
  463. package/dist/esm/editor/extensions/buildExtensions.js.map +1 -1
  464. package/dist/esm/editor/extensions/editorDropdown.styles.d.ts +2 -8
  465. package/dist/esm/editor/extensions/editorDropdown.styles.js +22 -18
  466. package/dist/esm/editor/extensions/editorDropdown.styles.js.map +1 -1
  467. package/dist/esm/editor/extensions/mention/MentionDropdown.d.ts +2 -0
  468. package/dist/esm/editor/extensions/mention/MentionDropdown.js +35 -28
  469. package/dist/esm/editor/extensions/mention/MentionDropdown.js.map +1 -1
  470. package/dist/esm/editor/extensions/mention/MentionExtension.d.ts +2 -2
  471. package/dist/esm/editor/extensions/mention/MentionExtension.js +91 -59
  472. package/dist/esm/editor/extensions/mention/MentionExtension.js.map +1 -1
  473. package/dist/esm/icons/Arrows/Chevron/ChevronUp.d.ts +2 -1
  474. package/dist/esm/icons/Arrows/Chevron/ChevronUp.js +28 -24
  475. package/dist/esm/icons/Arrows/Chevron/ChevronUp.js.map +1 -1
  476. package/dist/esm/icons/index.d.ts +24 -24
  477. package/dist/esm/index.d.ts +2 -1
  478. package/dist/esm/index.js +806 -798
  479. package/dist/esm/index.js.map +1 -1
  480. package/package.json +3 -2
  481. package/dist/cjs/components/bik-layout/BikSidebarV2/BikSidebarV2.js +0 -2
  482. package/dist/cjs/components/bik-layout/BikSidebarV2/BikSidebarV2.js.map +0 -1
  483. package/dist/cjs/components/bik-layout/BikSidebarV2/SidebarV2Popup.js +0 -2
  484. package/dist/cjs/components/bik-layout/BikSidebarV2/SidebarV2Popup.js.map +0 -1
  485. package/dist/cjs/components/bik-layout/BikSidebarV2/SidebarV2Styles.js +0 -294
  486. package/dist/cjs/components/bik-layout/BikSidebarV2/SidebarV2Styles.js.map +0 -1
  487. package/dist/cjs/components/bik-layout/BikSidebarV2/SimpleSidebarV2.js +0 -2
  488. package/dist/cjs/components/bik-layout/BikSidebarV2/SimpleSidebarV2.js.map +0 -1
  489. package/dist/cjs/components/dual-icon-button/DualIconButton.js +0 -2
  490. package/dist/cjs/components/dual-icon-button/DualIconButton.js.map +0 -1
  491. package/dist/cjs/components/dual-icon-button/DualIconButton.styled.js +0 -33
  492. package/dist/cjs/components/dual-icon-button/DualIconButton.styled.js.map +0 -1
  493. package/dist/esm/components/bik-layout/BikSidebarV2/BikSidebarV2.d.ts +0 -33
  494. package/dist/esm/components/bik-layout/BikSidebarV2/BikSidebarV2.js +0 -272
  495. package/dist/esm/components/bik-layout/BikSidebarV2/BikSidebarV2.js.map +0 -1
  496. package/dist/esm/components/bik-layout/BikSidebarV2/SidebarV2.model.d.ts +0 -27
  497. package/dist/esm/components/bik-layout/BikSidebarV2/SidebarV2Popup.d.ts +0 -12
  498. package/dist/esm/components/bik-layout/BikSidebarV2/SidebarV2Popup.js +0 -53
  499. package/dist/esm/components/bik-layout/BikSidebarV2/SidebarV2Popup.js.map +0 -1
  500. package/dist/esm/components/bik-layout/BikSidebarV2/SidebarV2Styles.d.ts +0 -44
  501. package/dist/esm/components/bik-layout/BikSidebarV2/SidebarV2Styles.js +0 -310
  502. package/dist/esm/components/bik-layout/BikSidebarV2/SidebarV2Styles.js.map +0 -1
  503. package/dist/esm/components/bik-layout/BikSidebarV2/SimpleSidebarV2.d.ts +0 -2
  504. package/dist/esm/components/bik-layout/BikSidebarV2/SimpleSidebarV2.js +0 -107
  505. package/dist/esm/components/bik-layout/BikSidebarV2/SimpleSidebarV2.js.map +0 -1
  506. package/dist/esm/components/dual-icon-button/DualIconButton.d.ts +0 -3
  507. package/dist/esm/components/dual-icon-button/DualIconButton.js +0 -53
  508. package/dist/esm/components/dual-icon-button/DualIconButton.js.map +0 -1
  509. package/dist/esm/components/dual-icon-button/DualIconButton.styled.d.ts +0 -7
  510. package/dist/esm/components/dual-icon-button/DualIconButton.styled.js +0 -40
  511. package/dist/esm/components/dual-icon-button/DualIconButton.styled.js.map +0 -1
  512. package/dist/esm/components/dual-icon-button/index.d.ts +0 -2
  513. package/dist/esm/components/dual-icon-button/model.d.ts +0 -12
@@ -0,0 +1,2 @@
1
+ "use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const t=require("react/jsx-runtime"),h=require("../../../assets/icons/ManifestGlass.svg.js"),g=require("../../../assets/icons/successIcon.svg.js"),i=require("../../TypographyStyle.js"),s=require("../../../constants/Theme.js"),n=require("../AgentBuilder.styled.js"),m=require("../../modals/styledModal.js"),o=require("../../button/Button.js"),y=({mode:a,onClose:r,onConfirm:d,onSaveDraft:c,onGoToDashboard:u,isPublishing:l})=>{if(!a)return null;const e=a==="success";return t.jsx(m.StyledModal,{"data-test":"agent-go-live-modal",open:!0,onClose:r,width:e?"400px":"520px",children:t.jsxs(n.ModalBody,{children:[t.jsx(n.ModalIcon,{children:e?t.jsx(g.default,{width:64,height:64}):t.jsx(h.default,{width:64,height:64})}),t.jsx(i.TitleRegular,{color:s.COLORS.content.primary,children:e?"Your agent is live!":"Ready to go live?"}),t.jsx(i.BodySecondary,{color:s.COLORS.content.secondary,children:e?"You can manage your agents from the AI agent dashboard.":"This agent will start handling customer conversations immediately. You can pause it at any time."}),t.jsx(n.ModalActions,{children:e?t.jsx(o.Button,{"data-test":"agent-go-dashboard",buttonType:"primary",size:"medium",matchParentWidth:!0,buttonText:"Go to Agent dashboard",onClick:u??r}):t.jsxs(t.Fragment,{children:[t.jsx(o.Button,{"data-test":"agent-confirm-save-draft",buttonType:"secondary",size:"medium",matchParentWidth:!0,buttonText:"Save as draft",onClick:c}),t.jsx(o.Button,{"data-test":"agent-confirm-go-live",buttonType:"primary",size:"medium",matchParentWidth:!0,buttonText:"Go live now",isLoading:l,onClick:d})]})})]})})};exports.GoLiveModal=y;
2
+ //# sourceMappingURL=GoLiveModal.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"GoLiveModal.js","sources":["../../../../../src/components/agent-builder/components/GoLiveModal.tsx"],"sourcesContent":["import ManifestGlass from '@src/assets/icons/ManifestGlass.svg';\nimport SuccessIcon from '@src/assets/icons/successIcon.svg';\nimport React from 'react';\nimport { Button } from '@src/components/button';\nimport { StyledModal } from '@src/components/modals';\nimport { BodySecondary, TitleRegular } from '@src/components/TypographyStyle';\nimport { COLORS } from '@src/constants/Theme';\nimport { ModalActions, ModalBody, ModalIcon } from '../AgentBuilder.styled';\n\nexport type GoLiveModalMode = 'confirm' | 'success' | null;\n\ninterface GoLiveModalProps {\n\tmode: GoLiveModalMode;\n\tonClose: () => void;\n\tonConfirm: () => void;\n\tonSaveDraft: () => void;\n\tonGoToDashboard?: () => void;\n\tisPublishing?: boolean;\n}\n\n/**\n * Confirm / success dialog for going live. Uses `StyledModal` as the shell but\n * renders the actions INSIDE the body (not StyledModal's footer) — the footer's\n * `margin-top:auto` detaches from this short, centered hero layout and spills\n * out of the card. Body-level actions stay anchored under the content.\n */\nexport const GoLiveModal: React.FC<GoLiveModalProps> = ({\n\tmode,\n\tonClose,\n\tonConfirm,\n\tonSaveDraft,\n\tonGoToDashboard,\n\tisPublishing,\n}) => {\n\tif (!mode) {\n\t\treturn null;\n\t}\n\n\tconst isSuccess = mode === 'success';\n\n\treturn (\n\t\t<StyledModal\n\t\t\tdata-test=\"agent-go-live-modal\"\n\t\t\topen\n\t\t\tonClose={onClose}\n\t\t\twidth={isSuccess ? '400px' : '520px'}\n\t\t>\n\t\t\t<ModalBody>\n\t\t\t\t<ModalIcon>\n\t\t\t\t\t{isSuccess ? (\n\t\t\t\t\t\t<SuccessIcon width={64} height={64} />\n\t\t\t\t\t) : (\n\t\t\t\t\t\t<ManifestGlass width={64} height={64} />\n\t\t\t\t\t)}\n\t\t\t\t</ModalIcon>\n\n\t\t\t\t<TitleRegular color={COLORS.content.primary}>\n\t\t\t\t\t{isSuccess ? 'Your agent is live!' : 'Ready to go live?'}\n\t\t\t\t</TitleRegular>\n\t\t\t\t<BodySecondary color={COLORS.content.secondary}>\n\t\t\t\t\t{isSuccess\n\t\t\t\t\t\t? 'You can manage your agents from the AI agent dashboard.'\n\t\t\t\t\t\t: 'This agent will start handling customer conversations immediately. You can pause it at any time.'}\n\t\t\t\t</BodySecondary>\n\n\t\t\t\t<ModalActions>\n\t\t\t\t\t{isSuccess ? (\n\t\t\t\t\t\t<Button\n\t\t\t\t\t\t\tdata-test=\"agent-go-dashboard\"\n\t\t\t\t\t\t\tbuttonType=\"primary\"\n\t\t\t\t\t\t\tsize=\"medium\"\n\t\t\t\t\t\t\tmatchParentWidth\n\t\t\t\t\t\t\tbuttonText=\"Go to Agent dashboard\"\n\t\t\t\t\t\t\tonClick={onGoToDashboard ?? onClose}\n\t\t\t\t\t\t/>\n\t\t\t\t\t) : (\n\t\t\t\t\t\t<>\n\t\t\t\t\t\t\t<Button\n\t\t\t\t\t\t\t\tdata-test=\"agent-confirm-save-draft\"\n\t\t\t\t\t\t\t\tbuttonType=\"secondary\"\n\t\t\t\t\t\t\t\tsize=\"medium\"\n\t\t\t\t\t\t\t\tmatchParentWidth\n\t\t\t\t\t\t\t\tbuttonText=\"Save as draft\"\n\t\t\t\t\t\t\t\tonClick={onSaveDraft}\n\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t\t<Button\n\t\t\t\t\t\t\t\tdata-test=\"agent-confirm-go-live\"\n\t\t\t\t\t\t\t\tbuttonType=\"primary\"\n\t\t\t\t\t\t\t\tsize=\"medium\"\n\t\t\t\t\t\t\t\tmatchParentWidth\n\t\t\t\t\t\t\t\tbuttonText=\"Go live now\"\n\t\t\t\t\t\t\t\tisLoading={isPublishing}\n\t\t\t\t\t\t\t\tonClick={onConfirm}\n\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t</>\n\t\t\t\t\t)}\n\t\t\t\t</ModalActions>\n\t\t\t</ModalBody>\n\t\t</StyledModal>\n\t);\n};\n"],"names":["GoLiveModal","mode","onClose","onConfirm","onSaveDraft","onGoToDashboard","isPublishing","isSuccess","jsx","StyledModal","ModalBody","ModalIcon","SuccessIcon","ManifestGlass","TitleRegular","COLORS","BodySecondary","ModalActions","Button","jsxs","Fragment"],"mappings":"saA0BaA,EAA0C,CAAC,CACvD,KAAAC,EACA,QAAAC,EACA,UAAAC,EACA,YAAAC,EACA,gBAAAC,EACA,aAAAC,CACD,IAAM,CACL,GAAI,CAACL,EACJ,OAAO,KAGR,MAAMM,EAAYN,IAAS,UAE3B,OACCO,EAAAA,IAACC,EAAAA,YAAA,CACA,YAAU,sBACV,KAAI,GACJ,QAAAP,EACA,MAAOK,EAAY,QAAU,QAE7B,gBAACG,YAAA,CACA,SAAA,CAAAF,MAACG,EAAAA,UAAA,CACC,SAAAJ,EACAC,EAAAA,IAACI,EAAAA,QAAA,CAAY,MAAO,GAAI,OAAQ,GAAI,QAEnCC,EAAAA,QAAA,CAAc,MAAO,GAAI,OAAQ,GAAI,EAExC,EAEAL,EAAAA,IAACM,EAAAA,cAAa,MAAOC,SAAO,QAAQ,QAClC,SAAAR,EAAY,sBAAwB,mBAAA,CACtC,EACAC,EAAAA,IAACQ,EAAAA,eAAc,MAAOD,SAAO,QAAQ,UACnC,SAAAR,EACE,0DACA,kGAAA,CACJ,EAEAC,EAAAA,IAACS,EAAAA,cACC,SAAAV,EACAC,EAAAA,IAACU,EAAAA,OAAA,CACA,YAAU,qBACV,WAAW,UACX,KAAK,SACL,iBAAgB,GAChB,WAAW,wBACX,QAASb,GAAmBH,CAAA,CAAA,EAG7BiB,EAAAA,KAAAC,WAAA,CACC,SAAA,CAAAZ,EAAAA,IAACU,EAAAA,OAAA,CACA,YAAU,2BACV,WAAW,YACX,KAAK,SACL,iBAAgB,GAChB,WAAW,gBACX,QAASd,CAAA,CAAA,EAEVI,EAAAA,IAACU,EAAAA,OAAA,CACA,YAAU,wBACV,WAAW,UACX,KAAK,SACL,iBAAgB,GAChB,WAAW,cACX,UAAWZ,EACX,QAASH,CAAA,CAAA,CACV,CAAA,CACD,CAAA,CAEF,CAAA,CAAA,CACD,CAAA,CAAA,CAGH"}
@@ -0,0 +1,2 @@
1
+ "use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const n=require("react/jsx-runtime"),i=require("react"),x=require("../../TypographyStyle.js"),T=require("../../../constants/Theme.js"),u=require("../AgentBuilder.styled.js"),D=require("../constants/editorStyle.js"),d=require("../utils/mentionSerialization.js"),L=require("./MentionPicker.js"),P=require("../../../editor/BikEditor.js"),_=({label:m,value:c,onChange:p,maxLength:a,placeholder:y,minHeight:C="200px",resetKey:s,mentionItems:r,tools:E,onMentionSelect:b,onFocus:j,registerInsert:o,onCreateSubAgent:q,action:k,...O})=>{const l=i.useRef(null),[R,S]=i.useState(c.length),h=i.useCallback((t,e,B)=>{const f=l.current;if(!f)return;const H=r.find(g=>String(g.id)===String(e)&&g.meta?.kind===t),A=B??H?.label??e;f.insertInlineContent(`${d.buildMentionHtml(String(e),A,t)}&nbsp;`)},[r]);i.useEffect(()=>{if(o)return o(h),()=>o(null)},[o,h]);const M=i.useMemo(()=>d.instructionsToEditorHtml(c,r),[s]);return i.useEffect(()=>S(c.length),[s]),n.jsxs(u.FieldBlock,{children:[n.jsxs(u.FieldLabelRow,{children:[n.jsx(x.TitleSmall,{color:T.COLORS.content.primary,children:m}),n.jsxs(x.BodyCaption,{color:T.COLORS.content.secondary,children:[R,"/",a]})]}),n.jsxs(u.AiTextAreaShell,{minHeight:C,"data-test":O["data-test"],children:[n.jsx(P.BikEditor,{ref:l,initialContent:M,placeholder:y,maxCharacters:a,minHeight:"120px",maxHeight:"320px",style:{border:"none"},editorStyle:D.AGENT_EDITOR_STYLE,onFocus:j,mentions:{agents:r,removeTriggerOnDismiss:!0,renderDropdown:t=>n.jsx(L.MentionPicker,{...t,onCreateSubAgent:q}),onSelect:t=>{const e=t.meta?.kind;e&&b?.(e,String(t.id))}},onChange:t=>{S(t.characterCount);const e=l.current?.getJSON()??null;p(d.editorDocToInstructions(e,E))}},s),k]})]})};exports.MentionEditor=_;
2
+ //# sourceMappingURL=MentionEditor.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"MentionEditor.js","sources":["../../../../../src/components/agent-builder/components/MentionEditor.tsx"],"sourcesContent":["import { BikEditor, BikEditorRef, MentionItem } from '@src/editor';\nimport React, {\n\tuseCallback,\n\tuseEffect,\n\tuseMemo,\n\tuseRef,\n\tuseState,\n} from 'react';\nimport { BodyCaption, TitleSmall } from '@src/components/TypographyStyle';\nimport { COLORS } from '@src/constants/Theme';\nimport { AgentTool } from '../AgentBuilder.model';\nimport {\n\tAiTextAreaShell,\n\tFieldBlock,\n\tFieldLabelRow,\n} from '../AgentBuilder.styled';\nimport { AGENT_EDITOR_STYLE } from '../constants/editorStyle';\nimport {\n\tbuildMentionHtml,\n\teditorDocToInstructions,\n\tinstructionsToEditorHtml,\n\tMentionKindMeta,\n} from '../utils/mentionSerialization';\nimport { MentionPicker } from './MentionPicker';\n\ntype InsertFn = (kind: 'tool' | 'subagent', id: string, label?: string) => void;\n\ninterface MentionEditorProps {\n\tlabel: string;\n\tvalue: string;\n\tonChange: (text: string) => void;\n\tmaxLength: number;\n\tplaceholder?: string;\n\tminHeight?: string;\n\t/** Changing this remounts the editor with fresh content. */\n\tresetKey?: string | number;\n\t/** Items shown in the `@` picker (tools, and sub-agents where allowed). */\n\tmentionItems: MentionItem[];\n\t/** Tools used to serialise mention nodes back to `{{tool:KEY}}`. */\n\ttools: AgentTool[];\n\t/** Called when an item is picked from the `@` menu (to attach it upstream). */\n\tonMentionSelect?: (kind: 'tool' | 'subagent', id: string) => void;\n\tonFocus?: () => void;\n\t/** Receives an insert-at-cursor fn (and null on unmount) for side-panel adds. */\n\tregisterInsert?: (fn: InsertFn | null) => void;\n\t/**\n\t * When set, the `@` picker's Sub-agent view shows a \"Create new\" row that calls\n\t * this (opens the create-sub-agent drawer). Omit to hide it (e.g. the drawer's\n\t * own editors, which can't nest sub-agents).\n\t */\n\tonCreateSubAgent?: () => void;\n\t/** Optional action(s) rendered inside the shell, below the editor. */\n\taction?: React.ReactNode;\n\t'data-test'?: string;\n}\n\n/**\n * Presentational BikEditor field with `@` mentions. Stores firebase token text\n * (`{{tool:KEY}}` / `{{subagent:ID}}`). Context-free — both the builder's\n * Step-3 fields and the create-sub-agent drawer compose it.\n */\nexport const MentionEditor: React.FC<MentionEditorProps> = ({\n\tlabel,\n\tvalue,\n\tonChange,\n\tmaxLength,\n\tplaceholder,\n\tminHeight = '200px',\n\tresetKey,\n\tmentionItems,\n\ttools,\n\tonMentionSelect,\n\tonFocus,\n\tregisterInsert,\n\tonCreateSubAgent,\n\taction,\n\t...rest\n}) => {\n\tconst editorRef = useRef<BikEditorRef>(null);\n\tconst [count, setCount] = useState(value.length);\n\n\tconst insert = useCallback<InsertFn>(\n\t\t(kind, id, overrideLabel) => {\n\t\t\tconst editor = editorRef.current;\n\t\t\tif (!editor) {\n\t\t\t\treturn;\n\t\t\t}\n\t\t\tconst item = mentionItems.find(\n\t\t\t\t(m) =>\n\t\t\t\t\tString(m.id) === String(id) &&\n\t\t\t\t\t(m.meta as unknown as MentionKindMeta | undefined)?.kind === kind,\n\t\t\t);\n\t\t\tconst finalLabel = overrideLabel ?? item?.label ?? id;\n\t\t\teditor.insertInlineContent(\n\t\t\t\t`${buildMentionHtml(String(id), finalLabel, kind)}&nbsp;`,\n\t\t\t);\n\t\t},\n\t\t[mentionItems],\n\t);\n\n\tuseEffect(() => {\n\t\tif (!registerInsert) {\n\t\t\treturn;\n\t\t}\n\t\tregisterInsert(insert);\n\t\treturn () => registerInsert(null);\n\t}, [registerInsert, insert]);\n\n\t// Mount-only initial HTML; recomputed (editor remounted via key) on resetKey.\n\tconst initialHtml = useMemo(\n\t\t() => instructionsToEditorHtml(value, mentionItems),\n\t\t// eslint-disable-next-line react-hooks/exhaustive-deps\n\t\t[resetKey],\n\t);\n\n\tuseEffect(\n\t\t() => setCount(value.length),\n\t\t// eslint-disable-next-line react-hooks/exhaustive-deps\n\t\t[resetKey],\n\t);\n\n\treturn (\n\t\t<FieldBlock>\n\t\t\t<FieldLabelRow>\n\t\t\t\t<TitleSmall color={COLORS.content.primary}>{label}</TitleSmall>\n\t\t\t\t<BodyCaption color={COLORS.content.secondary}>\n\t\t\t\t\t{count}/{maxLength}\n\t\t\t\t</BodyCaption>\n\t\t\t</FieldLabelRow>\n\n\t\t\t<AiTextAreaShell minHeight={minHeight} data-test={rest['data-test']}>\n\t\t\t\t<BikEditor\n\t\t\t\t\tkey={resetKey}\n\t\t\t\t\tref={editorRef}\n\t\t\t\t\tinitialContent={initialHtml}\n\t\t\t\t\tplaceholder={placeholder}\n\t\t\t\t\tmaxCharacters={maxLength}\n\t\t\t\t\tminHeight=\"120px\"\n\t\t\t\t\tmaxHeight=\"320px\"\n\t\t\t\t\tstyle={{ border: 'none' }}\n\t\t\t\t\teditorStyle={AGENT_EDITOR_STYLE}\n\t\t\t\t\tonFocus={onFocus}\n\t\t\t\t\tmentions={{\n\t\t\t\t\t\tagents: mentionItems,\n\t\t\t\t\t\tremoveTriggerOnDismiss: true,\n\t\t\t\t\t\trenderDropdown: (props) => (\n\t\t\t\t\t\t\t<MentionPicker {...props} onCreateSubAgent={onCreateSubAgent} />\n\t\t\t\t\t\t),\n\t\t\t\t\t\tonSelect: (item) => {\n\t\t\t\t\t\t\tconst kind = (item.meta as unknown as MentionKindMeta | undefined)\n\t\t\t\t\t\t\t\t?.kind;\n\t\t\t\t\t\t\tif (kind) {\n\t\t\t\t\t\t\t\tonMentionSelect?.(kind, String(item.id));\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t},\n\t\t\t\t\t}}\n\t\t\t\t\tonChange={(snapshot) => {\n\t\t\t\t\t\tsetCount(snapshot.characterCount);\n\t\t\t\t\t\tconst doc = editorRef.current?.getJSON() ?? null;\n\t\t\t\t\t\tonChange(editorDocToInstructions(doc, tools));\n\t\t\t\t\t}}\n\t\t\t\t/>\n\t\t\t\t{action}\n\t\t\t</AiTextAreaShell>\n\t\t</FieldBlock>\n\t);\n};\n"],"names":["MentionEditor","label","value","onChange","maxLength","placeholder","minHeight","resetKey","mentionItems","tools","onMentionSelect","onFocus","registerInsert","onCreateSubAgent","action","rest","editorRef","useRef","count","setCount","useState","insert","useCallback","kind","id","overrideLabel","editor","item","m","finalLabel","buildMentionHtml","useEffect","initialHtml","useMemo","instructionsToEditorHtml","FieldBlock","jsxs","FieldLabelRow","jsx","TitleSmall","COLORS","BodyCaption","AiTextAreaShell","BikEditor","AGENT_EDITOR_STYLE","props","MentionPicker","snapshot","doc","editorDocToInstructions"],"mappings":"+ZA6DaA,EAA8C,CAAC,CAC3D,MAAAC,EACA,MAAAC,EACA,SAAAC,EACA,UAAAC,EACA,YAAAC,EACA,UAAAC,EAAY,QACZ,SAAAC,EACA,aAAAC,EACA,MAAAC,EACA,gBAAAC,EACA,QAAAC,EACA,eAAAC,EACA,iBAAAC,EACA,OAAAC,EACA,GAAGC,CACJ,IAAM,CACL,MAAMC,EAAYC,EAAAA,OAAqB,IAAI,EACrC,CAACC,EAAOC,CAAQ,EAAIC,EAAAA,SAASlB,EAAM,MAAM,EAEzCmB,EAASC,EAAAA,YACd,CAACC,EAAMC,EAAIC,IAAkB,CAC5B,MAAMC,EAASV,EAAU,QACzB,GAAI,CAACU,EACJ,OAED,MAAMC,EAAOnB,EAAa,KACxBoB,GACA,OAAOA,EAAE,EAAE,IAAM,OAAOJ,CAAE,GACzBI,EAAE,MAAiD,OAASL,CAAA,EAEzDM,EAAaJ,GAAiBE,GAAM,OAASH,EACnDE,EAAO,oBACN,GAAGI,EAAAA,iBAAiB,OAAON,CAAE,EAAGK,EAAYN,CAAI,CAAC,QAAA,CAEnD,EACA,CAACf,CAAY,CAAA,EAGduB,EAAAA,UAAU,IAAM,CACf,GAAKnB,EAGL,OAAAA,EAAeS,CAAM,EACd,IAAMT,EAAe,IAAI,CACjC,EAAG,CAACA,EAAgBS,CAAM,CAAC,EAG3B,MAAMW,EAAcC,EAAAA,QACnB,IAAMC,EAAAA,yBAAyBhC,EAAOM,CAAY,EAElD,CAACD,CAAQ,CAAA,EAGVwB,OAAAA,EAAAA,UACC,IAAMZ,EAASjB,EAAM,MAAM,EAE3B,CAACK,CAAQ,CAAA,SAIR4B,aAAA,CACA,SAAA,CAAAC,OAACC,EAAAA,cAAA,CACA,SAAA,CAAAC,MAACC,EAAAA,WAAA,CAAW,MAAOC,EAAAA,OAAO,QAAQ,QAAU,SAAAvC,EAAM,EAClDmC,EAAAA,KAACK,EAAAA,YAAA,CAAY,MAAOD,EAAAA,OAAO,QAAQ,UACjC,SAAA,CAAAtB,EAAM,IAAEd,CAAA,CAAA,CACV,CAAA,EACD,SAECsC,EAAAA,gBAAA,CAAgB,UAAApC,EAAsB,YAAWS,EAAK,WAAW,EACjE,SAAA,CAAAuB,EAAAA,IAACK,EAAAA,UAAA,CAEA,IAAK3B,EACL,eAAgBgB,EAChB,YAAA3B,EACA,cAAeD,EACf,UAAU,QACV,UAAU,QACV,MAAO,CAAE,OAAQ,MAAA,EACjB,YAAawC,EAAAA,mBACb,QAAAjC,EACA,SAAU,CACT,OAAQH,EACR,uBAAwB,GACxB,eAAiBqC,SACfC,EAAAA,cAAA,CAAe,GAAGD,EAAO,iBAAAhC,EAAoC,EAE/D,SAAWc,GAAS,CACnB,MAAMJ,EAAQI,EAAK,MAChB,KACCJ,GACHb,IAAkBa,EAAM,OAAOI,EAAK,EAAE,CAAC,CAEzC,CAAA,EAED,SAAWoB,GAAa,CACvB5B,EAAS4B,EAAS,cAAc,EAChC,MAAMC,EAAMhC,EAAU,SAAS,QAAA,GAAa,KAC5Cb,EAAS8C,EAAAA,wBAAwBD,EAAKvC,CAAK,CAAC,CAC7C,CAAA,EA5BKF,CAAA,EA8BLO,CAAA,CAAA,CACF,CAAA,EACD,CAEF"}
@@ -0,0 +1,2 @@
1
+ "use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const x=require("react/jsx-runtime"),a=require("react"),T=require("../context/AgentBuilderContext.js"),c=require("../utils/mentionSerialization.js"),j=require("./MentionEditor.js"),I=({fieldKey:t,label:b,placeholder:g,maxLength:M,minHeight:d,...m})=>{const{value:e,patch:o,availableTools:i,availableSubAgents:u,applicationType:r,mentionResetKey:p,registerMentionField:l,notifyMentionFocus:C,onCreateSubAgent:S,requestCreateSubAgent:A}=T.useAgentBuilderContext(),q=a.useMemo(()=>c.buildAgentMentionItems(i,u,c.appTypeLabel(r)),[i,u,r]),v=a.useCallback(n=>l(t,n),[l,t]),F=a.useCallback((n,s)=>{n==="tool"?e.tools.includes(s)||o({tools:[...e.tools,s]}):e.subagents.includes(s)||o({subagents:[...e.subagents,s]})},[o,e.tools,e.subagents]);return x.jsx(j.MentionEditor,{label:b,value:e[t]??"",onChange:n=>o({[t]:n}),maxLength:M,placeholder:g,minHeight:d,resetKey:`${e.id}:${t}:${p}`,mentionItems:q,tools:i,onMentionSelect:F,onFocus:()=>C(t),registerInsert:v,onCreateSubAgent:S?A:void 0,"data-test":m["data-test"]})};exports.MentionField=I;
2
+ //# sourceMappingURL=MentionField.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"MentionField.js","sources":["../../../../../src/components/agent-builder/components/MentionField.tsx"],"sourcesContent":["import React, { useCallback, useMemo } from 'react';\nimport { AgentValue } from '../AgentBuilder.model';\nimport {\n\tMentionFieldKey,\n\tuseAgentBuilderContext,\n} from '../context/AgentBuilderContext';\nimport {\n\tappTypeLabel,\n\tbuildAgentMentionItems,\n} from '../utils/mentionSerialization';\nimport { MentionEditor } from './MentionEditor';\n\ninterface MentionFieldProps {\n\t/** Which AgentValue field this editor reads / writes. */\n\tfieldKey: MentionFieldKey;\n\tlabel: string;\n\tplaceholder?: string;\n\tmaxLength: number;\n\tminHeight?: string;\n\t'data-test'?: string;\n}\n\n/**\n * Context-bound {@link MentionEditor} for the builder's Step-3 Instructions /\n * Guardrails. Both `@` tools and sub-agents are offered; the field registers its\n * insert + focus with the context so side-panel adds drop a chip into whichever\n * field was last focused, and remounts on `mentionResetKey`.\n */\nexport const MentionField: React.FC<MentionFieldProps> = ({\n\tfieldKey,\n\tlabel,\n\tplaceholder,\n\tmaxLength,\n\tminHeight,\n\t...rest\n}) => {\n\tconst {\n\t\tvalue,\n\t\tpatch,\n\t\tavailableTools,\n\t\tavailableSubAgents,\n\t\tapplicationType,\n\t\tmentionResetKey,\n\t\tregisterMentionField,\n\t\tnotifyMentionFocus,\n\t\tonCreateSubAgent,\n\t\trequestCreateSubAgent,\n\t} = useAgentBuilderContext();\n\n\tconst mentionItems = useMemo(\n\t\t() =>\n\t\t\tbuildAgentMentionItems(\n\t\t\t\tavailableTools,\n\t\t\t\tavailableSubAgents,\n\t\t\t\tappTypeLabel(applicationType),\n\t\t\t),\n\t\t[availableTools, availableSubAgents, applicationType],\n\t);\n\n\tconst registerInsert = useCallback(\n\t\t(fn: Parameters<typeof registerMentionField>[1]) =>\n\t\t\tregisterMentionField(fieldKey, fn),\n\t\t[registerMentionField, fieldKey],\n\t);\n\n\tconst onMentionSelect = useCallback(\n\t\t(kind: 'tool' | 'subagent', id: string) => {\n\t\t\tif (kind === 'tool') {\n\t\t\t\tif (!value.tools.includes(id)) {\n\t\t\t\t\tpatch({ tools: [...value.tools, id] });\n\t\t\t\t}\n\t\t\t} else if (!value.subagents.includes(id)) {\n\t\t\t\tpatch({ subagents: [...value.subagents, id] });\n\t\t\t}\n\t\t},\n\t\t[patch, value.tools, value.subagents],\n\t);\n\n\treturn (\n\t\t<MentionEditor\n\t\t\tlabel={label}\n\t\t\tvalue={(value[fieldKey] as string | undefined) ?? ''}\n\t\t\tonChange={(text) => patch({ [fieldKey]: text } as Partial<AgentValue>)}\n\t\t\tmaxLength={maxLength}\n\t\t\tplaceholder={placeholder}\n\t\t\tminHeight={minHeight}\n\t\t\tresetKey={`${value.id}:${fieldKey}:${mentionResetKey}`}\n\t\t\tmentionItems={mentionItems}\n\t\t\ttools={availableTools}\n\t\t\tonMentionSelect={onMentionSelect}\n\t\t\tonFocus={() => notifyMentionFocus(fieldKey)}\n\t\t\tregisterInsert={registerInsert}\n\t\t\tonCreateSubAgent={onCreateSubAgent ? requestCreateSubAgent : undefined}\n\t\t\tdata-test={rest['data-test']}\n\t\t/>\n\t);\n};\n"],"names":["MentionField","fieldKey","label","placeholder","maxLength","minHeight","rest","value","patch","availableTools","availableSubAgents","applicationType","mentionResetKey","registerMentionField","notifyMentionFocus","onCreateSubAgent","requestCreateSubAgent","useAgentBuilderContext","mentionItems","useMemo","buildAgentMentionItems","appTypeLabel","registerInsert","useCallback","fn","onMentionSelect","kind","id","jsx","MentionEditor","text"],"mappings":"qQA4BaA,EAA4C,CAAC,CACzD,SAAAC,EACA,MAAAC,EACA,YAAAC,EACA,UAAAC,EACA,UAAAC,EACA,GAAGC,CACJ,IAAM,CACL,KAAM,CACL,MAAAC,EACA,MAAAC,EACA,eAAAC,EACA,mBAAAC,EACA,gBAAAC,EACA,gBAAAC,EACA,qBAAAC,EACA,mBAAAC,EACA,iBAAAC,EACA,sBAAAC,CAAA,EACGC,yBAAA,EAEEC,EAAeC,EAAAA,QACpB,IACCC,EAAAA,uBACCX,EACAC,EACAW,EAAAA,aAAaV,CAAe,CAAA,EAE9B,CAACF,EAAgBC,EAAoBC,CAAe,CAAA,EAG/CW,EAAiBC,EAAAA,YACrBC,GACAX,EAAqBZ,EAAUuB,CAAE,EAClC,CAACX,EAAsBZ,CAAQ,CAAA,EAG1BwB,EAAkBF,EAAAA,YACvB,CAACG,EAA2BC,IAAe,CACtCD,IAAS,OACPnB,EAAM,MAAM,SAASoB,CAAE,GAC3BnB,EAAM,CAAE,MAAO,CAAC,GAAGD,EAAM,MAAOoB,CAAE,EAAG,EAE3BpB,EAAM,UAAU,SAASoB,CAAE,GACtCnB,EAAM,CAAE,UAAW,CAAC,GAAGD,EAAM,UAAWoB,CAAE,EAAG,CAE/C,EACA,CAACnB,EAAOD,EAAM,MAAOA,EAAM,SAAS,CAAA,EAGrC,OACCqB,EAAAA,IAACC,EAAAA,cAAA,CACA,MAAA3B,EACA,MAAQK,EAAMN,CAAQ,GAA4B,GAClD,SAAW6B,GAAStB,EAAM,CAAE,CAACP,CAAQ,EAAG6B,EAA6B,EACrE,UAAA1B,EACA,YAAAD,EACA,UAAAE,EACA,SAAU,GAAGE,EAAM,EAAE,IAAIN,CAAQ,IAAIW,CAAe,GACpD,aAAAM,EACA,MAAOT,EACP,gBAAAgB,EACA,QAAS,IAAMX,EAAmBb,CAAQ,EAC1C,eAAAqB,EACA,iBAAkBP,EAAmBC,EAAwB,OAC7D,YAAWV,EAAK,WAAW,CAAA,CAAA,CAG9B"}
@@ -0,0 +1,78 @@
1
+ "use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const o=require("react/jsx-runtime"),N=require("../../../assets/icons/chevronRight.svg.js"),z=require("../../../assets/icons/searchIcon.svg.js"),U=require("../../../icons/Arrows/Normal arrows/ArrowLeft.js"),l=require("react"),F=require("styled-components"),_=require("../../TypographyStyle.js"),r=require("../../../constants/Theme.js"),$=require("../utils/mentionSerialization.js"),q=require("../utils/sourceIcons.js"),P=n=>n&&typeof n=="object"&&"default"in n?n:{default:n},M=P(l),d=P(F),G=[{key:"tool",label:"Tools"},{key:"subagent",label:"Sub-agent"}],g=n=>n.meta,R=n=>g(n)?.plainLabel??n.label,J="__bik_create_subagent__",Q=({items:n,onSelect:O,registerKeyHandler:x,onClose:I,onCreateSubAgent:p})=>{const[T,S]=l.useState(null),[c,v]=l.useState(null),[b,f]=l.useState(0),[k,L]=l.useState(""),h=l.useMemo(()=>n.filter(t=>g(t)?.kind==="tool"),[n]),y=l.useMemo(()=>n.filter(t=>g(t)?.kind==="subagent"),[n]),j=l.useMemo(()=>{const t=[];return h.forEach(e=>{const u=g(e)?.source??"other";t.includes(u)||t.push(u)}),t},[h]),m=l.useMemo(()=>G.filter(t=>t.key==="tool"?h.length>0:y.length>0||!!p),[h.length,y.length,p]),C=m.length===1?m[0].key:null,i=T??C,s=i?i==="subagent"?C?null:{title:"Sub-agent",onBack:()=>S(null)}:c?{title:$.toolSourceLabel(c),onBack:()=>v(null),icon:q.SOURCE_ICONS[c]}:C?null:{title:"Tools",onBack:()=>S(null)}:null,a=l.useMemo(()=>{if(!i)return m.map(e=>({id:e.key,label:e.label,drillsIn:!0,onActivate:()=>{S(e.key),v(null)}}));if(i==="subagent"){const e=y.map(u=>({id:String(u.id),label:R(u),drillsIn:!1,onActivate:()=>O(u)}));return p&&e.push({id:J,label:"Create new",drillsIn:!1,isCreate:!0,onActivate:()=>{I?.(),p()}}),e}if(!c)return j.map(e=>({id:e,label:$.toolSourceLabel(e),drillsIn:!0,icon:q.SOURCE_ICONS[e],onActivate:()=>v(e)}));const t=k.trim().toLowerCase();return h.filter(e=>(g(e)?.source??"other")===c).filter(e=>!t||R(e).toLowerCase().includes(t)).map(e=>({id:String(e.id),label:R(e),drillsIn:!1,onActivate:()=>O(e)}))},[i,m,c,k,h,y,j,O,I,p]);l.useEffect(()=>f(0),[i,c,k,n]),l.useEffect(()=>L(""),[i,c]);const E=l.useRef({rows:a,activeIndex:b,header:s});E.current={rows:a,activeIndex:b,header:s},l.useEffect(()=>{if(x)return x(t=>{const{rows:e,activeIndex:u,header:A}=E.current;switch(t.key){case"ArrowDown":return e.length&&f(w=>(w+1)%e.length),!0;case"ArrowUp":return e.length&&f(w=>(w+e.length-1)%e.length),!0;case"ArrowRight":case"Enter":return e[u]?.onActivate(),!0;case"ArrowLeft":return A?(A.onBack(),!0):!1;default:return!1}}),()=>x(null)},[x]);const B=i?a.length&&!a[0].drillsIn?"items":"sources":"categories",D=i==="tool"&&!!c;return o.jsxs(V,{className:`bik-mention-picker bik-mention-picker--${B}`,children:[s&&o.jsxs(H,{type:"button",onClick:s.onBack,style:{background:r.COLORS.surface.subdued},children:[s.icon?M.default.createElement(s.icon.Icon,{width:s.icon.w,height:s.icon.h}):o.jsx(U.default,{width:20,height:20,color:r.COLORS.content.primary}),o.jsxs(_.TitleSmall,{children:[" ",s.title]})]}),D&&o.jsxs(W,{children:[o.jsx(z.default,{width:20,height:20,color:r.COLORS.content.placeholder}),o.jsx(X,{autoFocus:!0,value:k,placeholder:"Search","data-test":"mention-picker-search",onChange:t=>L(t.target.value),onKeyDown:t=>{a.length&&(t.key==="ArrowDown"?(t.preventDefault(),f(e=>(e+1)%a.length)):t.key==="ArrowUp"?(t.preventDefault(),f(e=>(e+a.length-1)%a.length)):t.key==="Enter"&&(t.preventDefault(),a[b]?.onActivate()))}})]}),a.length===0?o.jsx(ee,{children:i==="subagent"?"No sub-agents available":"No tools available"}):a.map((t,e)=>o.jsx(Y,{type:"button",$active:e===b,onMouseEnter:()=>f(e),onClick:t.onActivate,children:t.isCreate?o.jsx(K,{children:t.label}):o.jsxs(o.Fragment,{children:[o.jsxs(Z,{children:[t.icon&&M.default.createElement(t.icon.Icon,{width:t.icon.w,height:t.icon.h}),o.jsx(_.BodySecondary,{color:r.COLORS.content.primary,children:t.label})]}),t.drillsIn&&o.jsx(N.default,{width:12,height:12})]})},t.id))]})},V=d.default.div`
2
+ display: flex;
3
+ flex-direction: column;
4
+ min-width: 240px;
5
+ max-height: 280px;
6
+ overflow-y: auto;
7
+ background: ${r.COLORS.surface.standard};
8
+ border: 1px solid ${r.COLORS.stroke.primary};
9
+ border-radius: 4px;
10
+ box-shadow: 0px -2px 8px 0px #0000001f;
11
+ `,W=d.default.div`
12
+ display: flex;
13
+ align-items: center;
14
+ gap: 8px;
15
+ padding: 10px 12px;
16
+ border-bottom: 1px solid ${r.COLORS.stroke.primary};
17
+ `,X=d.default.input`
18
+ flex: 1;
19
+ min-width: 0;
20
+ border: none;
21
+ outline: none;
22
+ background: transparent;
23
+ font-family: Inter;
24
+ font-size: 14px;
25
+ color: ${r.COLORS.content.primary};
26
+
27
+ &::placeholder {
28
+ color: ${r.COLORS.content.placeholder};
29
+ }
30
+ `,Y=d.default.button`
31
+ display: flex;
32
+ justify-content: space-between;
33
+ align-items: center;
34
+ gap: 2px;
35
+ width: 100%;
36
+ padding: 8px 10px;
37
+ height: 48px;
38
+ border: none;
39
+ border-bottom: 1px solid ${r.COLORS.stroke.primary};
40
+ background: ${n=>n.$active?r.COLORS.surface.subdued:"transparent"};
41
+ cursor: pointer;
42
+ text-align: left;
43
+
44
+ &:hover {
45
+ background: ${r.COLORS.surface.subdued};
46
+ }
47
+ `,Z=d.default.div`
48
+ display: flex;
49
+ align-items: center;
50
+ gap: 12px;
51
+ min-width: 0;
52
+ `,K=d.default.div`
53
+ width: 100%;
54
+ text-align: center;
55
+ color: ${r.COLORS.content.brand};
56
+ font-family: Inter;
57
+ font-size: 14px;
58
+ font-weight: 600;
59
+ `,H=d.default.button`
60
+ display: flex;
61
+ align-items: center;
62
+ padding: 12px 16px;
63
+ border: none;
64
+ border-bottom: 1px solid ${r.COLORS.stroke.primary};
65
+ background: transparent;
66
+ cursor: pointer;
67
+ font-family: Inter;
68
+ font-size: 12px;
69
+ font-weight: 600;
70
+ height: 48px;
71
+ gap: 4px;
72
+ `,ee=d.default.div`
73
+ padding: 12px 10px;
74
+ font-family: Inter;
75
+ font-size: 13px;
76
+ color: ${r.COLORS.content.secondary};
77
+ `;exports.MentionPicker=Q;
78
+ //# sourceMappingURL=MentionPicker.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"MentionPicker.js","sources":["../../../../../src/components/agent-builder/components/MentionPicker.tsx"],"sourcesContent":["// import ChevronLeft from '@src/assets/icons/chevronLeft.svg';\nimport ChevronRight from '@src/assets/icons/chevronRight.svg';\nimport SearchIcon from '@src/assets/icons/searchIcon.svg';\nimport type { MentionDropdownRenderProps, MentionItem } from '@src/editor';\nimport SvgArrowLeft from '@src/icons/Arrows/Normal arrows/ArrowLeft';\nimport React, { useEffect, useMemo, useRef, useState } from 'react';\nimport styled from 'styled-components';\nimport { BodySecondary, TitleSmall } from '@src/components/TypographyStyle';\nimport { COLORS } from '@src/constants/Theme';\nimport {\n\tMentionKindMeta,\n\ttoolSourceLabel,\n} from '../utils/mentionSerialization';\nimport { SOURCE_ICONS, SourceIcon } from '../utils/sourceIcons';\n\ntype Category = 'tool' | 'subagent';\n\nconst CATEGORIES: { key: Category; label: string }[] = [\n\t{ key: 'tool', label: 'Tools' },\n\t{ key: 'subagent', label: 'Sub-agent' },\n];\n\nconst metaOf = (item: MentionItem): MentionKindMeta | undefined =>\n\titem.meta as unknown as MentionKindMeta | undefined;\n\nconst rowLabel = (item: MentionItem): string =>\n\tmetaOf(item)?.plainLabel ?? item.label;\n\n/** One navigable row in the picker's current view. */\ntype PickerRowModel = {\n\tid: string;\n\tlabel: string;\n\t/** Drill-in rows show a chevron; leaf (selectable) rows do not. */\n\tdrillsIn: boolean;\n\t/** Leading brand glyph (source rows only). */\n\ticon?: SourceIcon;\n\t/** Brand-coloured \"Create new\" action row (not a selectable item). */\n\tisCreate?: boolean;\n\tonActivate: () => void;\n};\n\n/** Sentinel id for the sub-agent \"Create new\" row. */\nconst CREATE_SUBAGENT_ID = '__bik_create_subagent__';\n\ntype MentionPickerProps = MentionDropdownRenderProps & {\n\t/** Opens the create-sub-agent drawer (shows a \"Create new\" row in the Sub-agent view). */\n\tonCreateSubAgent?: () => void;\n};\n\n/**\n * `@` reference picker. Drills:\n * root → Tools → <source> (Manifest / Shopify / …) → tool\n * → Sub-agent → sub-agent\n * (\"Add condition\" and \"Variables\" are intentionally not shown yet.)\n *\n * Owns keyboard navigation (↑/↓ move, →/Enter activate, ← go back) over the\n * CURRENTLY visible rows — registered with the editor via `registerKeyHandler`.\n */\nexport const MentionPicker: React.FC<MentionPickerProps> = ({\n\titems,\n\tonSelect,\n\tregisterKeyHandler,\n\tonClose,\n\tonCreateSubAgent,\n}) => {\n\tconst [category, setCategory] = useState<Category | null>(null);\n\tconst [source, setSource] = useState<string | null>(null);\n\tconst [activeIndex, setActiveIndex] = useState(0);\n\t// Search box shown inside a source's tool list (Manifest / Shopify); filters\n\t// that source's tools by name.\n\tconst [search, setSearch] = useState('');\n\n\tconst tools = useMemo(\n\t\t() => items.filter((i) => metaOf(i)?.kind === 'tool'),\n\t\t[items],\n\t);\n\tconst subAgents = useMemo(\n\t\t() => items.filter((i) => metaOf(i)?.kind === 'subagent'),\n\t\t[items],\n\t);\n\tconst sources = useMemo(() => {\n\t\tconst acc: string[] = [];\n\t\ttools.forEach((t) => {\n\t\t\tconst s = metaOf(t)?.source ?? 'other';\n\t\t\tif (!acc.includes(s)) {\n\t\t\t\tacc.push(s);\n\t\t\t}\n\t\t});\n\t\treturn acc;\n\t}, [tools]);\n\n\t// Show a category when it has items — and ALWAYS show Sub-agent when creating\n\t// one is possible, so an agent with no sub-agents yet still gets the root\n\t// \"Tools / Sub-agent\" choice (with a \"Create new\" inside). When only one is\n\t// available (e.g. the sub-agent drawer offers tools only) the selector is skipped.\n\tconst availableCategories = useMemo(\n\t\t() =>\n\t\t\tCATEGORIES.filter((c) =>\n\t\t\t\tc.key === 'tool'\n\t\t\t\t\t? tools.length > 0\n\t\t\t\t\t: subAgents.length > 0 || !!onCreateSubAgent,\n\t\t\t),\n\t\t[tools.length, subAgents.length, onCreateSubAgent],\n\t);\n\tconst soleCategory =\n\t\tavailableCategories.length === 1 ? availableCategories[0].key : null;\n\tconst activeCategory = category ?? soleCategory;\n\n\t// Title shown above the current view, and whether we can go back a level.\n\t// With a sole category there is no root to go back to (no category header).\n\t// In a source detail view the leading glyph is the source icon (per design),\n\t// otherwise it's a back chevron.\n\tconst header: {\n\t\ttitle: string;\n\t\tonBack: () => void;\n\t\ticon?: SourceIcon;\n\t} | null = !activeCategory\n\t\t? null\n\t\t: activeCategory === 'subagent'\n\t\t? soleCategory\n\t\t\t? null\n\t\t\t: { title: 'Sub-agent', onBack: () => setCategory(null) }\n\t\t: source\n\t\t? {\n\t\t\t\ttitle: toolSourceLabel(source),\n\t\t\t\tonBack: () => setSource(null),\n\t\t\t\ticon: SOURCE_ICONS[source],\n\t\t }\n\t\t: soleCategory\n\t\t? null\n\t\t: { title: 'Tools', onBack: () => setCategory(null) };\n\n\t// Build the navigable rows for the current view.\n\tconst rows: PickerRowModel[] = useMemo(() => {\n\t\tif (!activeCategory) {\n\t\t\treturn availableCategories.map((c) => ({\n\t\t\t\tid: c.key,\n\t\t\t\tlabel: c.label,\n\t\t\t\tdrillsIn: true,\n\t\t\t\tonActivate: () => {\n\t\t\t\t\tsetCategory(c.key);\n\t\t\t\t\tsetSource(null);\n\t\t\t\t},\n\t\t\t}));\n\t\t}\n\t\tif (activeCategory === 'subagent') {\n\t\t\tconst leaves: PickerRowModel[] = subAgents.map((item) => ({\n\t\t\t\tid: String(item.id),\n\t\t\t\tlabel: rowLabel(item),\n\t\t\t\tdrillsIn: false,\n\t\t\t\tonActivate: () => onSelect(item),\n\t\t\t}));\n\t\t\t// \"Create new\" opens the drawer — first dismiss the menu (strips the \"@\").\n\t\t\tif (onCreateSubAgent) {\n\t\t\t\tleaves.push({\n\t\t\t\t\tid: CREATE_SUBAGENT_ID,\n\t\t\t\t\tlabel: 'Create new',\n\t\t\t\t\tdrillsIn: false,\n\t\t\t\t\tisCreate: true,\n\t\t\t\t\tonActivate: () => {\n\t\t\t\t\t\tonClose?.();\n\t\t\t\t\t\tonCreateSubAgent();\n\t\t\t\t\t},\n\t\t\t\t});\n\t\t\t}\n\t\t\treturn leaves;\n\t\t}\n\t\tif (!source) {\n\t\t\treturn sources.map((s) => ({\n\t\t\t\tid: s,\n\t\t\t\tlabel: toolSourceLabel(s),\n\t\t\t\tdrillsIn: true,\n\t\t\t\ticon: SOURCE_ICONS[s],\n\t\t\t\tonActivate: () => setSource(s),\n\t\t\t}));\n\t\t}\n\t\tconst q = search.trim().toLowerCase();\n\t\treturn tools\n\t\t\t.filter((t) => (metaOf(t)?.source ?? 'other') === source)\n\t\t\t.filter((t) => !q || rowLabel(t).toLowerCase().includes(q))\n\t\t\t.map((item) => ({\n\t\t\t\tid: String(item.id),\n\t\t\t\tlabel: rowLabel(item),\n\t\t\t\tdrillsIn: false,\n\t\t\t\tonActivate: () => onSelect(item),\n\t\t\t}));\n\t}, [\n\t\tactiveCategory,\n\t\tavailableCategories,\n\t\tsource,\n\t\tsearch,\n\t\ttools,\n\t\tsubAgents,\n\t\tsources,\n\t\tonSelect,\n\t\tonClose,\n\t\tonCreateSubAgent,\n\t]);\n\n\t// Reset highlight whenever the view (or filtered result set) changes.\n\tuseEffect(() => setActiveIndex(0), [activeCategory, source, search, items]);\n\t// Clear the search box when leaving a source view.\n\tuseEffect(() => setSearch(''), [activeCategory, source]);\n\n\t// Keep the latest rows/index reachable from the stable key handler.\n\tconst navRef = useRef({ rows, activeIndex, header });\n\tnavRef.current = { rows, activeIndex, header };\n\n\tuseEffect(() => {\n\t\tif (!registerKeyHandler) {\n\t\t\treturn;\n\t\t}\n\t\tregisterKeyHandler((event) => {\n\t\t\tconst { rows: r, activeIndex: i, header: h } = navRef.current;\n\t\t\tswitch (event.key) {\n\t\t\t\tcase 'ArrowDown':\n\t\t\t\t\tif (r.length) setActiveIndex((p) => (p + 1) % r.length);\n\t\t\t\t\treturn true;\n\t\t\t\tcase 'ArrowUp':\n\t\t\t\t\tif (r.length) setActiveIndex((p) => (p + r.length - 1) % r.length);\n\t\t\t\t\treturn true;\n\t\t\t\tcase 'ArrowRight':\n\t\t\t\tcase 'Enter':\n\t\t\t\t\tr[i]?.onActivate();\n\t\t\t\t\treturn true;\n\t\t\t\tcase 'ArrowLeft':\n\t\t\t\t\tif (h) {\n\t\t\t\t\t\th.onBack();\n\t\t\t\t\t\treturn true;\n\t\t\t\t\t}\n\t\t\t\t\treturn false;\n\t\t\t\tdefault:\n\t\t\t\t\treturn false;\n\t\t\t}\n\t\t});\n\t\treturn () => registerKeyHandler(null);\n\t}, [registerKeyHandler]);\n\n\tconst variant = !activeCategory\n\t\t? 'categories'\n\t\t: rows.length && !rows[0].drillsIn\n\t\t? 'items'\n\t\t: 'sources';\n\n\t// Search lives inside a source's tool list (Manifest / Shopify).\n\tconst showSearch = activeCategory === 'tool' && !!source;\n\n\treturn (\n\t\t<PickerCard className={`bik-mention-picker bik-mention-picker--${variant}`}>\n\t\t\t{header && (\n\t\t\t\t<PickerBack\n\t\t\t\t\ttype=\"button\"\n\t\t\t\t\tonClick={header.onBack}\n\t\t\t\t\tstyle={{ background: COLORS.surface.subdued }}\n\t\t\t\t>\n\t\t\t\t\t{header.icon ? (\n\t\t\t\t\t\tReact.createElement(header.icon.Icon, {\n\t\t\t\t\t\t\twidth: header.icon.w,\n\t\t\t\t\t\t\theight: header.icon.h,\n\t\t\t\t\t\t})\n\t\t\t\t\t) : (\n\t\t\t\t\t\t<SvgArrowLeft\n\t\t\t\t\t\t\twidth={20}\n\t\t\t\t\t\t\theight={20}\n\t\t\t\t\t\t\tcolor={COLORS.content.primary}\n\t\t\t\t\t\t/>\n\t\t\t\t\t)}\n\t\t\t\t\t<TitleSmall> {header.title}</TitleSmall>\n\t\t\t\t</PickerBack>\n\t\t\t)}\n\t\t\t{showSearch && (\n\t\t\t\t<PickerSearchRow>\n\t\t\t\t\t<SearchIcon\n\t\t\t\t\t\twidth={20}\n\t\t\t\t\t\theight={20}\n\t\t\t\t\t\tcolor={COLORS.content.placeholder}\n\t\t\t\t\t/>\n\t\t\t\t\t<PickerSearchInput\n\t\t\t\t\t\t// Focus on open so the user can type immediately (appears only\n\t\t\t\t\t\t// after they drill into a source).\n\t\t\t\t\t\t// eslint-disable-next-line jsx-a11y/no-autofocus\n\t\t\t\t\t\tautoFocus\n\t\t\t\t\t\tvalue={search}\n\t\t\t\t\t\tplaceholder=\"Search\"\n\t\t\t\t\t\tdata-test=\"mention-picker-search\"\n\t\t\t\t\t\tonChange={(e) => setSearch(e.target.value)}\n\t\t\t\t\t\tonKeyDown={(e) => {\n\t\t\t\t\t\t\tif (!rows.length) {\n\t\t\t\t\t\t\t\treturn;\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\tif (e.key === 'ArrowDown') {\n\t\t\t\t\t\t\t\te.preventDefault();\n\t\t\t\t\t\t\t\tsetActiveIndex((p) => (p + 1) % rows.length);\n\t\t\t\t\t\t\t} else if (e.key === 'ArrowUp') {\n\t\t\t\t\t\t\t\te.preventDefault();\n\t\t\t\t\t\t\t\tsetActiveIndex((p) => (p + rows.length - 1) % rows.length);\n\t\t\t\t\t\t\t} else if (e.key === 'Enter') {\n\t\t\t\t\t\t\t\te.preventDefault();\n\t\t\t\t\t\t\t\trows[activeIndex]?.onActivate();\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}}\n\t\t\t\t\t/>\n\t\t\t\t</PickerSearchRow>\n\t\t\t)}\n\t\t\t{rows.length === 0 ? (\n\t\t\t\t<PickerEmpty>\n\t\t\t\t\t{activeCategory === 'subagent'\n\t\t\t\t\t\t? 'No sub-agents available'\n\t\t\t\t\t\t: 'No tools available'}\n\t\t\t\t</PickerEmpty>\n\t\t\t) : (\n\t\t\t\trows.map((row, i) => (\n\t\t\t\t\t<PickerRow\n\t\t\t\t\t\tkey={row.id}\n\t\t\t\t\t\ttype=\"button\"\n\t\t\t\t\t\t$active={i === activeIndex}\n\t\t\t\t\t\tonMouseEnter={() => setActiveIndex(i)}\n\t\t\t\t\t\tonClick={row.onActivate}\n\t\t\t\t\t>\n\t\t\t\t\t\t{row.isCreate ? (\n\t\t\t\t\t\t\t<CreateRowText>{row.label}</CreateRowText>\n\t\t\t\t\t\t) : (\n\t\t\t\t\t\t\t<>\n\t\t\t\t\t\t\t\t<PickerRowMain>\n\t\t\t\t\t\t\t\t\t{row.icon &&\n\t\t\t\t\t\t\t\t\t\tReact.createElement(row.icon.Icon, {\n\t\t\t\t\t\t\t\t\t\t\twidth: row.icon.w,\n\t\t\t\t\t\t\t\t\t\t\theight: row.icon.h,\n\t\t\t\t\t\t\t\t\t\t})}\n\t\t\t\t\t\t\t\t\t<BodySecondary color={COLORS.content.primary}>\n\t\t\t\t\t\t\t\t\t\t{row.label}\n\t\t\t\t\t\t\t\t\t</BodySecondary>\n\t\t\t\t\t\t\t\t</PickerRowMain>\n\t\t\t\t\t\t\t\t{row.drillsIn && <ChevronRight width={12} height={12} />}\n\t\t\t\t\t\t\t</>\n\t\t\t\t\t\t)}\n\t\t\t\t\t</PickerRow>\n\t\t\t\t))\n\t\t\t)}\n\t\t</PickerCard>\n\t);\n};\n\nconst PickerCard = styled.div`\n\tdisplay: flex;\n\tflex-direction: column;\n\tmin-width: 240px;\n\tmax-height: 280px;\n\toverflow-y: auto;\n\tbackground: ${COLORS.surface.standard};\n\tborder: 1px solid ${COLORS.stroke.primary};\n\tborder-radius: 4px;\n\tbox-shadow: 0px -2px 8px 0px #0000001f;\n`;\n\n// Search box at the top of a source's tool list (Manifest / Shopify).\nconst PickerSearchRow = styled.div`\n\tdisplay: flex;\n\talign-items: center;\n\tgap: 8px;\n\tpadding: 10px 12px;\n\tborder-bottom: 1px solid ${COLORS.stroke.primary};\n`;\n\nconst PickerSearchInput = styled.input`\n\tflex: 1;\n\tmin-width: 0;\n\tborder: none;\n\toutline: none;\n\tbackground: transparent;\n\tfont-family: Inter;\n\tfont-size: 14px;\n\tcolor: ${COLORS.content.primary};\n\n\t&::placeholder {\n\t\tcolor: ${COLORS.content.placeholder};\n\t}\n`;\n\nconst PickerRow = styled.button<{ $active?: boolean }>`\n\tdisplay: flex;\n\tjustify-content: space-between;\n\talign-items: center;\n\tgap: 2px;\n\twidth: 100%;\n\tpadding: 8px 10px;\n\theight: 48px;\n\tborder: none;\n\tborder-bottom: 1px solid ${COLORS.stroke.primary};\n\tbackground: ${(p) => (p.$active ? COLORS.surface.subdued : 'transparent')};\n\tcursor: pointer;\n\ttext-align: left;\n\n\t&:hover {\n\t\tbackground: ${COLORS.surface.subdued};\n\t}\n`;\n\n// Left cluster: leading source glyph + label (chevron stays right via PickerRow).\nconst PickerRowMain = styled.div`\n\tdisplay: flex;\n\talign-items: center;\n\tgap: 12px;\n\tmin-width: 0;\n`;\n\n// \"Create new\" — centered brand text, no icon (matches the side-panel dropdown).\nconst CreateRowText = styled.div`\n\twidth: 100%;\n\ttext-align: center;\n\tcolor: ${COLORS.content.brand};\n\tfont-family: Inter;\n\tfont-size: 14px;\n\tfont-weight: 600;\n`;\n\nconst PickerBack = styled.button`\n\tdisplay: flex;\n\talign-items: center;\n\tpadding: 12px 16px;\n\tborder: none;\n\tborder-bottom: 1px solid ${COLORS.stroke.primary};\n\tbackground: transparent;\n\tcursor: pointer;\n\tfont-family: Inter;\n\tfont-size: 12px;\n\tfont-weight: 600;\n\theight: 48px;\n\tgap: 4px;\n`;\n\nconst PickerEmpty = styled.div`\n\tpadding: 12px 10px;\n\tfont-family: Inter;\n\tfont-size: 13px;\n\tcolor: ${COLORS.content.secondary};\n`;\n"],"names":["CATEGORIES","metaOf","item","rowLabel","CREATE_SUBAGENT_ID","MentionPicker","items","onSelect","registerKeyHandler","onClose","onCreateSubAgent","category","setCategory","useState","source","setSource","activeIndex","setActiveIndex","search","setSearch","tools","useMemo","i","subAgents","sources","acc","t","s","availableCategories","c","soleCategory","activeCategory","header","toolSourceLabel","SOURCE_ICONS","rows","leaves","q","useEffect","navRef","useRef","event","r","h","p","variant","showSearch","jsxs","PickerCard","PickerBack","COLORS","React","jsx","SvgArrowLeft","TitleSmall","PickerSearchRow","SearchIcon","PickerSearchInput","e","PickerEmpty","row","PickerRow","CreateRowText","Fragment","PickerRowMain","BodySecondary","ChevronRight","styled"],"mappings":"yjBAiBMA,EAAiD,CACtD,CAAE,IAAK,OAAQ,MAAO,OAAA,EACtB,CAAE,IAAK,WAAY,MAAO,WAAA,CAC3B,EAEMC,EAAUC,GACfA,EAAK,KAEAC,EAAYD,GACjBD,EAAOC,CAAI,GAAG,YAAcA,EAAK,MAgB5BE,EAAqB,0BAgBdC,EAA8C,CAAC,CAC3D,MAAAC,EACA,SAAAC,EACA,mBAAAC,EACA,QAAAC,EACA,iBAAAC,CACD,IAAM,CACL,KAAM,CAACC,EAAUC,CAAW,EAAIC,EAAAA,SAA0B,IAAI,EACxD,CAACC,EAAQC,CAAS,EAAIF,EAAAA,SAAwB,IAAI,EAClD,CAACG,EAAaC,CAAc,EAAIJ,EAAAA,SAAS,CAAC,EAG1C,CAACK,EAAQC,CAAS,EAAIN,EAAAA,SAAS,EAAE,EAEjCO,EAAQC,EAAAA,QACb,IAAMf,EAAM,OAAQgB,GAAMrB,EAAOqB,CAAC,GAAG,OAAS,MAAM,EACpD,CAAChB,CAAK,CAAA,EAEDiB,EAAYF,EAAAA,QACjB,IAAMf,EAAM,OAAQgB,GAAMrB,EAAOqB,CAAC,GAAG,OAAS,UAAU,EACxD,CAAChB,CAAK,CAAA,EAEDkB,EAAUH,EAAAA,QAAQ,IAAM,CAC7B,MAAMI,EAAgB,CAAA,EACtB,OAAAL,EAAM,QAASM,GAAM,CACpB,MAAMC,EAAI1B,EAAOyB,CAAC,GAAG,QAAU,QAC1BD,EAAI,SAASE,CAAC,GAClBF,EAAI,KAAKE,CAAC,CAEZ,CAAC,EACMF,CACR,EAAG,CAACL,CAAK,CAAC,EAMJQ,EAAsBP,EAAAA,QAC3B,IACCrB,EAAW,OAAQ6B,GAClBA,EAAE,MAAQ,OACPT,EAAM,OAAS,EACfG,EAAU,OAAS,GAAK,CAAC,CAACb,CAAA,EAE/B,CAACU,EAAM,OAAQG,EAAU,OAAQb,CAAgB,CAAA,EAE5CoB,EACLF,EAAoB,SAAW,EAAIA,EAAoB,CAAC,EAAE,IAAM,KAC3DG,EAAiBpB,GAAYmB,EAM7BE,EAIMD,EAETA,IAAmB,WACnBD,EACC,KACA,CAAE,MAAO,YAAa,OAAQ,IAAMlB,EAAY,IAAI,CAAA,EACrDE,EACA,CACA,MAAOmB,EAAAA,gBAAgBnB,CAAM,EAC7B,OAAQ,IAAMC,EAAU,IAAI,EAC5B,KAAMmB,EAAAA,aAAapB,CAAM,CAAA,EAEzBgB,EACA,KACA,CAAE,MAAO,QAAS,OAAQ,IAAMlB,EAAY,IAAI,CAAA,EAbhD,KAgBGuB,EAAyBd,EAAAA,QAAQ,IAAM,CAC5C,GAAI,CAACU,EACJ,OAAOH,EAAoB,IAAKC,IAAO,CACtC,GAAIA,EAAE,IACN,MAAOA,EAAE,MACT,SAAU,GACV,WAAY,IAAM,CACjBjB,EAAYiB,EAAE,GAAG,EACjBd,EAAU,IAAI,CACf,CAAA,EACC,EAEH,GAAIgB,IAAmB,WAAY,CAClC,MAAMK,EAA2Bb,EAAU,IAAKrB,IAAU,CACzD,GAAI,OAAOA,EAAK,EAAE,EAClB,MAAOC,EAASD,CAAI,EACpB,SAAU,GACV,WAAY,IAAMK,EAASL,CAAI,CAAA,EAC9B,EAEF,OAAIQ,GACH0B,EAAO,KAAK,CACX,GAAIhC,EACJ,MAAO,aACP,SAAU,GACV,SAAU,GACV,WAAY,IAAM,CACjBK,IAAA,EACAC,EAAA,CACD,CAAA,CACA,EAEK0B,CACR,CACA,GAAI,CAACtB,EACJ,OAAOU,EAAQ,IAAKG,IAAO,CAC1B,GAAIA,EACJ,MAAOM,EAAAA,gBAAgBN,CAAC,EACxB,SAAU,GACV,KAAMO,EAAAA,aAAaP,CAAC,EACpB,WAAY,IAAMZ,EAAUY,CAAC,CAAA,EAC5B,EAEH,MAAMU,EAAInB,EAAO,KAAA,EAAO,YAAA,EACxB,OAAOE,EACL,OAAQM,IAAOzB,EAAOyB,CAAC,GAAG,QAAU,WAAaZ,CAAM,EACvD,OAAQY,GAAM,CAACW,GAAKlC,EAASuB,CAAC,EAAE,YAAA,EAAc,SAASW,CAAC,CAAC,EACzD,IAAKnC,IAAU,CACf,GAAI,OAAOA,EAAK,EAAE,EAClB,MAAOC,EAASD,CAAI,EACpB,SAAU,GACV,WAAY,IAAMK,EAASL,CAAI,CAAA,EAC9B,CACJ,EAAG,CACF6B,EACAH,EACAd,EACAI,EACAE,EACAG,EACAC,EACAjB,EACAE,EACAC,CAAA,CACA,EAGD4B,YAAU,IAAMrB,EAAe,CAAC,EAAG,CAACc,EAAgBjB,EAAQI,EAAQZ,CAAK,CAAC,EAE1EgC,EAAAA,UAAU,IAAMnB,EAAU,EAAE,EAAG,CAACY,EAAgBjB,CAAM,CAAC,EAGvD,MAAMyB,EAASC,EAAAA,OAAO,CAAE,KAAAL,EAAM,YAAAnB,EAAa,OAAAgB,EAAQ,EACnDO,EAAO,QAAU,CAAE,KAAAJ,EAAM,YAAAnB,EAAa,OAAAgB,CAAA,EAEtCM,EAAAA,UAAU,IAAM,CACf,GAAK9B,EAGL,OAAAA,EAAoBiC,GAAU,CAC7B,KAAM,CAAE,KAAMC,EAAG,YAAapB,EAAG,OAAQqB,GAAMJ,EAAO,QACtD,OAAQE,EAAM,IAAA,CACb,IAAK,YACJ,OAAIC,EAAE,QAAQzB,EAAgB2B,IAAOA,EAAI,GAAKF,EAAE,MAAM,EAC/C,GACR,IAAK,UACJ,OAAIA,EAAE,QAAQzB,EAAgB2B,IAAOA,EAAIF,EAAE,OAAS,GAAKA,EAAE,MAAM,EAC1D,GACR,IAAK,aACL,IAAK,QACJ,OAAAA,EAAEpB,CAAC,GAAG,WAAA,EACC,GACR,IAAK,YACJ,OAAIqB,GACHA,EAAE,OAAA,EACK,IAED,GACR,QACC,MAAO,EAAA,CAEV,CAAC,EACM,IAAMnC,EAAmB,IAAI,CACrC,EAAG,CAACA,CAAkB,CAAC,EAEvB,MAAMqC,EAAWd,EAEdI,EAAK,QAAU,CAACA,EAAK,CAAC,EAAE,SACxB,QACA,UAHA,aAMGW,EAAaf,IAAmB,QAAU,CAAC,CAACjB,EAElD,OACCiC,EAAAA,KAACC,EAAA,CAAW,UAAW,0CAA0CH,CAAO,GACtE,SAAA,CAAAb,GACAe,EAAAA,KAACE,EAAA,CACA,KAAK,SACL,QAASjB,EAAO,OAChB,MAAO,CAAE,WAAYkB,SAAO,QAAQ,OAAA,EAEnC,SAAA,CAAAlB,EAAO,KACPmB,EAAAA,QAAM,cAAcnB,EAAO,KAAK,KAAM,CACrC,MAAOA,EAAO,KAAK,EACnB,OAAQA,EAAO,KAAK,CAAA,CACpB,EAEDoB,EAAAA,IAACC,EAAAA,QAAA,CACA,MAAO,GACP,OAAQ,GACR,MAAOH,EAAAA,OAAO,QAAQ,OAAA,CAAA,SAGvBI,EAAAA,WAAA,CAAW,SAAA,CAAA,IAAEtB,EAAO,KAAA,CAAA,CAAM,CAAA,CAAA,CAAA,EAG5Bc,UACCS,EAAA,CACA,SAAA,CAAAH,EAAAA,IAACI,EAAAA,QAAA,CACA,MAAO,GACP,OAAQ,GACR,MAAON,EAAAA,OAAO,QAAQ,WAAA,CAAA,EAEvBE,EAAAA,IAACK,EAAA,CAIA,UAAS,GACT,MAAOvC,EACP,YAAY,SACZ,YAAU,wBACV,SAAWwC,GAAMvC,EAAUuC,EAAE,OAAO,KAAK,EACzC,UAAYA,GAAM,CACZvB,EAAK,SAGNuB,EAAE,MAAQ,aACbA,EAAE,eAAA,EACFzC,EAAgB2B,IAAOA,EAAI,GAAKT,EAAK,MAAM,GACjCuB,EAAE,MAAQ,WACpBA,EAAE,eAAA,EACFzC,EAAgB2B,IAAOA,EAAIT,EAAK,OAAS,GAAKA,EAAK,MAAM,GAC/CuB,EAAE,MAAQ,UACpBA,EAAE,eAAA,EACFvB,EAAKnB,CAAW,GAAG,WAAA,GAErB,CAAA,CAAA,CACD,EACD,EAEAmB,EAAK,SAAW,EAChBiB,EAAAA,IAACO,IACC,SAAA5B,IAAmB,WACjB,0BACA,oBAAA,CACJ,EAEAI,EAAK,IAAI,CAACyB,EAAKtC,IACd8B,EAAAA,IAACS,EAAA,CAEA,KAAK,SACL,QAASvC,IAAMN,EACf,aAAc,IAAMC,EAAeK,CAAC,EACpC,QAASsC,EAAI,WAEZ,WAAI,SACJR,EAAAA,IAACU,GAAe,SAAAF,EAAI,KAAA,CAAM,EAE1Bb,EAAAA,KAAAgB,EAAAA,SAAA,CACC,SAAA,CAAAhB,OAACiB,EAAA,CACC,SAAA,CAAAJ,EAAI,MACJT,EAAAA,QAAM,cAAcS,EAAI,KAAK,KAAM,CAClC,MAAOA,EAAI,KAAK,EAChB,OAAQA,EAAI,KAAK,CAAA,CACjB,QACDK,EAAAA,cAAA,CAAc,MAAOf,EAAAA,OAAO,QAAQ,QACnC,WAAI,KAAA,CACN,CAAA,EACD,EACCU,EAAI,UAAYR,EAAAA,IAACc,EAAAA,SAAa,MAAO,GAAI,OAAQ,EAAA,CAAI,CAAA,CAAA,CACvD,CAAA,EArBIN,EAAI,EAAA,CAwBV,CAAA,EAEH,CAEF,EAEMZ,EAAamB,EAAAA,QAAO;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,eAMXjB,EAAAA,OAAO,QAAQ,QAAQ;AAAA,qBACjBA,EAAAA,OAAO,OAAO,OAAO;AAAA;AAAA;AAAA,EAMpCK,EAAkBY,EAAAA,QAAO;AAAA;AAAA;AAAA;AAAA;AAAA,4BAKHjB,EAAAA,OAAO,OAAO,OAAO;AAAA,EAG3CO,EAAoBU,EAAAA,QAAO;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,UAQvBjB,EAAAA,OAAO,QAAQ,OAAO;AAAA;AAAA;AAAA,WAGrBA,EAAAA,OAAO,QAAQ,WAAW;AAAA;AAAA,EAI/BW,EAAYM,EAAAA,QAAO;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,4BASGjB,EAAAA,OAAO,OAAO,OAAO;AAAA,eACjCN,GAAOA,EAAE,QAAUM,EAAAA,OAAO,QAAQ,QAAU,aAAc;AAAA;AAAA;AAAA;AAAA;AAAA,gBAK1DA,EAAAA,OAAO,QAAQ,OAAO;AAAA;AAAA,EAKhCc,EAAgBG,EAAAA,QAAO;AAAA;AAAA;AAAA;AAAA;AAAA,EAQvBL,EAAgBK,EAAAA,QAAO;AAAA;AAAA;AAAA,UAGnBjB,EAAAA,OAAO,QAAQ,KAAK;AAAA;AAAA;AAAA;AAAA,EAMxBD,EAAakB,EAAAA,QAAO;AAAA;AAAA;AAAA;AAAA;AAAA,4BAKEjB,EAAAA,OAAO,OAAO,OAAO;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAU3CS,GAAcQ,EAAAA,QAAO;AAAA;AAAA;AAAA;AAAA,UAIjBjB,EAAAA,OAAO,QAAQ,SAAS;AAAA"}
@@ -0,0 +1,2 @@
1
+ "use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const n=require("react/jsx-runtime"),m=require("../../../assets/icons/delete.svg.js"),D=require("../../../assets/icons/edit.svg.js"),f=require("../../../assets/icons/plus.svg.js"),g=require("react"),a=require("../../TypographyStyle.js"),r=require("../../../constants/Theme.js"),o=require("../AgentBuilder.styled.js"),z=require("../utils/sourceIcons.js"),A=require("../../dropdown/Dropdown.js"),F=require("../../button/Button.js"),H=l=>l&&typeof l=="object"&&"default"in l?l:{default:l},L=H(g),B="__bik_create_new__",M=({title:l,helper:C,items:s,addableOptions:u,onAdd:x,onRemove:_,dataTestPrefix:c,emptyText:p,createOption:t,onConfigure:y,sourceGroups:h})=>{const[R,S]=g.useState(!1),[q,j]=g.useState(null),w=!!h&&h.length>0,b=h?.find(e=>e.source===q),v=w?s.length>0:u.length>0||!!t&&s.length>0,O=s.length===0&&!!t&&!w,E=w&&s.length===0,I=()=>{if(w){j(null),S(e=>!e);return}if(u.length===0&&t){t.onSelect();return}S(e=>!e)},k=()=>s.map(e=>n.jsxs(o.SelectableRow,{"data-test":`${c}-row-${e.id}`,children:[e.icon&&L.default.createElement(e.icon.Icon,{width:e.icon.w,height:e.icon.h}),n.jsx(o.RowText,{children:n.jsx(a.BodySecondary,{numberOfLines:1,color:r.COLORS.content.primary,children:e.label})}),n.jsxs(o.RowActions,{children:[y&&n.jsx(o.RowMenuButton,{"data-test":`${c}-edit-${e.id}`,"aria-label":`Edit ${e.label}`,onClick:()=>y(e.id),children:n.jsx(D.default,{width:16,height:16,color:r.COLORS.content.secondary})}),y&&n.jsx(o.RowActionDivider,{"aria-hidden":!0}),n.jsx(o.RowMenuButton,{"data-test":`${c}-delete-${e.id}`,"aria-label":`Delete ${e.label}`,onClick:()=>_(e.id),children:n.jsx(m.default,{width:16,height:16,color:r.COLORS.content.secondary})})]})]},e.id)),$=t?[...u,{label:t.label,value:B,searchKey:t.label,customComponent:n.jsx("div",{style:{width:"100%",textAlign:"center",color:r.COLORS.content.brand,fontFamily:"Inter",fontSize:14,fontWeight:600},children:t.label})}]:u;return n.jsxs(o.SideSection,{children:[n.jsxs(o.SideSectionHeader,{children:[n.jsx(a.TitleSmall,{color:r.COLORS.content.primary,children:l}),v&&n.jsx(o.AddIconButton,{"data-test":`${c}-add`,onClick:I,"aria-label":`Add ${l}`,children:n.jsx(f.default,{width:20,height:20,color:r.COLORS.content.brand})})]}),C&&n.jsx(a.BodyCaption,{color:r.COLORS.content.secondary,children:C}),E?n.jsxs(n.Fragment,{children:[n.jsx(o.SourceButtonRow,{"data-test":`${c}-sources`,children:h?.map(e=>{const d=z.SOURCE_ICONS[e.source];return n.jsxs(o.SourceButton,{type:"button","data-test":`${c}-source-${e.source}`,onClick:()=>j(e.source),children:[d&&L.default.createElement(d.Icon,{width:d.w-4,height:d.h-4}),n.jsx(a.BodySecondary,{color:r.COLORS.content.primary,children:e.label})]},e.source)})}),b&&n.jsx(A.Dropdown,{"data-test":`${c}-dropdown`,size:"small",width:"100%",isSearchable:!0,placeHolder:`Search ${b.label} tools`,options:b.options,onSelect:e=>{const i=(Array.isArray(e)?e[0]:e)?.value;j(null),S(!1),i&&x(i)}})]}):n.jsxs(n.Fragment,{children:[R&&$.length>0&&n.jsx(A.Dropdown,{"data-test":`${c}-dropdown`,size:"small",width:"100%",isSearchable:!0,placeHolder:`Select ${l.toLowerCase()}`,options:$,onSelect:e=>{const i=(Array.isArray(e)?e[0]:e)?.value;S(!1),i&&(i===B?t?.onSelect():x(i))}}),s.length===0&&!R?n.jsxs(n.Fragment,{children:[n.jsx(a.BodyCaption,{color:r.COLORS.content.placeholder,children:p}),O&&t&&n.jsx(F.Button,{"data-test":`${c}-create`,buttonType:"secondary",size:"small",matchParentWidth:!0,LeadingIcon:f.default,buttonText:t.label,onClick:t.onSelect})]}):k()]})]})};exports.SelectableListSection=M;
2
+ //# sourceMappingURL=SelectableListSection.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"SelectableListSection.js","sources":["../../../../../src/components/agent-builder/components/SelectableListSection.tsx"],"sourcesContent":["import DeleteIcon from '@src/assets/icons/delete.svg';\nimport EditIcon from '@src/assets/icons/edit.svg';\nimport PlusIcon from '@src/assets/icons/plus.svg';\nimport React, { useState } from 'react';\nimport { Button } from '@src/components/button';\nimport { Dropdown } from '@src/components/dropdown';\nimport { SingleOption } from '@src/components/dropdown/type';\nimport {\n\tBodyCaption,\n\tBodySecondary,\n\tTitleSmall,\n} from '@src/components/TypographyStyle';\nimport { COLORS } from '@src/constants/Theme';\nimport {\n\tAddIconButton,\n\tRowActionDivider,\n\tRowActions,\n\tRowMenuButton,\n\tRowText,\n\tSelectableRow,\n\tSideSection,\n\tSideSectionHeader,\n\tSourceButton,\n\tSourceButtonRow,\n} from '../AgentBuilder.styled';\nimport { SOURCE_ICONS, SourceIcon } from '../utils/sourceIcons';\n\nexport interface SelectableItem {\n\tid: string;\n\tlabel: string;\n\t/** Leading brand glyph (e.g. a tool's source icon). */\n\ticon?: SourceIcon;\n}\n\n/** A tool source for the empty-state picker (Tools): a button → its searchable list. */\nexport interface SourceGroup {\n\tsource: string;\n\tlabel: string;\n\toptions: SingleOption[];\n}\n\n/** Sentinel value for the \"create new\" entry in the add dropdown. */\nconst CREATE_OPTION_VALUE = '__bik_create_new__';\n\ninterface SelectableListSectionProps {\n\ttitle: string;\n\thelper?: string;\n\titems: SelectableItem[];\n\t/**\n\t * Options shown in the add dropdown. Pass ALL items (not just unselected\n\t * ones) when re-picking an already-added item is allowed (e.g. to insert its\n\t * mention again) — the chip list still shows each item only once.\n\t */\n\taddableOptions: SingleOption[];\n\tonAdd: (id: string) => void;\n\tonRemove: (id: string) => void;\n\tdataTestPrefix: string;\n\temptyText: string;\n\t/**\n\t * Adds a \"create new\" entry at the top of the add dropdown (e.g. \"Create\n\t * sub-agent\"). Selecting it calls `onSelect` instead of `onAdd`.\n\t */\n\tcreateOption?: { label: string; onSelect: () => void };\n\t/**\n\t * When provided, each row shows an edit (Configure) icon next to Delete.\n\t * Omit for tools (Delete only).\n\t */\n\tonConfigure?: (id: string) => void;\n\t/**\n\t * Tool sources (e.g. Manifest / Shopify). When set, the empty state shows a\n\t * button per source; clicking one reveals a searchable dropdown of just that\n\t * source's options. Selecting calls `onAdd`. Takes precedence over the plain\n\t * `addableOptions` dropdown.\n\t */\n\tsourceGroups?: SourceGroup[];\n}\n\nexport const SelectableListSection: React.FC<SelectableListSectionProps> = ({\n\ttitle,\n\thelper,\n\titems,\n\taddableOptions,\n\tonAdd,\n\tonRemove,\n\tdataTestPrefix,\n\temptyText,\n\tcreateOption,\n\tonConfigure,\n\tsourceGroups,\n}) => {\n\tconst [adding, setAdding] = useState(false);\n\t// Tools: which source's searchable list is open (null = just show the buttons).\n\tconst [activeSource, setActiveSource] = useState<string | null>(null);\n\tconst hasSourceGroups = !!sourceGroups && sourceGroups.length > 0;\n\tconst activeGroup = sourceGroups?.find((g) => g.source === activeSource);\n\n\t// Header \"+\" picks an EXISTING item (and, once some exist, re-creates via the\n\t// dropdown's footer row). With an empty list + a createOption the body shows a\n\t// dedicated \"Create new\" button instead, so the header \"+\" would be redundant.\n\t// With sourceGroups the empty state IS the source buttons, so \"+\" only adds more.\n\tconst showAddButton = hasSourceGroups\n\t\t? items.length > 0\n\t\t: addableOptions.length > 0 || (!!createOption && items.length > 0);\n\t// Empty state offers a one-click \"Create new\" (sub-agents) rather than burying\n\t// it behind a single-item dropdown.\n\tconst showEmptyCreate =\n\t\titems.length === 0 && !!createOption && !hasSourceGroups;\n\t// Source buttons ONLY while no tool is added. Once one exists, adding more uses\n\t// the header \"+\" → all-tools dropdown (the buttons never come back).\n\tconst showSourceButtons = hasSourceGroups && items.length === 0;\n\t// Nothing existing to pick → skip the 1-item dropdown and create directly.\n\tconst handleAddClick = () => {\n\t\tif (hasSourceGroups) {\n\t\t\tsetActiveSource(null);\n\t\t\tsetAdding((v) => !v);\n\t\t\treturn;\n\t\t}\n\t\tif (addableOptions.length === 0 && createOption) {\n\t\t\tcreateOption.onSelect();\n\t\t\treturn;\n\t\t}\n\t\tsetAdding((v) => !v);\n\t};\n\n\tconst renderChipRows = () =>\n\t\titems.map((item) => (\n\t\t\t<SelectableRow\n\t\t\t\tkey={item.id}\n\t\t\t\tdata-test={`${dataTestPrefix}-row-${item.id}`}\n\t\t\t>\n\t\t\t\t{item.icon &&\n\t\t\t\t\tReact.createElement(item.icon.Icon, {\n\t\t\t\t\t\twidth: item.icon.w,\n\t\t\t\t\t\theight: item.icon.h,\n\t\t\t\t\t})}\n\t\t\t\t<RowText>\n\t\t\t\t\t<BodySecondary numberOfLines={1} color={COLORS.content.primary}>\n\t\t\t\t\t\t{item.label}\n\t\t\t\t\t</BodySecondary>\n\t\t\t\t</RowText>\n\t\t\t\t<RowActions>\n\t\t\t\t\t{onConfigure && (\n\t\t\t\t\t\t// Configurable rows (sub-agents) get an always-visible edit icon.\n\t\t\t\t\t\t<RowMenuButton\n\t\t\t\t\t\t\tdata-test={`${dataTestPrefix}-edit-${item.id}`}\n\t\t\t\t\t\t\taria-label={`Edit ${item.label}`}\n\t\t\t\t\t\t\tonClick={() => onConfigure(item.id)}\n\t\t\t\t\t\t>\n\t\t\t\t\t\t\t<EditIcon\n\t\t\t\t\t\t\t\twidth={16}\n\t\t\t\t\t\t\t\theight={16}\n\t\t\t\t\t\t\t\tcolor={COLORS.content.secondary}\n\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t</RowMenuButton>\n\t\t\t\t\t)}\n\t\t\t\t\t{onConfigure && <RowActionDivider aria-hidden />}\n\t\t\t\t\t<RowMenuButton\n\t\t\t\t\t\tdata-test={`${dataTestPrefix}-delete-${item.id}`}\n\t\t\t\t\t\taria-label={`Delete ${item.label}`}\n\t\t\t\t\t\tonClick={() => onRemove(item.id)}\n\t\t\t\t\t>\n\t\t\t\t\t\t<DeleteIcon\n\t\t\t\t\t\t\twidth={16}\n\t\t\t\t\t\t\theight={16}\n\t\t\t\t\t\t\tcolor={COLORS.content.secondary}\n\t\t\t\t\t\t/>\n\t\t\t\t\t</RowMenuButton>\n\t\t\t\t</RowActions>\n\t\t\t</SelectableRow>\n\t\t));\n\t// \"Create new\" is a brand-coloured footer row at the BOTTOM of the dropdown,\n\t// separated from the selectable items by a divider.\n\tconst dropdownOptions: SingleOption[] = createOption\n\t\t? [\n\t\t\t\t...addableOptions,\n\t\t\t\t{\n\t\t\t\t\tlabel: createOption.label,\n\t\t\t\t\tvalue: CREATE_OPTION_VALUE,\n\t\t\t\t\tsearchKey: createOption.label,\n\t\t\t\t\tcustomComponent: (\n\t\t\t\t\t\t<div\n\t\t\t\t\t\t\tstyle={{\n\t\t\t\t\t\t\t\twidth: '100%',\n\t\t\t\t\t\t\t\ttextAlign: 'center',\n\t\t\t\t\t\t\t\tcolor: COLORS.content.brand,\n\t\t\t\t\t\t\t\tfontFamily: 'Inter',\n\t\t\t\t\t\t\t\tfontSize: 14,\n\t\t\t\t\t\t\t\tfontWeight: 600,\n\t\t\t\t\t\t\t}}\n\t\t\t\t\t\t>\n\t\t\t\t\t\t\t{createOption.label}\n\t\t\t\t\t\t</div>\n\t\t\t\t\t),\n\t\t\t\t},\n\t\t ]\n\t\t: addableOptions;\n\n\treturn (\n\t\t<SideSection>\n\t\t\t<SideSectionHeader>\n\t\t\t\t<TitleSmall color={COLORS.content.primary}>{title}</TitleSmall>\n\t\t\t\t{showAddButton && (\n\t\t\t\t\t<AddIconButton\n\t\t\t\t\t\tdata-test={`${dataTestPrefix}-add`}\n\t\t\t\t\t\tonClick={handleAddClick}\n\t\t\t\t\t\taria-label={`Add ${title}`}\n\t\t\t\t\t>\n\t\t\t\t\t\t<PlusIcon width={20} height={20} color={COLORS.content.brand} />\n\t\t\t\t\t</AddIconButton>\n\t\t\t\t)}\n\t\t\t</SideSectionHeader>\n\n\t\t\t{helper && (\n\t\t\t\t<BodyCaption color={COLORS.content.secondary}>{helper}</BodyCaption>\n\t\t\t)}\n\n\t\t\t{showSourceButtons ? (\n\t\t\t\t<>\n\t\t\t\t\t{/* No tools yet: one button per source (never shown once a tool exists). */}\n\t\t\t\t\t<SourceButtonRow data-test={`${dataTestPrefix}-sources`}>\n\t\t\t\t\t\t{sourceGroups?.map((g) => {\n\t\t\t\t\t\t\tconst icon = SOURCE_ICONS[g.source];\n\t\t\t\t\t\t\treturn (\n\t\t\t\t\t\t\t\t<SourceButton\n\t\t\t\t\t\t\t\t\tkey={g.source}\n\t\t\t\t\t\t\t\t\ttype=\"button\"\n\t\t\t\t\t\t\t\t\tdata-test={`${dataTestPrefix}-source-${g.source}`}\n\t\t\t\t\t\t\t\t\tonClick={() => setActiveSource(g.source)}\n\t\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t\t\t{icon &&\n\t\t\t\t\t\t\t\t\t\tReact.createElement(icon.Icon, {\n\t\t\t\t\t\t\t\t\t\t\twidth: icon.w - 4,\n\t\t\t\t\t\t\t\t\t\t\theight: icon.h - 4,\n\t\t\t\t\t\t\t\t\t\t})}\n\t\t\t\t\t\t\t\t\t<BodySecondary color={COLORS.content.primary}>\n\t\t\t\t\t\t\t\t\t\t{g.label}\n\t\t\t\t\t\t\t\t\t</BodySecondary>\n\t\t\t\t\t\t\t\t</SourceButton>\n\t\t\t\t\t\t\t);\n\t\t\t\t\t\t})}\n\t\t\t\t\t</SourceButtonRow>\n\n\t\t\t\t\t{/* Chosen source → its searchable tool list. */}\n\t\t\t\t\t{activeGroup && (\n\t\t\t\t\t\t<Dropdown\n\t\t\t\t\t\t\tdata-test={`${dataTestPrefix}-dropdown`}\n\t\t\t\t\t\t\tsize=\"small\"\n\t\t\t\t\t\t\twidth=\"100%\"\n\t\t\t\t\t\t\tisSearchable\n\t\t\t\t\t\t\tplaceHolder={`Search ${activeGroup.label} tools`}\n\t\t\t\t\t\t\toptions={activeGroup.options}\n\t\t\t\t\t\t\tonSelect={(opt) => {\n\t\t\t\t\t\t\t\tconst single = Array.isArray(opt) ? opt[0] : opt;\n\t\t\t\t\t\t\t\tconst v = (single as SingleOption)?.value;\n\t\t\t\t\t\t\t\tsetActiveSource(null);\n\t\t\t\t\t\t\t\tsetAdding(false);\n\t\t\t\t\t\t\t\tif (v) {\n\t\t\t\t\t\t\t\t\tonAdd(v);\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)}\n\t\t\t\t</>\n\t\t\t) : (\n\t\t\t\t<>\n\t\t\t\t\t{adding && dropdownOptions.length > 0 && (\n\t\t\t\t\t\t<Dropdown\n\t\t\t\t\t\t\tdata-test={`${dataTestPrefix}-dropdown`}\n\t\t\t\t\t\t\tsize=\"small\"\n\t\t\t\t\t\t\twidth=\"100%\"\n\t\t\t\t\t\t\tisSearchable\n\t\t\t\t\t\t\tplaceHolder={`Select ${title.toLowerCase()}`}\n\t\t\t\t\t\t\toptions={dropdownOptions}\n\t\t\t\t\t\t\tonSelect={(opt) => {\n\t\t\t\t\t\t\t\tconst single = Array.isArray(opt) ? opt[0] : opt;\n\t\t\t\t\t\t\t\tconst v = (single as SingleOption)?.value;\n\t\t\t\t\t\t\t\tsetAdding(false);\n\t\t\t\t\t\t\t\tif (!v) {\n\t\t\t\t\t\t\t\t\treturn;\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\tif (v === CREATE_OPTION_VALUE) {\n\t\t\t\t\t\t\t\t\tcreateOption?.onSelect();\n\t\t\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\t\tonAdd(v);\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)}\n\n\t\t\t\t\t{items.length === 0 && !adding ? (\n\t\t\t\t\t\t<>\n\t\t\t\t\t\t\t<BodyCaption color={COLORS.content.placeholder}>\n\t\t\t\t\t\t\t\t{emptyText}\n\t\t\t\t\t\t\t</BodyCaption>\n\t\t\t\t\t\t\t{showEmptyCreate && createOption && (\n\t\t\t\t\t\t\t\t<Button\n\t\t\t\t\t\t\t\t\tdata-test={`${dataTestPrefix}-create`}\n\t\t\t\t\t\t\t\t\tbuttonType=\"secondary\"\n\t\t\t\t\t\t\t\t\tsize=\"small\"\n\t\t\t\t\t\t\t\t\tmatchParentWidth\n\t\t\t\t\t\t\t\t\tLeadingIcon={PlusIcon}\n\t\t\t\t\t\t\t\t\tbuttonText={createOption.label}\n\t\t\t\t\t\t\t\t\tonClick={createOption.onSelect}\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) : (\n\t\t\t\t\t\trenderChipRows()\n\t\t\t\t\t)}\n\t\t\t\t</>\n\t\t\t)}\n\t\t</SideSection>\n\t);\n};\n"],"names":["CREATE_OPTION_VALUE","SelectableListSection","title","helper","items","addableOptions","onAdd","onRemove","dataTestPrefix","emptyText","createOption","onConfigure","sourceGroups","adding","setAdding","useState","activeSource","setActiveSource","hasSourceGroups","activeGroup","g","showAddButton","showEmptyCreate","showSourceButtons","handleAddClick","v","renderChipRows","item","jsxs","SelectableRow","React","jsx","RowText","BodySecondary","COLORS","RowActions","RowMenuButton","EditIcon","RowActionDivider","DeleteIcon","dropdownOptions","SideSection","SideSectionHeader","TitleSmall","AddIconButton","PlusIcon","BodyCaption","Fragment","SourceButtonRow","icon","SOURCE_ICONS","SourceButton","Dropdown","opt","Button"],"mappings":"6jBA0CMA,EAAsB,qBAmCfC,EAA8D,CAAC,CAC3E,MAAAC,EACA,OAAAC,EACA,MAAAC,EACA,eAAAC,EACA,MAAAC,EACA,SAAAC,EACA,eAAAC,EACA,UAAAC,EACA,aAAAC,EACA,YAAAC,EACA,aAAAC,CACD,IAAM,CACL,KAAM,CAACC,EAAQC,CAAS,EAAIC,EAAAA,SAAS,EAAK,EAEpC,CAACC,EAAcC,CAAe,EAAIF,EAAAA,SAAwB,IAAI,EAC9DG,EAAkB,CAAC,CAACN,GAAgBA,EAAa,OAAS,EAC1DO,EAAcP,GAAc,KAAMQ,GAAMA,EAAE,SAAWJ,CAAY,EAMjEK,EAAgBH,EACnBd,EAAM,OAAS,EACfC,EAAe,OAAS,GAAM,CAAC,CAACK,GAAgBN,EAAM,OAAS,EAG5DkB,EACLlB,EAAM,SAAW,GAAK,CAAC,CAACM,GAAgB,CAACQ,EAGpCK,EAAoBL,GAAmBd,EAAM,SAAW,EAExDoB,EAAiB,IAAM,CAC5B,GAAIN,EAAiB,CACpBD,EAAgB,IAAI,EACpBH,EAAWW,GAAM,CAACA,CAAC,EACnB,MACD,CACA,GAAIpB,EAAe,SAAW,GAAKK,EAAc,CAChDA,EAAa,SAAA,EACb,MACD,CACAI,EAAWW,GAAM,CAACA,CAAC,CACpB,EAEMC,EAAiB,IACtBtB,EAAM,IAAKuB,GACVC,EAAAA,KAACC,EAAAA,cAAA,CAEA,YAAW,GAAGrB,CAAc,QAAQmB,EAAK,EAAE,GAE1C,SAAA,CAAAA,EAAK,MACLG,EAAAA,QAAM,cAAcH,EAAK,KAAK,KAAM,CACnC,MAAOA,EAAK,KAAK,EACjB,OAAQA,EAAK,KAAK,CAAA,CAClB,EACFI,EAAAA,IAACC,EAAAA,QAAA,CACA,SAAAD,EAAAA,IAACE,EAAAA,cAAA,CAAc,cAAe,EAAG,MAAOC,EAAAA,OAAO,QAAQ,QACrD,SAAAP,EAAK,KAAA,CACP,EACD,SACCQ,EAAAA,WAAA,CACC,SAAA,CAAAxB,GAEAoB,EAAAA,IAACK,EAAAA,cAAA,CACA,YAAW,GAAG5B,CAAc,SAASmB,EAAK,EAAE,GAC5C,aAAY,QAAQA,EAAK,KAAK,GAC9B,QAAS,IAAMhB,EAAYgB,EAAK,EAAE,EAElC,SAAAI,EAAAA,IAACM,EAAAA,QAAA,CACA,MAAO,GACP,OAAQ,GACR,MAAOH,EAAAA,OAAO,QAAQ,SAAA,CAAA,CACvB,CAAA,EAGDvB,GAAeoB,EAAAA,IAACO,EAAAA,iBAAA,CAAiB,cAAW,EAAA,CAAC,EAC9CP,EAAAA,IAACK,EAAAA,cAAA,CACA,YAAW,GAAG5B,CAAc,WAAWmB,EAAK,EAAE,GAC9C,aAAY,UAAUA,EAAK,KAAK,GAChC,QAAS,IAAMpB,EAASoB,EAAK,EAAE,EAE/B,SAAAI,EAAAA,IAACQ,EAAAA,QAAA,CACA,MAAO,GACP,OAAQ,GACR,MAAOL,EAAAA,OAAO,QAAQ,SAAA,CAAA,CACvB,CAAA,CACD,CAAA,CACD,CAAA,CAAA,EAxCKP,EAAK,EAAA,CA0CX,EAGIa,EAAkC9B,EACrC,CACA,GAAGL,EACH,CACC,MAAOK,EAAa,MACpB,MAAOV,EACP,UAAWU,EAAa,MACxB,gBACCqB,EAAAA,IAAC,MAAA,CACA,MAAO,CACN,MAAO,OACP,UAAW,SACX,MAAOG,EAAAA,OAAO,QAAQ,MACtB,WAAY,QACZ,SAAU,GACV,WAAY,GAAA,EAGZ,SAAAxB,EAAa,KAAA,CAAA,CACf,CAEF,EAEAL,EAEH,cACEoC,cAAA,CACA,SAAA,CAAAb,OAACc,EAAAA,kBAAA,CACA,SAAA,CAAAX,MAACY,EAAAA,WAAA,CAAW,MAAOT,EAAAA,OAAO,QAAQ,QAAU,SAAAhC,EAAM,EACjDmB,GACAU,EAAAA,IAACa,EAAAA,cAAA,CACA,YAAW,GAAGpC,CAAc,OAC5B,QAASgB,EACT,aAAY,OAAOtB,CAAK,GAExB,SAAA6B,EAAAA,IAACc,WAAS,MAAO,GAAI,OAAQ,GAAI,MAAOX,SAAO,QAAQ,KAAA,CAAO,CAAA,CAAA,CAC/D,EAEF,EAEC/B,GACA4B,EAAAA,IAACe,EAAAA,YAAA,CAAY,MAAOZ,SAAO,QAAQ,UAAY,SAAA/B,EAAO,EAGtDoB,EACAK,EAAAA,KAAAmB,WAAA,CAEC,SAAA,CAAAhB,EAAAA,IAACiB,EAAAA,gBAAA,CAAgB,YAAW,GAAGxC,CAAc,WAC3C,SAAAI,GAAc,IAAKQ,GAAM,CACzB,MAAM6B,EAAOC,EAAAA,aAAa9B,EAAE,MAAM,EAClC,OACCQ,EAAAA,KAACuB,EAAAA,aAAA,CAEA,KAAK,SACL,YAAW,GAAG3C,CAAc,WAAWY,EAAE,MAAM,GAC/C,QAAS,IAAMH,EAAgBG,EAAE,MAAM,EAEtC,SAAA,CAAA6B,GACAnB,EAAAA,QAAM,cAAcmB,EAAK,KAAM,CAC9B,MAAOA,EAAK,EAAI,EAChB,OAAQA,EAAK,EAAI,CAAA,CACjB,QACDhB,EAAAA,cAAA,CAAc,MAAOC,EAAAA,OAAO,QAAQ,QACnC,WAAE,KAAA,CACJ,CAAA,CAAA,EAZKd,EAAE,MAAA,CAeV,CAAC,CAAA,CACF,EAGCD,GACAY,EAAAA,IAACqB,EAAAA,SAAA,CACA,YAAW,GAAG5C,CAAc,YAC5B,KAAK,QACL,MAAM,OACN,aAAY,GACZ,YAAa,UAAUW,EAAY,KAAK,SACxC,QAASA,EAAY,QACrB,SAAWkC,GAAQ,CAElB,MAAM5B,GADS,MAAM,QAAQ4B,CAAG,EAAIA,EAAI,CAAC,EAAIA,IACT,MACpCpC,EAAgB,IAAI,EACpBH,EAAU,EAAK,EACXW,GACHnB,EAAMmB,CAAC,CAET,CAAA,CAAA,CACD,CAAA,CAEF,EAEAG,EAAAA,KAAAmB,EAAAA,SAAA,CACE,SAAA,CAAAlC,GAAU2B,EAAgB,OAAS,GACnCT,EAAAA,IAACqB,EAAAA,SAAA,CACA,YAAW,GAAG5C,CAAc,YAC5B,KAAK,QACL,MAAM,OACN,aAAY,GACZ,YAAa,UAAUN,EAAM,YAAA,CAAa,GAC1C,QAASsC,EACT,SAAWa,GAAQ,CAElB,MAAM5B,GADS,MAAM,QAAQ4B,CAAG,EAAIA,EAAI,CAAC,EAAIA,IACT,MACpCvC,EAAU,EAAK,EACVW,IAGDA,IAAMzB,EACTU,GAAc,SAAA,EAEdJ,EAAMmB,CAAC,EAET,CAAA,CAAA,EAIDrB,EAAM,SAAW,GAAK,CAACS,EACvBe,OAAAmB,EAAAA,SAAA,CACC,SAAA,CAAAhB,MAACe,EAAAA,YAAA,CAAY,MAAOZ,EAAAA,OAAO,QAAQ,YACjC,SAAAzB,EACF,EACCa,GAAmBZ,GACnBqB,EAAAA,IAACuB,EAAAA,OAAA,CACA,YAAW,GAAG9C,CAAc,UAC5B,WAAW,YACX,KAAK,QACL,iBAAgB,GAChB,YAAaqC,EAAAA,QACb,WAAYnC,EAAa,MACzB,QAASA,EAAa,QAAA,CAAA,CACvB,CAAA,CAEF,EAEAgB,EAAA,CAAe,CAAA,CAEjB,CAAA,EAEF,CAEF"}
@@ -0,0 +1,2 @@
1
+ "use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const t=require("react/jsx-runtime"),a=require("../../TypographyStyle.js"),y=require("../../../constants/Theme.js"),i=require("../AgentBuilder.styled.js"),g=require("../constants/steps.js"),x=require("../context/AgentBuilderContext.js"),m=()=>{const{activeStep:c,activeIndex:l,validation:s,goToStep:d,disableStepNavigation:n}=x.useAgentBuilderContext();return t.jsx(i.RailList,{children:g.STEP_DEFINITIONS.map(e=>{const o=e.key===c,r=e.index-1<l&&s[e.key],u=o?"active":r?"complete":"inactive",S=o?a.TitleSmall:a.BodySecondary;return t.jsxs(i.RailItem,{"data-test":`agent-step-${e.key}`,disabled:n,onClick:n?void 0:()=>d(e.key),children:[t.jsx(i.StepBadge,{state:u,children:r?"✓":e.index}),t.jsx(S,{color:y.COLORS.content.primary,children:e.title})]},e.key)})})};exports.StepRail=m;
2
+ //# sourceMappingURL=StepRail.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"StepRail.js","sources":["../../../../../src/components/agent-builder/components/StepRail.tsx"],"sourcesContent":["import React from 'react';\nimport { BodySecondary, TitleSmall } from '@src/components/TypographyStyle';\nimport { COLORS } from '@src/constants/Theme';\nimport { RailItem, RailList, StepBadge } from '../AgentBuilder.styled';\nimport { STEP_DEFINITIONS } from '../constants/steps';\nimport { useAgentBuilderContext } from '../context/AgentBuilderContext';\n\nexport const StepRail: React.FC = () => {\n\tconst {\n\t\tactiveStep,\n\t\tactiveIndex,\n\t\tvalidation,\n\t\tgoToStep,\n\t\tdisableStepNavigation,\n\t} = useAgentBuilderContext();\n\n\treturn (\n\t\t<RailList>\n\t\t\t{STEP_DEFINITIONS.map((step) => {\n\t\t\t\tconst isActive = step.key === activeStep;\n\t\t\t\tconst isComplete = step.index - 1 < activeIndex && validation[step.key];\n\t\t\t\tconst badgeState = isActive\n\t\t\t\t\t? 'active'\n\t\t\t\t\t: isComplete\n\t\t\t\t\t? 'complete'\n\t\t\t\t\t: 'inactive';\n\n\t\t\t\tconst Label = isActive ? TitleSmall : BodySecondary;\n\n\t\t\t\treturn (\n\t\t\t\t\t<RailItem\n\t\t\t\t\t\tkey={step.key}\n\t\t\t\t\t\tdata-test={`agent-step-${step.key}`}\n\t\t\t\t\t\tdisabled={disableStepNavigation}\n\t\t\t\t\t\tonClick={\n\t\t\t\t\t\t\tdisableStepNavigation ? undefined : () => goToStep(step.key)\n\t\t\t\t\t\t}\n\t\t\t\t\t>\n\t\t\t\t\t\t<StepBadge state={badgeState}>\n\t\t\t\t\t\t\t{isComplete ? '✓' : step.index}\n\t\t\t\t\t\t</StepBadge>\n\t\t\t\t\t\t<Label color={COLORS.content.primary}>{step.title}</Label>\n\t\t\t\t\t</RailItem>\n\t\t\t\t);\n\t\t\t})}\n\t\t</RailList>\n\t);\n};\n"],"names":["StepRail","activeStep","activeIndex","validation","goToStep","disableStepNavigation","useAgentBuilderContext","jsx","RailList","STEP_DEFINITIONS","step","isActive","isComplete","badgeState","Label","TitleSmall","BodySecondary","jsxs","RailItem","StepBadge","COLORS"],"mappings":"6TAOaA,EAAqB,IAAM,CACvC,KAAM,CACL,WAAAC,EACA,YAAAC,EACA,WAAAC,EACA,SAAAC,EACA,sBAAAC,CAAA,EACGC,yBAAA,EAEJ,OACCC,EAAAA,IAACC,EAAAA,SAAA,CACC,SAAAC,EAAAA,iBAAiB,IAAKC,GAAS,CAC/B,MAAMC,EAAWD,EAAK,MAAQT,EACxBW,EAAaF,EAAK,MAAQ,EAAIR,GAAeC,EAAWO,EAAK,GAAG,EAChEG,EAAaF,EAChB,SACAC,EACA,WACA,WAEGE,EAAQH,EAAWI,EAAAA,WAAaC,EAAAA,cAEtC,OACCC,EAAAA,KAACC,EAAAA,SAAA,CAEA,YAAW,cAAcR,EAAK,GAAG,GACjC,SAAUL,EACV,QACCA,EAAwB,OAAY,IAAMD,EAASM,EAAK,GAAG,EAG5D,SAAA,CAAAH,MAACY,EAAAA,WAAU,MAAON,EAChB,SAAAD,EAAa,IAAMF,EAAK,MAC1B,QACCI,EAAA,CAAM,MAAOM,EAAAA,OAAO,QAAQ,QAAU,WAAK,KAAA,CAAM,CAAA,CAAA,EAV7CV,EAAK,GAAA,CAab,CAAC,CAAA,CACF,CAEF"}
@@ -0,0 +1,2 @@
1
+ "use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const e=require("react/jsx-runtime"),t=require("../../TypographyStyle.js"),o=require("../../../constants/Theme.js"),c=require("../AgentBuilder.styled.js"),i=({title:n,helper:r})=>e.jsxs(c.SectionHeaderWrap,{children:[e.jsx(t.TitleRegular,{color:o.COLORS.content.primary,children:n}),r&&e.jsx(t.BodySecondary,{color:o.COLORS.content.secondary,children:r})]});exports.StepSectionHeader=i;
2
+ //# sourceMappingURL=StepSectionHeader.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"StepSectionHeader.js","sources":["../../../../../src/components/agent-builder/components/StepSectionHeader.tsx"],"sourcesContent":["import React from 'react';\nimport { BodySecondary, TitleRegular } from '@src/components/TypographyStyle';\nimport { COLORS } from '@src/constants/Theme';\nimport { SectionHeaderWrap } from '../AgentBuilder.styled';\n\ninterface StepSectionHeaderProps {\n\ttitle: string;\n\thelper?: string;\n}\n\nexport const StepSectionHeader: React.FC<StepSectionHeaderProps> = ({\n\ttitle,\n\thelper,\n}) => (\n\t<SectionHeaderWrap>\n\t\t<TitleRegular color={COLORS.content.primary}>{title}</TitleRegular>\n\t\t{helper && (\n\t\t\t<BodySecondary color={COLORS.content.secondary}>{helper}</BodySecondary>\n\t\t)}\n\t</SectionHeaderWrap>\n);\n"],"names":["StepSectionHeader","title","helper","SectionHeaderWrap","jsx","TitleRegular","COLORS","BodySecondary"],"mappings":"2OAUaA,EAAsD,CAAC,CACnE,MAAAC,EACA,OAAAC,CACD,WACEC,oBAAA,CACA,SAAA,CAAAC,MAACC,EAAAA,aAAA,CAAa,MAAOC,EAAAA,OAAO,QAAQ,QAAU,SAAAL,EAAM,EACnDC,GACAE,EAAAA,IAACG,EAAAA,cAAA,CAAc,MAAOD,EAAAA,OAAO,QAAQ,UAAY,SAAAJ,CAAA,CAAO,CAAA,CAAA,CAE1D"}
@@ -0,0 +1,2 @@
1
+ "use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const n=require("react/jsx-runtime"),s=require("../context/AgentBuilderContext.js"),r=require("../../toaster/Toaster.js"),u=()=>{const{undoToast:t,undoRemoval:o,dismissUndo:e}=s.useAgentBuilderContext();return t?n.jsx(r.Toaster,{text:t.message,type:"info",position:"top-right",autoClose:5e3,hideCloseButton:!0,buttonProps:{buttonText:"Undo",showButton:!0,onButtonClick:()=>(o(),{})},onCloseToast:()=>e()},t.id):null};exports.UndoToast=u;
2
+ //# sourceMappingURL=UndoToast.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"UndoToast.js","sources":["../../../../../src/components/agent-builder/components/UndoToast.tsx"],"sourcesContent":["import React from 'react';\nimport { Toaster } from '@src/components/toaster';\nimport { useAgentBuilderContext } from '../context/AgentBuilderContext';\n\n/**\n * Top-right toast shown after a tool / sub-agent is removed, offering an Undo.\n * Re-keyed per removal so each one restarts the auto-close timer. Uses the\n * shared `Toaster` (which mounts its own ToastContainer).\n */\nexport const UndoToast: React.FC = () => {\n\tconst { undoToast, undoRemoval, dismissUndo } = useAgentBuilderContext();\n\n\tif (!undoToast) {\n\t\treturn null;\n\t}\n\n\treturn (\n\t\t<Toaster\n\t\t\tkey={undoToast.id}\n\t\t\ttext={undoToast.message}\n\t\t\ttype=\"info\"\n\t\t\tposition=\"top-right\"\n\t\t\tautoClose={5000}\n\t\t\thideCloseButton\n\t\t\tbuttonProps={{\n\t\t\t\tbuttonText: 'Undo',\n\t\t\t\tshowButton: true,\n\t\t\t\tonButtonClick: () => {\n\t\t\t\t\tundoRemoval();\n\t\t\t\t\treturn {} as Record<string, never>;\n\t\t\t\t},\n\t\t\t}}\n\t\t\tonCloseToast={() => dismissUndo()}\n\t\t/>\n\t);\n};\n"],"names":["UndoToast","undoToast","undoRemoval","dismissUndo","useAgentBuilderContext","jsx","Toaster"],"mappings":"0MASaA,EAAsB,IAAM,CACxC,KAAM,CAAE,UAAAC,EAAW,YAAAC,EAAa,YAAAC,CAAA,EAAgBC,EAAAA,uBAAA,EAEhD,OAAKH,EAKJI,EAAAA,IAACC,EAAAA,QAAA,CAEA,KAAML,EAAU,QAChB,KAAK,OACL,SAAS,YACT,UAAW,IACX,gBAAe,GACf,YAAa,CACZ,WAAY,OACZ,WAAY,GACZ,cAAe,KACdC,EAAA,EACO,CAAA,EACR,EAED,aAAc,IAAMC,EAAA,CAAY,EAd3BF,EAAU,EAAA,EALT,IAsBT"}
@@ -0,0 +1,2 @@
1
+ "use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const e={name:60,description:1e3,custom_intent:1e3,instructions:1e3,guardrail:1e3,handoverWhen:1e3};exports.AGENT_CHAR_LIMITS=e;
2
+ //# sourceMappingURL=charLimits.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"charLimits.js","sources":["../../../../../src/components/agent-builder/constants/charLimits.ts"],"sourcesContent":["/**\n * Character limits for AgentBuilder fields.\n *\n * `name` and `description` are taken directly from the Figma spec. The rest are\n * sized to match the 0/1000 counters shown on the response/handover steps; adjust\n * here if product changes them.\n */\nexport const AGENT_CHAR_LIMITS = {\n\t/** Step 1 — Agent name. */\n\tname: 60,\n\t/** Step 1 — \"What it does\". */\n\tdescription: 1000,\n\t/** Step 2 — custom intent free text. */\n\tcustom_intent: 1000,\n\t/** Step 3 — Instructions (BikEditor `maxCharacters`). */\n\tinstructions: 1000,\n\t/** Step 3 — Guardrails. */\n\tguardrail: 1000,\n\t/** Step 4 — \"Handover when\". */\n\thandoverWhen: 1000,\n} as const;\n"],"names":["AGENT_CHAR_LIMITS"],"mappings":"gFAOO,MAAMA,EAAoB,CAEhC,KAAM,GAEN,YAAa,IAEb,cAAe,IAEf,aAAc,IAEd,UAAW,IAEX,aAAc,GACf"}
@@ -0,0 +1,2 @@
1
+ "use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const e={padding:0,fontFamily:"Inter",fontSize:"14px",lineHeight:"20px"};exports.AGENT_EDITOR_STYLE=e;
2
+ //# sourceMappingURL=editorStyle.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"editorStyle.js","sources":["../../../../../src/components/agent-builder/constants/editorStyle.ts"],"sourcesContent":["import type React from 'react';\n\n/**\n * Inline ProseMirror style applied to the agent-builder BikEditors so the rich\n * inputs (Instructions, Guardrails) render in the SAME font/metrics as the plain\n * `AiTextAreaInput` textarea (Inter 14/20). `.ProseMirror` itself sets no\n * font-family, so without this it inherits the host default and looks different.\n */\nexport const AGENT_EDITOR_STYLE: React.CSSProperties = {\n\tpadding: 0,\n\tfontFamily: 'Inter',\n\tfontSize: '14px',\n\tlineHeight: '20px',\n};\n"],"names":["AGENT_EDITOR_STYLE"],"mappings":"gFAQO,MAAMA,EAA0C,CACtD,QAAS,EACT,WAAY,QACZ,SAAU,OACV,WAAY,MACb"}
@@ -0,0 +1,2 @@
1
+ "use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const t=[{key:"about",index:1,title:"About this agent",helper:"Give it a name and one clear job. One agent → one job, that’s what keeps answers sharp."},{key:"trigger",index:2,title:"When it steps in",helper:"Choose how Manifest knows when to route a conversation to this agent."},{key:"response",index:3,title:"How it responds",helper:"Write what this agent should do. Type @ to reference a tool, add a condition, or hand off to a sub-agent."},{key:"handover",index:4,title:"Handover rules",helper:"Define when this agent passes the conversation to a human, and how."}],n=t.map(e=>e.key),o=e=>n.indexOf(e);exports.STEP_DEFINITIONS=t;exports.STEP_KEYS=n;exports.getStepIndex=o;
2
+ //# sourceMappingURL=steps.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"steps.js","sources":["../../../../../src/components/agent-builder/constants/steps.ts"],"sourcesContent":["import { StepKey } from '../AgentBuilder.model';\n\nexport interface StepDefinition {\n\tkey: StepKey;\n\t/** 1-based number shown in the rail. */\n\tindex: number;\n\t/** Rail label + content section title. */\n\ttitle: string;\n\t/** Helper text under the section title. */\n\thelper: string;\n}\n\nexport const STEP_DEFINITIONS: StepDefinition[] = [\n\t{\n\t\tkey: 'about',\n\t\tindex: 1,\n\t\ttitle: 'About this agent',\n\t\thelper:\n\t\t\t'Give it a name and one clear job. One agent → one job, that’s what keeps answers sharp.',\n\t},\n\t{\n\t\tkey: 'trigger',\n\t\tindex: 2,\n\t\ttitle: 'When it steps in',\n\t\thelper:\n\t\t\t'Choose how Manifest knows when to route a conversation to this agent.',\n\t},\n\t{\n\t\tkey: 'response',\n\t\tindex: 3,\n\t\ttitle: 'How it responds',\n\t\thelper:\n\t\t\t'Write what this agent should do. Type @ to reference a tool, add a condition, or hand off to a sub-agent.',\n\t},\n\t{\n\t\tkey: 'handover',\n\t\tindex: 4,\n\t\ttitle: 'Handover rules',\n\t\thelper:\n\t\t\t'Define when this agent passes the conversation to a human, and how.',\n\t},\n];\n\nexport const STEP_KEYS: StepKey[] = STEP_DEFINITIONS.map((s) => s.key);\n\nexport const getStepIndex = (key: StepKey): number => STEP_KEYS.indexOf(key);\n"],"names":["STEP_DEFINITIONS","STEP_KEYS","s","getStepIndex","key"],"mappings":"gFAYO,MAAMA,EAAqC,CACjD,CACC,IAAK,QACL,MAAO,EACP,MAAO,mBACP,OACC,yFAAA,EAEF,CACC,IAAK,UACL,MAAO,EACP,MAAO,mBACP,OACC,uEAAA,EAEF,CACC,IAAK,WACL,MAAO,EACP,MAAO,kBACP,OACC,2GAAA,EAEF,CACC,IAAK,WACL,MAAO,EACP,MAAO,iBACP,OACC,qEAAA,CAEH,EAEaC,EAAuBD,EAAiB,IAAKE,GAAMA,EAAE,GAAG,EAExDC,EAAgBC,GAAyBH,EAAU,QAAQG,CAAG"}
@@ -0,0 +1,2 @@
1
+ "use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const nt=require("react/jsx-runtime"),n=require("react"),O=require("../constants/charLimits.js"),d=require("../constants/steps.js"),st=t=>t&&typeof t=="object"&&"default"in t?t:{default:t},rt=st(n),Q=rt.default.createContext(null),ot=()=>{const t=n.useContext(Q);if(!t)throw new Error("useAgentBuilderContext must be used within an AgentBuilderProvider");return t},ct=t=>{const o=t.trigger.mode==="custom_intent"?(t.trigger.custom_intent??"").trim().length>0:t.trigger.intents.length>0;return{about:t.name.trim().length>0&&t.name.length<=O.AGENT_CHAR_LIMITS.name&&t.description.length<=O.AGENT_CHAR_LIMITS.description,trigger:o,response:t.instructions.trim().length>0||(t.guardrail??"").trim().length>0,handover:!0}},it=({value:t,onChange:o,activeStep:R,onStepChange:x,availableTools:u,availableSubAgents:a,availableIntents:p,availableModels:b,validation:k,applicationType:E,disableStepNavigation:M=!0,onCreateSubAgent:P,onFetchSubAgent:T,onUpdateSubAgent:h,onImproveSubAgent:A,children:W})=>{const[X,Z]=n.useState("about"),g=R??X,c=d.getStepIndex(g),[B,I]=n.useState(0),S=n.useRef({}),y=n.useRef("instructions"),j=n.useCallback((e,r)=>{r?S.current[e]=r:delete S.current[e]},[]),q=n.useCallback(e=>{y.current=e},[]),F=n.useRef(null),K=n.useCallback(e=>{F.current=e},[]),L=n.useCallback(()=>{F.current?.()},[]),Y=n.useCallback((e,r,m)=>{const l=S.current;(l[y.current]??l.instructions)?.(e,r,m)},[]),[$,_]=n.useState(null),f=n.useRef(null),w=n.useRef(0),i=n.useCallback(e=>{R===void 0&&Z(e),x?.(e)},[R,x]),V=n.useCallback(()=>{const e=d.STEP_KEYS[Math.min(c+1,d.STEP_KEYS.length-1)];i(e)},[c,i]),G=n.useCallback(()=>{const e=d.STEP_KEYS[Math.max(c-1,0)];i(e)},[c,i]),H=n.useCallback(e=>o(e),[o]),N=n.useCallback((e,r)=>o({[e]:r}),[o]),D=n.useCallback((e,r)=>{const m=e==="tool"?(()=>{const s=u.find(et=>et.tool_id===r);return s?`{{tool:${s.function_key}}}`:null})():`{{subagent:${r}}}`,l=s=>m?s.split(m).join(""):s;f.current={tools:t.tools,subagents:t.subagents,instructions:t.instructions,guardrail:t.guardrail};const J={instructions:l(t.instructions),guardrail:l(t.guardrail??""),...e==="tool"?{tools:t.tools.filter(s=>s!==r)}:{subagents:t.subagents.filter(s=>s!==r)}};o(J),I(s=>s+1);const tt=e==="tool"?u.find(s=>s.tool_id===r)?.display_name??"Tool":a.find(s=>s.id===r)?.name??"Sub-agent";w.current+=1,_({id:w.current,message:`${e==="tool"?"Tool":"Sub-agent"} "${tt}" removed`})},[u,a,t,o]),U=n.useCallback(()=>{f.current&&(o(f.current),f.current=null,I(e=>e+1)),_(null)},[o]),z=n.useCallback(()=>_(null),[]),C=n.useMemo(()=>({...ct(t),...k}),[t,k]),v=n.useMemo(()=>({value:t,patch:H,updateField:N,removeReference:D,mentionResetKey:B,insertMention:Y,registerMentionField:j,notifyMentionFocus:q,undoToast:$,undoRemoval:U,dismissUndo:z,activeStep:g,activeIndex:c,goToStep:i,goNext:V,goPrev:G,isFirstStep:c===0,isLastStep:c===d.STEP_KEYS.length-1,validation:C,isActiveStepValid:C[g],availableTools:u,availableSubAgents:a,availableIntents:p,availableModels:b,applicationType:E,disableStepNavigation:M,onCreateSubAgent:P,registerSubAgentCreator:K,requestCreateSubAgent:L,onFetchSubAgent:T,onUpdateSubAgent:h,onImproveSubAgent:A}),[t,H,N,D,B,Y,j,q,$,U,z,g,c,i,V,G,C,u,a,p,b,E,M,P,K,L,T,h,A]);return nt.jsx(Q.Provider,{value:v,children:W})};exports.AgentBuilderProvider=it;exports.useAgentBuilderContext=ot;
2
+ //# sourceMappingURL=AgentBuilderContext.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"AgentBuilderContext.js","sources":["../../../../../src/components/agent-builder/context/AgentBuilderContext.tsx"],"sourcesContent":["import type { ApplicationType } from '@bikdotai/bik-models/growth';\nimport React, {\n\tuseCallback,\n\tuseContext,\n\tuseMemo,\n\tuseRef,\n\tuseState,\n} from 'react';\nimport {\n\tAgentTool,\n\tAgentValue,\n\tIntentOption,\n\tModelOption,\n\tStepKey,\n\tStepValidation,\n\tSubAgentDraft,\n\tSubAgentRef,\n} from '../AgentBuilder.model';\nimport { AGENT_CHAR_LIMITS } from '../constants/charLimits';\nimport { getStepIndex, STEP_KEYS } from '../constants/steps';\n\n/** Mention-capable text fields in Step 3 (both store firebase token text). */\nexport type MentionFieldKey = 'instructions' | 'guardrail';\ntype MentionInsertFn = (\n\tkind: 'tool' | 'subagent',\n\tid: string,\n\tlabel?: string,\n) => void;\n\n/** Toast shown after a tool / sub-agent is removed, offering an undo. */\nexport interface UndoToastState {\n\t/** Bumped per removal so the toast timer restarts. */\n\tid: number;\n\tmessage: string;\n}\n\nexport interface AgentBuilderContextShape {\n\t/** Controlled value relayed from props. */\n\tvalue: AgentValue;\n\t/** Patch one or more fields. */\n\tpatch: (partial: Partial<AgentValue>) => void;\n\t/** Patch a single field. */\n\tupdateField: <K extends keyof AgentValue>(key: K, val: AgentValue[K]) => void;\n\t/**\n\t * Remove a tool / sub-agent everywhere: drops it from the list AND strips ALL\n\t * its `{{tool:KEY}}` / `{{subagent:ID}}` tokens from BOTH the instructions and\n\t * the guardrails, remounts the editors, and raises an undo toast.\n\t */\n\tremoveReference: (kind: 'tool' | 'subagent', id: string) => void;\n\t/** Remount signal for the mention editors after an external edit. */\n\tmentionResetKey: number;\n\t/**\n\t * Insert a tool / sub-agent mention chip at the last cursor position of\n\t * whichever mention field was focused most recently (Instructions or\n\t * Guardrails). `label` overrides the chip text (e.g. a just-created sub-agent\n\t * not yet in the available list).\n\t */\n\tinsertMention: (\n\t\tkind: 'tool' | 'subagent',\n\t\tid: string,\n\t\tlabel?: string,\n\t) => void;\n\t/** A mention field registers its editor-backed insert here (internal). */\n\tregisterMentionField: (\n\t\tfieldKey: MentionFieldKey,\n\t\tfn: MentionInsertFn | null,\n\t) => void;\n\t/** A mention field reports focus so inserts target it (internal). */\n\tnotifyMentionFocus: (fieldKey: MentionFieldKey) => void;\n\n\t// Undo (post-removal)\n\t/** Non-null while the undo toast should be visible. */\n\tundoToast: UndoToastState | null;\n\t/** Restore the last removed tool / sub-agent (list + stripped tokens). */\n\tundoRemoval: () => void;\n\t/** Dismiss the undo toast without restoring. */\n\tdismissUndo: () => void;\n\n\t// Navigation\n\tactiveStep: StepKey;\n\tactiveIndex: number;\n\tgoToStep: (step: StepKey) => void;\n\tgoNext: () => void;\n\tgoPrev: () => void;\n\tisFirstStep: boolean;\n\tisLastStep: boolean;\n\n\t// Validation\n\tvalidation: StepValidation;\n\tisActiveStepValid: boolean;\n\n\t// Reference data\n\tavailableTools: AgentTool[];\n\tavailableSubAgents: SubAgentRef[];\n\tavailableIntents: IntentOption[];\n\tavailableModels: ModelOption[];\n\t/** Host application context (e.g. MANIFEST) — drives tool-chip labelling. */\n\tapplicationType?: ApplicationType;\n\t/** When true, step-rail items are not clickable (Back / Next only). */\n\tdisableStepNavigation: boolean;\n\n\t// Sub-agent creation (Step 3 drawer)\n\t/** Persist a new sub-agent and resolve with its ref. Omit to hide the create flow. */\n\tonCreateSubAgent?: (draft: SubAgentDraft) => Promise<SubAgentRef>;\n\t/**\n\t * Step 3 registers its \"open create-sub-agent drawer\" action here so the `@`\n\t * picker's \"Create new\" row can trigger it. Pass `null` to unregister.\n\t */\n\tregisterSubAgentCreator: (fn: (() => void) | null) => void;\n\t/** Open the create-sub-agent drawer (no-op until Step 3 registers it). */\n\trequestCreateSubAgent: () => void;\n\t/** Fetch a sub-agent's editable data (Configure). Omit to hide Configure. */\n\tonFetchSubAgent?: (id: string) => Promise<SubAgentDraft>;\n\t/** Persist edits to an existing sub-agent. */\n\tonUpdateSubAgent?: (id: string, draft: SubAgentDraft) => Promise<SubAgentRef>;\n\t/** Optional \"Improve with AI\" for the drawer's instructions / guardrails. */\n\tonImproveSubAgent?: (\n\t\tkind: 'instructions' | 'guardrail',\n\t\ttext: string,\n\t) => Promise<string>;\n}\n\nconst AgentBuilderContext =\n\tReact.createContext<AgentBuilderContextShape | null>(null);\n\nexport const useAgentBuilderContext = (): AgentBuilderContextShape => {\n\tconst ctx = useContext(AgentBuilderContext);\n\tif (!ctx) {\n\t\tthrow new Error(\n\t\t\t'useAgentBuilderContext must be used within an AgentBuilderProvider',\n\t\t);\n\t}\n\treturn ctx;\n};\n\n/** Validity derived purely from the current value (no effects). */\nconst deriveValidation = (value: AgentValue): StepValidation => {\n\tconst triggerValid =\n\t\tvalue.trigger.mode === 'custom_intent'\n\t\t\t? (value.trigger.custom_intent ?? '').trim().length > 0\n\t\t\t: value.trigger.intents.length > 0;\n\n\treturn {\n\t\tabout:\n\t\t\tvalue.name.trim().length > 0 &&\n\t\t\tvalue.name.length <= AGENT_CHAR_LIMITS.name &&\n\t\t\tvalue.description.length <= AGENT_CHAR_LIMITS.description,\n\t\ttrigger: triggerValid,\n\t\t// At least one of Instructions / Guardrails must be filled.\n\t\tresponse:\n\t\t\tvalue.instructions.trim().length > 0 ||\n\t\t\t(value.guardrail ?? '').trim().length > 0,\n\t\t// Optional until specced further — never blocks go-live.\n\t\thandover: true,\n\t};\n};\n\ninterface ProviderProps {\n\tvalue: AgentValue;\n\tonChange: (patch: Partial<AgentValue>) => void;\n\tactiveStep?: StepKey;\n\tonStepChange?: (step: StepKey) => void;\n\tavailableTools: AgentTool[];\n\tavailableSubAgents: SubAgentRef[];\n\tavailableIntents: IntentOption[];\n\tavailableModels: ModelOption[];\n\tvalidation?: Partial<StepValidation>;\n\tapplicationType?: ApplicationType;\n\tdisableStepNavigation?: boolean;\n\tonCreateSubAgent?: (draft: SubAgentDraft) => Promise<SubAgentRef>;\n\tonFetchSubAgent?: (id: string) => Promise<SubAgentDraft>;\n\tonUpdateSubAgent?: (id: string, draft: SubAgentDraft) => Promise<SubAgentRef>;\n\tonImproveSubAgent?: (\n\t\tkind: 'instructions' | 'guardrail',\n\t\ttext: string,\n\t) => Promise<string>;\n\tchildren: React.ReactNode;\n}\n\nexport const AgentBuilderProvider: React.FC<ProviderProps> = ({\n\tvalue,\n\tonChange,\n\tactiveStep: controlledStep,\n\tonStepChange,\n\tavailableTools,\n\tavailableSubAgents,\n\tavailableIntents,\n\tavailableModels,\n\tvalidation: validationOverride,\n\tapplicationType,\n\tdisableStepNavigation = true,\n\tonCreateSubAgent,\n\tonFetchSubAgent,\n\tonUpdateSubAgent,\n\tonImproveSubAgent,\n\tchildren,\n}) => {\n\tconst [internalStep, setInternalStep] = useState<StepKey>('about');\n\tconst activeStep = controlledStep ?? internalStep;\n\tconst activeIndex = getStepIndex(activeStep);\n\n\t// Bumped when a mention field is edited from OUTSIDE its editor (removing a\n\t// tool from the side list, undo), forcing the mention editors to remount.\n\tconst [mentionResetKey, setMentionResetKey] = useState(0);\n\n\t// Each mention field registers an editor-backed insert fn + reports focus, so\n\t// side-panel adds drop a chip into the last-focused field at its cursor.\n\tconst mentionInsertersRef = useRef<\n\t\tPartial<Record<MentionFieldKey, MentionInsertFn>>\n\t>({});\n\tconst lastFocusedFieldRef = useRef<MentionFieldKey>('instructions');\n\tconst registerMentionField = useCallback(\n\t\t(fieldKey: MentionFieldKey, fn: MentionInsertFn | null) => {\n\t\t\tif (fn) {\n\t\t\t\tmentionInsertersRef.current[fieldKey] = fn;\n\t\t\t} else {\n\t\t\t\tdelete mentionInsertersRef.current[fieldKey];\n\t\t\t}\n\t\t},\n\t\t[],\n\t);\n\tconst notifyMentionFocus = useCallback((fieldKey: MentionFieldKey) => {\n\t\tlastFocusedFieldRef.current = fieldKey;\n\t}, []);\n\n\t// Step 3 registers its drawer opener here; the `@` picker's \"Create new\" calls it.\n\tconst subAgentCreatorRef = useRef<(() => void) | null>(null);\n\tconst registerSubAgentCreator = useCallback((fn: (() => void) | null) => {\n\t\tsubAgentCreatorRef.current = fn;\n\t}, []);\n\tconst requestCreateSubAgent = useCallback(() => {\n\t\tsubAgentCreatorRef.current?.();\n\t}, []);\n\tconst insertMention = useCallback<MentionInsertFn>((kind, id, label) => {\n\t\tconst inserters = mentionInsertersRef.current;\n\t\tconst target =\n\t\t\tinserters[lastFocusedFieldRef.current] ?? inserters.instructions;\n\t\ttarget?.(kind, id, label);\n\t}, []);\n\n\t// Undo state for the most recent removal.\n\tconst [undoToast, setUndoToast] = useState<UndoToastState | null>(null);\n\tconst undoSnapshotRef = useRef<Partial<AgentValue> | null>(null);\n\tconst undoIdRef = useRef(0);\n\n\tconst goToStep = useCallback(\n\t\t(step: StepKey) => {\n\t\t\tif (controlledStep === undefined) {\n\t\t\t\tsetInternalStep(step);\n\t\t\t}\n\t\t\tonStepChange?.(step);\n\t\t},\n\t\t[controlledStep, onStepChange],\n\t);\n\n\tconst goNext = useCallback(() => {\n\t\tconst next = STEP_KEYS[Math.min(activeIndex + 1, STEP_KEYS.length - 1)];\n\t\tgoToStep(next);\n\t}, [activeIndex, goToStep]);\n\n\tconst goPrev = useCallback(() => {\n\t\tconst prev = STEP_KEYS[Math.max(activeIndex - 1, 0)];\n\t\tgoToStep(prev);\n\t}, [activeIndex, goToStep]);\n\n\tconst patch = useCallback(\n\t\t(partial: Partial<AgentValue>) => onChange(partial),\n\t\t[onChange],\n\t);\n\n\tconst updateField = useCallback(\n\t\t<K extends keyof AgentValue>(key: K, val: AgentValue[K]) =>\n\t\t\tonChange({ [key]: val } as Partial<AgentValue>),\n\t\t[onChange],\n\t);\n\n\tconst removeReference = useCallback(\n\t\t(kind: 'tool' | 'subagent', id: string) => {\n\t\t\tconst token =\n\t\t\t\tkind === 'tool'\n\t\t\t\t\t? (() => {\n\t\t\t\t\t\t\tconst tool = availableTools.find((t) => t.tool_id === id);\n\t\t\t\t\t\t\treturn tool ? `{{tool:${tool.function_key}}}` : null;\n\t\t\t\t\t })()\n\t\t\t\t\t: `{{subagent:${id}}}`;\n\t\t\tconst strip = (text: string) =>\n\t\t\t\ttoken ? text.split(token).join('') : text;\n\n\t\t\t// Snapshot the four fields a removal touches, for undo.\n\t\t\tundoSnapshotRef.current = {\n\t\t\t\ttools: value.tools,\n\t\t\t\tsubagents: value.subagents,\n\t\t\t\tinstructions: value.instructions,\n\t\t\t\tguardrail: value.guardrail,\n\t\t\t};\n\n\t\t\tconst next: Partial<AgentValue> = {\n\t\t\t\tinstructions: strip(value.instructions),\n\t\t\t\tguardrail: strip(value.guardrail ?? ''),\n\t\t\t\t...(kind === 'tool'\n\t\t\t\t\t? { tools: value.tools.filter((t) => t !== id) }\n\t\t\t\t\t: { subagents: value.subagents.filter((s) => s !== id) }),\n\t\t\t};\n\t\t\tonChange(next);\n\t\t\tsetMentionResetKey((k) => k + 1);\n\n\t\t\tconst label =\n\t\t\t\tkind === 'tool'\n\t\t\t\t\t? availableTools.find((t) => t.tool_id === id)?.display_name ?? 'Tool'\n\t\t\t\t\t: availableSubAgents.find((s) => s.id === id)?.name ?? 'Sub-agent';\n\t\t\tundoIdRef.current += 1;\n\t\t\tsetUndoToast({\n\t\t\t\tid: undoIdRef.current,\n\t\t\t\tmessage: `${kind === 'tool' ? 'Tool' : 'Sub-agent'} \"${label}\" removed`,\n\t\t\t});\n\t\t},\n\t\t[availableTools, availableSubAgents, value, onChange],\n\t);\n\n\tconst undoRemoval = useCallback(() => {\n\t\tif (undoSnapshotRef.current) {\n\t\t\tonChange(undoSnapshotRef.current);\n\t\t\tundoSnapshotRef.current = null;\n\t\t\tsetMentionResetKey((k) => k + 1);\n\t\t}\n\t\tsetUndoToast(null);\n\t}, [onChange]);\n\n\tconst dismissUndo = useCallback(() => setUndoToast(null), []);\n\n\tconst validation: StepValidation = useMemo(\n\t\t() => ({ ...deriveValidation(value), ...validationOverride }),\n\t\t[value, validationOverride],\n\t);\n\n\tconst ctx = useMemo<AgentBuilderContextShape>(\n\t\t() => ({\n\t\t\tvalue,\n\t\t\tpatch,\n\t\t\tupdateField,\n\t\t\tremoveReference,\n\t\t\tmentionResetKey,\n\t\t\tinsertMention,\n\t\t\tregisterMentionField,\n\t\t\tnotifyMentionFocus,\n\t\t\tundoToast,\n\t\t\tundoRemoval,\n\t\t\tdismissUndo,\n\t\t\tactiveStep,\n\t\t\tactiveIndex,\n\t\t\tgoToStep,\n\t\t\tgoNext,\n\t\t\tgoPrev,\n\t\t\tisFirstStep: activeIndex === 0,\n\t\t\tisLastStep: activeIndex === STEP_KEYS.length - 1,\n\t\t\tvalidation,\n\t\t\tisActiveStepValid: validation[activeStep],\n\t\t\tavailableTools,\n\t\t\tavailableSubAgents,\n\t\t\tavailableIntents,\n\t\t\tavailableModels,\n\t\t\tapplicationType,\n\t\t\tdisableStepNavigation,\n\t\t\tonCreateSubAgent,\n\t\t\tregisterSubAgentCreator,\n\t\t\trequestCreateSubAgent,\n\t\t\tonFetchSubAgent,\n\t\t\tonUpdateSubAgent,\n\t\t\tonImproveSubAgent,\n\t\t}),\n\t\t[\n\t\t\tvalue,\n\t\t\tpatch,\n\t\t\tupdateField,\n\t\t\tremoveReference,\n\t\t\tmentionResetKey,\n\t\t\tinsertMention,\n\t\t\tregisterMentionField,\n\t\t\tnotifyMentionFocus,\n\t\t\tundoToast,\n\t\t\tundoRemoval,\n\t\t\tdismissUndo,\n\t\t\tactiveStep,\n\t\t\tactiveIndex,\n\t\t\tgoToStep,\n\t\t\tgoNext,\n\t\t\tgoPrev,\n\t\t\tvalidation,\n\t\t\tavailableTools,\n\t\t\tavailableSubAgents,\n\t\t\tavailableIntents,\n\t\t\tavailableModels,\n\t\t\tapplicationType,\n\t\t\tdisableStepNavigation,\n\t\t\tonCreateSubAgent,\n\t\t\tregisterSubAgentCreator,\n\t\t\trequestCreateSubAgent,\n\t\t\tonFetchSubAgent,\n\t\t\tonUpdateSubAgent,\n\t\t\tonImproveSubAgent,\n\t\t],\n\t);\n\n\treturn (\n\t\t<AgentBuilderContext.Provider value={ctx}>\n\t\t\t{children}\n\t\t</AgentBuilderContext.Provider>\n\t);\n};\n"],"names":["AgentBuilderContext","React","useAgentBuilderContext","ctx","useContext","deriveValidation","value","triggerValid","AGENT_CHAR_LIMITS","AgentBuilderProvider","onChange","controlledStep","onStepChange","availableTools","availableSubAgents","availableIntents","availableModels","validationOverride","applicationType","disableStepNavigation","onCreateSubAgent","onFetchSubAgent","onUpdateSubAgent","onImproveSubAgent","children","internalStep","setInternalStep","useState","activeStep","activeIndex","getStepIndex","mentionResetKey","setMentionResetKey","mentionInsertersRef","useRef","lastFocusedFieldRef","registerMentionField","useCallback","fieldKey","fn","notifyMentionFocus","subAgentCreatorRef","registerSubAgentCreator","requestCreateSubAgent","insertMention","kind","id","label","inserters","undoToast","setUndoToast","undoSnapshotRef","undoIdRef","goToStep","step","goNext","next","STEP_KEYS","goPrev","prev","patch","partial","updateField","key","val","removeReference","token","tool","t","strip","text","k","undoRemoval","dismissUndo","validation","useMemo"],"mappings":"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"}
@@ -0,0 +1,2 @@
1
+ "use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const s=require("react"),o=(e,t)=>{switch(t.type){case"patch":return{...e,...t.patch};case"set":return t.value;default:return e}},p=e=>{const t=s.useRef(e),[r,u]=s.useReducer(o,e),a=s.useCallback(c=>u({type:"patch",patch:c}),[]),n=s.useCallback(c=>u({type:"set",value:c}),[]),l=s.useCallback(()=>u({type:"set",value:t.current}),[]);return{value:r,onChange:a,setValue:n,reset:l}};exports.useAgentDraft=p;
2
+ //# sourceMappingURL=useAgentDraft.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"useAgentDraft.js","sources":["../../../../../src/components/agent-builder/hooks/useAgentDraft.ts"],"sourcesContent":["import { useCallback, useReducer, useRef } from 'react';\nimport { AgentValue } from '../AgentBuilder.model';\n\ntype DraftAction =\n\t| { type: 'patch'; patch: Partial<AgentValue> }\n\t| { type: 'set'; value: AgentValue };\n\nconst reducer = (state: AgentValue, action: DraftAction): AgentValue => {\n\tswitch (action.type) {\n\t\tcase 'patch':\n\t\t\treturn { ...state, ...action.patch };\n\t\tcase 'set':\n\t\t\treturn action.value;\n\t\tdefault:\n\t\t\treturn state;\n\t}\n};\n\nexport interface AgentDraft {\n\t/** Current draft value — pass straight to `<AgentBuilder value={...} />`. */\n\tvalue: AgentValue;\n\t/** Merge a partial — pass straight to `<AgentBuilder onChange={...} />`. */\n\tonChange: (patch: Partial<AgentValue>) => void;\n\t/** Replace the whole value (e.g. after an async edit-mode load). */\n\tsetValue: (value: AgentValue) => void;\n\t/** Reset back to the initial value this hook was created with. */\n\treset: () => void;\n}\n\n/**\n * `useReducer`-based state helper for driving a controlled `<AgentBuilder />` from\n * the consumer (e.g. merchantAdminReact) without hand-writing the patch/merge logic.\n *\n * The consumer remains the single source of truth — this just packages the reducer.\n * For edit mode where the agent loads asynchronously, either key the host component\n * on the agent id, or call `setValue` once the data arrives.\n *\n * @example\n * const { value, onChange } = useAgentDraft(mapDocToAgentValue(doc));\n * <AgentBuilder value={value} onChange={onChange} onSaveDraft={() => save(value)} ... />\n */\nexport const useAgentDraft = (initial: AgentValue): AgentDraft => {\n\tconst initialRef = useRef(initial);\n\tconst [value, dispatch] = useReducer(reducer, initial);\n\n\tconst onChange = useCallback(\n\t\t(patch: Partial<AgentValue>) => dispatch({ type: 'patch', patch }),\n\t\t[],\n\t);\n\tconst setValue = useCallback(\n\t\t(next: AgentValue) => dispatch({ type: 'set', value: next }),\n\t\t[],\n\t);\n\tconst reset = useCallback(\n\t\t() => dispatch({ type: 'set', value: initialRef.current }),\n\t\t[],\n\t);\n\n\treturn { value, onChange, setValue, reset };\n};\n"],"names":["reducer","state","action","useAgentDraft","initial","initialRef","useRef","value","dispatch","useReducer","onChange","useCallback","patch","setValue","next","reset"],"mappings":"yGAOMA,EAAU,CAACC,EAAmBC,IAAoC,CACvE,OAAQA,EAAO,KAAA,CACd,IAAK,QACJ,MAAO,CAAE,GAAGD,EAAO,GAAGC,EAAO,KAAA,EAC9B,IAAK,MACJ,OAAOA,EAAO,MACf,QACC,OAAOD,CAAA,CAEV,EAyBaE,EAAiBC,GAAoC,CACjE,MAAMC,EAAaC,EAAAA,OAAOF,CAAO,EAC3B,CAACG,EAAOC,CAAQ,EAAIC,EAAAA,WAAWT,EAASI,CAAO,EAE/CM,EAAWC,EAAAA,YACfC,GAA+BJ,EAAS,CAAE,KAAM,QAAS,MAAAI,EAAO,EACjE,CAAA,CAAC,EAEIC,EAAWF,EAAAA,YACfG,GAAqBN,EAAS,CAAE,KAAM,MAAO,MAAOM,EAAM,EAC3D,CAAA,CAAC,EAEIC,EAAQJ,EAAAA,YACb,IAAMH,EAAS,CAAE,KAAM,MAAO,MAAOH,EAAW,QAAS,EACzD,CAAA,CAAC,EAGF,MAAO,CAAE,MAAAE,EAAO,SAAAG,EAAU,SAAAG,EAAU,MAAAE,CAAA,CACrC"}
@@ -0,0 +1,2 @@
1
+ "use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const e=require("react/jsx-runtime"),o=require("../components/AiTextArea.js"),s=require("../components/StepSectionHeader.js"),a=require("../constants/charLimits.js"),l=require("../constants/steps.js"),c=require("../context/AgentBuilderContext.js"),u=require("../../input/Input.js"),r=l.STEP_DEFINITIONS[0],d=()=>{const{value:n,updateField:i}=c.useAgentBuilderContext();return e.jsxs("div",{className:"bik-agent-step bik-agent-step--about",children:[e.jsx(s.StepSectionHeader,{title:r.title,helper:r.helper}),e.jsx("div",{style:{marginBottom:20},children:e.jsx(u.Input,{"data-test":"agent-name",labelText:"Agent name",labelTextBold:!0,placeholder:"Enter agent name",value:n.name,maxCharLimit:a.AGENT_CHAR_LIMITS.name,maxCharLimitPosition:"TOP",maxCharStyle:{fontSize:12,lineHeight:"16px"},onChangeText:t=>i("name",t)})}),e.jsx(o.AiTextArea,{"data-test":"agent-description",label:"What it does",value:n.description,onChange:t=>i("description",t),maxLength:a.AGENT_CHAR_LIMITS.description,placeholder:"Enter description",minHeight:"200px"})]})};exports.Step1About=d;
2
+ //# sourceMappingURL=Step1About.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Step1About.js","sources":["../../../../../src/components/agent-builder/steps/Step1About.tsx"],"sourcesContent":["import React from 'react';\nimport { Input } from '@src/components/input';\nimport { AiTextArea } from '../components/AiTextArea';\nimport { StepSectionHeader } from '../components/StepSectionHeader';\nimport { AGENT_CHAR_LIMITS } from '../constants/charLimits';\nimport { STEP_DEFINITIONS } from '../constants/steps';\nimport { useAgentBuilderContext } from '../context/AgentBuilderContext';\n\nconst STEP = STEP_DEFINITIONS[0];\n\nexport const Step1About: React.FC = () => {\n\tconst { value, updateField } = useAgentBuilderContext();\n\n\treturn (\n\t\t<div className=\"bik-agent-step bik-agent-step--about\">\n\t\t\t<StepSectionHeader title={STEP.title} helper={STEP.helper} />\n\n\t\t\t<div style={{ marginBottom: 20 }}>\n\t\t\t\t<Input\n\t\t\t\t\tdata-test=\"agent-name\"\n\t\t\t\t\tlabelText=\"Agent name\"\n\t\t\t\t\tlabelTextBold\n\t\t\t\t\tplaceholder=\"Enter agent name\"\n\t\t\t\t\tvalue={value.name}\n\t\t\t\t\tmaxCharLimit={AGENT_CHAR_LIMITS.name}\n\t\t\t\t\tmaxCharLimitPosition=\"TOP\"\n\t\t\t\t\tmaxCharStyle={{ fontSize: 12, lineHeight: '16px' }}\n\t\t\t\t\tonChangeText={(text) => updateField('name', text)}\n\t\t\t\t/>\n\t\t\t</div>\n\n\t\t\t<AiTextArea\n\t\t\t\tdata-test=\"agent-description\"\n\t\t\t\tlabel=\"What it does\"\n\t\t\t\tvalue={value.description}\n\t\t\t\tonChange={(text) => updateField('description', text)}\n\t\t\t\tmaxLength={AGENT_CHAR_LIMITS.description}\n\t\t\t\tplaceholder=\"Enter description\"\n\t\t\t\tminHeight=\"200px\"\n\t\t\t/>\n\t\t</div>\n\t);\n};\n"],"names":["STEP","STEP_DEFINITIONS","Step1About","value","updateField","useAgentBuilderContext","jsxs","jsx","StepSectionHeader","Input","AGENT_CHAR_LIMITS","text","AiTextArea"],"mappings":"0WAQMA,EAAOC,EAAAA,iBAAiB,CAAC,EAElBC,EAAuB,IAAM,CACzC,KAAM,CAAE,MAAAC,EAAO,YAAAC,CAAA,EAAgBC,yBAAA,EAE/B,OACCC,EAAAA,KAAC,MAAA,CAAI,UAAU,uCACd,SAAA,CAAAC,MAACC,EAAAA,mBAAkB,MAAOR,EAAK,MAAO,OAAQA,EAAK,OAAQ,QAE1D,MAAA,CAAI,MAAO,CAAE,aAAc,IAC3B,SAAAO,EAAAA,IAACE,EAAAA,MAAA,CACA,YAAU,aACV,UAAU,aACV,cAAa,GACb,YAAY,mBACZ,MAAON,EAAM,KACb,aAAcO,EAAAA,kBAAkB,KAChC,qBAAqB,MACrB,aAAc,CAAE,SAAU,GAAI,WAAY,MAAA,EAC1C,aAAeC,GAASP,EAAY,OAAQO,CAAI,CAAA,CAAA,EAElD,EAEAJ,EAAAA,IAACK,EAAAA,WAAA,CACA,YAAU,oBACV,MAAM,eACN,MAAOT,EAAM,YACb,SAAWQ,GAASP,EAAY,cAAeO,CAAI,EACnD,UAAWD,EAAAA,kBAAkB,YAC7B,YAAY,oBACZ,UAAU,OAAA,CAAA,CACX,EACD,CAEF"}
@@ -0,0 +1,2 @@
1
+ "use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const t=require("react/jsx-runtime"),y=require("../../../assets/icons/cross.svg.js"),j=require("../../../assets/icons/plus.svg.js"),O=require("react"),p=require("../../radioButton/RadioButton.js"),s=require("../../TypographyStyle.js"),i=require("../../../constants/Theme.js"),o=require("../AgentBuilder.styled.js"),R=require("../components/AiTextArea.js"),v=require("../components/StepSectionHeader.js"),_=require("../constants/charLimits.js"),T=require("../constants/steps.js"),b=require("../context/AgentBuilderContext.js"),A=require("../../dropdown/Dropdown.js"),I=r=>r&&typeof r=="object"&&"default"in r?r:{default:r},L=I(O),C=T.STEP_DEFINITIONS[1],q=()=>{const{value:r,patch:a,availableIntents:u}=b.useAgentBuilderContext(),{trigger:n}=r,[S,h]=L.default.useState(!1),c=e=>a({trigger:{...n,mode:e}}),x=e=>{n.intents.includes(e)||a({trigger:{...n,intents:[...n.intents,e]}}),h(!1)},f=e=>a({trigger:{...n,intents:n.intents.filter(l=>l!==e)}}),m=e=>u.find(l=>l.value===e)?.label??e,d=u.filter(e=>!n.intents.includes(e.value)).map(e=>({label:e.label,value:e.value}));return t.jsxs("div",{children:[t.jsx(v.StepSectionHeader,{title:C.title,helper:C.helper}),t.jsxs(o.CardRow,{children:[t.jsxs(o.RadioCard,{"data-test":"trigger-mode-manifest",selected:n.mode==="manifest_intent",onClick:()=>c("manifest_intent"),children:[t.jsx(p.RadioButton,{isActive:n.mode==="manifest_intent",onValueChange:()=>c("manifest_intent"),skipSelectingOff:!0,activeColor:i.COLORS.content.brand}),t.jsxs(o.RadioCardText,{children:[t.jsx(s.TitleSmall,{color:i.COLORS.content.primary,children:"Manifest intent"}),t.jsx(s.BodyCaption,{color:i.COLORS.content.secondary,children:"Manifest's AI classifier routes conversations automatically — no keywords needed."})]})]}),t.jsxs(o.RadioCard,{"data-test":"trigger-mode-custom",selected:n.mode==="custom_intent",onClick:()=>c("custom_intent"),children:[t.jsx(p.RadioButton,{isActive:n.mode==="custom_intent",onValueChange:()=>c("custom_intent"),skipSelectingOff:!0,activeColor:i.COLORS.content.brand}),t.jsxs(o.RadioCardText,{children:[t.jsx(s.TitleSmall,{color:i.COLORS.content.primary,children:"Custom intent"}),t.jsx(s.BodyCaption,{color:i.COLORS.content.secondary,children:"Define your own trigger — use exact phrases or describe the customer's intent."})]})]})]}),n.mode==="manifest_intent"?t.jsxs(o.FieldBlock,{children:[t.jsx(s.TitleSmall,{color:i.COLORS.content.primary,children:"If customer talks about"}),t.jsxs(o.ChipWrap,{children:[n.intents.map(e=>t.jsxs(o.IntentChip,{"data-test":`intent-chip-${e}`,children:[t.jsx(s.BodySecondary,{color:i.COLORS.content.primary,children:m(e)}),t.jsx(o.ChipCloseButton,{onClick:()=>f(e),"aria-label":`Remove ${m(e)}`,children:t.jsx(y.default,{width:14,height:14,color:i.COLORS.content.secondary})})]},e)),S&&d.length>0?t.jsx(A.Dropdown,{"data-test":"intent-add-dropdown",size:"small",width:"200px",placeHolder:"Select intent",isSearchable:!0,options:d,onSelect:e=>{const g=(Array.isArray(e)?e[0]:e)?.value;g&&x(g)}}):d.length>0&&t.jsxs(o.AddChipButton,{"data-test":"intent-add-button",onClick:()=>h(!0),children:[t.jsx(j.default,{width:16,height:16,color:i.COLORS.content.secondary}),t.jsx(s.BodySecondary,{color:i.COLORS.content.secondary,children:"Intent"})]})]}),t.jsx(s.BodyCaption,{color:i.COLORS.content.secondary,children:"This agent takes over from your main assistant when this intent is detected. The changeover is automatic when you go live."})]}):t.jsx(R.AiTextArea,{"data-test":"custom-intent",label:"Describe the trigger",value:n.custom_intent??"",onChange:e=>a({trigger:{...n,custom_intent:e}}),maxLength:_.AGENT_CHAR_LIMITS.custom_intent,placeholder:"e.g. The customer wants to cancel an order they placed.",minHeight:"120px"})]})};exports.Step2WhenItStepsIn=q;
2
+ //# sourceMappingURL=Step2WhenItStepsIn.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Step2WhenItStepsIn.js","sources":["../../../../../src/components/agent-builder/steps/Step2WhenItStepsIn.tsx"],"sourcesContent":["import CrossIcon from '@src/assets/icons/cross.svg';\nimport PlusIcon from '@src/assets/icons/plus.svg';\nimport React from 'react';\nimport { Dropdown } from '@src/components/dropdown';\nimport { SingleOption } from '@src/components/dropdown/type';\nimport { RadioButton } from '@src/components/radioButton/RadioButton';\nimport {\n\tBodyCaption,\n\tBodySecondary,\n\tTitleSmall,\n} from '@src/components/TypographyStyle';\nimport { COLORS } from '@src/constants/Theme';\nimport { TriggerMode } from '../AgentBuilder.model';\nimport {\n\tAddChipButton,\n\tCardRow,\n\tChipCloseButton,\n\tChipWrap,\n\tFieldBlock,\n\tIntentChip,\n\tRadioCard,\n\tRadioCardText,\n} from '../AgentBuilder.styled';\nimport { AiTextArea } from '../components/AiTextArea';\nimport { StepSectionHeader } from '../components/StepSectionHeader';\nimport { AGENT_CHAR_LIMITS } from '../constants/charLimits';\nimport { STEP_DEFINITIONS } from '../constants/steps';\nimport { useAgentBuilderContext } from '../context/AgentBuilderContext';\n\nconst STEP = STEP_DEFINITIONS[1];\n\nexport const Step2WhenItStepsIn: React.FC = () => {\n\tconst { value, patch, availableIntents } = useAgentBuilderContext();\n\tconst { trigger } = value;\n\tconst [adding, setAdding] = React.useState(false);\n\n\tconst setMode = (mode: TriggerMode) =>\n\t\tpatch({ trigger: { ...trigger, mode } });\n\n\tconst addIntent = (intentValue: string) => {\n\t\tif (!trigger.intents.includes(intentValue)) {\n\t\t\tpatch({\n\t\t\t\ttrigger: { ...trigger, intents: [...trigger.intents, intentValue] },\n\t\t\t});\n\t\t}\n\t\tsetAdding(false);\n\t};\n\n\tconst removeIntent = (intentValue: string) =>\n\t\tpatch({\n\t\t\ttrigger: {\n\t\t\t\t...trigger,\n\t\t\t\tintents: trigger.intents.filter((i) => i !== intentValue),\n\t\t\t},\n\t\t});\n\n\tconst labelFor = (v: string) =>\n\t\tavailableIntents.find((o) => o.value === v)?.label ?? v;\n\n\tconst remainingOptions: SingleOption[] = availableIntents\n\t\t.filter((o) => !trigger.intents.includes(o.value))\n\t\t.map((o) => ({ label: o.label, value: o.value }));\n\n\treturn (\n\t\t<div>\n\t\t\t<StepSectionHeader title={STEP.title} helper={STEP.helper} />\n\n\t\t\t<CardRow>\n\t\t\t\t<RadioCard\n\t\t\t\t\tdata-test=\"trigger-mode-manifest\"\n\t\t\t\t\tselected={trigger.mode === 'manifest_intent'}\n\t\t\t\t\tonClick={() => setMode('manifest_intent')}\n\t\t\t\t>\n\t\t\t\t\t<RadioButton\n\t\t\t\t\t\tisActive={trigger.mode === 'manifest_intent'}\n\t\t\t\t\t\tonValueChange={() => setMode('manifest_intent')}\n\t\t\t\t\t\tskipSelectingOff\n\t\t\t\t\t\tactiveColor={COLORS.content.brand}\n\t\t\t\t\t/>\n\t\t\t\t\t<RadioCardText>\n\t\t\t\t\t\t<TitleSmall color={COLORS.content.primary}>\n\t\t\t\t\t\t\tManifest intent\n\t\t\t\t\t\t</TitleSmall>\n\t\t\t\t\t\t<BodyCaption color={COLORS.content.secondary}>\n\t\t\t\t\t\t\tManifest&apos;s AI classifier routes conversations automatically —\n\t\t\t\t\t\t\tno keywords needed.\n\t\t\t\t\t\t</BodyCaption>\n\t\t\t\t\t</RadioCardText>\n\t\t\t\t</RadioCard>\n\n\t\t\t\t<RadioCard\n\t\t\t\t\tdata-test=\"trigger-mode-custom\"\n\t\t\t\t\tselected={trigger.mode === 'custom_intent'}\n\t\t\t\t\tonClick={() => setMode('custom_intent')}\n\t\t\t\t>\n\t\t\t\t\t<RadioButton\n\t\t\t\t\t\tisActive={trigger.mode === 'custom_intent'}\n\t\t\t\t\t\tonValueChange={() => setMode('custom_intent')}\n\t\t\t\t\t\tskipSelectingOff\n\t\t\t\t\t\tactiveColor={COLORS.content.brand}\n\t\t\t\t\t/>\n\t\t\t\t\t<RadioCardText>\n\t\t\t\t\t\t<TitleSmall color={COLORS.content.primary}>\n\t\t\t\t\t\t\tCustom intent\n\t\t\t\t\t\t</TitleSmall>\n\t\t\t\t\t\t<BodyCaption color={COLORS.content.secondary}>\n\t\t\t\t\t\t\tDefine your own trigger — use exact phrases or describe the\n\t\t\t\t\t\t\tcustomer&apos;s intent.\n\t\t\t\t\t\t</BodyCaption>\n\t\t\t\t\t</RadioCardText>\n\t\t\t\t</RadioCard>\n\t\t\t</CardRow>\n\n\t\t\t{trigger.mode === 'manifest_intent' ? (\n\t\t\t\t<FieldBlock>\n\t\t\t\t\t<TitleSmall color={COLORS.content.primary}>\n\t\t\t\t\t\tIf customer talks about\n\t\t\t\t\t</TitleSmall>\n\t\t\t\t\t<ChipWrap>\n\t\t\t\t\t\t{trigger.intents.map((intent) => (\n\t\t\t\t\t\t\t<IntentChip key={intent} data-test={`intent-chip-${intent}`}>\n\t\t\t\t\t\t\t\t<BodySecondary color={COLORS.content.primary}>\n\t\t\t\t\t\t\t\t\t{labelFor(intent)}\n\t\t\t\t\t\t\t\t</BodySecondary>\n\t\t\t\t\t\t\t\t<ChipCloseButton\n\t\t\t\t\t\t\t\t\tonClick={() => removeIntent(intent)}\n\t\t\t\t\t\t\t\t\taria-label={`Remove ${labelFor(intent)}`}\n\t\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t\t\t<CrossIcon\n\t\t\t\t\t\t\t\t\t\twidth={14}\n\t\t\t\t\t\t\t\t\t\theight={14}\n\t\t\t\t\t\t\t\t\t\tcolor={COLORS.content.secondary}\n\t\t\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t\t\t</ChipCloseButton>\n\t\t\t\t\t\t\t</IntentChip>\n\t\t\t\t\t\t))}\n\n\t\t\t\t\t\t{adding && remainingOptions.length > 0 ? (\n\t\t\t\t\t\t\t<Dropdown\n\t\t\t\t\t\t\t\tdata-test=\"intent-add-dropdown\"\n\t\t\t\t\t\t\t\tsize=\"small\"\n\t\t\t\t\t\t\t\twidth=\"200px\"\n\t\t\t\t\t\t\t\tplaceHolder=\"Select intent\"\n\t\t\t\t\t\t\t\tisSearchable\n\t\t\t\t\t\t\t\toptions={remainingOptions}\n\t\t\t\t\t\t\t\tonSelect={(opt) => {\n\t\t\t\t\t\t\t\t\tconst single = Array.isArray(opt) ? opt[0] : opt;\n\t\t\t\t\t\t\t\t\tconst v = (single as SingleOption)?.value;\n\t\t\t\t\t\t\t\t\tif (v) {\n\t\t\t\t\t\t\t\t\t\taddIntent(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) : (\n\t\t\t\t\t\t\tremainingOptions.length > 0 && (\n\t\t\t\t\t\t\t\t<AddChipButton\n\t\t\t\t\t\t\t\t\tdata-test=\"intent-add-button\"\n\t\t\t\t\t\t\t\t\tonClick={() => setAdding(true)}\n\t\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t\t\t<PlusIcon\n\t\t\t\t\t\t\t\t\t\twidth={16}\n\t\t\t\t\t\t\t\t\t\theight={16}\n\t\t\t\t\t\t\t\t\t\tcolor={COLORS.content.secondary}\n\t\t\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t\t\t\t<BodySecondary color={COLORS.content.secondary}>\n\t\t\t\t\t\t\t\t\t\tIntent\n\t\t\t\t\t\t\t\t\t</BodySecondary>\n\t\t\t\t\t\t\t\t</AddChipButton>\n\t\t\t\t\t\t\t)\n\t\t\t\t\t\t)}\n\t\t\t\t\t</ChipWrap>\n\t\t\t\t\t<BodyCaption color={COLORS.content.secondary}>\n\t\t\t\t\t\tThis agent takes over from your main assistant when this intent is\n\t\t\t\t\t\tdetected. The changeover is automatic when you go live.\n\t\t\t\t\t</BodyCaption>\n\t\t\t\t</FieldBlock>\n\t\t\t) : (\n\t\t\t\t<AiTextArea\n\t\t\t\t\tdata-test=\"custom-intent\"\n\t\t\t\t\tlabel=\"Describe the trigger\"\n\t\t\t\t\tvalue={trigger.custom_intent ?? ''}\n\t\t\t\t\tonChange={(text) =>\n\t\t\t\t\t\tpatch({ trigger: { ...trigger, custom_intent: text } })\n\t\t\t\t\t}\n\t\t\t\t\tmaxLength={AGENT_CHAR_LIMITS.custom_intent}\n\t\t\t\t\tplaceholder=\"e.g. The customer wants to cancel an order they placed.\"\n\t\t\t\t\tminHeight=\"120px\"\n\t\t\t\t/>\n\t\t\t)}\n\t\t</div>\n\t);\n};\n"],"names":["STEP","STEP_DEFINITIONS","Step2WhenItStepsIn","value","patch","availableIntents","useAgentBuilderContext","trigger","adding","setAdding","React","setMode","mode","addIntent","intentValue","removeIntent","i","labelFor","v","o","remainingOptions","jsx","StepSectionHeader","CardRow","jsxs","RadioCard","RadioButton","COLORS","RadioCardText","TitleSmall","BodyCaption","FieldBlock","ChipWrap","intent","IntentChip","BodySecondary","ChipCloseButton","CrossIcon","Dropdown","opt","AddChipButton","PlusIcon","AiTextArea","text","AGENT_CHAR_LIMITS"],"mappings":"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"}
@@ -0,0 +1,2 @@
1
+ "use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const s=require("react/jsx-runtime"),l=require("react"),I=require("../../TypographyStyle.js"),T=require("../../../constants/Theme.js"),m=require("../AgentBuilder.styled.js"),$=require("../components/CreateSubAgentPanel.js"),O=require("../components/MentionField.js"),j=require("../components/SelectableListSection.js"),J=require("../components/StepSectionHeader.js"),w=require("../constants/charLimits.js"),Q=require("../constants/steps.js"),V=require("../context/AgentBuilderContext.js"),R=require("../utils/mentionSerialization.js"),E=require("../utils/sourceIcons.js"),X=require("../../dropdown/Dropdown.js"),Y=t=>t&&typeof t=="object"&&"default"in t?t:{default:t},Z=Y(l),ee=t=>{const a=E.SOURCE_ICONS[t];return a?Z.default.createElement(a.Icon,{width:a.w,height:a.h}):void 0},q=t=>({label:t.display_name,value:t.tool_id,leadingIcon:ee(t.source??"manifest")}),_=Q.STEP_DEFINITIONS[2],te=()=>{const{value:t,patch:a,updateField:L,removeReference:x,availableTools:u,availableSubAgents:M,availableModels:h,applicationType:k,insertMention:d,onCreateSubAgent:r,onFetchSubAgent:p,onUpdateSubAgent:f,onImproveSubAgent:H,registerSubAgentCreator:y}=V.useAgentBuilderContext(),[i,g]=l.useState(null),b=l.useRef(0),[N,C]=l.useState([]),S=new Map;M.forEach(e=>S.set(e.id,e)),N.forEach(e=>S.set(e.id,e));const P=Array.from(S.values()),v=l.useCallback(()=>{b.current+=1,g({key:b.current,title:"Create sub-agent"})},[]);l.useEffect(()=>{if(r)return y(v),()=>y(null)},[y,v,r]);const F=l.useCallback(async e=>{if(!p)return;const n=await p(e);b.current+=1,g({key:b.current,title:"Edit sub-agent",editingId:e,initial:n})},[p]),G=l.useCallback(async e=>{if(i?.editingId){if(f){const n=await f(i.editingId,e);C(o=>[...o.filter(c=>c.id!==n.id),n])}}else if(r){const n=await r(e);C(o=>[...o,n]),a({subagents:[...t.subagents,n.id]}),d("subagent",n.id,`sub-agent: ${n.name}`)}g(null)},[i,f,r,a,t.subagents,d]),B=t.tools.map(e=>{const n=u.find(o=>o.tool_id===e);return n?{id:e,label:n.display_name,icon:E.SOURCE_ICONS[n.source??"manifest"]}:null}).filter(e=>e!==null),D=u.map(q),K=(()=>{const e=[],n=new Map;return u.forEach(o=>{const c=o.source??"manifest";n.has(c)||(n.set(c,[]),e.push(c)),n.get(c)?.push(q(o))}),e.map(o=>({source:o,label:R.toolSourceLabel(o),options:n.get(o)??[]}))})(),U=t.subagents.map(e=>{const n=S.get(e);return n?{id:e,label:n.name}:null}).filter(e=>e!==null),z=P.map(e=>({label:e.name,value:e.id})),W=h.map(e=>({label:e.label,value:e.value,selected:e.value===t.model})),A=h.find(e=>e.value===t.model);return s.jsxs("div",{className:"bik-agent-step bik-agent-step--response",children:[s.jsx(J.StepSectionHeader,{title:_.title,helper:_.helper}),s.jsxs(m.Step3Grid,{children:[s.jsxs(m.Step3Main,{children:[s.jsx(O.MentionField,{fieldKey:"instructions","data-test":"agent-instructions",label:"Instructions",maxLength:w.AGENT_CHAR_LIMITS.instructions,placeholder:"Write what this agent should do. Type @ to reference a tool or sub-agent.",minHeight:"200px"}),s.jsx(O.MentionField,{fieldKey:"guardrail","data-test":"agent-guardrail",label:"Guardrails",maxLength:w.AGENT_CHAR_LIMITS.guardrail,placeholder:"Things this agent must never do. Type @ to reference a tool or sub-agent.",minHeight:"140px"})]}),s.jsxs(m.Step3Side,{children:[s.jsx(j.SelectableListSection,{title:"Tools",helper:"Actions this agent can take while responding.",dataTestPrefix:"agent-tools",items:B,addableOptions:D,sourceGroups:K,emptyText:"No tools added yet.",onAdd:e=>{d("tool",e),t.tools.includes(e)||a({tools:[...t.tools,e]})},onRemove:e=>x("tool",e)}),s.jsx(j.SelectableListSection,{title:"Sub-agents",helper:"Other agents this agent can hand off the conversation to.",dataTestPrefix:"agent-subagents",items:U,addableOptions:z,emptyText:"No sub-agents added yet.",onAdd:e=>{d("subagent",e),t.subagents.includes(e)||a({subagents:[...t.subagents,e]})},onRemove:e=>x("subagent",e),onConfigure:p?F:void 0,createOption:r?{label:"Create new",onSelect:v}:void 0}),h.length>0&&s.jsxs(m.SideSection,{children:[s.jsx(I.TitleSmall,{color:T.COLORS.content.primary,children:"Advanced settings"}),s.jsx(I.TitleSmall,{color:T.COLORS.content.secondary,children:"Select AI model"}),s.jsx(X.Dropdown,{"data-test":"agent-model",size:"small",width:"100%",placeHolder:"Select model",options:W,defaultOptions:A?[{label:A.label,value:A.value}]:void 0,onSelect:e=>{const o=(Array.isArray(e)?e[0]:e)?.value;o&&L("model",o)}})]})]})]}),i&&s.jsx($.CreateSubAgentPanel,{title:i.title,initial:i.initial,availableTools:u,appLabel:R.appTypeLabel(k),onImprove:H,onClose:()=>g(null),onSave:G},i.key)]})};exports.Step3HowItResponds=te;
2
+ //# sourceMappingURL=Step3HowItResponds.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Step3HowItResponds.js","sources":["../../../../../src/components/agent-builder/steps/Step3HowItResponds.tsx"],"sourcesContent":["import React, { useCallback, useEffect, useRef, useState } from 'react';\nimport { Dropdown } from '@src/components/dropdown';\nimport { SingleOption } from '@src/components/dropdown/type';\nimport { TitleSmall } from '@src/components/TypographyStyle';\nimport { COLORS } from '@src/constants/Theme';\nimport { AgentTool, SubAgentDraft, SubAgentRef } from '../AgentBuilder.model';\nimport {\n\tSideSection,\n\tStep3Grid,\n\tStep3Main,\n\tStep3Side,\n} from '../AgentBuilder.styled';\nimport { CreateSubAgentPanel } from '../components/CreateSubAgentPanel';\nimport { MentionField } from '../components/MentionField';\nimport {\n\tSelectableItem,\n\tSelectableListSection,\n\tSourceGroup,\n} from '../components/SelectableListSection';\nimport { StepSectionHeader } from '../components/StepSectionHeader';\nimport { AGENT_CHAR_LIMITS } from '../constants/charLimits';\nimport { STEP_DEFINITIONS } from '../constants/steps';\nimport { useAgentBuilderContext } from '../context/AgentBuilderContext';\nimport { appTypeLabel, toolSourceLabel } from '../utils/mentionSerialization';\nimport { SOURCE_ICONS } from '../utils/sourceIcons';\n\n/** Source brand glyph for a tool, as a dropdown leadingIcon element. */\nconst toolIconEl = (source: string): JSX.Element | undefined => {\n\tconst ic = SOURCE_ICONS[source];\n\treturn ic\n\t\t? React.createElement(ic.Icon, { width: ic.w, height: ic.h })\n\t\t: undefined;\n};\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 ?? 'manifest'),\n});\n\nconst STEP = STEP_DEFINITIONS[2];\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\nexport const Step3HowItResponds: React.FC = () => {\n\tconst {\n\t\tvalue,\n\t\tpatch,\n\t\tupdateField,\n\t\tremoveReference,\n\t\tavailableTools,\n\t\tavailableSubAgents,\n\t\tavailableModels,\n\t\tapplicationType,\n\t\tinsertMention,\n\t\tonCreateSubAgent,\n\t\tonFetchSubAgent,\n\t\tonUpdateSubAgent,\n\t\tonImproveSubAgent,\n\t\tregisterSubAgentCreator,\n\t} = useAgentBuilderContext();\n\n\tconst [panel, setPanel] = useState<SubAgentPanelState | null>(null);\n\tconst panelKeyRef = useRef(0);\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// 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\tconst handlePanelSave = useCallback(\n\t\tasync (draft: SubAgentDraft) => {\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\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\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\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],\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: SOURCE_ICONS[tool.source ?? 'manifest'],\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// 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 ?? '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}));\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\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\treturn (\n\t\t<div className=\"bik-agent-step bik-agent-step--response\">\n\t\t\t<StepSectionHeader title={STEP.title} helper={STEP.helper} />\n\n\t\t\t<Step3Grid>\n\t\t\t\t<Step3Main>\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={AGENT_CHAR_LIMITS.instructions}\n\t\t\t\t\t\tplaceholder=\"Write what this agent should do. Type @ to reference a tool or sub-agent.\"\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={AGENT_CHAR_LIMITS.guardrail}\n\t\t\t\t\t\tplaceholder=\"Things this agent must never do. Type @ to reference a tool or sub-agent.\"\n\t\t\t\t\t\tminHeight=\"140px\"\n\t\t\t\t\t/>\n\t\t\t\t</Step3Main>\n\n\t\t\t\t<Step3Side>\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={toolItems}\n\t\t\t\t\t\taddableOptions={toolOptions}\n\t\t\t\t\t\tsourceGroups={toolSourceGroups}\n\t\t\t\t\t\temptyText=\"No tools added yet.\"\n\t\t\t\t\t\tonAdd={(id) => {\n\t\t\t\t\t\t\t// Always drop a chip at the cursor; keep the list deduped.\n\t\t\t\t\t\t\tinsertMention('tool', id);\n\t\t\t\t\t\t\tif (!value.tools.includes(id)) {\n\t\t\t\t\t\t\t\tpatch({ tools: [...value.tools, id] });\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}}\n\t\t\t\t\t\tonRemove={(id) => removeReference('tool', id)}\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\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\tif (!value.subagents.includes(id)) {\n\t\t\t\t\t\t\t\tpatch({ subagents: [...value.subagents, id] });\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}}\n\t\t\t\t\t\tonRemove={(id) => removeReference('subagent', id)}\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{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<TitleSmall color={COLORS.content.secondary}>\n\t\t\t\t\t\t\t\tSelect AI model\n\t\t\t\t\t\t\t</TitleSmall>\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\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 single = Array.isArray(opt) ? opt[0] : opt;\n\t\t\t\t\t\t\t\t\tconst v = (single as SingleOption)?.value;\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</Step3Side>\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\tavailableTools={availableTools}\n\t\t\t\t\tappLabel={appTypeLabel(applicationType)}\n\t\t\t\t\tonImprove={onImproveSubAgent}\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\t\t</div>\n\t);\n};\n"],"names":["toolIconEl","source","ic","SOURCE_ICONS","React","toolOption","STEP","STEP_DEFINITIONS","Step3HowItResponds","value","patch","updateField","removeReference","availableTools","availableSubAgents","availableModels","applicationType","insertMention","onCreateSubAgent","onFetchSubAgent","onUpdateSubAgent","onImproveSubAgent","registerSubAgentCreator","useAgentBuilderContext","panel","setPanel","useState","panelKeyRef","useRef","createdSubAgents","setCreatedSubAgents","subAgentById","s","knownSubAgents","openCreate","useCallback","useEffect","openConfigure","id","data","handlePanelSave","draft","ref","prev","toolItems","tool","t","x","toolOptions","toolSourceGroups","order","bySource","src","toolSourceLabel","subAgentItems","sub","subAgentOptions","modelOptions","m","selectedModel","jsxs","jsx","StepSectionHeader","Step3Grid","Step3Main","MentionField","AGENT_CHAR_LIMITS","Step3Side","SelectableListSection","SideSection","TitleSmall","COLORS","Dropdown","opt","v","CreateSubAgentPanel","appTypeLabel"],"mappings":"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"}
@@ -0,0 +1,2 @@
1
+ "use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const e=require("react/jsx-runtime"),c=require("../../radioButton/RadioButton.js"),r=require("../../TypographyStyle.js"),n=require("../../../constants/Theme.js"),o=require("../AgentBuilder.styled.js"),h=require("../components/AiTextArea.js"),u=require("../components/StepSectionHeader.js"),p=require("../constants/charLimits.js"),C=require("../constants/steps.js"),x=require("../context/AgentBuilderContext.js"),d=C.STEP_DEFINITIONS[3],S=()=>{const{value:l,patch:a}=x.useAgentBuilderContext(),{handover:t}=l,s=i=>a({handover:{...t,method:i}});return e.jsxs("div",{className:"bik-agent-step bik-agent-step--handover",children:[e.jsx(u.StepSectionHeader,{title:d.title,helper:d.helper}),e.jsx(h.AiTextArea,{"data-test":"handover-when",label:"Handover when",value:t.when,onChange:i=>a({handover:{...t,when:i}}),maxLength:p.AGENT_CHAR_LIMITS.handoverWhen,placeholder:"e.g. Hand over if the customer is angry or requests a human agent.",minHeight:"120px"}),e.jsxs(o.FieldBlock,{children:[e.jsx(r.TitleSmall,{color:n.COLORS.content.primary,children:"Handover method"}),e.jsxs(o.CardRow,{children:[e.jsxs(o.RadioCard,{"data-test":"handover-method-default",selected:t.method==="default",onClick:()=>s("default"),children:[e.jsx(c.RadioButton,{isActive:t.method==="default",onValueChange:()=>s("default"),skipSelectingOff:!0,activeColor:n.COLORS.content.brand}),e.jsxs(o.RadioCardText,{children:[e.jsx(r.TitleSmall,{color:n.COLORS.content.primary,children:"Use default settings"}),e.jsx(r.BodyCaption,{color:n.COLORS.content.secondary,children:"Defined in Customize > Agent handover"})]})]}),e.jsxs(o.RadioCard,{"data-test":"handover-method-specific",selected:t.method==="specific_channels",onClick:()=>s("specific_channels"),children:[e.jsx(c.RadioButton,{isActive:t.method==="specific_channels",onValueChange:()=>s("specific_channels"),skipSelectingOff:!0,activeColor:n.COLORS.content.brand}),e.jsxs(o.RadioCardText,{children:[e.jsx(r.TitleSmall,{color:n.COLORS.content.primary,children:"Choose specific channels"}),e.jsx(r.BodyCaption,{color:n.COLORS.content.secondary,children:"Always hands over regardless of business hours."})]})]})]})]})]})};exports.Step4HandoverRules=S;
2
+ //# sourceMappingURL=Step4HandoverRules.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Step4HandoverRules.js","sources":["../../../../../src/components/agent-builder/steps/Step4HandoverRules.tsx"],"sourcesContent":["import React from 'react';\nimport { RadioButton } from '@src/components/radioButton/RadioButton';\nimport { BodyCaption, TitleSmall } from '@src/components/TypographyStyle';\nimport { COLORS } from '@src/constants/Theme';\nimport { HandoverMethod } from '../AgentBuilder.model';\nimport {\n\tCardRow,\n\tFieldBlock,\n\tRadioCard,\n\tRadioCardText,\n} from '../AgentBuilder.styled';\nimport { AiTextArea } from '../components/AiTextArea';\nimport { StepSectionHeader } from '../components/StepSectionHeader';\nimport { AGENT_CHAR_LIMITS } from '../constants/charLimits';\nimport { STEP_DEFINITIONS } from '../constants/steps';\nimport { useAgentBuilderContext } from '../context/AgentBuilderContext';\n\nconst STEP = STEP_DEFINITIONS[3];\n\nexport const Step4HandoverRules: React.FC = () => {\n\tconst { value, patch } = useAgentBuilderContext();\n\tconst { handover } = value;\n\n\tconst setMethod = (method: HandoverMethod) =>\n\t\tpatch({ handover: { ...handover, method } });\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<AiTextArea\n\t\t\t\tdata-test=\"handover-when\"\n\t\t\t\tlabel=\"Handover when\"\n\t\t\t\tvalue={handover.when}\n\t\t\t\tonChange={(text) => patch({ handover: { ...handover, when: text } })}\n\t\t\t\tmaxLength={AGENT_CHAR_LIMITS.handoverWhen}\n\t\t\t\tplaceholder=\"e.g. Hand over if the customer is angry or requests a human agent.\"\n\t\t\t\tminHeight=\"120px\"\n\t\t\t/>\n\n\t\t\t<FieldBlock>\n\t\t\t\t<TitleSmall color={COLORS.content.primary}>Handover method</TitleSmall>\n\t\t\t\t<CardRow>\n\t\t\t\t\t<RadioCard\n\t\t\t\t\t\tdata-test=\"handover-method-default\"\n\t\t\t\t\t\tselected={handover.method === 'default'}\n\t\t\t\t\t\tonClick={() => setMethod('default')}\n\t\t\t\t\t>\n\t\t\t\t\t\t<RadioButton\n\t\t\t\t\t\t\tisActive={handover.method === 'default'}\n\t\t\t\t\t\t\tonValueChange={() => setMethod('default')}\n\t\t\t\t\t\t\tskipSelectingOff\n\t\t\t\t\t\t\tactiveColor={COLORS.content.brand}\n\t\t\t\t\t\t/>\n\t\t\t\t\t\t<RadioCardText>\n\t\t\t\t\t\t\t<TitleSmall color={COLORS.content.primary}>\n\t\t\t\t\t\t\t\tUse default settings\n\t\t\t\t\t\t\t</TitleSmall>\n\t\t\t\t\t\t\t<BodyCaption color={COLORS.content.secondary}>\n\t\t\t\t\t\t\t\tDefined in Customize &gt; Agent handover\n\t\t\t\t\t\t\t</BodyCaption>\n\t\t\t\t\t\t</RadioCardText>\n\t\t\t\t\t</RadioCard>\n\n\t\t\t\t\t<RadioCard\n\t\t\t\t\t\tdata-test=\"handover-method-specific\"\n\t\t\t\t\t\tselected={handover.method === 'specific_channels'}\n\t\t\t\t\t\tonClick={() => setMethod('specific_channels')}\n\t\t\t\t\t>\n\t\t\t\t\t\t<RadioButton\n\t\t\t\t\t\t\tisActive={handover.method === 'specific_channels'}\n\t\t\t\t\t\t\tonValueChange={() => setMethod('specific_channels')}\n\t\t\t\t\t\t\tskipSelectingOff\n\t\t\t\t\t\t\tactiveColor={COLORS.content.brand}\n\t\t\t\t\t\t/>\n\t\t\t\t\t\t<RadioCardText>\n\t\t\t\t\t\t\t<TitleSmall color={COLORS.content.primary}>\n\t\t\t\t\t\t\t\tChoose specific channels\n\t\t\t\t\t\t\t</TitleSmall>\n\t\t\t\t\t\t\t<BodyCaption color={COLORS.content.secondary}>\n\t\t\t\t\t\t\t\tAlways hands over regardless of business hours.\n\t\t\t\t\t\t\t</BodyCaption>\n\t\t\t\t\t\t</RadioCardText>\n\t\t\t\t\t</RadioCard>\n\t\t\t\t</CardRow>\n\t\t\t</FieldBlock>\n\t\t</div>\n\t);\n};\n"],"names":["STEP","STEP_DEFINITIONS","Step4HandoverRules","value","patch","useAgentBuilderContext","handover","setMethod","method","jsxs","jsx","StepSectionHeader","AiTextArea","text","AGENT_CHAR_LIMITS","FieldBlock","TitleSmall","COLORS","CardRow","RadioCard","RadioButton","RadioCardText","BodyCaption"],"mappings":"4eAiBMA,EAAOC,EAAAA,iBAAiB,CAAC,EAElBC,EAA+B,IAAM,CACjD,KAAM,CAAE,MAAAC,EAAO,MAAAC,CAAA,EAAUC,yBAAA,EACnB,CAAE,SAAAC,GAAaH,EAEfI,EAAaC,GAClBJ,EAAM,CAAE,SAAU,CAAE,GAAGE,EAAU,OAAAE,CAAA,EAAU,EAE5C,OACCC,EAAAA,KAAC,MAAA,CAAI,UAAU,0CACd,SAAA,CAAAC,MAACC,EAAAA,mBAAkB,MAAOX,EAAK,MAAO,OAAQA,EAAK,OAAQ,EAE3DU,EAAAA,IAACE,EAAAA,WAAA,CACA,YAAU,gBACV,MAAM,gBACN,MAAON,EAAS,KAChB,SAAWO,GAAST,EAAM,CAAE,SAAU,CAAE,GAAGE,EAAU,KAAMO,CAAA,EAAQ,EACnE,UAAWC,EAAAA,kBAAkB,aAC7B,YAAY,qEACZ,UAAU,OAAA,CAAA,SAGVC,EAAAA,WAAA,CACA,SAAA,CAAAL,MAACM,EAAAA,WAAA,CAAW,MAAOC,EAAAA,OAAO,QAAQ,QAAS,SAAA,kBAAe,SACzDC,EAAAA,QAAA,CACA,SAAA,CAAAT,EAAAA,KAACU,EAAAA,UAAA,CACA,YAAU,0BACV,SAAUb,EAAS,SAAW,UAC9B,QAAS,IAAMC,EAAU,SAAS,EAElC,SAAA,CAAAG,EAAAA,IAACU,EAAAA,YAAA,CACA,SAAUd,EAAS,SAAW,UAC9B,cAAe,IAAMC,EAAU,SAAS,EACxC,iBAAgB,GAChB,YAAaU,EAAAA,OAAO,QAAQ,KAAA,CAAA,SAE5BI,EAAAA,cAAA,CACA,SAAA,CAAAX,MAACM,EAAAA,WAAA,CAAW,MAAOC,EAAAA,OAAO,QAAQ,QAAS,SAAA,uBAE3C,QACCK,EAAAA,YAAA,CAAY,MAAOL,EAAAA,OAAO,QAAQ,UAAW,SAAA,uCAAA,CAE9C,CAAA,CAAA,CACD,CAAA,CAAA,CAAA,EAGDR,EAAAA,KAACU,EAAAA,UAAA,CACA,YAAU,2BACV,SAAUb,EAAS,SAAW,oBAC9B,QAAS,IAAMC,EAAU,mBAAmB,EAE5C,SAAA,CAAAG,EAAAA,IAACU,EAAAA,YAAA,CACA,SAAUd,EAAS,SAAW,oBAC9B,cAAe,IAAMC,EAAU,mBAAmB,EAClD,iBAAgB,GAChB,YAAaU,EAAAA,OAAO,QAAQ,KAAA,CAAA,SAE5BI,EAAAA,cAAA,CACA,SAAA,CAAAX,MAACM,EAAAA,WAAA,CAAW,MAAOC,EAAAA,OAAO,QAAQ,QAAS,SAAA,2BAE3C,QACCK,EAAAA,YAAA,CAAY,MAAOL,EAAAA,OAAO,QAAQ,UAAW,SAAA,iDAAA,CAE9C,CAAA,CAAA,CACD,CAAA,CAAA,CAAA,CACD,CAAA,CACD,CAAA,CAAA,CACD,CAAA,EACD,CAEF"}
@@ -0,0 +1,4 @@
1
+ "use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const c={manifest:"Manifest",shopify:"Shopify",integration:"Integration"},u=(t,n="Manifest")=>t?c[t]??t:n,b=t=>{const n=t?String(t):"";return n==="BIK"?"BIK":n==="BSP"?"BSP":"Manifest"},g=(t,n,e="Manifest")=>[...t.map(o=>({id:o.tool_id,label:`${u(o.source,e)} : ${o.display_name}`,meta:{kind:"tool",functionKey:o.function_key,plainLabel:o.display_name,source:o.source}})),...n.map(o=>({id:o.id,label:`sub-agent: ${o.name}`,meta:{kind:"subagent",plainLabel:o.name}}))],a=t=>t.replace(/&/g,"&amp;").replace(/</g,"&lt;").replace(/>/g,"&gt;"),s=t=>a(t).replace(/"/g,"&quot;"),d=(t,n,e)=>`<span data-type="mentionAgent" class="bik-mention bik-mention--agent" data-id="${s(t)}" data-label="${s(n)}" data-kind="${s(e)}">${a(n)}</span>`,f=(t,n,e)=>d(t,n,e),k=t=>{const n=new Map;for(const e of t){const o=e.meta;o?.kind==="tool"&&o.functionKey?n.set(`tool:${o.functionKey}`,e):o?.kind==="subagent"&&n.set(`subagent:${String(e.id)}`,e)}return n},l=/\{\{(tool:[^}]+|subagent:[^}]+)\}\}/g,y=(t,n)=>{let e="",o=0;l.lastIndex=0;let i;for(;(i=l.exec(t))!==null;){e+=a(t.slice(o,i.index));const r=n.get(i[1]);if(r){const m=r.meta.kind;e+=d(String(r.id),r.label,m)}else e+=a(i[0]);o=l.lastIndex}return e+=a(t.slice(o)),e.replace(/\n/g,"<br>")},S=(t,n=[])=>{if(!t)return"";const e=k(n);return t.split(/\n{2,}/).map(o=>`<p>${y(o,e)}</p>`).join("")},T=(t,n)=>{const e=n[t];return e?`{{tool:${e}}}`:`{{subagent:${t}}}`},p=(t,n)=>{switch(t.type){case"text":return t.text??"";case"mentionAgent":case"mentionTeam":{const e=t.attrs?.id;return e==null?"":T(String(e),n)}case"variable":return`{{${String(t.attrs?.variableName??"")}}}`;case"hardBreak":return`
2
+ `;default:{const e=(t.content??[]).map(i=>p(i,n)).join("");return["paragraph","heading","listItem","blockquote"].includes(t.type)?`${e}
3
+ `:e}}},L=(t,n)=>{if(!t)return"";const e=n.reduce((o,i)=>(o[i.tool_id]=i.function_key,o),{});return p(t,e).replace(/\n+$/,"")};exports.TOOL_SOURCE_LABELS=c;exports.appTypeLabel=b;exports.buildAgentMentionItems=g;exports.buildMentionHtml=f;exports.editorDocToInstructions=L;exports.instructionsToEditorHtml=S;exports.toolSourceLabel=u;
4
+ //# sourceMappingURL=mentionSerialization.js.map