@bikdotai/bik-component-library 0.0.823-beta.2 → 0.0.824-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 (172) hide show
  1. package/dist/cjs/components/adbanner/AdBanner.js.map +1 -0
  2. package/dist/cjs/components/{banner → adbanner}/Banner.styled.js +13 -9
  3. package/dist/cjs/components/adbanner/Banner.styled.js.map +1 -0
  4. package/dist/cjs/components/adbanner/BannerInline.js.map +1 -0
  5. package/dist/cjs/components/adbanner/BannerWithImage.js.map +1 -0
  6. package/dist/cjs/components/adbanner/CardBanner.js.map +1 -0
  7. package/dist/cjs/components/adbanner/CardBannerWithImage.js.map +1 -0
  8. package/dist/cjs/components/adbanner/model.js.map +1 -0
  9. package/dist/cjs/components/agent-builder/AgentBuilder.js +1 -1
  10. package/dist/cjs/components/agent-builder/AgentBuilder.js.map +1 -1
  11. package/dist/cjs/components/agent-builder/AgentBuilder.styled.js +97 -66
  12. package/dist/cjs/components/agent-builder/AgentBuilder.styled.js.map +1 -1
  13. package/dist/cjs/components/agent-builder/components/AgentBuilderTopBar.js +1 -1
  14. package/dist/cjs/components/agent-builder/components/AgentBuilderTopBar.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/MentionField.js +1 -1
  18. package/dist/cjs/components/agent-builder/components/MentionField.js.map +1 -1
  19. package/dist/cjs/components/agent-builder/components/SelectableListSection.js +4 -4
  20. package/dist/cjs/components/agent-builder/components/SelectableListSection.js.map +1 -1
  21. package/dist/cjs/components/agent-builder/components/StepRail.js +1 -1
  22. package/dist/cjs/components/agent-builder/components/StepRail.js.map +1 -1
  23. package/dist/cjs/components/agent-builder/context/AgentBuilderContext.js +1 -1
  24. package/dist/cjs/components/agent-builder/context/AgentBuilderContext.js.map +1 -1
  25. package/dist/cjs/components/agent-builder/steps/Step1About.js +1 -1
  26. package/dist/cjs/components/agent-builder/steps/Step1About.js.map +1 -1
  27. package/dist/cjs/components/agent-builder/steps/Step2WhenItStepsIn.js +1 -1
  28. package/dist/cjs/components/agent-builder/steps/Step2WhenItStepsIn.js.map +1 -1
  29. package/dist/cjs/components/agent-builder/steps/Step3HowItResponds.js +1 -1
  30. package/dist/cjs/components/agent-builder/steps/Step3HowItResponds.js.map +1 -1
  31. package/dist/cjs/components/agent-builder/steps/Step4HandoverRules.js +1 -1
  32. package/dist/cjs/components/agent-builder/steps/Step4HandoverRules.js.map +1 -1
  33. package/dist/cjs/components/agent-listing/AgentListing.js +1 -1
  34. package/dist/cjs/components/agent-listing/AgentListing.js.map +1 -1
  35. package/dist/cjs/components/agent-listing/AgentListing.styled.js +32 -28
  36. package/dist/cjs/components/agent-listing/AgentListing.styled.js.map +1 -1
  37. package/dist/cjs/components/agent-listing/AgentListingHeader.js +1 -1
  38. package/dist/cjs/components/agent-listing/AgentListingHeader.js.map +1 -1
  39. package/dist/cjs/components/agent-listing/AgentTableRow.js +1 -1
  40. package/dist/cjs/components/agent-listing/AgentTableRow.js.map +1 -1
  41. package/dist/cjs/components/template-preview/models/TemplateMeta.js +1 -1
  42. package/dist/cjs/components/template-preview/models/TemplateMeta.js.map +1 -1
  43. package/dist/cjs/editor/BikEditor.js +1 -1
  44. package/dist/cjs/editor/BikEditor.js.map +1 -1
  45. package/dist/cjs/editor/BikEditor.styles.js +122 -2
  46. package/dist/cjs/editor/BikEditor.styles.js.map +1 -1
  47. package/dist/cjs/editor/BikEditor.types.js.map +1 -1
  48. package/dist/cjs/editor/BikEditor.utils.js +3 -2
  49. package/dist/cjs/editor/BikEditor.utils.js.map +1 -1
  50. package/dist/cjs/editor/extensions/buildExtensions.js +3 -1
  51. package/dist/cjs/editor/extensions/buildExtensions.js.map +1 -1
  52. package/dist/cjs/editor/extensions/jsonHighlight/JsonHighlightExtension.js +3 -0
  53. package/dist/cjs/editor/extensions/jsonHighlight/JsonHighlightExtension.js.map +1 -0
  54. package/dist/cjs/editor/extensions/jsonHighlight/tokenizeJson.js +2 -0
  55. package/dist/cjs/editor/extensions/jsonHighlight/tokenizeJson.js.map +1 -0
  56. package/dist/cjs/icons/BIK AI specific/WandSparkles.js +2 -0
  57. package/dist/cjs/icons/BIK AI specific/WandSparkles.js.map +1 -0
  58. package/dist/cjs/icons/index.js +1 -1
  59. package/dist/cjs/index.js +1 -1
  60. package/dist/esm/components/adbanner/AdBanner.js.map +1 -0
  61. package/dist/esm/components/{banner → adbanner}/Banner.styled.js +18 -14
  62. package/dist/esm/components/adbanner/Banner.styled.js.map +1 -0
  63. package/dist/esm/components/adbanner/BannerInline.js.map +1 -0
  64. package/dist/esm/components/adbanner/BannerWithImage.js.map +1 -0
  65. package/dist/esm/components/adbanner/CardBanner.js.map +1 -0
  66. package/dist/esm/components/adbanner/CardBannerWithImage.js.map +1 -0
  67. package/dist/esm/components/adbanner/model.js.map +1 -0
  68. package/dist/esm/components/agent-builder/AgentBuilder.js +82 -83
  69. package/dist/esm/components/agent-builder/AgentBuilder.js.map +1 -1
  70. package/dist/esm/components/agent-builder/AgentBuilder.styled.d.ts +13 -5
  71. package/dist/esm/components/agent-builder/AgentBuilder.styled.js +141 -102
  72. package/dist/esm/components/agent-builder/AgentBuilder.styled.js.map +1 -1
  73. package/dist/esm/components/agent-builder/components/AgentBuilderTopBar.d.ts +0 -1
  74. package/dist/esm/components/agent-builder/components/AgentBuilderTopBar.js +33 -46
  75. package/dist/esm/components/agent-builder/components/AgentBuilderTopBar.js.map +1 -1
  76. package/dist/esm/components/agent-builder/components/CreateSubAgentPanel.js +135 -119
  77. package/dist/esm/components/agent-builder/components/CreateSubAgentPanel.js.map +1 -1
  78. package/dist/esm/components/agent-builder/components/MentionField.js +44 -45
  79. package/dist/esm/components/agent-builder/components/MentionField.js.map +1 -1
  80. package/dist/esm/components/agent-builder/components/SelectableListSection.js +91 -94
  81. package/dist/esm/components/agent-builder/components/SelectableListSection.js.map +1 -1
  82. package/dist/esm/components/agent-builder/components/StepRail.js +28 -20
  83. package/dist/esm/components/agent-builder/components/StepRail.js.map +1 -1
  84. package/dist/esm/components/agent-builder/context/AgentBuilderContext.d.ts +7 -0
  85. package/dist/esm/components/agent-builder/context/AgentBuilderContext.js +108 -98
  86. package/dist/esm/components/agent-builder/context/AgentBuilderContext.js.map +1 -1
  87. package/dist/esm/components/agent-builder/steps/Step1About.js +38 -35
  88. package/dist/esm/components/agent-builder/steps/Step1About.js.map +1 -1
  89. package/dist/esm/components/agent-builder/steps/Step2WhenItStepsIn.js +118 -122
  90. package/dist/esm/components/agent-builder/steps/Step2WhenItStepsIn.js.map +1 -1
  91. package/dist/esm/components/agent-builder/steps/Step3HowItResponds.js +112 -110
  92. package/dist/esm/components/agent-builder/steps/Step3HowItResponds.js.map +1 -1
  93. package/dist/esm/components/agent-builder/steps/Step4HandoverRules.js +72 -70
  94. package/dist/esm/components/agent-builder/steps/Step4HandoverRules.js.map +1 -1
  95. package/dist/esm/components/agent-listing/AgentListing.js +45 -43
  96. package/dist/esm/components/agent-listing/AgentListing.js.map +1 -1
  97. package/dist/esm/components/agent-listing/AgentListing.model.d.ts +7 -0
  98. package/dist/esm/components/agent-listing/AgentListing.styled.js +28 -24
  99. package/dist/esm/components/agent-listing/AgentListing.styled.js.map +1 -1
  100. package/dist/esm/components/agent-listing/AgentListingHeader.d.ts +2 -0
  101. package/dist/esm/components/agent-listing/AgentListingHeader.js +14 -12
  102. package/dist/esm/components/agent-listing/AgentListingHeader.js.map +1 -1
  103. package/dist/esm/components/agent-listing/AgentTableRow.js +102 -57
  104. package/dist/esm/components/agent-listing/AgentTableRow.js.map +1 -1
  105. package/dist/esm/components/template-preview/models/TemplateMeta.d.ts +1 -2
  106. package/dist/esm/components/template-preview/models/TemplateMeta.js +11 -11
  107. package/dist/esm/components/template-preview/models/TemplateMeta.js.map +1 -1
  108. package/dist/esm/editor/BikEditor.js +254 -181
  109. package/dist/esm/editor/BikEditor.js.map +1 -1
  110. package/dist/esm/editor/BikEditor.styles.d.ts +9 -0
  111. package/dist/esm/editor/BikEditor.styles.js +128 -6
  112. package/dist/esm/editor/BikEditor.styles.js.map +1 -1
  113. package/dist/esm/editor/BikEditor.types.d.ts +76 -0
  114. package/dist/esm/editor/BikEditor.types.js.map +1 -1
  115. package/dist/esm/editor/BikEditor.utils.d.ts +15 -1
  116. package/dist/esm/editor/BikEditor.utils.js +155 -92
  117. package/dist/esm/editor/BikEditor.utils.js.map +1 -1
  118. package/dist/esm/editor/extensions/buildExtensions.d.ts +1 -1
  119. package/dist/esm/editor/extensions/buildExtensions.js +86 -55
  120. package/dist/esm/editor/extensions/buildExtensions.js.map +1 -1
  121. package/dist/esm/editor/extensions/jsonHighlight/JsonHighlightExtension.d.ts +14 -0
  122. package/dist/esm/editor/extensions/jsonHighlight/JsonHighlightExtension.js +64 -0
  123. package/dist/esm/editor/extensions/jsonHighlight/JsonHighlightExtension.js.map +1 -0
  124. package/dist/esm/editor/extensions/jsonHighlight/tokenizeJson.d.ts +18 -0
  125. package/dist/esm/editor/extensions/jsonHighlight/tokenizeJson.js +21 -0
  126. package/dist/esm/editor/extensions/jsonHighlight/tokenizeJson.js.map +1 -0
  127. package/dist/esm/editor/index.d.ts +1 -1
  128. package/dist/esm/icons/BIK AI specific/WandSparkles.d.ts +7 -0
  129. package/dist/esm/icons/BIK AI specific/WandSparkles.js +39 -0
  130. package/dist/esm/icons/BIK AI specific/WandSparkles.js.map +1 -0
  131. package/dist/esm/icons/BIK AI specific/index.d.ts +1 -0
  132. package/dist/esm/icons/index.d.ts +1 -1
  133. package/dist/esm/icons/index.js +18 -16
  134. package/dist/esm/icons/index.js.map +1 -1
  135. package/dist/esm/index.d.ts +1 -1
  136. package/dist/esm/index.js +2 -2
  137. package/package.json +1 -1
  138. package/dist/cjs/components/banner/AdBanner.js.map +0 -1
  139. package/dist/cjs/components/banner/Banner.styled.js.map +0 -1
  140. package/dist/cjs/components/banner/BannerInline.js.map +0 -1
  141. package/dist/cjs/components/banner/BannerWithImage.js.map +0 -1
  142. package/dist/cjs/components/banner/CardBanner.js.map +0 -1
  143. package/dist/cjs/components/banner/CardBannerWithImage.js.map +0 -1
  144. package/dist/cjs/components/banner/model.js.map +0 -1
  145. package/dist/esm/components/banner/AdBanner.js.map +0 -1
  146. package/dist/esm/components/banner/Banner.stories.d.ts +0 -39
  147. package/dist/esm/components/banner/Banner.styled.js.map +0 -1
  148. package/dist/esm/components/banner/BannerInline.js.map +0 -1
  149. package/dist/esm/components/banner/BannerWithImage.js.map +0 -1
  150. package/dist/esm/components/banner/CardBanner.js.map +0 -1
  151. package/dist/esm/components/banner/CardBannerWithImage.js.map +0 -1
  152. package/dist/esm/components/banner/model.js.map +0 -1
  153. /package/dist/cjs/components/{banner → adbanner}/AdBanner.js +0 -0
  154. /package/dist/cjs/components/{banner → adbanner}/BannerInline.js +0 -0
  155. /package/dist/cjs/components/{banner → adbanner}/BannerWithImage.js +0 -0
  156. /package/dist/cjs/components/{banner → adbanner}/CardBanner.js +0 -0
  157. /package/dist/cjs/components/{banner → adbanner}/CardBannerWithImage.js +0 -0
  158. /package/dist/cjs/components/{banner → adbanner}/model.js +0 -0
  159. /package/dist/esm/components/{banner → adbanner}/AdBanner.d.ts +0 -0
  160. /package/dist/esm/components/{banner → adbanner}/AdBanner.js +0 -0
  161. /package/dist/esm/components/{banner → adbanner}/Banner.styled.d.ts +0 -0
  162. /package/dist/esm/components/{banner → adbanner}/BannerInline.d.ts +0 -0
  163. /package/dist/esm/components/{banner → adbanner}/BannerInline.js +0 -0
  164. /package/dist/esm/components/{banner → adbanner}/BannerWithImage.d.ts +0 -0
  165. /package/dist/esm/components/{banner → adbanner}/BannerWithImage.js +0 -0
  166. /package/dist/esm/components/{banner → adbanner}/CardBanner.d.ts +0 -0
  167. /package/dist/esm/components/{banner → adbanner}/CardBanner.js +0 -0
  168. /package/dist/esm/components/{banner → adbanner}/CardBannerWithImage.d.ts +0 -0
  169. /package/dist/esm/components/{banner → adbanner}/CardBannerWithImage.js +0 -0
  170. /package/dist/esm/components/{banner → adbanner}/index.d.ts +0 -0
  171. /package/dist/esm/components/{banner → adbanner}/model.d.ts +0 -0
  172. /package/dist/esm/components/{banner → adbanner}/model.js +0 -0
@@ -1,70 +1,57 @@
1
- import { jsxs as r, jsx as t } from "react/jsx-runtime";
2
- import p from "../../../assets/icons/arrow_left.svg.js";
3
- import { TitleRegular as u } from "../../TypographyStyle.js";
4
- import { COLORS as a } from "../../../constants/Theme.js";
5
- import { TopBar as g, TopBarSide as o, BackButton as f } from "../AgentBuilder.styled.js";
6
- import { Tag as T } from "../../tag/Tag.js";
7
- import { Button as n } from "../../button/Button.js";
1
+ import { jsxs as i, jsx as t } from "react/jsx-runtime";
2
+ import c from "../../../assets/icons/arrow_left.svg.js";
3
+ import { TitleRegular as p } from "../../TypographyStyle.js";
4
+ import { COLORS as o } from "../../../constants/Theme.js";
5
+ import { TopBar as s, TopBarSide as a, BackButton as f } from "../AgentBuilder.styled.js";
6
+ import { Tag as g } from "../../tag/Tag.js";
7
+ import { Button as u } from "../../button/Button.js";
8
8
  const L = ({
9
- name: l,
10
- status: d,
11
- onBack: e,
12
- onDiscard: s,
13
- onSaveDraft: c,
9
+ name: n,
10
+ status: l,
11
+ onBack: r,
12
+ onSaveDraft: d,
14
13
  isSaving: m
15
14
  }) => {
16
- const i = d === "live";
17
- return /* @__PURE__ */ r(g, { children: [
18
- /* @__PURE__ */ r(o, { children: [
19
- e && /* @__PURE__ */ t(
15
+ const e = l === "live";
16
+ return /* @__PURE__ */ i(s, { children: [
17
+ /* @__PURE__ */ i(a, { children: [
18
+ r && /* @__PURE__ */ t(
20
19
  f,
21
20
  {
22
21
  "data-test": "agent-builder-back",
23
- onClick: e,
22
+ onClick: r,
24
23
  "aria-label": "Back",
25
24
  children: /* @__PURE__ */ t(
26
- p,
25
+ c,
27
26
  {
28
27
  width: 20,
29
28
  height: 20,
30
- color: a.content.primary
29
+ color: o.content.primary
31
30
  }
32
31
  )
33
32
  }
34
33
  ),
35
- /* @__PURE__ */ t(u, { color: a.content.primary, children: l || "Untitled agent" }),
34
+ /* @__PURE__ */ t(p, { color: o.content.primary, children: n || "Untitled agent" }),
36
35
  /* @__PURE__ */ t(
37
- T,
36
+ g,
38
37
  {
39
- tagText: i ? "Live" : "Draft",
40
- type: i ? "positive" : "neutral",
38
+ tagText: e ? "Live" : "Draft",
39
+ type: e ? "positive" : "neutral",
41
40
  variant: "regular"
42
41
  }
43
42
  )
44
43
  ] }),
45
- /* @__PURE__ */ r(o, { children: [
46
- /* @__PURE__ */ t(
47
- n,
48
- {
49
- "data-test": "agent-builder-discard",
50
- buttonType: "text",
51
- size: "small",
52
- buttonText: "Discard",
53
- onClick: s
54
- }
55
- ),
56
- /* @__PURE__ */ t(
57
- n,
58
- {
59
- "data-test": "agent-builder-save-draft",
60
- buttonType: "secondary",
61
- size: "small",
62
- buttonText: "Save as draft",
63
- isLoading: m,
64
- onClick: c
65
- }
66
- )
67
- ] })
44
+ /* @__PURE__ */ t(a, { children: /* @__PURE__ */ t(
45
+ u,
46
+ {
47
+ "data-test": "agent-builder-save-draft",
48
+ buttonType: "secondary",
49
+ size: "small",
50
+ buttonText: "Save as draft",
51
+ isLoading: m,
52
+ onClick: d
53
+ }
54
+ ) })
68
55
  ] });
69
56
  };
70
57
  export {
@@ -1 +1 @@
1
- {"version":3,"file":"AgentBuilderTopBar.js","sources":["../../../../../src/components/agent-builder/components/AgentBuilderTopBar.tsx"],"sourcesContent":["import ArrowLeftIcon from '@src/assets/icons/arrow_left.svg';\nimport React from 'react';\nimport { Button } from '@src/components/button';\nimport { Tag } from '@src/components/tag';\nimport { TitleRegular } from '@src/components/TypographyStyle';\nimport { COLORS } from '@src/constants/Theme';\nimport { AgentStatus } from '../AgentBuilder.model';\nimport { BackButton, TopBar, TopBarSide } from '../AgentBuilder.styled';\n\ninterface AgentBuilderTopBarProps {\n\tname: string;\n\tstatus: AgentStatus;\n\tonBack?: () => void;\n\tonDiscard: () => void;\n\tonSaveDraft: () => void;\n\tisSaving?: boolean;\n}\n\nexport const AgentBuilderTopBar: React.FC<AgentBuilderTopBarProps> = ({\n\tname,\n\tstatus,\n\tonBack,\n\tonDiscard,\n\tonSaveDraft,\n\tisSaving,\n}) => {\n\tconst isLive = status === 'live';\n\treturn (\n\t\t<TopBar>\n\t\t\t<TopBarSide>\n\t\t\t\t{onBack && (\n\t\t\t\t\t<BackButton\n\t\t\t\t\t\tdata-test=\"agent-builder-back\"\n\t\t\t\t\t\tonClick={onBack}\n\t\t\t\t\t\taria-label=\"Back\"\n\t\t\t\t\t>\n\t\t\t\t\t\t<ArrowLeftIcon\n\t\t\t\t\t\t\twidth={20}\n\t\t\t\t\t\t\theight={20}\n\t\t\t\t\t\t\tcolor={COLORS.content.primary}\n\t\t\t\t\t\t/>\n\t\t\t\t\t</BackButton>\n\t\t\t\t)}\n\t\t\t\t<TitleRegular color={COLORS.content.primary}>\n\t\t\t\t\t{name || 'Untitled agent'}\n\t\t\t\t</TitleRegular>\n\t\t\t\t<Tag\n\t\t\t\t\ttagText={isLive ? 'Live' : 'Draft'}\n\t\t\t\t\ttype={isLive ? 'positive' : 'neutral'}\n\t\t\t\t\tvariant=\"regular\"\n\t\t\t\t/>\n\t\t\t</TopBarSide>\n\n\t\t\t<TopBarSide>\n\t\t\t\t<Button\n\t\t\t\t\tdata-test=\"agent-builder-discard\"\n\t\t\t\t\tbuttonType=\"text\"\n\t\t\t\t\tsize=\"small\"\n\t\t\t\t\tbuttonText=\"Discard\"\n\t\t\t\t\tonClick={onDiscard}\n\t\t\t\t/>\n\t\t\t\t<Button\n\t\t\t\t\tdata-test=\"agent-builder-save-draft\"\n\t\t\t\t\tbuttonType=\"secondary\"\n\t\t\t\t\tsize=\"small\"\n\t\t\t\t\tbuttonText=\"Save as draft\"\n\t\t\t\t\tisLoading={isSaving}\n\t\t\t\t\tonClick={onSaveDraft}\n\t\t\t\t/>\n\t\t\t</TopBarSide>\n\t\t</TopBar>\n\t);\n};\n"],"names":["AgentBuilderTopBar","name","status","onBack","onDiscard","onSaveDraft","isSaving","isLive","TopBar","jsxs","TopBarSide","jsx","BackButton","ArrowLeftIcon","COLORS","TitleRegular","Tag","Button"],"mappings":";;;;;;;AAkBO,MAAMA,IAAwD,CAAC;AAAA,EACrE,MAAAC;AAAA,EACA,QAAAC;AAAA,EACA,QAAAC;AAAA,EACA,WAAAC;AAAA,EACA,aAAAC;AAAA,EACA,UAAAC;AACD,MAAM;AACL,QAAMC,IAASL,MAAW;AAC1B,2BACEM,GAAA,EACA,UAAA;AAAA,IAAA,gBAAAC,EAACC,GAAA,EACC,UAAA;AAAA,MAAAP,KACA,gBAAAQ;AAAA,QAACC;AAAA,QAAA;AAAA,UACA,aAAU;AAAA,UACV,SAAST;AAAA,UACT,cAAW;AAAA,UAEX,UAAA,gBAAAQ;AAAA,YAACE;AAAAA,YAAA;AAAA,cACA,OAAO;AAAA,cACP,QAAQ;AAAA,cACR,OAAOC,EAAO,QAAQ;AAAA,YAAA;AAAA,UAAA;AAAA,QACvB;AAAA,MAAA;AAAA,wBAGDC,GAAA,EAAa,OAAOD,EAAO,QAAQ,SAClC,eAAQ,kBACV;AAAA,MACA,gBAAAH;AAAA,QAACK;AAAA,QAAA;AAAA,UACA,SAAST,IAAS,SAAS;AAAA,UAC3B,MAAMA,IAAS,aAAa;AAAA,UAC5B,SAAQ;AAAA,QAAA;AAAA,MAAA;AAAA,IACT,GACD;AAAA,sBAECG,GAAA,EACA,UAAA;AAAA,MAAA,gBAAAC;AAAA,QAACM;AAAA,QAAA;AAAA,UACA,aAAU;AAAA,UACV,YAAW;AAAA,UACX,MAAK;AAAA,UACL,YAAW;AAAA,UACX,SAASb;AAAA,QAAA;AAAA,MAAA;AAAA,MAEV,gBAAAO;AAAA,QAACM;AAAA,QAAA;AAAA,UACA,aAAU;AAAA,UACV,YAAW;AAAA,UACX,MAAK;AAAA,UACL,YAAW;AAAA,UACX,WAAWX;AAAA,UACX,SAASD;AAAA,QAAA;AAAA,MAAA;AAAA,IACV,EAAA,CACD;AAAA,EAAA,GACD;AAEF;"}
1
+ {"version":3,"file":"AgentBuilderTopBar.js","sources":["../../../../../src/components/agent-builder/components/AgentBuilderTopBar.tsx"],"sourcesContent":["import ArrowLeftIcon from '@src/assets/icons/arrow_left.svg';\nimport React from 'react';\nimport { Button } from '@src/components/button';\nimport { Tag } from '@src/components/tag';\nimport { TitleRegular } from '@src/components/TypographyStyle';\nimport { COLORS } from '@src/constants/Theme';\nimport { AgentStatus } from '../AgentBuilder.model';\nimport { BackButton, TopBar, TopBarSide } from '../AgentBuilder.styled';\n\ninterface AgentBuilderTopBarProps {\n\tname: string;\n\tstatus: AgentStatus;\n\tonBack?: () => void;\n\tonSaveDraft: () => void;\n\tisSaving?: boolean;\n}\n\nexport const AgentBuilderTopBar: React.FC<AgentBuilderTopBarProps> = ({\n\tname,\n\tstatus,\n\tonBack,\n\tonSaveDraft,\n\tisSaving,\n}) => {\n\tconst isLive = status === 'live';\n\treturn (\n\t\t<TopBar>\n\t\t\t<TopBarSide>\n\t\t\t\t{onBack && (\n\t\t\t\t\t<BackButton\n\t\t\t\t\t\tdata-test=\"agent-builder-back\"\n\t\t\t\t\t\tonClick={onBack}\n\t\t\t\t\t\taria-label=\"Back\"\n\t\t\t\t\t>\n\t\t\t\t\t\t<ArrowLeftIcon\n\t\t\t\t\t\t\twidth={20}\n\t\t\t\t\t\t\theight={20}\n\t\t\t\t\t\t\tcolor={COLORS.content.primary}\n\t\t\t\t\t\t/>\n\t\t\t\t\t</BackButton>\n\t\t\t\t)}\n\t\t\t\t<TitleRegular color={COLORS.content.primary}>\n\t\t\t\t\t{name || 'Untitled agent'}\n\t\t\t\t</TitleRegular>\n\t\t\t\t<Tag\n\t\t\t\t\ttagText={isLive ? 'Live' : 'Draft'}\n\t\t\t\t\ttype={isLive ? 'positive' : 'neutral'}\n\t\t\t\t\tvariant=\"regular\"\n\t\t\t\t/>\n\t\t\t</TopBarSide>\n\n\t\t\t<TopBarSide>\n\t\t\t\t<Button\n\t\t\t\t\tdata-test=\"agent-builder-save-draft\"\n\t\t\t\t\tbuttonType=\"secondary\"\n\t\t\t\t\tsize=\"small\"\n\t\t\t\t\tbuttonText=\"Save as draft\"\n\t\t\t\t\tisLoading={isSaving}\n\t\t\t\t\tonClick={onSaveDraft}\n\t\t\t\t/>\n\t\t\t</TopBarSide>\n\t\t</TopBar>\n\t);\n};\n"],"names":["AgentBuilderTopBar","name","status","onBack","onSaveDraft","isSaving","isLive","TopBar","jsxs","TopBarSide","jsx","BackButton","ArrowLeftIcon","COLORS","TitleRegular","Tag","Button"],"mappings":";;;;;;;AAiBO,MAAMA,IAAwD,CAAC;AAAA,EACrE,MAAAC;AAAA,EACA,QAAAC;AAAA,EACA,QAAAC;AAAA,EACA,aAAAC;AAAA,EACA,UAAAC;AACD,MAAM;AACL,QAAMC,IAASJ,MAAW;AAC1B,2BACEK,GAAA,EACA,UAAA;AAAA,IAAA,gBAAAC,EAACC,GAAA,EACC,UAAA;AAAA,MAAAN,KACA,gBAAAO;AAAA,QAACC;AAAA,QAAA;AAAA,UACA,aAAU;AAAA,UACV,SAASR;AAAA,UACT,cAAW;AAAA,UAEX,UAAA,gBAAAO;AAAA,YAACE;AAAAA,YAAA;AAAA,cACA,OAAO;AAAA,cACP,QAAQ;AAAA,cACR,OAAOC,EAAO,QAAQ;AAAA,YAAA;AAAA,UAAA;AAAA,QACvB;AAAA,MAAA;AAAA,wBAGDC,GAAA,EAAa,OAAOD,EAAO,QAAQ,SAClC,eAAQ,kBACV;AAAA,MACA,gBAAAH;AAAA,QAACK;AAAA,QAAA;AAAA,UACA,SAAST,IAAS,SAAS;AAAA,UAC3B,MAAMA,IAAS,aAAa;AAAA,UAC5B,SAAQ;AAAA,QAAA;AAAA,MAAA;AAAA,IACT,GACD;AAAA,sBAECG,GAAA,EACA,UAAA,gBAAAC;AAAA,MAACM;AAAA,MAAA;AAAA,QACA,aAAU;AAAA,QACV,YAAW;AAAA,QACX,MAAK;AAAA,QACL,YAAW;AAAA,QACX,WAAWX;AAAA,QACX,SAASD;AAAA,MAAA;AAAA,IAAA,EACV,CACD;AAAA,EAAA,GACD;AAEF;"}
@@ -1,198 +1,214 @@
1
- import { jsxs as a, Fragment as nt, jsx as o } from "react/jsx-runtime";
2
- import ot from "../../../assets/icons/cross.svg.js";
3
- import { useState as r, useMemo as rt, useRef as p, useCallback as l } from "react";
4
- import { TitleRegular as st, BodySecondary as it } from "../../TypographyStyle.js";
5
- import { addUnique as K } from "../../../utils/arrayUtils.js";
6
- import { COLORS as A } from "../../../constants/Theme.js";
7
- import { SubAgentScrim as at, SubAgentPanel as lt, SubAgentPanelHeader as ct, SubAgentPanelHeaderText as ut, SubAgentCloseButton as dt, SubAgentPanelBody as mt, SubAgentPanelFooter as gt } from "../AgentBuilder.styled.js";
8
- import { AGENT_CHAR_LIMITS as pt } from "../constants/charLimits.js";
9
- import { buildAgentMentionItems as ft } from "../utils/mentionSerialization.js";
10
- import { SOURCE_ICONS as F, renderSourceIcon as ht } from "../utils/sourceIcons.js";
11
- import { MentionEditor as L } from "./MentionEditor.js";
12
- import { SelectableListSection as bt } from "./SelectableListSection.js";
13
- import { Input as yt } from "../../input/Input.js";
14
- import { Button as N } from "../../button/Button.js";
15
- import { Toaster as St } from "../../toaster/Toaster.js";
16
- const Lt = ({
17
- onClose: f,
18
- onSave: U,
19
- availableTools: s,
20
- onImprove: Ct,
21
- title: j = "Create sub-agent",
22
- initial: c,
23
- appLabel: R = "Manifest",
24
- charLimits: h = pt
1
+ import { jsxs as l, Fragment as rt, jsx as r } from "react/jsx-runtime";
2
+ import st from "../../../assets/icons/cross.svg.js";
3
+ import { useState as s, useMemo as it, useRef as f, useCallback as c } from "react";
4
+ import { TitleRegular as at, BodySecondary as lt } from "../../TypographyStyle.js";
5
+ import { addUnique as L } from "../../../utils/arrayUtils.js";
6
+ import { COLORS as R } from "../../../constants/Theme.js";
7
+ import { SubAgentScrim as ct, SubAgentPanel as ut, SubAgentPanelHeader as dt, SubAgentPanelHeaderText as mt, SubAgentCloseButton as gt, SubAgentPanelBody as pt, SubAgentPanelFooter as ft } from "../AgentBuilder.styled.js";
8
+ import { AGENT_CHAR_LIMITS as ht } from "../constants/charLimits.js";
9
+ import { buildAgentMentionItems as bt, toolSourceLabel as yt } from "../utils/mentionSerialization.js";
10
+ import { SOURCE_ICONS as P, renderSourceIcon as F } from "../utils/sourceIcons.js";
11
+ import { MentionEditor as N } from "./MentionEditor.js";
12
+ import { SelectableListSection as St } from "./SelectableListSection.js";
13
+ import { Input as Ct } from "../../input/Input.js";
14
+ import { Button as U } from "../../button/Button.js";
15
+ import { Toaster as xt } from "../../toaster/Toaster.js";
16
+ const Ut = ({
17
+ onClose: h,
18
+ onSave: j,
19
+ availableTools: i,
20
+ onImprove: It,
21
+ title: w = "Create sub-agent",
22
+ initial: u,
23
+ appLabel: G = "Manifest",
24
+ charLimits: b = ht
25
25
  }) => {
26
- const [b, $] = r(c?.name ?? ""), [u, y] = r(c?.instructions ?? ""), [d, S] = r(c?.guardrail ?? ""), [C, m] = r(c?.tools ?? []), [P, _] = r(!1), [w, k] = r(0), [z, B] = r(0), [xt, Tt] = r(null), M = rt(
27
- () => ft(s, [], R),
28
- [s, R]
29
- ), g = p({}), x = p("instructions"), q = l((t) => {
30
- g.current.instructions = t ?? void 0;
31
- }, []), W = l((t) => {
32
- g.current.guardrail = t ?? void 0;
33
- }, []), D = l(() => {
34
- x.current = "instructions";
35
- }, []), J = l(() => {
36
- x.current = "guardrail";
37
- }, []), O = l(
26
+ const [y, $] = s(u?.name ?? ""), [d, S] = s(u?.instructions ?? ""), [m, C] = s(u?.guardrail ?? ""), [x, g] = s(u?.tools ?? []), [M, k] = s(!1), [z, B] = s(0), [q, E] = s(0), [Tt, vt] = s(null), I = it(
27
+ () => bt(i, [], G),
28
+ [i, G]
29
+ ), p = f({}), T = f("instructions"), W = c((t) => {
30
+ p.current.instructions = t ?? void 0;
31
+ }, []), D = c((t) => {
32
+ p.current.guardrail = t ?? void 0;
33
+ }, []), J = c(() => {
34
+ T.current = "instructions";
35
+ }, []), Q = c(() => {
36
+ T.current = "guardrail";
37
+ }, []), O = c(
38
38
  (t, e) => {
39
- t === "tool" && m((i) => K(i, e));
39
+ t === "tool" && g((n) => L(n, e));
40
40
  },
41
41
  []
42
- ), Q = l((t) => {
43
- (g.current[x.current] ?? g.current.instructions)?.("tool", t);
44
- }, []), [T, I] = r(
42
+ ), V = c((t) => {
43
+ (p.current[T.current] ?? p.current.instructions)?.("tool", t);
44
+ }, []), [v, A] = s(
45
45
  null
46
- ), v = p(null), E = p(0), V = (t) => {
47
- const e = s.find((n) => n.tool_id === t), i = e ? `{{tool:${e.function_key}}}` : null, H = (n) => i ? n.split(i).join("") : n;
48
- v.current = { instructions: u, guardrail: d, tools: C }, y((n) => H(n)), S((n) => H(n)), m((n) => n.filter((et) => et !== t)), k((n) => n + 1), B((n) => n + 1), E.current += 1, I({
49
- id: E.current,
46
+ ), _ = f(null), H = f(0), X = (t) => {
47
+ const e = i.find((o) => o.tool_id === t), n = e ? `{{tool:${e.function_key}}}` : null, a = (o) => n ? o.split(n).join("") : o;
48
+ _.current = { instructions: d, guardrail: m, tools: x }, S((o) => a(o)), C((o) => a(o)), g((o) => o.filter((ot) => ot !== t)), B((o) => o + 1), E((o) => o + 1), H.current += 1, A({
49
+ id: H.current,
50
50
  message: `Tool "${e?.display_name ?? "Tool"}" removed`
51
51
  });
52
- }, X = () => {
53
- const t = v.current;
54
- t && (y(t.instructions), S(t.guardrail), m(t.tools), k((e) => e + 1), B((e) => e + 1), v.current = null), I(null);
55
- }, G = b.trim().length > 0 && (u.trim().length > 0 || d.trim().length > 0), Y = C.map((t) => {
56
- const e = s.find((i) => i.tool_id === t);
52
+ }, Y = () => {
53
+ const t = _.current;
54
+ t && (S(t.instructions), C(t.guardrail), g(t.tools), B((e) => e + 1), E((e) => e + 1), _.current = null), A(null);
55
+ }, K = y.trim().length > 0 && (d.trim().length > 0 || m.trim().length > 0), Z = x.map((t) => {
56
+ const e = i.find((n) => n.tool_id === t);
57
57
  return e ? {
58
58
  id: t,
59
59
  label: e.display_name,
60
- icon: F[e.source ?? "manifest"]
60
+ icon: P[e.source ?? "manifest"]
61
61
  } : null;
62
- }).filter((t) => t !== null), Z = s.map((t) => ({
62
+ }).filter((t) => t !== null), tt = i.map((t) => ({
63
63
  label: t.display_name,
64
64
  value: t.tool_id,
65
- leadingIcon: ht(F[t.source ?? "manifest"]) ?? void 0
66
- })), tt = async () => {
67
- if (!G || P)
65
+ leadingIcon: F(P[t.source ?? "manifest"]) ?? void 0
66
+ })), et = (() => {
67
+ const t = [], e = /* @__PURE__ */ new Map();
68
+ return i.forEach((n) => {
69
+ const a = n.source ?? "manifest";
70
+ e.has(a) || (e.set(a, []), t.push(a)), e.get(a)?.push({
71
+ label: n.display_name,
72
+ value: n.tool_id,
73
+ leadingIcon: F(P[n.source ?? "manifest"]) ?? void 0
74
+ });
75
+ }), t.map((n) => ({
76
+ source: n,
77
+ label: yt(n),
78
+ options: e.get(n) ?? []
79
+ }));
80
+ })(), nt = async () => {
81
+ if (!K || M)
68
82
  return;
69
- const t = U({
70
- name: b.trim(),
71
- instructions: u,
72
- guardrail: d,
73
- tools: C
83
+ const t = j({
84
+ name: y.trim(),
85
+ instructions: d,
86
+ guardrail: m,
87
+ tools: x
74
88
  });
75
89
  if (t && typeof t.then == "function") {
76
- _(!0);
90
+ k(!0);
77
91
  try {
78
92
  await t;
79
93
  } finally {
80
- _(!1);
94
+ k(!1);
81
95
  }
82
96
  }
83
97
  };
84
- return /* @__PURE__ */ a(nt, { children: [
85
- /* @__PURE__ */ o(at, { onClick: f, "data-test": "subagent-scrim" }),
86
- /* @__PURE__ */ a(lt, { "data-test": "create-subagent-panel", children: [
87
- /* @__PURE__ */ a(ct, { children: [
88
- /* @__PURE__ */ a(ut, { children: [
89
- /* @__PURE__ */ o(st, { color: A.content.primary, children: j }),
90
- /* @__PURE__ */ o(it, { color: A.content.secondary, children: "Each sub-agent handles one piece of the job. Use @ in the main instructions to call them." })
98
+ return /* @__PURE__ */ l(rt, { children: [
99
+ /* @__PURE__ */ r(ct, { onClick: h, "data-test": "subagent-scrim" }),
100
+ /* @__PURE__ */ l(ut, { "data-test": "create-subagent-panel", children: [
101
+ /* @__PURE__ */ l(dt, { children: [
102
+ /* @__PURE__ */ l(mt, { children: [
103
+ /* @__PURE__ */ r(at, { color: R.content.primary, children: w }),
104
+ /* @__PURE__ */ r(lt, { color: R.content.secondary, children: "Each sub-agent handles one piece of the job. Use @ in the main instructions to call them." })
91
105
  ] }),
92
- /* @__PURE__ */ o(dt, { onClick: f, "aria-label": "Close", children: /* @__PURE__ */ o(
93
- ot,
106
+ /* @__PURE__ */ r(gt, { onClick: h, "aria-label": "Close", children: /* @__PURE__ */ r(
107
+ st,
94
108
  {
95
109
  width: 20,
96
110
  height: 20,
97
- color: A.content.secondary
111
+ color: R.content.secondary
98
112
  }
99
113
  ) })
100
114
  ] }),
101
- /* @__PURE__ */ a(mt, { children: [
102
- /* @__PURE__ */ o(
103
- yt,
115
+ /* @__PURE__ */ l(pt, { children: [
116
+ /* @__PURE__ */ r(
117
+ Ct,
104
118
  {
105
119
  "data-test": "subagent-name",
106
120
  labelText: "Agent name",
107
121
  labelTextBold: !0,
108
122
  placeholder: "Enter agent name",
109
- value: b,
110
- maxCharLimit: h.name,
123
+ value: y,
124
+ maxCharLimit: b.name,
111
125
  maxCharLimitPosition: "TOP",
112
126
  maxCharStyle: { fontSize: 12, lineHeight: "16px" },
113
127
  onChangeText: $
114
128
  }
115
129
  ),
116
- /* @__PURE__ */ o(
117
- L,
130
+ /* @__PURE__ */ r(
131
+ N,
118
132
  {
119
133
  "data-test": "subagent-instructions",
120
134
  label: "Instructions",
121
- value: u,
122
- onChange: y,
123
- maxLength: h.instructions,
135
+ value: d,
136
+ onChange: S,
137
+ maxLength: b.instructions,
124
138
  placeholder: "Write the steps in plain English. Type @ to reference a tool.",
125
139
  minHeight: "160px",
126
- resetKey: `instr-${w}`,
127
- mentionItems: M,
128
- tools: s,
140
+ resetKey: `instr-${z}`,
141
+ mentionItems: I,
142
+ tools: i,
129
143
  onMentionSelect: O,
130
- onFocus: D,
131
- registerInsert: q
144
+ onFocus: J,
145
+ registerInsert: W
132
146
  }
133
147
  ),
134
- /* @__PURE__ */ o(
135
- L,
148
+ /* @__PURE__ */ r(
149
+ N,
136
150
  {
137
151
  "data-test": "subagent-guardrail",
138
152
  label: "Guardrails",
139
- value: d,
140
- onChange: S,
141
- maxLength: h.guardrail,
153
+ value: m,
154
+ onChange: C,
155
+ maxLength: b.guardrail,
142
156
  placeholder: "e.g. Never discuss competitor pricing. Type @ to reference a tool.",
143
157
  minHeight: "160px",
144
- resetKey: `guard-${z}`,
145
- mentionItems: M,
146
- tools: s,
158
+ resetKey: `guard-${q}`,
159
+ mentionItems: I,
160
+ tools: i,
147
161
  onMentionSelect: O,
148
- onFocus: J,
149
- registerInsert: W
162
+ onFocus: Q,
163
+ registerInsert: D
150
164
  }
151
165
  ),
152
- /* @__PURE__ */ o(
153
- bt,
166
+ /* @__PURE__ */ r(
167
+ St,
154
168
  {
155
169
  title: "Tools this agent can use",
156
170
  dataTestPrefix: "subagent-tools",
157
- items: Y,
158
- addableOptions: Z,
171
+ items: Z,
172
+ addableOptions: tt,
173
+ sourceGroups: et,
174
+ mentionItems: I,
159
175
  emptyText: "No tools added yet.",
160
176
  onAdd: (t) => {
161
- Q(t), m((e) => K(e, t));
177
+ V(t), g((e) => L(e, t));
162
178
  },
163
- onRemove: V
179
+ onRemove: X
164
180
  }
165
181
  )
166
182
  ] }),
167
- /* @__PURE__ */ a(gt, { children: [
168
- /* @__PURE__ */ o(
169
- N,
183
+ /* @__PURE__ */ l(ft, { children: [
184
+ /* @__PURE__ */ r(
185
+ U,
170
186
  {
171
187
  "data-test": "subagent-save",
172
188
  buttonType: "primary",
173
189
  size: "small",
174
190
  buttonText: "Save",
175
- disabled: !G,
176
- isLoading: P,
177
- onClick: tt
191
+ disabled: !K,
192
+ isLoading: M,
193
+ onClick: nt
178
194
  }
179
195
  ),
180
- /* @__PURE__ */ o(
181
- N,
196
+ /* @__PURE__ */ r(
197
+ U,
182
198
  {
183
199
  "data-test": "subagent-cancel",
184
- buttonType: "secondary",
200
+ buttonType: "tertiaryGray",
185
201
  size: "small",
186
202
  buttonText: "Cancel",
187
- onClick: f
203
+ onClick: h
188
204
  }
189
205
  )
190
206
  ] })
191
207
  ] }),
192
- T && /* @__PURE__ */ o(
193
- St,
208
+ v && /* @__PURE__ */ r(
209
+ xt,
194
210
  {
195
- text: T.message,
211
+ text: v.message,
196
212
  type: "info",
197
213
  position: "top-right",
198
214
  autoClose: 5e3,
@@ -200,15 +216,15 @@ const Lt = ({
200
216
  buttonProps: {
201
217
  buttonText: "Undo",
202
218
  showButton: !0,
203
- onButtonClick: () => (X(), {})
219
+ onButtonClick: () => (Y(), {})
204
220
  },
205
- onCloseToast: () => I(null)
221
+ onCloseToast: () => A(null)
206
222
  },
207
- T.id
223
+ v.id
208
224
  )
209
225
  ] });
210
226
  };
211
227
  export {
212
- Lt as CreateSubAgentPanel
228
+ Ut as CreateSubAgentPanel
213
229
  };
214
230
  //# sourceMappingURL=CreateSubAgentPanel.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"CreateSubAgentPanel.js","sources":["../../../../../src/components/agent-builder/components/CreateSubAgentPanel.tsx"],"sourcesContent":["import CrossIcon from '@src/assets/icons/cross.svg';\nimport React, { useCallback, useMemo, useRef, useState } from 'react';\nimport { Button } from '@src/components/button';\nimport { SingleOption } from '@src/components/dropdown/type';\nimport { Input } from '@src/components/input';\nimport { Toaster } from '@src/components/toaster';\nimport { BodySecondary, TitleRegular } from '@src/components/TypographyStyle';\nimport { addUnique } from '@src/utils/arrayUtils';\nimport { COLORS } from '@src/constants/Theme';\nimport { AgentTool, SubAgentDraft } from '../AgentBuilder.model';\nimport {\n\tSubAgentCloseButton,\n\tSubAgentPanel,\n\tSubAgentPanelBody,\n\tSubAgentPanelFooter,\n\tSubAgentPanelHeader,\n\tSubAgentPanelHeaderText,\n\tSubAgentScrim,\n} from '../AgentBuilder.styled';\nimport { AGENT_CHAR_LIMITS } from '../constants/charLimits';\nimport type { AgentCharLimits } from '../constants/charLimits';\nimport { buildAgentMentionItems } from '../utils/mentionSerialization';\nimport { renderSourceIcon, SOURCE_ICONS } from '../utils/sourceIcons';\nimport { MentionEditor } from './MentionEditor';\nimport { SelectableItem, SelectableListSection } from './SelectableListSection';\n\ntype InsertFn = (kind: 'tool' | 'subagent', id: string, label?: string) => void;\n\ninterface CreateSubAgentPanelProps {\n\tonClose: () => void;\n\t/** Persist the draft. The drawer shows a loader while the returned promise is pending. */\n\tonSave: (draft: SubAgentDraft) => void | Promise<void>;\n\tavailableTools: AgentTool[];\n\t/** Optional \"Improve with AI\" for instructions / guardrails. Omit to hide the buttons. */\n\tonImprove?: (\n\t\tkind: 'instructions' | 'guardrail',\n\t\ttext: string,\n\t) => Promise<string>;\n\t/** Header title — \"Create sub-agent\" (default) or \"Edit sub-agent\". */\n\ttitle?: string;\n\t/** Initial values, e.g. when configuring an existing sub-agent. */\n\tinitial?: SubAgentDraft;\n\t/** Tool-source fallback label for chips (host app). */\n\tappLabel?: string;\n\t/** Resolved character limits (defaults to {@link AGENT_CHAR_LIMITS}). */\n\tcharLimits?: AgentCharLimits;\n}\n\n/**\n * Right-side drawer for creating / editing a sub-agent (name, instructions,\n * guardrails, tools). Instructions & Guardrails are `@`-mention editors (tools\n * only — sub-agents can't nest); adding a tool from the list inserts it at the\n * last-focused field's cursor. Mount it fresh per open (key it) so `initial`\n * seeds the draft.\n */\nexport const CreateSubAgentPanel: React.FC<CreateSubAgentPanelProps> = ({\n\tonClose,\n\tonSave,\n\tavailableTools,\n\tonImprove,\n\ttitle = 'Create sub-agent',\n\tinitial,\n\tappLabel = 'Manifest',\n\tcharLimits = AGENT_CHAR_LIMITS,\n}) => {\n\tconst [name, setName] = useState(initial?.name ?? '');\n\tconst [instructions, setInstructions] = useState(initial?.instructions ?? '');\n\tconst [guardrail, setGuardrail] = useState(initial?.guardrail ?? '');\n\tconst [tools, setTools] = useState<string[]>(initial?.tools ?? []);\n\tconst [saving, setSaving] = useState(false);\n\t// Bumped to remount a field after its text is replaced (e.g. by Improve).\n\tconst [instrKey, setInstrKey] = useState(0);\n\tconst [guardKey, setGuardKey] = useState(0);\n\tconst [improving, setImproving] = useState<\n\t\t'instructions' | 'guardrail' | null\n\t>(null);\n\n\t// Tools-only mention list (sub-agents can't reference other sub-agents).\n\tconst mentionItems = useMemo(\n\t\t() => buildAgentMentionItems(availableTools, [], appLabel),\n\t\t[availableTools, appLabel],\n\t);\n\n\t// Per-field insert + focus registry, so the Tools list inserts a chip into the\n\t// last-focused editor at its cursor.\n\tconst insertersRef = useRef<\n\t\tPartial<Record<'instructions' | 'guardrail', InsertFn>>\n\t>({});\n\tconst lastFocusedRef = useRef<'instructions' | 'guardrail'>('instructions');\n\tconst registerInstr = useCallback((fn: InsertFn | null) => {\n\t\tinsertersRef.current.instructions = fn ?? undefined;\n\t}, []);\n\tconst registerGuard = useCallback((fn: InsertFn | null) => {\n\t\tinsertersRef.current.guardrail = fn ?? undefined;\n\t}, []);\n\tconst focusInstr = useCallback(() => {\n\t\tlastFocusedRef.current = 'instructions';\n\t}, []);\n\tconst focusGuard = useCallback(() => {\n\t\tlastFocusedRef.current = 'guardrail';\n\t}, []);\n\tconst addToolMention = useCallback(\n\t\t(kind: 'tool' | 'subagent', id: string) => {\n\t\t\tif (kind === 'tool') {\n\t\t\t\tsetTools((prev) => addUnique(prev, id));\n\t\t\t}\n\t\t},\n\t\t[],\n\t);\n\tconst insertToolAtCursor = useCallback((id: string) => {\n\t\tconst target =\n\t\t\tinsertersRef.current[lastFocusedRef.current] ??\n\t\t\tinsertersRef.current.instructions;\n\t\ttarget?.('tool', id);\n\t}, []);\n\n\t// Local undo toast for tool removal (drawer state isn't in AgentValue).\n\tconst [undo, setUndo] = useState<{ id: number; message: string } | null>(\n\t\tnull,\n\t);\n\tconst undoSnapshotRef = useRef<{\n\t\tinstructions: string;\n\t\tguardrail: string;\n\t\ttools: string[];\n\t} | null>(null);\n\tconst undoIdRef = useRef(0);\n\n\tconst removeTool = (id: string) => {\n\t\tconst tool = availableTools.find((t) => t.tool_id === id);\n\t\tconst token = tool ? `{{tool:${tool.function_key}}}` : null;\n\t\tconst strip = (text: string) => (token ? text.split(token).join('') : text);\n\t\tundoSnapshotRef.current = { instructions, guardrail, tools };\n\t\tsetInstructions((prev) => strip(prev));\n\t\tsetGuardrail((prev) => strip(prev));\n\t\tsetTools((prev) => prev.filter((t) => t !== id));\n\t\tsetInstrKey((k) => k + 1);\n\t\tsetGuardKey((k) => k + 1);\n\t\tundoIdRef.current += 1;\n\t\tsetUndo({\n\t\t\tid: undoIdRef.current,\n\t\t\tmessage: `Tool \"${tool?.display_name ?? 'Tool'}\" removed`,\n\t\t});\n\t};\n\n\tconst undoRemove = () => {\n\t\tconst snap = undoSnapshotRef.current;\n\t\tif (snap) {\n\t\t\tsetInstructions(snap.instructions);\n\t\t\tsetGuardrail(snap.guardrail);\n\t\t\tsetTools(snap.tools);\n\t\t\tsetInstrKey((k) => k + 1);\n\t\t\tsetGuardKey((k) => k + 1);\n\t\t\tundoSnapshotRef.current = null;\n\t\t}\n\t\tsetUndo(null);\n\t};\n\n\tconst canSave =\n\t\tname.trim().length > 0 &&\n\t\t(instructions.trim().length > 0 || guardrail.trim().length > 0);\n\n\tconst toolItems: SelectableItem[] = tools\n\t\t.map((id): SelectableItem | null => {\n\t\t\tconst tool = availableTools.find((t) => t.tool_id === id);\n\t\t\treturn tool\n\t\t\t\t? {\n\t\t\t\t\t\tid,\n\t\t\t\t\t\tlabel: tool.display_name,\n\t\t\t\t\t\ticon: SOURCE_ICONS[tool.source ?? 'manifest'],\n\t\t\t\t }\n\t\t\t\t: null;\n\t\t})\n\t\t.filter((x): x is SelectableItem => x !== null);\n\n\t// Offer all tools (re-add allowed); the chip list stays deduped. Icon left of\n\t// the name, no description.\n\tconst toolOptions: SingleOption[] = availableTools.map((t) => ({\n\t\tlabel: t.display_name,\n\t\tvalue: t.tool_id,\n\t\tleadingIcon:\n\t\t\trenderSourceIcon(SOURCE_ICONS[t.source ?? 'manifest']) ?? undefined,\n\t}));\n\n\tconst handleSave = async () => {\n\t\tif (!canSave || saving) {\n\t\t\treturn;\n\t\t}\n\t\tconst result = onSave({\n\t\t\tname: name.trim(),\n\t\t\tinstructions,\n\t\t\tguardrail,\n\t\t\ttools,\n\t\t});\n\t\tif (result && typeof (result as Promise<void>).then === 'function') {\n\t\t\tsetSaving(true);\n\t\t\ttry {\n\t\t\t\tawait result;\n\t\t\t} finally {\n\t\t\t\tsetSaving(false);\n\t\t\t}\n\t\t}\n\t};\n\n\tconst handleImprove = async (kind: 'instructions' | 'guardrail') => {\n\t\tif (!onImprove || improving) {\n\t\t\treturn;\n\t\t}\n\t\tsetImproving(kind);\n\t\ttry {\n\t\t\tconst current = kind === 'instructions' ? instructions : guardrail;\n\t\t\tconst improved = await onImprove(kind, current);\n\t\t\tif (kind === 'instructions') {\n\t\t\t\tsetInstructions(improved);\n\t\t\t\tsetInstrKey((k) => k + 1);\n\t\t\t} else {\n\t\t\t\tsetGuardrail(improved);\n\t\t\t\tsetGuardKey((k) => k + 1);\n\t\t\t}\n\t\t} finally {\n\t\t\tsetImproving(null);\n\t\t}\n\t};\n\n\treturn (\n\t\t<>\n\t\t\t<SubAgentScrim onClick={onClose} data-test=\"subagent-scrim\" />\n\t\t\t<SubAgentPanel data-test=\"create-subagent-panel\">\n\t\t\t\t<SubAgentPanelHeader>\n\t\t\t\t\t<SubAgentPanelHeaderText>\n\t\t\t\t\t\t<TitleRegular color={COLORS.content.primary}>{title}</TitleRegular>\n\t\t\t\t\t\t<BodySecondary color={COLORS.content.secondary}>\n\t\t\t\t\t\t\tEach sub-agent handles one piece of the job. Use @ in the main\n\t\t\t\t\t\t\tinstructions to call them.\n\t\t\t\t\t\t</BodySecondary>\n\t\t\t\t\t</SubAgentPanelHeaderText>\n\t\t\t\t\t<SubAgentCloseButton onClick={onClose} aria-label=\"Close\">\n\t\t\t\t\t\t<CrossIcon\n\t\t\t\t\t\t\twidth={20}\n\t\t\t\t\t\t\theight={20}\n\t\t\t\t\t\t\tcolor={COLORS.content.secondary}\n\t\t\t\t\t\t/>\n\t\t\t\t\t</SubAgentCloseButton>\n\t\t\t\t</SubAgentPanelHeader>\n\n\t\t\t\t<SubAgentPanelBody>\n\t\t\t\t\t<Input\n\t\t\t\t\t\tdata-test=\"subagent-name\"\n\t\t\t\t\t\tlabelText=\"Agent name\"\n\t\t\t\t\t\tlabelTextBold\n\t\t\t\t\t\tplaceholder=\"Enter agent name\"\n\t\t\t\t\t\tvalue={name}\n\t\t\t\t\t\tmaxCharLimit={charLimits.name}\n\t\t\t\t\t\tmaxCharLimitPosition=\"TOP\"\n\t\t\t\t\t\tmaxCharStyle={{ fontSize: 12, lineHeight: '16px' }}\n\t\t\t\t\t\tonChangeText={setName}\n\t\t\t\t\t/>\n\n\t\t\t\t\t<MentionEditor\n\t\t\t\t\t\tdata-test=\"subagent-instructions\"\n\t\t\t\t\t\tlabel=\"Instructions\"\n\t\t\t\t\t\tvalue={instructions}\n\t\t\t\t\t\tonChange={setInstructions}\n\t\t\t\t\t\tmaxLength={charLimits.instructions}\n\t\t\t\t\t\tplaceholder=\"Write the steps in plain English. Type @ to reference a tool.\"\n\t\t\t\t\t\tminHeight=\"160px\"\n\t\t\t\t\t\tresetKey={`instr-${instrKey}`}\n\t\t\t\t\t\tmentionItems={mentionItems}\n\t\t\t\t\t\ttools={availableTools}\n\t\t\t\t\t\tonMentionSelect={addToolMention}\n\t\t\t\t\t\tonFocus={focusInstr}\n\t\t\t\t\t\tregisterInsert={registerInstr}\n\t\t\t\t\t/>\n\n\t\t\t\t\t<MentionEditor\n\t\t\t\t\t\tdata-test=\"subagent-guardrail\"\n\t\t\t\t\t\tlabel=\"Guardrails\"\n\t\t\t\t\t\tvalue={guardrail}\n\t\t\t\t\t\tonChange={setGuardrail}\n\t\t\t\t\t\tmaxLength={charLimits.guardrail}\n\t\t\t\t\t\tplaceholder=\"e.g. Never discuss competitor pricing. Type @ to reference a tool.\"\n\t\t\t\t\t\tminHeight=\"160px\"\n\t\t\t\t\t\tresetKey={`guard-${guardKey}`}\n\t\t\t\t\t\tmentionItems={mentionItems}\n\t\t\t\t\t\ttools={availableTools}\n\t\t\t\t\t\tonMentionSelect={addToolMention}\n\t\t\t\t\t\tonFocus={focusGuard}\n\t\t\t\t\t\tregisterInsert={registerGuard}\n\t\t\t\t\t/>\n\n\t\t\t\t\t<SelectableListSection\n\t\t\t\t\t\ttitle=\"Tools this agent can use\"\n\t\t\t\t\t\tdataTestPrefix=\"subagent-tools\"\n\t\t\t\t\t\titems={toolItems}\n\t\t\t\t\t\taddableOptions={toolOptions}\n\t\t\t\t\t\temptyText=\"No tools added yet.\"\n\t\t\t\t\t\tonAdd={(id) => {\n\t\t\t\t\t\t\tinsertToolAtCursor(id);\n\t\t\t\t\t\t\tsetTools((prev) => addUnique(prev, id));\n\t\t\t\t\t\t}}\n\t\t\t\t\t\tonRemove={removeTool}\n\t\t\t\t\t/>\n\t\t\t\t</SubAgentPanelBody>\n\n\t\t\t\t<SubAgentPanelFooter>\n\t\t\t\t\t<Button\n\t\t\t\t\t\tdata-test=\"subagent-save\"\n\t\t\t\t\t\tbuttonType=\"primary\"\n\t\t\t\t\t\tsize=\"small\"\n\t\t\t\t\t\tbuttonText=\"Save\"\n\t\t\t\t\t\tdisabled={!canSave}\n\t\t\t\t\t\tisLoading={saving}\n\t\t\t\t\t\tonClick={handleSave}\n\t\t\t\t\t/>\n\t\t\t\t\t<Button\n\t\t\t\t\t\tdata-test=\"subagent-cancel\"\n\t\t\t\t\t\tbuttonType=\"secondary\"\n\t\t\t\t\t\tsize=\"small\"\n\t\t\t\t\t\tbuttonText=\"Cancel\"\n\t\t\t\t\t\tonClick={onClose}\n\t\t\t\t\t/>\n\t\t\t\t</SubAgentPanelFooter>\n\t\t\t</SubAgentPanel>\n\n\t\t\t{undo && (\n\t\t\t\t<Toaster\n\t\t\t\t\tkey={undo.id}\n\t\t\t\t\ttext={undo.message}\n\t\t\t\t\ttype=\"info\"\n\t\t\t\t\tposition=\"top-right\"\n\t\t\t\t\tautoClose={5000}\n\t\t\t\t\thideCloseButton\n\t\t\t\t\tbuttonProps={{\n\t\t\t\t\t\tbuttonText: 'Undo',\n\t\t\t\t\t\tshowButton: true,\n\t\t\t\t\t\tonButtonClick: () => {\n\t\t\t\t\t\t\tundoRemove();\n\t\t\t\t\t\t\treturn {} as Record<string, never>;\n\t\t\t\t\t\t},\n\t\t\t\t\t}}\n\t\t\t\t\tonCloseToast={() => setUndo(null)}\n\t\t\t\t/>\n\t\t\t)}\n\t\t</>\n\t);\n};\n"],"names":["CreateSubAgentPanel","onClose","onSave","availableTools","onImprove","title","initial","appLabel","charLimits","AGENT_CHAR_LIMITS","name","setName","useState","instructions","setInstructions","guardrail","setGuardrail","tools","setTools","saving","setSaving","instrKey","setInstrKey","guardKey","setGuardKey","improving","setImproving","mentionItems","useMemo","buildAgentMentionItems","insertersRef","useRef","lastFocusedRef","registerInstr","useCallback","fn","registerGuard","focusInstr","focusGuard","addToolMention","kind","id","prev","addUnique","insertToolAtCursor","undo","setUndo","undoSnapshotRef","undoIdRef","removeTool","tool","t","token","strip","text","k","undoRemove","snap","canSave","toolItems","SOURCE_ICONS","x","toolOptions","renderSourceIcon","handleSave","result","jsxs","Fragment","jsx","SubAgentScrim","SubAgentPanel","SubAgentPanelHeader","SubAgentPanelHeaderText","TitleRegular","COLORS","BodySecondary","SubAgentCloseButton","CrossIcon","SubAgentPanelBody","Input","MentionEditor","SelectableListSection","SubAgentPanelFooter","Button","Toaster"],"mappings":"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"}
1
+ {"version":3,"file":"CreateSubAgentPanel.js","sources":["../../../../../src/components/agent-builder/components/CreateSubAgentPanel.tsx"],"sourcesContent":["import CrossIcon from '@src/assets/icons/cross.svg';\nimport React, { useCallback, useMemo, useRef, useState } from 'react';\nimport { Button } from '@src/components/button';\nimport { SingleOption } from '@src/components/dropdown/type';\nimport { Input } from '@src/components/input';\nimport { Toaster } from '@src/components/toaster';\nimport { BodySecondary, TitleRegular } from '@src/components/TypographyStyle';\nimport { addUnique } from '@src/utils/arrayUtils';\nimport { COLORS } from '@src/constants/Theme';\nimport { AgentTool, SubAgentDraft } from '../AgentBuilder.model';\nimport {\n\tSubAgentCloseButton,\n\tSubAgentPanel,\n\tSubAgentPanelBody,\n\tSubAgentPanelFooter,\n\tSubAgentPanelHeader,\n\tSubAgentPanelHeaderText,\n\tSubAgentScrim,\n} from '../AgentBuilder.styled';\nimport { AGENT_CHAR_LIMITS } from '../constants/charLimits';\nimport type { AgentCharLimits } from '../constants/charLimits';\nimport {\n\tbuildAgentMentionItems,\n\ttoolSourceLabel,\n} from '../utils/mentionSerialization';\nimport { renderSourceIcon, SOURCE_ICONS } from '../utils/sourceIcons';\nimport { MentionEditor } from './MentionEditor';\nimport {\n\tSelectableItem,\n\tSelectableListSection,\n\tSourceGroup,\n} from './SelectableListSection';\n\ntype InsertFn = (kind: 'tool' | 'subagent', id: string, label?: string) => void;\n\ninterface CreateSubAgentPanelProps {\n\tonClose: () => void;\n\t/** Persist the draft. The drawer shows a loader while the returned promise is pending. */\n\tonSave: (draft: SubAgentDraft) => void | Promise<void>;\n\tavailableTools: AgentTool[];\n\t/** Optional \"Improve with AI\" for instructions / guardrails. Omit to hide the buttons. */\n\tonImprove?: (\n\t\tkind: 'instructions' | 'guardrail',\n\t\ttext: string,\n\t) => Promise<string>;\n\t/** Header title — \"Create sub-agent\" (default) or \"Edit sub-agent\". */\n\ttitle?: string;\n\t/** Initial values, e.g. when configuring an existing sub-agent. */\n\tinitial?: SubAgentDraft;\n\t/** Tool-source fallback label for chips (host app). */\n\tappLabel?: string;\n\t/** Resolved character limits (defaults to {@link AGENT_CHAR_LIMITS}). */\n\tcharLimits?: AgentCharLimits;\n}\n\n/**\n * Right-side drawer for creating / editing a sub-agent (name, instructions,\n * guardrails, tools). Instructions & Guardrails are `@`-mention editors (tools\n * only — sub-agents can't nest); adding a tool from the list inserts it at the\n * last-focused field's cursor. Mount it fresh per open (key it) so `initial`\n * seeds the draft.\n */\nexport const CreateSubAgentPanel: React.FC<CreateSubAgentPanelProps> = ({\n\tonClose,\n\tonSave,\n\tavailableTools,\n\tonImprove,\n\ttitle = 'Create sub-agent',\n\tinitial,\n\tappLabel = 'Manifest',\n\tcharLimits = AGENT_CHAR_LIMITS,\n}) => {\n\tconst [name, setName] = useState(initial?.name ?? '');\n\tconst [instructions, setInstructions] = useState(initial?.instructions ?? '');\n\tconst [guardrail, setGuardrail] = useState(initial?.guardrail ?? '');\n\tconst [tools, setTools] = useState<string[]>(initial?.tools ?? []);\n\tconst [saving, setSaving] = useState(false);\n\t// Bumped to remount a field after its text is replaced (e.g. by Improve).\n\tconst [instrKey, setInstrKey] = useState(0);\n\tconst [guardKey, setGuardKey] = useState(0);\n\tconst [improving, setImproving] = useState<\n\t\t'instructions' | 'guardrail' | null\n\t>(null);\n\n\t// Tools-only mention list (sub-agents can't reference other sub-agents).\n\tconst mentionItems = useMemo(\n\t\t() => buildAgentMentionItems(availableTools, [], appLabel),\n\t\t[availableTools, appLabel],\n\t);\n\n\t// Per-field insert + focus registry, so the Tools list inserts a chip into the\n\t// last-focused editor at its cursor.\n\tconst insertersRef = useRef<\n\t\tPartial<Record<'instructions' | 'guardrail', InsertFn>>\n\t>({});\n\tconst lastFocusedRef = useRef<'instructions' | 'guardrail'>('instructions');\n\tconst registerInstr = useCallback((fn: InsertFn | null) => {\n\t\tinsertersRef.current.instructions = fn ?? undefined;\n\t}, []);\n\tconst registerGuard = useCallback((fn: InsertFn | null) => {\n\t\tinsertersRef.current.guardrail = fn ?? undefined;\n\t}, []);\n\tconst focusInstr = useCallback(() => {\n\t\tlastFocusedRef.current = 'instructions';\n\t}, []);\n\tconst focusGuard = useCallback(() => {\n\t\tlastFocusedRef.current = 'guardrail';\n\t}, []);\n\tconst addToolMention = useCallback(\n\t\t(kind: 'tool' | 'subagent', id: string) => {\n\t\t\tif (kind === 'tool') {\n\t\t\t\tsetTools((prev) => addUnique(prev, id));\n\t\t\t}\n\t\t},\n\t\t[],\n\t);\n\tconst insertToolAtCursor = useCallback((id: string) => {\n\t\tconst target =\n\t\t\tinsertersRef.current[lastFocusedRef.current] ??\n\t\t\tinsertersRef.current.instructions;\n\t\ttarget?.('tool', id);\n\t}, []);\n\n\t// Local undo toast for tool removal (drawer state isn't in AgentValue).\n\tconst [undo, setUndo] = useState<{ id: number; message: string } | null>(\n\t\tnull,\n\t);\n\tconst undoSnapshotRef = useRef<{\n\t\tinstructions: string;\n\t\tguardrail: string;\n\t\ttools: string[];\n\t} | null>(null);\n\tconst undoIdRef = useRef(0);\n\n\tconst removeTool = (id: string) => {\n\t\tconst tool = availableTools.find((t) => t.tool_id === id);\n\t\tconst token = tool ? `{{tool:${tool.function_key}}}` : null;\n\t\tconst strip = (text: string) => (token ? text.split(token).join('') : text);\n\t\tundoSnapshotRef.current = { instructions, guardrail, tools };\n\t\tsetInstructions((prev) => strip(prev));\n\t\tsetGuardrail((prev) => strip(prev));\n\t\tsetTools((prev) => prev.filter((t) => t !== id));\n\t\tsetInstrKey((k) => k + 1);\n\t\tsetGuardKey((k) => k + 1);\n\t\tundoIdRef.current += 1;\n\t\tsetUndo({\n\t\t\tid: undoIdRef.current,\n\t\t\tmessage: `Tool \"${tool?.display_name ?? 'Tool'}\" removed`,\n\t\t});\n\t};\n\n\tconst undoRemove = () => {\n\t\tconst snap = undoSnapshotRef.current;\n\t\tif (snap) {\n\t\t\tsetInstructions(snap.instructions);\n\t\t\tsetGuardrail(snap.guardrail);\n\t\t\tsetTools(snap.tools);\n\t\t\tsetInstrKey((k) => k + 1);\n\t\t\tsetGuardKey((k) => k + 1);\n\t\t\tundoSnapshotRef.current = null;\n\t\t}\n\t\tsetUndo(null);\n\t};\n\n\tconst canSave =\n\t\tname.trim().length > 0 &&\n\t\t(instructions.trim().length > 0 || guardrail.trim().length > 0);\n\n\tconst toolItems: SelectableItem[] = tools\n\t\t.map((id): SelectableItem | null => {\n\t\t\tconst tool = availableTools.find((t) => t.tool_id === id);\n\t\t\treturn tool\n\t\t\t\t? {\n\t\t\t\t\t\tid,\n\t\t\t\t\t\tlabel: tool.display_name,\n\t\t\t\t\t\ticon: SOURCE_ICONS[tool.source ?? 'manifest'],\n\t\t\t\t }\n\t\t\t\t: null;\n\t\t})\n\t\t.filter((x): x is SelectableItem => x !== null);\n\n\t// Offer all tools (re-add allowed); the chip list stays deduped. Icon left of\n\t// the name, no description.\n\tconst toolOptions: SingleOption[] = availableTools.map((t) => ({\n\t\tlabel: t.display_name,\n\t\tvalue: t.tool_id,\n\t\tleadingIcon:\n\t\t\trenderSourceIcon(SOURCE_ICONS[t.source ?? 'manifest']) ?? undefined,\n\t}));\n\n\t// Group tools by source (Manifest / Shopify / …) so the empty state shows the\n\t// same per-source buttons as the main builder's side panel.\n\tconst toolSourceGroups: SourceGroup[] = (() => {\n\t\tconst order: string[] = [];\n\t\tconst bySource = new Map<string, SingleOption[]>();\n\t\tavailableTools.forEach((t) => {\n\t\t\tconst src = t.source ?? 'manifest';\n\t\t\tif (!bySource.has(src)) {\n\t\t\t\tbySource.set(src, []);\n\t\t\t\torder.push(src);\n\t\t\t}\n\t\t\tbySource.get(src)?.push({\n\t\t\t\tlabel: t.display_name,\n\t\t\t\tvalue: t.tool_id,\n\t\t\t\tleadingIcon:\n\t\t\t\t\trenderSourceIcon(SOURCE_ICONS[t.source ?? 'manifest']) ?? undefined,\n\t\t\t});\n\t\t});\n\t\treturn order.map((src) => ({\n\t\t\tsource: src,\n\t\t\tlabel: toolSourceLabel(src),\n\t\t\toptions: bySource.get(src) ?? [],\n\t\t}));\n\t})();\n\n\tconst handleSave = async () => {\n\t\tif (!canSave || saving) {\n\t\t\treturn;\n\t\t}\n\t\tconst result = onSave({\n\t\t\tname: name.trim(),\n\t\t\tinstructions,\n\t\t\tguardrail,\n\t\t\ttools,\n\t\t});\n\t\tif (result && typeof (result as Promise<void>).then === 'function') {\n\t\t\tsetSaving(true);\n\t\t\ttry {\n\t\t\t\tawait result;\n\t\t\t} finally {\n\t\t\t\tsetSaving(false);\n\t\t\t}\n\t\t}\n\t};\n\n\tconst handleImprove = async (kind: 'instructions' | 'guardrail') => {\n\t\tif (!onImprove || improving) {\n\t\t\treturn;\n\t\t}\n\t\tsetImproving(kind);\n\t\ttry {\n\t\t\tconst current = kind === 'instructions' ? instructions : guardrail;\n\t\t\tconst improved = await onImprove(kind, current);\n\t\t\tif (kind === 'instructions') {\n\t\t\t\tsetInstructions(improved);\n\t\t\t\tsetInstrKey((k) => k + 1);\n\t\t\t} else {\n\t\t\t\tsetGuardrail(improved);\n\t\t\t\tsetGuardKey((k) => k + 1);\n\t\t\t}\n\t\t} finally {\n\t\t\tsetImproving(null);\n\t\t}\n\t};\n\n\treturn (\n\t\t<>\n\t\t\t<SubAgentScrim onClick={onClose} data-test=\"subagent-scrim\" />\n\t\t\t<SubAgentPanel data-test=\"create-subagent-panel\">\n\t\t\t\t<SubAgentPanelHeader>\n\t\t\t\t\t<SubAgentPanelHeaderText>\n\t\t\t\t\t\t<TitleRegular color={COLORS.content.primary}>{title}</TitleRegular>\n\t\t\t\t\t\t<BodySecondary color={COLORS.content.secondary}>\n\t\t\t\t\t\t\tEach sub-agent handles one piece of the job. Use @ in the main\n\t\t\t\t\t\t\tinstructions to call them.\n\t\t\t\t\t\t</BodySecondary>\n\t\t\t\t\t</SubAgentPanelHeaderText>\n\t\t\t\t\t<SubAgentCloseButton onClick={onClose} aria-label=\"Close\">\n\t\t\t\t\t\t<CrossIcon\n\t\t\t\t\t\t\twidth={20}\n\t\t\t\t\t\t\theight={20}\n\t\t\t\t\t\t\tcolor={COLORS.content.secondary}\n\t\t\t\t\t\t/>\n\t\t\t\t\t</SubAgentCloseButton>\n\t\t\t\t</SubAgentPanelHeader>\n\n\t\t\t\t<SubAgentPanelBody>\n\t\t\t\t\t<Input\n\t\t\t\t\t\tdata-test=\"subagent-name\"\n\t\t\t\t\t\tlabelText=\"Agent name\"\n\t\t\t\t\t\tlabelTextBold\n\t\t\t\t\t\tplaceholder=\"Enter agent name\"\n\t\t\t\t\t\tvalue={name}\n\t\t\t\t\t\tmaxCharLimit={charLimits.name}\n\t\t\t\t\t\tmaxCharLimitPosition=\"TOP\"\n\t\t\t\t\t\tmaxCharStyle={{ fontSize: 12, lineHeight: '16px' }}\n\t\t\t\t\t\tonChangeText={setName}\n\t\t\t\t\t/>\n\n\t\t\t\t\t<MentionEditor\n\t\t\t\t\t\tdata-test=\"subagent-instructions\"\n\t\t\t\t\t\tlabel=\"Instructions\"\n\t\t\t\t\t\tvalue={instructions}\n\t\t\t\t\t\tonChange={setInstructions}\n\t\t\t\t\t\tmaxLength={charLimits.instructions}\n\t\t\t\t\t\tplaceholder=\"Write the steps in plain English. Type @ to reference a tool.\"\n\t\t\t\t\t\tminHeight=\"160px\"\n\t\t\t\t\t\tresetKey={`instr-${instrKey}`}\n\t\t\t\t\t\tmentionItems={mentionItems}\n\t\t\t\t\t\ttools={availableTools}\n\t\t\t\t\t\tonMentionSelect={addToolMention}\n\t\t\t\t\t\tonFocus={focusInstr}\n\t\t\t\t\t\tregisterInsert={registerInstr}\n\t\t\t\t\t/>\n\n\t\t\t\t\t<MentionEditor\n\t\t\t\t\t\tdata-test=\"subagent-guardrail\"\n\t\t\t\t\t\tlabel=\"Guardrails\"\n\t\t\t\t\t\tvalue={guardrail}\n\t\t\t\t\t\tonChange={setGuardrail}\n\t\t\t\t\t\tmaxLength={charLimits.guardrail}\n\t\t\t\t\t\tplaceholder=\"e.g. Never discuss competitor pricing. Type @ to reference a tool.\"\n\t\t\t\t\t\tminHeight=\"160px\"\n\t\t\t\t\t\tresetKey={`guard-${guardKey}`}\n\t\t\t\t\t\tmentionItems={mentionItems}\n\t\t\t\t\t\ttools={availableTools}\n\t\t\t\t\t\tonMentionSelect={addToolMention}\n\t\t\t\t\t\tonFocus={focusGuard}\n\t\t\t\t\t\tregisterInsert={registerGuard}\n\t\t\t\t\t/>\n\n\t\t\t\t\t<SelectableListSection\n\t\t\t\t\t\ttitle=\"Tools this agent can use\"\n\t\t\t\t\t\tdataTestPrefix=\"subagent-tools\"\n\t\t\t\t\t\titems={toolItems}\n\t\t\t\t\t\taddableOptions={toolOptions}\n\t\t\t\t\t\tsourceGroups={toolSourceGroups}\n\t\t\t\t\t\tmentionItems={mentionItems}\n\t\t\t\t\t\temptyText=\"No tools added yet.\"\n\t\t\t\t\t\tonAdd={(id) => {\n\t\t\t\t\t\t\tinsertToolAtCursor(id);\n\t\t\t\t\t\t\tsetTools((prev) => addUnique(prev, id));\n\t\t\t\t\t\t}}\n\t\t\t\t\t\tonRemove={removeTool}\n\t\t\t\t\t/>\n\t\t\t\t</SubAgentPanelBody>\n\n\t\t\t\t<SubAgentPanelFooter>\n\t\t\t\t\t<Button\n\t\t\t\t\t\tdata-test=\"subagent-save\"\n\t\t\t\t\t\tbuttonType=\"primary\"\n\t\t\t\t\t\tsize=\"small\"\n\t\t\t\t\t\tbuttonText=\"Save\"\n\t\t\t\t\t\tdisabled={!canSave}\n\t\t\t\t\t\tisLoading={saving}\n\t\t\t\t\t\tonClick={handleSave}\n\t\t\t\t\t/>\n\t\t\t\t\t<Button\n\t\t\t\t\t\tdata-test=\"subagent-cancel\"\n\t\t\t\t\t\tbuttonType=\"tertiaryGray\"\n\t\t\t\t\t\tsize=\"small\"\n\t\t\t\t\t\tbuttonText=\"Cancel\"\n\t\t\t\t\t\tonClick={onClose}\n\t\t\t\t\t/>\n\t\t\t\t</SubAgentPanelFooter>\n\t\t\t</SubAgentPanel>\n\n\t\t\t{undo && (\n\t\t\t\t<Toaster\n\t\t\t\t\tkey={undo.id}\n\t\t\t\t\ttext={undo.message}\n\t\t\t\t\ttype=\"info\"\n\t\t\t\t\tposition=\"top-right\"\n\t\t\t\t\tautoClose={5000}\n\t\t\t\t\thideCloseButton\n\t\t\t\t\tbuttonProps={{\n\t\t\t\t\t\tbuttonText: 'Undo',\n\t\t\t\t\t\tshowButton: true,\n\t\t\t\t\t\tonButtonClick: () => {\n\t\t\t\t\t\t\tundoRemove();\n\t\t\t\t\t\t\treturn {} as Record<string, never>;\n\t\t\t\t\t\t},\n\t\t\t\t\t}}\n\t\t\t\t\tonCloseToast={() => setUndo(null)}\n\t\t\t\t/>\n\t\t\t)}\n\t\t</>\n\t);\n};\n"],"names":["CreateSubAgentPanel","onClose","onSave","availableTools","onImprove","title","initial","appLabel","charLimits","AGENT_CHAR_LIMITS","name","setName","useState","instructions","setInstructions","guardrail","setGuardrail","tools","setTools","saving","setSaving","instrKey","setInstrKey","guardKey","setGuardKey","improving","setImproving","mentionItems","useMemo","buildAgentMentionItems","insertersRef","useRef","lastFocusedRef","registerInstr","useCallback","fn","registerGuard","focusInstr","focusGuard","addToolMention","kind","id","prev","addUnique","insertToolAtCursor","undo","setUndo","undoSnapshotRef","undoIdRef","removeTool","tool","t","token","strip","text","k","undoRemove","snap","canSave","toolItems","SOURCE_ICONS","x","toolOptions","renderSourceIcon","toolSourceGroups","order","bySource","src","toolSourceLabel","handleSave","result","jsxs","Fragment","jsx","SubAgentScrim","SubAgentPanel","SubAgentPanelHeader","SubAgentPanelHeaderText","TitleRegular","COLORS","BodySecondary","SubAgentCloseButton","CrossIcon","SubAgentPanelBody","Input","MentionEditor","SelectableListSection","SubAgentPanelFooter","Button","Toaster"],"mappings":";;;;;;;;;;;;;;;AA8DO,MAAMA,KAA0D,CAAC;AAAA,EACvE,SAAAC;AAAA,EACA,QAAAC;AAAA,EACA,gBAAAC;AAAA,EACA,WAAAC;AAAA,EACA,OAAAC,IAAQ;AAAA,EACR,SAAAC;AAAA,EACA,UAAAC,IAAW;AAAA,EACX,YAAAC,IAAaC;AACd,MAAM;AACL,QAAM,CAACC,GAAMC,CAAO,IAAIC,EAASN,GAAS,QAAQ,EAAE,GAC9C,CAACO,GAAcC,CAAe,IAAIF,EAASN,GAAS,gBAAgB,EAAE,GACtE,CAACS,GAAWC,CAAY,IAAIJ,EAASN,GAAS,aAAa,EAAE,GAC7D,CAACW,GAAOC,CAAQ,IAAIN,EAAmBN,GAAS,SAAS,EAAE,GAC3D,CAACa,GAAQC,CAAS,IAAIR,EAAS,EAAK,GAEpC,CAACS,GAAUC,CAAW,IAAIV,EAAS,CAAC,GACpC,CAACW,GAAUC,CAAW,IAAIZ,EAAS,CAAC,GACpC,CAACa,IAAWC,EAAY,IAAId,EAEhC,IAAI,GAGAe,IAAeC;AAAA,IACpB,MAAMC,GAAuB1B,GAAgB,CAAA,GAAII,CAAQ;AAAA,IACzD,CAACJ,GAAgBI,CAAQ;AAAA,EAAA,GAKpBuB,IAAeC,EAEnB,EAAE,GACEC,IAAiBD,EAAqC,cAAc,GACpEE,IAAgBC,EAAY,CAACC,MAAwB;AAC1D,IAAAL,EAAa,QAAQ,eAAeK,KAAM;AAAA,EAC3C,GAAG,CAAA,CAAE,GACCC,IAAgBF,EAAY,CAACC,MAAwB;AAC1D,IAAAL,EAAa,QAAQ,YAAYK,KAAM;AAAA,EACxC,GAAG,CAAA,CAAE,GACCE,IAAaH,EAAY,MAAM;AACpC,IAAAF,EAAe,UAAU;AAAA,EAC1B,GAAG,CAAA,CAAE,GACCM,IAAaJ,EAAY,MAAM;AACpC,IAAAF,EAAe,UAAU;AAAA,EAC1B,GAAG,CAAA,CAAE,GACCO,IAAiBL;AAAA,IACtB,CAACM,GAA2BC,MAAe;AAC1C,MAAID,MAAS,UACZtB,EAAS,CAACwB,MAASC,EAAUD,GAAMD,CAAE,CAAC;AAAA,IAExC;AAAA,IACA,CAAA;AAAA,EAAC,GAEIG,IAAqBV,EAAY,CAACO,MAAe;AAItD,KAFCX,EAAa,QAAQE,EAAe,OAAO,KAC3CF,EAAa,QAAQ,gBACb,QAAQW,CAAE;AAAA,EACpB,GAAG,CAAA,CAAE,GAGC,CAACI,GAAMC,CAAO,IAAIlC;AAAA,IACvB;AAAA,EAAA,GAEKmC,IAAkBhB,EAId,IAAI,GACRiB,IAAYjB,EAAO,CAAC,GAEpBkB,IAAa,CAACR,MAAe;AAClC,UAAMS,IAAO/C,EAAe,KAAK,CAACgD,MAAMA,EAAE,YAAYV,CAAE,GAClDW,IAAQF,IAAO,UAAUA,EAAK,YAAY,OAAO,MACjDG,IAAQ,CAACC,MAAkBF,IAAQE,EAAK,MAAMF,CAAK,EAAE,KAAK,EAAE,IAAIE;AACtE,IAAAP,EAAgB,UAAU,EAAE,cAAAlC,GAAc,WAAAE,GAAW,OAAAE,EAAA,GACrDH,EAAgB,CAAC4B,MAASW,EAAMX,CAAI,CAAC,GACrC1B,EAAa,CAAC0B,MAASW,EAAMX,CAAI,CAAC,GAClCxB,EAAS,CAACwB,MAASA,EAAK,OAAO,CAACS,OAAMA,OAAMV,CAAE,CAAC,GAC/CnB,EAAY,CAACiC,MAAMA,IAAI,CAAC,GACxB/B,EAAY,CAAC+B,MAAMA,IAAI,CAAC,GACxBP,EAAU,WAAW,GACrBF,EAAQ;AAAA,MACP,IAAIE,EAAU;AAAA,MACd,SAAS,SAASE,GAAM,gBAAgB,MAAM;AAAA,IAAA,CAC9C;AAAA,EACF,GAEMM,IAAa,MAAM;AACxB,UAAMC,IAAOV,EAAgB;AAC7B,IAAIU,MACH3C,EAAgB2C,EAAK,YAAY,GACjCzC,EAAayC,EAAK,SAAS,GAC3BvC,EAASuC,EAAK,KAAK,GACnBnC,EAAY,CAACiC,MAAMA,IAAI,CAAC,GACxB/B,EAAY,CAAC+B,MAAMA,IAAI,CAAC,GACxBR,EAAgB,UAAU,OAE3BD,EAAQ,IAAI;AAAA,EACb,GAEMY,IACLhD,EAAK,KAAA,EAAO,SAAS,MACpBG,EAAa,KAAA,EAAO,SAAS,KAAKE,EAAU,KAAA,EAAO,SAAS,IAExD4C,IAA8B1C,EAClC,IAAI,CAACwB,MAA8B;AACnC,UAAMS,IAAO/C,EAAe,KAAK,CAACgD,MAAMA,EAAE,YAAYV,CAAE;AACxD,WAAOS,IACJ;AAAA,MACA,IAAAT;AAAA,MACA,OAAOS,EAAK;AAAA,MACZ,MAAMU,EAAaV,EAAK,UAAU,UAAU;AAAA,IAAA,IAE5C;AAAA,EACJ,CAAC,EACA,OAAO,CAACW,MAA2BA,MAAM,IAAI,GAIzCC,KAA8B3D,EAAe,IAAI,CAAC,OAAO;AAAA,IAC9D,OAAO,EAAE;AAAA,IACT,OAAO,EAAE;AAAA,IACT,aACC4D,EAAiBH,EAAa,EAAE,UAAU,UAAU,CAAC,KAAK;AAAA,EAAA,EAC1D,GAIII,MAAmC,MAAM;AAC9C,UAAMC,IAAkB,CAAA,GAClBC,wBAAe,IAAA;AACrB,WAAA/D,EAAe,QAAQ,CAACgD,MAAM;AAC7B,YAAMgB,IAAMhB,EAAE,UAAU;AACxB,MAAKe,EAAS,IAAIC,CAAG,MACpBD,EAAS,IAAIC,GAAK,EAAE,GACpBF,EAAM,KAAKE,CAAG,IAEfD,EAAS,IAAIC,CAAG,GAAG,KAAK;AAAA,QACvB,OAAOhB,EAAE;AAAA,QACT,OAAOA,EAAE;AAAA,QACT,aACCY,EAAiBH,EAAaT,EAAE,UAAU,UAAU,CAAC,KAAK;AAAA,MAAA,CAC3D;AAAA,IACF,CAAC,GACMc,EAAM,IAAI,CAACE,OAAS;AAAA,MAC1B,QAAQA;AAAA,MACR,OAAOC,GAAgBD,CAAG;AAAA,MAC1B,SAASD,EAAS,IAAIC,CAAG,KAAK,CAAA;AAAA,IAAC,EAC9B;AAAA,EACH,GAAA,GAEME,KAAa,YAAY;AAC9B,QAAI,CAACX,KAAWvC;AACf;AAED,UAAMmD,IAASpE,EAAO;AAAA,MACrB,MAAMQ,EAAK,KAAA;AAAA,MACX,cAAAG;AAAA,MACA,WAAAE;AAAA,MACA,OAAAE;AAAA,IAAA,CACA;AACD,QAAIqD,KAAU,OAAQA,EAAyB,QAAS,YAAY;AACnE,MAAAlD,EAAU,EAAI;AACd,UAAI;AACH,cAAMkD;AAAA,MACP,UAAA;AACC,QAAAlD,EAAU,EAAK;AAAA,MAChB;AAAA,IACD;AAAA,EACD;AAsBA,SACC,gBAAAmD,EAAAC,IAAA,EACC,UAAA;AAAA,IAAA,gBAAAC,EAACC,IAAA,EAAc,SAASzE,GAAS,aAAU,kBAAiB;AAAA,IAC5D,gBAAAsE,EAACI,IAAA,EAAc,aAAU,yBACxB,UAAA;AAAA,MAAA,gBAAAJ,EAACK,IAAA,EACA,UAAA;AAAA,QAAA,gBAAAL,EAACM,IAAA,EACA,UAAA;AAAA,UAAA,gBAAAJ,EAACK,IAAA,EAAa,OAAOC,EAAO,QAAQ,SAAU,UAAA1E,GAAM;AAAA,4BACnD2E,IAAA,EAAc,OAAOD,EAAO,QAAQ,WAAW,UAAA,4FAAA,CAGhD;AAAA,QAAA,GACD;AAAA,QACA,gBAAAN,EAACQ,IAAA,EAAoB,SAAShF,GAAS,cAAW,SACjD,UAAA,gBAAAwE;AAAA,UAACS;AAAAA,UAAA;AAAA,YACA,OAAO;AAAA,YACP,QAAQ;AAAA,YACR,OAAOH,EAAO,QAAQ;AAAA,UAAA;AAAA,QAAA,EACvB,CACD;AAAA,MAAA,GACD;AAAA,wBAECI,IAAA,EACA,UAAA;AAAA,QAAA,gBAAAV;AAAA,UAACW;AAAA,UAAA;AAAA,YACA,aAAU;AAAA,YACV,WAAU;AAAA,YACV,eAAa;AAAA,YACb,aAAY;AAAA,YACZ,OAAO1E;AAAA,YACP,cAAcF,EAAW;AAAA,YACzB,sBAAqB;AAAA,YACrB,cAAc,EAAE,UAAU,IAAI,YAAY,OAAA;AAAA,YAC1C,cAAcG;AAAA,UAAA;AAAA,QAAA;AAAA,QAGf,gBAAA8D;AAAA,UAACY;AAAA,UAAA;AAAA,YACA,aAAU;AAAA,YACV,OAAM;AAAA,YACN,OAAOxE;AAAA,YACP,UAAUC;AAAA,YACV,WAAWN,EAAW;AAAA,YACtB,aAAY;AAAA,YACZ,WAAU;AAAA,YACV,UAAU,SAASa,CAAQ;AAAA,YAC3B,cAAAM;AAAA,YACA,OAAOxB;AAAA,YACP,iBAAiBoC;AAAA,YACjB,SAASF;AAAA,YACT,gBAAgBJ;AAAA,UAAA;AAAA,QAAA;AAAA,QAGjB,gBAAAwC;AAAA,UAACY;AAAA,UAAA;AAAA,YACA,aAAU;AAAA,YACV,OAAM;AAAA,YACN,OAAOtE;AAAA,YACP,UAAUC;AAAA,YACV,WAAWR,EAAW;AAAA,YACtB,aAAY;AAAA,YACZ,WAAU;AAAA,YACV,UAAU,SAASe,CAAQ;AAAA,YAC3B,cAAAI;AAAA,YACA,OAAOxB;AAAA,YACP,iBAAiBoC;AAAA,YACjB,SAASD;AAAA,YACT,gBAAgBF;AAAA,UAAA;AAAA,QAAA;AAAA,QAGjB,gBAAAqC;AAAA,UAACa;AAAA,UAAA;AAAA,YACA,OAAM;AAAA,YACN,gBAAe;AAAA,YACf,OAAO3B;AAAA,YACP,gBAAgBG;AAAA,YAChB,cAAcE;AAAA,YACd,cAAArC;AAAA,YACA,WAAU;AAAA,YACV,OAAO,CAACc,MAAO;AACd,cAAAG,EAAmBH,CAAE,GACrBvB,EAAS,CAACwB,MAASC,EAAUD,GAAMD,CAAE,CAAC;AAAA,YACvC;AAAA,YACA,UAAUQ;AAAA,UAAA;AAAA,QAAA;AAAA,MACX,GACD;AAAA,wBAECsC,IAAA,EACA,UAAA;AAAA,QAAA,gBAAAd;AAAA,UAACe;AAAA,UAAA;AAAA,YACA,aAAU;AAAA,YACV,YAAW;AAAA,YACX,MAAK;AAAA,YACL,YAAW;AAAA,YACX,UAAU,CAAC9B;AAAA,YACX,WAAWvC;AAAA,YACX,SAASkD;AAAA,UAAA;AAAA,QAAA;AAAA,QAEV,gBAAAI;AAAA,UAACe;AAAA,UAAA;AAAA,YACA,aAAU;AAAA,YACV,YAAW;AAAA,YACX,MAAK;AAAA,YACL,YAAW;AAAA,YACX,SAASvF;AAAA,UAAA;AAAA,QAAA;AAAA,MACV,EAAA,CACD;AAAA,IAAA,GACD;AAAA,IAEC4C,KACA,gBAAA4B;AAAA,MAACgB;AAAA,MAAA;AAAA,QAEA,MAAM5C,EAAK;AAAA,QACX,MAAK;AAAA,QACL,UAAS;AAAA,QACT,WAAW;AAAA,QACX,iBAAe;AAAA,QACf,aAAa;AAAA,UACZ,YAAY;AAAA,UACZ,YAAY;AAAA,UACZ,eAAe,OACdW,EAAA,GACO,CAAA;AAAA,QACR;AAAA,QAED,cAAc,MAAMV,EAAQ,IAAI;AAAA,MAAA;AAAA,MAd3BD,EAAK;AAAA,IAAA;AAAA,EAeX,GAEF;AAEF;"}