@bikdotai/bik-component-library 0.0.821 → 0.0.822-beta.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (77) hide show
  1. package/dist/cjs/components/agent-builder/AgentBuilder.js +1 -1
  2. package/dist/cjs/components/agent-builder/AgentBuilder.js.map +1 -1
  3. package/dist/cjs/components/agent-builder/AgentBuilder.styled.js +66 -90
  4. package/dist/cjs/components/agent-builder/AgentBuilder.styled.js.map +1 -1
  5. package/dist/cjs/components/agent-builder/components/CreateSubAgentPanel.js +1 -1
  6. package/dist/cjs/components/agent-builder/components/CreateSubAgentPanel.js.map +1 -1
  7. package/dist/cjs/components/agent-builder/components/MentionPicker.js +19 -19
  8. package/dist/cjs/components/agent-builder/components/MentionPicker.js.map +1 -1
  9. package/dist/cjs/components/agent-builder/components/SelectableListSection.js +14 -1
  10. package/dist/cjs/components/agent-builder/components/SelectableListSection.js.map +1 -1
  11. package/dist/cjs/components/agent-builder/constants/charLimits.js.map +1 -1
  12. package/dist/cjs/components/agent-builder/context/AgentBuilderContext.js +1 -1
  13. package/dist/cjs/components/agent-builder/context/AgentBuilderContext.js.map +1 -1
  14. package/dist/cjs/components/agent-builder/steps/Step1About.js +1 -1
  15. package/dist/cjs/components/agent-builder/steps/Step1About.js.map +1 -1
  16. package/dist/cjs/components/agent-builder/steps/Step2WhenItStepsIn.js +1 -1
  17. package/dist/cjs/components/agent-builder/steps/Step2WhenItStepsIn.js.map +1 -1
  18. package/dist/cjs/components/agent-builder/steps/Step3HowItResponds.js +1 -1
  19. package/dist/cjs/components/agent-builder/steps/Step3HowItResponds.js.map +1 -1
  20. package/dist/cjs/components/agent-builder/steps/Step4HandoverRules.js +1 -1
  21. package/dist/cjs/components/agent-builder/steps/Step4HandoverRules.js.map +1 -1
  22. package/dist/cjs/components/agent-builder/utils/sourceIcons.js +1 -1
  23. package/dist/cjs/components/agent-builder/utils/sourceIcons.js.map +1 -1
  24. package/dist/cjs/components/agent-listing/AgentListing.js +1 -1
  25. package/dist/cjs/components/agent-listing/AgentListing.js.map +1 -1
  26. package/dist/cjs/components/agent-listing/AgentListingFilters.js +1 -1
  27. package/dist/cjs/components/agent-listing/AgentListingFilters.js.map +1 -1
  28. package/dist/cjs/components/dropdown/utils.js +2 -0
  29. package/dist/cjs/components/dropdown/utils.js.map +1 -0
  30. package/dist/cjs/index.js +1 -1
  31. package/dist/cjs/utils/arrayUtils.js +2 -0
  32. package/dist/cjs/utils/arrayUtils.js.map +1 -0
  33. package/dist/esm/components/agent-builder/AgentBuilder.js +67 -65
  34. package/dist/esm/components/agent-builder/AgentBuilder.js.map +1 -1
  35. package/dist/esm/components/agent-builder/AgentBuilder.model.d.ts +7 -0
  36. package/dist/esm/components/agent-builder/AgentBuilder.styled.js +117 -141
  37. package/dist/esm/components/agent-builder/AgentBuilder.styled.js.map +1 -1
  38. package/dist/esm/components/agent-builder/components/CreateSubAgentPanel.d.ts +3 -0
  39. package/dist/esm/components/agent-builder/components/CreateSubAgentPanel.js +95 -96
  40. package/dist/esm/components/agent-builder/components/CreateSubAgentPanel.js.map +1 -1
  41. package/dist/esm/components/agent-builder/components/MentionPicker.d.ts +4 -0
  42. package/dist/esm/components/agent-builder/components/MentionPicker.js +64 -69
  43. package/dist/esm/components/agent-builder/components/MentionPicker.js.map +1 -1
  44. package/dist/esm/components/agent-builder/components/SelectableListSection.d.ts +10 -0
  45. package/dist/esm/components/agent-builder/components/SelectableListSection.js +161 -106
  46. package/dist/esm/components/agent-builder/components/SelectableListSection.js.map +1 -1
  47. package/dist/esm/components/agent-builder/constants/charLimits.d.ts +6 -0
  48. package/dist/esm/components/agent-builder/constants/charLimits.js.map +1 -1
  49. package/dist/esm/components/agent-builder/context/AgentBuilderContext.d.ts +4 -0
  50. package/dist/esm/components/agent-builder/context/AgentBuilderContext.js +126 -120
  51. package/dist/esm/components/agent-builder/context/AgentBuilderContext.js.map +1 -1
  52. package/dist/esm/components/agent-builder/index.d.ts +1 -0
  53. package/dist/esm/components/agent-builder/steps/Step1About.js +6 -7
  54. package/dist/esm/components/agent-builder/steps/Step1About.js.map +1 -1
  55. package/dist/esm/components/agent-builder/steps/Step2WhenItStepsIn.js +59 -59
  56. package/dist/esm/components/agent-builder/steps/Step2WhenItStepsIn.js.map +1 -1
  57. package/dist/esm/components/agent-builder/steps/Step3HowItResponds.js +114 -109
  58. package/dist/esm/components/agent-builder/steps/Step3HowItResponds.js.map +1 -1
  59. package/dist/esm/components/agent-builder/steps/Step4HandoverRules.js +26 -27
  60. package/dist/esm/components/agent-builder/steps/Step4HandoverRules.js.map +1 -1
  61. package/dist/esm/components/agent-builder/utils/sourceIcons.d.ts +6 -0
  62. package/dist/esm/components/agent-builder/utils/sourceIcons.js +12 -7
  63. package/dist/esm/components/agent-builder/utils/sourceIcons.js.map +1 -1
  64. package/dist/esm/components/agent-listing/AgentListing.js +91 -90
  65. package/dist/esm/components/agent-listing/AgentListing.js.map +1 -1
  66. package/dist/esm/components/agent-listing/AgentListingFilters.js +31 -30
  67. package/dist/esm/components/agent-listing/AgentListingFilters.js.map +1 -1
  68. package/dist/esm/components/dropdown/index.d.ts +1 -0
  69. package/dist/esm/components/dropdown/utils.d.ts +9 -0
  70. package/dist/esm/components/dropdown/utils.js +5 -0
  71. package/dist/esm/components/dropdown/utils.js.map +1 -0
  72. package/dist/esm/index.js +10 -8
  73. package/dist/esm/index.js.map +1 -1
  74. package/dist/esm/utils/arrayUtils.d.ts +7 -0
  75. package/dist/esm/utils/arrayUtils.js +5 -0
  76. package/dist/esm/utils/arrayUtils.js.map +1 -0
  77. package/package.json +1 -1
@@ -1,97 +1,96 @@
1
- import { jsxs as a, Fragment as et, jsx as o } from "react/jsx-runtime";
2
- import nt from "../../../assets/icons/cross.svg.js";
3
- import ot, { useState as r, useMemo as rt, useRef as p, useCallback as l } from "react";
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
4
  import { TitleRegular as st, BodySecondary as it } from "../../TypographyStyle.js";
5
+ import { addUnique as K } from "../../../utils/arrayUtils.js";
5
6
  import { COLORS as A } from "../../../constants/Theme.js";
6
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";
7
- import { AGENT_CHAR_LIMITS as v } from "../constants/charLimits.js";
8
- import { buildAgentMentionItems as pt } from "../utils/mentionSerialization.js";
9
- import { SOURCE_ICONS as H } from "../utils/sourceIcons.js";
10
- import { MentionEditor as K } from "./MentionEditor.js";
11
- import { SelectableListSection as ht } from "./SelectableListSection.js";
12
- import { Input as ft } from "../../input/Input.js";
13
- import { Button as w } from "../../button/Button.js";
14
- import { Toaster as bt } from "../../toaster/Toaster.js";
15
- const Gt = ({
16
- onClose: h,
17
- onSave: F,
18
- availableTools: i,
19
- onImprove: yt,
20
- title: N = "Create sub-agent",
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",
21
22
  initial: c,
22
- appLabel: R = "Manifest"
23
+ appLabel: R = "Manifest",
24
+ charLimits: h = pt
23
25
  }) => {
24
- const [f, j] = r(c?.name ?? ""), [u, b] = r(c?.instructions ?? ""), [d, y] = r(c?.guardrail ?? ""), [S, m] = r(c?.tools ?? []), [_, P] = r(!1), [U, k] = r(0), [$, B] = r(0), [St, Ct] = r(null), M = rt(
25
- () => pt(i, [], R),
26
- [i, R]
27
- ), g = p({}), C = p("instructions"), z = l((t) => {
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) => {
28
30
  g.current.instructions = t ?? void 0;
29
31
  }, []), W = l((t) => {
30
32
  g.current.guardrail = t ?? void 0;
31
- }, []), q = l(() => {
32
- C.current = "instructions";
33
33
  }, []), D = l(() => {
34
- C.current = "guardrail";
35
- }, []), E = l(
34
+ x.current = "instructions";
35
+ }, []), J = l(() => {
36
+ x.current = "guardrail";
37
+ }, []), O = l(
36
38
  (t, e) => {
37
- t === "tool" && m((s) => s.includes(e) ? s : [...s, e]);
39
+ t === "tool" && m((i) => K(i, e));
38
40
  },
39
41
  []
40
- ), J = l((t) => {
41
- (g.current[C.current] ?? g.current.instructions)?.("tool", t);
42
- }, []), [x, T] = r(
42
+ ), Q = l((t) => {
43
+ (g.current[x.current] ?? g.current.instructions)?.("tool", t);
44
+ }, []), [T, I] = r(
43
45
  null
44
- ), I = p(null), L = p(0), Q = (t) => {
45
- const e = i.find((n) => n.tool_id === t), s = e ? `{{tool:${e.function_key}}}` : null, G = (n) => s ? n.split(s).join("") : n;
46
- I.current = { instructions: u, guardrail: d, tools: S }, b((n) => G(n)), y((n) => G(n)), m((n) => n.filter((tt) => tt !== t)), k((n) => n + 1), B((n) => n + 1), L.current += 1, T({
47
- id: L.current,
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,
48
50
  message: `Tool "${e?.display_name ?? "Tool"}" removed`
49
51
  });
50
- }, V = () => {
51
- const t = I.current;
52
- t && (b(t.instructions), y(t.guardrail), m(t.tools), k((e) => e + 1), B((e) => e + 1), I.current = null), T(null);
53
- }, O = f.trim().length > 0 && (u.trim().length > 0 || d.trim().length > 0), X = S.map((t) => {
54
- const e = i.find((s) => s.tool_id === t);
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);
55
57
  return e ? {
56
58
  id: t,
57
59
  label: e.display_name,
58
- icon: H[e.source ?? "manifest"]
60
+ icon: F[e.source ?? "manifest"]
59
61
  } : null;
60
- }).filter((t) => t !== null), Y = i.map((t) => {
61
- const e = H[t.source ?? "manifest"];
62
- return {
63
- label: t.display_name,
64
- value: t.tool_id,
65
- leadingIcon: e ? ot.createElement(e.Icon, { width: e.w, height: e.h }) : void 0
66
- };
67
- }), Z = async () => {
68
- if (!O || _)
62
+ }).filter((t) => t !== null), Z = s.map((t) => ({
63
+ label: t.display_name,
64
+ value: t.tool_id,
65
+ leadingIcon: ht(F[t.source ?? "manifest"]) ?? void 0
66
+ })), tt = async () => {
67
+ if (!G || P)
69
68
  return;
70
- const t = F({
71
- name: f.trim(),
69
+ const t = U({
70
+ name: b.trim(),
72
71
  instructions: u,
73
72
  guardrail: d,
74
- tools: S
73
+ tools: C
75
74
  });
76
75
  if (t && typeof t.then == "function") {
77
- P(!0);
76
+ _(!0);
78
77
  try {
79
78
  await t;
80
79
  } finally {
81
- P(!1);
80
+ _(!1);
82
81
  }
83
82
  }
84
83
  };
85
- return /* @__PURE__ */ a(et, { children: [
86
- /* @__PURE__ */ o(at, { onClick: h, "data-test": "subagent-scrim" }),
84
+ return /* @__PURE__ */ a(nt, { children: [
85
+ /* @__PURE__ */ o(at, { onClick: f, "data-test": "subagent-scrim" }),
87
86
  /* @__PURE__ */ a(lt, { "data-test": "create-subagent-panel", children: [
88
87
  /* @__PURE__ */ a(ct, { children: [
89
88
  /* @__PURE__ */ a(ut, { children: [
90
- /* @__PURE__ */ o(st, { color: A.content.primary, children: N }),
89
+ /* @__PURE__ */ o(st, { color: A.content.primary, children: j }),
91
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." })
92
91
  ] }),
93
- /* @__PURE__ */ o(dt, { onClick: h, "aria-label": "Close", children: /* @__PURE__ */ o(
94
- nt,
92
+ /* @__PURE__ */ o(dt, { onClick: f, "aria-label": "Close", children: /* @__PURE__ */ o(
93
+ ot,
95
94
  {
96
95
  width: 20,
97
96
  height: 20,
@@ -101,99 +100,99 @@ const Gt = ({
101
100
  ] }),
102
101
  /* @__PURE__ */ a(mt, { children: [
103
102
  /* @__PURE__ */ o(
104
- ft,
103
+ yt,
105
104
  {
106
105
  "data-test": "subagent-name",
107
106
  labelText: "Agent name",
108
107
  labelTextBold: !0,
109
108
  placeholder: "Enter agent name",
110
- value: f,
111
- maxCharLimit: v.name,
109
+ value: b,
110
+ maxCharLimit: h.name,
112
111
  maxCharLimitPosition: "TOP",
113
112
  maxCharStyle: { fontSize: 12, lineHeight: "16px" },
114
- onChangeText: j
113
+ onChangeText: $
115
114
  }
116
115
  ),
117
116
  /* @__PURE__ */ o(
118
- K,
117
+ L,
119
118
  {
120
119
  "data-test": "subagent-instructions",
121
120
  label: "Instructions",
122
121
  value: u,
123
- onChange: b,
124
- maxLength: v.instructions,
122
+ onChange: y,
123
+ maxLength: h.instructions,
125
124
  placeholder: "Write the steps in plain English. Type @ to reference a tool.",
126
125
  minHeight: "160px",
127
- resetKey: `instr-${U}`,
126
+ resetKey: `instr-${w}`,
128
127
  mentionItems: M,
129
- tools: i,
130
- onMentionSelect: E,
131
- onFocus: q,
132
- registerInsert: z
128
+ tools: s,
129
+ onMentionSelect: O,
130
+ onFocus: D,
131
+ registerInsert: q
133
132
  }
134
133
  ),
135
134
  /* @__PURE__ */ o(
136
- K,
135
+ L,
137
136
  {
138
137
  "data-test": "subagent-guardrail",
139
138
  label: "Guardrails",
140
139
  value: d,
141
- onChange: y,
142
- maxLength: v.guardrail,
140
+ onChange: S,
141
+ maxLength: h.guardrail,
143
142
  placeholder: "e.g. Never discuss competitor pricing. Type @ to reference a tool.",
144
143
  minHeight: "160px",
145
- resetKey: `guard-${$}`,
144
+ resetKey: `guard-${z}`,
146
145
  mentionItems: M,
147
- tools: i,
148
- onMentionSelect: E,
149
- onFocus: D,
146
+ tools: s,
147
+ onMentionSelect: O,
148
+ onFocus: J,
150
149
  registerInsert: W
151
150
  }
152
151
  ),
153
152
  /* @__PURE__ */ o(
154
- ht,
153
+ bt,
155
154
  {
156
155
  title: "Tools this agent can use",
157
156
  dataTestPrefix: "subagent-tools",
158
- items: X,
159
- addableOptions: Y,
157
+ items: Y,
158
+ addableOptions: Z,
160
159
  emptyText: "No tools added yet.",
161
160
  onAdd: (t) => {
162
- J(t), m((e) => e.includes(t) ? e : [...e, t]);
161
+ Q(t), m((e) => K(e, t));
163
162
  },
164
- onRemove: Q
163
+ onRemove: V
165
164
  }
166
165
  )
167
166
  ] }),
168
167
  /* @__PURE__ */ a(gt, { children: [
169
168
  /* @__PURE__ */ o(
170
- w,
169
+ N,
171
170
  {
172
171
  "data-test": "subagent-save",
173
172
  buttonType: "primary",
174
173
  size: "small",
175
174
  buttonText: "Save",
176
- disabled: !O,
177
- isLoading: _,
178
- onClick: Z
175
+ disabled: !G,
176
+ isLoading: P,
177
+ onClick: tt
179
178
  }
180
179
  ),
181
180
  /* @__PURE__ */ o(
182
- w,
181
+ N,
183
182
  {
184
183
  "data-test": "subagent-cancel",
185
184
  buttonType: "secondary",
186
185
  size: "small",
187
186
  buttonText: "Cancel",
188
- onClick: h
187
+ onClick: f
189
188
  }
190
189
  )
191
190
  ] })
192
191
  ] }),
193
- x && /* @__PURE__ */ o(
194
- bt,
192
+ T && /* @__PURE__ */ o(
193
+ St,
195
194
  {
196
- text: x.message,
195
+ text: T.message,
197
196
  type: "info",
198
197
  position: "top-right",
199
198
  autoClose: 5e3,
@@ -201,15 +200,15 @@ const Gt = ({
201
200
  buttonProps: {
202
201
  buttonText: "Undo",
203
202
  showButton: !0,
204
- onButtonClick: () => (V(), {})
203
+ onButtonClick: () => (X(), {})
205
204
  },
206
- onCloseToast: () => T(null)
205
+ onCloseToast: () => I(null)
207
206
  },
208
- x.id
207
+ T.id
209
208
  )
210
209
  ] });
211
210
  };
212
211
  export {
213
- Gt as CreateSubAgentPanel
212
+ Lt as CreateSubAgentPanel
214
213
  };
215
214
  //# 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 { 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 { buildAgentMentionItems } from '../utils/mentionSerialization';\nimport { 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}\n\n/**\n * Right-side drawer for creating / editing a sub-agent (name, instructions,\n * guardrails, tools). Instructions & Guardrails are `@`-mention editors (tools\n * only — sub-agents can't nest); adding a tool from the list inserts it at the\n * last-focused field's cursor. Mount it fresh per open (key it) so `initial`\n * seeds the draft.\n */\nexport const CreateSubAgentPanel: React.FC<CreateSubAgentPanelProps> = ({\n\tonClose,\n\tonSave,\n\tavailableTools,\n\tonImprove,\n\ttitle = 'Create sub-agent',\n\tinitial,\n\tappLabel = 'Manifest',\n}) => {\n\tconst [name, setName] = useState(initial?.name ?? '');\n\tconst [instructions, setInstructions] = useState(initial?.instructions ?? '');\n\tconst [guardrail, setGuardrail] = useState(initial?.guardrail ?? '');\n\tconst [tools, setTools] = useState<string[]>(initial?.tools ?? []);\n\tconst [saving, setSaving] = useState(false);\n\t// Bumped to remount a field after its text is replaced (e.g. by Improve).\n\tconst [instrKey, setInstrKey] = useState(0);\n\tconst [guardKey, setGuardKey] = useState(0);\n\tconst [improving, setImproving] = useState<\n\t\t'instructions' | 'guardrail' | null\n\t>(null);\n\n\t// Tools-only mention list (sub-agents can't reference other sub-agents).\n\tconst mentionItems = useMemo(\n\t\t() => buildAgentMentionItems(availableTools, [], appLabel),\n\t\t[availableTools, appLabel],\n\t);\n\n\t// Per-field insert + focus registry, so the Tools list inserts a chip into the\n\t// last-focused editor at its cursor.\n\tconst insertersRef = useRef<\n\t\tPartial<Record<'instructions' | 'guardrail', InsertFn>>\n\t>({});\n\tconst lastFocusedRef = useRef<'instructions' | 'guardrail'>('instructions');\n\tconst registerInstr = useCallback((fn: InsertFn | null) => {\n\t\tinsertersRef.current.instructions = fn ?? undefined;\n\t}, []);\n\tconst registerGuard = useCallback((fn: InsertFn | null) => {\n\t\tinsertersRef.current.guardrail = fn ?? undefined;\n\t}, []);\n\tconst focusInstr = useCallback(() => {\n\t\tlastFocusedRef.current = 'instructions';\n\t}, []);\n\tconst focusGuard = useCallback(() => {\n\t\tlastFocusedRef.current = 'guardrail';\n\t}, []);\n\tconst addToolMention = useCallback(\n\t\t(kind: 'tool' | 'subagent', id: string) => {\n\t\t\tif (kind === 'tool') {\n\t\t\t\tsetTools((prev) => (prev.includes(id) ? prev : [...prev, id]));\n\t\t\t}\n\t\t},\n\t\t[],\n\t);\n\tconst insertToolAtCursor = useCallback((id: string) => {\n\t\tconst target =\n\t\t\tinsertersRef.current[lastFocusedRef.current] ??\n\t\t\tinsertersRef.current.instructions;\n\t\ttarget?.('tool', id);\n\t}, []);\n\n\t// Local undo toast for tool removal (drawer state isn't in AgentValue).\n\tconst [undo, setUndo] = useState<{ id: number; message: string } | null>(\n\t\tnull,\n\t);\n\tconst undoSnapshotRef = useRef<{\n\t\tinstructions: string;\n\t\tguardrail: string;\n\t\ttools: string[];\n\t} | null>(null);\n\tconst undoIdRef = useRef(0);\n\n\tconst removeTool = (id: string) => {\n\t\tconst tool = availableTools.find((t) => t.tool_id === id);\n\t\tconst token = tool ? `{{tool:${tool.function_key}}}` : null;\n\t\tconst strip = (text: string) => (token ? text.split(token).join('') : text);\n\t\tundoSnapshotRef.current = { instructions, guardrail, tools };\n\t\tsetInstructions((prev) => strip(prev));\n\t\tsetGuardrail((prev) => strip(prev));\n\t\tsetTools((prev) => prev.filter((t) => t !== id));\n\t\tsetInstrKey((k) => k + 1);\n\t\tsetGuardKey((k) => k + 1);\n\t\tundoIdRef.current += 1;\n\t\tsetUndo({\n\t\t\tid: undoIdRef.current,\n\t\t\tmessage: `Tool \"${tool?.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\tconst ic = SOURCE_ICONS[t.source ?? 'manifest'];\n\t\treturn {\n\t\t\tlabel: t.display_name,\n\t\t\tvalue: t.tool_id,\n\t\t\tleadingIcon: ic\n\t\t\t\t? React.createElement(ic.Icon, { width: ic.w, height: ic.h })\n\t\t\t\t: undefined,\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={AGENT_CHAR_LIMITS.name}\n\t\t\t\t\t\tmaxCharLimitPosition=\"TOP\"\n\t\t\t\t\t\tmaxCharStyle={{ fontSize: 12, lineHeight: '16px' }}\n\t\t\t\t\t\tonChangeText={setName}\n\t\t\t\t\t/>\n\n\t\t\t\t\t<MentionEditor\n\t\t\t\t\t\tdata-test=\"subagent-instructions\"\n\t\t\t\t\t\tlabel=\"Instructions\"\n\t\t\t\t\t\tvalue={instructions}\n\t\t\t\t\t\tonChange={setInstructions}\n\t\t\t\t\t\tmaxLength={AGENT_CHAR_LIMITS.instructions}\n\t\t\t\t\t\tplaceholder=\"Write the steps in plain English. Type @ to reference a tool.\"\n\t\t\t\t\t\tminHeight=\"160px\"\n\t\t\t\t\t\tresetKey={`instr-${instrKey}`}\n\t\t\t\t\t\tmentionItems={mentionItems}\n\t\t\t\t\t\ttools={availableTools}\n\t\t\t\t\t\tonMentionSelect={addToolMention}\n\t\t\t\t\t\tonFocus={focusInstr}\n\t\t\t\t\t\tregisterInsert={registerInstr}\n\t\t\t\t\t/>\n\n\t\t\t\t\t<MentionEditor\n\t\t\t\t\t\tdata-test=\"subagent-guardrail\"\n\t\t\t\t\t\tlabel=\"Guardrails\"\n\t\t\t\t\t\tvalue={guardrail}\n\t\t\t\t\t\tonChange={setGuardrail}\n\t\t\t\t\t\tmaxLength={AGENT_CHAR_LIMITS.guardrail}\n\t\t\t\t\t\tplaceholder=\"e.g. Never discuss competitor pricing. Type @ to reference a tool.\"\n\t\t\t\t\t\tminHeight=\"160px\"\n\t\t\t\t\t\tresetKey={`guard-${guardKey}`}\n\t\t\t\t\t\tmentionItems={mentionItems}\n\t\t\t\t\t\ttools={availableTools}\n\t\t\t\t\t\tonMentionSelect={addToolMention}\n\t\t\t\t\t\tonFocus={focusGuard}\n\t\t\t\t\t\tregisterInsert={registerGuard}\n\t\t\t\t\t/>\n\n\t\t\t\t\t<SelectableListSection\n\t\t\t\t\t\ttitle=\"Tools this agent can use\"\n\t\t\t\t\t\tdataTestPrefix=\"subagent-tools\"\n\t\t\t\t\t\titems={toolItems}\n\t\t\t\t\t\taddableOptions={toolOptions}\n\t\t\t\t\t\temptyText=\"No tools added yet.\"\n\t\t\t\t\t\tonAdd={(id) => {\n\t\t\t\t\t\t\tinsertToolAtCursor(id);\n\t\t\t\t\t\t\tsetTools((prev) => (prev.includes(id) ? prev : [...prev, id]));\n\t\t\t\t\t\t}}\n\t\t\t\t\t\tonRemove={removeTool}\n\t\t\t\t\t/>\n\t\t\t\t</SubAgentPanelBody>\n\n\t\t\t\t<SubAgentPanelFooter>\n\t\t\t\t\t<Button\n\t\t\t\t\t\tdata-test=\"subagent-save\"\n\t\t\t\t\t\tbuttonType=\"primary\"\n\t\t\t\t\t\tsize=\"small\"\n\t\t\t\t\t\tbuttonText=\"Save\"\n\t\t\t\t\t\tdisabled={!canSave}\n\t\t\t\t\t\tisLoading={saving}\n\t\t\t\t\t\tonClick={handleSave}\n\t\t\t\t\t/>\n\t\t\t\t\t<Button\n\t\t\t\t\t\tdata-test=\"subagent-cancel\"\n\t\t\t\t\t\tbuttonType=\"secondary\"\n\t\t\t\t\t\tsize=\"small\"\n\t\t\t\t\t\tbuttonText=\"Cancel\"\n\t\t\t\t\t\tonClick={onClose}\n\t\t\t\t\t/>\n\t\t\t\t</SubAgentPanelFooter>\n\t\t\t</SubAgentPanel>\n\n\t\t\t{undo && (\n\t\t\t\t<Toaster\n\t\t\t\t\tkey={undo.id}\n\t\t\t\t\ttext={undo.message}\n\t\t\t\t\ttype=\"info\"\n\t\t\t\t\tposition=\"top-right\"\n\t\t\t\t\tautoClose={5000}\n\t\t\t\t\thideCloseButton\n\t\t\t\t\tbuttonProps={{\n\t\t\t\t\t\tbuttonText: 'Undo',\n\t\t\t\t\t\tshowButton: true,\n\t\t\t\t\t\tonButtonClick: () => {\n\t\t\t\t\t\t\tundoRemove();\n\t\t\t\t\t\t\treturn {} as Record<string, never>;\n\t\t\t\t\t\t},\n\t\t\t\t\t}}\n\t\t\t\t\tonCloseToast={() => setUndo(null)}\n\t\t\t\t/>\n\t\t\t)}\n\t\t</>\n\t);\n};\n"],"names":["CreateSubAgentPanel","onClose","onSave","availableTools","onImprove","title","initial","appLabel","name","setName","useState","instructions","setInstructions","guardrail","setGuardrail","tools","setTools","saving","setSaving","instrKey","setInstrKey","guardKey","setGuardKey","improving","setImproving","mentionItems","useMemo","buildAgentMentionItems","insertersRef","useRef","lastFocusedRef","registerInstr","useCallback","fn","registerGuard","focusInstr","focusGuard","addToolMention","kind","id","prev","insertToolAtCursor","undo","setUndo","undoSnapshotRef","undoIdRef","removeTool","tool","t","token","strip","text","k","undoRemove","snap","canSave","toolItems","SOURCE_ICONS","x","toolOptions","ic","React","handleSave","result","jsxs","Fragment","jsx","SubAgentScrim","SubAgentPanel","SubAgentPanelHeader","SubAgentPanelHeaderText","TitleRegular","COLORS","BodySecondary","SubAgentCloseButton","CrossIcon","SubAgentPanelBody","Input","AGENT_CHAR_LIMITS","MentionEditor","SelectableListSection","SubAgentPanelFooter","Button","Toaster"],"mappings":"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"}
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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"}
@@ -3,6 +3,10 @@ import { default as React } from 'react';
3
3
  type MentionPickerProps = MentionDropdownRenderProps & {
4
4
  /** Opens the create-sub-agent drawer (shows a "Create new" row in the Sub-agent view). */
5
5
  onCreateSubAgent?: () => void;
6
+ /**
7
+ * Open already drilled into this tool source (e.g. `'shopify'`) — its tool list
8
+ * is shown immediately. */
9
+ initialSource?: string;
6
10
  };
7
11
  /**
8
12
  * `@` reference picker. Drills: