@bikdotai/bik-component-library 0.0.821-beta.4 → 0.0.821-beta.6

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 (498) 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/playOutline.svg.js +2 -0
  4. package/dist/cjs/assets/icons/playOutline.svg.js.map +1 -0
  5. package/dist/cjs/components/BikGiftedChat/Bubble/Bubble.js +1 -1
  6. package/dist/cjs/components/BikGiftedChat/Bubble/Bubble.js.map +1 -1
  7. package/dist/cjs/components/BikGiftedChat/GiftedChat/Day.js +1 -1
  8. package/dist/cjs/components/BikGiftedChat/GiftedChat/Day.js.map +1 -1
  9. package/dist/cjs/components/BikGiftedChat/GiftedChat/GiftedChat.js +1 -1
  10. package/dist/cjs/components/BikGiftedChat/GiftedChat/GiftedChat.js.map +1 -1
  11. package/dist/cjs/components/BikGiftedChat/GiftedChat/types.js.map +1 -1
  12. package/dist/cjs/components/TypographyStyle.js +20 -41
  13. package/dist/cjs/components/TypographyStyle.js.map +1 -1
  14. package/dist/cjs/components/agent-builder/AgentBuilder.js +2 -0
  15. package/dist/cjs/components/agent-builder/AgentBuilder.js.map +1 -0
  16. package/dist/cjs/components/agent-builder/AgentBuilder.styled.js +367 -0
  17. package/dist/cjs/components/agent-builder/AgentBuilder.styled.js.map +1 -0
  18. package/dist/cjs/components/agent-builder/components/AgentBuilderFooter.js +2 -0
  19. package/dist/cjs/components/agent-builder/components/AgentBuilderFooter.js.map +1 -0
  20. package/dist/cjs/components/agent-builder/components/AgentBuilderTopBar.js +2 -0
  21. package/dist/cjs/components/agent-builder/components/AgentBuilderTopBar.js.map +1 -0
  22. package/dist/cjs/components/agent-builder/components/AiTextArea.js +2 -0
  23. package/dist/cjs/components/agent-builder/components/AiTextArea.js.map +1 -0
  24. package/dist/cjs/components/agent-builder/components/CreateSubAgentPanel.js +2 -0
  25. package/dist/cjs/components/agent-builder/components/CreateSubAgentPanel.js.map +1 -0
  26. package/dist/cjs/components/agent-builder/components/DiscardModal.js +2 -0
  27. package/dist/cjs/components/agent-builder/components/DiscardModal.js.map +1 -0
  28. package/dist/cjs/components/agent-builder/components/GoLiveModal.js +2 -0
  29. package/dist/cjs/components/agent-builder/components/GoLiveModal.js.map +1 -0
  30. package/dist/cjs/components/agent-builder/components/MentionEditor.js +2 -0
  31. package/dist/cjs/components/agent-builder/components/MentionEditor.js.map +1 -0
  32. package/dist/cjs/components/agent-builder/components/MentionField.js +2 -0
  33. package/dist/cjs/components/agent-builder/components/MentionField.js.map +1 -0
  34. package/dist/cjs/components/agent-builder/components/MentionPicker.js +47 -0
  35. package/dist/cjs/components/agent-builder/components/MentionPicker.js.map +1 -0
  36. package/dist/cjs/components/agent-builder/components/SelectableListSection.js +2 -0
  37. package/dist/cjs/components/agent-builder/components/SelectableListSection.js.map +1 -0
  38. package/dist/cjs/components/agent-builder/components/StepRail.js +2 -0
  39. package/dist/cjs/components/agent-builder/components/StepRail.js.map +1 -0
  40. package/dist/cjs/components/agent-builder/components/StepSectionHeader.js +2 -0
  41. package/dist/cjs/components/agent-builder/components/StepSectionHeader.js.map +1 -0
  42. package/dist/cjs/components/agent-builder/components/UndoToast.js +2 -0
  43. package/dist/cjs/components/agent-builder/components/UndoToast.js.map +1 -0
  44. package/dist/cjs/components/agent-builder/constants/charLimits.js +2 -0
  45. package/dist/cjs/components/agent-builder/constants/charLimits.js.map +1 -0
  46. package/dist/cjs/components/agent-builder/constants/editorStyle.js +2 -0
  47. package/dist/cjs/components/agent-builder/constants/editorStyle.js.map +1 -0
  48. package/dist/cjs/components/agent-builder/constants/steps.js +2 -0
  49. package/dist/cjs/components/agent-builder/constants/steps.js.map +1 -0
  50. package/dist/cjs/components/agent-builder/context/AgentBuilderContext.js +2 -0
  51. package/dist/cjs/components/agent-builder/context/AgentBuilderContext.js.map +1 -0
  52. package/dist/cjs/components/agent-builder/hooks/useAgentDraft.js +2 -0
  53. package/dist/cjs/components/agent-builder/hooks/useAgentDraft.js.map +1 -0
  54. package/dist/cjs/components/agent-builder/steps/Step1About.js +2 -0
  55. package/dist/cjs/components/agent-builder/steps/Step1About.js.map +1 -0
  56. package/dist/cjs/components/agent-builder/steps/Step2WhenItStepsIn.js +2 -0
  57. package/dist/cjs/components/agent-builder/steps/Step2WhenItStepsIn.js.map +1 -0
  58. package/dist/cjs/components/agent-builder/steps/Step3HowItResponds.js +2 -0
  59. package/dist/cjs/components/agent-builder/steps/Step3HowItResponds.js.map +1 -0
  60. package/dist/cjs/components/agent-builder/steps/Step4HandoverRules.js +2 -0
  61. package/dist/cjs/components/agent-builder/steps/Step4HandoverRules.js.map +1 -0
  62. package/dist/cjs/components/agent-builder/utils/mentionSerialization.js +4 -0
  63. package/dist/cjs/components/agent-builder/utils/mentionSerialization.js.map +1 -0
  64. package/dist/cjs/components/agent-listing/AgentListing.js +2 -0
  65. package/dist/cjs/components/agent-listing/AgentListing.js.map +1 -0
  66. package/dist/cjs/components/agent-listing/AgentListing.styled.js +115 -0
  67. package/dist/cjs/components/agent-listing/AgentListing.styled.js.map +1 -0
  68. package/dist/cjs/components/agent-listing/AgentListingFilters.js +2 -0
  69. package/dist/cjs/components/agent-listing/AgentListingFilters.js.map +1 -0
  70. package/dist/cjs/components/agent-listing/AgentListingHeader.js +2 -0
  71. package/dist/cjs/components/agent-listing/AgentListingHeader.js.map +1 -0
  72. package/dist/cjs/components/agent-listing/AgentTable.js +2 -0
  73. package/dist/cjs/components/agent-listing/AgentTable.js.map +1 -0
  74. package/dist/cjs/components/agent-listing/AgentTableRow.js +2 -0
  75. package/dist/cjs/components/agent-listing/AgentTableRow.js.map +1 -0
  76. package/dist/cjs/components/avatar/Avatar.js +1 -1
  77. package/dist/cjs/components/avatar/Avatar.js.map +1 -1
  78. package/dist/cjs/components/avatar/Avatar.styled.js +4 -4
  79. package/dist/cjs/components/avatar/Avatar.styled.js.map +1 -1
  80. package/dist/cjs/components/avatar/AvatarHelper.js +1 -1
  81. package/dist/cjs/components/avatar/AvatarHelper.js.map +1 -1
  82. package/dist/cjs/components/bik-layout/BikSidebar.js.map +1 -1
  83. package/dist/cjs/components/bik-layout/CommonStyles.js +1 -1
  84. package/dist/cjs/components/bik-layout/CommonStyles.js.map +1 -1
  85. package/dist/cjs/components/button/Button.js +1 -1
  86. package/dist/cjs/components/button/Button.js.map +1 -1
  87. package/dist/cjs/components/button/Button.styled.js +13 -13
  88. package/dist/cjs/components/button/Button.styled.js.map +1 -1
  89. package/dist/cjs/components/button/themes.js +6 -6
  90. package/dist/cjs/components/button/themes.js.map +1 -1
  91. package/dist/cjs/components/checkBox/CheckBox.js +1 -1
  92. package/dist/cjs/components/checkBox/CheckBox.js.map +1 -1
  93. package/dist/cjs/components/checkBox/CheckBox.styled.js +20 -21
  94. package/dist/cjs/components/checkBox/CheckBox.styled.js.map +1 -1
  95. package/dist/cjs/components/country-code-picker/CountryCodePicker.js.map +1 -1
  96. package/dist/cjs/components/country-code-picker/CountryPicker.js.map +1 -1
  97. package/dist/cjs/components/dropdown/Dropdown.js +1 -1
  98. package/dist/cjs/components/dropdown/Dropdown.js.map +1 -1
  99. package/dist/cjs/components/dropdown/DropdownPopover/index.js +1 -1
  100. package/dist/cjs/components/dropdown/DropdownPopover/index.js.map +1 -1
  101. package/dist/cjs/components/dropdown/OpenedDropdown/components/OpennedDropdown.js +1 -1
  102. package/dist/cjs/components/dropdown/OpenedDropdown/components/OpennedDropdown.js.map +1 -1
  103. package/dist/cjs/components/dropdown/OpenedDropdown/components/OpennedDropdown.styled.js +8 -9
  104. package/dist/cjs/components/dropdown/OpenedDropdown/components/OpennedDropdown.styled.js.map +1 -1
  105. package/dist/cjs/components/dropdown/OpenedDropdown/components/description/Description.js.map +1 -1
  106. package/dist/cjs/components/dropdown/OpenedDropdown/components/description/Description.styled.js.map +1 -1
  107. package/dist/cjs/components/dropdown/OpenedDropdown/components/menu/FreeFormMenu.js +1 -1
  108. package/dist/cjs/components/dropdown/OpenedDropdown/components/menu/FreeFormMenu.js.map +1 -1
  109. package/dist/cjs/components/dropdown/OpenedDropdown/components/menu/MenuItem.js +9 -9
  110. package/dist/cjs/components/dropdown/OpenedDropdown/components/menu/MenuItem.js.map +1 -1
  111. package/dist/cjs/components/dropdown/OpenedDropdown/components/menu/MenuList.js +1 -1
  112. package/dist/cjs/components/dropdown/OpenedDropdown/components/menu/MenuList.js.map +1 -1
  113. package/dist/cjs/components/dropdown/OpenedDropdown/components/menu/MenuList.styled.js +2 -6
  114. package/dist/cjs/components/dropdown/OpenedDropdown/components/menu/MenuList.styled.js.map +1 -1
  115. package/dist/cjs/components/dropdown/OpenedDropdown/components/menu/SelectAllMenu.js +1 -1
  116. package/dist/cjs/components/dropdown/OpenedDropdown/components/menu/SelectAllMenu.js.map +1 -1
  117. package/dist/cjs/components/dropdown/OpenedDropdown/components/searchbox/SearchBox.js +1 -1
  118. package/dist/cjs/components/dropdown/OpenedDropdown/components/searchbox/SearchBox.js.map +1 -1
  119. package/dist/cjs/components/dropdown/OpenedDropdown/components/searchbox/SearchZeroState.js +1 -1
  120. package/dist/cjs/components/dropdown/OpenedDropdown/components/searchbox/SearchZeroState.js.map +1 -1
  121. package/dist/cjs/components/dropdown-button/DropdownButton.js +1 -1
  122. package/dist/cjs/components/dropdown-button/DropdownButton.js.map +1 -1
  123. package/dist/cjs/components/dropdown-button/DropdownButton.style.js +6 -20
  124. package/dist/cjs/components/dropdown-button/DropdownButton.style.js.map +1 -1
  125. package/dist/cjs/components/fab-menu/FABMenu.js.map +1 -1
  126. package/dist/cjs/components/icon-button/IconButton.js +1 -1
  127. package/dist/cjs/components/icon-button/IconButton.js.map +1 -1
  128. package/dist/cjs/components/icon-button/IconButton.styled.js +12 -18
  129. package/dist/cjs/components/icon-button/IconButton.styled.js.map +1 -1
  130. package/dist/cjs/components/icon-button/theme.js +1 -1
  131. package/dist/cjs/components/icon-button/theme.js.map +1 -1
  132. package/dist/cjs/components/input/Input.js +1 -1
  133. package/dist/cjs/components/input/Input.js.map +1 -1
  134. package/dist/cjs/components/input/Input.styled.js +16 -27
  135. package/dist/cjs/components/input/Input.styled.js.map +1 -1
  136. package/dist/cjs/components/input-with-vars/InputWithVariables.js +3 -3
  137. package/dist/cjs/components/input-with-vars/InputWithVariables.js.map +1 -1
  138. package/dist/cjs/components/list-item/ListItem.js +1 -1
  139. package/dist/cjs/components/list-item/ListItem.js.map +1 -1
  140. package/dist/cjs/components/list-item/ListItem.styled.js +6 -6
  141. package/dist/cjs/components/list-item/ListItem.styled.js.map +1 -1
  142. package/dist/cjs/components/list-item/themes.js +20 -32
  143. package/dist/cjs/components/list-item/themes.js.map +1 -1
  144. package/dist/cjs/components/multi-level-dropdown/GroupedMenuList.js +1 -1
  145. package/dist/cjs/components/multi-level-dropdown/GroupedMenuList.js.map +1 -1
  146. package/dist/cjs/components/multi-level-dropdown/MenuItem.js +1 -1
  147. package/dist/cjs/components/multi-level-dropdown/MenuItem.js.map +1 -1
  148. package/dist/cjs/components/multi-level-dropdown/MenuList.js +1 -1
  149. package/dist/cjs/components/multi-level-dropdown/MenuList.js.map +1 -1
  150. package/dist/cjs/components/multi-level-dropdown/MultiLevelDropdown.js +1 -1
  151. package/dist/cjs/components/multi-level-dropdown/MultiLevelDropdown.js.map +1 -1
  152. package/dist/cjs/components/multi-level-dropdown/MultiLevelDropdown.styled.js +29 -32
  153. package/dist/cjs/components/multi-level-dropdown/MultiLevelDropdown.styled.js.map +1 -1
  154. package/dist/cjs/components/tag/Tag.js +1 -1
  155. package/dist/cjs/components/tag/Tag.js.map +1 -1
  156. package/dist/cjs/components/tag/Tag.styled.js +4 -4
  157. package/dist/cjs/components/tag/Tag.styled.js.map +1 -1
  158. package/dist/cjs/components/tag/model.js.map +1 -1
  159. package/dist/cjs/components/variable-picker-v3/Content.js +1 -1
  160. package/dist/cjs/components/variable-picker-v3/Content.js.map +1 -1
  161. package/dist/cjs/components/variable-picker-v3/model.js.map +1 -1
  162. package/dist/cjs/components/whats-new/WhatsNew.js +1 -1
  163. package/dist/cjs/components/whats-new/WhatsNew.js.map +1 -1
  164. package/dist/cjs/components/whats-new/WhatsNewButton.js +2 -2
  165. package/dist/cjs/components/whats-new/WhatsNewButton.js.map +1 -1
  166. package/dist/cjs/components/whats-new/WhatsNewPanel.js.map +1 -1
  167. package/dist/cjs/constants/Theme.js +1 -1
  168. package/dist/cjs/constants/Theme.js.map +1 -1
  169. package/dist/cjs/editor/BikEditor.js +1 -1
  170. package/dist/cjs/editor/BikEditor.js.map +1 -1
  171. package/dist/cjs/editor/BikEditor.styles.js +14 -1
  172. package/dist/cjs/editor/BikEditor.styles.js.map +1 -1
  173. package/dist/cjs/editor/BikEditor.types.js.map +1 -1
  174. package/dist/cjs/editor/BikEditor.utils.js +2 -2
  175. package/dist/cjs/editor/BikEditor.utils.js.map +1 -1
  176. package/dist/cjs/editor/extensions/buildExtensions.js +1 -1
  177. package/dist/cjs/editor/extensions/buildExtensions.js.map +1 -1
  178. package/dist/cjs/editor/extensions/editorDropdown.styles.js +15 -10
  179. package/dist/cjs/editor/extensions/editorDropdown.styles.js.map +1 -1
  180. package/dist/cjs/editor/extensions/mention/MentionDropdown.js +1 -1
  181. package/dist/cjs/editor/extensions/mention/MentionDropdown.js.map +1 -1
  182. package/dist/cjs/editor/extensions/mention/MentionExtension.js +1 -1
  183. package/dist/cjs/editor/extensions/mention/MentionExtension.js.map +1 -1
  184. package/dist/cjs/icons/Arrows/Chevron/ChevronUp.js +1 -1
  185. package/dist/cjs/icons/Arrows/Chevron/ChevronUp.js.map +1 -1
  186. package/dist/cjs/index.js +1 -1
  187. package/dist/esm/assets/icons/ManifestGlass.svg.js +6 -0
  188. package/dist/esm/assets/icons/ManifestGlass.svg.js.map +1 -0
  189. package/dist/esm/assets/icons/playOutline.svg.js +6 -0
  190. package/dist/esm/assets/icons/playOutline.svg.js.map +1 -0
  191. package/dist/esm/components/BikGiftedChat/Bubble/Bubble.js +59 -61
  192. package/dist/esm/components/BikGiftedChat/Bubble/Bubble.js.map +1 -1
  193. package/dist/esm/components/BikGiftedChat/GiftedChat/Day.d.ts +0 -6
  194. package/dist/esm/components/BikGiftedChat/GiftedChat/Day.js +88 -124
  195. package/dist/esm/components/BikGiftedChat/GiftedChat/Day.js.map +1 -1
  196. package/dist/esm/components/BikGiftedChat/GiftedChat/GiftedChat.js +128 -225
  197. package/dist/esm/components/BikGiftedChat/GiftedChat/GiftedChat.js.map +1 -1
  198. package/dist/esm/components/BikGiftedChat/GiftedChat/types.d.ts +2 -6
  199. package/dist/esm/components/BikGiftedChat/GiftedChat/types.js.map +1 -1
  200. package/dist/esm/components/TypographyStyle.d.ts +0 -8
  201. package/dist/esm/components/TypographyStyle.js +40 -63
  202. package/dist/esm/components/TypographyStyle.js.map +1 -1
  203. package/dist/esm/components/agent-builder/AgentBuilder.d.ts +18 -0
  204. package/dist/esm/components/agent-builder/AgentBuilder.js +203 -0
  205. package/dist/esm/components/agent-builder/AgentBuilder.js.map +1 -0
  206. package/dist/esm/components/agent-builder/AgentBuilder.model.d.ts +107 -0
  207. package/dist/esm/components/agent-builder/AgentBuilder.styled.d.ts +149 -0
  208. package/dist/esm/components/agent-builder/AgentBuilder.styled.js +463 -0
  209. package/dist/esm/components/agent-builder/AgentBuilder.styled.js.map +1 -0
  210. package/dist/esm/components/agent-builder/components/AgentBuilderFooter.d.ts +10 -0
  211. package/dist/esm/components/agent-builder/components/AgentBuilderFooter.js +70 -0
  212. package/dist/esm/components/agent-builder/components/AgentBuilderFooter.js.map +1 -0
  213. package/dist/esm/components/agent-builder/components/AgentBuilderTopBar.d.ts +12 -0
  214. package/dist/esm/components/agent-builder/components/AgentBuilderTopBar.js +73 -0
  215. package/dist/esm/components/agent-builder/components/AgentBuilderTopBar.js.map +1 -0
  216. package/dist/esm/components/agent-builder/components/AiTextArea.d.ts +14 -0
  217. package/dist/esm/components/agent-builder/components/AiTextArea.js +44 -0
  218. package/dist/esm/components/agent-builder/components/AiTextArea.js.map +1 -0
  219. package/dist/esm/components/agent-builder/components/CreateSubAgentPanel.d.ts +25 -0
  220. package/dist/esm/components/agent-builder/components/CreateSubAgentPanel.js +207 -0
  221. package/dist/esm/components/agent-builder/components/CreateSubAgentPanel.js.map +1 -0
  222. package/dist/esm/components/agent-builder/components/DiscardModal.d.ts +18 -0
  223. package/dist/esm/components/agent-builder/components/DiscardModal.js +54 -0
  224. package/dist/esm/components/agent-builder/components/DiscardModal.js.map +1 -0
  225. package/dist/esm/components/agent-builder/components/GoLiveModal.d.ts +18 -0
  226. package/dist/esm/components/agent-builder/components/GoLiveModal.js +73 -0
  227. package/dist/esm/components/agent-builder/components/GoLiveModal.js.map +1 -0
  228. package/dist/esm/components/agent-builder/components/MentionEditor.d.ts +33 -0
  229. package/dist/esm/components/agent-builder/components/MentionEditor.js +99 -0
  230. package/dist/esm/components/agent-builder/components/MentionEditor.js.map +1 -0
  231. package/dist/esm/components/agent-builder/components/MentionField.d.ts +19 -0
  232. package/dist/esm/components/agent-builder/components/MentionField.js +61 -0
  233. package/dist/esm/components/agent-builder/components/MentionField.js.map +1 -0
  234. package/dist/esm/components/agent-builder/components/MentionPicker.d.ts +12 -0
  235. package/dist/esm/components/agent-builder/components/MentionPicker.js +167 -0
  236. package/dist/esm/components/agent-builder/components/MentionPicker.js.map +1 -0
  237. package/dist/esm/components/agent-builder/components/SelectableListSection.d.ts +36 -0
  238. package/dist/esm/components/agent-builder/components/SelectableListSection.js +138 -0
  239. package/dist/esm/components/agent-builder/components/SelectableListSection.js.map +1 -0
  240. package/dist/esm/components/agent-builder/components/StepRail.d.ts +2 -0
  241. package/dist/esm/components/agent-builder/components/StepRail.js +35 -0
  242. package/dist/esm/components/agent-builder/components/StepRail.js.map +1 -0
  243. package/dist/esm/components/agent-builder/components/StepSectionHeader.d.ts +7 -0
  244. package/dist/esm/components/agent-builder/components/StepSectionHeader.js +15 -0
  245. package/dist/esm/components/agent-builder/components/StepSectionHeader.js.map +1 -0
  246. package/dist/esm/components/agent-builder/components/UndoToast.d.ts +7 -0
  247. package/dist/esm/components/agent-builder/components/UndoToast.js +27 -0
  248. package/dist/esm/components/agent-builder/components/UndoToast.js.map +1 -0
  249. package/dist/esm/components/agent-builder/constants/charLimits.d.ts +21 -0
  250. package/dist/esm/components/agent-builder/constants/charLimits.js +18 -0
  251. package/dist/esm/components/agent-builder/constants/charLimits.js.map +1 -0
  252. package/dist/esm/components/agent-builder/constants/editorStyle.d.ts +8 -0
  253. package/dist/esm/components/agent-builder/constants/editorStyle.js +10 -0
  254. package/dist/esm/components/agent-builder/constants/editorStyle.js.map +1 -0
  255. package/dist/esm/components/agent-builder/constants/steps.d.ts +13 -0
  256. package/dist/esm/components/agent-builder/constants/steps.js +32 -0
  257. package/dist/esm/components/agent-builder/constants/steps.js.map +1 -0
  258. package/dist/esm/components/agent-builder/context/AgentBuilderContext.d.ts +91 -0
  259. package/dist/esm/components/agent-builder/context/AgentBuilderContext.js +166 -0
  260. package/dist/esm/components/agent-builder/context/AgentBuilderContext.js.map +1 -0
  261. package/dist/esm/components/agent-builder/hooks/useAgentDraft.d.ts +24 -0
  262. package/dist/esm/components/agent-builder/hooks/useAgentDraft.js +27 -0
  263. package/dist/esm/components/agent-builder/hooks/useAgentDraft.js.map +1 -0
  264. package/dist/esm/components/agent-builder/index.d.ts +7 -0
  265. package/dist/esm/components/agent-builder/steps/Step1About.d.ts +2 -0
  266. package/dist/esm/components/agent-builder/steps/Step1About.js +43 -0
  267. package/dist/esm/components/agent-builder/steps/Step1About.js.map +1 -0
  268. package/dist/esm/components/agent-builder/steps/Step2WhenItStepsIn.d.ts +2 -0
  269. package/dist/esm/components/agent-builder/steps/Step2WhenItStepsIn.js +148 -0
  270. package/dist/esm/components/agent-builder/steps/Step2WhenItStepsIn.js.map +1 -0
  271. package/dist/esm/components/agent-builder/steps/Step3HowItResponds.d.ts +2 -0
  272. package/dist/esm/components/agent-builder/steps/Step3HowItResponds.js +193 -0
  273. package/dist/esm/components/agent-builder/steps/Step3HowItResponds.js.map +1 -0
  274. package/dist/esm/components/agent-builder/steps/Step4HandoverRules.d.ts +2 -0
  275. package/dist/esm/components/agent-builder/steps/Step4HandoverRules.js +83 -0
  276. package/dist/esm/components/agent-builder/steps/Step4HandoverRules.js.map +1 -0
  277. package/dist/esm/components/agent-builder/utils/mentionSerialization.d.ts +61 -0
  278. package/dist/esm/components/agent-builder/utils/mentionSerialization.js +96 -0
  279. package/dist/esm/components/agent-builder/utils/mentionSerialization.js.map +1 -0
  280. package/dist/esm/components/agent-listing/AgentListing.d.ts +18 -0
  281. package/dist/esm/components/agent-listing/AgentListing.js +141 -0
  282. package/dist/esm/components/agent-listing/AgentListing.js.map +1 -0
  283. package/dist/esm/components/agent-listing/AgentListing.model.d.ts +69 -0
  284. package/dist/esm/components/agent-listing/AgentListing.styled.d.ts +56 -0
  285. package/dist/esm/components/agent-listing/AgentListing.styled.js +145 -0
  286. package/dist/esm/components/agent-listing/AgentListing.styled.js.map +1 -0
  287. package/dist/esm/components/agent-listing/AgentListingFilters.d.ts +16 -0
  288. package/dist/esm/components/agent-listing/AgentListingFilters.js +81 -0
  289. package/dist/esm/components/agent-listing/AgentListingFilters.js.map +1 -0
  290. package/dist/esm/components/agent-listing/AgentListingHeader.d.ts +8 -0
  291. package/dist/esm/components/agent-listing/AgentListingHeader.js +40 -0
  292. package/dist/esm/components/agent-listing/AgentListingHeader.js.map +1 -0
  293. package/dist/esm/components/agent-listing/AgentTable.d.ts +10 -0
  294. package/dist/esm/components/agent-listing/AgentTable.js +33 -0
  295. package/dist/esm/components/agent-listing/AgentTable.js.map +1 -0
  296. package/dist/esm/components/agent-listing/AgentTableRow.d.ts +10 -0
  297. package/dist/esm/components/agent-listing/AgentTableRow.js +88 -0
  298. package/dist/esm/components/agent-listing/AgentTableRow.js.map +1 -0
  299. package/dist/esm/components/agent-listing/index.d.ts +2 -0
  300. package/dist/esm/components/avatar/Avatar.d.ts +1 -2
  301. package/dist/esm/components/avatar/Avatar.js +73 -51
  302. package/dist/esm/components/avatar/Avatar.js.map +1 -1
  303. package/dist/esm/components/avatar/Avatar.styled.js +8 -8
  304. package/dist/esm/components/avatar/Avatar.styled.js.map +1 -1
  305. package/dist/esm/components/avatar/AvatarHelper.d.ts +4 -5
  306. package/dist/esm/components/avatar/AvatarHelper.js +4 -4
  307. package/dist/esm/components/avatar/AvatarHelper.js.map +1 -1
  308. package/dist/esm/components/bik-layout/BikSidebar.js.map +1 -1
  309. package/dist/esm/components/bik-layout/CommonStyles.js +1 -1
  310. package/dist/esm/components/bik-layout/CommonStyles.js.map +1 -1
  311. package/dist/esm/components/bik-layout/index.d.ts +0 -2
  312. package/dist/esm/components/button/Button.js +31 -31
  313. package/dist/esm/components/button/Button.js.map +1 -1
  314. package/dist/esm/components/button/Button.styled.d.ts +1 -1
  315. package/dist/esm/components/button/Button.styled.js +20 -20
  316. package/dist/esm/components/button/Button.styled.js.map +1 -1
  317. package/dist/esm/components/button/model.d.ts +3 -3
  318. package/dist/esm/components/button/themes.d.ts +2 -2
  319. package/dist/esm/components/button/themes.js +17 -31
  320. package/dist/esm/components/button/themes.js.map +1 -1
  321. package/dist/esm/components/checkBox/CheckBox.d.ts +1 -2
  322. package/dist/esm/components/checkBox/CheckBox.js +87 -124
  323. package/dist/esm/components/checkBox/CheckBox.js.map +1 -1
  324. package/dist/esm/components/checkBox/CheckBox.styled.d.ts +1 -1
  325. package/dist/esm/components/checkBox/CheckBox.styled.js +9 -10
  326. package/dist/esm/components/checkBox/CheckBox.styled.js.map +1 -1
  327. package/dist/esm/components/country-code-picker/CountryCodePicker.d.ts +1 -1
  328. package/dist/esm/components/country-code-picker/CountryCodePicker.js.map +1 -1
  329. package/dist/esm/components/country-code-picker/CountryPicker.d.ts +1 -1
  330. package/dist/esm/components/country-code-picker/CountryPicker.js.map +1 -1
  331. package/dist/esm/components/dropdown/Dropdown.js +67 -67
  332. package/dist/esm/components/dropdown/Dropdown.js.map +1 -1
  333. package/dist/esm/components/dropdown/DropdownPopover/index.js +61 -74
  334. package/dist/esm/components/dropdown/DropdownPopover/index.js.map +1 -1
  335. package/dist/esm/components/dropdown/OpenedDropdown/components/OpennedDropdown.js +174 -183
  336. package/dist/esm/components/dropdown/OpenedDropdown/components/OpennedDropdown.js.map +1 -1
  337. package/dist/esm/components/dropdown/OpenedDropdown/components/OpennedDropdown.styled.d.ts +1 -1
  338. package/dist/esm/components/dropdown/OpenedDropdown/components/OpennedDropdown.styled.js +4 -5
  339. package/dist/esm/components/dropdown/OpenedDropdown/components/OpennedDropdown.styled.js.map +1 -1
  340. package/dist/esm/components/dropdown/OpenedDropdown/components/description/Description.d.ts +1 -1
  341. package/dist/esm/components/dropdown/OpenedDropdown/components/description/Description.js.map +1 -1
  342. package/dist/esm/components/dropdown/OpenedDropdown/components/description/Description.styled.d.ts +1 -1
  343. package/dist/esm/components/dropdown/OpenedDropdown/components/description/Description.styled.js.map +1 -1
  344. package/dist/esm/components/dropdown/OpenedDropdown/components/menu/FreeFormMenu.d.ts +1 -3
  345. package/dist/esm/components/dropdown/OpenedDropdown/components/menu/FreeFormMenu.js +20 -29
  346. package/dist/esm/components/dropdown/OpenedDropdown/components/menu/FreeFormMenu.js.map +1 -1
  347. package/dist/esm/components/dropdown/OpenedDropdown/components/menu/MenuItem.d.ts +1 -3
  348. package/dist/esm/components/dropdown/OpenedDropdown/components/menu/MenuItem.js +87 -93
  349. package/dist/esm/components/dropdown/OpenedDropdown/components/menu/MenuItem.js.map +1 -1
  350. package/dist/esm/components/dropdown/OpenedDropdown/components/menu/MenuList.d.ts +1 -3
  351. package/dist/esm/components/dropdown/OpenedDropdown/components/menu/MenuList.js +61 -68
  352. package/dist/esm/components/dropdown/OpenedDropdown/components/menu/MenuList.js.map +1 -1
  353. package/dist/esm/components/dropdown/OpenedDropdown/components/menu/MenuList.styled.d.ts +1 -2
  354. package/dist/esm/components/dropdown/OpenedDropdown/components/menu/MenuList.styled.js +2 -7
  355. package/dist/esm/components/dropdown/OpenedDropdown/components/menu/MenuList.styled.js.map +1 -1
  356. package/dist/esm/components/dropdown/OpenedDropdown/components/menu/SelectAllMenu.d.ts +1 -3
  357. package/dist/esm/components/dropdown/OpenedDropdown/components/menu/SelectAllMenu.js +10 -18
  358. package/dist/esm/components/dropdown/OpenedDropdown/components/menu/SelectAllMenu.js.map +1 -1
  359. package/dist/esm/components/dropdown/OpenedDropdown/components/searchbox/SearchBox.d.ts +1 -1
  360. package/dist/esm/components/dropdown/OpenedDropdown/components/searchbox/SearchBox.js +18 -18
  361. package/dist/esm/components/dropdown/OpenedDropdown/components/searchbox/SearchBox.js.map +1 -1
  362. package/dist/esm/components/dropdown/OpenedDropdown/components/searchbox/SearchZeroState.d.ts +0 -1
  363. package/dist/esm/components/dropdown/OpenedDropdown/components/searchbox/SearchZeroState.js +17 -43
  364. package/dist/esm/components/dropdown/OpenedDropdown/components/searchbox/SearchZeroState.js.map +1 -1
  365. package/dist/esm/components/dropdown/OpenedDropdown/utils/iterationOnOptions.d.ts +0 -2
  366. package/dist/esm/components/dropdown/hooks/useDropdown.d.ts +0 -2
  367. package/dist/esm/components/dropdown/type.d.ts +1 -6
  368. package/dist/esm/components/dropdown-button/DropdownButton.d.ts +1 -3
  369. package/dist/esm/components/dropdown-button/DropdownButton.js +17 -71
  370. package/dist/esm/components/dropdown-button/DropdownButton.js.map +1 -1
  371. package/dist/esm/components/dropdown-button/DropdownButton.style.d.ts +2 -9
  372. package/dist/esm/components/dropdown-button/DropdownButton.style.js +9 -35
  373. package/dist/esm/components/dropdown-button/DropdownButton.style.js.map +1 -1
  374. package/dist/esm/components/fab-menu/FABMenu.d.ts +1 -1
  375. package/dist/esm/components/fab-menu/FABMenu.js.map +1 -1
  376. package/dist/esm/components/icon-button/IconButton.js +32 -36
  377. package/dist/esm/components/icon-button/IconButton.js.map +1 -1
  378. package/dist/esm/components/icon-button/IconButton.styled.d.ts +1 -3
  379. package/dist/esm/components/icon-button/IconButton.styled.js +14 -20
  380. package/dist/esm/components/icon-button/IconButton.styled.js.map +1 -1
  381. package/dist/esm/components/icon-button/model.d.ts +1 -12
  382. package/dist/esm/components/icon-button/theme.js +10 -12
  383. package/dist/esm/components/icon-button/theme.js.map +1 -1
  384. package/dist/esm/components/input/Input.js +115 -119
  385. package/dist/esm/components/input/Input.js.map +1 -1
  386. package/dist/esm/components/input/Input.model.d.ts +3 -2
  387. package/dist/esm/components/input/Input.styled.d.ts +1 -8
  388. package/dist/esm/components/input/Input.styled.js +22 -34
  389. package/dist/esm/components/input/Input.styled.js.map +1 -1
  390. package/dist/esm/components/input-with-vars/InputWithVariables.d.ts +2 -0
  391. package/dist/esm/components/input-with-vars/InputWithVariables.js +81 -75
  392. package/dist/esm/components/input-with-vars/InputWithVariables.js.map +1 -1
  393. package/dist/esm/components/list-item/List.model.d.ts +1 -2
  394. package/dist/esm/components/list-item/ListItem.js +38 -40
  395. package/dist/esm/components/list-item/ListItem.js.map +1 -1
  396. package/dist/esm/components/list-item/ListItem.styled.d.ts +1 -2
  397. package/dist/esm/components/list-item/ListItem.styled.js +8 -8
  398. package/dist/esm/components/list-item/ListItem.styled.js.map +1 -1
  399. package/dist/esm/components/list-item/themes.d.ts +2 -2
  400. package/dist/esm/components/list-item/themes.js +6 -20
  401. package/dist/esm/components/list-item/themes.js.map +1 -1
  402. package/dist/esm/components/multi-level-dropdown/GroupedMenuList.d.ts +0 -1
  403. package/dist/esm/components/multi-level-dropdown/GroupedMenuList.js +28 -30
  404. package/dist/esm/components/multi-level-dropdown/GroupedMenuList.js.map +1 -1
  405. package/dist/esm/components/multi-level-dropdown/MenuItem.d.ts +0 -1
  406. package/dist/esm/components/multi-level-dropdown/MenuItem.js +54 -57
  407. package/dist/esm/components/multi-level-dropdown/MenuItem.js.map +1 -1
  408. package/dist/esm/components/multi-level-dropdown/MenuList.d.ts +0 -1
  409. package/dist/esm/components/multi-level-dropdown/MenuList.js +42 -46
  410. package/dist/esm/components/multi-level-dropdown/MenuList.js.map +1 -1
  411. package/dist/esm/components/multi-level-dropdown/MultiLevelDropdown.js +59 -95
  412. package/dist/esm/components/multi-level-dropdown/MultiLevelDropdown.js.map +1 -1
  413. package/dist/esm/components/multi-level-dropdown/MultiLevelDropdown.styled.d.ts +3 -13
  414. package/dist/esm/components/multi-level-dropdown/MultiLevelDropdown.styled.js +41 -50
  415. package/dist/esm/components/multi-level-dropdown/MultiLevelDropdown.styled.js.map +1 -1
  416. package/dist/esm/components/multi-level-dropdown/type.d.ts +0 -1
  417. package/dist/esm/components/tag/Tag.d.ts +1 -1
  418. package/dist/esm/components/tag/Tag.js +18 -22
  419. package/dist/esm/components/tag/Tag.js.map +1 -1
  420. package/dist/esm/components/tag/Tag.styled.d.ts +1 -3
  421. package/dist/esm/components/tag/Tag.styled.js +7 -7
  422. package/dist/esm/components/tag/Tag.styled.js.map +1 -1
  423. package/dist/esm/components/tag/model.d.ts +1 -5
  424. package/dist/esm/components/tag/model.js.map +1 -1
  425. package/dist/esm/components/variable-picker-v3/Content.js +69 -69
  426. package/dist/esm/components/variable-picker-v3/Content.js.map +1 -1
  427. package/dist/esm/components/variable-picker-v3/model.d.ts +2 -0
  428. package/dist/esm/components/variable-picker-v3/model.js.map +1 -1
  429. package/dist/esm/components/whats-new/WhatsNew.d.ts +0 -2
  430. package/dist/esm/components/whats-new/WhatsNew.js +19 -23
  431. package/dist/esm/components/whats-new/WhatsNew.js.map +1 -1
  432. package/dist/esm/components/whats-new/WhatsNew.types.d.ts +0 -2
  433. package/dist/esm/components/whats-new/WhatsNewButton.js +38 -34
  434. package/dist/esm/components/whats-new/WhatsNewButton.js.map +1 -1
  435. package/dist/esm/components/whats-new/WhatsNewPanel.js.map +1 -1
  436. package/dist/esm/constants/Theme.d.ts +0 -36
  437. package/dist/esm/constants/Theme.js +1 -21
  438. package/dist/esm/constants/Theme.js.map +1 -1
  439. package/dist/esm/editor/BikEditor.js +19 -18
  440. package/dist/esm/editor/BikEditor.js.map +1 -1
  441. package/dist/esm/editor/BikEditor.styles.js +13 -0
  442. package/dist/esm/editor/BikEditor.styles.js.map +1 -1
  443. package/dist/esm/editor/BikEditor.types.d.ts +14 -0
  444. package/dist/esm/editor/BikEditor.types.js.map +1 -1
  445. package/dist/esm/editor/BikEditor.utils.js +76 -75
  446. package/dist/esm/editor/BikEditor.utils.js.map +1 -1
  447. package/dist/esm/editor/extensions/buildExtensions.d.ts +1 -0
  448. package/dist/esm/editor/extensions/buildExtensions.js +31 -29
  449. package/dist/esm/editor/extensions/buildExtensions.js.map +1 -1
  450. package/dist/esm/editor/extensions/editorDropdown.styles.d.ts +2 -8
  451. package/dist/esm/editor/extensions/editorDropdown.styles.js +22 -18
  452. package/dist/esm/editor/extensions/editorDropdown.styles.js.map +1 -1
  453. package/dist/esm/editor/extensions/mention/MentionDropdown.js +34 -28
  454. package/dist/esm/editor/extensions/mention/MentionDropdown.js.map +1 -1
  455. package/dist/esm/editor/extensions/mention/MentionExtension.d.ts +2 -2
  456. package/dist/esm/editor/extensions/mention/MentionExtension.js +81 -60
  457. package/dist/esm/editor/extensions/mention/MentionExtension.js.map +1 -1
  458. package/dist/esm/icons/Arrows/Chevron/ChevronUp.d.ts +2 -1
  459. package/dist/esm/icons/Arrows/Chevron/ChevronUp.js +28 -24
  460. package/dist/esm/icons/Arrows/Chevron/ChevronUp.js.map +1 -1
  461. package/dist/esm/icons/index.d.ts +24 -24
  462. package/dist/esm/index.d.ts +2 -1
  463. package/dist/esm/index.js +806 -798
  464. package/dist/esm/index.js.map +1 -1
  465. package/package.json +3 -2
  466. package/dist/cjs/components/bik-layout/BikSidebarV2/BikSidebarV2.js +0 -2
  467. package/dist/cjs/components/bik-layout/BikSidebarV2/BikSidebarV2.js.map +0 -1
  468. package/dist/cjs/components/bik-layout/BikSidebarV2/SidebarV2Popup.js +0 -2
  469. package/dist/cjs/components/bik-layout/BikSidebarV2/SidebarV2Popup.js.map +0 -1
  470. package/dist/cjs/components/bik-layout/BikSidebarV2/SidebarV2Styles.js +0 -294
  471. package/dist/cjs/components/bik-layout/BikSidebarV2/SidebarV2Styles.js.map +0 -1
  472. package/dist/cjs/components/bik-layout/BikSidebarV2/SimpleSidebarV2.js +0 -2
  473. package/dist/cjs/components/bik-layout/BikSidebarV2/SimpleSidebarV2.js.map +0 -1
  474. package/dist/cjs/components/dual-icon-button/DualIconButton.js +0 -2
  475. package/dist/cjs/components/dual-icon-button/DualIconButton.js.map +0 -1
  476. package/dist/cjs/components/dual-icon-button/DualIconButton.styled.js +0 -33
  477. package/dist/cjs/components/dual-icon-button/DualIconButton.styled.js.map +0 -1
  478. package/dist/esm/components/bik-layout/BikSidebarV2/BikSidebarV2.d.ts +0 -33
  479. package/dist/esm/components/bik-layout/BikSidebarV2/BikSidebarV2.js +0 -272
  480. package/dist/esm/components/bik-layout/BikSidebarV2/BikSidebarV2.js.map +0 -1
  481. package/dist/esm/components/bik-layout/BikSidebarV2/SidebarV2.model.d.ts +0 -27
  482. package/dist/esm/components/bik-layout/BikSidebarV2/SidebarV2Popup.d.ts +0 -12
  483. package/dist/esm/components/bik-layout/BikSidebarV2/SidebarV2Popup.js +0 -53
  484. package/dist/esm/components/bik-layout/BikSidebarV2/SidebarV2Popup.js.map +0 -1
  485. package/dist/esm/components/bik-layout/BikSidebarV2/SidebarV2Styles.d.ts +0 -44
  486. package/dist/esm/components/bik-layout/BikSidebarV2/SidebarV2Styles.js +0 -310
  487. package/dist/esm/components/bik-layout/BikSidebarV2/SidebarV2Styles.js.map +0 -1
  488. package/dist/esm/components/bik-layout/BikSidebarV2/SimpleSidebarV2.d.ts +0 -2
  489. package/dist/esm/components/bik-layout/BikSidebarV2/SimpleSidebarV2.js +0 -107
  490. package/dist/esm/components/bik-layout/BikSidebarV2/SimpleSidebarV2.js.map +0 -1
  491. package/dist/esm/components/dual-icon-button/DualIconButton.d.ts +0 -3
  492. package/dist/esm/components/dual-icon-button/DualIconButton.js +0 -53
  493. package/dist/esm/components/dual-icon-button/DualIconButton.js.map +0 -1
  494. package/dist/esm/components/dual-icon-button/DualIconButton.styled.d.ts +0 -7
  495. package/dist/esm/components/dual-icon-button/DualIconButton.styled.js +0 -40
  496. package/dist/esm/components/dual-icon-button/DualIconButton.styled.js.map +0 -1
  497. package/dist/esm/components/dual-icon-button/index.d.ts +0 -2
  498. package/dist/esm/components/dual-icon-button/model.d.ts +0 -12
@@ -0,0 +1 @@
1
+ {"version":3,"file":"CreateSubAgentPanel.js","sources":["../../../../../src/components/agent-builder/components/CreateSubAgentPanel.tsx"],"sourcesContent":["import CrossIcon from '@src/assets/icons/cross.svg';\nimport React, { useCallback, useMemo, useRef, useState } from 'react';\nimport { Button } from '@src/components/button';\nimport { SingleOption } from '@src/components/dropdown/type';\nimport { Input } from '@src/components/input';\nimport { Toaster } from '@src/components/toaster';\nimport { BodySecondary, TitleRegular } from '@src/components/TypographyStyle';\nimport { COLORS } from '@src/constants/Theme';\nimport { AgentTool, SubAgentDraft } from '../AgentBuilder.model';\nimport {\n\tFieldActionRow,\n\tSubAgentCloseButton,\n\tSubAgentPanel,\n\tSubAgentPanelBody,\n\tSubAgentPanelFooter,\n\tSubAgentPanelHeader,\n\tSubAgentPanelHeaderText,\n\tSubAgentScrim,\n} from '../AgentBuilder.styled';\nimport { AGENT_CHAR_LIMITS } from '../constants/charLimits';\nimport { buildAgentMentionItems } from '../utils/mentionSerialization';\nimport { MentionEditor } from './MentionEditor';\nimport { SelectableItem, SelectableListSection } from './SelectableListSection';\n\ntype InsertFn = (kind: 'tool' | 'subagent', id: string, label?: string) => void;\n\ninterface CreateSubAgentPanelProps {\n\tonClose: () => void;\n\t/** Persist the draft. The drawer shows a loader while the returned promise is pending. */\n\tonSave: (draft: SubAgentDraft) => void | Promise<void>;\n\tavailableTools: AgentTool[];\n\t/** Optional \"Improve with AI\" for instructions / guardrails. Omit to hide the buttons. */\n\tonImprove?: (\n\t\tkind: 'instructions' | 'guardrail',\n\t\ttext: string,\n\t) => Promise<string>;\n\t/** Header title — \"Create sub-agent\" (default) or \"Edit sub-agent\". */\n\ttitle?: string;\n\t/** Initial values, e.g. when configuring an existing sub-agent. */\n\tinitial?: SubAgentDraft;\n\t/** Tool-source fallback label for chips (host app). */\n\tappLabel?: string;\n}\n\n/**\n * Right-side drawer for creating / editing a sub-agent (name, instructions,\n * guardrails, tools). Instructions & Guardrails are `@`-mention editors (tools\n * only — sub-agents can't nest); adding a tool from the list inserts it at the\n * last-focused field's cursor. Mount it fresh per open (key it) so `initial`\n * seeds the draft.\n */\nexport const CreateSubAgentPanel: React.FC<CreateSubAgentPanelProps> = ({\n\tonClose,\n\tonSave,\n\tavailableTools,\n\tonImprove,\n\ttitle = 'Create sub-agent',\n\tinitial,\n\tappLabel = 'Manifest',\n}) => {\n\tconst [name, setName] = useState(initial?.name ?? '');\n\tconst [instructions, setInstructions] = useState(initial?.instructions ?? '');\n\tconst [guardrail, setGuardrail] = useState(initial?.guardrail ?? '');\n\tconst [tools, setTools] = useState<string[]>(initial?.tools ?? []);\n\tconst [saving, setSaving] = useState(false);\n\t// Bumped to remount a field after its text is replaced (e.g. by Improve).\n\tconst [instrKey, setInstrKey] = useState(0);\n\tconst [guardKey, setGuardKey] = useState(0);\n\tconst [improving, setImproving] = useState<\n\t\t'instructions' | 'guardrail' | null\n\t>(null);\n\n\t// Tools-only mention list (sub-agents can't reference other sub-agents).\n\tconst mentionItems = useMemo(\n\t\t() => buildAgentMentionItems(availableTools, [], appLabel),\n\t\t[availableTools, appLabel],\n\t);\n\n\t// Per-field insert + focus registry, so the Tools list inserts a chip into the\n\t// last-focused editor at its cursor.\n\tconst insertersRef = useRef<\n\t\tPartial<Record<'instructions' | 'guardrail', InsertFn>>\n\t>({});\n\tconst lastFocusedRef = useRef<'instructions' | 'guardrail'>('instructions');\n\tconst registerInstr = useCallback((fn: InsertFn | null) => {\n\t\tinsertersRef.current.instructions = fn ?? undefined;\n\t}, []);\n\tconst registerGuard = useCallback((fn: InsertFn | null) => {\n\t\tinsertersRef.current.guardrail = fn ?? undefined;\n\t}, []);\n\tconst focusInstr = useCallback(() => {\n\t\tlastFocusedRef.current = 'instructions';\n\t}, []);\n\tconst focusGuard = useCallback(() => {\n\t\tlastFocusedRef.current = 'guardrail';\n\t}, []);\n\tconst addToolMention = useCallback(\n\t\t(kind: 'tool' | 'subagent', id: string) => {\n\t\t\tif (kind === 'tool') {\n\t\t\t\tsetTools((prev) => (prev.includes(id) ? prev : [...prev, id]));\n\t\t\t}\n\t\t},\n\t\t[],\n\t);\n\tconst insertToolAtCursor = useCallback((id: string) => {\n\t\tconst target =\n\t\t\tinsertersRef.current[lastFocusedRef.current] ??\n\t\t\tinsertersRef.current.instructions;\n\t\ttarget?.('tool', id);\n\t}, []);\n\n\t// Local undo toast for tool removal (drawer state isn't in AgentValue).\n\tconst [undo, setUndo] = useState<{ id: number; message: string } | null>(\n\t\tnull,\n\t);\n\tconst undoSnapshotRef = useRef<{\n\t\tinstructions: string;\n\t\tguardrail: string;\n\t\ttools: string[];\n\t} | null>(null);\n\tconst undoIdRef = useRef(0);\n\n\tconst removeTool = (id: string) => {\n\t\tconst tool = availableTools.find((t) => t.tool_id === id);\n\t\tconst token = tool ? `{{tool:${tool.function_key}}}` : null;\n\t\tconst strip = (text: string) => (token ? text.split(token).join('') : text);\n\t\tundoSnapshotRef.current = { instructions, guardrail, tools };\n\t\tsetInstructions((prev) => strip(prev));\n\t\tsetGuardrail((prev) => strip(prev));\n\t\tsetTools((prev) => prev.filter((t) => t !== id));\n\t\tsetInstrKey((k) => k + 1);\n\t\tsetGuardKey((k) => k + 1);\n\t\tundoIdRef.current += 1;\n\t\tsetUndo({\n\t\t\tid: undoIdRef.current,\n\t\t\tmessage: `Tool \"${tool?.displayName ?? 'Tool'}\" removed`,\n\t\t});\n\t};\n\n\tconst undoRemove = () => {\n\t\tconst snap = undoSnapshotRef.current;\n\t\tif (snap) {\n\t\t\tsetInstructions(snap.instructions);\n\t\t\tsetGuardrail(snap.guardrail);\n\t\t\tsetTools(snap.tools);\n\t\t\tsetInstrKey((k) => k + 1);\n\t\t\tsetGuardKey((k) => k + 1);\n\t\t\tundoSnapshotRef.current = null;\n\t\t}\n\t\tsetUndo(null);\n\t};\n\n\tconst canSave =\n\t\tname.trim().length > 0 &&\n\t\t(instructions.trim().length > 0 || guardrail.trim().length > 0);\n\n\tconst toolItems: SelectableItem[] = 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 ? { id, label: tool.displayName } : null;\n\t\t})\n\t\t.filter((x): x is SelectableItem => x !== null);\n\n\t// Offer all tools (re-add allowed); the chip list stays deduped.\n\tconst toolOptions: SingleOption[] = availableTools.map((t) => ({\n\t\tlabel: t.displayName,\n\t\tvalue: t.tool_id,\n\t\tsubText: t.description,\n\t}));\n\n\tconst handleSave = async () => {\n\t\tif (!canSave || saving) {\n\t\t\treturn;\n\t\t}\n\t\tconst result = onSave({\n\t\t\tname: name.trim(),\n\t\t\tinstructions,\n\t\t\tguardrail,\n\t\t\ttools,\n\t\t});\n\t\tif (result && typeof (result as Promise<void>).then === 'function') {\n\t\t\tsetSaving(true);\n\t\t\ttry {\n\t\t\t\tawait result;\n\t\t\t} finally {\n\t\t\t\tsetSaving(false);\n\t\t\t}\n\t\t}\n\t};\n\n\tconst handleImprove = async (kind: 'instructions' | 'guardrail') => {\n\t\tif (!onImprove || improving) {\n\t\t\treturn;\n\t\t}\n\t\tsetImproving(kind);\n\t\ttry {\n\t\t\tconst current = kind === 'instructions' ? instructions : guardrail;\n\t\t\tconst improved = await onImprove(kind, current);\n\t\t\tif (kind === 'instructions') {\n\t\t\t\tsetInstructions(improved);\n\t\t\t\tsetInstrKey((k) => k + 1);\n\t\t\t} else {\n\t\t\t\tsetGuardrail(improved);\n\t\t\t\tsetGuardKey((k) => k + 1);\n\t\t\t}\n\t\t} finally {\n\t\t\tsetImproving(null);\n\t\t}\n\t};\n\n\treturn (\n\t\t<>\n\t\t\t<SubAgentScrim onClick={onClose} data-test=\"subagent-scrim\" />\n\t\t\t<SubAgentPanel data-test=\"create-subagent-panel\">\n\t\t\t\t<SubAgentPanelHeader>\n\t\t\t\t\t<SubAgentPanelHeaderText>\n\t\t\t\t\t\t<TitleRegular color={COLORS.content.primary}>{title}</TitleRegular>\n\t\t\t\t\t\t<BodySecondary color={COLORS.content.secondary}>\n\t\t\t\t\t\t\tEach sub-agent handles one piece of the job. Use @ in the main\n\t\t\t\t\t\t\tinstructions to call them.\n\t\t\t\t\t\t</BodySecondary>\n\t\t\t\t\t</SubAgentPanelHeaderText>\n\t\t\t\t\t<SubAgentCloseButton onClick={onClose} aria-label=\"Close\">\n\t\t\t\t\t\t<CrossIcon\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.secondary}\n\t\t\t\t\t\t/>\n\t\t\t\t\t</SubAgentCloseButton>\n\t\t\t\t</SubAgentPanelHeader>\n\n\t\t\t\t<SubAgentPanelBody>\n\t\t\t\t\t<Input\n\t\t\t\t\t\tdata-test=\"subagent-name\"\n\t\t\t\t\t\tlabelText=\"Agent name\"\n\t\t\t\t\t\tlabelTextBold\n\t\t\t\t\t\tplaceholder=\"Enter agent name\"\n\t\t\t\t\t\tvalue={name}\n\t\t\t\t\t\tmaxCharLimit={AGENT_CHAR_LIMITS.name}\n\t\t\t\t\t\tmaxCharLimitPosition=\"TOP\"\n\t\t\t\t\t\tmaxCharStyle={{ fontSize: 12, lineHeight: '16px' }}\n\t\t\t\t\t\tonChangeText={setName}\n\t\t\t\t\t/>\n\n\t\t\t\t\t<MentionEditor\n\t\t\t\t\t\tdata-test=\"subagent-instructions\"\n\t\t\t\t\t\tlabel=\"Instructions\"\n\t\t\t\t\t\tvalue={instructions}\n\t\t\t\t\t\tonChange={setInstructions}\n\t\t\t\t\t\tmaxLength={AGENT_CHAR_LIMITS.instructions}\n\t\t\t\t\t\tplaceholder=\"Write the steps in plain English. Type @ to reference a tool.\"\n\t\t\t\t\t\tminHeight=\"160px\"\n\t\t\t\t\t\tresetKey={`instr-${instrKey}`}\n\t\t\t\t\t\tmentionItems={mentionItems}\n\t\t\t\t\t\ttools={availableTools}\n\t\t\t\t\t\tonMentionSelect={addToolMention}\n\t\t\t\t\t\tonFocus={focusInstr}\n\t\t\t\t\t\tregisterInsert={registerInstr}\n\t\t\t\t\t/>\n\n\t\t\t\t\t<MentionEditor\n\t\t\t\t\t\tdata-test=\"subagent-guardrail\"\n\t\t\t\t\t\tlabel=\"Guardrails\"\n\t\t\t\t\t\tvalue={guardrail}\n\t\t\t\t\t\tonChange={setGuardrail}\n\t\t\t\t\t\tmaxLength={AGENT_CHAR_LIMITS.guardrail}\n\t\t\t\t\t\tplaceholder=\"e.g. Never discuss competitor pricing. Type @ to reference a tool.\"\n\t\t\t\t\t\tminHeight=\"160px\"\n\t\t\t\t\t\tresetKey={`guard-${guardKey}`}\n\t\t\t\t\t\tmentionItems={mentionItems}\n\t\t\t\t\t\ttools={availableTools}\n\t\t\t\t\t\tonMentionSelect={addToolMention}\n\t\t\t\t\t\tonFocus={focusGuard}\n\t\t\t\t\t\tregisterInsert={registerGuard}\n\t\t\t\t\t/>\n\n\t\t\t\t\t<SelectableListSection\n\t\t\t\t\t\ttitle=\"Tools this agent can use\"\n\t\t\t\t\t\tdataTestPrefix=\"subagent-tools\"\n\t\t\t\t\t\titems={toolItems}\n\t\t\t\t\t\taddableOptions={toolOptions}\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\tinsertToolAtCursor(id);\n\t\t\t\t\t\t\tsetTools((prev) => (prev.includes(id) ? prev : [...prev, id]));\n\t\t\t\t\t\t}}\n\t\t\t\t\t\tonRemove={removeTool}\n\t\t\t\t\t/>\n\t\t\t\t</SubAgentPanelBody>\n\n\t\t\t\t<SubAgentPanelFooter>\n\t\t\t\t\t<Button\n\t\t\t\t\t\tdata-test=\"subagent-save\"\n\t\t\t\t\t\tbuttonType=\"primary\"\n\t\t\t\t\t\tsize=\"small\"\n\t\t\t\t\t\tbuttonText=\"Save\"\n\t\t\t\t\t\tdisabled={!canSave}\n\t\t\t\t\t\tisLoading={saving}\n\t\t\t\t\t\tonClick={handleSave}\n\t\t\t\t\t/>\n\t\t\t\t\t<Button\n\t\t\t\t\t\tdata-test=\"subagent-cancel\"\n\t\t\t\t\t\tbuttonType=\"secondary\"\n\t\t\t\t\t\tsize=\"small\"\n\t\t\t\t\t\tbuttonText=\"Cancel\"\n\t\t\t\t\t\tonClick={onClose}\n\t\t\t\t\t/>\n\t\t\t\t</SubAgentPanelFooter>\n\t\t\t</SubAgentPanel>\n\n\t\t\t{undo && (\n\t\t\t\t<Toaster\n\t\t\t\t\tkey={undo.id}\n\t\t\t\t\ttext={undo.message}\n\t\t\t\t\ttype=\"info\"\n\t\t\t\t\tposition=\"top-right\"\n\t\t\t\t\tautoClose={5000}\n\t\t\t\t\thideCloseButton\n\t\t\t\t\tbuttonProps={{\n\t\t\t\t\t\tbuttonText: 'Undo',\n\t\t\t\t\t\tshowButton: true,\n\t\t\t\t\t\tonButtonClick: () => {\n\t\t\t\t\t\t\tundoRemove();\n\t\t\t\t\t\t\treturn {} as Record<string, never>;\n\t\t\t\t\t\t},\n\t\t\t\t\t}}\n\t\t\t\t\tonCloseToast={() => setUndo(null)}\n\t\t\t\t/>\n\t\t\t)}\n\t\t</>\n\t);\n};\n"],"names":["CreateSubAgentPanel","onClose","onSave","availableTools","onImprove","title","initial","appLabel","name","setName","useState","instructions","setInstructions","guardrail","setGuardrail","tools","setTools","saving","setSaving","instrKey","setInstrKey","guardKey","setGuardKey","improving","setImproving","mentionItems","useMemo","buildAgentMentionItems","insertersRef","useRef","lastFocusedRef","registerInstr","useCallback","fn","registerGuard","focusInstr","focusGuard","addToolMention","kind","id","prev","insertToolAtCursor","undo","setUndo","undoSnapshotRef","undoIdRef","removeTool","tool","t","token","strip","text","k","undoRemove","snap","canSave","toolItems","x","toolOptions","handleSave","result","jsxs","Fragment","jsx","SubAgentScrim","SubAgentPanel","SubAgentPanelHeader","SubAgentPanelHeaderText","TitleRegular","COLORS","BodySecondary","SubAgentCloseButton","CrossIcon","SubAgentPanelBody","Input","AGENT_CHAR_LIMITS","MentionEditor","SelectableListSection","SubAgentPanelFooter","Button","Toaster"],"mappings":"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"}
@@ -0,0 +1,2 @@
1
+ "use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const t=require("react/jsx-runtime"),e=require("../../TypographyStyle.js"),r=require("../../../constants/Theme.js"),a=require("../AgentBuilder.styled.js"),c=require("../../modals/styledModal.js"),o=require("../../button/Button.js"),u=({open:n,onClose:s,onDiscard:d,onSaveDraft:i,isSaving:l})=>n?t.jsx(c.StyledModal,{"data-test":"agent-discard-modal",open:!0,onClose:s,width:"530px",children:t.jsxs(a.ModalBody,{style:{alignItems:"flex-start",textAlign:"left"},children:[t.jsx(e.TitleRegular,{color:r.COLORS.content.primary,children:"Save agent as draft?"}),t.jsx(e.BodySecondary,{color:r.COLORS.content.secondary,children:"Your progress will be lost if you leave. You can save as draft and come back to this later."}),t.jsxs(a.ModalActions,{children:[t.jsx(o.Button,{"data-test":"agent-discard-leave",buttonType:"secondary",size:"medium",matchParentWidth:!0,buttonText:"Discard",onClick:d}),t.jsx(o.Button,{"data-test":"agent-discard-save-draft",buttonType:"primary",size:"medium",matchParentWidth:!0,buttonText:"Save as draft",isLoading:l,onClick:i})]})]})}):null;exports.DiscardModal=u;
2
+ //# sourceMappingURL=DiscardModal.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"DiscardModal.js","sources":["../../../../../src/components/agent-builder/components/DiscardModal.tsx"],"sourcesContent":["import 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 } from '../AgentBuilder.styled';\n\ninterface DiscardModalProps {\n\topen: boolean;\n\t/** Dismiss the dialog and stay on the builder (X / outside click). */\n\tonClose: () => void;\n\t/** Leave without saving. */\n\tonDiscard: () => void;\n\t/** Save the draft, then leave. */\n\tonSaveDraft: () => void;\n\tisSaving?: boolean;\n}\n\n/**\n * \"Save agent as draft?\" confirmation shown when the user tries to leave the\n * builder (Back). Actions live inside the body (see GoLiveModal for why we avoid\n * StyledModal's footer). Content is left-aligned per design.\n */\nexport const DiscardModal: React.FC<DiscardModalProps> = ({\n\topen,\n\tonClose,\n\tonDiscard,\n\tonSaveDraft,\n\tisSaving,\n}) => {\n\tif (!open) {\n\t\treturn null;\n\t}\n\n\treturn (\n\t\t<StyledModal\n\t\t\tdata-test=\"agent-discard-modal\"\n\t\t\topen\n\t\t\tonClose={onClose}\n\t\t\twidth=\"530px\"\n\t\t>\n\t\t\t<ModalBody style={{ alignItems: 'flex-start', textAlign: 'left' }}>\n\t\t\t\t<TitleRegular color={COLORS.content.primary}>\n\t\t\t\t\tSave agent as draft?\n\t\t\t\t</TitleRegular>\n\t\t\t\t<BodySecondary color={COLORS.content.secondary}>\n\t\t\t\t\tYour progress will be lost if you leave. You can save as draft and\n\t\t\t\t\tcome back to this later.\n\t\t\t\t</BodySecondary>\n\n\t\t\t\t<ModalActions>\n\t\t\t\t\t<Button\n\t\t\t\t\t\tdata-test=\"agent-discard-leave\"\n\t\t\t\t\t\tbuttonType=\"secondary\"\n\t\t\t\t\t\tsize=\"medium\"\n\t\t\t\t\t\tmatchParentWidth\n\t\t\t\t\t\tbuttonText=\"Discard\"\n\t\t\t\t\t\tonClick={onDiscard}\n\t\t\t\t\t/>\n\t\t\t\t\t<Button\n\t\t\t\t\t\tdata-test=\"agent-discard-save-draft\"\n\t\t\t\t\t\tbuttonType=\"primary\"\n\t\t\t\t\t\tsize=\"medium\"\n\t\t\t\t\t\tmatchParentWidth\n\t\t\t\t\t\tbuttonText=\"Save as draft\"\n\t\t\t\t\t\tisLoading={isSaving}\n\t\t\t\t\t\tonClick={onSaveDraft}\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":["DiscardModal","open","onClose","onDiscard","onSaveDraft","isSaving","jsx","StyledModal","jsxs","ModalBody","TitleRegular","COLORS","BodySecondary","ModalActions","Button"],"mappings":"wTAuBaA,EAA4C,CAAC,CACzD,KAAAC,EACA,QAAAC,EACA,UAAAC,EACA,YAAAC,EACA,SAAAC,CACD,IACMJ,EAKJK,EAAAA,IAACC,EAAAA,YAAA,CACA,YAAU,sBACV,KAAI,GACJ,QAAAL,EACA,MAAM,QAEN,SAAAM,EAAAA,KAACC,aAAU,MAAO,CAAE,WAAY,aAAc,UAAW,QACxD,SAAA,CAAAH,MAACI,EAAAA,aAAA,CAAa,MAAOC,EAAAA,OAAO,QAAQ,QAAS,SAAA,uBAE7C,QACCC,EAAAA,cAAA,CAAc,MAAOD,EAAAA,OAAO,QAAQ,UAAW,SAAA,8FAGhD,SAECE,EAAAA,aAAA,CACA,SAAA,CAAAP,EAAAA,IAACQ,EAAAA,OAAA,CACA,YAAU,sBACV,WAAW,YACX,KAAK,SACL,iBAAgB,GAChB,WAAW,UACX,QAASX,CAAA,CAAA,EAEVG,EAAAA,IAACQ,EAAAA,OAAA,CACA,YAAU,2BACV,WAAW,UACX,KAAK,SACL,iBAAgB,GAChB,WAAW,gBACX,UAAWT,EACX,QAASD,CAAA,CAAA,CACV,CAAA,CACD,CAAA,CAAA,CACD,CAAA,CAAA,EAtCM"}
@@ -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\t// centralContainerStyles={{ padding: '24px' }}\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,QAG7B,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"),A=require("../constants/editorStyle.js"),d=require("../utils/mentionSerialization.js"),D=require("./MentionPicker.js"),L=require("../../../editor/BikEditor.js"),P=({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,action:q,...k})=>{const l=i.useRef(null),[O,S]=i.useState(c.length),h=i.useCallback((t,e,M)=>{const f=l.current;if(!f)return;const B=r.find(g=>String(g.id)===String(e)&&g.meta?.kind===t),H=M??B?.label??e;f.insertInlineContent(`${d.buildMentionHtml(String(e),H,t)}&nbsp;`)},[r]);i.useEffect(()=>{if(o)return o(h),()=>o(null)},[o,h]);const R=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:[O,"/",a]})]}),n.jsxs(u.AiTextAreaShell,{minHeight:C,"data-test":k["data-test"],children:[n.jsx(L.BikEditor,{ref:l,initialContent:R,placeholder:y,maxCharacters:a,minHeight:"120px",maxHeight:"320px",style:{border:"none"},editorStyle:A.AGENT_EDITOR_STYLE,onFocus:j,mentions:{agents:r,removeTriggerOnDismiss:!0,renderDropdown:t=>n.jsx(D.MentionPicker,{...t}),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),q]})]})};exports.MentionEditor=P;
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/** 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\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) => <MentionPicker {...props} />,\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","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":"+ZAuDaA,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,OAAAC,EACA,GAAGC,CACJ,IAAM,CACL,MAAMC,EAAYC,EAAAA,OAAqB,IAAI,EACrC,CAACC,EAAOC,CAAQ,EAAIC,EAAAA,SAASjB,EAAM,MAAM,EAEzCkB,EAASC,EAAAA,YACd,CAACC,EAAMC,EAAIC,IAAkB,CAC5B,MAAMC,EAASV,EAAU,QACzB,GAAI,CAACU,EACJ,OAED,MAAMC,EAAOlB,EAAa,KACxBmB,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,CAACd,CAAY,CAAA,EAGdsB,EAAAA,UAAU,IAAM,CACf,GAAKlB,EAGL,OAAAA,EAAeQ,CAAM,EACd,IAAMR,EAAe,IAAI,CACjC,EAAG,CAACA,EAAgBQ,CAAM,CAAC,EAG3B,MAAMW,EAAcC,EAAAA,QACnB,IAAMC,EAAAA,yBAAyB/B,EAAOM,CAAY,EAElD,CAACD,CAAQ,CAAA,EAGVuB,OAAAA,EAAAA,UACC,IAAMZ,EAAShB,EAAM,MAAM,EAE3B,CAACK,CAAQ,CAAA,SAIR2B,aAAA,CACA,SAAA,CAAAC,OAACC,EAAAA,cAAA,CACA,SAAA,CAAAC,MAACC,EAAAA,WAAA,CAAW,MAAOC,EAAAA,OAAO,QAAQ,QAAU,SAAAtC,EAAM,EAClDkC,EAAAA,KAACK,EAAAA,YAAA,CAAY,MAAOD,EAAAA,OAAO,QAAQ,UACjC,SAAA,CAAAtB,EAAM,IAAEb,CAAA,CAAA,CACV,CAAA,EACD,SAECqC,EAAAA,gBAAA,CAAgB,UAAAnC,EAAsB,YAAWQ,EAAK,WAAW,EACjE,SAAA,CAAAuB,EAAAA,IAACK,EAAAA,UAAA,CAEA,IAAK3B,EACL,eAAgBgB,EAChB,YAAA1B,EACA,cAAeD,EACf,UAAU,QACV,UAAU,QACV,MAAO,CAAE,OAAQ,MAAA,EACjB,YAAauC,EAAAA,mBACb,QAAAhC,EACA,SAAU,CACT,OAAQH,EACR,uBAAwB,GACxB,eAAiBoC,GAAUP,EAAAA,IAACQ,EAAAA,cAAA,CAAe,GAAGD,EAAO,EACrD,SAAWlB,GAAS,CACnB,MAAMJ,EAAQI,EAAK,MAChB,KACCJ,GACHZ,IAAkBY,EAAM,OAAOI,EAAK,EAAE,CAAC,CAEzC,CAAA,EAED,SAAWoB,GAAa,CACvB5B,EAAS4B,EAAS,cAAc,EAChC,MAAMC,EAAMhC,EAAU,SAAS,QAAA,GAAa,KAC5CZ,EAAS6C,EAAAA,wBAAwBD,EAAKtC,CAAK,CAAC,CAC7C,CAAA,EA1BKF,CAAA,EA4BLM,CAAA,CAAA,CACF,CAAA,EACD,CAEF"}
@@ -0,0 +1,2 @@
1
+ "use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const S=require("react/jsx-runtime"),a=require("react"),x=require("../context/AgentBuilderContext.js"),c=require("../utils/mentionSerialization.js"),A=require("./MentionEditor.js"),T=({fieldKey:t,label:b,placeholder:g,maxLength:M,minHeight:m,...p})=>{const{value:e,patch:o,availableTools:i,availableSubAgents:l,applicationType:u,mentionResetKey:d,registerMentionField:r,notifyMentionFocus:q}=x.useAgentBuilderContext(),v=a.useMemo(()=>c.buildAgentMentionItems(i,l,c.appTypeLabel(u)),[i,l,u]),C=a.useCallback(n=>r(t,n),[r,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 S.jsx(A.MentionEditor,{label:b,value:e[t]??"",onChange:n=>o({[t]:n}),maxLength:M,placeholder:g,minHeight:m,resetKey:`${e.id}:${t}:${d}`,mentionItems:v,tools:i,onMentionSelect:F,onFocus:()=>q(t),registerInsert:C,"data-test":p["data-test"]})};exports.MentionField=T;
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} = 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\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","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,CAAA,EACGC,yBAAA,EAEEC,EAAeC,EAAAA,QACpB,IACCC,EAAAA,uBACCT,EACAC,EACAS,EAAAA,aAAaR,CAAe,CAAA,EAE9B,CAACF,EAAgBC,EAAoBC,CAAe,CAAA,EAG/CS,EAAiBC,EAAAA,YACrBC,GACAT,EAAqBZ,EAAUqB,CAAE,EAClC,CAACT,EAAsBZ,CAAQ,CAAA,EAG1BsB,EAAkBF,EAAAA,YACvB,CAACG,EAA2BC,IAAe,CACtCD,IAAS,OACPjB,EAAM,MAAM,SAASkB,CAAE,GAC3BjB,EAAM,CAAE,MAAO,CAAC,GAAGD,EAAM,MAAOkB,CAAE,EAAG,EAE3BlB,EAAM,UAAU,SAASkB,CAAE,GACtCjB,EAAM,CAAE,UAAW,CAAC,GAAGD,EAAM,UAAWkB,CAAE,EAAG,CAE/C,EACA,CAACjB,EAAOD,EAAM,MAAOA,EAAM,SAAS,CAAA,EAGrC,OACCmB,EAAAA,IAACC,EAAAA,cAAA,CACA,MAAAzB,EACA,MAAQK,EAAMN,CAAQ,GAA4B,GAClD,SAAW2B,GAASpB,EAAM,CAAE,CAACP,CAAQ,EAAG2B,EAA6B,EACrE,UAAAxB,EACA,YAAAD,EACA,UAAAE,EACA,SAAU,GAAGE,EAAM,EAAE,IAAIN,CAAQ,IAAIW,CAAe,GACpD,aAAAI,EACA,MAAOP,EACP,gBAAAc,EACA,QAAS,IAAMT,EAAmBb,CAAQ,EAC1C,eAAAmB,EACA,YAAWd,EAAK,WAAW,CAAA,CAAA,CAG9B"}
@@ -0,0 +1,47 @@
1
+ "use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const a=require("react/jsx-runtime"),M=require("../../../assets/icons/chevronLeft.svg.js"),q=require("../../../assets/icons/chevronRight.svg.js"),o=require("react"),E=require("styled-components"),L=require("../../TypographyStyle.js"),r=require("../../../constants/Theme.js"),A=require("../utils/mentionSerialization.js"),B=t=>t&&typeof t=="object"&&"default"in t?t:{default:t},x=B(E),P=[{key:"tool",label:"Tools"},{key:"subagent",label:"Sub-agent"}],d=t=>t.meta,j=t=>d(t)?.plainLabel??t.label,T=({items:t,onSelect:k,registerKeyHandler:f})=>{const[I,y]=o.useState(null),[s,m]=o.useState(null),[v,p]=o.useState(0),i=o.useMemo(()=>t.filter(e=>d(e)?.kind==="tool"),[t]),b=o.useMemo(()=>t.filter(e=>d(e)?.kind==="subagent"),[t]),C=o.useMemo(()=>{const e=[];return i.forEach(n=>{const h=d(n)?.source??"other";e.includes(h)||e.push(h)}),e},[i]),g=o.useMemo(()=>P.filter(e=>e.key==="tool"?i.length>0:b.length>0),[i.length,b.length]),S=g.length===1?g[0].key:null,l=I??S,u=l?l==="subagent"?S?null:{title:"Sub-agent",onBack:()=>y(null)}:s?{title:A.toolSourceLabel(s),onBack:()=>m(null)}:S?null:{title:"Tools",onBack:()=>y(null)}:null,c=o.useMemo(()=>l?l==="subagent"?b.map(e=>({id:String(e.id),label:j(e),drillsIn:!1,onActivate:()=>k(e)})):s?i.filter(e=>(d(e)?.source??"other")===s).map(e=>({id:String(e.id),label:j(e),drillsIn:!1,onActivate:()=>k(e)})):C.map(e=>({id:e,label:A.toolSourceLabel(e),drillsIn:!0,onActivate:()=>m(e)})):g.map(e=>({id:e.key,label:e.label,drillsIn:!0,onActivate:()=>{y(e.key),m(null)}})),[l,g,s,i,b,C,k]);o.useEffect(()=>p(0),[l,s,t]);const R=o.useRef({rows:c,activeIndex:v,header:u});R.current={rows:c,activeIndex:v,header:u},o.useEffect(()=>{if(f)return f(e=>{const{rows:n,activeIndex:h,header:w}=R.current;switch(e.key){case"ArrowDown":return n.length&&p(O=>(O+1)%n.length),!0;case"ArrowUp":return n.length&&p(O=>(O+n.length-1)%n.length),!0;case"ArrowRight":case"Enter":return n[h]?.onActivate(),!0;case"ArrowLeft":return w?(w.onBack(),!0):!1;default:return!1}}),()=>f(null)},[f]);const $=l?c.length&&!c[0].drillsIn?"items":"sources":"categories";return a.jsxs(z,{className:`bik-mention-picker bik-mention-picker--${$}`,children:[u&&a.jsxs(_,{type:"button",onClick:u.onBack,style:{background:r.COLORS.surface.subdued},children:[a.jsx(M.default,{width:12,height:12}),a.jsxs(L.TitleSmall,{children:[" ",u.title]})]}),c.length===0?a.jsx(D,{children:l==="subagent"?"No sub-agents available":"No tools available"}):c.map((e,n)=>a.jsxs(N,{type:"button",$active:n===v,onMouseEnter:()=>p(n),onClick:e.onActivate,children:[a.jsx(L.BodySecondary,{color:r.COLORS.content.primary,children:e.label}),e.drillsIn&&a.jsx(q.default,{width:12,height:12})]},e.id))]})},z=x.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
+ `,N=x.default.button`
12
+ display: flex;
13
+ justify-content: space-between;
14
+ align-items: center;
15
+ gap: 2px;
16
+ width: 100%;
17
+ padding: 8px 10px;
18
+ height: 48px;
19
+ border: none;
20
+ border-bottom: 1px solid ${r.COLORS.stroke.primary};
21
+ background: ${t=>t.$active?r.COLORS.surface.subdued:"transparent"};
22
+ cursor: pointer;
23
+ text-align: left;
24
+
25
+ &:hover {
26
+ background: ${r.COLORS.surface.subdued};
27
+ }
28
+ `,_=x.default.button`
29
+ display: flex;
30
+ align-items: center;
31
+ padding: 12px 16px;
32
+ border: none;
33
+ border-bottom: 1px solid ${r.COLORS.stroke.primary};
34
+ background: transparent;
35
+ cursor: pointer;
36
+ font-family: Inter;
37
+ font-size: 12px;
38
+ font-weight: 600;
39
+ height: 48px;
40
+ gap: 4px;
41
+ `,D=x.default.div`
42
+ padding: 12px 10px;
43
+ font-family: Inter;
44
+ font-size: 13px;
45
+ color: ${r.COLORS.content.secondary};
46
+ `;exports.MentionPicker=T;
47
+ //# 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 type { MentionDropdownRenderProps, MentionItem } from '@src/editor';\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';\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\tonActivate: () => 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<MentionDropdownRenderProps> = ({\n\titems,\n\tonSelect,\n\tregisterKeyHandler,\n}) => {\n\tconst [category, setCategory] = useState<Category | null>(null);\n\tconst [source, setSource] = useState<string | null>(null);\n\tconst [activeIndex, setActiveIndex] = useState(0);\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// Only show categories that actually have items. When just one is available\n\t// (e.g. the sub-agent drawer offers tools only), skip the category selector.\n\tconst availableCategories = useMemo(\n\t\t() =>\n\t\t\tCATEGORIES.filter((c) =>\n\t\t\t\tc.key === 'tool' ? tools.length > 0 : subAgents.length > 0,\n\t\t\t),\n\t\t[tools.length, subAgents.length],\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\tconst header: { title: string; onBack: () => void } | 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? { title: toolSourceLabel(source), onBack: () => setSource(null) }\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\treturn 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}\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\tonActivate: () => setSource(s),\n\t\t\t}));\n\t\t}\n\t\treturn tools\n\t\t\t.filter((t) => (metaOf(t)?.source ?? 'other') === source)\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\ttools,\n\t\tsubAgents,\n\t\tsources,\n\t\tonSelect,\n\t]);\n\n\t// Reset highlight whenever the view (or filtered result set) changes.\n\tuseEffect(() => setActiveIndex(0), [activeCategory, source, items]);\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\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<ChevronLeft width={12} height={12} />\n\t\t\t\t\t<TitleSmall> {header.title}</TitleSmall>\n\t\t\t\t</PickerBack>\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<BodySecondary color={COLORS.content.primary}>\n\t\t\t\t\t\t\t{row.label}\n\t\t\t\t\t\t</BodySecondary>\n\t\t\t\t\t\t{row.drillsIn && <ChevronRight width={12} height={12} />}\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\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\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","MentionPicker","items","onSelect","registerKeyHandler","category","setCategory","useState","source","setSource","activeIndex","setActiveIndex","tools","useMemo","i","subAgents","sources","acc","t","s","availableCategories","c","soleCategory","activeCategory","header","toolSourceLabel","rows","useEffect","navRef","useRef","event","r","h","p","variant","jsxs","PickerCard","PickerBack","COLORS","jsx","ChevronLeft","TitleSmall","PickerEmpty","row","PickerRow","BodySecondary","ChevronRight","styled"],"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"),A=require("../../../assets/icons/delete.svg.js"),$=require("../../../assets/icons/plus.svg.js"),f=require("../../../assets/icons/vertical_dots.svg.js"),v=require("react"),q=require("../../dropdown/DropdownPopover/index.js"),B=require("../../dropdown/Dropdown.js"),c=require("../../TypographyStyle.js"),o=require("../../../constants/Theme.js"),t=require("../AgentBuilder.styled.js"),w="__bik_create_new__",g="__bik_configure__",x="__bik_delete__",E=({title:i,helper:h,items:S,addableOptions:a,onAdd:R,onRemove:_,dataTestPrefix:r,emptyText:C,createOption:l,onConfigure:u})=>{const[y,b]=v.useState(!1),L=a.length>0||!!l,O=l?[...a,{label:l.label,value:w,searchKey:l.label,customComponent:e.jsx("div",{style:{width:"100%",textAlign:"center",color:o.COLORS.content.brand,fontFamily:"Inter",fontSize:14,fontWeight:600},children:l.label})}]:a,p=[...u?[{label:"Configure",value:g}]:[],{label:"Delete",value:x,customComponent:e.jsx(c.BodySecondary,{color:o.COLORS.content.negative,children:"Delete"})}];return e.jsxs(t.SideSection,{children:[e.jsxs(t.SideSectionHeader,{children:[e.jsx(c.TitleSmall,{color:o.COLORS.content.primary,children:i}),L&&e.jsx(t.AddIconButton,{"data-test":`${r}-add`,onClick:()=>b(n=>!n),"aria-label":`Add ${i}`,children:e.jsx($.default,{width:20,height:20,color:o.COLORS.content.brand})})]}),h&&e.jsx(c.BodyCaption,{color:o.COLORS.content.secondary,children:h}),y&&O.length>0&&e.jsx(B.Dropdown,{"data-test":`${r}-dropdown`,size:"small",width:"100%",isSearchable:!0,placeHolder:`Select ${i.toLowerCase()}`,options:O,onSelect:n=>{const d=(Array.isArray(n)?n[0]:n)?.value;b(!1),d&&(d===w?l?.onSelect():R(d))}}),S.length===0&&!y?e.jsx(c.BodyCaption,{color:o.COLORS.content.placeholder,children:C}):S.map(n=>e.jsxs(t.SelectableRow,{"data-test":`${r}-row-${n.id}`,children:[e.jsx(t.RowText,{children:e.jsx(c.BodySecondary,{numberOfLines:1,color:o.COLORS.content.primary,children:n.label})}),u?e.jsx(q.DropdownPopover,{placement:"bottom-end",options:p,width:"150px","data-test":`${r}-menu-${n.id}`,onSelect:s=>{const j=(Array.isArray(s)?s[0]:s)?.value;j===g?u?.(n.id):j===x&&_(n.id)},children:e.jsx(t.RowMenuButton,{"aria-label":`Options for ${n.label}`,children:e.jsx(f.default,{width:16,height:16,color:o.COLORS.content.secondary})})}):e.jsx(t.RowMenuButton,{"data-test":`${r}-delete-${n.id}`,"aria-label":`Delete ${n.label}`,onClick:()=>_(n.id),children:e.jsx(A.default,{width:16,height:16,color:o.COLORS.content.secondary})})]},n.id))]})};exports.SelectableListSection=E;
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 PlusIcon from '@src/assets/icons/plus.svg';\nimport VerticalDotsIcon from '@src/assets/icons/vertical_dots.svg';\nimport React, { useState } from 'react';\nimport { Dropdown, DropdownPopover } 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\tRowMenuButton,\n\tRowText,\n\tSelectableRow,\n\tSideSection,\n\tSideSectionHeader,\n} from '../AgentBuilder.styled';\n\nexport interface SelectableItem {\n\tid: string;\n\tlabel: string;\n}\n\n/** Sentinel value for the \"create new\" entry in the add dropdown. */\nconst CREATE_OPTION_VALUE = '__bik_create_new__';\n/** Sentinels for the per-row kebab menu actions. */\nconst ROW_CONFIGURE_VALUE = '__bik_configure__';\nconst ROW_DELETE_VALUE = '__bik_delete__';\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's kebab menu gains a \"Configure\" action (above\n\t * \"Delete\"). Omit for tools (Delete only).\n\t */\n\tonConfigure?: (id: string) => void;\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}) => {\n\tconst [adding, setAdding] = useState(false);\n\tconst showAddButton = addableOptions.length > 0 || !!createOption;\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\t// Per-row kebab menu: Delete (red) always; Configure above it when allowed.\n\tconst rowMenuOptions: SingleOption[] = [\n\t\t...(onConfigure\n\t\t\t? [{ label: 'Configure', value: ROW_CONFIGURE_VALUE }]\n\t\t\t: []),\n\t\t{\n\t\t\tlabel: 'Delete',\n\t\t\tvalue: ROW_DELETE_VALUE,\n\t\t\tcustomComponent: (\n\t\t\t\t<BodySecondary color={COLORS.content.negative}>Delete</BodySecondary>\n\t\t\t),\n\t\t},\n\t];\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={() => setAdding((v) => !v)}\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{adding && dropdownOptions.length > 0 && (\n\t\t\t\t<Dropdown\n\t\t\t\t\tdata-test={`${dataTestPrefix}-dropdown`}\n\t\t\t\t\tsize=\"small\"\n\t\t\t\t\twidth=\"100%\"\n\t\t\t\t\tisSearchable\n\t\t\t\t\tplaceHolder={`Select ${title.toLowerCase()}`}\n\t\t\t\t\toptions={dropdownOptions}\n\t\t\t\t\tonSelect={(opt) => {\n\t\t\t\t\t\tconst single = Array.isArray(opt) ? opt[0] : opt;\n\t\t\t\t\t\tconst v = (single as SingleOption)?.value;\n\t\t\t\t\t\tsetAdding(false);\n\t\t\t\t\t\tif (!v) {\n\t\t\t\t\t\t\treturn;\n\t\t\t\t\t\t}\n\t\t\t\t\t\tif (v === CREATE_OPTION_VALUE) {\n\t\t\t\t\t\t\tcreateOption?.onSelect();\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\tonAdd(v);\n\t\t\t\t\t\t}\n\t\t\t\t\t}}\n\t\t\t\t/>\n\t\t\t)}\n\n\t\t\t{items.length === 0 && !adding ? (\n\t\t\t\t<BodyCaption color={COLORS.content.placeholder}>\n\t\t\t\t\t{emptyText}\n\t\t\t\t</BodyCaption>\n\t\t\t) : (\n\t\t\t\titems.map((item) => (\n\t\t\t\t\t<SelectableRow\n\t\t\t\t\t\tkey={item.id}\n\t\t\t\t\t\tdata-test={`${dataTestPrefix}-row-${item.id}`}\n\t\t\t\t\t>\n\t\t\t\t\t\t<RowText>\n\t\t\t\t\t\t\t<BodySecondary numberOfLines={1} color={COLORS.content.primary}>\n\t\t\t\t\t\t\t\t{item.label}\n\t\t\t\t\t\t\t</BodySecondary>\n\t\t\t\t\t\t</RowText>\n\t\t\t\t\t\t{onConfigure ? (\n\t\t\t\t\t\t\t// Multiple actions (Configure + Delete) → kebab menu.\n\t\t\t\t\t\t\t<DropdownPopover\n\t\t\t\t\t\t\t\tplacement=\"bottom-end\"\n\t\t\t\t\t\t\t\toptions={rowMenuOptions}\n\t\t\t\t\t\t\t\twidth=\"150px\"\n\t\t\t\t\t\t\t\tdata-test={`${dataTestPrefix}-menu-${item.id}`}\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 === ROW_CONFIGURE_VALUE) {\n\t\t\t\t\t\t\t\t\t\tonConfigure?.(item.id);\n\t\t\t\t\t\t\t\t\t} else if (v === ROW_DELETE_VALUE) {\n\t\t\t\t\t\t\t\t\t\tonRemove(item.id);\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\t\t<RowMenuButton aria-label={`Options for ${item.label}`}>\n\t\t\t\t\t\t\t\t\t<VerticalDotsIcon\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</RowMenuButton>\n\t\t\t\t\t\t\t</DropdownPopover>\n\t\t\t\t\t\t) : (\n\t\t\t\t\t\t\t// Delete-only → direct delete icon, no kebab/popover.\n\t\t\t\t\t\t\t<RowMenuButton\n\t\t\t\t\t\t\t\tdata-test={`${dataTestPrefix}-delete-${item.id}`}\n\t\t\t\t\t\t\t\taria-label={`Delete ${item.label}`}\n\t\t\t\t\t\t\t\tonClick={() => onRemove(item.id)}\n\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t\t<DeleteIcon\n\t\t\t\t\t\t\t\t\twidth={16}\n\t\t\t\t\t\t\t\t\theight={16}\n\t\t\t\t\t\t\t\t\tcolor={COLORS.content.secondary}\n\t\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t\t</RowMenuButton>\n\t\t\t\t\t\t)}\n\t\t\t\t\t</SelectableRow>\n\t\t\t\t))\n\t\t\t)}\n\t\t</SideSection>\n\t);\n};\n"],"names":["CREATE_OPTION_VALUE","ROW_CONFIGURE_VALUE","ROW_DELETE_VALUE","SelectableListSection","title","helper","items","addableOptions","onAdd","onRemove","dataTestPrefix","emptyText","createOption","onConfigure","adding","setAdding","useState","showAddButton","dropdownOptions","jsx","COLORS","rowMenuOptions","BodySecondary","SideSection","jsxs","SideSectionHeader","TitleSmall","AddIconButton","v","PlusIcon","BodyCaption","Dropdown","opt","item","SelectableRow","RowText","DropdownPopover","RowMenuButton","VerticalDotsIcon","DeleteIcon"],"mappings":"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"}
@@ -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,customIntent: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\tcustomIntent: 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,aAAc,IAEd,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 v=require("react/jsx-runtime"),n=require("react"),U=require("../constants/charLimits.js"),d=require("../constants/steps.js"),tt=t=>t&&typeof t=="object"&&"default"in t?t:{default:t},et=tt(n),z=et.default.createContext(null),nt=()=>{const t=n.useContext(z);if(!t)throw new Error("useAgentBuilderContext must be used within an AgentBuilderProvider");return t},st=t=>{const o=t.trigger.mode==="custom_intent"?(t.trigger.customIntent??"").trim().length>0:t.trigger.intents.length>0;return{about:t.name.trim().length>0&&t.name.length<=U.AGENT_CHAR_LIMITS.name&&t.description.length<=U.AGENT_CHAR_LIMITS.description,trigger:o,response:t.instructions.trim().length>0||(t.guardrail??"").trim().length>0,handover:!0}},rt=({value:t,onChange:o,activeStep:R,onStepChange:p,availableTools:u,availableSubAgents:g,availableIntents:C,availableModels:E,validation:k,applicationType:M,disableStepNavigation:P=!0,onCreateSubAgent:T,onFetchSubAgent:b,onUpdateSubAgent:h,onImproveSubAgent:I,children:J})=>{const[O,Q]=n.useState("about"),a=R??O,c=d.getStepIndex(a),[B,y]=n.useState(0),S=n.useRef({}),j=n.useRef("instructions"),A=n.useCallback((e,r)=>{r?S.current[e]=r:delete S.current[e]},[]),F=n.useCallback(e=>{j.current=e},[]),K=n.useCallback((e,r,f)=>{const l=S.current;(l[j.current]??l.instructions)?.(e,r,f)},[]),[q,x]=n.useState(null),m=n.useRef(null),L=n.useRef(0),i=n.useCallback(e=>{R===void 0&&Q(e),p?.(e)},[R,p]),Y=n.useCallback(()=>{const e=d.STEP_KEYS[Math.min(c+1,d.STEP_KEYS.length-1)];i(e)},[c,i]),$=n.useCallback(()=>{const e=d.STEP_KEYS[Math.max(c-1,0)];i(e)},[c,i]),w=n.useCallback(e=>o(e),[o]),N=n.useCallback((e,r)=>o({[e]:r}),[o]),V=n.useCallback((e,r)=>{const f=e==="tool"?(()=>{const s=u.find(Z=>Z.tool_id===r);return s?`{{tool:${s.function_key}}}`:null})():`{{subagent:${r}}}`,l=s=>f?s.split(f).join(""):s;m.current={tools:t.tools,subagents:t.subagents,instructions:t.instructions,guardrail:t.guardrail};const D={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(D),y(s=>s+1);const X=e==="tool"?u.find(s=>s.tool_id===r)?.displayName??"Tool":g.find(s=>s.id===r)?.name??"Sub-agent";L.current+=1,x({id:L.current,message:`${e==="tool"?"Tool":"Sub-agent"} "${X}" removed`})},[u,g,t,o]),G=n.useCallback(()=>{m.current&&(o(m.current),m.current=null,y(e=>e+1)),x(null)},[o]),H=n.useCallback(()=>x(null),[]),_=n.useMemo(()=>({...st(t),...k}),[t,k]),W=n.useMemo(()=>({value:t,patch:w,updateField:N,removeReference:V,mentionResetKey:B,insertMention:K,registerMentionField:A,notifyMentionFocus:F,undoToast:q,undoRemoval:G,dismissUndo:H,activeStep:a,activeIndex:c,goToStep:i,goNext:Y,goPrev:$,isFirstStep:c===0,isLastStep:c===d.STEP_KEYS.length-1,validation:_,isActiveStepValid:_[a],availableTools:u,availableSubAgents:g,availableIntents:C,availableModels:E,applicationType:M,disableStepNavigation:P,onCreateSubAgent:T,onFetchSubAgent:b,onUpdateSubAgent:h,onImproveSubAgent:I}),[t,w,N,V,B,K,A,F,q,G,H,a,c,i,Y,$,_,u,g,C,E,M,P,T,b,h,I]);return v.jsx(z.Provider,{value:W,children:J})};exports.AgentBuilderProvider=rt;exports.useAgentBuilderContext=nt;
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/** 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.customIntent ?? '').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\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)?.displayName ?? '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\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\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","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"),o=require("../../../constants/Theme.js"),i=require("../AgentBuilder.styled.js"),R=require("../components/AiTextArea.js"),v=require("../components/StepSectionHeader.js"),I=require("../constants/charLimits.js"),T=require("../constants/steps.js"),b=require("../context/AgentBuilderContext.js"),A=require("../../dropdown/Dropdown.js"),_=r=>r&&typeof r=="object"&&"default"in r?r:{default:r},L=_(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(i.CardRow,{children:[t.jsxs(i.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:o.COLORS.content.brand}),t.jsxs(i.RadioCardText,{children:[t.jsx(s.TitleSmall,{color:o.COLORS.content.primary,children:"Manifest intent"}),t.jsx(s.BodyCaption,{color:o.COLORS.content.secondary,children:"Manifest's AI classifier routes conversations automatically — no keywords needed."})]})]}),t.jsxs(i.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:o.COLORS.content.brand}),t.jsxs(i.RadioCardText,{children:[t.jsx(s.TitleSmall,{color:o.COLORS.content.primary,children:"Custom intent"}),t.jsx(s.BodyCaption,{color:o.COLORS.content.secondary,children:"Define your own trigger — use exact phrases or describe the customer's intent."})]})]})]}),n.mode==="manifest_intent"?t.jsxs(i.FieldBlock,{children:[t.jsx(s.TitleSmall,{color:o.COLORS.content.primary,children:"If customer talks about"}),t.jsxs(i.ChipWrap,{children:[n.intents.map(e=>t.jsxs(i.IntentChip,{"data-test":`intent-chip-${e}`,children:[t.jsx(s.BodySecondary,{color:o.COLORS.content.primary,children:m(e)}),t.jsx(i.ChipCloseButton,{onClick:()=>f(e),"aria-label":`Remove ${m(e)}`,children:t.jsx(y.default,{width:14,height:14,color:o.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(i.AddChipButton,{"data-test":"intent-add-button",onClick:()=>h(!0),children:[t.jsx(j.default,{width:16,height:16,color:o.COLORS.content.secondary}),t.jsx(s.BodySecondary,{color:o.COLORS.content.secondary,children:"Intent"})]})]}),t.jsx(s.BodyCaption,{color:o.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.customIntent??"",onChange:e=>a({trigger:{...n,customIntent:e}}),maxLength:I.AGENT_CHAR_LIMITS.customIntent,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.customIntent ?? ''}\n\t\t\t\t\tonChange={(text) =>\n\t\t\t\t\t\tpatch({ trigger: { ...trigger, customIntent: text } })\n\t\t\t\t\t}\n\t\t\t\t\tmaxLength={AGENT_CHAR_LIMITS.customIntent}\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 n=require("react/jsx-runtime"),o=require("react"),A=require("../../TypographyStyle.js"),x=require("../../../constants/Theme.js"),b=require("../AgentBuilder.styled.js"),D=require("../components/CreateSubAgentPanel.js"),T=require("../components/MentionField.js"),C=require("../components/SelectableListSection.js"),K=require("../components/StepSectionHeader.js"),I=require("../constants/charLimits.js"),z=require("../constants/steps.js"),U=require("../context/AgentBuilderContext.js"),W=require("../utils/mentionSerialization.js"),$=require("../../dropdown/Dropdown.js"),j=z.STEP_DEFINITIONS[2],J=()=>{const{value:s,patch:i,updateField:q,removeReference:v,availableTools:S,availableSubAgents:O,availableModels:m,applicationType:w,insertMention:r,onCreateSubAgent:c,onFetchSubAgent:u,onUpdateSubAgent:h,onImproveSubAgent:R}=U.useAgentBuilderContext(),[l,d]=o.useState(null),g=o.useRef(0),[L,y]=o.useState([]),p=new Map;O.forEach(e=>p.set(e.id,e)),L.forEach(e=>p.set(e.id,e));const M=Array.from(p.values()),k=o.useCallback(()=>{g.current+=1,d({key:g.current,title:"Create sub-agent"})},[]),H=o.useCallback(async e=>{if(!u)return;const t=await u(e);g.current+=1,d({key:g.current,title:"Edit sub-agent",editingId:e,initial:t})},[u]),N=o.useCallback(async e=>{if(l?.editingId){if(h){const t=await h(l.editingId,e);y(a=>[...a.filter(G=>G.id!==t.id),t])}}else if(c){const t=await c(e);y(a=>[...a,t]),i({subagents:[...s.subagents,t.id]}),r("subagent",t.id,`sub-agent: ${t.name}`)}d(null)},[l,h,c,i,s.subagents,r]),P=s.tools.map(e=>{const t=S.find(a=>a.tool_id===e);return t?{id:e,label:t.displayName}:null}).filter(e=>e!==null),E=S.map(e=>({label:e.displayName,value:e.tool_id,subText:e.description})),_=s.subagents.map(e=>{const t=p.get(e);return t?{id:e,label:t.name}:null}).filter(e=>e!==null),F=M.map(e=>({label:e.name,value:e.id})),B=m.map(e=>({label:e.label,value:e.value,selected:e.value===s.model})),f=m.find(e=>e.value===s.model);return n.jsxs("div",{className:"bik-agent-step bik-agent-step--response",children:[n.jsx(K.StepSectionHeader,{title:j.title,helper:j.helper}),n.jsxs(b.Step3Grid,{children:[n.jsxs(b.Step3Main,{children:[n.jsx(T.MentionField,{fieldKey:"instructions","data-test":"agent-instructions",label:"Instructions",maxLength:I.AGENT_CHAR_LIMITS.instructions,placeholder:"Write what this agent should do. Type @ to reference a tool or sub-agent.",minHeight:"200px"}),n.jsx(T.MentionField,{fieldKey:"guardrail","data-test":"agent-guardrail",label:"Guardrails",maxLength:I.AGENT_CHAR_LIMITS.guardrail,placeholder:"Things this agent must never do. Type @ to reference a tool or sub-agent.",minHeight:"140px"})]}),n.jsxs(b.Step3Side,{children:[n.jsx(C.SelectableListSection,{title:"Tools",helper:"Actions this agent can take while responding.",dataTestPrefix:"agent-tools",items:P,addableOptions:E,emptyText:"No tools added yet.",onAdd:e=>{r("tool",e),s.tools.includes(e)||i({tools:[...s.tools,e]})},onRemove:e=>v("tool",e)}),n.jsx(C.SelectableListSection,{title:"Sub-agents",helper:"Other agents this agent can hand off the conversation to.",dataTestPrefix:"agent-subagents",items:_,addableOptions:F,emptyText:"No sub-agents added yet.",onAdd:e=>{r("subagent",e),s.subagents.includes(e)||i({subagents:[...s.subagents,e]})},onRemove:e=>v("subagent",e),onConfigure:u?H:void 0,createOption:c?{label:"Create new",onSelect:k}:void 0}),m.length>0&&n.jsxs(b.SideSection,{children:[n.jsx(A.TitleSmall,{color:x.COLORS.content.primary,children:"Advanced settings"}),n.jsx(A.TitleSmall,{color:x.COLORS.content.secondary,children:"Select AI model"}),n.jsx($.Dropdown,{"data-test":"agent-model",size:"small",width:"100%",placeHolder:"Select model",options:B,defaultOptions:f?[{label:f.label,value:f.value}]:void 0,onSelect:e=>{const a=(Array.isArray(e)?e[0]:e)?.value;a&&q("model",a)}})]})]})]}),l&&n.jsx(D.CreateSubAgentPanel,{title:l.title,initial:l.initial,availableTools:S,appLabel:W.appTypeLabel(w),onImprove:R,onClose:()=>d(null),onSave:N},l.key)]})};exports.Step3HowItResponds=J;
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, 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 { 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} 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 } from '../utils/mentionSerialization';\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} = 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\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 ? { id, label: tool.displayName } : 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((t) => ({\n\t\tlabel: t.displayName,\n\t\tvalue: t.tool_id,\n\t\tsubText: t.description,\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\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":["STEP","STEP_DEFINITIONS","Step3HowItResponds","value","patch","updateField","removeReference","availableTools","availableSubAgents","availableModels","applicationType","insertMention","onCreateSubAgent","onFetchSubAgent","onUpdateSubAgent","onImproveSubAgent","useAgentBuilderContext","panel","setPanel","useState","panelKeyRef","useRef","createdSubAgents","setCreatedSubAgents","subAgentById","s","knownSubAgents","openCreate","useCallback","openConfigure","id","data","handlePanelSave","draft","ref","prev","toolItems","tool","t","x","toolOptions","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.displayName}`,meta:{kind:"tool",functionKey:o.function_key,plainLabel:o.displayName,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