@bikdotai/bik-component-library 0.0.839-beta.7 → 0.0.840-beta.0

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 (211) hide show
  1. package/dist/cjs/components/BikGiftedChat/GiftedChat/GiftedChat.js +1 -1
  2. package/dist/cjs/components/BikGiftedChat/GiftedChat/GiftedChat.js.map +1 -1
  3. package/dist/cjs/components/SearchFilter/index.js +1 -1
  4. package/dist/cjs/components/SearchFilter/index.js.map +1 -1
  5. package/dist/cjs/components/agent-builder/AgentBuilder.js +1 -1
  6. package/dist/cjs/components/agent-builder/AgentBuilder.js.map +1 -1
  7. package/dist/cjs/components/agent-builder/AgentBuilder.styled.js +51 -39
  8. package/dist/cjs/components/agent-builder/AgentBuilder.styled.js.map +1 -1
  9. package/dist/cjs/components/agent-builder/components/AgentBuilderFooter.js +1 -1
  10. package/dist/cjs/components/agent-builder/components/AgentBuilderFooter.js.map +1 -1
  11. package/dist/cjs/components/agent-builder/components/AgentBuilderTopBar.js +1 -1
  12. package/dist/cjs/components/agent-builder/components/AgentBuilderTopBar.js.map +1 -1
  13. package/dist/cjs/components/agent-builder/components/ConfigToolPanel.js +2 -2
  14. package/dist/cjs/components/agent-builder/components/ConfigToolPanel.js.map +1 -1
  15. package/dist/cjs/components/agent-builder/components/CreateSubAgentPanel.js +1 -1
  16. package/dist/cjs/components/agent-builder/components/CreateSubAgentPanel.js.map +1 -1
  17. package/dist/cjs/components/agent-builder/components/DiscardModal.js +1 -1
  18. package/dist/cjs/components/agent-builder/components/DiscardModal.js.map +1 -1
  19. package/dist/cjs/components/agent-builder/components/GoLiveModal.js +1 -1
  20. package/dist/cjs/components/agent-builder/components/GoLiveModal.js.map +1 -1
  21. package/dist/cjs/components/agent-builder/components/MentionEditor.js +1 -1
  22. package/dist/cjs/components/agent-builder/components/MentionEditor.js.map +1 -1
  23. package/dist/cjs/components/agent-builder/components/MentionPicker.js +22 -22
  24. package/dist/cjs/components/agent-builder/components/MentionPicker.js.map +1 -1
  25. package/dist/cjs/components/agent-builder/components/RestApiToolPanel.js +4 -4
  26. package/dist/cjs/components/agent-builder/components/RestApiToolPanel.js.map +1 -1
  27. package/dist/cjs/components/agent-builder/components/SelectableListSection.js +6 -6
  28. package/dist/cjs/components/agent-builder/components/SelectableListSection.js.map +1 -1
  29. package/dist/cjs/components/agent-builder/components/StepSectionHeader.js +1 -1
  30. package/dist/cjs/components/agent-builder/components/StepSectionHeader.js.map +1 -1
  31. package/dist/cjs/components/agent-builder/constants/tools.js +1 -1
  32. package/dist/cjs/components/agent-builder/constants/tools.js.map +1 -1
  33. package/dist/cjs/components/agent-builder/context/AgentBuilderContext.js +1 -1
  34. package/dist/cjs/components/agent-builder/context/AgentBuilderContext.js.map +1 -1
  35. package/dist/cjs/components/agent-builder/steps/Step2WhenItStepsIn.js +3 -1
  36. package/dist/cjs/components/agent-builder/steps/Step2WhenItStepsIn.js.map +1 -1
  37. package/dist/cjs/components/agent-builder/steps/Step3HowItResponds.js +1 -1
  38. package/dist/cjs/components/agent-builder/steps/Step3HowItResponds.js.map +1 -1
  39. package/dist/cjs/components/agent-builder/steps/Step4HandoverRules.js +1 -1
  40. package/dist/cjs/components/agent-builder/steps/Step4HandoverRules.js.map +1 -1
  41. package/dist/cjs/components/agent-builder/utils/mentionSerialization.js +5 -3
  42. package/dist/cjs/components/agent-builder/utils/mentionSerialization.js.map +1 -1
  43. package/dist/cjs/components/agent-listing/AgentListing.js +1 -1
  44. package/dist/cjs/components/agent-listing/AgentListing.js.map +1 -1
  45. package/dist/cjs/components/agent-listing/AgentTable.js +1 -1
  46. package/dist/cjs/components/agent-listing/AgentTable.js.map +1 -1
  47. package/dist/cjs/components/agent-listing/AgentTableRow.js +1 -1
  48. package/dist/cjs/components/agent-listing/AgentTableRow.js.map +1 -1
  49. package/dist/cjs/components/agent-listing/AgentTableShimmer.js +2 -0
  50. package/dist/cjs/components/agent-listing/AgentTableShimmer.js.map +1 -0
  51. package/dist/cjs/components/agent-listing/DeleteAgentModal.js +1 -1
  52. package/dist/cjs/components/agent-listing/DeleteAgentModal.js.map +1 -1
  53. package/dist/cjs/components/analytics-chips-and-dropdowns/AnalyticsChip.js +1 -1
  54. package/dist/cjs/components/analytics-chips-and-dropdowns/AnalyticsChip.js.map +1 -1
  55. package/dist/cjs/components/button/Button.styled.js +1 -0
  56. package/dist/cjs/components/button/Button.styled.js.map +1 -1
  57. package/dist/cjs/components/button/themes.js +11 -11
  58. package/dist/cjs/components/button/themes.js.map +1 -1
  59. package/dist/cjs/components/dashboard-review-popup/DashboardReviewPopUp.js +1 -1
  60. package/dist/cjs/components/dashboard-review-popup/DashboardReviewPopUp.js.map +1 -1
  61. package/dist/cjs/components/dropdown/Dropdown.js +1 -1
  62. package/dist/cjs/components/dropdown/Dropdown.js.map +1 -1
  63. package/dist/cjs/components/dropdown-button/DropdownButton.js +1 -1
  64. package/dist/cjs/components/dropdown-button/DropdownButton.js.map +1 -1
  65. package/dist/cjs/components/input/Input.js +1 -1
  66. package/dist/cjs/components/input/Input.js.map +1 -1
  67. package/dist/cjs/components/multi-level-dropdown/MenuItem.js +1 -1
  68. package/dist/cjs/components/multi-level-dropdown/MenuItem.js.map +1 -1
  69. package/dist/cjs/components/radioButton/RadioButton.js +1 -1
  70. package/dist/cjs/components/radioButton/RadioButton.js.map +1 -1
  71. package/dist/cjs/components/radioList/RadioList.js +1 -1
  72. package/dist/cjs/components/radioList/RadioList.js.map +1 -1
  73. package/dist/cjs/components/searchBar/searchBar.js +1 -1
  74. package/dist/cjs/components/searchBar/searchBar.js.map +1 -1
  75. package/dist/cjs/components/side-modal/SideModal.js +1 -1
  76. package/dist/cjs/components/side-modal/SideModal.js.map +1 -1
  77. package/dist/cjs/components/star-rating/Star.js +1 -1
  78. package/dist/cjs/components/star-rating/Star.js.map +1 -1
  79. package/dist/cjs/components/star-rating/StarRating.js +2 -2
  80. package/dist/cjs/components/star-rating/StarRating.js.map +1 -1
  81. package/dist/cjs/components/template-preview/TemplatePreview.js +1 -1
  82. package/dist/cjs/components/template-preview/TemplatePreview.js.map +1 -1
  83. package/dist/cjs/components/thumbnail/Thumbnail.js +1 -1
  84. package/dist/cjs/components/thumbnail/Thumbnail.js.map +1 -1
  85. package/dist/cjs/components/zeroState/ZeroState.js +3 -3
  86. package/dist/cjs/components/zeroState/ZeroState.js.map +1 -1
  87. package/dist/cjs/editor/BikEditor.js +1 -1
  88. package/dist/cjs/editor/BikEditor.js.map +1 -1
  89. package/dist/cjs/editor/BikEditor.styles.js +97 -54
  90. package/dist/cjs/editor/BikEditor.styles.js.map +1 -1
  91. package/dist/cjs/editor/extensions/jsonHighlight/JsonHighlightExtension.js +3 -3
  92. package/dist/cjs/editor/extensions/jsonHighlight/JsonHighlightExtension.js.map +1 -1
  93. package/dist/cjs/icons/Media/Visual/FormkitNeutral.js +2 -0
  94. package/dist/cjs/icons/Media/Visual/FormkitNeutral.js.map +1 -0
  95. package/dist/cjs/icons/Media/Visual/FormkitSad.js +2 -0
  96. package/dist/cjs/icons/Media/Visual/FormkitSad.js.map +1 -0
  97. package/dist/cjs/icons/index.js +1 -1
  98. package/dist/esm/components/BikGiftedChat/GiftedChat/GiftedChat.js +66 -61
  99. package/dist/esm/components/BikGiftedChat/GiftedChat/GiftedChat.js.map +1 -1
  100. package/dist/esm/components/SearchFilter/index.js +11 -10
  101. package/dist/esm/components/SearchFilter/index.js.map +1 -1
  102. package/dist/esm/components/agent-builder/AgentBuilder.js +106 -102
  103. package/dist/esm/components/agent-builder/AgentBuilder.js.map +1 -1
  104. package/dist/esm/components/agent-builder/AgentBuilder.styled.d.ts +3 -6
  105. package/dist/esm/components/agent-builder/AgentBuilder.styled.js +118 -106
  106. package/dist/esm/components/agent-builder/AgentBuilder.styled.js.map +1 -1
  107. package/dist/esm/components/agent-builder/__fixtures__/agentValue.d.ts +11 -0
  108. package/dist/esm/components/agent-builder/components/AgentBuilderFooter.js +29 -21
  109. package/dist/esm/components/agent-builder/components/AgentBuilderFooter.js.map +1 -1
  110. package/dist/esm/components/agent-builder/components/AgentBuilderTopBar.js +27 -26
  111. package/dist/esm/components/agent-builder/components/AgentBuilderTopBar.js.map +1 -1
  112. package/dist/esm/components/agent-builder/components/ConfigToolPanel.js +25 -25
  113. package/dist/esm/components/agent-builder/components/ConfigToolPanel.js.map +1 -1
  114. package/dist/esm/components/agent-builder/components/CreateSubAgentPanel.js +24 -23
  115. package/dist/esm/components/agent-builder/components/CreateSubAgentPanel.js.map +1 -1
  116. package/dist/esm/components/agent-builder/components/DiscardModal.d.ts +3 -1
  117. package/dist/esm/components/agent-builder/components/DiscardModal.js +33 -24
  118. package/dist/esm/components/agent-builder/components/DiscardModal.js.map +1 -1
  119. package/dist/esm/components/agent-builder/components/GoLiveModal.js +23 -21
  120. package/dist/esm/components/agent-builder/components/GoLiveModal.js.map +1 -1
  121. package/dist/esm/components/agent-builder/components/MentionEditor.js +19 -19
  122. package/dist/esm/components/agent-builder/components/MentionEditor.js.map +1 -1
  123. package/dist/esm/components/agent-builder/components/MentionPicker.js +177 -147
  124. package/dist/esm/components/agent-builder/components/MentionPicker.js.map +1 -1
  125. package/dist/esm/components/agent-builder/components/RestApiToolPanel.d.ts +2 -0
  126. package/dist/esm/components/agent-builder/components/RestApiToolPanel.js +111 -105
  127. package/dist/esm/components/agent-builder/components/RestApiToolPanel.js.map +1 -1
  128. package/dist/esm/components/agent-builder/components/SelectableListSection.d.ts +13 -4
  129. package/dist/esm/components/agent-builder/components/SelectableListSection.js +173 -148
  130. package/dist/esm/components/agent-builder/components/SelectableListSection.js.map +1 -1
  131. package/dist/esm/components/agent-builder/components/StepSectionHeader.js +7 -7
  132. package/dist/esm/components/agent-builder/components/StepSectionHeader.js.map +1 -1
  133. package/dist/esm/components/agent-builder/constants/tools.js +1 -1
  134. package/dist/esm/components/agent-builder/constants/tools.js.map +1 -1
  135. package/dist/esm/components/agent-builder/context/AgentBuilderContext.js +104 -103
  136. package/dist/esm/components/agent-builder/context/AgentBuilderContext.js.map +1 -1
  137. package/dist/esm/components/agent-builder/steps/Step2WhenItStepsIn.js +101 -102
  138. package/dist/esm/components/agent-builder/steps/Step2WhenItStepsIn.js.map +1 -1
  139. package/dist/esm/components/agent-builder/steps/Step3HowItResponds.js +144 -142
  140. package/dist/esm/components/agent-builder/steps/Step3HowItResponds.js.map +1 -1
  141. package/dist/esm/components/agent-builder/steps/Step4HandoverRules.js +23 -79
  142. package/dist/esm/components/agent-builder/steps/Step4HandoverRules.js.map +1 -1
  143. package/dist/esm/components/agent-builder/utils/mentionSerialization.js +35 -23
  144. package/dist/esm/components/agent-builder/utils/mentionSerialization.js.map +1 -1
  145. package/dist/esm/components/agent-listing/AgentListing.js +70 -65
  146. package/dist/esm/components/agent-listing/AgentListing.js.map +1 -1
  147. package/dist/esm/components/agent-listing/AgentTable.d.ts +2 -0
  148. package/dist/esm/components/agent-listing/AgentTable.js +16 -15
  149. package/dist/esm/components/agent-listing/AgentTable.js.map +1 -1
  150. package/dist/esm/components/agent-listing/AgentTableRow.js +11 -11
  151. package/dist/esm/components/agent-listing/AgentTableRow.js.map +1 -1
  152. package/dist/esm/components/agent-listing/AgentTableShimmer.d.ts +12 -0
  153. package/dist/esm/components/agent-listing/AgentTableShimmer.js +20 -0
  154. package/dist/esm/components/agent-listing/AgentTableShimmer.js.map +1 -0
  155. package/dist/esm/components/agent-listing/DeleteAgentModal.js +8 -8
  156. package/dist/esm/components/agent-listing/DeleteAgentModal.js.map +1 -1
  157. package/dist/esm/components/agent-listing/__fixtures__/agents.d.ts +3 -0
  158. package/dist/esm/components/analytics-chips-and-dropdowns/AnalyticsChip.js +11 -10
  159. package/dist/esm/components/analytics-chips-and-dropdowns/AnalyticsChip.js.map +1 -1
  160. package/dist/esm/components/button/Button.styled.js +25 -19
  161. package/dist/esm/components/button/Button.styled.js.map +1 -1
  162. package/dist/esm/components/button/themes.d.ts +1 -0
  163. package/dist/esm/components/button/themes.js +61 -51
  164. package/dist/esm/components/button/themes.js.map +1 -1
  165. package/dist/esm/components/dashboard-review-popup/DashboardReviewPopUp.js +28 -21
  166. package/dist/esm/components/dashboard-review-popup/DashboardReviewPopUp.js.map +1 -1
  167. package/dist/esm/components/dropdown/Dropdown.js +18 -13
  168. package/dist/esm/components/dropdown/Dropdown.js.map +1 -1
  169. package/dist/esm/components/dropdown-button/DropdownButton.js +13 -13
  170. package/dist/esm/components/dropdown-button/DropdownButton.js.map +1 -1
  171. package/dist/esm/components/input/Input.js +35 -34
  172. package/dist/esm/components/input/Input.js.map +1 -1
  173. package/dist/esm/components/input/Input.model.d.ts +1 -0
  174. package/dist/esm/components/multi-level-dropdown/MenuItem.js +28 -27
  175. package/dist/esm/components/multi-level-dropdown/MenuItem.js.map +1 -1
  176. package/dist/esm/components/radioButton/RadioButton.js +10 -9
  177. package/dist/esm/components/radioButton/RadioButton.js.map +1 -1
  178. package/dist/esm/components/radioList/RadioList.js +28 -19
  179. package/dist/esm/components/radioList/RadioList.js.map +1 -1
  180. package/dist/esm/components/searchBar/searchBar.js +11 -10
  181. package/dist/esm/components/searchBar/searchBar.js.map +1 -1
  182. package/dist/esm/components/side-modal/SideModal.js +13 -5
  183. package/dist/esm/components/side-modal/SideModal.js.map +1 -1
  184. package/dist/esm/components/star-rating/Star.d.ts +1 -0
  185. package/dist/esm/components/star-rating/Star.js +32 -27
  186. package/dist/esm/components/star-rating/Star.js.map +1 -1
  187. package/dist/esm/components/star-rating/StarRating.js +17 -16
  188. package/dist/esm/components/star-rating/StarRating.js.map +1 -1
  189. package/dist/esm/components/template-preview/TemplatePreview.js +41 -40
  190. package/dist/esm/components/template-preview/TemplatePreview.js.map +1 -1
  191. package/dist/esm/components/thumbnail/Thumbnail.js +3 -3
  192. package/dist/esm/components/thumbnail/Thumbnail.js.map +1 -1
  193. package/dist/esm/components/zeroState/ZeroState.js +20 -13
  194. package/dist/esm/components/zeroState/ZeroState.js.map +1 -1
  195. package/dist/esm/editor/BikEditor.js +173 -160
  196. package/dist/esm/editor/BikEditor.js.map +1 -1
  197. package/dist/esm/editor/BikEditor.styles.d.ts +20 -3
  198. package/dist/esm/editor/BikEditor.styles.js +102 -57
  199. package/dist/esm/editor/BikEditor.styles.js.map +1 -1
  200. package/dist/esm/editor/extensions/jsonHighlight/JsonHighlightExtension.d.ts +5 -8
  201. package/dist/esm/editor/extensions/jsonHighlight/JsonHighlightExtension.js +87 -68
  202. package/dist/esm/editor/extensions/jsonHighlight/JsonHighlightExtension.js.map +1 -1
  203. package/dist/esm/icons/Media/Visual/FormkitNeutral.js +58 -0
  204. package/dist/esm/icons/Media/Visual/FormkitNeutral.js.map +1 -0
  205. package/dist/esm/icons/Media/Visual/FormkitSad.js +61 -0
  206. package/dist/esm/icons/Media/Visual/FormkitSad.js.map +1 -0
  207. package/dist/esm/icons/Media/Visual/index.d.ts +2 -0
  208. package/dist/esm/icons/index.d.ts +25 -25
  209. package/dist/esm/icons/index.js +420 -416
  210. package/dist/esm/icons/index.js.map +1 -1
  211. package/package.json +1 -1
@@ -1,5 +1,5 @@
1
1
  import { jsxs as i, jsx as d } from "react/jsx-runtime";
2
- import { useRef as L, useState as j, useCallback as w, useEffect as p, useMemo as F } from "react";
2
+ import { useRef as B, useState as j, useCallback as w, useEffect as p, useMemo as F } from "react";
3
3
  import { TitleSmall as N, BodyCaption as _ } from "../../TypographyStyle.js";
4
4
  import { COLORS as h } from "../../../constants/Theme.js";
5
5
  import { FieldBlock as G, FieldLabelRow as J, AiTextAreaShell as P } from "../AgentBuilder.styled.js";
@@ -13,11 +13,11 @@ const nt = ({
13
13
  onChange: g,
14
14
  maxLength: a,
15
15
  placeholder: C,
16
- minHeight: x = "200px",
16
+ minHeight: T = "200px",
17
17
  resetKey: l,
18
18
  mentionItems: n,
19
- tools: T,
20
- onMentionSelect: b,
19
+ tools: b,
20
+ onMentionSelect: x,
21
21
  onFocus: E,
22
22
  registerInsert: r,
23
23
  onCreateSubAgent: k,
@@ -25,31 +25,31 @@ const nt = ({
25
25
  action: O,
26
26
  ...R
27
27
  }) => {
28
- const c = L(null), [D, s] = j(e.length), m = w(
29
- (t, o, y) => {
28
+ const c = B(null), [D, m] = j(e.length), s = w(
29
+ (t, o, M) => {
30
30
  const f = c.current;
31
31
  if (!f)
32
32
  return;
33
- const A = n.find(
33
+ const y = n.find(
34
34
  (u) => String(u.id) === String(o) && u.meta?.kind === t
35
- ), B = y ?? A?.label ?? o;
35
+ ), A = M ?? y?.label ?? o;
36
36
  f.insertInlineContent(
37
- `${$(String(o), B, t)} `
37
+ `${$(String(o), A, t)} `
38
38
  );
39
39
  },
40
40
  [n]
41
41
  );
42
42
  p(() => {
43
43
  if (r)
44
- return r(m), () => r(null);
45
- }, [r, m]);
46
- const M = F(
44
+ return r(s), () => r(null);
45
+ }, [r, s]);
46
+ const L = F(
47
47
  () => q(e, n),
48
48
  // eslint-disable-next-line react-hooks/exhaustive-deps
49
49
  [l]
50
50
  );
51
51
  return p(
52
- () => s(e.length),
52
+ () => m(e.length),
53
53
  // eslint-disable-next-line react-hooks/exhaustive-deps
54
54
  [l]
55
55
  ), /* @__PURE__ */ i(G, { children: [
@@ -61,14 +61,14 @@ const nt = ({
61
61
  a
62
62
  ] })
63
63
  ] }),
64
- /* @__PURE__ */ i(P, { minHeight: x, "data-test": R["data-test"], children: [
64
+ /* @__PURE__ */ i(P, { minHeight: T, "data-test": R["data-test"], children: [
65
65
  /* @__PURE__ */ d(
66
66
  U,
67
67
  {
68
68
  ref: c,
69
- initialContent: M,
69
+ initialContent: L,
70
70
  placeholder: C,
71
- maxCharacters: a,
71
+ characterLimit: a,
72
72
  minHeight: "120px",
73
73
  maxHeight: "320px",
74
74
  style: { border: "none" },
@@ -87,13 +87,13 @@ const nt = ({
87
87
  ),
88
88
  onSelect: (t) => {
89
89
  const o = t.meta?.kind;
90
- o && b?.(o, String(t.id));
90
+ o && x?.(o, String(t.id));
91
91
  }
92
92
  },
93
93
  onChange: (t) => {
94
- s(t.characterCount);
94
+ m(t.characterCount);
95
95
  const o = c.current?.getJSON() ?? null;
96
- g(z(o, T));
96
+ g(z(o, b));
97
97
  }
98
98
  },
99
99
  l
@@ -1 +1 @@
1
- {"version":3,"file":"MentionEditor.js","sources":["../../../../../src/components/agent-builder/components/MentionEditor.tsx"],"sourcesContent":["import { BikEditor, BikEditorRef, MentionItem } from '@src/editor';\nimport React, {\n\tuseCallback,\n\tuseEffect,\n\tuseMemo,\n\tuseRef,\n\tuseState,\n} from 'react';\nimport { BodyCaption, TitleSmall } from '@src/components/TypographyStyle';\nimport { COLORS } from '@src/constants/Theme';\nimport { AgentTool } from '../AgentBuilder.model';\nimport {\n\tAiTextAreaShell,\n\tFieldBlock,\n\tFieldLabelRow,\n} from '../AgentBuilder.styled';\nimport { AGENT_EDITOR_STYLE } from '../constants/editorStyle';\nimport type { ToolAction } from '../constants/tools';\nimport {\n\tbuildMentionHtml,\n\teditorDocToInstructions,\n\tinstructionsToEditorHtml,\n\tMentionKindMeta,\n} from '../utils/mentionSerialization';\nimport { MentionPicker } from './MentionPicker';\n\ntype InsertFn = (kind: 'tool' | 'subagent', id: string, label?: string) => void;\n\ninterface MentionEditorProps {\n\tlabel: string;\n\tvalue: string;\n\tonChange: (text: string) => void;\n\tmaxLength: number;\n\tplaceholder?: string;\n\tminHeight?: string;\n\t/** Changing this remounts the editor with fresh content. */\n\tresetKey?: string | number;\n\t/** Items shown in the `@` picker (tools, and sub-agents where allowed). */\n\tmentionItems: MentionItem[];\n\t/** Tools used to serialise mention nodes back to `{{tool:KEY}}`. */\n\ttools: AgentTool[];\n\t/** Called when an item is picked from the `@` menu (to attach it upstream). */\n\tonMentionSelect?: (kind: 'tool' | 'subagent', id: string) => void;\n\tonFocus?: () => void;\n\t/** Receives an insert-at-cursor fn (and null on unmount) for side-panel adds. */\n\tregisterInsert?: (fn: InsertFn | null) => void;\n\t/**\n\t * When set, the `@` picker's Sub-agent view shows a \"Create new\" row that calls\n\t * this (opens the create-sub-agent drawer). Omit to hide it (e.g. the drawer's\n\t * own editors, which can't nest sub-agents).\n\t */\n\tonCreateSubAgent?: () => void;\n\t/**\n\t * Built-in tool actions (Rest API / Handover to email) shown in the `@` picker's\n\t * Tools view. Picking one opens its drawer instead of inserting a mention.\n\t */\n\ttoolActions?: ToolAction[];\n\t/** Optional action(s) rendered inside the shell, below the editor. */\n\taction?: React.ReactNode;\n\t'data-test'?: string;\n}\n\n/**\n * Presentational BikEditor field with `@` mentions. Stores firebase token text\n * (`{{tool:KEY}}` / `{{subagent:ID}}`). Context-free — both the builder's\n * Step-3 fields and the create-sub-agent drawer compose it.\n */\nexport const MentionEditor: React.FC<MentionEditorProps> = ({\n\tlabel,\n\tvalue,\n\tonChange,\n\tmaxLength,\n\tplaceholder,\n\tminHeight = '200px',\n\tresetKey,\n\tmentionItems,\n\ttools,\n\tonMentionSelect,\n\tonFocus,\n\tregisterInsert,\n\tonCreateSubAgent,\n\ttoolActions,\n\taction,\n\t...rest\n}) => {\n\tconst editorRef = useRef<BikEditorRef>(null);\n\tconst [count, setCount] = useState(value.length);\n\n\tconst insert = useCallback<InsertFn>(\n\t\t(kind, id, overrideLabel) => {\n\t\t\tconst editor = editorRef.current;\n\t\t\tif (!editor) {\n\t\t\t\treturn;\n\t\t\t}\n\t\t\tconst item = mentionItems.find(\n\t\t\t\t(m) =>\n\t\t\t\t\tString(m.id) === String(id) &&\n\t\t\t\t\t(m.meta as unknown as MentionKindMeta | undefined)?.kind === kind,\n\t\t\t);\n\t\t\tconst finalLabel = overrideLabel ?? item?.label ?? id;\n\t\t\teditor.insertInlineContent(\n\t\t\t\t`${buildMentionHtml(String(id), finalLabel, kind)}&nbsp;`,\n\t\t\t);\n\t\t},\n\t\t[mentionItems],\n\t);\n\n\tuseEffect(() => {\n\t\tif (!registerInsert) {\n\t\t\treturn;\n\t\t}\n\t\tregisterInsert(insert);\n\t\treturn () => registerInsert(null);\n\t}, [registerInsert, insert]);\n\n\t// Mount-only initial HTML; recomputed (editor remounted via key) on resetKey.\n\tconst initialHtml = useMemo(\n\t\t() => instructionsToEditorHtml(value, mentionItems),\n\t\t// eslint-disable-next-line react-hooks/exhaustive-deps\n\t\t[resetKey],\n\t);\n\n\tuseEffect(\n\t\t() => setCount(value.length),\n\t\t// eslint-disable-next-line react-hooks/exhaustive-deps\n\t\t[resetKey],\n\t);\n\n\treturn (\n\t\t<FieldBlock>\n\t\t\t<FieldLabelRow>\n\t\t\t\t<TitleSmall color={COLORS.content.primary}>{label}</TitleSmall>\n\t\t\t\t<BodyCaption color={COLORS.content.secondary}>\n\t\t\t\t\t{count}/{maxLength}\n\t\t\t\t</BodyCaption>\n\t\t\t</FieldLabelRow>\n\n\t\t\t<AiTextAreaShell minHeight={minHeight} data-test={rest['data-test']}>\n\t\t\t\t<BikEditor\n\t\t\t\t\tkey={resetKey}\n\t\t\t\t\tref={editorRef}\n\t\t\t\t\tinitialContent={initialHtml}\n\t\t\t\t\tplaceholder={placeholder}\n\t\t\t\t\tmaxCharacters={maxLength}\n\t\t\t\t\tminHeight=\"120px\"\n\t\t\t\t\tmaxHeight=\"320px\"\n\t\t\t\t\tstyle={{ border: 'none' }}\n\t\t\t\t\teditorStyle={AGENT_EDITOR_STYLE}\n\t\t\t\t\tonFocus={onFocus}\n\t\t\t\t\tmentions={{\n\t\t\t\t\t\tagents: mentionItems,\n\t\t\t\t\t\tremoveTriggerOnDismiss: true,\n\t\t\t\t\t\trenderDropdown: (props) => (\n\t\t\t\t\t\t\t<MentionPicker\n\t\t\t\t\t\t\t\t{...props}\n\t\t\t\t\t\t\t\tonCreateSubAgent={onCreateSubAgent}\n\t\t\t\t\t\t\t\ttoolActions={toolActions}\n\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t),\n\t\t\t\t\t\tonSelect: (item) => {\n\t\t\t\t\t\t\tconst kind = (item.meta as unknown as MentionKindMeta | undefined)\n\t\t\t\t\t\t\t\t?.kind;\n\t\t\t\t\t\t\tif (kind) {\n\t\t\t\t\t\t\t\tonMentionSelect?.(kind, String(item.id));\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t},\n\t\t\t\t\t}}\n\t\t\t\t\tonChange={(snapshot) => {\n\t\t\t\t\t\tsetCount(snapshot.characterCount);\n\t\t\t\t\t\tconst doc = editorRef.current?.getJSON() ?? null;\n\t\t\t\t\t\tonChange(editorDocToInstructions(doc, tools));\n\t\t\t\t\t}}\n\t\t\t\t/>\n\t\t\t\t{action}\n\t\t\t</AiTextAreaShell>\n\t\t</FieldBlock>\n\t);\n};\n"],"names":["MentionEditor","label","value","onChange","maxLength","placeholder","minHeight","resetKey","mentionItems","tools","onMentionSelect","onFocus","registerInsert","onCreateSubAgent","toolActions","action","rest","editorRef","useRef","count","setCount","useState","insert","useCallback","kind","id","overrideLabel","editor","item","m","finalLabel","buildMentionHtml","useEffect","initialHtml","useMemo","instructionsToEditorHtml","FieldBlock","jsxs","FieldLabelRow","jsx","TitleSmall","COLORS","BodyCaption","AiTextAreaShell","BikEditor","AGENT_EDITOR_STYLE","props","MentionPicker","snapshot","doc","editorDocToInstructions"],"mappings":";;;;;;;;;AAmEO,MAAMA,KAA8C,CAAC;AAAA,EAC3D,OAAAC;AAAA,EACA,OAAAC;AAAA,EACA,UAAAC;AAAA,EACA,WAAAC;AAAA,EACA,aAAAC;AAAA,EACA,WAAAC,IAAY;AAAA,EACZ,UAAAC;AAAA,EACA,cAAAC;AAAA,EACA,OAAAC;AAAA,EACA,iBAAAC;AAAA,EACA,SAAAC;AAAA,EACA,gBAAAC;AAAA,EACA,kBAAAC;AAAA,EACA,aAAAC;AAAA,EACA,QAAAC;AAAA,EACA,GAAGC;AACJ,MAAM;AACL,QAAMC,IAAYC,EAAqB,IAAI,GACrC,CAACC,GAAOC,CAAQ,IAAIC,EAASnB,EAAM,MAAM,GAEzCoB,IAASC;AAAA,IACd,CAACC,GAAMC,GAAIC,MAAkB;AAC5B,YAAMC,IAASV,EAAU;AACzB,UAAI,CAACU;AACJ;AAED,YAAMC,IAAOpB,EAAa;AAAA,QACzB,CAACqB,MACA,OAAOA,EAAE,EAAE,MAAM,OAAOJ,CAAE,KACzBI,EAAE,MAAiD,SAASL;AAAA,MAAA,GAEzDM,IAAaJ,KAAiBE,GAAM,SAASH;AACnD,MAAAE,EAAO;AAAA,QACN,GAAGI,EAAiB,OAAON,CAAE,GAAGK,GAAYN,CAAI,CAAC;AAAA,MAAA;AAAA,IAEnD;AAAA,IACA,CAAChB,CAAY;AAAA,EAAA;AAGd,EAAAwB,EAAU,MAAM;AACf,QAAKpB;AAGL,aAAAA,EAAeU,CAAM,GACd,MAAMV,EAAe,IAAI;AAAA,EACjC,GAAG,CAACA,GAAgBU,CAAM,CAAC;AAG3B,QAAMW,IAAcC;AAAA,IACnB,MAAMC,EAAyBjC,GAAOM,CAAY;AAAA;AAAA,IAElD,CAACD,CAAQ;AAAA,EAAA;AAGV,SAAAyB;AAAA,IACC,MAAMZ,EAASlB,EAAM,MAAM;AAAA;AAAA,IAE3B,CAACK,CAAQ;AAAA,EAAA,qBAIR6B,GAAA,EACA,UAAA;AAAA,IAAA,gBAAAC,EAACC,GAAA,EACA,UAAA;AAAA,MAAA,gBAAAC,EAACC,GAAA,EAAW,OAAOC,EAAO,QAAQ,SAAU,UAAAxC,GAAM;AAAA,MAClD,gBAAAoC,EAACK,GAAA,EAAY,OAAOD,EAAO,QAAQ,WACjC,UAAA;AAAA,QAAAtB;AAAA,QAAM;AAAA,QAAEf;AAAA,MAAA,EAAA,CACV;AAAA,IAAA,GACD;AAAA,sBAECuC,GAAA,EAAgB,WAAArC,GAAsB,aAAWU,EAAK,WAAW,GACjE,UAAA;AAAA,MAAA,gBAAAuB;AAAA,QAACK;AAAA,QAAA;AAAA,UAEA,KAAK3B;AAAA,UACL,gBAAgBgB;AAAA,UAChB,aAAA5B;AAAA,UACA,eAAeD;AAAA,UACf,WAAU;AAAA,UACV,WAAU;AAAA,UACV,OAAO,EAAE,QAAQ,OAAA;AAAA,UACjB,aAAayC;AAAA,UACb,SAAAlC;AAAA,UACA,UAAU;AAAA,YACT,QAAQH;AAAA,YACR,wBAAwB;AAAA,YACxB,gBAAgB,CAACsC,MAChB,gBAAAP;AAAA,cAACQ;AAAA,cAAA;AAAA,gBACC,GAAGD;AAAA,gBACJ,kBAAAjC;AAAA,gBACA,aAAAC;AAAA,cAAA;AAAA,YAAA;AAAA,YAGF,UAAU,CAACc,MAAS;AACnB,oBAAMJ,IAAQI,EAAK,MAChB;AACH,cAAIJ,KACHd,IAAkBc,GAAM,OAAOI,EAAK,EAAE,CAAC;AAAA,YAEzC;AAAA,UAAA;AAAA,UAED,UAAU,CAACoB,MAAa;AACvB,YAAA5B,EAAS4B,EAAS,cAAc;AAChC,kBAAMC,IAAMhC,EAAU,SAAS,QAAA,KAAa;AAC5C,YAAAd,EAAS+C,EAAwBD,GAAKxC,CAAK,CAAC;AAAA,UAC7C;AAAA,QAAA;AAAA,QAhCKF;AAAA,MAAA;AAAA,MAkCLQ;AAAA,IAAA,EAAA,CACF;AAAA,EAAA,GACD;AAEF;"}
1
+ {"version":3,"file":"MentionEditor.js","sources":["../../../../../src/components/agent-builder/components/MentionEditor.tsx"],"sourcesContent":["import { BikEditor, BikEditorRef, MentionItem } from '@src/editor';\nimport React, {\n\tuseCallback,\n\tuseEffect,\n\tuseMemo,\n\tuseRef,\n\tuseState,\n} from 'react';\nimport { BodyCaption, TitleSmall } from '@src/components/TypographyStyle';\nimport { COLORS } from '@src/constants/Theme';\nimport { AgentTool } from '../AgentBuilder.model';\nimport {\n\tAiTextAreaShell,\n\tFieldBlock,\n\tFieldLabelRow,\n} from '../AgentBuilder.styled';\nimport { AGENT_EDITOR_STYLE } from '../constants/editorStyle';\nimport type { ToolAction } from '../constants/tools';\nimport {\n\tbuildMentionHtml,\n\teditorDocToInstructions,\n\tinstructionsToEditorHtml,\n\tMentionKindMeta,\n} from '../utils/mentionSerialization';\nimport { MentionPicker } from './MentionPicker';\n\ntype InsertFn = (kind: 'tool' | 'subagent', id: string, label?: string) => void;\n\ninterface MentionEditorProps {\n\tlabel: string;\n\tvalue: string;\n\tonChange: (text: string) => void;\n\tmaxLength: number;\n\tplaceholder?: string;\n\tminHeight?: string;\n\t/** Changing this remounts the editor with fresh content. */\n\tresetKey?: string | number;\n\t/** Items shown in the `@` picker (tools, and sub-agents where allowed). */\n\tmentionItems: MentionItem[];\n\t/** Tools used to serialise mention nodes back to `{{tool:KEY}}`. */\n\ttools: AgentTool[];\n\t/** Called when an item is picked from the `@` menu (to attach it upstream). */\n\tonMentionSelect?: (kind: 'tool' | 'subagent', id: string) => void;\n\tonFocus?: () => void;\n\t/** Receives an insert-at-cursor fn (and null on unmount) for side-panel adds. */\n\tregisterInsert?: (fn: InsertFn | null) => void;\n\t/**\n\t * When set, the `@` picker's Sub-agent view shows a \"Create new\" row that calls\n\t * this (opens the create-sub-agent drawer). Omit to hide it (e.g. the drawer's\n\t * own editors, which can't nest sub-agents).\n\t */\n\tonCreateSubAgent?: () => void;\n\t/**\n\t * Built-in tool actions (Rest API / Handover to email) shown in the `@` picker's\n\t * Tools view. Picking one opens its drawer instead of inserting a mention.\n\t */\n\ttoolActions?: ToolAction[];\n\t/** Optional action(s) rendered inside the shell, below the editor. */\n\taction?: React.ReactNode;\n\t'data-test'?: string;\n}\n\n/**\n * Presentational BikEditor field with `@` mentions. Stores firebase token text\n * (`{{tool:KEY}}` / `{{subagent:ID}}`). Context-free — both the builder's\n * Step-3 fields and the create-sub-agent drawer compose it.\n */\nexport const MentionEditor: React.FC<MentionEditorProps> = ({\n\tlabel,\n\tvalue,\n\tonChange,\n\tmaxLength,\n\tplaceholder,\n\tminHeight = '200px',\n\tresetKey,\n\tmentionItems,\n\ttools,\n\tonMentionSelect,\n\tonFocus,\n\tregisterInsert,\n\tonCreateSubAgent,\n\ttoolActions,\n\taction,\n\t...rest\n}) => {\n\tconst editorRef = useRef<BikEditorRef>(null);\n\tconst [count, setCount] = useState(value.length);\n\n\tconst insert = useCallback<InsertFn>(\n\t\t(kind, id, overrideLabel) => {\n\t\t\tconst editor = editorRef.current;\n\t\t\tif (!editor) {\n\t\t\t\treturn;\n\t\t\t}\n\t\t\tconst item = mentionItems.find(\n\t\t\t\t(m) =>\n\t\t\t\t\tString(m.id) === String(id) &&\n\t\t\t\t\t(m.meta as unknown as MentionKindMeta | undefined)?.kind === kind,\n\t\t\t);\n\t\t\tconst finalLabel = overrideLabel ?? item?.label ?? id;\n\t\t\teditor.insertInlineContent(\n\t\t\t\t`${buildMentionHtml(String(id), finalLabel, kind)}&nbsp;`,\n\t\t\t);\n\t\t},\n\t\t[mentionItems],\n\t);\n\n\tuseEffect(() => {\n\t\tif (!registerInsert) {\n\t\t\treturn;\n\t\t}\n\t\tregisterInsert(insert);\n\t\treturn () => registerInsert(null);\n\t}, [registerInsert, insert]);\n\n\t// Mount-only initial HTML; recomputed (editor remounted via key) on resetKey.\n\tconst initialHtml = useMemo(\n\t\t() => instructionsToEditorHtml(value, mentionItems),\n\t\t// eslint-disable-next-line react-hooks/exhaustive-deps\n\t\t[resetKey],\n\t);\n\n\tuseEffect(\n\t\t() => setCount(value.length),\n\t\t// eslint-disable-next-line react-hooks/exhaustive-deps\n\t\t[resetKey],\n\t);\n\n\treturn (\n\t\t<FieldBlock>\n\t\t\t<FieldLabelRow>\n\t\t\t\t<TitleSmall color={COLORS.content.primary}>{label}</TitleSmall>\n\t\t\t\t<BodyCaption color={COLORS.content.secondary}>\n\t\t\t\t\t{count}/{maxLength}\n\t\t\t\t</BodyCaption>\n\t\t\t</FieldLabelRow>\n\n\t\t\t<AiTextAreaShell minHeight={minHeight} data-test={rest['data-test']}>\n\t\t\t\t<BikEditor\n\t\t\t\t\tkey={resetKey}\n\t\t\t\t\tref={editorRef}\n\t\t\t\t\tinitialContent={initialHtml}\n\t\t\t\t\tplaceholder={placeholder}\n\t\t\t\t\t// Soft limit: blocks typing past the cap but lets a paste through\n\t\t\t\t\t// (overflow rendered grey) instead of rejecting the whole paste.\n\t\t\t\t\tcharacterLimit={maxLength}\n\t\t\t\t\tminHeight=\"120px\"\n\t\t\t\t\tmaxHeight=\"320px\"\n\t\t\t\t\tstyle={{ border: 'none' }}\n\t\t\t\t\teditorStyle={AGENT_EDITOR_STYLE}\n\t\t\t\t\tonFocus={onFocus}\n\t\t\t\t\tmentions={{\n\t\t\t\t\t\tagents: mentionItems,\n\t\t\t\t\t\tremoveTriggerOnDismiss: true,\n\t\t\t\t\t\trenderDropdown: (props) => (\n\t\t\t\t\t\t\t<MentionPicker\n\t\t\t\t\t\t\t\t{...props}\n\t\t\t\t\t\t\t\tonCreateSubAgent={onCreateSubAgent}\n\t\t\t\t\t\t\t\ttoolActions={toolActions}\n\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t),\n\t\t\t\t\t\tonSelect: (item) => {\n\t\t\t\t\t\t\tconst kind = (item.meta as unknown as MentionKindMeta | undefined)\n\t\t\t\t\t\t\t\t?.kind;\n\t\t\t\t\t\t\tif (kind) {\n\t\t\t\t\t\t\t\tonMentionSelect?.(kind, String(item.id));\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t},\n\t\t\t\t\t}}\n\t\t\t\t\tonChange={(snapshot) => {\n\t\t\t\t\t\tsetCount(snapshot.characterCount);\n\t\t\t\t\t\tconst doc = editorRef.current?.getJSON() ?? null;\n\t\t\t\t\t\tonChange(editorDocToInstructions(doc, tools));\n\t\t\t\t\t}}\n\t\t\t\t/>\n\t\t\t\t{action}\n\t\t\t</AiTextAreaShell>\n\t\t</FieldBlock>\n\t);\n};\n"],"names":["MentionEditor","label","value","onChange","maxLength","placeholder","minHeight","resetKey","mentionItems","tools","onMentionSelect","onFocus","registerInsert","onCreateSubAgent","toolActions","action","rest","editorRef","useRef","count","setCount","useState","insert","useCallback","kind","id","overrideLabel","editor","item","m","finalLabel","buildMentionHtml","useEffect","initialHtml","useMemo","instructionsToEditorHtml","FieldBlock","jsxs","FieldLabelRow","jsx","TitleSmall","COLORS","BodyCaption","AiTextAreaShell","BikEditor","AGENT_EDITOR_STYLE","props","MentionPicker","snapshot","doc","editorDocToInstructions"],"mappings":"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"}
@@ -1,252 +1,282 @@
1
- import { jsxs as m, jsx as u, Fragment as Q } from "react/jsx-runtime";
2
- import V from "../../../assets/icons/chevronRight.svg.js";
3
- import W from "../../../assets/icons/searchIcon.svg.js";
4
- import X from "../../../icons/Arrows/Normal arrows/ArrowLeft.js";
5
- import { useState as A, useMemo as x, useEffect as P, useRef as Y } from "react";
1
+ import { jsxs as m, jsx as u, Fragment as X } from "react/jsx-runtime";
2
+ import Y from "../../../assets/icons/chevronRight.svg.js";
3
+ import Z from "../../../assets/icons/searchIcon.svg.js";
4
+ import K from "../../../icons/Arrows/Normal arrows/ArrowLeft.js";
5
+ import { useState as B, useMemo as x, useEffect as z, useRef as H } from "react";
6
6
  import p from "styled-components";
7
- import { TitleSmall as Z, BodySecondary as K } from "../../TypographyStyle.js";
8
- import { COLORS as o } from "../../../constants/Theme.js";
9
- import { CATEGORIES as H, toolSourceRank as U, CONFIG_TOOL_SOURCES as ee } from "../constants/tools.js";
10
- import { toolSourceLabel as D } from "../utils/mentionSerialization.js";
11
- import { sourceIcon as z, renderSourceIcon as j } from "../utils/sourceIcons.js";
12
- const y = (i) => i.meta, L = (i) => y(i)?.plainLabel ?? i.label, te = "__bik_create_subagent__", we = ({
13
- items: i,
14
- onSelect: R,
15
- registerKeyHandler: w,
16
- onClose: I,
17
- onCreateSubAgent: k,
18
- initialSource: F,
19
- toolActions: h
7
+ import { TitleSmall as ee, BodySecondary as te } from "../../TypographyStyle.js";
8
+ import { COLORS as i } from "../../../constants/Theme.js";
9
+ import { CATEGORIES as ne, toolSourceRank as q, CONFIG_TOOL_SOURCES as re } from "../constants/tools.js";
10
+ import { toolSourceLabel as N } from "../utils/mentionSerialization.js";
11
+ import { sourceIcon as E, renderSourceIcon as J } from "../utils/sourceIcons.js";
12
+ const k = (l) => l.meta, I = (l) => k(l)?.plainLabel ?? l.label, oe = "__bik_create_subagent__", Ce = ({
13
+ items: l,
14
+ onSelect: S,
15
+ registerKeyHandler: C,
16
+ onClose: v,
17
+ onCreateSubAgent: y,
18
+ initialSource: U,
19
+ toolActions: b
20
20
  }) => {
21
- const [G, B] = A(null), [a, E] = A(F ?? null), [S, g] = A(0), [v, M] = A(""), b = x(
22
- () => i.filter((e) => y(e)?.kind === "tool"),
23
- [i]
24
- ), C = x(
25
- () => i.filter((e) => y(e)?.kind === "subagent"),
26
- [i]
27
- ), _ = x(() => {
21
+ const [Q, _] = B(null), [a, O] = B(U ?? null), [A, h] = B(-1), [w, j] = B(""), g = x(
22
+ () => l.filter((e) => k(e)?.kind === "tool"),
23
+ [l]
24
+ ), $ = x(
25
+ () => l.filter((e) => k(e)?.kind === "subagent"),
26
+ [l]
27
+ ), T = x(() => {
28
28
  const e = [];
29
- return b.forEach((r) => {
30
- const f = y(r)?.source ?? "other";
29
+ return g.forEach((r) => {
30
+ const f = k(r)?.source ?? "other";
31
31
  e.includes(f) || e.push(f);
32
32
  }), e;
33
- }, [b]), O = x(
33
+ }, [g]), P = x(
34
34
  () => new Map(
35
- (h ?? []).map((e) => [e.source, e])
35
+ (b ?? []).map((e) => [e.source, e])
36
36
  ),
37
- [h]
38
- ), $ = x(
39
- () => H.filter(
40
- (e) => e.key === "tool" ? b.length > 0 || (h?.length ?? 0) > 0 : C.length > 0 || !!k
37
+ [b]
38
+ ), L = x(
39
+ () => ne.filter(
40
+ (e) => e.key === "tool" ? g.length > 0 || (b?.length ?? 0) > 0 : $.length > 0 || !!y
41
41
  ),
42
- [b.length, C.length, k, h?.length]
43
- ), T = $.length === 1 ? $[0].key : null, c = G ?? T, d = c ? c === "subagent" ? (
42
+ [g.length, $.length, y, b?.length]
43
+ ), D = L.length === 1 ? L[0].key : null, s = Q ?? D, d = s ? s === "subagent" ? (
44
44
  // Always titled — with a back arrow only when the category chooser is above.
45
45
  {
46
46
  title: "Sub-agent",
47
- onBack: T ? void 0 : () => B(null)
47
+ onBack: D ? void 0 : () => _(null)
48
48
  }
49
49
  ) : a ? {
50
- title: D(a),
51
- onBack: () => E(null),
52
- icon: z(a)
50
+ title: N(a),
51
+ // Deep-linked to a source (opened from a right-panel source button):
52
+ // that source IS the root, so no back arrow. In the @-drill flow
53
+ // (no initialSource) back returns to the source chooser.
54
+ onBack: U ? void 0 : () => O(null),
55
+ icon: E(a)
53
56
  } : (
54
57
  // Always titled — matches the Sub-agent header; back arrow only when the
55
58
  // category chooser is above (i.e. not the sole category).
56
59
  {
57
60
  title: "Tools",
58
- onBack: T ? void 0 : () => B(null)
61
+ onBack: D ? void 0 : () => _(null)
59
62
  }
60
- ) : null, s = x(() => {
61
- if (!c)
62
- return $.map((t) => ({
63
- id: t.key,
64
- label: t.label,
63
+ ) : null, c = x(() => {
64
+ if (!s)
65
+ return L.map((n) => ({
66
+ id: n.key,
67
+ label: n.label,
65
68
  drillsIn: !0,
66
69
  onActivate: () => {
67
- B(t.key), E(null);
70
+ _(n.key), O(null);
68
71
  }
69
72
  }));
70
- if (c === "subagent") {
71
- const t = v.trim().toLowerCase(), n = C.filter((l) => !t || L(l).toLowerCase().includes(t)).map((l) => ({
72
- id: String(l.id),
73
- label: L(l),
73
+ if (s === "subagent") {
74
+ const n = w.trim().toLowerCase(), t = $.filter((o) => !n || I(o).toLowerCase().includes(n)).map((o) => ({
75
+ id: String(o.id),
76
+ label: I(o),
74
77
  drillsIn: !1,
75
- onActivate: () => R(l)
78
+ onActivate: () => S(o)
76
79
  }));
77
- return k && n.push({
78
- id: te,
80
+ return y && t.push({
81
+ id: oe,
79
82
  label: "Create new",
80
83
  drillsIn: !1,
81
84
  isCreate: !0,
82
85
  onActivate: () => {
83
- I?.(), k();
86
+ v?.(), y();
84
87
  }
85
- }), n;
88
+ }), t;
86
89
  }
87
90
  if (!a) {
88
- const t = (h ?? []).map((n) => n.source).filter((n) => !_.includes(n));
89
- return [..._, ...t].sort((n, l) => U(n) - U(l)).map((n) => {
90
- const l = O.get(n);
91
- return l?.connected === !1 ? {
92
- id: n,
93
- label: D(n),
94
- drillsIn: !1,
95
- icon: z(n) ?? l.icon,
96
- rightLabel: "Connect",
97
- onActivate: () => {
98
- I?.(), l.onConnect?.();
99
- }
100
- } : {
101
- id: n,
102
- label: D(n),
91
+ const n = (b ?? []).map((t) => t.source).filter((t) => !T.includes(t));
92
+ return [...T, ...n].sort((t, o) => q(t) - q(o)).map((t) => {
93
+ const o = P.get(t);
94
+ if (o?.connected === !1)
95
+ return {
96
+ id: t,
97
+ label: N(t),
98
+ drillsIn: !1,
99
+ icon: E(t) ?? o.icon,
100
+ rightLabel: "Connect",
101
+ onActivate: () => {
102
+ v?.(), o.onConnect?.();
103
+ }
104
+ };
105
+ const G = g.filter(
106
+ (R) => (k(R)?.source ?? "other") === t
107
+ );
108
+ if (G.length + (o ? 1 : 0) === 1) {
109
+ const R = E(t) ?? o?.icon;
110
+ if (o)
111
+ return {
112
+ id: t,
113
+ label: o.label,
114
+ drillsIn: !1,
115
+ icon: R,
116
+ onActivate: () => {
117
+ v?.(), o.onSelect();
118
+ }
119
+ };
120
+ const M = G[0];
121
+ return {
122
+ id: String(M.id),
123
+ label: I(M),
124
+ drillsIn: !1,
125
+ icon: R,
126
+ onActivate: () => S(M)
127
+ };
128
+ }
129
+ return {
130
+ id: t,
131
+ label: N(t),
103
132
  drillsIn: !0,
104
- icon: z(n) ?? l?.icon,
105
- onActivate: () => E(n)
133
+ icon: E(t) ?? o?.icon,
134
+ onActivate: () => O(t)
106
135
  };
107
136
  });
108
137
  }
109
- const e = v.trim().toLowerCase(), r = b.filter((t) => (y(t)?.source ?? "other") === a).filter((t) => !e || L(t).toLowerCase().includes(e)).map((t) => ({
110
- id: String(t.id),
111
- label: L(t),
138
+ const e = w.trim().toLowerCase(), r = g.filter((n) => (k(n)?.source ?? "other") === a).filter((n) => !e || I(n).toLowerCase().includes(e)).map((n) => ({
139
+ id: String(n.id),
140
+ label: I(n),
112
141
  drillsIn: !1,
113
- onActivate: () => R(t)
114
- })), f = O.get(a);
142
+ onActivate: () => S(n)
143
+ })), f = P.get(a);
115
144
  if (f) {
116
- const t = a in ee;
145
+ const n = a in re;
117
146
  r.push({
118
147
  id: `create:${a}`,
119
148
  label: f.label,
120
149
  drillsIn: !1,
121
- isCreate: !t,
150
+ isCreate: !n,
122
151
  onActivate: () => {
123
- I?.(), f.onSelect();
152
+ v?.(), f.onSelect();
124
153
  }
125
154
  });
126
155
  }
127
156
  return r;
128
157
  }, [
129
- c,
130
- $,
158
+ s,
159
+ L,
131
160
  a,
161
+ w,
162
+ g,
163
+ $,
164
+ T,
165
+ S,
132
166
  v,
167
+ y,
133
168
  b,
134
- C,
135
- _,
136
- R,
137
- I,
138
- k,
139
- h,
140
- O
169
+ P
141
170
  ]);
142
- P(() => g(0), [c, a, v, i]), P(() => M(""), [c, a]);
143
- const N = Y({ rows: s, activeIndex: S, header: d });
144
- N.current = { rows: s, activeIndex: S, header: d }, P(() => {
145
- if (w)
146
- return w((e) => {
147
- const { rows: r, activeIndex: f, header: t } = N.current;
171
+ z(() => h(-1), [s, a, w, l]), z(() => j(""), [s, a]);
172
+ const F = H({ rows: c, activeIndex: A, header: d });
173
+ F.current = { rows: c, activeIndex: A, header: d }, z(() => {
174
+ if (C)
175
+ return C((e) => {
176
+ const { rows: r, activeIndex: f, header: n } = F.current;
148
177
  switch (e.key) {
149
178
  case "ArrowDown":
150
- return r.length && g((n) => (n + 1) % r.length), !0;
179
+ return r.length && h((t) => (t + 1) % r.length), !0;
151
180
  case "ArrowUp":
152
- return r.length && g((n) => (n + r.length - 1) % r.length), !0;
181
+ return r.length && h((t) => (t + r.length - 1) % r.length), !0;
153
182
  case "ArrowRight":
154
183
  case "Enter":
155
- return r[f]?.onActivate(), !0;
184
+ return (r[f] ?? r[0])?.onActivate(), !0;
156
185
  case "ArrowLeft":
157
- return t?.onBack ? (t.onBack(), !0) : !1;
186
+ return n?.onBack ? (n.onBack(), !0) : !1;
158
187
  default:
159
188
  return !1;
160
189
  }
161
- }), () => w(null);
162
- }, [w]);
163
- const q = c ? s.length && !s[0].drillsIn ? "items" : "sources" : "categories", J = c === "tool" && !!a || c === "subagent";
164
- return /* @__PURE__ */ m(ne, { className: `bik-mention-picker bik-mention-picker--${q}`, children: [
190
+ }), () => C(null);
191
+ }, [C]);
192
+ const V = s ? c.length && !c[0].drillsIn ? "items" : "sources" : "categories", W = s === "tool" && !!a || s === "subagent";
193
+ return /* @__PURE__ */ m(ie, { className: `bik-mention-picker bik-mention-picker--${V}`, children: [
165
194
  d && /* @__PURE__ */ m(
166
- se,
195
+ pe,
167
196
  {
168
197
  type: "button",
169
198
  onClick: d.onBack,
170
199
  disabled: !d.onBack,
171
200
  style: {
172
- background: o.surface.subdued,
201
+ background: i.surface.subdued,
173
202
  cursor: d.onBack ? "pointer" : "default"
174
203
  },
175
204
  children: [
176
205
  d.onBack && /* @__PURE__ */ u(
177
- X,
206
+ K,
178
207
  {
179
208
  width: 20,
180
209
  height: 20,
181
- color: o.content.primary
210
+ color: i.content.primary
182
211
  }
183
212
  ),
184
- d.icon && j(d.icon),
185
- /* @__PURE__ */ m(Z, { children: [
213
+ d.icon && J(d.icon),
214
+ /* @__PURE__ */ m(ee, { children: [
186
215
  " ",
187
216
  d.title
188
217
  ] })
189
218
  ]
190
219
  }
191
220
  ),
192
- J && /* @__PURE__ */ m(re, { children: [
221
+ W && /* @__PURE__ */ m(le, { children: [
193
222
  /* @__PURE__ */ u(
194
- W,
223
+ Z,
195
224
  {
196
225
  width: 20,
197
226
  height: 20,
198
- color: o.content.placeholder
227
+ color: i.content.placeholder
199
228
  }
200
229
  ),
201
230
  /* @__PURE__ */ u(
202
- oe,
231
+ ae,
203
232
  {
204
233
  autoFocus: !0,
205
- value: v,
234
+ value: w,
206
235
  placeholder: "Search",
207
236
  "data-test": "mention-picker-search",
208
- onChange: (e) => M(e.target.value),
237
+ onChange: (e) => j(e.target.value),
209
238
  onKeyDown: (e) => {
210
- s.length && (e.key === "ArrowDown" ? (e.preventDefault(), g((r) => (r + 1) % s.length)) : e.key === "ArrowUp" ? (e.preventDefault(), g((r) => (r + s.length - 1) % s.length)) : e.key === "Enter" && (e.preventDefault(), s[S]?.onActivate()));
239
+ c.length && (e.key === "ArrowDown" ? (e.preventDefault(), h((r) => (r + 1) % c.length)) : e.key === "ArrowUp" ? (e.preventDefault(), h((r) => (r + c.length - 1) % c.length)) : e.key === "Enter" && (e.preventDefault(), (c[A] ?? c[0])?.onActivate()));
211
240
  }
212
241
  }
213
242
  )
214
243
  ] }),
215
- s.length === 0 ? /* @__PURE__ */ u(de, { children: c === "subagent" ? "No sub-agents available" : "No tools available" }) : s.map((e, r) => /* @__PURE__ */ u(
216
- ie,
244
+ c.length === 0 ? /* @__PURE__ */ u(fe, { children: s === "subagent" ? null : "No tools available" }) : c.map((e, r) => /* @__PURE__ */ u(
245
+ ce,
217
246
  {
218
247
  type: "button",
219
- $active: r === S,
220
- onMouseEnter: () => g(r),
248
+ $active: r === A,
249
+ onMouseEnter: () => h(r),
250
+ onMouseLeave: () => h(-1),
221
251
  onClick: e.onActivate,
222
- children: e.isCreate ? /* @__PURE__ */ u(ce, { children: e.label }) : /* @__PURE__ */ m(Q, { children: [
223
- /* @__PURE__ */ m(ae, { children: [
224
- j(e.icon),
225
- /* @__PURE__ */ u(K, { color: o.content.primary, children: e.label })
252
+ children: e.isCreate ? /* @__PURE__ */ u(ue, { children: e.label }) : /* @__PURE__ */ m(X, { children: [
253
+ /* @__PURE__ */ m(se, { children: [
254
+ J(e.icon),
255
+ /* @__PURE__ */ u(te, { color: i.content.primary, children: e.label })
226
256
  ] }),
227
- e.rightLabel ? /* @__PURE__ */ u(le, { children: e.rightLabel }) : e.drillsIn && /* @__PURE__ */ u(V, { width: 12, height: 12 })
257
+ e.rightLabel ? /* @__PURE__ */ u(de, { children: e.rightLabel }) : e.drillsIn && /* @__PURE__ */ u(Y, { width: 12, height: 12 })
228
258
  ] })
229
259
  },
230
260
  e.id
231
261
  ))
232
262
  ] });
233
- }, ne = p.div`
263
+ }, ie = p.div`
234
264
  display: flex;
235
265
  flex-direction: column;
236
266
  min-width: 240px;
237
267
  max-height: 301px;
238
268
  overflow-y: auto;
239
- background: ${o.surface.standard};
240
- border: 1px solid ${o.stroke.primary};
269
+ background: ${i.surface.standard};
270
+ border: 1px solid ${i.stroke.primary};
241
271
  border-radius: 4px;
242
272
  box-shadow: 0px -2px 8px 0px #0000001f;
243
- `, re = p.div`
273
+ `, le = p.div`
244
274
  display: flex;
245
275
  align-items: center;
246
276
  gap: 8px;
247
277
  padding: 10px 12px;
248
- border-bottom: 1px solid ${o.stroke.primary};
249
- `, oe = p.input`
278
+ border-bottom: 1px solid ${i.stroke.primary};
279
+ `, ae = p.input`
250
280
  flex: 1;
251
281
  min-width: 0;
252
282
  border: none;
@@ -254,12 +284,12 @@ const y = (i) => i.meta, L = (i) => y(i)?.plainLabel ?? i.label, te = "__bik_cre
254
284
  background: transparent;
255
285
  font-family: Inter;
256
286
  font-size: 14px;
257
- color: ${o.content.primary};
287
+ color: ${i.content.primary};
258
288
 
259
289
  &::placeholder {
260
- color: ${o.content.placeholder};
290
+ color: ${i.content.placeholder};
261
291
  }
262
- `, ie = p.button`
292
+ `, ce = p.button`
263
293
  display: flex;
264
294
  justify-content: space-between;
265
295
  align-items: center;
@@ -268,39 +298,39 @@ const y = (i) => i.meta, L = (i) => y(i)?.plainLabel ?? i.label, te = "__bik_cre
268
298
  padding: 8px 10px;
269
299
  height: 48px;
270
300
  border: none;
271
- border-bottom: 1px solid ${o.stroke.primary};
272
- background: ${(i) => i.$active ? o.surface.subdued : "transparent"};
301
+ border-bottom: 1px solid ${i.stroke.primary};
302
+ background: ${(l) => l.$active ? i.surface.subdued : "transparent"};
273
303
  cursor: pointer;
274
304
  text-align: left;
275
305
 
276
306
  &:hover {
277
- background: ${o.surface.subdued};
307
+ background: ${i.surface.hovered};
278
308
  }
279
- `, ae = p.div`
309
+ `, se = p.div`
280
310
  display: flex;
281
311
  align-items: center;
282
312
  gap: 12px;
283
313
  min-width: 0;
284
- `, le = p.span`
314
+ `, de = p.span`
285
315
  flex-shrink: 0;
286
- color: ${o.content.brand};
316
+ color: ${i.content.brand};
287
317
  font-family: Inter;
288
318
  font-size: 14px;
289
319
  font-weight: 600;
290
320
  white-space: nowrap;
291
- `, ce = p.div`
321
+ `, ue = p.div`
292
322
  width: 100%;
293
323
  text-align: center;
294
- color: ${o.content.brand};
324
+ color: ${i.content.brand};
295
325
  font-family: Inter;
296
326
  font-size: 14px;
297
327
  font-weight: 600;
298
- `, se = p.button`
328
+ `, pe = p.button`
299
329
  display: flex;
300
330
  align-items: center;
301
331
  padding: 12px 16px;
302
332
  border: none;
303
- border-bottom: 1px solid ${o.stroke.primary};
333
+ border-bottom: 1px solid ${i.stroke.primary};
304
334
  background: transparent;
305
335
  cursor: pointer;
306
336
  font-family: Inter;
@@ -308,13 +338,13 @@ const y = (i) => i.meta, L = (i) => y(i)?.plainLabel ?? i.label, te = "__bik_cre
308
338
  font-weight: 600;
309
339
  height: 48px;
310
340
  gap: 4px;
311
- `, de = p.div`
341
+ `, fe = p.div`
312
342
  padding: 12px 10px;
313
343
  font-family: Inter;
314
344
  font-size: 13px;
315
- color: ${o.content.secondary};
345
+ color: ${i.content.secondary};
316
346
  `;
317
347
  export {
318
- we as MentionPicker
348
+ Ce as MentionPicker
319
349
  };
320
350
  //# sourceMappingURL=MentionPicker.js.map