@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.
- package/dist/cjs/components/agent-builder/AgentBuilder.js +1 -1
- package/dist/cjs/components/agent-builder/AgentBuilder.js.map +1 -1
- package/dist/cjs/components/agent-builder/AgentBuilder.styled.js +66 -90
- package/dist/cjs/components/agent-builder/AgentBuilder.styled.js.map +1 -1
- package/dist/cjs/components/agent-builder/components/CreateSubAgentPanel.js +1 -1
- package/dist/cjs/components/agent-builder/components/CreateSubAgentPanel.js.map +1 -1
- package/dist/cjs/components/agent-builder/components/MentionPicker.js +19 -19
- package/dist/cjs/components/agent-builder/components/MentionPicker.js.map +1 -1
- package/dist/cjs/components/agent-builder/components/SelectableListSection.js +14 -1
- package/dist/cjs/components/agent-builder/components/SelectableListSection.js.map +1 -1
- package/dist/cjs/components/agent-builder/constants/charLimits.js.map +1 -1
- package/dist/cjs/components/agent-builder/context/AgentBuilderContext.js +1 -1
- package/dist/cjs/components/agent-builder/context/AgentBuilderContext.js.map +1 -1
- package/dist/cjs/components/agent-builder/steps/Step1About.js +1 -1
- package/dist/cjs/components/agent-builder/steps/Step1About.js.map +1 -1
- package/dist/cjs/components/agent-builder/steps/Step2WhenItStepsIn.js +1 -1
- package/dist/cjs/components/agent-builder/steps/Step2WhenItStepsIn.js.map +1 -1
- package/dist/cjs/components/agent-builder/steps/Step3HowItResponds.js +1 -1
- package/dist/cjs/components/agent-builder/steps/Step3HowItResponds.js.map +1 -1
- package/dist/cjs/components/agent-builder/steps/Step4HandoverRules.js +1 -1
- package/dist/cjs/components/agent-builder/steps/Step4HandoverRules.js.map +1 -1
- package/dist/cjs/components/agent-builder/utils/sourceIcons.js +1 -1
- package/dist/cjs/components/agent-builder/utils/sourceIcons.js.map +1 -1
- package/dist/cjs/components/agent-listing/AgentListing.js +1 -1
- package/dist/cjs/components/agent-listing/AgentListing.js.map +1 -1
- package/dist/cjs/components/agent-listing/AgentListingFilters.js +1 -1
- package/dist/cjs/components/agent-listing/AgentListingFilters.js.map +1 -1
- package/dist/cjs/components/dropdown/utils.js +2 -0
- package/dist/cjs/components/dropdown/utils.js.map +1 -0
- package/dist/cjs/index.js +1 -1
- package/dist/cjs/utils/arrayUtils.js +2 -0
- package/dist/cjs/utils/arrayUtils.js.map +1 -0
- package/dist/esm/components/agent-builder/AgentBuilder.js +67 -65
- package/dist/esm/components/agent-builder/AgentBuilder.js.map +1 -1
- package/dist/esm/components/agent-builder/AgentBuilder.model.d.ts +7 -0
- package/dist/esm/components/agent-builder/AgentBuilder.styled.js +117 -141
- package/dist/esm/components/agent-builder/AgentBuilder.styled.js.map +1 -1
- package/dist/esm/components/agent-builder/components/CreateSubAgentPanel.d.ts +3 -0
- package/dist/esm/components/agent-builder/components/CreateSubAgentPanel.js +95 -96
- package/dist/esm/components/agent-builder/components/CreateSubAgentPanel.js.map +1 -1
- package/dist/esm/components/agent-builder/components/MentionPicker.d.ts +4 -0
- package/dist/esm/components/agent-builder/components/MentionPicker.js +64 -69
- package/dist/esm/components/agent-builder/components/MentionPicker.js.map +1 -1
- package/dist/esm/components/agent-builder/components/SelectableListSection.d.ts +10 -0
- package/dist/esm/components/agent-builder/components/SelectableListSection.js +161 -106
- package/dist/esm/components/agent-builder/components/SelectableListSection.js.map +1 -1
- package/dist/esm/components/agent-builder/constants/charLimits.d.ts +6 -0
- package/dist/esm/components/agent-builder/constants/charLimits.js.map +1 -1
- package/dist/esm/components/agent-builder/context/AgentBuilderContext.d.ts +4 -0
- package/dist/esm/components/agent-builder/context/AgentBuilderContext.js +126 -120
- package/dist/esm/components/agent-builder/context/AgentBuilderContext.js.map +1 -1
- package/dist/esm/components/agent-builder/index.d.ts +1 -0
- package/dist/esm/components/agent-builder/steps/Step1About.js +6 -7
- package/dist/esm/components/agent-builder/steps/Step1About.js.map +1 -1
- package/dist/esm/components/agent-builder/steps/Step2WhenItStepsIn.js +59 -59
- package/dist/esm/components/agent-builder/steps/Step2WhenItStepsIn.js.map +1 -1
- package/dist/esm/components/agent-builder/steps/Step3HowItResponds.js +114 -109
- package/dist/esm/components/agent-builder/steps/Step3HowItResponds.js.map +1 -1
- package/dist/esm/components/agent-builder/steps/Step4HandoverRules.js +26 -27
- package/dist/esm/components/agent-builder/steps/Step4HandoverRules.js.map +1 -1
- package/dist/esm/components/agent-builder/utils/sourceIcons.d.ts +6 -0
- package/dist/esm/components/agent-builder/utils/sourceIcons.js +12 -7
- package/dist/esm/components/agent-builder/utils/sourceIcons.js.map +1 -1
- package/dist/esm/components/agent-listing/AgentListing.js +91 -90
- package/dist/esm/components/agent-listing/AgentListing.js.map +1 -1
- package/dist/esm/components/agent-listing/AgentListingFilters.js +31 -30
- package/dist/esm/components/agent-listing/AgentListingFilters.js.map +1 -1
- package/dist/esm/components/dropdown/index.d.ts +1 -0
- package/dist/esm/components/dropdown/utils.d.ts +9 -0
- package/dist/esm/components/dropdown/utils.js +5 -0
- package/dist/esm/components/dropdown/utils.js.map +1 -0
- package/dist/esm/index.js +10 -8
- package/dist/esm/index.js.map +1 -1
- package/dist/esm/utils/arrayUtils.d.ts +7 -0
- package/dist/esm/utils/arrayUtils.js +5 -0
- package/dist/esm/utils/arrayUtils.js.map +1 -0
- package/package.json +1 -1
|
@@ -1,97 +1,96 @@
|
|
|
1
|
-
import { jsxs as a, Fragment as
|
|
2
|
-
import
|
|
3
|
-
import
|
|
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
|
|
8
|
-
import { buildAgentMentionItems as
|
|
9
|
-
import { SOURCE_ICONS as
|
|
10
|
-
import { MentionEditor as
|
|
11
|
-
import { SelectableListSection as
|
|
12
|
-
import { Input as
|
|
13
|
-
import { Button as
|
|
14
|
-
import { Toaster as
|
|
15
|
-
const
|
|
16
|
-
onClose:
|
|
17
|
-
onSave:
|
|
18
|
-
availableTools:
|
|
19
|
-
onImprove:
|
|
20
|
-
title:
|
|
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 [
|
|
25
|
-
() =>
|
|
26
|
-
[
|
|
27
|
-
), g = p({}),
|
|
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
|
-
|
|
35
|
-
}, []),
|
|
34
|
+
x.current = "instructions";
|
|
35
|
+
}, []), J = l(() => {
|
|
36
|
+
x.current = "guardrail";
|
|
37
|
+
}, []), O = l(
|
|
36
38
|
(t, e) => {
|
|
37
|
-
t === "tool" && m((
|
|
39
|
+
t === "tool" && m((i) => K(i, e));
|
|
38
40
|
},
|
|
39
41
|
[]
|
|
40
|
-
),
|
|
41
|
-
(g.current[
|
|
42
|
-
}, []), [
|
|
42
|
+
), Q = l((t) => {
|
|
43
|
+
(g.current[x.current] ?? g.current.instructions)?.("tool", t);
|
|
44
|
+
}, []), [T, I] = r(
|
|
43
45
|
null
|
|
44
|
-
),
|
|
45
|
-
const e =
|
|
46
|
-
|
|
47
|
-
id:
|
|
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
|
-
},
|
|
51
|
-
const t =
|
|
52
|
-
t && (
|
|
53
|
-
},
|
|
54
|
-
const e =
|
|
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:
|
|
60
|
+
icon: F[e.source ?? "manifest"]
|
|
59
61
|
} : null;
|
|
60
|
-
}).filter((t) => t !== null),
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
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 =
|
|
71
|
-
name:
|
|
69
|
+
const t = U({
|
|
70
|
+
name: b.trim(),
|
|
72
71
|
instructions: u,
|
|
73
72
|
guardrail: d,
|
|
74
|
-
tools:
|
|
73
|
+
tools: C
|
|
75
74
|
});
|
|
76
75
|
if (t && typeof t.then == "function") {
|
|
77
|
-
|
|
76
|
+
_(!0);
|
|
78
77
|
try {
|
|
79
78
|
await t;
|
|
80
79
|
} finally {
|
|
81
|
-
|
|
80
|
+
_(!1);
|
|
82
81
|
}
|
|
83
82
|
}
|
|
84
83
|
};
|
|
85
|
-
return /* @__PURE__ */ a(
|
|
86
|
-
/* @__PURE__ */ o(at, { onClick:
|
|
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:
|
|
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:
|
|
94
|
-
|
|
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
|
-
|
|
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:
|
|
111
|
-
maxCharLimit:
|
|
109
|
+
value: b,
|
|
110
|
+
maxCharLimit: h.name,
|
|
112
111
|
maxCharLimitPosition: "TOP",
|
|
113
112
|
maxCharStyle: { fontSize: 12, lineHeight: "16px" },
|
|
114
|
-
onChangeText:
|
|
113
|
+
onChangeText: $
|
|
115
114
|
}
|
|
116
115
|
),
|
|
117
116
|
/* @__PURE__ */ o(
|
|
118
|
-
|
|
117
|
+
L,
|
|
119
118
|
{
|
|
120
119
|
"data-test": "subagent-instructions",
|
|
121
120
|
label: "Instructions",
|
|
122
121
|
value: u,
|
|
123
|
-
onChange:
|
|
124
|
-
maxLength:
|
|
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-${
|
|
126
|
+
resetKey: `instr-${w}`,
|
|
128
127
|
mentionItems: M,
|
|
129
|
-
tools:
|
|
130
|
-
onMentionSelect:
|
|
131
|
-
onFocus:
|
|
132
|
-
registerInsert:
|
|
128
|
+
tools: s,
|
|
129
|
+
onMentionSelect: O,
|
|
130
|
+
onFocus: D,
|
|
131
|
+
registerInsert: q
|
|
133
132
|
}
|
|
134
133
|
),
|
|
135
134
|
/* @__PURE__ */ o(
|
|
136
|
-
|
|
135
|
+
L,
|
|
137
136
|
{
|
|
138
137
|
"data-test": "subagent-guardrail",
|
|
139
138
|
label: "Guardrails",
|
|
140
139
|
value: d,
|
|
141
|
-
onChange:
|
|
142
|
-
maxLength:
|
|
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:
|
|
148
|
-
onMentionSelect:
|
|
149
|
-
onFocus:
|
|
146
|
+
tools: s,
|
|
147
|
+
onMentionSelect: O,
|
|
148
|
+
onFocus: J,
|
|
150
149
|
registerInsert: W
|
|
151
150
|
}
|
|
152
151
|
),
|
|
153
152
|
/* @__PURE__ */ o(
|
|
154
|
-
|
|
153
|
+
bt,
|
|
155
154
|
{
|
|
156
155
|
title: "Tools this agent can use",
|
|
157
156
|
dataTestPrefix: "subagent-tools",
|
|
158
|
-
items:
|
|
159
|
-
addableOptions:
|
|
157
|
+
items: Y,
|
|
158
|
+
addableOptions: Z,
|
|
160
159
|
emptyText: "No tools added yet.",
|
|
161
160
|
onAdd: (t) => {
|
|
162
|
-
|
|
161
|
+
Q(t), m((e) => K(e, t));
|
|
163
162
|
},
|
|
164
|
-
onRemove:
|
|
163
|
+
onRemove: V
|
|
165
164
|
}
|
|
166
165
|
)
|
|
167
166
|
] }),
|
|
168
167
|
/* @__PURE__ */ a(gt, { children: [
|
|
169
168
|
/* @__PURE__ */ o(
|
|
170
|
-
|
|
169
|
+
N,
|
|
171
170
|
{
|
|
172
171
|
"data-test": "subagent-save",
|
|
173
172
|
buttonType: "primary",
|
|
174
173
|
size: "small",
|
|
175
174
|
buttonText: "Save",
|
|
176
|
-
disabled: !
|
|
177
|
-
isLoading:
|
|
178
|
-
onClick:
|
|
175
|
+
disabled: !G,
|
|
176
|
+
isLoading: P,
|
|
177
|
+
onClick: tt
|
|
179
178
|
}
|
|
180
179
|
),
|
|
181
180
|
/* @__PURE__ */ o(
|
|
182
|
-
|
|
181
|
+
N,
|
|
183
182
|
{
|
|
184
183
|
"data-test": "subagent-cancel",
|
|
185
184
|
buttonType: "secondary",
|
|
186
185
|
size: "small",
|
|
187
186
|
buttonText: "Cancel",
|
|
188
|
-
onClick:
|
|
187
|
+
onClick: f
|
|
189
188
|
}
|
|
190
189
|
)
|
|
191
190
|
] })
|
|
192
191
|
] }),
|
|
193
|
-
|
|
194
|
-
|
|
192
|
+
T && /* @__PURE__ */ o(
|
|
193
|
+
St,
|
|
195
194
|
{
|
|
196
|
-
text:
|
|
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: () => (
|
|
203
|
+
onButtonClick: () => (X(), {})
|
|
205
204
|
},
|
|
206
|
-
onCloseToast: () =>
|
|
205
|
+
onCloseToast: () => I(null)
|
|
207
206
|
},
|
|
208
|
-
|
|
207
|
+
T.id
|
|
209
208
|
)
|
|
210
209
|
] });
|
|
211
210
|
};
|
|
212
211
|
export {
|
|
213
|
-
|
|
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:
|