@bikdotai/bik-component-library 0.0.824-beta.0 → 0.0.825-1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (363) hide show
  1. package/dist/cjs/components/BikGiftedChat/Bubble/Bubble.js +1 -1
  2. package/dist/cjs/components/BikGiftedChat/Bubble/Bubble.js.map +1 -1
  3. package/dist/cjs/components/BikGiftedChat/GiftedChat/Day.js +1 -1
  4. package/dist/cjs/components/BikGiftedChat/GiftedChat/Day.js.map +1 -1
  5. package/dist/cjs/components/BikGiftedChat/GiftedChat/GiftedChat.js +1 -1
  6. package/dist/cjs/components/BikGiftedChat/GiftedChat/GiftedChat.js.map +1 -1
  7. package/dist/cjs/components/BikGiftedChat/GiftedChat/types.js.map +1 -1
  8. package/dist/cjs/components/TypographyStyle.js +41 -20
  9. package/dist/cjs/components/TypographyStyle.js.map +1 -1
  10. package/dist/cjs/components/WhatsAppTextEditor/AIRephraseButton.js +16 -5
  11. package/dist/cjs/components/WhatsAppTextEditor/AIRephraseButton.js.map +1 -1
  12. package/dist/cjs/components/agent-builder/components/CreateSubAgentPanel.js +1 -1
  13. package/dist/cjs/components/agent-builder/components/CreateSubAgentPanel.js.map +1 -1
  14. package/dist/cjs/components/agent-builder/context/AgentBuilderContext.js +1 -1
  15. package/dist/cjs/components/agent-builder/context/AgentBuilderContext.js.map +1 -1
  16. package/dist/cjs/components/agent-builder/utils/mentionSerialization.js +2 -2
  17. package/dist/cjs/components/agent-builder/utils/mentionSerialization.js.map +1 -1
  18. package/dist/cjs/components/avatar/Avatar.js +1 -1
  19. package/dist/cjs/components/avatar/Avatar.js.map +1 -1
  20. package/dist/cjs/components/avatar/Avatar.styled.js +4 -4
  21. package/dist/cjs/components/avatar/Avatar.styled.js.map +1 -1
  22. package/dist/cjs/components/avatar/AvatarHelper.js +1 -1
  23. package/dist/cjs/components/avatar/AvatarHelper.js.map +1 -1
  24. package/dist/cjs/components/bik-layout/BikSidebar.js.map +1 -1
  25. package/dist/cjs/components/bik-layout/BikSidebarV2/BikSidebarV2.js +2 -0
  26. package/dist/cjs/components/bik-layout/BikSidebarV2/BikSidebarV2.js.map +1 -0
  27. package/dist/cjs/components/bik-layout/BikSidebarV2/SidebarV2Popup.js +2 -0
  28. package/dist/cjs/components/bik-layout/BikSidebarV2/SidebarV2Popup.js.map +1 -0
  29. package/dist/cjs/components/bik-layout/BikSidebarV2/SidebarV2Styles.js +294 -0
  30. package/dist/cjs/components/bik-layout/BikSidebarV2/SidebarV2Styles.js.map +1 -0
  31. package/dist/cjs/components/bik-layout/BikSidebarV2/SimpleSidebarV2.js +2 -0
  32. package/dist/cjs/components/bik-layout/BikSidebarV2/SimpleSidebarV2.js.map +1 -0
  33. package/dist/cjs/components/bik-layout/CommonStyles.js +1 -1
  34. package/dist/cjs/components/bik-layout/CommonStyles.js.map +1 -1
  35. package/dist/cjs/components/button/Button.js +1 -1
  36. package/dist/cjs/components/button/Button.js.map +1 -1
  37. package/dist/cjs/components/button/Button.styled.js +13 -13
  38. package/dist/cjs/components/button/Button.styled.js.map +1 -1
  39. package/dist/cjs/components/button/themes.js +6 -6
  40. package/dist/cjs/components/button/themes.js.map +1 -1
  41. package/dist/cjs/components/checkBox/CheckBox.js +1 -1
  42. package/dist/cjs/components/checkBox/CheckBox.js.map +1 -1
  43. package/dist/cjs/components/checkBox/CheckBox.styled.js +21 -20
  44. package/dist/cjs/components/checkBox/CheckBox.styled.js.map +1 -1
  45. package/dist/cjs/components/country-code-picker/CountryCodePicker.js.map +1 -1
  46. package/dist/cjs/components/country-code-picker/CountryPicker.js.map +1 -1
  47. package/dist/cjs/components/dropdown/Dropdown.js +1 -1
  48. package/dist/cjs/components/dropdown/Dropdown.js.map +1 -1
  49. package/dist/cjs/components/dropdown/DropdownPopover/index.js +1 -1
  50. package/dist/cjs/components/dropdown/DropdownPopover/index.js.map +1 -1
  51. package/dist/cjs/components/dropdown/OpenedDropdown/components/OpennedDropdown.js +1 -1
  52. package/dist/cjs/components/dropdown/OpenedDropdown/components/OpennedDropdown.js.map +1 -1
  53. package/dist/cjs/components/dropdown/OpenedDropdown/components/OpennedDropdown.styled.js +9 -8
  54. package/dist/cjs/components/dropdown/OpenedDropdown/components/OpennedDropdown.styled.js.map +1 -1
  55. package/dist/cjs/components/dropdown/OpenedDropdown/components/description/Description.js.map +1 -1
  56. package/dist/cjs/components/dropdown/OpenedDropdown/components/description/Description.styled.js.map +1 -1
  57. package/dist/cjs/components/dropdown/OpenedDropdown/components/menu/FreeFormMenu.js +1 -1
  58. package/dist/cjs/components/dropdown/OpenedDropdown/components/menu/FreeFormMenu.js.map +1 -1
  59. package/dist/cjs/components/dropdown/OpenedDropdown/components/menu/MenuItem.js +9 -9
  60. package/dist/cjs/components/dropdown/OpenedDropdown/components/menu/MenuItem.js.map +1 -1
  61. package/dist/cjs/components/dropdown/OpenedDropdown/components/menu/MenuList.js +1 -1
  62. package/dist/cjs/components/dropdown/OpenedDropdown/components/menu/MenuList.js.map +1 -1
  63. package/dist/cjs/components/dropdown/OpenedDropdown/components/menu/MenuList.styled.js +6 -2
  64. package/dist/cjs/components/dropdown/OpenedDropdown/components/menu/MenuList.styled.js.map +1 -1
  65. package/dist/cjs/components/dropdown/OpenedDropdown/components/menu/SelectAllMenu.js +1 -1
  66. package/dist/cjs/components/dropdown/OpenedDropdown/components/menu/SelectAllMenu.js.map +1 -1
  67. package/dist/cjs/components/dropdown/OpenedDropdown/components/searchbox/SearchBox.js +1 -1
  68. package/dist/cjs/components/dropdown/OpenedDropdown/components/searchbox/SearchBox.js.map +1 -1
  69. package/dist/cjs/components/dropdown/OpenedDropdown/components/searchbox/SearchZeroState.js +1 -1
  70. package/dist/cjs/components/dropdown/OpenedDropdown/components/searchbox/SearchZeroState.js.map +1 -1
  71. package/dist/cjs/components/dropdown-button/DropdownButton.js +1 -1
  72. package/dist/cjs/components/dropdown-button/DropdownButton.js.map +1 -1
  73. package/dist/cjs/components/dropdown-button/DropdownButton.style.js +20 -6
  74. package/dist/cjs/components/dropdown-button/DropdownButton.style.js.map +1 -1
  75. package/dist/cjs/components/dual-icon-button/DualIconButton.js +2 -0
  76. package/dist/cjs/components/dual-icon-button/DualIconButton.js.map +1 -0
  77. package/dist/cjs/components/dual-icon-button/DualIconButton.styled.js +33 -0
  78. package/dist/cjs/components/dual-icon-button/DualIconButton.styled.js.map +1 -0
  79. package/dist/cjs/components/fab-menu/FABMenu.js.map +1 -1
  80. package/dist/cjs/components/icon-button/IconButton.js +1 -1
  81. package/dist/cjs/components/icon-button/IconButton.js.map +1 -1
  82. package/dist/cjs/components/icon-button/IconButton.styled.js +18 -12
  83. package/dist/cjs/components/icon-button/IconButton.styled.js.map +1 -1
  84. package/dist/cjs/components/icon-button/theme.js +1 -1
  85. package/dist/cjs/components/icon-button/theme.js.map +1 -1
  86. package/dist/cjs/components/input/Input.js +1 -1
  87. package/dist/cjs/components/input/Input.js.map +1 -1
  88. package/dist/cjs/components/input/Input.styled.js +27 -16
  89. package/dist/cjs/components/input/Input.styled.js.map +1 -1
  90. package/dist/cjs/components/list-item/ListItem.js +1 -1
  91. package/dist/cjs/components/list-item/ListItem.js.map +1 -1
  92. package/dist/cjs/components/list-item/ListItem.styled.js +6 -6
  93. package/dist/cjs/components/list-item/ListItem.styled.js.map +1 -1
  94. package/dist/cjs/components/list-item/themes.js +32 -20
  95. package/dist/cjs/components/list-item/themes.js.map +1 -1
  96. package/dist/cjs/components/multi-level-dropdown/GroupedMenuList.js +1 -1
  97. package/dist/cjs/components/multi-level-dropdown/GroupedMenuList.js.map +1 -1
  98. package/dist/cjs/components/multi-level-dropdown/MenuItem.js +1 -1
  99. package/dist/cjs/components/multi-level-dropdown/MenuItem.js.map +1 -1
  100. package/dist/cjs/components/multi-level-dropdown/MenuList.js +1 -1
  101. package/dist/cjs/components/multi-level-dropdown/MenuList.js.map +1 -1
  102. package/dist/cjs/components/multi-level-dropdown/MultiLevelDropdown.js +1 -1
  103. package/dist/cjs/components/multi-level-dropdown/MultiLevelDropdown.js.map +1 -1
  104. package/dist/cjs/components/multi-level-dropdown/MultiLevelDropdown.styled.js +32 -29
  105. package/dist/cjs/components/multi-level-dropdown/MultiLevelDropdown.styled.js.map +1 -1
  106. package/dist/cjs/components/tag/Tag.js +1 -1
  107. package/dist/cjs/components/tag/Tag.js.map +1 -1
  108. package/dist/cjs/components/tag/Tag.styled.js +4 -4
  109. package/dist/cjs/components/tag/Tag.styled.js.map +1 -1
  110. package/dist/cjs/components/tag/model.js.map +1 -1
  111. package/dist/cjs/components/whats-new/WhatsNew.js +1 -1
  112. package/dist/cjs/components/whats-new/WhatsNew.js.map +1 -1
  113. package/dist/cjs/components/whats-new/WhatsNewButton.js +2 -2
  114. package/dist/cjs/components/whats-new/WhatsNewButton.js.map +1 -1
  115. package/dist/cjs/components/whats-new/WhatsNewPanel.js.map +1 -1
  116. package/dist/cjs/constants/Theme.js +1 -1
  117. package/dist/cjs/constants/Theme.js.map +1 -1
  118. package/dist/cjs/editor/BikEditor.js +1 -1
  119. package/dist/cjs/editor/BikEditor.js.map +1 -1
  120. package/dist/cjs/editor/BikEditor.styles.js +47 -30
  121. package/dist/cjs/editor/BikEditor.styles.js.map +1 -1
  122. package/dist/cjs/editor/extensions/editorDropdown.styles.js +10 -15
  123. package/dist/cjs/editor/extensions/editorDropdown.styles.js.map +1 -1
  124. package/dist/cjs/editor/extensions/jsonHighlight/JsonHighlightExtension.js +3 -2
  125. package/dist/cjs/editor/extensions/jsonHighlight/JsonHighlightExtension.js.map +1 -1
  126. package/dist/cjs/icons/Actions/Common actions/ProductTour.js +2 -0
  127. package/dist/cjs/icons/Actions/Common actions/ProductTour.js.map +1 -0
  128. package/dist/cjs/icons/Actions/Common actions/RestApi.js +2 -0
  129. package/dist/cjs/icons/Actions/Common actions/RestApi.js.map +1 -0
  130. package/dist/cjs/icons/Actions/Common actions/Save.js +2 -0
  131. package/dist/cjs/icons/Actions/Common actions/Save.js.map +1 -0
  132. package/dist/cjs/icons/Actions/Common actions/Shortcut.js +2 -0
  133. package/dist/cjs/icons/Actions/Common actions/Shortcut.js.map +1 -0
  134. package/dist/cjs/icons/Arrows/Chevron/ChevronUp.js +1 -1
  135. package/dist/cjs/icons/Arrows/Chevron/ChevronUp.js.map +1 -1
  136. package/dist/cjs/icons/BIK AI specific/Webhook.js +2 -0
  137. package/dist/cjs/icons/BIK AI specific/Webhook.js.map +1 -0
  138. package/dist/cjs/icons/Informational/Store related/TicketForm.js +2 -0
  139. package/dist/cjs/icons/Informational/Store related/TicketForm.js.map +1 -0
  140. package/dist/cjs/icons/Legacy - Bikayi specific/Services/LoudSpeaker.js +2 -0
  141. package/dist/cjs/icons/Legacy - Bikayi specific/Services/LoudSpeaker.js.map +1 -0
  142. package/dist/cjs/icons/index.js +1 -1
  143. package/dist/cjs/index.js +1 -1
  144. package/dist/esm/components/BikGiftedChat/Bubble/Bubble.js +61 -59
  145. package/dist/esm/components/BikGiftedChat/Bubble/Bubble.js.map +1 -1
  146. package/dist/esm/components/BikGiftedChat/GiftedChat/Day.d.ts +6 -0
  147. package/dist/esm/components/BikGiftedChat/GiftedChat/Day.js +124 -88
  148. package/dist/esm/components/BikGiftedChat/GiftedChat/Day.js.map +1 -1
  149. package/dist/esm/components/BikGiftedChat/GiftedChat/GiftedChat.js +231 -129
  150. package/dist/esm/components/BikGiftedChat/GiftedChat/GiftedChat.js.map +1 -1
  151. package/dist/esm/components/BikGiftedChat/GiftedChat/types.d.ts +6 -2
  152. package/dist/esm/components/BikGiftedChat/GiftedChat/types.js.map +1 -1
  153. package/dist/esm/components/TypographyStyle.d.ts +8 -0
  154. package/dist/esm/components/TypographyStyle.js +63 -40
  155. package/dist/esm/components/TypographyStyle.js.map +1 -1
  156. package/dist/esm/components/WhatsAppTextEditor/AIRephraseButton.js +54 -43
  157. package/dist/esm/components/WhatsAppTextEditor/AIRephraseButton.js.map +1 -1
  158. package/dist/esm/components/agent-builder/components/CreateSubAgentPanel.js +24 -24
  159. package/dist/esm/components/agent-builder/components/CreateSubAgentPanel.js.map +1 -1
  160. package/dist/esm/components/agent-builder/context/AgentBuilderContext.js +98 -101
  161. package/dist/esm/components/agent-builder/context/AgentBuilderContext.js.map +1 -1
  162. package/dist/esm/components/agent-builder/utils/mentionSerialization.d.ts +5 -7
  163. package/dist/esm/components/agent-builder/utils/mentionSerialization.js +40 -37
  164. package/dist/esm/components/agent-builder/utils/mentionSerialization.js.map +1 -1
  165. package/dist/esm/components/avatar/Avatar.d.ts +2 -1
  166. package/dist/esm/components/avatar/Avatar.js +54 -76
  167. package/dist/esm/components/avatar/Avatar.js.map +1 -1
  168. package/dist/esm/components/avatar/Avatar.styled.js +8 -8
  169. package/dist/esm/components/avatar/Avatar.styled.js.map +1 -1
  170. package/dist/esm/components/avatar/AvatarHelper.d.ts +5 -4
  171. package/dist/esm/components/avatar/AvatarHelper.js +4 -4
  172. package/dist/esm/components/avatar/AvatarHelper.js.map +1 -1
  173. package/dist/esm/components/bik-layout/BikSidebar.js.map +1 -1
  174. package/dist/esm/components/bik-layout/BikSidebarV2/BikSidebarV2.d.ts +33 -0
  175. package/dist/esm/components/bik-layout/BikSidebarV2/BikSidebarV2.js +272 -0
  176. package/dist/esm/components/bik-layout/BikSidebarV2/BikSidebarV2.js.map +1 -0
  177. package/dist/esm/components/bik-layout/BikSidebarV2/SidebarV2.model.d.ts +27 -0
  178. package/dist/esm/components/bik-layout/BikSidebarV2/SidebarV2Popup.d.ts +12 -0
  179. package/dist/esm/components/bik-layout/BikSidebarV2/SidebarV2Popup.js +53 -0
  180. package/dist/esm/components/bik-layout/BikSidebarV2/SidebarV2Popup.js.map +1 -0
  181. package/dist/esm/components/bik-layout/BikSidebarV2/SidebarV2Styles.d.ts +44 -0
  182. package/dist/esm/components/bik-layout/BikSidebarV2/SidebarV2Styles.js +310 -0
  183. package/dist/esm/components/bik-layout/BikSidebarV2/SidebarV2Styles.js.map +1 -0
  184. package/dist/esm/components/bik-layout/BikSidebarV2/SimpleSidebarV2.d.ts +2 -0
  185. package/dist/esm/components/bik-layout/BikSidebarV2/SimpleSidebarV2.js +107 -0
  186. package/dist/esm/components/bik-layout/BikSidebarV2/SimpleSidebarV2.js.map +1 -0
  187. package/dist/esm/components/bik-layout/CommonStyles.js +1 -1
  188. package/dist/esm/components/bik-layout/CommonStyles.js.map +1 -1
  189. package/dist/esm/components/bik-layout/index.d.ts +2 -0
  190. package/dist/esm/components/button/Button.js +31 -31
  191. package/dist/esm/components/button/Button.js.map +1 -1
  192. package/dist/esm/components/button/Button.styled.d.ts +1 -1
  193. package/dist/esm/components/button/Button.styled.js +20 -20
  194. package/dist/esm/components/button/Button.styled.js.map +1 -1
  195. package/dist/esm/components/button/model.d.ts +3 -3
  196. package/dist/esm/components/button/themes.d.ts +2 -2
  197. package/dist/esm/components/button/themes.js +31 -17
  198. package/dist/esm/components/button/themes.js.map +1 -1
  199. package/dist/esm/components/checkBox/CheckBox.d.ts +2 -1
  200. package/dist/esm/components/checkBox/CheckBox.js +124 -87
  201. package/dist/esm/components/checkBox/CheckBox.js.map +1 -1
  202. package/dist/esm/components/checkBox/CheckBox.styled.d.ts +1 -1
  203. package/dist/esm/components/checkBox/CheckBox.styled.js +10 -9
  204. package/dist/esm/components/checkBox/CheckBox.styled.js.map +1 -1
  205. package/dist/esm/components/country-code-picker/CountryCodePicker.d.ts +1 -1
  206. package/dist/esm/components/country-code-picker/CountryCodePicker.js.map +1 -1
  207. package/dist/esm/components/country-code-picker/CountryPicker.d.ts +1 -1
  208. package/dist/esm/components/country-code-picker/CountryPicker.js.map +1 -1
  209. package/dist/esm/components/dropdown/Dropdown.d.ts +2 -0
  210. package/dist/esm/components/dropdown/Dropdown.js +80 -77
  211. package/dist/esm/components/dropdown/Dropdown.js.map +1 -1
  212. package/dist/esm/components/dropdown/DropdownPopover/index.js +69 -56
  213. package/dist/esm/components/dropdown/DropdownPopover/index.js.map +1 -1
  214. package/dist/esm/components/dropdown/OpenedDropdown/components/OpennedDropdown.js +183 -174
  215. package/dist/esm/components/dropdown/OpenedDropdown/components/OpennedDropdown.js.map +1 -1
  216. package/dist/esm/components/dropdown/OpenedDropdown/components/OpennedDropdown.styled.d.ts +1 -1
  217. package/dist/esm/components/dropdown/OpenedDropdown/components/OpennedDropdown.styled.js +5 -4
  218. package/dist/esm/components/dropdown/OpenedDropdown/components/OpennedDropdown.styled.js.map +1 -1
  219. package/dist/esm/components/dropdown/OpenedDropdown/components/description/Description.d.ts +1 -1
  220. package/dist/esm/components/dropdown/OpenedDropdown/components/description/Description.js.map +1 -1
  221. package/dist/esm/components/dropdown/OpenedDropdown/components/description/Description.styled.d.ts +1 -1
  222. package/dist/esm/components/dropdown/OpenedDropdown/components/description/Description.styled.js.map +1 -1
  223. package/dist/esm/components/dropdown/OpenedDropdown/components/menu/FreeFormMenu.d.ts +3 -1
  224. package/dist/esm/components/dropdown/OpenedDropdown/components/menu/FreeFormMenu.js +29 -20
  225. package/dist/esm/components/dropdown/OpenedDropdown/components/menu/FreeFormMenu.js.map +1 -1
  226. package/dist/esm/components/dropdown/OpenedDropdown/components/menu/MenuItem.d.ts +3 -1
  227. package/dist/esm/components/dropdown/OpenedDropdown/components/menu/MenuItem.js +93 -87
  228. package/dist/esm/components/dropdown/OpenedDropdown/components/menu/MenuItem.js.map +1 -1
  229. package/dist/esm/components/dropdown/OpenedDropdown/components/menu/MenuList.d.ts +3 -1
  230. package/dist/esm/components/dropdown/OpenedDropdown/components/menu/MenuList.js +68 -61
  231. package/dist/esm/components/dropdown/OpenedDropdown/components/menu/MenuList.js.map +1 -1
  232. package/dist/esm/components/dropdown/OpenedDropdown/components/menu/MenuList.styled.d.ts +2 -1
  233. package/dist/esm/components/dropdown/OpenedDropdown/components/menu/MenuList.styled.js +7 -2
  234. package/dist/esm/components/dropdown/OpenedDropdown/components/menu/MenuList.styled.js.map +1 -1
  235. package/dist/esm/components/dropdown/OpenedDropdown/components/menu/SelectAllMenu.d.ts +3 -1
  236. package/dist/esm/components/dropdown/OpenedDropdown/components/menu/SelectAllMenu.js +18 -10
  237. package/dist/esm/components/dropdown/OpenedDropdown/components/menu/SelectAllMenu.js.map +1 -1
  238. package/dist/esm/components/dropdown/OpenedDropdown/components/searchbox/SearchBox.d.ts +1 -1
  239. package/dist/esm/components/dropdown/OpenedDropdown/components/searchbox/SearchBox.js +18 -18
  240. package/dist/esm/components/dropdown/OpenedDropdown/components/searchbox/SearchBox.js.map +1 -1
  241. package/dist/esm/components/dropdown/OpenedDropdown/components/searchbox/SearchZeroState.d.ts +1 -0
  242. package/dist/esm/components/dropdown/OpenedDropdown/components/searchbox/SearchZeroState.js +43 -17
  243. package/dist/esm/components/dropdown/OpenedDropdown/components/searchbox/SearchZeroState.js.map +1 -1
  244. package/dist/esm/components/dropdown/OpenedDropdown/utils/iterationOnOptions.d.ts +2 -0
  245. package/dist/esm/components/dropdown/hooks/useDropdown.d.ts +2 -0
  246. package/dist/esm/components/dropdown/type.d.ts +6 -1
  247. package/dist/esm/components/dropdown-button/DropdownButton.d.ts +13 -1
  248. package/dist/esm/components/dropdown-button/DropdownButton.js +83 -20
  249. package/dist/esm/components/dropdown-button/DropdownButton.js.map +1 -1
  250. package/dist/esm/components/dropdown-button/DropdownButton.style.d.ts +9 -2
  251. package/dist/esm/components/dropdown-button/DropdownButton.style.js +35 -9
  252. package/dist/esm/components/dropdown-button/DropdownButton.style.js.map +1 -1
  253. package/dist/esm/components/dual-icon-button/DualIconButton.d.ts +3 -0
  254. package/dist/esm/components/dual-icon-button/DualIconButton.js +53 -0
  255. package/dist/esm/components/dual-icon-button/DualIconButton.js.map +1 -0
  256. package/dist/esm/components/dual-icon-button/DualIconButton.styled.d.ts +7 -0
  257. package/dist/esm/components/dual-icon-button/DualIconButton.styled.js +40 -0
  258. package/dist/esm/components/dual-icon-button/DualIconButton.styled.js.map +1 -0
  259. package/dist/esm/components/dual-icon-button/index.d.ts +2 -0
  260. package/dist/esm/components/dual-icon-button/model.d.ts +12 -0
  261. package/dist/esm/components/fab-menu/FABMenu.d.ts +1 -1
  262. package/dist/esm/components/fab-menu/FABMenu.js.map +1 -1
  263. package/dist/esm/components/icon-button/IconButton.js +36 -32
  264. package/dist/esm/components/icon-button/IconButton.js.map +1 -1
  265. package/dist/esm/components/icon-button/IconButton.styled.d.ts +3 -1
  266. package/dist/esm/components/icon-button/IconButton.styled.js +20 -14
  267. package/dist/esm/components/icon-button/IconButton.styled.js.map +1 -1
  268. package/dist/esm/components/icon-button/model.d.ts +12 -1
  269. package/dist/esm/components/icon-button/theme.js +12 -10
  270. package/dist/esm/components/icon-button/theme.js.map +1 -1
  271. package/dist/esm/components/input/Input.js +130 -125
  272. package/dist/esm/components/input/Input.js.map +1 -1
  273. package/dist/esm/components/input/Input.model.d.ts +2 -1
  274. package/dist/esm/components/input/Input.styled.d.ts +8 -1
  275. package/dist/esm/components/input/Input.styled.js +34 -22
  276. package/dist/esm/components/input/Input.styled.js.map +1 -1
  277. package/dist/esm/components/list-item/List.model.d.ts +2 -1
  278. package/dist/esm/components/list-item/ListItem.js +40 -38
  279. package/dist/esm/components/list-item/ListItem.js.map +1 -1
  280. package/dist/esm/components/list-item/ListItem.styled.d.ts +2 -1
  281. package/dist/esm/components/list-item/ListItem.styled.js +8 -8
  282. package/dist/esm/components/list-item/ListItem.styled.js.map +1 -1
  283. package/dist/esm/components/list-item/themes.d.ts +2 -2
  284. package/dist/esm/components/list-item/themes.js +20 -6
  285. package/dist/esm/components/list-item/themes.js.map +1 -1
  286. package/dist/esm/components/multi-level-dropdown/GroupedMenuList.d.ts +1 -0
  287. package/dist/esm/components/multi-level-dropdown/GroupedMenuList.js +30 -28
  288. package/dist/esm/components/multi-level-dropdown/GroupedMenuList.js.map +1 -1
  289. package/dist/esm/components/multi-level-dropdown/MenuItem.d.ts +1 -0
  290. package/dist/esm/components/multi-level-dropdown/MenuItem.js +57 -54
  291. package/dist/esm/components/multi-level-dropdown/MenuItem.js.map +1 -1
  292. package/dist/esm/components/multi-level-dropdown/MenuList.d.ts +1 -0
  293. package/dist/esm/components/multi-level-dropdown/MenuList.js +46 -42
  294. package/dist/esm/components/multi-level-dropdown/MenuList.js.map +1 -1
  295. package/dist/esm/components/multi-level-dropdown/MultiLevelDropdown.js +95 -59
  296. package/dist/esm/components/multi-level-dropdown/MultiLevelDropdown.js.map +1 -1
  297. package/dist/esm/components/multi-level-dropdown/MultiLevelDropdown.styled.d.ts +13 -3
  298. package/dist/esm/components/multi-level-dropdown/MultiLevelDropdown.styled.js +50 -41
  299. package/dist/esm/components/multi-level-dropdown/MultiLevelDropdown.styled.js.map +1 -1
  300. package/dist/esm/components/multi-level-dropdown/type.d.ts +1 -0
  301. package/dist/esm/components/tag/Tag.d.ts +1 -1
  302. package/dist/esm/components/tag/Tag.js +22 -18
  303. package/dist/esm/components/tag/Tag.js.map +1 -1
  304. package/dist/esm/components/tag/Tag.styled.d.ts +3 -1
  305. package/dist/esm/components/tag/Tag.styled.js +7 -7
  306. package/dist/esm/components/tag/Tag.styled.js.map +1 -1
  307. package/dist/esm/components/tag/model.d.ts +5 -1
  308. package/dist/esm/components/tag/model.js.map +1 -1
  309. package/dist/esm/components/whats-new/WhatsNew.d.ts +2 -0
  310. package/dist/esm/components/whats-new/WhatsNew.js +23 -19
  311. package/dist/esm/components/whats-new/WhatsNew.js.map +1 -1
  312. package/dist/esm/components/whats-new/WhatsNew.types.d.ts +2 -0
  313. package/dist/esm/components/whats-new/WhatsNewButton.js +34 -38
  314. package/dist/esm/components/whats-new/WhatsNewButton.js.map +1 -1
  315. package/dist/esm/components/whats-new/WhatsNewPanel.js.map +1 -1
  316. package/dist/esm/constants/Theme.d.ts +36 -0
  317. package/dist/esm/constants/Theme.js +21 -1
  318. package/dist/esm/constants/Theme.js.map +1 -1
  319. package/dist/esm/editor/BikEditor.js +72 -79
  320. package/dist/esm/editor/BikEditor.js.map +1 -1
  321. package/dist/esm/editor/BikEditor.styles.d.ts +4 -4
  322. package/dist/esm/editor/BikEditor.styles.js +44 -27
  323. package/dist/esm/editor/BikEditor.styles.js.map +1 -1
  324. package/dist/esm/editor/extensions/editorDropdown.styles.d.ts +8 -2
  325. package/dist/esm/editor/extensions/editorDropdown.styles.js +18 -22
  326. package/dist/esm/editor/extensions/editorDropdown.styles.js.map +1 -1
  327. package/dist/esm/editor/extensions/jsonHighlight/JsonHighlightExtension.js +100 -32
  328. package/dist/esm/editor/extensions/jsonHighlight/JsonHighlightExtension.js.map +1 -1
  329. package/dist/esm/icons/Actions/Common actions/ProductTour.d.ts +7 -0
  330. package/dist/esm/icons/Actions/Common actions/ProductTour.js +51 -0
  331. package/dist/esm/icons/Actions/Common actions/ProductTour.js.map +1 -0
  332. package/dist/esm/icons/Actions/Common actions/RestApi.d.ts +7 -0
  333. package/dist/esm/icons/Actions/Common actions/RestApi.js +29 -0
  334. package/dist/esm/icons/Actions/Common actions/RestApi.js.map +1 -0
  335. package/dist/esm/icons/Actions/Common actions/Save.d.ts +7 -0
  336. package/dist/esm/icons/Actions/Common actions/Save.js +40 -0
  337. package/dist/esm/icons/Actions/Common actions/Save.js.map +1 -0
  338. package/dist/esm/icons/Actions/Common actions/Shortcut.d.ts +7 -0
  339. package/dist/esm/icons/Actions/Common actions/Shortcut.js +40 -0
  340. package/dist/esm/icons/Actions/Common actions/Shortcut.js.map +1 -0
  341. package/dist/esm/icons/Actions/Common actions/index.d.ts +4 -0
  342. package/dist/esm/icons/Arrows/Chevron/ChevronUp.d.ts +1 -2
  343. package/dist/esm/icons/Arrows/Chevron/ChevronUp.js +24 -28
  344. package/dist/esm/icons/Arrows/Chevron/ChevronUp.js.map +1 -1
  345. package/dist/esm/icons/BIK AI specific/Webhook.d.ts +7 -0
  346. package/dist/esm/icons/BIK AI specific/Webhook.js +32 -0
  347. package/dist/esm/icons/BIK AI specific/Webhook.js.map +1 -0
  348. package/dist/esm/icons/BIK AI specific/index.d.ts +1 -0
  349. package/dist/esm/icons/Informational/Store related/TicketForm.d.ts +7 -0
  350. package/dist/esm/icons/Informational/Store related/TicketForm.js +65 -0
  351. package/dist/esm/icons/Informational/Store related/TicketForm.js.map +1 -0
  352. package/dist/esm/icons/Informational/Store related/index.d.ts +1 -0
  353. package/dist/esm/icons/Legacy - Bikayi specific/Services/LoudSpeaker.d.ts +7 -0
  354. package/dist/esm/icons/Legacy - Bikayi specific/Services/LoudSpeaker.js +35 -0
  355. package/dist/esm/icons/Legacy - Bikayi specific/Services/LoudSpeaker.js.map +1 -0
  356. package/dist/esm/icons/Legacy - Bikayi specific/Services/index.d.ts +1 -0
  357. package/dist/esm/icons/index.d.ts +24 -24
  358. package/dist/esm/icons/index.js +284 -270
  359. package/dist/esm/icons/index.js.map +1 -1
  360. package/dist/esm/index.d.ts +1 -0
  361. package/dist/esm/index.js +973 -967
  362. package/dist/esm/index.js.map +1 -1
  363. package/package.json +2 -2
@@ -1 +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 type { AgentCharLimits } 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/**\n\t * Append a tool / sub-agent id to its list (deduped), reading the LATEST value\n\t * via a ref. Use this instead of `patch({ tools: [...value.tools, id] })` from\n\t * any handler that may be captured with a stale `value` — notably the `@`\n\t * editor's mount-time `onSelect`, which would otherwise keep only the last pick.\n\t */\n\taddReference: (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/** Resolved per-field character limits (consumer overrides merged over defaults). */\n\tcharLimits: AgentCharLimits;\n\t/** When true, step-rail items are not clickable (Back / Next only). */\n\tdisableStepNavigation: boolean;\n\n\t// Sub-agent creation (Step 3 drawer)\n\t/** Persist a new sub-agent and resolve with its ref. Omit to hide the create flow. */\n\tonCreateSubAgent?: (draft: SubAgentDraft) => Promise<SubAgentRef>;\n\t/**\n\t * Step 3 registers its \"open create-sub-agent drawer\" action here so the `@`\n\t * picker's \"Create new\" row can trigger it. Pass `null` to unregister.\n\t */\n\tregisterSubAgentCreator: (fn: (() => void) | null) => void;\n\t/** Open the create-sub-agent drawer (no-op until Step 3 registers it). */\n\trequestCreateSubAgent: () => void;\n\t/** Fetch a sub-agent's editable data (Configure). Omit to hide Configure. */\n\tonFetchSubAgent?: (id: string) => Promise<SubAgentDraft>;\n\t/** Persist edits to an existing sub-agent. */\n\tonUpdateSubAgent?: (id: string, draft: SubAgentDraft) => Promise<SubAgentRef>;\n\t/** Optional \"Improve with AI\" for the drawer's instructions / guardrails. */\n\tonImproveSubAgent?: (\n\t\tkind: 'instructions' | 'guardrail',\n\t\ttext: string,\n\t) => Promise<string>;\n}\n\nconst AgentBuilderContext =\n\tReact.createContext<AgentBuilderContextShape | null>(null);\n\nexport const useAgentBuilderContext = (): AgentBuilderContextShape => {\n\tconst ctx = useContext(AgentBuilderContext);\n\tif (!ctx) {\n\t\tthrow new Error(\n\t\t\t'useAgentBuilderContext must be used within an AgentBuilderProvider',\n\t\t);\n\t}\n\treturn ctx;\n};\n\n/** Validity derived purely from the current value (no effects). */\nconst deriveValidation = (\n\tvalue: AgentValue,\n\tlimits: AgentCharLimits,\n): StepValidation => {\n\tconst triggerValid =\n\t\tvalue.trigger.mode === 'custom_intent'\n\t\t\t? (value.trigger.custom_intent ?? '').trim().length > 0\n\t\t\t: value.trigger.intents.length > 0;\n\n\treturn {\n\t\tabout:\n\t\t\tvalue.name.trim().length > 0 &&\n\t\t\tvalue.name.length <= limits.name &&\n\t\t\tvalue.description.length <= 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\tcharLimits?: Partial<AgentCharLimits>;\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\tcharLimits: charLimitsOverride,\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// Latest value, so closure-captured handlers (e.g. the `@` editor's mount-time\n\t// mention onSelect) append against the current lists, not a stale snapshot.\n\tconst valueRef = useRef(value);\n\tvalueRef.current = value;\n\n\t// Bumped when a mention field is edited from OUTSIDE its editor (removing a\n\t// tool from the side list, undo), forcing the mention editors to remount.\n\tconst [mentionResetKey, setMentionResetKey] = useState(0);\n\n\t// Each mention field registers an editor-backed insert fn + reports focus, so\n\t// side-panel adds drop a chip into the last-focused field at its cursor.\n\tconst mentionInsertersRef = useRef<\n\t\tPartial<Record<MentionFieldKey, MentionInsertFn>>\n\t>({});\n\tconst lastFocusedFieldRef = useRef<MentionFieldKey>('instructions');\n\tconst registerMentionField = useCallback(\n\t\t(fieldKey: MentionFieldKey, fn: MentionInsertFn | null) => {\n\t\t\tif (fn) {\n\t\t\t\tmentionInsertersRef.current[fieldKey] = fn;\n\t\t\t} else {\n\t\t\t\tdelete mentionInsertersRef.current[fieldKey];\n\t\t\t}\n\t\t},\n\t\t[],\n\t);\n\tconst notifyMentionFocus = useCallback((fieldKey: MentionFieldKey) => {\n\t\tlastFocusedFieldRef.current = fieldKey;\n\t}, []);\n\n\t// Step 3 registers its drawer opener here; the `@` picker's \"Create new\" calls it.\n\tconst subAgentCreatorRef = useRef<(() => void) | null>(null);\n\tconst registerSubAgentCreator = useCallback((fn: (() => void) | null) => {\n\t\tsubAgentCreatorRef.current = fn;\n\t}, []);\n\tconst requestCreateSubAgent = useCallback(() => {\n\t\tsubAgentCreatorRef.current?.();\n\t}, []);\n\tconst insertMention = useCallback<MentionInsertFn>((kind, id, label) => {\n\t\tconst inserters = mentionInsertersRef.current;\n\t\tconst target =\n\t\t\tinserters[lastFocusedFieldRef.current] ?? inserters.instructions;\n\t\ttarget?.(kind, id, label);\n\t}, []);\n\n\t// Undo state for the most recent removal.\n\tconst [undoToast, setUndoToast] = useState<UndoToastState | null>(null);\n\tconst undoSnapshotRef = useRef<Partial<AgentValue> | null>(null);\n\tconst undoIdRef = useRef(0);\n\n\tconst goToStep = useCallback(\n\t\t(step: StepKey) => {\n\t\t\tif (controlledStep === undefined) {\n\t\t\t\tsetInternalStep(step);\n\t\t\t}\n\t\t\tonStepChange?.(step);\n\t\t},\n\t\t[controlledStep, onStepChange],\n\t);\n\n\tconst goNext = useCallback(() => {\n\t\tconst next = STEP_KEYS[Math.min(activeIndex + 1, STEP_KEYS.length - 1)];\n\t\tgoToStep(next);\n\t}, [activeIndex, goToStep]);\n\n\tconst goPrev = useCallback(() => {\n\t\tconst prev = STEP_KEYS[Math.max(activeIndex - 1, 0)];\n\t\tgoToStep(prev);\n\t}, [activeIndex, goToStep]);\n\n\tconst patch = useCallback(\n\t\t(partial: Partial<AgentValue>) => onChange(partial),\n\t\t[onChange],\n\t);\n\n\tconst updateField = useCallback(\n\t\t<K extends keyof AgentValue>(key: K, val: AgentValue[K]) =>\n\t\t\tonChange({ [key]: val } as Partial<AgentValue>),\n\t\t[onChange],\n\t);\n\n\tconst addReference = useCallback(\n\t\t(kind: 'tool' | 'subagent', id: string) => {\n\t\t\tconst v = valueRef.current;\n\t\t\tif (kind === 'tool') {\n\t\t\t\tif (!v.tools.includes(id)) {\n\t\t\t\t\tonChange({ tools: [...v.tools, id] });\n\t\t\t\t}\n\t\t\t} else if (!v.subagents.includes(id)) {\n\t\t\t\tonChange({ subagents: [...v.subagents, id] });\n\t\t\t}\n\t\t},\n\t\t[onChange],\n\t);\n\n\tconst removeReference = useCallback(\n\t\t(kind: 'tool' | 'subagent', id: string) => {\n\t\t\tconst token =\n\t\t\t\tkind === 'tool'\n\t\t\t\t\t? (() => {\n\t\t\t\t\t\t\tconst tool = availableTools.find((t) => t.tool_id === id);\n\t\t\t\t\t\t\treturn tool ? `{{tool:${tool.function_key}}}` : null;\n\t\t\t\t\t })()\n\t\t\t\t\t: `{{subagent:${id}}}`;\n\t\t\tconst strip = (text: string) =>\n\t\t\t\ttoken ? text.split(token).join('') : text;\n\n\t\t\t// Snapshot the four fields a removal touches, for undo.\n\t\t\tundoSnapshotRef.current = {\n\t\t\t\ttools: value.tools,\n\t\t\t\tsubagents: value.subagents,\n\t\t\t\tinstructions: value.instructions,\n\t\t\t\tguardrail: value.guardrail,\n\t\t\t};\n\n\t\t\tconst next: Partial<AgentValue> = {\n\t\t\t\tinstructions: strip(value.instructions),\n\t\t\t\tguardrail: strip(value.guardrail ?? ''),\n\t\t\t\t...(kind === 'tool'\n\t\t\t\t\t? { tools: value.tools.filter((t) => t !== id) }\n\t\t\t\t\t: { subagents: value.subagents.filter((s) => s !== id) }),\n\t\t\t};\n\t\t\tonChange(next);\n\t\t\tsetMentionResetKey((k) => k + 1);\n\n\t\t\tconst label =\n\t\t\t\tkind === 'tool'\n\t\t\t\t\t? availableTools.find((t) => t.tool_id === id)?.display_name ?? 'Tool'\n\t\t\t\t\t: availableSubAgents.find((s) => s.id === id)?.name ?? 'Sub-agent';\n\t\t\tundoIdRef.current += 1;\n\t\t\tsetUndoToast({\n\t\t\t\tid: undoIdRef.current,\n\t\t\t\tmessage: `${kind === 'tool' ? 'Tool' : 'Sub-agent'} \"${label}\" removed`,\n\t\t\t});\n\t\t},\n\t\t[availableTools, availableSubAgents, value, onChange],\n\t);\n\n\tconst undoRemoval = useCallback(() => {\n\t\tif (undoSnapshotRef.current) {\n\t\t\tonChange(undoSnapshotRef.current);\n\t\t\tundoSnapshotRef.current = null;\n\t\t\tsetMentionResetKey((k) => k + 1);\n\t\t}\n\t\tsetUndoToast(null);\n\t}, [onChange]);\n\n\tconst dismissUndo = useCallback(() => setUndoToast(null), []);\n\n\t// Consumer overrides merged over the built-in defaults (name 60, rest 1000).\n\tconst charLimits = useMemo<AgentCharLimits>(\n\t\t() => ({ ...AGENT_CHAR_LIMITS, ...charLimitsOverride }),\n\t\t[charLimitsOverride],\n\t);\n\n\tconst validation: StepValidation = useMemo(\n\t\t() => ({ ...deriveValidation(value, charLimits), ...validationOverride }),\n\t\t[value, charLimits, 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\taddReference,\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\tcharLimits,\n\t\t\tdisableStepNavigation,\n\t\t\tonCreateSubAgent,\n\t\t\tregisterSubAgentCreator,\n\t\t\trequestCreateSubAgent,\n\t\t\tonFetchSubAgent,\n\t\t\tonUpdateSubAgent,\n\t\t\tonImproveSubAgent,\n\t\t}),\n\t\t[\n\t\t\tvalue,\n\t\t\tpatch,\n\t\t\tupdateField,\n\t\t\taddReference,\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\tcharLimits,\n\t\t\tdisableStepNavigation,\n\t\t\tonCreateSubAgent,\n\t\t\tregisterSubAgentCreator,\n\t\t\trequestCreateSubAgent,\n\t\t\tonFetchSubAgent,\n\t\t\tonUpdateSubAgent,\n\t\t\tonImproveSubAgent,\n\t\t],\n\t);\n\n\treturn (\n\t\t<AgentBuilderContext.Provider value={ctx}>\n\t\t\t{children}\n\t\t</AgentBuilderContext.Provider>\n\t);\n};\n"],"names":["AgentBuilderContext","React","useAgentBuilderContext","ctx","useContext","deriveValidation","value","limits","triggerValid","AgentBuilderProvider","onChange","controlledStep","onStepChange","availableTools","availableSubAgents","availableIntents","availableModels","validationOverride","applicationType","charLimitsOverride","disableStepNavigation","onCreateSubAgent","onFetchSubAgent","onUpdateSubAgent","onImproveSubAgent","children","internalStep","setInternalStep","useState","activeStep","activeIndex","getStepIndex","valueRef","useRef","mentionResetKey","setMentionResetKey","mentionInsertersRef","lastFocusedFieldRef","registerMentionField","useCallback","fieldKey","fn","notifyMentionFocus","subAgentCreatorRef","registerSubAgentCreator","requestCreateSubAgent","insertMention","kind","id","label","inserters","undoToast","setUndoToast","undoSnapshotRef","undoIdRef","goToStep","step","goNext","next","STEP_KEYS","goPrev","prev","patch","partial","updateField","key","val","addReference","v","removeReference","token","tool","t","strip","text","s","k","undoRemoval","dismissUndo","charLimits","useMemo","AGENT_CHAR_LIMITS","validation"],"mappings":"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"}
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 type { AgentCharLimits } 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/**\n\t * Append a tool / sub-agent id to its list (deduped), reading the LATEST value\n\t * via a ref. Use this instead of `patch({ tools: [...value.tools, id] })` from\n\t * any handler that may be captured with a stale `value` — notably the `@`\n\t * editor's mount-time `onSelect`, which would otherwise keep only the last pick.\n\t */\n\taddReference: (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/** Resolved per-field character limits (consumer overrides merged over defaults). */\n\tcharLimits: AgentCharLimits;\n\t/** When true, step-rail items are not clickable (Back / Next only). */\n\tdisableStepNavigation: boolean;\n\n\t// Sub-agent creation (Step 3 drawer)\n\t/** Persist a new sub-agent and resolve with its ref. Omit to hide the create flow. */\n\tonCreateSubAgent?: (draft: SubAgentDraft) => Promise<SubAgentRef>;\n\t/**\n\t * Step 3 registers its \"open create-sub-agent drawer\" action here so the `@`\n\t * picker's \"Create new\" row can trigger it. Pass `null` to unregister.\n\t */\n\tregisterSubAgentCreator: (fn: (() => void) | null) => void;\n\t/** Open the create-sub-agent drawer (no-op until Step 3 registers it). */\n\trequestCreateSubAgent: () => void;\n\t/** Fetch a sub-agent's editable data (Configure). Omit to hide Configure. */\n\tonFetchSubAgent?: (id: string) => Promise<SubAgentDraft>;\n\t/** Persist edits to an existing sub-agent. */\n\tonUpdateSubAgent?: (id: string, draft: SubAgentDraft) => Promise<SubAgentRef>;\n\t/** Optional \"Improve with AI\" for the drawer's instructions / guardrails. */\n\tonImproveSubAgent?: (\n\t\tkind: 'instructions' | 'guardrail',\n\t\ttext: string,\n\t) => Promise<string>;\n}\n\nconst AgentBuilderContext =\n\tReact.createContext<AgentBuilderContextShape | null>(null);\n\nexport const useAgentBuilderContext = (): AgentBuilderContextShape => {\n\tconst ctx = useContext(AgentBuilderContext);\n\tif (!ctx) {\n\t\tthrow new Error(\n\t\t\t'useAgentBuilderContext must be used within an AgentBuilderProvider',\n\t\t);\n\t}\n\treturn ctx;\n};\n\n/** Validity derived purely from the current value (no effects). */\nconst deriveValidation = (\n\tvalue: AgentValue,\n\tlimits: AgentCharLimits,\n): StepValidation => {\n\tconst triggerValid =\n\t\tvalue.trigger.mode === 'custom_intent'\n\t\t\t? (value.trigger.custom_intent ?? '').trim().length > 0\n\t\t\t: value.trigger.intents.length > 0;\n\n\treturn {\n\t\tabout:\n\t\t\tvalue.name.trim().length > 0 &&\n\t\t\tvalue.name.length <= limits.name &&\n\t\t\tvalue.description.length <= 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\tcharLimits?: Partial<AgentCharLimits>;\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\tcharLimits: charLimitsOverride,\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// Latest value, so closure-captured handlers (e.g. the `@` editor's mount-time\n\t// mention onSelect) append against the current lists, not a stale snapshot.\n\tconst valueRef = useRef(value);\n\tvalueRef.current = value;\n\n\t// Bumped when a mention field is edited from OUTSIDE its editor (removing a\n\t// tool from the side list, undo), forcing the mention editors to remount.\n\tconst [mentionResetKey, setMentionResetKey] = useState(0);\n\n\t// Each mention field registers an editor-backed insert fn + reports focus, so\n\t// side-panel adds drop a chip into the last-focused field at its cursor.\n\tconst mentionInsertersRef = useRef<\n\t\tPartial<Record<MentionFieldKey, MentionInsertFn>>\n\t>({});\n\tconst lastFocusedFieldRef = useRef<MentionFieldKey>('instructions');\n\tconst registerMentionField = useCallback(\n\t\t(fieldKey: MentionFieldKey, fn: MentionInsertFn | null) => {\n\t\t\tif (fn) {\n\t\t\t\tmentionInsertersRef.current[fieldKey] = fn;\n\t\t\t} else {\n\t\t\t\tdelete mentionInsertersRef.current[fieldKey];\n\t\t\t}\n\t\t},\n\t\t[],\n\t);\n\tconst notifyMentionFocus = useCallback((fieldKey: MentionFieldKey) => {\n\t\tlastFocusedFieldRef.current = fieldKey;\n\t}, []);\n\n\t// Step 3 registers its drawer opener here; the `@` picker's \"Create new\" calls it.\n\tconst subAgentCreatorRef = useRef<(() => void) | null>(null);\n\tconst registerSubAgentCreator = useCallback((fn: (() => void) | null) => {\n\t\tsubAgentCreatorRef.current = fn;\n\t}, []);\n\tconst requestCreateSubAgent = useCallback(() => {\n\t\tsubAgentCreatorRef.current?.();\n\t}, []);\n\tconst insertMention = useCallback<MentionInsertFn>((kind, id, label) => {\n\t\tconst inserters = mentionInsertersRef.current;\n\t\tconst target =\n\t\t\tinserters[lastFocusedFieldRef.current] ?? inserters.instructions;\n\t\ttarget?.(kind, id, label);\n\t}, []);\n\n\t// Undo state for the most recent removal.\n\tconst [undoToast, setUndoToast] = useState<UndoToastState | null>(null);\n\tconst undoSnapshotRef = useRef<Partial<AgentValue> | null>(null);\n\tconst undoIdRef = useRef(0);\n\n\tconst goToStep = useCallback(\n\t\t(step: StepKey) => {\n\t\t\tif (controlledStep === undefined) {\n\t\t\t\tsetInternalStep(step);\n\t\t\t}\n\t\t\tonStepChange?.(step);\n\t\t},\n\t\t[controlledStep, onStepChange],\n\t);\n\n\tconst goNext = useCallback(() => {\n\t\tconst next = STEP_KEYS[Math.min(activeIndex + 1, STEP_KEYS.length - 1)];\n\t\tgoToStep(next);\n\t}, [activeIndex, goToStep]);\n\n\tconst goPrev = useCallback(() => {\n\t\tconst prev = STEP_KEYS[Math.max(activeIndex - 1, 0)];\n\t\tgoToStep(prev);\n\t}, [activeIndex, goToStep]);\n\n\tconst patch = useCallback(\n\t\t(partial: Partial<AgentValue>) => onChange(partial),\n\t\t[onChange],\n\t);\n\n\tconst updateField = useCallback(\n\t\t<K extends keyof AgentValue>(key: K, val: AgentValue[K]) =>\n\t\t\tonChange({ [key]: val } as Partial<AgentValue>),\n\t\t[onChange],\n\t);\n\n\tconst addReference = useCallback(\n\t\t(kind: 'tool' | 'subagent', id: string) => {\n\t\t\tconst v = valueRef.current;\n\t\t\tif (kind === 'tool') {\n\t\t\t\tif (!v.tools.includes(id)) {\n\t\t\t\t\tonChange({ tools: [...v.tools, id] });\n\t\t\t\t}\n\t\t\t} else if (!v.subagents.includes(id)) {\n\t\t\t\tonChange({ subagents: [...v.subagents, id] });\n\t\t\t}\n\t\t},\n\t\t[onChange],\n\t);\n\n\tconst removeReference = useCallback(\n\t\t(kind: 'tool' | 'subagent', id: string) => {\n\t\t\t// Tokens store the id for both kinds (a tool's id is its tool_id).\n\t\t\tconst token = kind === 'tool' ? `{{tool:${id}}}` : `{{subagent:${id}}}`;\n\t\t\tconst strip = (text: string) => text.split(token).join('');\n\n\t\t\t// Snapshot the four fields a removal touches, for undo.\n\t\t\tundoSnapshotRef.current = {\n\t\t\t\ttools: value.tools,\n\t\t\t\tsubagents: value.subagents,\n\t\t\t\tinstructions: value.instructions,\n\t\t\t\tguardrail: value.guardrail,\n\t\t\t};\n\n\t\t\tconst next: Partial<AgentValue> = {\n\t\t\t\tinstructions: strip(value.instructions),\n\t\t\t\tguardrail: strip(value.guardrail ?? ''),\n\t\t\t\t...(kind === 'tool'\n\t\t\t\t\t? { tools: value.tools.filter((t) => t !== id) }\n\t\t\t\t\t: { subagents: value.subagents.filter((s) => s !== id) }),\n\t\t\t};\n\t\t\tonChange(next);\n\t\t\tsetMentionResetKey((k) => k + 1);\n\n\t\t\tconst label =\n\t\t\t\tkind === 'tool'\n\t\t\t\t\t? availableTools.find((t) => t.tool_id === id)?.display_name ?? 'Tool'\n\t\t\t\t\t: availableSubAgents.find((s) => s.id === id)?.name ?? 'Sub-agent';\n\t\t\tundoIdRef.current += 1;\n\t\t\tsetUndoToast({\n\t\t\t\tid: undoIdRef.current,\n\t\t\t\tmessage: `${kind === 'tool' ? 'Tool' : 'Sub-agent'} \"${label}\" removed`,\n\t\t\t});\n\t\t},\n\t\t[availableTools, availableSubAgents, value, onChange],\n\t);\n\n\tconst undoRemoval = useCallback(() => {\n\t\tif (undoSnapshotRef.current) {\n\t\t\tonChange(undoSnapshotRef.current);\n\t\t\tundoSnapshotRef.current = null;\n\t\t\tsetMentionResetKey((k) => k + 1);\n\t\t}\n\t\tsetUndoToast(null);\n\t}, [onChange]);\n\n\tconst dismissUndo = useCallback(() => setUndoToast(null), []);\n\n\t// Consumer overrides merged over the built-in defaults (name 60, rest 1000).\n\tconst charLimits = useMemo<AgentCharLimits>(\n\t\t() => ({ ...AGENT_CHAR_LIMITS, ...charLimitsOverride }),\n\t\t[charLimitsOverride],\n\t);\n\n\tconst validation: StepValidation = useMemo(\n\t\t() => ({ ...deriveValidation(value, charLimits), ...validationOverride }),\n\t\t[value, charLimits, 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\taddReference,\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\tcharLimits,\n\t\t\tdisableStepNavigation,\n\t\t\tonCreateSubAgent,\n\t\t\tregisterSubAgentCreator,\n\t\t\trequestCreateSubAgent,\n\t\t\tonFetchSubAgent,\n\t\t\tonUpdateSubAgent,\n\t\t\tonImproveSubAgent,\n\t\t}),\n\t\t[\n\t\t\tvalue,\n\t\t\tpatch,\n\t\t\tupdateField,\n\t\t\taddReference,\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\tcharLimits,\n\t\t\tdisableStepNavigation,\n\t\t\tonCreateSubAgent,\n\t\t\tregisterSubAgentCreator,\n\t\t\trequestCreateSubAgent,\n\t\t\tonFetchSubAgent,\n\t\t\tonUpdateSubAgent,\n\t\t\tonImproveSubAgent,\n\t\t],\n\t);\n\n\treturn (\n\t\t<AgentBuilderContext.Provider value={ctx}>\n\t\t\t{children}\n\t\t</AgentBuilderContext.Provider>\n\t);\n};\n"],"names":["AgentBuilderContext","React","useAgentBuilderContext","ctx","useContext","deriveValidation","value","limits","triggerValid","AgentBuilderProvider","onChange","controlledStep","onStepChange","availableTools","availableSubAgents","availableIntents","availableModels","validationOverride","applicationType","charLimitsOverride","disableStepNavigation","onCreateSubAgent","onFetchSubAgent","onUpdateSubAgent","onImproveSubAgent","children","internalStep","setInternalStep","useState","activeStep","activeIndex","getStepIndex","valueRef","useRef","mentionResetKey","setMentionResetKey","mentionInsertersRef","lastFocusedFieldRef","registerMentionField","useCallback","fieldKey","fn","notifyMentionFocus","subAgentCreatorRef","registerSubAgentCreator","requestCreateSubAgent","insertMention","kind","id","label","inserters","undoToast","setUndoToast","undoSnapshotRef","undoIdRef","goToStep","step","goNext","next","STEP_KEYS","goPrev","prev","patch","partial","updateField","key","val","addReference","v","removeReference","token","strip","text","t","s","k","undoRemoval","dismissUndo","charLimits","useMemo","AGENT_CHAR_LIMITS","validation"],"mappings":"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"}
@@ -6,9 +6,9 @@ import { AgentTool, SubAgentRef } from '../AgentBuilder.model';
6
6
  * `instructions` string.
7
7
  *
8
8
  * Firebase stores `instructions` as PLAIN TEXT with inline reference tokens:
9
- * - `{{subagent:<agentId>}}` — hand-off to another agent
10
- * - `{{tool:<function_key>}}` — an action the agent can call
11
- * - `{{<variableName>}}` — a template variable
9
+ * - `{{subagent:<agentId>}}` — hand-off to another agent
10
+ * - `{{tool:<tool_id>}}` — an action the agent can call
11
+ * - `{{<variableName>}}` — a template variable
12
12
  *
13
13
  * In the editor those references are inserted via the `@` mention menu (which we
14
14
  * populate with BOTH tools and sub-agents). Mention nodes keep their `id` in the
@@ -18,8 +18,6 @@ import { AgentTool, SubAgentRef } from '../AgentBuilder.model';
18
18
  export interface MentionKindMeta {
19
19
  /** Distinguishes a tool reference from a sub-agent reference. */
20
20
  kind: 'tool' | 'subagent';
21
- /** For tools: the function_key used in the `{{tool:KEY}}` token. */
22
- functionKey?: string;
23
21
  /** Plain item name (no prefix) shown in the picker dropdown rows. */
24
22
  plainLabel?: string;
25
23
  /** For tools: the source bucket (manifest / shopify / …) the picker groups by. */
@@ -55,7 +53,7 @@ export declare const buildMentionHtml: (id: string, label: string, kind: 'tool'
55
53
  export declare const instructionsToEditorHtml: (text: string, mentionItems?: MentionItem[]) => string;
56
54
  /**
57
55
  * Convert a BikEditor document (from `ref.getJSON()`) into the firebase
58
- * instructions string, replacing mention nodes with `{{subagent:ID}}` /
59
- * `{{tool:KEY}}` tokens.
56
+ * instructions string, replacing mention nodes with `{{subagent:<id>}}` /
57
+ * `{{tool:<tool_id>}}` tokens.
60
58
  */
61
59
  export declare const editorDocToInstructions: (doc: Record<string, unknown> | null, tools: AgentTool[]) => string;
@@ -5,64 +5,67 @@ const d = {
5
5
  }, m = (t, e = "Manifest") => t ? d[t] ?? t : e, k = (t) => {
6
6
  const e = t ? String(t) : "";
7
7
  return e === "BIK" ? "BIK" : e === "BSP" ? "BSP" : "Manifest";
8
- }, y = (t, e, n = "Manifest") => [
8
+ }, S = (t, e, n = "Manifest") => [
9
9
  ...t.map(
10
- (i) => ({
11
- id: i.tool_id,
12
- label: `${m(i.source, n)} : ${i.display_name}`,
10
+ (a) => ({
11
+ id: a.tool_id,
12
+ label: `${m(a.source, n)} : ${a.display_name}`,
13
13
  meta: {
14
14
  kind: "tool",
15
- functionKey: i.function_key,
16
- plainLabel: i.display_name,
17
- source: i.source
15
+ plainLabel: a.display_name,
16
+ source: a.source
18
17
  }
19
18
  })
20
19
  ),
21
20
  ...e.map(
22
- (i) => ({
23
- id: i.id,
24
- label: `sub-agent: ${i.name}`,
25
- meta: { kind: "subagent", plainLabel: i.name }
21
+ (a) => ({
22
+ id: a.id,
23
+ label: `sub-agent: ${a.name}`,
24
+ meta: { kind: "subagent", plainLabel: a.name }
26
25
  })
27
26
  )
28
- ], a = (t) => t.replace(/&/g, "&amp;").replace(/</g, "&lt;").replace(/>/g, "&gt;"), s = (t) => a(t).replace(/"/g, "&quot;"), c = (t, e, n) => `<span data-type="mentionAgent" class="bik-mention bik-mention--agent" data-id="${s(t)}" data-label="${s(e)}" data-kind="${s(n)}">${a(e)}</span>`, $ = (t, e, n) => c(t, e, n), f = (t) => {
27
+ ], i = (t) => t.replace(/&/g, "&amp;").replace(/</g, "&lt;").replace(/>/g, "&gt;"), r = (t) => i(t).replace(/"/g, "&quot;"), c = (t, e, n) => `<span data-type="mentionAgent" class="bik-mention bik-mention--agent" data-id="${r(t)}" data-label="${r(e)}" data-kind="${r(n)}">${i(e)}</span>`, $ = (t, e, n) => c(t, e, n), g = (t) => {
29
28
  const e = /* @__PURE__ */ new Map();
30
29
  for (const n of t) {
31
- const i = n.meta;
32
- i?.kind === "tool" && i.functionKey ? e.set(`tool:${i.functionKey}`, n) : i?.kind === "subagent" && e.set(`subagent:${String(n.id)}`, n);
30
+ const a = n.meta;
31
+ a?.kind === "tool" ? e.set(`tool:${String(n.id)}`, n) : a?.kind === "subagent" && e.set(`subagent:${String(n.id)}`, n);
33
32
  }
34
33
  return e;
35
- }, l = /\{\{(tool:[^}]+|subagent:[^}]+)\}\}/g, g = (t, e) => {
36
- let n = "", i = 0;
34
+ }, l = /\{\{(tool:[^}]+|subagent:[^}]+)\}\}/g, b = (t, e) => {
35
+ let n = "", a = 0;
37
36
  l.lastIndex = 0;
38
37
  let o;
39
38
  for (; (o = l.exec(t)) !== null; ) {
40
- n += a(t.slice(i, o.index));
41
- const r = e.get(o[1]);
42
- if (r) {
43
- const p = r.meta.kind;
44
- n += c(String(r.id), r.label, p);
39
+ n += i(t.slice(a, o.index));
40
+ const s = e.get(o[1]);
41
+ if (s) {
42
+ const p = s.meta.kind;
43
+ n += c(String(s.id), s.label, p);
45
44
  } else
46
- n += a(o[0]);
47
- i = l.lastIndex;
45
+ n += i(o[0]);
46
+ a = l.lastIndex;
48
47
  }
49
- return n += a(t.slice(i)), n.replace(/\n/g, "<br>");
50
- }, S = (t, e = []) => {
48
+ return n += i(t.slice(a)), n.replace(/\n/g, "<br>");
49
+ }, T = (t, e = []) => {
51
50
  if (!t)
52
51
  return "";
53
- const n = f(e);
54
- return t.split(/\n{2,}/).map((i) => `<p>${g(i, n)}</p>`).join("");
55
- }, b = (t, e) => {
56
- const n = e[t];
57
- return n ? `{{tool:${n}}}` : `{{subagent:${t}}}`;
58
- }, u = (t, e) => {
52
+ const n = g(e);
53
+ return t.split(/\n{2,}/).map((a) => `<p>${b(a, n)}</p>`).join("");
54
+ }, f = (t, e, n) => (e ?? (n.has(t) ? "tool" : "subagent")) === "tool" ? `{{tool:${t}}}` : `{{subagent:${t}}}`, u = (t, e) => {
59
55
  switch (t.type) {
60
56
  case "text":
61
57
  return t.text ?? "";
62
58
  case "mentionAgent":
63
59
  case "mentionTeam": {
64
60
  const n = t.attrs?.id;
65
- return n == null ? "" : b(String(n), e);
61
+ if (n == null)
62
+ return "";
63
+ const a = t.attrs?.kind;
64
+ return f(
65
+ String(n),
66
+ a == null ? null : String(a),
67
+ e
68
+ );
66
69
  }
67
70
  case "variable":
68
71
  return `{{${String(t.attrs?.variableName ?? "")}}}`;
@@ -75,10 +78,10 @@ const d = {
75
78
  ` : n;
76
79
  }
77
80
  }
78
- }, T = (t, e) => {
81
+ }, y = (t, e) => {
79
82
  if (!t)
80
83
  return "";
81
- const n = e.reduce((i, o) => (i[o.tool_id] = o.function_key, i), {});
84
+ const n = new Set(e.map((a) => a.tool_id));
82
85
  return u(t, n).replace(
83
86
  /\n+$/,
84
87
  ""
@@ -87,10 +90,10 @@ const d = {
87
90
  export {
88
91
  d as TOOL_SOURCE_LABELS,
89
92
  k as appTypeLabel,
90
- y as buildAgentMentionItems,
93
+ S as buildAgentMentionItems,
91
94
  $ as buildMentionHtml,
92
- T as editorDocToInstructions,
93
- S as instructionsToEditorHtml,
95
+ y as editorDocToInstructions,
96
+ T as instructionsToEditorHtml,
94
97
  m as toolSourceLabel
95
98
  };
96
99
  //# sourceMappingURL=mentionSerialization.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"mentionSerialization.js","sources":["../../../../../src/components/agent-builder/utils/mentionSerialization.ts"],"sourcesContent":["import type { ApplicationType } from '@bikdotai/bik-models/growth';\nimport { MentionItem } from '@src/editor';\nimport { AgentTool, SubAgentRef } from '../AgentBuilder.model';\n\n/**\n * Serialization helpers between the BikEditor document and the firebase\n * `instructions` string.\n *\n * Firebase stores `instructions` as PLAIN TEXT with inline reference tokens:\n * - `{{subagent:<agentId>}}` — hand-off to another agent\n * - `{{tool:<function_key>}}` — an action the agent can call\n * - `{{<variableName>}}` — a template variable\n *\n * In the editor those references are inserted via the `@` mention menu (which we\n * populate with BOTH tools and sub-agents). Mention nodes keep their `id` in the\n * ProseMirror doc JSON (the rendered HTML drops it), so we serialize from the doc\n * JSON — not from HTML.\n */\n\nexport interface MentionKindMeta {\n\t/** Distinguishes a tool reference from a sub-agent reference. */\n\tkind: 'tool' | 'subagent';\n\t/** For tools: the function_key used in the `{{tool:KEY}}` token. */\n\tfunctionKey?: string;\n\t/** Plain item name (no prefix) shown in the picker dropdown rows. */\n\tplainLabel?: string;\n\t/** For tools: the source bucket (manifest / shopify / …) the picker groups by. */\n\tsource?: string;\n}\n\n/** Display labels for the known tool sources (drives picker headers + chip prefix). */\nexport const TOOL_SOURCE_LABELS: Record<string, string> = {\n\tmanifest: 'Manifest',\n\tshopify: 'Shopify',\n\tintegration: 'Integration',\n};\n\n/** Human label for a tool source; falls back to the host-app label, then the raw key. */\nexport const toolSourceLabel = (\n\tsource: string | undefined,\n\tfallback = 'Manifest',\n): string => {\n\tif (!source) {\n\t\treturn fallback;\n\t}\n\treturn TOOL_SOURCE_LABELS[source] ?? source;\n};\n\n/** Human label for the host application, used as the tool-chip prefix. */\nexport const appTypeLabel = (applicationType?: ApplicationType): string => {\n\tconst key = applicationType ? String(applicationType) : '';\n\tif (key === 'BIK') {\n\t\treturn 'BIK';\n\t}\n\tif (key === 'BSP') {\n\t\treturn 'BSP';\n\t}\n\treturn 'Manifest';\n};\n\n/**\n * Build the combined `@` mention list from the available tools + sub-agents.\n *\n * The `label` is the CHIP text shown once inserted — tools read\n * `\"<App> : <tool name>\"` (e.g. \"Manifest : Look up order\"), sub-agents read\n * `\"sub-agent: <name>\"`. `meta.plainLabel` is the un-prefixed name for the\n * picker rows, and `meta.kind` drives the `{{tool}}` / `{{subagent}}` colour.\n */\nexport const buildAgentMentionItems = (\n\ttools: AgentTool[],\n\tsubAgents: SubAgentRef[],\n\tappLabel = 'Manifest',\n): MentionItem[] => [\n\t...tools.map(\n\t\t(t): MentionItem => ({\n\t\t\tid: t.tool_id,\n\t\t\tlabel: `${toolSourceLabel(t.source, appLabel)} : ${t.display_name}`,\n\t\t\tmeta: {\n\t\t\t\tkind: 'tool',\n\t\t\t\tfunctionKey: t.function_key,\n\t\t\t\tplainLabel: t.display_name,\n\t\t\t\tsource: t.source,\n\t\t\t},\n\t\t}),\n\t),\n\t...subAgents.map(\n\t\t(s): MentionItem => ({\n\t\t\tid: s.id,\n\t\t\tlabel: `sub-agent: ${s.name}`,\n\t\t\tmeta: { kind: 'subagent', plainLabel: s.name },\n\t\t}),\n\t),\n];\n\nconst escapeHtml = (raw: string): string =>\n\traw.replace(/&/g, '&amp;').replace(/</g, '&lt;').replace(/>/g, '&gt;');\n\nconst escapeAttr = (raw: string): string =>\n\tescapeHtml(raw).replace(/\"/g, '&quot;');\n\n/**\n * The HTML for a single mention chip. Must round-trip through the TipTap mention\n * extension's `parseHTML` (`span[data-type=\"mentionAgent\"]`, reading\n * `data-id`/`data-label`/`data-kind`) — see MentionExtension.ts. `normalizeHtml`\n * is taught to keep `data-type=\"mention…\"` spans so this survives to the parser.\n */\nconst mentionSpanHtml = (id: string, label: string, kind: string): string =>\n\t`<span data-type=\"mentionAgent\" class=\"bik-mention bik-mention--agent\"` +\n\t` data-id=\"${escapeAttr(id)}\" data-label=\"${escapeAttr(label)}\"` +\n\t` data-kind=\"${escapeAttr(kind)}\">${escapeHtml(label)}</span>`;\n\n/**\n * Public: HTML for one mention chip, for inserting at the cursor (e.g. when a\n * tool / sub-agent is added from the Step-3 side panel). Round-trips through the\n * same parser path as the rehydrated chips.\n */\nexport const buildMentionHtml = (\n\tid: string,\n\tlabel: string,\n\tkind: 'tool' | 'subagent',\n): string => mentionSpanHtml(id, label, kind);\n\n/** `{{tool:KEY}}` / `{{subagent:ID}}` → the mention item that produced them. */\nconst buildTokenLookup = (\n\tmentionItems: MentionItem[],\n): Map<string, MentionItem> => {\n\tconst byToken = new Map<string, MentionItem>();\n\tfor (const item of mentionItems) {\n\t\tconst meta = item.meta as unknown as MentionKindMeta | undefined;\n\t\tif (meta?.kind === 'tool' && meta.functionKey) {\n\t\t\tbyToken.set(`tool:${meta.functionKey}`, item);\n\t\t} else if (meta?.kind === 'subagent') {\n\t\t\tbyToken.set(`subagent:${String(item.id)}`, item);\n\t\t}\n\t}\n\treturn byToken;\n};\n\n// Matches the reference tokens we render as chips. Other `{{var}}` tokens fall\n// through untouched (left as literal text for the variable decoration).\nconst REFERENCE_TOKEN = /\\{\\{(tool:[^}]+|subagent:[^}]+)\\}\\}/g;\n\n/** Escape plain text, swapping recognised reference tokens for mention spans. */\nconst inlineToHtml = (\n\tsegment: string,\n\tbyToken: Map<string, MentionItem>,\n): string => {\n\tlet out = '';\n\tlet lastIndex = 0;\n\tREFERENCE_TOKEN.lastIndex = 0;\n\tlet match: RegExpExecArray | null;\n\twhile ((match = REFERENCE_TOKEN.exec(segment)) !== null) {\n\t\tout += escapeHtml(segment.slice(lastIndex, match.index));\n\t\tconst item = byToken.get(match[1]);\n\t\tif (item) {\n\t\t\tconst kind = (item.meta as unknown as MentionKindMeta).kind;\n\t\t\tout += mentionSpanHtml(String(item.id), item.label, kind);\n\t\t} else {\n\t\t\t// Tool/sub-agent no longer in the available list → keep the raw token.\n\t\t\tout += escapeHtml(match[0]);\n\t\t}\n\t\tlastIndex = REFERENCE_TOKEN.lastIndex;\n\t}\n\tout += escapeHtml(segment.slice(lastIndex));\n\treturn out.replace(/\\n/g, '<br>');\n};\n\n/**\n * Convert the stored instructions string into HTML for `BikEditor.initialContent`.\n * `{{tool:KEY}}` / `{{subagent:ID}}` tokens are rehydrated into mention chips\n * (resolved via `mentionItems`); any other `{{…}}` token is left as literal text\n * for the editor's variable decoration. Newlines become paragraph / line breaks.\n */\nexport const instructionsToEditorHtml = (\n\ttext: string,\n\tmentionItems: MentionItem[] = [],\n): string => {\n\tif (!text) {\n\t\treturn '';\n\t}\n\tconst byToken = buildTokenLookup(mentionItems);\n\treturn text\n\t\t.split(/\\n{2,}/)\n\t\t.map((para) => `<p>${inlineToHtml(para, byToken)}</p>`)\n\t\t.join('');\n};\n\ninterface ProseMirrorNode {\n\ttype: string;\n\ttext?: string;\n\tattrs?: Record<string, unknown>;\n\tcontent?: ProseMirrorNode[];\n}\n\n/** Map of mention node id → token, derived from the available tools. */\nconst resolveMentionToken = (\n\tid: string,\n\ttoolKeyById: Record<string, string>,\n): string => {\n\tconst functionKey = toolKeyById[id];\n\tif (functionKey) {\n\t\treturn `{{tool:${functionKey}}}`;\n\t}\n\treturn `{{subagent:${id}}}`;\n};\n\nconst nodeToText = (\n\tnode: ProseMirrorNode,\n\ttoolKeyById: Record<string, string>,\n): string => {\n\tswitch (node.type) {\n\t\tcase 'text':\n\t\t\treturn node.text ?? '';\n\t\tcase 'mentionAgent':\n\t\tcase 'mentionTeam': {\n\t\t\tconst id = node.attrs?.['id'];\n\t\t\treturn id == null ? '' : resolveMentionToken(String(id), toolKeyById);\n\t\t}\n\t\tcase 'variable':\n\t\t\treturn `{{${String(node.attrs?.['variableName'] ?? '')}}}`;\n\t\tcase 'hardBreak':\n\t\t\treturn '\\n';\n\t\tdefault: {\n\t\t\tconst inner = (node.content ?? [])\n\t\t\t\t.map((child) => nodeToText(child, toolKeyById))\n\t\t\t\t.join('');\n\t\t\t// Block nodes terminate with a newline so paragraphs stay separated.\n\t\t\tconst BLOCK_NODES = ['paragraph', 'heading', 'listItem', 'blockquote'];\n\t\t\treturn BLOCK_NODES.includes(node.type) ? `${inner}\\n` : inner;\n\t\t}\n\t}\n};\n\n/**\n * Convert a BikEditor document (from `ref.getJSON()`) into the firebase\n * instructions string, replacing mention nodes with `{{subagent:ID}}` /\n * `{{tool:KEY}}` tokens.\n */\nexport const editorDocToInstructions = (\n\tdoc: Record<string, unknown> | null,\n\ttools: AgentTool[],\n): string => {\n\tif (!doc) {\n\t\treturn '';\n\t}\n\tconst toolKeyById = tools.reduce<Record<string, string>>((acc, t) => {\n\t\tacc[t.tool_id] = t.function_key;\n\t\treturn acc;\n\t}, {});\n\treturn nodeToText(doc as unknown as ProseMirrorNode, toolKeyById).replace(\n\t\t/\\n+$/,\n\t\t'',\n\t);\n};\n"],"names":["TOOL_SOURCE_LABELS","toolSourceLabel","source","fallback","appTypeLabel","applicationType","key","buildAgentMentionItems","tools","subAgents","appLabel","t","s","escapeHtml","raw","escapeAttr","mentionSpanHtml","id","label","kind","buildMentionHtml","buildTokenLookup","mentionItems","byToken","item","meta","REFERENCE_TOKEN","inlineToHtml","segment","out","lastIndex","match","instructionsToEditorHtml","text","para","resolveMentionToken","toolKeyById","functionKey","nodeToText","node","inner","child","editorDocToInstructions","doc","acc"],"mappings":"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"}
1
+ {"version":3,"file":"mentionSerialization.js","sources":["../../../../../src/components/agent-builder/utils/mentionSerialization.ts"],"sourcesContent":["import type { ApplicationType } from '@bikdotai/bik-models/growth';\nimport { MentionItem } from '@src/editor';\nimport { AgentTool, SubAgentRef } from '../AgentBuilder.model';\n\n/**\n * Serialization helpers between the BikEditor document and the firebase\n * `instructions` string.\n *\n * Firebase stores `instructions` as PLAIN TEXT with inline reference tokens:\n * - `{{subagent:<agentId>}}` — hand-off to another agent\n * - `{{tool:<tool_id>}}` — an action the agent can call\n * - `{{<variableName>}}` — a template variable\n *\n * In the editor those references are inserted via the `@` mention menu (which we\n * populate with BOTH tools and sub-agents). Mention nodes keep their `id` in the\n * ProseMirror doc JSON (the rendered HTML drops it), so we serialize from the doc\n * JSON — not from HTML.\n */\n\nexport interface MentionKindMeta {\n\t/** Distinguishes a tool reference from a sub-agent reference. */\n\tkind: 'tool' | 'subagent';\n\t/** Plain item name (no prefix) shown in the picker dropdown rows. */\n\tplainLabel?: string;\n\t/** For tools: the source bucket (manifest / shopify / …) the picker groups by. */\n\tsource?: string;\n}\n\n/** Display labels for the known tool sources (drives picker headers + chip prefix). */\nexport const TOOL_SOURCE_LABELS: Record<string, string> = {\n\tmanifest: 'Manifest',\n\tshopify: 'Shopify',\n\tintegration: 'Integration',\n};\n\n/** Human label for a tool source; falls back to the host-app label, then the raw key. */\nexport const toolSourceLabel = (\n\tsource: string | undefined,\n\tfallback = 'Manifest',\n): string => {\n\tif (!source) {\n\t\treturn fallback;\n\t}\n\treturn TOOL_SOURCE_LABELS[source] ?? source;\n};\n\n/** Human label for the host application, used as the tool-chip prefix. */\nexport const appTypeLabel = (applicationType?: ApplicationType): string => {\n\tconst key = applicationType ? String(applicationType) : '';\n\tif (key === 'BIK') {\n\t\treturn 'BIK';\n\t}\n\tif (key === 'BSP') {\n\t\treturn 'BSP';\n\t}\n\treturn 'Manifest';\n};\n\n/**\n * Build the combined `@` mention list from the available tools + sub-agents.\n *\n * The `label` is the CHIP text shown once inserted — tools read\n * `\"<App> : <tool name>\"` (e.g. \"Manifest : Look up order\"), sub-agents read\n * `\"sub-agent: <name>\"`. `meta.plainLabel` is the un-prefixed name for the\n * picker rows, and `meta.kind` drives the `{{tool}}` / `{{subagent}}` colour.\n */\nexport const buildAgentMentionItems = (\n\ttools: AgentTool[],\n\tsubAgents: SubAgentRef[],\n\tappLabel = 'Manifest',\n): MentionItem[] => [\n\t...tools.map(\n\t\t(t): MentionItem => ({\n\t\t\tid: t.tool_id,\n\t\t\tlabel: `${toolSourceLabel(t.source, appLabel)} : ${t.display_name}`,\n\t\t\tmeta: {\n\t\t\t\tkind: 'tool',\n\t\t\t\tplainLabel: t.display_name,\n\t\t\t\tsource: t.source,\n\t\t\t},\n\t\t}),\n\t),\n\t...subAgents.map(\n\t\t(s): MentionItem => ({\n\t\t\tid: s.id,\n\t\t\tlabel: `sub-agent: ${s.name}`,\n\t\t\tmeta: { kind: 'subagent', plainLabel: s.name },\n\t\t}),\n\t),\n];\n\nconst escapeHtml = (raw: string): string =>\n\traw.replace(/&/g, '&amp;').replace(/</g, '&lt;').replace(/>/g, '&gt;');\n\nconst escapeAttr = (raw: string): string =>\n\tescapeHtml(raw).replace(/\"/g, '&quot;');\n\n/**\n * The HTML for a single mention chip. Must round-trip through the TipTap mention\n * extension's `parseHTML` (`span[data-type=\"mentionAgent\"]`, reading\n * `data-id`/`data-label`/`data-kind`) — see MentionExtension.ts. `normalizeHtml`\n * is taught to keep `data-type=\"mention…\"` spans so this survives to the parser.\n */\nconst mentionSpanHtml = (id: string, label: string, kind: string): string =>\n\t`<span data-type=\"mentionAgent\" class=\"bik-mention bik-mention--agent\"` +\n\t` data-id=\"${escapeAttr(id)}\" data-label=\"${escapeAttr(label)}\"` +\n\t` data-kind=\"${escapeAttr(kind)}\">${escapeHtml(label)}</span>`;\n\n/**\n * Public: HTML for one mention chip, for inserting at the cursor (e.g. when a\n * tool / sub-agent is added from the Step-3 side panel). Round-trips through the\n * same parser path as the rehydrated chips.\n */\nexport const buildMentionHtml = (\n\tid: string,\n\tlabel: string,\n\tkind: 'tool' | 'subagent',\n): string => mentionSpanHtml(id, label, kind);\n\n/** `{{tool:<id>}}` / `{{subagent:<id>}}` → the mention item that produced them. */\nconst buildTokenLookup = (\n\tmentionItems: MentionItem[],\n): Map<string, MentionItem> => {\n\tconst byToken = new Map<string, MentionItem>();\n\tfor (const item of mentionItems) {\n\t\tconst meta = item.meta as unknown as MentionKindMeta | undefined;\n\t\t// Both tools and sub-agents are keyed by their id (a tool's id is its tool_id).\n\t\tif (meta?.kind === 'tool') {\n\t\t\tbyToken.set(`tool:${String(item.id)}`, item);\n\t\t} else if (meta?.kind === 'subagent') {\n\t\t\tbyToken.set(`subagent:${String(item.id)}`, item);\n\t\t}\n\t}\n\treturn byToken;\n};\n\n// Matches the reference tokens we render as chips. Other `{{var}}` tokens fall\n// through untouched (left as literal text for the variable decoration).\nconst REFERENCE_TOKEN = /\\{\\{(tool:[^}]+|subagent:[^}]+)\\}\\}/g;\n\n/** Escape plain text, swapping recognised reference tokens for mention spans. */\nconst inlineToHtml = (\n\tsegment: string,\n\tbyToken: Map<string, MentionItem>,\n): string => {\n\tlet out = '';\n\tlet lastIndex = 0;\n\tREFERENCE_TOKEN.lastIndex = 0;\n\tlet match: RegExpExecArray | null;\n\twhile ((match = REFERENCE_TOKEN.exec(segment)) !== null) {\n\t\tout += escapeHtml(segment.slice(lastIndex, match.index));\n\t\tconst item = byToken.get(match[1]);\n\t\tif (item) {\n\t\t\tconst kind = (item.meta as unknown as MentionKindMeta).kind;\n\t\t\tout += mentionSpanHtml(String(item.id), item.label, kind);\n\t\t} else {\n\t\t\t// Tool/sub-agent no longer in the available list → keep the raw token.\n\t\t\tout += escapeHtml(match[0]);\n\t\t}\n\t\tlastIndex = REFERENCE_TOKEN.lastIndex;\n\t}\n\tout += escapeHtml(segment.slice(lastIndex));\n\treturn out.replace(/\\n/g, '<br>');\n};\n\n/**\n * Convert the stored instructions string into HTML for `BikEditor.initialContent`.\n * `{{tool:KEY}}` / `{{subagent:ID}}` tokens are rehydrated into mention chips\n * (resolved via `mentionItems`); any other `{{…}}` token is left as literal text\n * for the editor's variable decoration. Newlines become paragraph / line breaks.\n */\nexport const instructionsToEditorHtml = (\n\ttext: string,\n\tmentionItems: MentionItem[] = [],\n): string => {\n\tif (!text) {\n\t\treturn '';\n\t}\n\tconst byToken = buildTokenLookup(mentionItems);\n\treturn text\n\t\t.split(/\\n{2,}/)\n\t\t.map((para) => `<p>${inlineToHtml(para, byToken)}</p>`)\n\t\t.join('');\n};\n\ninterface ProseMirrorNode {\n\ttype: string;\n\ttext?: string;\n\tattrs?: Record<string, unknown>;\n\tcontent?: ProseMirrorNode[];\n}\n\n/**\n * The token for a mention node. Both tools and sub-agents store their id in the\n * node, so the token value is just that id — the kind only picks the prefix. The\n * node's `kind` attr is authoritative; `toolIds` is a fallback for older content\n * saved before the kind attr existed.\n */\nconst resolveMentionToken = (\n\tid: string,\n\tkind: string | null,\n\ttoolIds: Set<string>,\n): string => {\n\tconst resolved = kind ?? (toolIds.has(id) ? 'tool' : 'subagent');\n\treturn resolved === 'tool' ? `{{tool:${id}}}` : `{{subagent:${id}}}`;\n};\n\nconst nodeToText = (node: ProseMirrorNode, toolIds: Set<string>): string => {\n\tswitch (node.type) {\n\t\tcase 'text':\n\t\t\treturn node.text ?? '';\n\t\tcase 'mentionAgent':\n\t\tcase 'mentionTeam': {\n\t\t\tconst id = node.attrs?.['id'];\n\t\t\tif (id == null) {\n\t\t\t\treturn '';\n\t\t\t}\n\t\t\tconst kind = node.attrs?.['kind'];\n\t\t\treturn resolveMentionToken(\n\t\t\t\tString(id),\n\t\t\t\tkind == null ? null : String(kind),\n\t\t\t\ttoolIds,\n\t\t\t);\n\t\t}\n\t\tcase 'variable':\n\t\t\treturn `{{${String(node.attrs?.['variableName'] ?? '')}}}`;\n\t\tcase 'hardBreak':\n\t\t\treturn '\\n';\n\t\tdefault: {\n\t\t\tconst inner = (node.content ?? [])\n\t\t\t\t.map((child) => nodeToText(child, toolIds))\n\t\t\t\t.join('');\n\t\t\t// Block nodes terminate with a newline so paragraphs stay separated.\n\t\t\tconst BLOCK_NODES = ['paragraph', 'heading', 'listItem', 'blockquote'];\n\t\t\treturn BLOCK_NODES.includes(node.type) ? `${inner}\\n` : inner;\n\t\t}\n\t}\n};\n\n/**\n * Convert a BikEditor document (from `ref.getJSON()`) into the firebase\n * instructions string, replacing mention nodes with `{{subagent:<id>}}` /\n * `{{tool:<tool_id>}}` tokens.\n */\nexport const editorDocToInstructions = (\n\tdoc: Record<string, unknown> | null,\n\ttools: AgentTool[],\n): string => {\n\tif (!doc) {\n\t\treturn '';\n\t}\n\tconst toolIds = new Set(tools.map((t) => t.tool_id));\n\treturn nodeToText(doc as unknown as ProseMirrorNode, toolIds).replace(\n\t\t/\\n+$/,\n\t\t'',\n\t);\n};\n"],"names":["TOOL_SOURCE_LABELS","toolSourceLabel","source","fallback","appTypeLabel","applicationType","key","buildAgentMentionItems","tools","subAgents","appLabel","t","s","escapeHtml","raw","escapeAttr","mentionSpanHtml","id","label","kind","buildMentionHtml","buildTokenLookup","mentionItems","byToken","item","meta","REFERENCE_TOKEN","inlineToHtml","segment","out","lastIndex","match","instructionsToEditorHtml","text","para","resolveMentionToken","toolIds","nodeToText","node","inner","child","editorDocToInstructions","doc"],"mappings":"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"}
@@ -1,15 +1,16 @@
1
1
  import { default as React } from 'react';
2
2
  import { AVATAR_BACKGROUND, AVATAR_TYPES, SIZE } from './AvatarHelper';
3
3
  export declare const AVATAR_SIZE_VS_ICON_SIZE_MAP: {
4
+ EXTRA_SMALL: number;
4
5
  SMALL: number;
5
6
  MEDIUM: number;
6
- INBOX: number;
7
7
  LARGE: number;
8
8
  };
9
9
  export declare const BACKGROUND_VS_TEXT_COLOR_MAP: {
10
10
  LIGHT: string;
11
11
  WHITE: string;
12
12
  DARK: string;
13
+ BRAND: string;
13
14
  };
14
15
  export type AvatarProps = {
15
16
  type: AVATAR_TYPES;
@@ -1,82 +1,60 @@
1
- import { jsxs as g, jsx as e } from "react/jsx-runtime";
2
- import { useState as k } from "react";
3
- import { AvatarStyle as v } from "./Avatar.styled.js";
4
- import { SIZE as a, AVATAR_TYPES as r, AVATAR_BACKGROUND as h, AVATAR_SIZE_MAP as o } from "./AvatarHelper.js";
5
- import { BodyTiny as R, TitleSmall as w, TitleMedium as O } from "../TypographyStyle.js";
1
+ import { jsxs as m, jsx as e } from "react/jsx-runtime";
2
+ import { useState as R } from "react";
3
+ import { TitleMedium as k, TitleSmall as A, SubHeading as w, BodyTiny as O } from "../TypographyStyle.js";
6
4
  import { COLORS as i } from "../../constants/Theme.js";
7
- import A from "../../assets/icons/bik_livechat.svg.js";
5
+ import x from "../../assets/icons/bik_livechat.svg.js";
8
6
  import u from "../../assets/icons/email-channel.svg.js";
9
7
  import d from "../../assets/icons/facebook_channel.svg.js";
10
8
  import z from "../../assets/icons/gmail.svg.js";
11
- import x from "../../assets/icons/instagram-channel.svg.js";
12
- import C from "../../assets/icons/task.svg.js";
13
- import B from "../../assets/icons/whatsapp_color.svg.js";
14
- const n = {
15
- [a.SMALL]: 16,
16
- [a.MEDIUM]: 20,
17
- [a.INBOX]: 24,
18
- [a.LARGE]: 32
19
- }, c = {
20
- [h.LIGHT]: i.content.secondary,
21
- [h.WHITE]: i.content.secondary,
22
- [h.DARK]: i.surface.standard
9
+ import C from "../../assets/icons/instagram-channel.svg.js";
10
+ import L from "../../assets/icons/task.svg.js";
11
+ import U from "../../assets/icons/whatsapp_color.svg.js";
12
+ import { AvatarStyle as B } from "./Avatar.styled.js";
13
+ import { SIZE as n, AVATAR_TYPES as r, AVATAR_BACKGROUND as s, AVATAR_SIZE_MAP as l } from "./AvatarHelper.js";
14
+ const a = {
15
+ [n.EXTRA_SMALL]: 10,
16
+ [n.SMALL]: 16,
17
+ [n.MEDIUM]: 20,
18
+ [n.LARGE]: 32
19
+ }, b = {
20
+ [s.LIGHT]: i.content.secondary,
21
+ [s.WHITE]: i.content.secondary,
22
+ [s.DARK]: i.surface.standard,
23
+ [s.BRAND]: i.background.inverseLight
23
24
  };
24
- var U = /* @__PURE__ */ ((t) => (t.INSTAGRAM = "instagram", t.MESSENGER = "messenger", t.WHATSAPP = "whatsapp", t.GMAIL = "gmail", t.LIVECHAT = "livechat", t.GOOGLE_BUSINESS_CHAT = "gbm", t.SHOPIFY = "shopify", t.FACEBOOK = "facebook", t.EMAIL = "email", t.SMTP = "smtp", t.FACEBOOK_CATALOG = "facebook-catalog", t.TASKS = "tasks", t.BIK_LIVECHAT = "livechat", t))(U || {});
25
- const Y = (t) => {
26
- const [l, b] = k(!1), m = () => {
27
- const s = (t.name || "").split(".").join(" ").split(" ").map((T) => T.charAt(0).toUpperCase()).slice(0, 2).join("");
28
- if (t.size === a.SMALL)
29
- return /* @__PURE__ */ e(
30
- R,
31
- {
32
- style: { color: c[t.background] },
33
- children: s
34
- }
35
- );
36
- if (t.size === a.MEDIUM || t.size === a.INBOX)
37
- return /* @__PURE__ */ e(
38
- w,
39
- {
40
- style: { color: c[t.background] },
41
- children: s
42
- }
43
- );
44
- if (t.size === a.LARGE)
45
- return /* @__PURE__ */ e(
46
- O,
47
- {
48
- style: { color: c[t.background] },
49
- children: s
50
- }
51
- );
52
- }, I = () => t.useNameFallback && (!t.photoUrl || l) && t.name ? /* @__PURE__ */ e("div", { children: m() }) : t.useNameFallback && t.photoUrl && !l ? /* @__PURE__ */ e(
25
+ var P = /* @__PURE__ */ ((t) => (t.INSTAGRAM = "instagram", t.MESSENGER = "messenger", t.WHATSAPP = "whatsapp", t.GMAIL = "gmail", t.LIVECHAT = "livechat", t.GOOGLE_BUSINESS_CHAT = "gbm", t.SHOPIFY = "shopify", t.FACEBOOK = "facebook", t.EMAIL = "email", t.SMTP = "smtp", t.FACEBOOK_CATALOG = "facebook-catalog", t.TASKS = "tasks", t.BIK_LIVECHAT = "livechat", t))(P || {});
26
+ const J = (t) => {
27
+ const [h, f] = R(!1), g = () => {
28
+ const o = (t.name || "").split(".").join(" ").split(" ").map((v) => v.charAt(0).toUpperCase()).slice(0, 2).join(""), c = b[t.background];
29
+ return t.size === n.LARGE ? /* @__PURE__ */ e(k, { style: { color: c }, children: o }) : t.size === n.MEDIUM ? /* @__PURE__ */ e(A, { style: { color: c }, children: o }) : t.size === n.SMALL ? /* @__PURE__ */ e(w, { style: { color: c }, children: o }) : /* @__PURE__ */ e(O, { style: { color: c, fontSize: "6.667px", lineHeight: "8px" }, children: o });
30
+ }, I = () => t.useNameFallback && (!t.photoUrl || h) && t.name ? /* @__PURE__ */ e("div", { children: g() }) : t.useNameFallback && t.photoUrl && !h ? /* @__PURE__ */ e(
53
31
  "img",
54
32
  {
55
33
  alt: "",
56
- width: o[t.size],
57
- height: o[t.size],
34
+ width: l[t.size],
35
+ height: l[t.size],
58
36
  style: {
59
37
  borderRadius: t?.borderRadius || "50%",
60
38
  objectFit: "contain"
61
39
  },
62
40
  src: t.photoUrl,
63
41
  onError: () => {
64
- b(!0);
42
+ f(!0);
65
43
  }
66
44
  }
67
45
  ) : /* @__PURE__ */ e(
68
46
  "img",
69
47
  {
70
48
  alt: "",
71
- width: o[t.size],
72
- height: o[t.size],
49
+ width: l[t.size],
50
+ height: l[t.size],
73
51
  style: {
74
52
  borderRadius: t?.borderRadius || "50%",
75
53
  objectFit: "contain"
76
54
  },
77
55
  src: t.photoUrl
78
56
  }
79
- ), f = () => {
57
+ ), y = () => {
80
58
  switch (t.channelName) {
81
59
  case "email":
82
60
  return /* @__PURE__ */ e(u, { width: 11, height: 11 });
@@ -89,17 +67,17 @@ const Y = (t) => {
89
67
  case "messenger":
90
68
  return /* @__PURE__ */ e(d, { width: 11, height: 11 });
91
69
  case "instagram":
92
- return /* @__PURE__ */ e(x, { width: 11, height: 11 });
70
+ return /* @__PURE__ */ e(C, { width: 11, height: 11 });
93
71
  case "whatsapp":
94
- return /* @__PURE__ */ e(B, { width: 11, height: 11 });
72
+ return /* @__PURE__ */ e(U, { width: 11, height: 11 });
95
73
  case "gmail":
96
74
  return /* @__PURE__ */ e(z, { width: 11, height: 11 });
97
75
  case "tasks":
98
- return /* @__PURE__ */ e(C, { width: 11, height: 11 });
76
+ return /* @__PURE__ */ e(L, { width: 11, height: 11 });
99
77
  case "livechat":
100
- return /* @__PURE__ */ e(A, { width: 11, height: 11 });
78
+ return /* @__PURE__ */ e(x, { width: 11, height: 11 });
101
79
  }
102
- }, y = () => t.status ? /* @__PURE__ */ e(
80
+ }, T = () => t.status ? /* @__PURE__ */ e(
103
81
  "div",
104
82
  {
105
83
  style: {
@@ -110,28 +88,28 @@ const Y = (t) => {
110
88
  }
111
89
  }
112
90
  ) : null;
113
- return /* @__PURE__ */ g(
91
+ return /* @__PURE__ */ m(
114
92
  "div",
115
93
  {
116
94
  style: {
117
95
  position: "relative"
118
96
  },
119
97
  children: [
120
- /* @__PURE__ */ g(
121
- v,
98
+ /* @__PURE__ */ m(
99
+ B,
122
100
  {
123
- type: t.type === r.IMAGE && (l || !t.photoUrl) && t.useNameFallback && t.name ? r.INITIALS : t.type,
101
+ type: t.type === r.IMAGE && (h || !t.photoUrl) && t.useNameFallback && t.name ? r.INITIALS : t.type,
124
102
  size: t.size,
125
103
  background: t.background,
126
104
  children: [
127
105
  t.type === r.IMAGE && I(),
128
- t.type === r.INITIALS && /* @__PURE__ */ e("div", { children: m() }),
106
+ t.type === r.INITIALS && /* @__PURE__ */ e("div", { children: g() }),
129
107
  t.type === r.ICON && t.icon && /* @__PURE__ */ e(
130
108
  t.icon,
131
109
  {
132
- width: n[t.size],
133
- height: n[t.size],
134
- color: c[t.background]
110
+ width: a[t.size],
111
+ height: a[t.size],
112
+ color: b[t.background]
135
113
  }
136
114
  )
137
115
  ]
@@ -142,8 +120,8 @@ const Y = (t) => {
142
120
  {
143
121
  style: {
144
122
  position: "absolute",
145
- left: n[t.size] + "px",
146
- top: n[t.size] + "px",
123
+ left: a[t.size] + "px",
124
+ top: a[t.size] + "px",
147
125
  width: 14,
148
126
  height: 14,
149
127
  borderRadius: t?.borderRadius || "50%",
@@ -152,7 +130,7 @@ const Y = (t) => {
152
130
  backgroundColor: t.inboxSettings.isSelected ? t.inboxSettings.isComments ? i.content.primary : i.background.brandLight : t.inboxSettings.isComments ? i.content.primary : i.surface.standard,
153
131
  alignItems: "center"
154
132
  },
155
- children: f()
133
+ children: y()
156
134
  }
157
135
  ),
158
136
  t.status && /* @__PURE__ */ e(
@@ -160,8 +138,8 @@ const Y = (t) => {
160
138
  {
161
139
  style: {
162
140
  position: "absolute",
163
- left: n[t.size] + "px",
164
- top: n[t.size] + "px",
141
+ left: a[t.size] + "px",
142
+ top: a[t.size] + "px",
165
143
  width: 11,
166
144
  height: 11,
167
145
  borderRadius: "50%",
@@ -170,7 +148,7 @@ const Y = (t) => {
170
148
  backgroundColor: i.surface.standard,
171
149
  alignItems: "center"
172
150
  },
173
- children: y()
151
+ children: T()
174
152
  }
175
153
  )
176
154
  ]
@@ -178,9 +156,9 @@ const Y = (t) => {
178
156
  );
179
157
  };
180
158
  export {
181
- n as AVATAR_SIZE_VS_ICON_SIZE_MAP,
182
- Y as Avatar,
183
- c as BACKGROUND_VS_TEXT_COLOR_MAP,
184
- U as MESSAGE_CHANNELS
159
+ a as AVATAR_SIZE_VS_ICON_SIZE_MAP,
160
+ J as Avatar,
161
+ b as BACKGROUND_VS_TEXT_COLOR_MAP,
162
+ P as MESSAGE_CHANNELS
185
163
  };
186
164
  //# sourceMappingURL=Avatar.js.map