@bikdotai/bik-component-library 0.0.849-beta.2 → 0.0.849-beta.3
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/components/ConfigToolPanel.js +11 -11
- package/dist/cjs/components/agent-builder/components/ConfigToolPanel.js.map +1 -1
- package/dist/cjs/components/agent-builder/components/CreateSubAgentPanel.js +5 -5
- package/dist/cjs/components/agent-builder/components/CreateSubAgentPanel.js.map +1 -1
- package/dist/cjs/components/agent-builder/components/RestApiToolPanel.js +7 -7
- package/dist/cjs/components/agent-builder/components/RestApiToolPanel.js.map +1 -1
- package/dist/cjs/components/agent-builder/components/ToolInstructionsField.js +2 -2
- package/dist/cjs/components/agent-builder/components/ToolInstructionsField.js.map +1 -1
- package/dist/cjs/components/agent-builder/components/VariableTriggerArea.js +9 -0
- package/dist/cjs/components/agent-builder/components/VariableTriggerArea.js.map +1 -0
- 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/editor/extensions/mention/MentionDropdown.js +1 -1
- package/dist/cjs/editor/extensions/mention/MentionDropdown.js.map +1 -1
- package/dist/cjs/editor/extensions/mention/MentionExtension.js +1 -1
- package/dist/cjs/editor/extensions/mention/MentionExtension.js.map +1 -1
- package/dist/esm/components/agent-builder/components/ConfigToolPanel.d.ts +8 -0
- package/dist/esm/components/agent-builder/components/ConfigToolPanel.js +151 -124
- package/dist/esm/components/agent-builder/components/ConfigToolPanel.js.map +1 -1
- package/dist/esm/components/agent-builder/components/CreateSubAgentPanel.js +90 -88
- package/dist/esm/components/agent-builder/components/CreateSubAgentPanel.js.map +1 -1
- package/dist/esm/components/agent-builder/components/RestApiToolPanel.d.ts +7 -0
- package/dist/esm/components/agent-builder/components/RestApiToolPanel.js +174 -133
- package/dist/esm/components/agent-builder/components/RestApiToolPanel.js.map +1 -1
- package/dist/esm/components/agent-builder/components/ToolInstructionsField.d.ts +9 -0
- package/dist/esm/components/agent-builder/components/ToolInstructionsField.js +65 -47
- package/dist/esm/components/agent-builder/components/ToolInstructionsField.js.map +1 -1
- package/dist/esm/components/agent-builder/components/VariableTriggerArea.d.ts +27 -0
- package/dist/esm/components/agent-builder/components/VariableTriggerArea.js +70 -0
- package/dist/esm/components/agent-builder/components/VariableTriggerArea.js.map +1 -0
- package/dist/esm/components/agent-builder/steps/Step3HowItResponds.js +93 -91
- package/dist/esm/components/agent-builder/steps/Step3HowItResponds.js.map +1 -1
- package/dist/esm/editor/extensions/mention/MentionDropdown.js +19 -19
- package/dist/esm/editor/extensions/mention/MentionDropdown.js.map +1 -1
- package/dist/esm/editor/extensions/mention/MentionExtension.js +15 -15
- package/dist/esm/editor/extensions/mention/MentionExtension.js.map +1 -1
- package/package.json +1 -1
|
@@ -1,33 +1,33 @@
|
|
|
1
1
|
import { jsxs as d, jsx as i, Fragment as He } from "react/jsx-runtime";
|
|
2
|
-
import { useState as k, useRef as
|
|
3
|
-
import { TitleSmall as
|
|
2
|
+
import { useState as k, useRef as ee, useCallback as s, useEffect as W } from "react";
|
|
3
|
+
import { TitleSmall as oe, BodyCaption as Le, BodySecondary as te } from "../../TypographyStyle.js";
|
|
4
4
|
import { COLORS as A } from "../../../constants/Theme.js";
|
|
5
|
-
import { Step3Root as Ke, Step3Grid as qe, SectionBodyWrap as
|
|
5
|
+
import { Step3Root as Ke, Step3Grid as qe, SectionBodyWrap as ne, Step3Divider as Be, SideSection as ie, SideSectionHeader as Fe } from "../AgentBuilder.styled.js";
|
|
6
6
|
import { ConfigToolPanel as Ge } from "../components/ConfigToolPanel.js";
|
|
7
7
|
import { CreateSubAgentPanel as Ue } from "../components/CreateSubAgentPanel.js";
|
|
8
|
-
import { MentionField as
|
|
8
|
+
import { MentionField as le } from "../components/MentionField.js";
|
|
9
9
|
import { RequireVerificationModal as We } from "../components/RequireVerificationModal.js";
|
|
10
10
|
import { RestApiToolPanel as ze } from "../components/RestApiToolPanel.js";
|
|
11
|
-
import { SelectableListSection as
|
|
11
|
+
import { SelectableListSection as ae } from "../components/SelectableListSection.js";
|
|
12
12
|
import { StepSectionHeader as Ve } from "../components/StepSectionHeader.js";
|
|
13
13
|
import { STEP_DEFINITIONS as je } from "../constants/steps.js";
|
|
14
14
|
import { CONFIG_TOOL_SOURCES as $e, ToolSource as S } from "../constants/tools.js";
|
|
15
15
|
import { useAgentBuilderContext as Je } from "../context/AgentBuilderContext.js";
|
|
16
|
-
import { restApiMentionItem as Qe, configToolMentionItem as Xe, restApiToolName as Ye, configToolName as Ze, toolSourceLabel as eo, buildAgentMentionItems as
|
|
17
|
-
import { sourceIcon as
|
|
16
|
+
import { restApiMentionItem as Qe, configToolMentionItem as Xe, restApiToolName as Ye, configToolName as Ze, toolSourceLabel as eo, buildAgentMentionItems as se, buildCustomToolMentionItems as oo, appTypeLabel as re } from "../utils/mentionSerialization.js";
|
|
17
|
+
import { sourceIcon as ge, SOURCE_ICONS as ce, renderSourceIcon as to } from "../utils/sourceIcons.js";
|
|
18
18
|
import { buildToolActions as no } from "../utils/toolActions.js";
|
|
19
19
|
import io from "../../../icons/Informational/Common UI/Shield.js";
|
|
20
20
|
import { Switch as lo } from "../../switch/Switch.js";
|
|
21
|
-
import { Dropdown as
|
|
22
|
-
import { unwrapDropdownValue as
|
|
23
|
-
const ao = (t) => to(
|
|
21
|
+
import { Dropdown as de } from "../../dropdown/Dropdown.js";
|
|
22
|
+
import { unwrapDropdownValue as ue } from "../../dropdown/utils.js";
|
|
23
|
+
const ao = (t) => to(ge(t)) ?? void 0, pe = (t) => ({
|
|
24
24
|
label: t.display_name,
|
|
25
25
|
value: t.tool_id,
|
|
26
26
|
leadingIcon: ao(t.source ?? S.Manifest)
|
|
27
|
-
}),
|
|
27
|
+
}), me = je[2], z = [
|
|
28
28
|
{ label: "OTP to phone", value: "phone_otp" },
|
|
29
29
|
{ label: "OTP to email", value: "email_otp" }
|
|
30
|
-
],
|
|
30
|
+
], fe = (t, l) => {
|
|
31
31
|
const y = t ?? [];
|
|
32
32
|
return y.some((u) => u.id === l.id) ? y.map((u) => u.id === l.id ? l : u) : [...y, l];
|
|
33
33
|
}, Mo = () => {
|
|
@@ -36,31 +36,31 @@ const ao = (t) => to(fe(t)) ?? void 0, ue = (t) => ({
|
|
|
36
36
|
patch: l,
|
|
37
37
|
updateField: y,
|
|
38
38
|
addReference: u,
|
|
39
|
-
removeReference:
|
|
39
|
+
removeReference: V,
|
|
40
40
|
availableTools: r,
|
|
41
|
-
availableSubAgents:
|
|
41
|
+
availableSubAgents: he,
|
|
42
42
|
availableModels: M,
|
|
43
43
|
configToolTemplates: x,
|
|
44
|
-
applicationType:
|
|
44
|
+
applicationType: j,
|
|
45
45
|
charLimits: T,
|
|
46
46
|
insertMention: c,
|
|
47
47
|
onCreateSubAgent: m,
|
|
48
48
|
onFetchSubAgent: I,
|
|
49
49
|
onUpdateSubAgent: E,
|
|
50
|
-
onImproveSubAgent:
|
|
50
|
+
onImproveSubAgent: be,
|
|
51
51
|
onImproveToolInstructions: N,
|
|
52
52
|
registerSubAgentCreator: P,
|
|
53
53
|
registerToolActionHandler: D,
|
|
54
|
-
integrationStatus:
|
|
55
|
-
onConnectIntegration:
|
|
56
|
-
variablesData:
|
|
57
|
-
} = Je(), [p, C] = k(null), w =
|
|
54
|
+
integrationStatus: $,
|
|
55
|
+
onConnectIntegration: J,
|
|
56
|
+
variablesData: H
|
|
57
|
+
} = Je(), [p, C] = k(null), w = ee(0), [a, f] = k(null), O = ee(0), L = s((e) => {
|
|
58
58
|
O.current += 1, f({
|
|
59
59
|
key: O.current,
|
|
60
60
|
kind: "restapi",
|
|
61
61
|
initialRest: e
|
|
62
62
|
});
|
|
63
|
-
}, []),
|
|
63
|
+
}, []), K = s(
|
|
64
64
|
(e, o) => {
|
|
65
65
|
O.current += 1, f({
|
|
66
66
|
key: O.current,
|
|
@@ -73,32 +73,32 @@ const ao = (t) => to(fe(t)) ?? void 0, ue = (t) => ({
|
|
|
73
73
|
), Se = s(
|
|
74
74
|
(e) => {
|
|
75
75
|
const o = !(t.restApiTools ?? []).some((n) => n.id === e.id);
|
|
76
|
-
l({ restApiTools:
|
|
76
|
+
l({ restApiTools: fe(t.restApiTools, e) }), o && c("tool", e.id, Qe(e).label), f(null);
|
|
77
77
|
},
|
|
78
78
|
[l, t.restApiTools, c]
|
|
79
79
|
), ye = s(
|
|
80
80
|
(e) => {
|
|
81
81
|
const o = !(t.configTools ?? []).some((n) => n.id === e.id);
|
|
82
|
-
l({ configTools:
|
|
82
|
+
l({ configTools: fe(t.configTools, e) }), o && c("tool", e.id, Xe(e).label), f(null);
|
|
83
83
|
},
|
|
84
84
|
[l, t.configTools, c]
|
|
85
|
-
),
|
|
85
|
+
), q = s(
|
|
86
86
|
(e) => {
|
|
87
87
|
const o = $e[e];
|
|
88
|
-
o ?
|
|
88
|
+
o ? K(o) : L();
|
|
89
89
|
},
|
|
90
|
-
[
|
|
90
|
+
[K, L]
|
|
91
91
|
);
|
|
92
|
-
|
|
93
|
-
const [Te,
|
|
94
|
-
|
|
95
|
-
const
|
|
92
|
+
W(() => (D(q), () => D(null)), [D, q]);
|
|
93
|
+
const [Te, Q] = k([]), R = /* @__PURE__ */ new Map();
|
|
94
|
+
he.forEach((e) => R.set(e.id, e)), Te.forEach((e) => R.set(e.id, e));
|
|
95
|
+
const X = Array.from(R.values()), B = s(() => {
|
|
96
96
|
w.current += 1, C({ key: w.current, title: "Create sub-agent" });
|
|
97
97
|
}, []);
|
|
98
|
-
|
|
98
|
+
W(() => {
|
|
99
99
|
if (m)
|
|
100
|
-
return P(
|
|
101
|
-
}, [P,
|
|
100
|
+
return P(B), () => P(null);
|
|
101
|
+
}, [P, B, m]);
|
|
102
102
|
const ve = s(
|
|
103
103
|
async (e) => {
|
|
104
104
|
if (!I)
|
|
@@ -117,14 +117,14 @@ const ao = (t) => to(fe(t)) ?? void 0, ue = (t) => ({
|
|
|
117
117
|
if (p?.editingId) {
|
|
118
118
|
if (E) {
|
|
119
119
|
const o = await E(p.editingId, e);
|
|
120
|
-
|
|
120
|
+
Q((n) => [
|
|
121
121
|
...n.filter((b) => b.id !== o.id),
|
|
122
122
|
o
|
|
123
123
|
]);
|
|
124
124
|
}
|
|
125
125
|
} else if (m) {
|
|
126
126
|
const o = await m(e);
|
|
127
|
-
|
|
127
|
+
Q((n) => [...n, o]), l({ subagents: [...t.subagents, o.id] }), c("subagent", o.id, `sub-agent: ${o.name}`);
|
|
128
128
|
}
|
|
129
129
|
C(null);
|
|
130
130
|
},
|
|
@@ -139,10 +139,10 @@ const ao = (t) => to(fe(t)) ?? void 0, ue = (t) => ({
|
|
|
139
139
|
), g = t.tools.some(
|
|
140
140
|
(e) => r.find((o) => o.tool_id === e)?.auth_required
|
|
141
141
|
), h = t.authentication?.enabled ?? !1, v = t.authentication?.type ?? "email_otp";
|
|
142
|
-
|
|
142
|
+
W(() => {
|
|
143
143
|
g && !h && l({ authentication: { enabled: !0, type: v } });
|
|
144
144
|
}, [g, h, v, l]);
|
|
145
|
-
const [_,
|
|
145
|
+
const [_, F] = k(null), G = s(
|
|
146
146
|
(e) => {
|
|
147
147
|
c("tool", e), u("tool", e);
|
|
148
148
|
},
|
|
@@ -150,33 +150,33 @@ const ao = (t) => to(fe(t)) ?? void 0, ue = (t) => ({
|
|
|
150
150
|
), Ie = s(
|
|
151
151
|
(e) => {
|
|
152
152
|
if (r.find((n) => n.tool_id === e)?.auth_required && !h) {
|
|
153
|
-
|
|
153
|
+
F(e);
|
|
154
154
|
return;
|
|
155
155
|
}
|
|
156
|
-
|
|
156
|
+
G(e);
|
|
157
157
|
},
|
|
158
|
-
[r, h,
|
|
158
|
+
[r, h, G]
|
|
159
159
|
), Ce = t.tools.map((e) => {
|
|
160
160
|
const o = r.find((n) => n.tool_id === e);
|
|
161
161
|
return o ? {
|
|
162
162
|
id: e,
|
|
163
163
|
label: o.display_name,
|
|
164
|
-
icon:
|
|
164
|
+
icon: ge(o.source ?? S.Manifest),
|
|
165
165
|
authRequired: o.auth_required
|
|
166
166
|
} : null;
|
|
167
167
|
}).filter((e) => e !== null), we = (t.restApiTools ?? []).map(
|
|
168
168
|
(e) => ({
|
|
169
169
|
id: e.id,
|
|
170
170
|
label: Ye(e),
|
|
171
|
-
icon:
|
|
172
|
-
onConfigure: () =>
|
|
171
|
+
icon: ce[S.RestApi],
|
|
172
|
+
onConfigure: () => L(e)
|
|
173
173
|
})
|
|
174
174
|
), Oe = (t.configTools ?? []).map(
|
|
175
175
|
(e) => ({
|
|
176
176
|
id: e.id,
|
|
177
177
|
label: Ze(e),
|
|
178
|
-
icon:
|
|
179
|
-
onConfigure: () =>
|
|
178
|
+
icon: ce[e.tool_key === "send_slack_message" ? S.Slack : S.EmailHandover],
|
|
179
|
+
onConfigure: () => K(e.tool_key, e)
|
|
180
180
|
})
|
|
181
181
|
), Re = [
|
|
182
182
|
...Ce,
|
|
@@ -184,47 +184,47 @@ const ao = (t) => to(fe(t)) ?? void 0, ue = (t) => ({
|
|
|
184
184
|
...Oe
|
|
185
185
|
], _e = no(
|
|
186
186
|
x,
|
|
187
|
-
|
|
188
|
-
|
|
189
|
-
|
|
190
|
-
), ke = r.map(
|
|
187
|
+
q,
|
|
188
|
+
$,
|
|
189
|
+
J
|
|
190
|
+
), ke = r.map(pe), Me = (() => {
|
|
191
191
|
const e = [], o = /* @__PURE__ */ new Map();
|
|
192
192
|
return r.forEach((n) => {
|
|
193
193
|
const b = n.source ?? S.Manifest;
|
|
194
|
-
o.has(b) || (o.set(b, []), e.push(b)), o.get(b)?.push(
|
|
194
|
+
o.has(b) || (o.set(b, []), e.push(b)), o.get(b)?.push(pe(n));
|
|
195
195
|
}), e.map((n) => ({
|
|
196
196
|
source: n,
|
|
197
197
|
label: eo(n),
|
|
198
198
|
options: o.get(n) ?? [],
|
|
199
199
|
// Not connected → the source button opens the connect flow instead of
|
|
200
200
|
// its tool list (see SelectableListSection / onConnectIntegration).
|
|
201
|
-
connected:
|
|
202
|
-
onConnect: () =>
|
|
201
|
+
connected: $?.[n],
|
|
202
|
+
onConnect: () => J?.(n)
|
|
203
203
|
}));
|
|
204
204
|
})(), xe = t.subagents.map((e) => {
|
|
205
205
|
const o = R.get(e);
|
|
206
206
|
return o ? { id: e, label: o.name } : null;
|
|
207
|
-
}).filter((e) => e !== null), Ee =
|
|
207
|
+
}).filter((e) => e !== null), Ee = X.map((e) => ({
|
|
208
208
|
label: e.name,
|
|
209
209
|
value: e.id
|
|
210
|
-
})),
|
|
211
|
-
...
|
|
210
|
+
})), Y = re(j), Ne = [
|
|
211
|
+
...se(r, [], Y),
|
|
212
212
|
...oo(t.configTools, t.restApiTools)
|
|
213
|
-
], Pe =
|
|
213
|
+
], Pe = se(
|
|
214
214
|
[],
|
|
215
|
-
|
|
216
|
-
|
|
215
|
+
X,
|
|
216
|
+
Y
|
|
217
217
|
), De = M.map((e) => ({
|
|
218
218
|
label: e.label,
|
|
219
219
|
value: e.value,
|
|
220
220
|
selected: e.value === t.model
|
|
221
|
-
})),
|
|
221
|
+
})), U = M.find((e) => e.value === t.model), Z = a?.kind === "config" && a.toolKey ? x?.[a.toolKey] : void 0;
|
|
222
222
|
return /* @__PURE__ */ d(Ke, { children: [
|
|
223
|
-
/* @__PURE__ */ i(Ve, { title:
|
|
223
|
+
/* @__PURE__ */ i(Ve, { title: me.title, helper: me.helper }),
|
|
224
224
|
/* @__PURE__ */ d(qe, { $grow: !0, children: [
|
|
225
|
-
/* @__PURE__ */ d(
|
|
225
|
+
/* @__PURE__ */ d(ne, { children: [
|
|
226
226
|
/* @__PURE__ */ i(
|
|
227
|
-
|
|
227
|
+
le,
|
|
228
228
|
{
|
|
229
229
|
fieldKey: "instructions",
|
|
230
230
|
"data-test": "agent-instructions",
|
|
@@ -235,7 +235,7 @@ const ao = (t) => to(fe(t)) ?? void 0, ue = (t) => ({
|
|
|
235
235
|
}
|
|
236
236
|
),
|
|
237
237
|
/* @__PURE__ */ i(
|
|
238
|
-
|
|
238
|
+
le,
|
|
239
239
|
{
|
|
240
240
|
fieldKey: "guardrail",
|
|
241
241
|
"data-test": "agent-guardrail",
|
|
@@ -247,9 +247,9 @@ const ao = (t) => to(fe(t)) ?? void 0, ue = (t) => ({
|
|
|
247
247
|
)
|
|
248
248
|
] }),
|
|
249
249
|
/* @__PURE__ */ i(Be, {}),
|
|
250
|
-
/* @__PURE__ */ d(
|
|
250
|
+
/* @__PURE__ */ d(ne, { children: [
|
|
251
251
|
/* @__PURE__ */ i(
|
|
252
|
-
|
|
252
|
+
ae,
|
|
253
253
|
{
|
|
254
254
|
title: "Tools",
|
|
255
255
|
helper: "Actions this agent can take while responding.",
|
|
@@ -261,12 +261,12 @@ const ao = (t) => to(fe(t)) ?? void 0, ue = (t) => ({
|
|
|
261
261
|
actionSources: _e,
|
|
262
262
|
emptyText: "No tools added yet.",
|
|
263
263
|
onAdd: Ie,
|
|
264
|
-
onRemove: (e) =>
|
|
264
|
+
onRemove: (e) => V("tool", e),
|
|
265
265
|
confirmDelete: { noun: "tool" }
|
|
266
266
|
}
|
|
267
267
|
),
|
|
268
268
|
/* @__PURE__ */ i(
|
|
269
|
-
|
|
269
|
+
ae,
|
|
270
270
|
{
|
|
271
271
|
title: "Sub-agents",
|
|
272
272
|
helper: "Other agents this agent can hand off the conversation to.",
|
|
@@ -278,17 +278,17 @@ const ao = (t) => to(fe(t)) ?? void 0, ue = (t) => ({
|
|
|
278
278
|
onAdd: (e) => {
|
|
279
279
|
c("subagent", e), u("subagent", e);
|
|
280
280
|
},
|
|
281
|
-
onRemove: (e) =>
|
|
281
|
+
onRemove: (e) => V("subagent", e),
|
|
282
282
|
confirmDelete: { noun: "sub-agent" },
|
|
283
283
|
onConfigure: I ? ve : void 0,
|
|
284
|
-
createOption: m ? { label: "Create new", onSelect:
|
|
284
|
+
createOption: m ? { label: "Create new", onSelect: B } : void 0
|
|
285
285
|
}
|
|
286
286
|
),
|
|
287
|
-
/* @__PURE__ */ d(
|
|
287
|
+
/* @__PURE__ */ d(ie, { children: [
|
|
288
288
|
/* @__PURE__ */ d(Fe, { children: [
|
|
289
289
|
/* @__PURE__ */ d("div", { style: { display: "flex", alignItems: "center", gap: 8 }, children: [
|
|
290
290
|
/* @__PURE__ */ i(io, { size: 20 }),
|
|
291
|
-
/* @__PURE__ */ i(
|
|
291
|
+
/* @__PURE__ */ i(oe, { color: A.content.primary, children: "Require customer verification" })
|
|
292
292
|
] }),
|
|
293
293
|
/* @__PURE__ */ i(
|
|
294
294
|
lo,
|
|
@@ -304,21 +304,21 @@ const ao = (t) => to(fe(t)) ?? void 0, ue = (t) => ({
|
|
|
304
304
|
] }),
|
|
305
305
|
/* @__PURE__ */ i(Le, { color: A.content.secondary, children: g ? "Required — this agent uses a tool that accesses customer order details." : "Customers must verify their identity before this agent responds." }),
|
|
306
306
|
(h || g) && /* @__PURE__ */ d(He, { children: [
|
|
307
|
-
/* @__PURE__ */ i(
|
|
307
|
+
/* @__PURE__ */ i(te, { color: A.content.primary, children: "Select verification method" }),
|
|
308
308
|
/* @__PURE__ */ i(
|
|
309
|
-
|
|
309
|
+
de,
|
|
310
310
|
{
|
|
311
311
|
"data-test": "agent-auth-method",
|
|
312
312
|
size: "small",
|
|
313
313
|
width: "100%",
|
|
314
314
|
dropdownWidth: "328px",
|
|
315
315
|
placeHolder: "Select verification method",
|
|
316
|
-
options:
|
|
316
|
+
options: z,
|
|
317
317
|
defaultOptions: [
|
|
318
|
-
|
|
318
|
+
z.find((e) => e.value === v) ?? z[0]
|
|
319
319
|
],
|
|
320
320
|
onSelect: (e) => {
|
|
321
|
-
const o =
|
|
321
|
+
const o = ue(e);
|
|
322
322
|
o && l({
|
|
323
323
|
authentication: {
|
|
324
324
|
enabled: !0,
|
|
@@ -330,11 +330,11 @@ const ao = (t) => to(fe(t)) ?? void 0, ue = (t) => ({
|
|
|
330
330
|
)
|
|
331
331
|
] })
|
|
332
332
|
] }),
|
|
333
|
-
M.length > 0 && /* @__PURE__ */ d(
|
|
334
|
-
/* @__PURE__ */ i(
|
|
335
|
-
/* @__PURE__ */ i(
|
|
333
|
+
M.length > 0 && /* @__PURE__ */ d(ie, { children: [
|
|
334
|
+
/* @__PURE__ */ i(oe, { color: A.content.primary, children: "Advanced settings" }),
|
|
335
|
+
/* @__PURE__ */ i(te, { color: A.content.primary, children: "Select AI model" }),
|
|
336
336
|
/* @__PURE__ */ i(
|
|
337
|
-
|
|
337
|
+
de,
|
|
338
338
|
{
|
|
339
339
|
"data-test": "agent-model",
|
|
340
340
|
size: "small",
|
|
@@ -342,14 +342,14 @@ const ao = (t) => to(fe(t)) ?? void 0, ue = (t) => ({
|
|
|
342
342
|
dropdownWidth: "328px",
|
|
343
343
|
placeHolder: "Select model",
|
|
344
344
|
options: De,
|
|
345
|
-
defaultOptions:
|
|
345
|
+
defaultOptions: U ? [
|
|
346
346
|
{
|
|
347
|
-
label:
|
|
348
|
-
value:
|
|
347
|
+
label: U.label,
|
|
348
|
+
value: U.value
|
|
349
349
|
}
|
|
350
350
|
] : void 0,
|
|
351
351
|
onSelect: (e) => {
|
|
352
|
-
const o =
|
|
352
|
+
const o = ue(e);
|
|
353
353
|
o && y("model", o);
|
|
354
354
|
}
|
|
355
355
|
}
|
|
@@ -364,10 +364,10 @@ const ao = (t) => to(fe(t)) ?? void 0, ue = (t) => ({
|
|
|
364
364
|
initial: p.initial,
|
|
365
365
|
availableTools: r,
|
|
366
366
|
configToolTemplates: x,
|
|
367
|
-
variablesData:
|
|
368
|
-
appLabel:
|
|
367
|
+
variablesData: H,
|
|
368
|
+
appLabel: re(j),
|
|
369
369
|
charLimits: T,
|
|
370
|
-
onImprove:
|
|
370
|
+
onImprove: be,
|
|
371
371
|
onImproveToolInstructions: N,
|
|
372
372
|
onClose: () => C(null),
|
|
373
373
|
onSave: Ae
|
|
@@ -379,6 +379,7 @@ const ao = (t) => to(fe(t)) ?? void 0, ue = (t) => ({
|
|
|
379
379
|
{
|
|
380
380
|
initial: a.initialRest,
|
|
381
381
|
charLimits: T,
|
|
382
|
+
variablesData: H,
|
|
382
383
|
existingNames: (t.restApiTools ?? []).filter((e) => e.id !== a.initialRest?.id).map((e) => e.name),
|
|
383
384
|
onImprove: N,
|
|
384
385
|
onClose: () => f(null),
|
|
@@ -386,13 +387,14 @@ const ao = (t) => to(fe(t)) ?? void 0, ue = (t) => ({
|
|
|
386
387
|
},
|
|
387
388
|
a.key
|
|
388
389
|
),
|
|
389
|
-
a?.kind === "config" && a.toolKey &&
|
|
390
|
+
a?.kind === "config" && a.toolKey && Z && /* @__PURE__ */ i(
|
|
390
391
|
Ge,
|
|
391
392
|
{
|
|
392
393
|
toolKey: a.toolKey,
|
|
393
|
-
template:
|
|
394
|
+
template: Z,
|
|
394
395
|
initial: a.initialConfig,
|
|
395
396
|
charLimits: T,
|
|
397
|
+
variablesData: H,
|
|
396
398
|
onImprove: N,
|
|
397
399
|
onClose: () => f(null),
|
|
398
400
|
onSave: ye
|
|
@@ -404,9 +406,9 @@ const ao = (t) => to(fe(t)) ?? void 0, ue = (t) => ({
|
|
|
404
406
|
{
|
|
405
407
|
open: _ !== null,
|
|
406
408
|
toolLabel: r.find((e) => e.tool_id === _)?.display_name ?? "This tool",
|
|
407
|
-
onCancel: () =>
|
|
409
|
+
onCancel: () => F(null),
|
|
408
410
|
onConfirm: () => {
|
|
409
|
-
l({ authentication: { enabled: !0, type: v } }), _ &&
|
|
411
|
+
l({ authentication: { enabled: !0, type: v } }), _ && G(_), F(null);
|
|
410
412
|
}
|
|
411
413
|
}
|
|
412
414
|
)
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Step3HowItResponds.js","sources":["../../../../../src/components/agent-builder/steps/Step3HowItResponds.tsx"],"sourcesContent":["import { Shield } from '@src/icons';\nimport React, { useCallback, useEffect, useRef, useState } from 'react';\nimport { Dropdown, unwrapDropdownValue } from '@src/components/dropdown';\nimport { SingleOption } from '@src/components/dropdown/type';\nimport { Switch } from '@src/components/switch';\nimport {\n\tBodyCaption,\n\tBodySecondary,\n\tTitleSmall,\n} from '@src/components/TypographyStyle';\nimport { COLORS } from '@src/constants/Theme';\nimport {\n\tAgentTool,\n\tAuthentication,\n\tConfigToolConfig,\n\tConfigToolKey,\n\tRestApiToolConfig,\n\tSubAgentDraft,\n\tSubAgentRef,\n} from '../AgentBuilder.model';\nimport {\n\tSectionBodyWrap,\n\tSideSection,\n\tSideSectionHeader,\n\tStep3Divider,\n\tStep3Grid,\n\tStep3Root,\n} from '../AgentBuilder.styled';\nimport { ConfigToolPanel } from '../components/ConfigToolPanel';\nimport { CreateSubAgentPanel } from '../components/CreateSubAgentPanel';\nimport { MentionField } from '../components/MentionField';\nimport { RequireVerificationModal } from '../components/RequireVerificationModal';\nimport { RestApiToolPanel } from '../components/RestApiToolPanel';\nimport {\n\tSelectableItem,\n\tSelectableListSection,\n\tSourceGroup,\n} from '../components/SelectableListSection';\nimport { StepSectionHeader } from '../components/StepSectionHeader';\nimport { STEP_DEFINITIONS } from '../constants/steps';\nimport { CONFIG_TOOL_SOURCES, ToolSource } from '../constants/tools';\nimport { useAgentBuilderContext } from '../context/AgentBuilderContext';\nimport {\n\tappTypeLabel,\n\tbuildAgentMentionItems,\n\tbuildCustomToolMentionItems,\n\tconfigToolMentionItem,\n\tconfigToolName,\n\trestApiMentionItem,\n\trestApiToolName,\n\ttoolSourceLabel,\n} from '../utils/mentionSerialization';\nimport {\n\trenderSourceIcon,\n\tSOURCE_ICONS,\n\tsourceIcon,\n} from '../utils/sourceIcons';\nimport { buildToolActions } from '../utils/toolActions';\n\n/** Source brand glyph for a tool, as a dropdown leadingIcon element. */\nconst toolIconEl = (source: string): JSX.Element | undefined =>\n\trenderSourceIcon(sourceIcon(source)) ?? undefined;\n\n/** Dropdown option for a tool: icon left of the name, no description. */\nconst toolOption = (t: AgentTool): SingleOption => ({\n\tlabel: t.display_name,\n\tvalue: t.tool_id,\n\tleadingIcon: toolIconEl(t.source ?? ToolSource.Manifest),\n});\n\nconst STEP = STEP_DEFINITIONS[2];\n\n/** Customer-verification OTP methods, in the dropdown's display order. */\nconst AUTH_METHOD_OPTIONS: SingleOption[] = [\n\t{ label: 'OTP to phone', value: 'phone_otp' },\n\t{ label: 'OTP to email', value: 'email_otp' },\n];\n\n/** Drawer state — null when closed; `key` remounts it fresh per open. */\ninterface SubAgentPanelState {\n\tkey: number;\n\ttitle: string;\n\teditingId?: string;\n\tinitial?: SubAgentDraft;\n}\n\n/**\n * Config-tool drawer state; `key` remounts fresh. `restapi` is the bespoke Rest\n * API panel; `config` is the shared dynamic panel (email / Slack), tagged with\n * its `toolKey`.\n */\ninterface ToolDrawerState {\n\tkey: number;\n\tkind: 'restapi' | 'config';\n\ttoolKey?: ConfigToolKey;\n\tinitialRest?: RestApiToolConfig;\n\tinitialConfig?: ConfigToolConfig;\n}\n\n/** Upsert an item by id (replace when present, append otherwise). */\nconst upsertById = <T extends { id: string }>(\n\tlist: T[] | undefined,\n\titem: T,\n): T[] => {\n\tconst arr = list ?? [];\n\treturn arr.some((x) => x.id === item.id)\n\t\t? arr.map((x) => (x.id === item.id ? item : x))\n\t\t: [...arr, item];\n};\n\nexport const Step3HowItResponds: React.FC = () => {\n\tconst {\n\t\tvalue,\n\t\tpatch,\n\t\tupdateField,\n\t\taddReference,\n\t\tremoveReference,\n\t\tavailableTools,\n\t\tavailableSubAgents,\n\t\tavailableModels,\n\t\tconfigToolTemplates,\n\t\tapplicationType,\n\t\tcharLimits,\n\t\tinsertMention,\n\t\tonCreateSubAgent,\n\t\tonFetchSubAgent,\n\t\tonUpdateSubAgent,\n\t\tonImproveSubAgent,\n\t\tonImproveToolInstructions,\n\t\tregisterSubAgentCreator,\n\t\tregisterToolActionHandler,\n\t\tintegrationStatus,\n\t\tonConnectIntegration,\n\t\tvariablesData,\n\t} = useAgentBuilderContext();\n\n\tconst [panel, setPanel] = useState<SubAgentPanelState | null>(null);\n\tconst panelKeyRef = useRef(0);\n\n\t// Rest API (bespoke) + shared config-tool drawers (separate from the sub-agent one).\n\tconst [toolDrawer, setToolDrawer] = useState<ToolDrawerState | null>(null);\n\tconst toolDrawerKeyRef = useRef(0);\n\tconst openRestApi = useCallback((initial?: RestApiToolConfig) => {\n\t\ttoolDrawerKeyRef.current += 1;\n\t\tsetToolDrawer({\n\t\t\tkey: toolDrawerKeyRef.current,\n\t\t\tkind: 'restapi',\n\t\t\tinitialRest: initial,\n\t\t});\n\t}, []);\n\tconst openConfigTool = useCallback(\n\t\t(toolKey: ConfigToolKey, initial?: ConfigToolConfig) => {\n\t\t\ttoolDrawerKeyRef.current += 1;\n\t\t\tsetToolDrawer({\n\t\t\t\tkey: toolDrawerKeyRef.current,\n\t\t\t\tkind: 'config',\n\t\t\t\ttoolKey,\n\t\t\t\tinitialConfig: initial,\n\t\t\t});\n\t\t},\n\t\t[],\n\t);\n\tconst handleSaveRestApi = useCallback(\n\t\t(config: RestApiToolConfig) => {\n\t\t\tconst isNew = !(value.restApiTools ?? []).some((t) => t.id === config.id);\n\t\t\tpatch({ restApiTools: upsertById(value.restApiTools, config) });\n\t\t\t// Drop a reference chip at the cursor on creation (edits keep the chip).\n\t\t\tif (isNew) {\n\t\t\t\tinsertMention('tool', config.id, restApiMentionItem(config).label);\n\t\t\t}\n\t\t\tsetToolDrawer(null);\n\t\t},\n\t\t[patch, value.restApiTools, insertMention],\n\t);\n\tconst handleSaveConfigTool = useCallback(\n\t\t(config: ConfigToolConfig) => {\n\t\t\tconst isNew = !(value.configTools ?? []).some((t) => t.id === config.id);\n\t\t\tpatch({ configTools: upsertById(value.configTools, config) });\n\t\t\tif (isNew) {\n\t\t\t\tinsertMention('tool', config.id, configToolMentionItem(config).label);\n\t\t\t}\n\t\t\tsetToolDrawer(null);\n\t\t},\n\t\t[patch, value.configTools, insertMention],\n\t);\n\n\t// Open a tool action's drawer by picker source (restapi / email / slack).\n\tconst openToolAction = useCallback(\n\t\t(source: ToolSource) => {\n\t\t\tconst toolKey = CONFIG_TOOL_SOURCES[source];\n\t\t\tif (toolKey) {\n\t\t\t\topenConfigTool(toolKey);\n\t\t\t} else {\n\t\t\t\topenRestApi();\n\t\t\t}\n\t\t},\n\t\t[openConfigTool, openRestApi],\n\t);\n\t// Let the `@` reference picker (Instructions / Guardrails) open these drawers.\n\tuseEffect(() => {\n\t\tregisterToolActionHandler(openToolAction);\n\t\treturn () => registerToolActionHandler(null);\n\t}, [registerToolActionHandler, openToolAction]);\n\t// Sub-agents created / edited in this session, so a chip resolves (and reflects\n\t// a renamed sub-agent) before the consumer refreshes `availableSubAgents`.\n\tconst [createdSubAgents, setCreatedSubAgents] = useState<SubAgentRef[]>([]);\n\t// Created/edited refs take precedence over the consumer-supplied list.\n\tconst subAgentById = new Map<string, SubAgentRef>();\n\tavailableSubAgents.forEach((s) => subAgentById.set(s.id, s));\n\tcreatedSubAgents.forEach((s) => subAgentById.set(s.id, s));\n\tconst knownSubAgents = Array.from(subAgentById.values());\n\n\tconst openCreate = useCallback(() => {\n\t\tpanelKeyRef.current += 1;\n\t\tsetPanel({ key: panelKeyRef.current, title: 'Create sub-agent' });\n\t}, []);\n\n\t// Let the `@` picker's \"Create new\" row open this step's drawer.\n\tuseEffect(() => {\n\t\tif (!onCreateSubAgent) {\n\t\t\treturn;\n\t\t}\n\t\tregisterSubAgentCreator(openCreate);\n\t\treturn () => registerSubAgentCreator(null);\n\t}, [registerSubAgentCreator, openCreate, onCreateSubAgent]);\n\n\tconst openConfigure = useCallback(\n\t\tasync (id: string) => {\n\t\t\tif (!onFetchSubAgent) {\n\t\t\t\treturn;\n\t\t\t}\n\t\t\tconst data = await onFetchSubAgent(id);\n\t\t\tpanelKeyRef.current += 1;\n\t\t\tsetPanel({\n\t\t\t\tkey: panelKeyRef.current,\n\t\t\t\ttitle: 'Edit sub-agent',\n\t\t\t\teditingId: id,\n\t\t\t\tinitial: data,\n\t\t\t});\n\t\t},\n\t\t[onFetchSubAgent],\n\t);\n\n\tconst handlePanelSave = useCallback(\n\t\tasync (draft: SubAgentDraft) => {\n\t\t\tif (panel?.editingId) {\n\t\t\t\tif (onUpdateSubAgent) {\n\t\t\t\t\tconst ref = await onUpdateSubAgent(panel.editingId, draft);\n\t\t\t\t\tsetCreatedSubAgents((prev) => [\n\t\t\t\t\t\t...prev.filter((s) => s.id !== ref.id),\n\t\t\t\t\t\tref,\n\t\t\t\t\t]);\n\t\t\t\t}\n\t\t\t} else if (onCreateSubAgent) {\n\t\t\t\tconst ref = await onCreateSubAgent(draft);\n\t\t\t\tsetCreatedSubAgents((prev) => [...prev, ref]);\n\t\t\t\tpatch({ subagents: [...value.subagents, ref.id] });\n\t\t\t\tinsertMention('subagent', ref.id, `sub-agent: ${ref.name}`);\n\t\t\t}\n\t\t\tsetPanel(null);\n\t\t},\n\t\t[\n\t\t\tpanel,\n\t\t\tonUpdateSubAgent,\n\t\t\tonCreateSubAgent,\n\t\t\tpatch,\n\t\t\tvalue.subagents,\n\t\t\tinsertMention,\n\t\t],\n\t);\n\n\t// ── Customer verification (auth) ──────────────────────────────────────────\n\t// Order tools (auth_required) can't run unless the customer is verified first,\n\t// so verification is MANDATORY whenever such a tool is attached.\n\tconst hasAuthRequiredTool = value.tools.some(\n\t\t(id) => availableTools.find((t) => t.tool_id === id)?.auth_required,\n\t);\n\tconst authEnabled = value.authentication?.enabled ?? false;\n\tconst authType: Authentication['type'] =\n\t\tvalue.authentication?.type ?? 'email_otp';\n\n\t// Reconcile the invariant: a loaded agent that already holds an auth_required\n\t// tool must have verification on (a fail-closed tool otherwise runs silently).\n\tuseEffect(() => {\n\t\tif (hasAuthRequiredTool && !authEnabled) {\n\t\t\tpatch({ authentication: { enabled: true, type: authType } });\n\t\t}\n\t}, [hasAuthRequiredTool, authEnabled, authType, patch]);\n\n\t// A tool add awaiting the mandatory-verification confirm (null = no prompt).\n\tconst [pendingAuthTool, setPendingAuthTool] = useState<string | null>(null);\n\tconst addTool = useCallback(\n\t\t(id: string) => {\n\t\t\t// Always drop a chip at the cursor; addReference dedupes and reads the\n\t\t\t// latest value.\n\t\t\tinsertMention('tool', id);\n\t\t\taddReference('tool', id);\n\t\t},\n\t\t[insertMention, addReference],\n\t);\n\t// Adding an auth_required tool while verification is off prompts first; confirm\n\t// turns verification on and adds, cancel skips the add.\n\tconst handleAddTool = useCallback(\n\t\t(id: string) => {\n\t\t\tconst tool = availableTools.find((t) => t.tool_id === id);\n\t\t\tif (tool?.auth_required && !authEnabled) {\n\t\t\t\tsetPendingAuthTool(id);\n\t\t\t\treturn;\n\t\t\t}\n\t\t\taddTool(id);\n\t\t},\n\t\t[availableTools, authEnabled, addTool],\n\t);\n\n\tconst toolItems: SelectableItem[] = value.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: sourceIcon(tool.source ?? ToolSource.Manifest),\n\t\t\t\t\t\tauthRequired: tool.auth_required,\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// Inline-configured tools (Rest API + the shared email / Slack tools) live on\n\t// the value, not in `tools`. They render as rows in the same Tools list, each\n\t// with its own Configure (edit) action that reopens its drawer.\n\tconst restApiItems: SelectableItem[] = (value.restApiTools ?? []).map(\n\t\t(t) => ({\n\t\t\tid: t.id,\n\t\t\tlabel: restApiToolName(t),\n\t\t\ticon: SOURCE_ICONS[ToolSource.RestApi],\n\t\t\tonConfigure: () => openRestApi(t),\n\t\t}),\n\t);\n\tconst configToolItems: SelectableItem[] = (value.configTools ?? []).map(\n\t\t(t) => ({\n\t\t\tid: t.id,\n\t\t\tlabel: configToolName(t),\n\t\t\ticon: SOURCE_ICONS[\n\t\t\t\tt.tool_key === 'send_slack_message'\n\t\t\t\t\t? ToolSource.Slack\n\t\t\t\t\t: ToolSource.EmailHandover\n\t\t\t],\n\t\t\tonConfigure: () => openConfigTool(t.tool_key, t),\n\t\t}),\n\t);\n\tconst allToolItems: SelectableItem[] = [\n\t\t...toolItems,\n\t\t...restApiItems,\n\t\t...configToolItems,\n\t];\n\n\t// Built-in tools that open a config drawer instead of inserting a mention.\n\t// Shown as empty-state buttons AND in the `@` picker's Tools view. The shared\n\t// email / Slack forms are backend-driven, so each is offered only when its\n\t// template was provided.\n\tconst toolActionSources = buildToolActions(\n\t\tconfigToolTemplates,\n\t\topenToolAction,\n\t\tintegrationStatus,\n\t\tonConnectIntegration,\n\t);\n\n\t// All tools are offered (even already-added ones) so a tool can be referenced\n\t// again in the text; the chip list below still shows each only once.\n\tconst toolOptions: SingleOption[] = availableTools.map(toolOption);\n\n\t// Group tools by source (Manifest / Shopify / …) for the empty-state buttons.\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 ?? ToolSource.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(toolOption(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\t// Not connected → the source button opens the connect flow instead of\n\t\t\t// its tool list (see SelectableListSection / onConnectIntegration).\n\t\t\tconnected: integrationStatus?.[src as ToolSource],\n\t\t\tonConnect: () => onConnectIntegration?.(src as ToolSource),\n\t\t}));\n\t})();\n\n\tconst subAgentItems: SelectableItem[] = value.subagents\n\t\t.map((id): SelectableItem | null => {\n\t\t\tconst sub = subAgentById.get(id);\n\t\t\treturn sub ? { id, label: sub.name } : null;\n\t\t})\n\t\t.filter((x): x is SelectableItem => x !== null);\n\n\tconst subAgentOptions: SingleOption[] = knownSubAgents.map((s) => ({\n\t\tlabel: s.name,\n\t\tvalue: s.id,\n\t}));\n\n\t// Per-section `@`-picker items so the header \"+\" opens the same reference\n\t// picker as the Instructions editor, drilled straight into this section's\n\t// category (tools OR sub-agents).\n\tconst appLabel = appTypeLabel(applicationType);\n\tconst toolMentionItems = [\n\t\t...buildAgentMentionItems(availableTools, [], appLabel),\n\t\t...buildCustomToolMentionItems(value.configTools, value.restApiTools),\n\t];\n\tconst subAgentMentionItems = buildAgentMentionItems(\n\t\t[],\n\t\tknownSubAgents,\n\t\tappLabel,\n\t);\n\n\tconst modelOptions: SingleOption[] = availableModels.map((m) => ({\n\t\tlabel: m.label,\n\t\tvalue: m.value,\n\t\tselected: m.value === value.model,\n\t}));\n\tconst selectedModel = availableModels.find((m) => m.value === value.model);\n\n\t// The template for the open shared-drawer tool (undefined unless a config\n\t// drawer is open and its template was provided).\n\tconst openConfigTemplate =\n\t\ttoolDrawer?.kind === 'config' && toolDrawer.toolKey\n\t\t\t? configToolTemplates?.[toolDrawer.toolKey]\n\t\t\t: undefined;\n\n\treturn (\n\t\t<Step3Root>\n\t\t\t<StepSectionHeader title={STEP.title} helper={STEP.helper} />\n\n\t\t\t<Step3Grid $grow>\n\t\t\t\t<SectionBodyWrap>\n\t\t\t\t\t<MentionField\n\t\t\t\t\t\tfieldKey=\"instructions\"\n\t\t\t\t\t\tdata-test=\"agent-instructions\"\n\t\t\t\t\t\tlabel=\"Instructions\"\n\t\t\t\t\t\tmaxLength={charLimits.instructions}\n\t\t\t\t\t\tplaceholder=\"Write the steps in plain English. The agent will follow them exactly. The more specific you are, the better it performs.\"\n\t\t\t\t\t\tminHeight=\"200px\"\n\t\t\t\t\t/>\n\n\t\t\t\t\t<MentionField\n\t\t\t\t\t\tfieldKey=\"guardrail\"\n\t\t\t\t\t\tdata-test=\"agent-guardrail\"\n\t\t\t\t\t\tlabel=\"Guardrails\"\n\t\t\t\t\t\tmaxLength={charLimits.guardrail}\n\t\t\t\t\t\tplaceholder=\"e.g. Never discuss competitor pricing. Always stay within the cancellation policy. Do not process refunds above ₹10,000 without human approval.\"\n\t\t\t\t\t\tminHeight=\"140px\"\n\t\t\t\t\t/>\n\t\t\t\t</SectionBodyWrap>\n\n\t\t\t\t<Step3Divider />\n\n\t\t\t\t<SectionBodyWrap>\n\t\t\t\t\t<SelectableListSection\n\t\t\t\t\t\ttitle=\"Tools\"\n\t\t\t\t\t\thelper=\"Actions this agent can take while responding.\"\n\t\t\t\t\t\tdataTestPrefix=\"agent-tools\"\n\t\t\t\t\t\titems={allToolItems}\n\t\t\t\t\t\taddableOptions={toolOptions}\n\t\t\t\t\t\tsourceGroups={toolSourceGroups}\n\t\t\t\t\t\tmentionItems={toolMentionItems}\n\t\t\t\t\t\tactionSources={toolActionSources}\n\t\t\t\t\t\temptyText=\"No tools added yet.\"\n\t\t\t\t\t\tonAdd={handleAddTool}\n\t\t\t\t\t\t// Strips the tool's tokens AND drops it from whichever list holds it\n\t\t\t\t\t\t// (catalog `tools` or an inline custom-tool list).\n\t\t\t\t\t\tonRemove={(id) => removeReference('tool', id)}\n\t\t\t\t\t\tconfirmDelete={{ noun: 'tool' }}\n\t\t\t\t\t/>\n\n\t\t\t\t\t<SelectableListSection\n\t\t\t\t\t\ttitle=\"Sub-agents\"\n\t\t\t\t\t\thelper=\"Other agents this agent can hand off the conversation to.\"\n\t\t\t\t\t\tdataTestPrefix=\"agent-subagents\"\n\t\t\t\t\t\titems={subAgentItems}\n\t\t\t\t\t\taddableOptions={subAgentOptions}\n\t\t\t\t\t\tmentionItems={subAgentMentionItems}\n\t\t\t\t\t\temptyText=\"No sub-agents added yet.\"\n\t\t\t\t\t\tonAdd={(id) => {\n\t\t\t\t\t\t\tinsertMention('subagent', id);\n\t\t\t\t\t\t\taddReference('subagent', id);\n\t\t\t\t\t\t}}\n\t\t\t\t\t\tonRemove={(id) => removeReference('subagent', id)}\n\t\t\t\t\t\tconfirmDelete={{ noun: 'sub-agent' }}\n\t\t\t\t\t\tonConfigure={onFetchSubAgent ? openConfigure : undefined}\n\t\t\t\t\t\tcreateOption={\n\t\t\t\t\t\t\tonCreateSubAgent\n\t\t\t\t\t\t\t\t? { label: 'Create new', onSelect: openCreate }\n\t\t\t\t\t\t\t\t: undefined\n\t\t\t\t\t\t}\n\t\t\t\t\t/>\n\n\t\t\t\t\t<SideSection>\n\t\t\t\t\t\t<SideSectionHeader>\n\t\t\t\t\t\t\t<div style={{ display: 'flex', alignItems: 'center', gap: 8 }}>\n\t\t\t\t\t\t\t\t<Shield size={20} />\n\t\t\t\t\t\t\t\t<TitleSmall color={COLORS.content.primary}>\n\t\t\t\t\t\t\t\t\tRequire customer verification\n\t\t\t\t\t\t\t\t</TitleSmall>\n\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t\t<Switch\n\t\t\t\t\t\t\t\tdata-test=\"agent-auth-toggle\"\n\t\t\t\t\t\t\t\tvalue={authEnabled || hasAuthRequiredTool}\n\t\t\t\t\t\t\t\t// Mandatory (can't turn off) while an auth_required tool is attached.\n\t\t\t\t\t\t\t\tdisabled={hasAuthRequiredTool}\n\t\t\t\t\t\t\t\tonValueChange={async (enabled) => {\n\t\t\t\t\t\t\t\t\tpatch({ authentication: { enabled, type: authType } });\n\t\t\t\t\t\t\t\t}}\n\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t</SideSectionHeader>\n\t\t\t\t\t\t<BodyCaption color={COLORS.content.secondary}>\n\t\t\t\t\t\t\t{hasAuthRequiredTool\n\t\t\t\t\t\t\t\t? 'Required — this agent uses a tool that accesses customer order details.'\n\t\t\t\t\t\t\t\t: 'Customers must verify their identity before this agent responds.'}\n\t\t\t\t\t\t</BodyCaption>\n\t\t\t\t\t\t{(authEnabled || hasAuthRequiredTool) && (\n\t\t\t\t\t\t\t<>\n\t\t\t\t\t\t\t\t<BodySecondary color={COLORS.content.primary}>\n\t\t\t\t\t\t\t\t\tSelect verification method\n\t\t\t\t\t\t\t\t</BodySecondary>\n\t\t\t\t\t\t\t\t<Dropdown\n\t\t\t\t\t\t\t\t\tdata-test=\"agent-auth-method\"\n\t\t\t\t\t\t\t\t\tsize=\"small\"\n\t\t\t\t\t\t\t\t\twidth=\"100%\"\n\t\t\t\t\t\t\t\t\t// Popover is portalled, so \"100%\" collapses to content width —\n\t\t\t\t\t\t\t\t\t// match the input: 360px side column − 2×16px padding.\n\t\t\t\t\t\t\t\t\tdropdownWidth=\"328px\"\n\t\t\t\t\t\t\t\t\tplaceHolder=\"Select verification method\"\n\t\t\t\t\t\t\t\t\toptions={AUTH_METHOD_OPTIONS}\n\t\t\t\t\t\t\t\t\tdefaultOptions={[\n\t\t\t\t\t\t\t\t\t\tAUTH_METHOD_OPTIONS.find((o) => o.value === authType) ??\n\t\t\t\t\t\t\t\t\t\t\tAUTH_METHOD_OPTIONS[0],\n\t\t\t\t\t\t\t\t\t]}\n\t\t\t\t\t\t\t\t\tonSelect={(opt) => {\n\t\t\t\t\t\t\t\t\t\tconst v = unwrapDropdownValue(opt);\n\t\t\t\t\t\t\t\t\t\tif (v) {\n\t\t\t\t\t\t\t\t\t\t\tpatch({\n\t\t\t\t\t\t\t\t\t\t\t\tauthentication: {\n\t\t\t\t\t\t\t\t\t\t\t\t\tenabled: true,\n\t\t\t\t\t\t\t\t\t\t\t\t\ttype: v as Authentication['type'],\n\t\t\t\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\t\t\t});\n\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t}}\n\t\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t\t</>\n\t\t\t\t\t\t)}\n\t\t\t\t\t</SideSection>\n\n\t\t\t\t\t{availableModels.length > 0 && (\n\t\t\t\t\t\t<SideSection>\n\t\t\t\t\t\t\t<TitleSmall color={COLORS.content.primary}>\n\t\t\t\t\t\t\t\tAdvanced settings\n\t\t\t\t\t\t\t</TitleSmall>\n\t\t\t\t\t\t\t<BodySecondary color={COLORS.content.primary}>\n\t\t\t\t\t\t\t\tSelect AI model\n\t\t\t\t\t\t\t</BodySecondary>\n\t\t\t\t\t\t\t<Dropdown\n\t\t\t\t\t\t\t\tdata-test=\"agent-model\"\n\t\t\t\t\t\t\t\tsize=\"small\"\n\t\t\t\t\t\t\t\twidth=\"100%\"\n\t\t\t\t\t\t\t\t// Popover is portalled, so \"100%\" collapses to content width —\n\t\t\t\t\t\t\t\t// match the input: 360px side column − 2×16px SectionBodyWrap\n\t\t\t\t\t\t\t\t// padding.\n\t\t\t\t\t\t\t\tdropdownWidth=\"328px\"\n\t\t\t\t\t\t\t\tplaceHolder=\"Select model\"\n\t\t\t\t\t\t\t\toptions={modelOptions}\n\t\t\t\t\t\t\t\tdefaultOptions={\n\t\t\t\t\t\t\t\t\tselectedModel\n\t\t\t\t\t\t\t\t\t\t? [\n\t\t\t\t\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\t\t\t\t\tlabel: selectedModel.label,\n\t\t\t\t\t\t\t\t\t\t\t\t\tvalue: selectedModel.value,\n\t\t\t\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\t\t ]\n\t\t\t\t\t\t\t\t\t\t: undefined\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\tonSelect={(opt) => {\n\t\t\t\t\t\t\t\t\tconst v = unwrapDropdownValue(opt);\n\t\t\t\t\t\t\t\t\tif (v) {\n\t\t\t\t\t\t\t\t\t\tupdateField('model', v);\n\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t}}\n\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t</SideSection>\n\t\t\t\t\t)}\n\t\t\t\t</SectionBodyWrap>\n\t\t\t</Step3Grid>\n\n\t\t\t{panel && (\n\t\t\t\t<CreateSubAgentPanel\n\t\t\t\t\tkey={panel.key}\n\t\t\t\t\ttitle={panel.title}\n\t\t\t\t\tinitial={panel.initial}\n\t\t\t\t\tavailableTools={availableTools}\n\t\t\t\t\tconfigToolTemplates={configToolTemplates}\n\t\t\t\t\tvariablesData={variablesData}\n\t\t\t\t\tappLabel={appTypeLabel(applicationType)}\n\t\t\t\t\tcharLimits={charLimits}\n\t\t\t\t\tonImprove={onImproveSubAgent}\n\t\t\t\t\tonImproveToolInstructions={onImproveToolInstructions}\n\t\t\t\t\tonClose={() => setPanel(null)}\n\t\t\t\t\tonSave={handlePanelSave}\n\t\t\t\t/>\n\t\t\t)}\n\n\t\t\t{toolDrawer?.kind === 'restapi' && (\n\t\t\t\t<RestApiToolPanel\n\t\t\t\t\tkey={toolDrawer.key}\n\t\t\t\t\tinitial={toolDrawer.initialRest}\n\t\t\t\t\tcharLimits={charLimits}\n\t\t\t\t\t// Block reusing another tool's name (exclude the one being edited).\n\t\t\t\t\texistingNames={(value.restApiTools ?? [])\n\t\t\t\t\t\t.filter((t) => t.id !== toolDrawer.initialRest?.id)\n\t\t\t\t\t\t.map((t) => t.name)}\n\t\t\t\t\tonImprove={onImproveToolInstructions}\n\t\t\t\t\tonClose={() => setToolDrawer(null)}\n\t\t\t\t\tonSave={handleSaveRestApi}\n\t\t\t\t/>\n\t\t\t)}\n\n\t\t\t{toolDrawer?.kind === 'config' &&\n\t\t\t\ttoolDrawer.toolKey &&\n\t\t\t\topenConfigTemplate && (\n\t\t\t\t\t<ConfigToolPanel\n\t\t\t\t\t\tkey={toolDrawer.key}\n\t\t\t\t\t\ttoolKey={toolDrawer.toolKey}\n\t\t\t\t\t\ttemplate={openConfigTemplate}\n\t\t\t\t\t\tinitial={toolDrawer.initialConfig}\n\t\t\t\t\t\tcharLimits={charLimits}\n\t\t\t\t\t\tonImprove={onImproveToolInstructions}\n\t\t\t\t\t\tonClose={() => setToolDrawer(null)}\n\t\t\t\t\t\tonSave={handleSaveConfigTool}\n\t\t\t\t\t/>\n\t\t\t\t)}\n\n\t\t\t<RequireVerificationModal\n\t\t\t\topen={pendingAuthTool !== null}\n\t\t\t\ttoolLabel={\n\t\t\t\t\tavailableTools.find((t) => t.tool_id === pendingAuthTool)\n\t\t\t\t\t\t?.display_name ?? 'This tool'\n\t\t\t\t}\n\t\t\t\tonCancel={() => setPendingAuthTool(null)}\n\t\t\t\tonConfirm={() => {\n\t\t\t\t\tpatch({ authentication: { enabled: true, type: authType } });\n\t\t\t\t\tif (pendingAuthTool) {\n\t\t\t\t\t\taddTool(pendingAuthTool);\n\t\t\t\t\t}\n\t\t\t\t\tsetPendingAuthTool(null);\n\t\t\t\t}}\n\t\t\t/>\n\t\t</Step3Root>\n\t);\n};\n"],"names":["toolIconEl","source","renderSourceIcon","sourceIcon","toolOption","ToolSource","STEP","STEP_DEFINITIONS","AUTH_METHOD_OPTIONS","upsertById","list","item","arr","x","Step3HowItResponds","value","patch","updateField","addReference","removeReference","availableTools","availableSubAgents","availableModels","configToolTemplates","applicationType","charLimits","insertMention","onCreateSubAgent","onFetchSubAgent","onUpdateSubAgent","onImproveSubAgent","onImproveToolInstructions","registerSubAgentCreator","registerToolActionHandler","integrationStatus","onConnectIntegration","variablesData","useAgentBuilderContext","panel","setPanel","useState","panelKeyRef","useRef","toolDrawer","setToolDrawer","toolDrawerKeyRef","openRestApi","useCallback","initial","openConfigTool","toolKey","handleSaveRestApi","config","isNew","t","restApiMentionItem","handleSaveConfigTool","configToolMentionItem","openToolAction","CONFIG_TOOL_SOURCES","useEffect","createdSubAgents","setCreatedSubAgents","subAgentById","s","knownSubAgents","openCreate","openConfigure","id","data","handlePanelSave","draft","ref","prev","hasAuthRequiredTool","authEnabled","authType","pendingAuthTool","setPendingAuthTool","addTool","handleAddTool","toolItems","tool","restApiItems","restApiToolName","SOURCE_ICONS","configToolItems","configToolName","allToolItems","toolActionSources","buildToolActions","toolOptions","toolSourceGroups","order","bySource","src","toolSourceLabel","subAgentItems","sub","subAgentOptions","appLabel","appTypeLabel","toolMentionItems","buildAgentMentionItems","buildCustomToolMentionItems","subAgentMentionItems","modelOptions","m","selectedModel","openConfigTemplate","Step3Root","jsx","StepSectionHeader","jsxs","Step3Grid","SectionBodyWrap","MentionField","Step3Divider","SelectableListSection","SideSection","SideSectionHeader","Shield","TitleSmall","COLORS","Switch","enabled","BodyCaption","Fragment","BodySecondary","Dropdown","o","opt","v","unwrapDropdownValue","CreateSubAgentPanel","RestApiToolPanel","ConfigToolPanel","RequireVerificationModal"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"Step3HowItResponds.js","sources":["../../../../../src/components/agent-builder/steps/Step3HowItResponds.tsx"],"sourcesContent":["import { Shield } from '@src/icons';\nimport React, { useCallback, useEffect, useRef, useState } from 'react';\nimport { Dropdown, unwrapDropdownValue } from '@src/components/dropdown';\nimport { SingleOption } from '@src/components/dropdown/type';\nimport { Switch } from '@src/components/switch';\nimport {\n\tBodyCaption,\n\tBodySecondary,\n\tTitleSmall,\n} from '@src/components/TypographyStyle';\nimport { COLORS } from '@src/constants/Theme';\nimport {\n\tAgentTool,\n\tAuthentication,\n\tConfigToolConfig,\n\tConfigToolKey,\n\tRestApiToolConfig,\n\tSubAgentDraft,\n\tSubAgentRef,\n} from '../AgentBuilder.model';\nimport {\n\tSectionBodyWrap,\n\tSideSection,\n\tSideSectionHeader,\n\tStep3Divider,\n\tStep3Grid,\n\tStep3Root,\n} from '../AgentBuilder.styled';\nimport { ConfigToolPanel } from '../components/ConfigToolPanel';\nimport { CreateSubAgentPanel } from '../components/CreateSubAgentPanel';\nimport { MentionField } from '../components/MentionField';\nimport { RequireVerificationModal } from '../components/RequireVerificationModal';\nimport { RestApiToolPanel } from '../components/RestApiToolPanel';\nimport {\n\tSelectableItem,\n\tSelectableListSection,\n\tSourceGroup,\n} from '../components/SelectableListSection';\nimport { StepSectionHeader } from '../components/StepSectionHeader';\nimport { STEP_DEFINITIONS } from '../constants/steps';\nimport { CONFIG_TOOL_SOURCES, ToolSource } from '../constants/tools';\nimport { useAgentBuilderContext } from '../context/AgentBuilderContext';\nimport {\n\tappTypeLabel,\n\tbuildAgentMentionItems,\n\tbuildCustomToolMentionItems,\n\tconfigToolMentionItem,\n\tconfigToolName,\n\trestApiMentionItem,\n\trestApiToolName,\n\ttoolSourceLabel,\n} from '../utils/mentionSerialization';\nimport {\n\trenderSourceIcon,\n\tSOURCE_ICONS,\n\tsourceIcon,\n} from '../utils/sourceIcons';\nimport { buildToolActions } from '../utils/toolActions';\n\n/** Source brand glyph for a tool, as a dropdown leadingIcon element. */\nconst toolIconEl = (source: string): JSX.Element | undefined =>\n\trenderSourceIcon(sourceIcon(source)) ?? undefined;\n\n/** Dropdown option for a tool: icon left of the name, no description. */\nconst toolOption = (t: AgentTool): SingleOption => ({\n\tlabel: t.display_name,\n\tvalue: t.tool_id,\n\tleadingIcon: toolIconEl(t.source ?? ToolSource.Manifest),\n});\n\nconst STEP = STEP_DEFINITIONS[2];\n\n/** Customer-verification OTP methods, in the dropdown's display order. */\nconst AUTH_METHOD_OPTIONS: SingleOption[] = [\n\t{ label: 'OTP to phone', value: 'phone_otp' },\n\t{ label: 'OTP to email', value: 'email_otp' },\n];\n\n/** Drawer state — null when closed; `key` remounts it fresh per open. */\ninterface SubAgentPanelState {\n\tkey: number;\n\ttitle: string;\n\teditingId?: string;\n\tinitial?: SubAgentDraft;\n}\n\n/**\n * Config-tool drawer state; `key` remounts fresh. `restapi` is the bespoke Rest\n * API panel; `config` is the shared dynamic panel (email / Slack), tagged with\n * its `toolKey`.\n */\ninterface ToolDrawerState {\n\tkey: number;\n\tkind: 'restapi' | 'config';\n\ttoolKey?: ConfigToolKey;\n\tinitialRest?: RestApiToolConfig;\n\tinitialConfig?: ConfigToolConfig;\n}\n\n/** Upsert an item by id (replace when present, append otherwise). */\nconst upsertById = <T extends { id: string }>(\n\tlist: T[] | undefined,\n\titem: T,\n): T[] => {\n\tconst arr = list ?? [];\n\treturn arr.some((x) => x.id === item.id)\n\t\t? arr.map((x) => (x.id === item.id ? item : x))\n\t\t: [...arr, item];\n};\n\nexport const Step3HowItResponds: React.FC = () => {\n\tconst {\n\t\tvalue,\n\t\tpatch,\n\t\tupdateField,\n\t\taddReference,\n\t\tremoveReference,\n\t\tavailableTools,\n\t\tavailableSubAgents,\n\t\tavailableModels,\n\t\tconfigToolTemplates,\n\t\tapplicationType,\n\t\tcharLimits,\n\t\tinsertMention,\n\t\tonCreateSubAgent,\n\t\tonFetchSubAgent,\n\t\tonUpdateSubAgent,\n\t\tonImproveSubAgent,\n\t\tonImproveToolInstructions,\n\t\tregisterSubAgentCreator,\n\t\tregisterToolActionHandler,\n\t\tintegrationStatus,\n\t\tonConnectIntegration,\n\t\tvariablesData,\n\t} = useAgentBuilderContext();\n\n\tconst [panel, setPanel] = useState<SubAgentPanelState | null>(null);\n\tconst panelKeyRef = useRef(0);\n\n\t// Rest API (bespoke) + shared config-tool drawers (separate from the sub-agent one).\n\tconst [toolDrawer, setToolDrawer] = useState<ToolDrawerState | null>(null);\n\tconst toolDrawerKeyRef = useRef(0);\n\tconst openRestApi = useCallback((initial?: RestApiToolConfig) => {\n\t\ttoolDrawerKeyRef.current += 1;\n\t\tsetToolDrawer({\n\t\t\tkey: toolDrawerKeyRef.current,\n\t\t\tkind: 'restapi',\n\t\t\tinitialRest: initial,\n\t\t});\n\t}, []);\n\tconst openConfigTool = useCallback(\n\t\t(toolKey: ConfigToolKey, initial?: ConfigToolConfig) => {\n\t\t\ttoolDrawerKeyRef.current += 1;\n\t\t\tsetToolDrawer({\n\t\t\t\tkey: toolDrawerKeyRef.current,\n\t\t\t\tkind: 'config',\n\t\t\t\ttoolKey,\n\t\t\t\tinitialConfig: initial,\n\t\t\t});\n\t\t},\n\t\t[],\n\t);\n\tconst handleSaveRestApi = useCallback(\n\t\t(config: RestApiToolConfig) => {\n\t\t\tconst isNew = !(value.restApiTools ?? []).some((t) => t.id === config.id);\n\t\t\tpatch({ restApiTools: upsertById(value.restApiTools, config) });\n\t\t\t// Drop a reference chip at the cursor on creation (edits keep the chip).\n\t\t\tif (isNew) {\n\t\t\t\tinsertMention('tool', config.id, restApiMentionItem(config).label);\n\t\t\t}\n\t\t\tsetToolDrawer(null);\n\t\t},\n\t\t[patch, value.restApiTools, insertMention],\n\t);\n\tconst handleSaveConfigTool = useCallback(\n\t\t(config: ConfigToolConfig) => {\n\t\t\tconst isNew = !(value.configTools ?? []).some((t) => t.id === config.id);\n\t\t\tpatch({ configTools: upsertById(value.configTools, config) });\n\t\t\tif (isNew) {\n\t\t\t\tinsertMention('tool', config.id, configToolMentionItem(config).label);\n\t\t\t}\n\t\t\tsetToolDrawer(null);\n\t\t},\n\t\t[patch, value.configTools, insertMention],\n\t);\n\n\t// Open a tool action's drawer by picker source (restapi / email / slack).\n\tconst openToolAction = useCallback(\n\t\t(source: ToolSource) => {\n\t\t\tconst toolKey = CONFIG_TOOL_SOURCES[source];\n\t\t\tif (toolKey) {\n\t\t\t\topenConfigTool(toolKey);\n\t\t\t} else {\n\t\t\t\topenRestApi();\n\t\t\t}\n\t\t},\n\t\t[openConfigTool, openRestApi],\n\t);\n\t// Let the `@` reference picker (Instructions / Guardrails) open these drawers.\n\tuseEffect(() => {\n\t\tregisterToolActionHandler(openToolAction);\n\t\treturn () => registerToolActionHandler(null);\n\t}, [registerToolActionHandler, openToolAction]);\n\t// Sub-agents created / edited in this session, so a chip resolves (and reflects\n\t// a renamed sub-agent) before the consumer refreshes `availableSubAgents`.\n\tconst [createdSubAgents, setCreatedSubAgents] = useState<SubAgentRef[]>([]);\n\t// Created/edited refs take precedence over the consumer-supplied list.\n\tconst subAgentById = new Map<string, SubAgentRef>();\n\tavailableSubAgents.forEach((s) => subAgentById.set(s.id, s));\n\tcreatedSubAgents.forEach((s) => subAgentById.set(s.id, s));\n\tconst knownSubAgents = Array.from(subAgentById.values());\n\n\tconst openCreate = useCallback(() => {\n\t\tpanelKeyRef.current += 1;\n\t\tsetPanel({ key: panelKeyRef.current, title: 'Create sub-agent' });\n\t}, []);\n\n\t// Let the `@` picker's \"Create new\" row open this step's drawer.\n\tuseEffect(() => {\n\t\tif (!onCreateSubAgent) {\n\t\t\treturn;\n\t\t}\n\t\tregisterSubAgentCreator(openCreate);\n\t\treturn () => registerSubAgentCreator(null);\n\t}, [registerSubAgentCreator, openCreate, onCreateSubAgent]);\n\n\tconst openConfigure = useCallback(\n\t\tasync (id: string) => {\n\t\t\tif (!onFetchSubAgent) {\n\t\t\t\treturn;\n\t\t\t}\n\t\t\tconst data = await onFetchSubAgent(id);\n\t\t\tpanelKeyRef.current += 1;\n\t\t\tsetPanel({\n\t\t\t\tkey: panelKeyRef.current,\n\t\t\t\ttitle: 'Edit sub-agent',\n\t\t\t\teditingId: id,\n\t\t\t\tinitial: data,\n\t\t\t});\n\t\t},\n\t\t[onFetchSubAgent],\n\t);\n\n\tconst handlePanelSave = useCallback(\n\t\tasync (draft: SubAgentDraft) => {\n\t\t\tif (panel?.editingId) {\n\t\t\t\tif (onUpdateSubAgent) {\n\t\t\t\t\tconst ref = await onUpdateSubAgent(panel.editingId, draft);\n\t\t\t\t\tsetCreatedSubAgents((prev) => [\n\t\t\t\t\t\t...prev.filter((s) => s.id !== ref.id),\n\t\t\t\t\t\tref,\n\t\t\t\t\t]);\n\t\t\t\t}\n\t\t\t} else if (onCreateSubAgent) {\n\t\t\t\tconst ref = await onCreateSubAgent(draft);\n\t\t\t\tsetCreatedSubAgents((prev) => [...prev, ref]);\n\t\t\t\tpatch({ subagents: [...value.subagents, ref.id] });\n\t\t\t\tinsertMention('subagent', ref.id, `sub-agent: ${ref.name}`);\n\t\t\t}\n\t\t\tsetPanel(null);\n\t\t},\n\t\t[\n\t\t\tpanel,\n\t\t\tonUpdateSubAgent,\n\t\t\tonCreateSubAgent,\n\t\t\tpatch,\n\t\t\tvalue.subagents,\n\t\t\tinsertMention,\n\t\t],\n\t);\n\n\t// ── Customer verification (auth) ──────────────────────────────────────────\n\t// Order tools (auth_required) can't run unless the customer is verified first,\n\t// so verification is MANDATORY whenever such a tool is attached.\n\tconst hasAuthRequiredTool = value.tools.some(\n\t\t(id) => availableTools.find((t) => t.tool_id === id)?.auth_required,\n\t);\n\tconst authEnabled = value.authentication?.enabled ?? false;\n\tconst authType: Authentication['type'] =\n\t\tvalue.authentication?.type ?? 'email_otp';\n\n\t// Reconcile the invariant: a loaded agent that already holds an auth_required\n\t// tool must have verification on (a fail-closed tool otherwise runs silently).\n\tuseEffect(() => {\n\t\tif (hasAuthRequiredTool && !authEnabled) {\n\t\t\tpatch({ authentication: { enabled: true, type: authType } });\n\t\t}\n\t}, [hasAuthRequiredTool, authEnabled, authType, patch]);\n\n\t// A tool add awaiting the mandatory-verification confirm (null = no prompt).\n\tconst [pendingAuthTool, setPendingAuthTool] = useState<string | null>(null);\n\tconst addTool = useCallback(\n\t\t(id: string) => {\n\t\t\t// Always drop a chip at the cursor; addReference dedupes and reads the\n\t\t\t// latest value.\n\t\t\tinsertMention('tool', id);\n\t\t\taddReference('tool', id);\n\t\t},\n\t\t[insertMention, addReference],\n\t);\n\t// Adding an auth_required tool while verification is off prompts first; confirm\n\t// turns verification on and adds, cancel skips the add.\n\tconst handleAddTool = useCallback(\n\t\t(id: string) => {\n\t\t\tconst tool = availableTools.find((t) => t.tool_id === id);\n\t\t\tif (tool?.auth_required && !authEnabled) {\n\t\t\t\tsetPendingAuthTool(id);\n\t\t\t\treturn;\n\t\t\t}\n\t\t\taddTool(id);\n\t\t},\n\t\t[availableTools, authEnabled, addTool],\n\t);\n\n\tconst toolItems: SelectableItem[] = value.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: sourceIcon(tool.source ?? ToolSource.Manifest),\n\t\t\t\t\t\tauthRequired: tool.auth_required,\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// Inline-configured tools (Rest API + the shared email / Slack tools) live on\n\t// the value, not in `tools`. They render as rows in the same Tools list, each\n\t// with its own Configure (edit) action that reopens its drawer.\n\tconst restApiItems: SelectableItem[] = (value.restApiTools ?? []).map(\n\t\t(t) => ({\n\t\t\tid: t.id,\n\t\t\tlabel: restApiToolName(t),\n\t\t\ticon: SOURCE_ICONS[ToolSource.RestApi],\n\t\t\tonConfigure: () => openRestApi(t),\n\t\t}),\n\t);\n\tconst configToolItems: SelectableItem[] = (value.configTools ?? []).map(\n\t\t(t) => ({\n\t\t\tid: t.id,\n\t\t\tlabel: configToolName(t),\n\t\t\ticon: SOURCE_ICONS[\n\t\t\t\tt.tool_key === 'send_slack_message'\n\t\t\t\t\t? ToolSource.Slack\n\t\t\t\t\t: ToolSource.EmailHandover\n\t\t\t],\n\t\t\tonConfigure: () => openConfigTool(t.tool_key, t),\n\t\t}),\n\t);\n\tconst allToolItems: SelectableItem[] = [\n\t\t...toolItems,\n\t\t...restApiItems,\n\t\t...configToolItems,\n\t];\n\n\t// Built-in tools that open a config drawer instead of inserting a mention.\n\t// Shown as empty-state buttons AND in the `@` picker's Tools view. The shared\n\t// email / Slack forms are backend-driven, so each is offered only when its\n\t// template was provided.\n\tconst toolActionSources = buildToolActions(\n\t\tconfigToolTemplates,\n\t\topenToolAction,\n\t\tintegrationStatus,\n\t\tonConnectIntegration,\n\t);\n\n\t// All tools are offered (even already-added ones) so a tool can be referenced\n\t// again in the text; the chip list below still shows each only once.\n\tconst toolOptions: SingleOption[] = availableTools.map(toolOption);\n\n\t// Group tools by source (Manifest / Shopify / …) for the empty-state buttons.\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 ?? ToolSource.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(toolOption(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\t// Not connected → the source button opens the connect flow instead of\n\t\t\t// its tool list (see SelectableListSection / onConnectIntegration).\n\t\t\tconnected: integrationStatus?.[src as ToolSource],\n\t\t\tonConnect: () => onConnectIntegration?.(src as ToolSource),\n\t\t}));\n\t})();\n\n\tconst subAgentItems: SelectableItem[] = value.subagents\n\t\t.map((id): SelectableItem | null => {\n\t\t\tconst sub = subAgentById.get(id);\n\t\t\treturn sub ? { id, label: sub.name } : null;\n\t\t})\n\t\t.filter((x): x is SelectableItem => x !== null);\n\n\tconst subAgentOptions: SingleOption[] = knownSubAgents.map((s) => ({\n\t\tlabel: s.name,\n\t\tvalue: s.id,\n\t}));\n\n\t// Per-section `@`-picker items so the header \"+\" opens the same reference\n\t// picker as the Instructions editor, drilled straight into this section's\n\t// category (tools OR sub-agents).\n\tconst appLabel = appTypeLabel(applicationType);\n\tconst toolMentionItems = [\n\t\t...buildAgentMentionItems(availableTools, [], appLabel),\n\t\t...buildCustomToolMentionItems(value.configTools, value.restApiTools),\n\t];\n\tconst subAgentMentionItems = buildAgentMentionItems(\n\t\t[],\n\t\tknownSubAgents,\n\t\tappLabel,\n\t);\n\n\tconst modelOptions: SingleOption[] = availableModels.map((m) => ({\n\t\tlabel: m.label,\n\t\tvalue: m.value,\n\t\tselected: m.value === value.model,\n\t}));\n\tconst selectedModel = availableModels.find((m) => m.value === value.model);\n\n\t// The template for the open shared-drawer tool (undefined unless a config\n\t// drawer is open and its template was provided).\n\tconst openConfigTemplate =\n\t\ttoolDrawer?.kind === 'config' && toolDrawer.toolKey\n\t\t\t? configToolTemplates?.[toolDrawer.toolKey]\n\t\t\t: undefined;\n\n\treturn (\n\t\t<Step3Root>\n\t\t\t<StepSectionHeader title={STEP.title} helper={STEP.helper} />\n\n\t\t\t<Step3Grid $grow>\n\t\t\t\t<SectionBodyWrap>\n\t\t\t\t\t<MentionField\n\t\t\t\t\t\tfieldKey=\"instructions\"\n\t\t\t\t\t\tdata-test=\"agent-instructions\"\n\t\t\t\t\t\tlabel=\"Instructions\"\n\t\t\t\t\t\tmaxLength={charLimits.instructions}\n\t\t\t\t\t\tplaceholder=\"Write the steps in plain English. The agent will follow them exactly. The more specific you are, the better it performs.\"\n\t\t\t\t\t\tminHeight=\"200px\"\n\t\t\t\t\t/>\n\n\t\t\t\t\t<MentionField\n\t\t\t\t\t\tfieldKey=\"guardrail\"\n\t\t\t\t\t\tdata-test=\"agent-guardrail\"\n\t\t\t\t\t\tlabel=\"Guardrails\"\n\t\t\t\t\t\tmaxLength={charLimits.guardrail}\n\t\t\t\t\t\tplaceholder=\"e.g. Never discuss competitor pricing. Always stay within the cancellation policy. Do not process refunds above ₹10,000 without human approval.\"\n\t\t\t\t\t\tminHeight=\"140px\"\n\t\t\t\t\t/>\n\t\t\t\t</SectionBodyWrap>\n\n\t\t\t\t<Step3Divider />\n\n\t\t\t\t<SectionBodyWrap>\n\t\t\t\t\t<SelectableListSection\n\t\t\t\t\t\ttitle=\"Tools\"\n\t\t\t\t\t\thelper=\"Actions this agent can take while responding.\"\n\t\t\t\t\t\tdataTestPrefix=\"agent-tools\"\n\t\t\t\t\t\titems={allToolItems}\n\t\t\t\t\t\taddableOptions={toolOptions}\n\t\t\t\t\t\tsourceGroups={toolSourceGroups}\n\t\t\t\t\t\tmentionItems={toolMentionItems}\n\t\t\t\t\t\tactionSources={toolActionSources}\n\t\t\t\t\t\temptyText=\"No tools added yet.\"\n\t\t\t\t\t\tonAdd={handleAddTool}\n\t\t\t\t\t\t// Strips the tool's tokens AND drops it from whichever list holds it\n\t\t\t\t\t\t// (catalog `tools` or an inline custom-tool list).\n\t\t\t\t\t\tonRemove={(id) => removeReference('tool', id)}\n\t\t\t\t\t\tconfirmDelete={{ noun: 'tool' }}\n\t\t\t\t\t/>\n\n\t\t\t\t\t<SelectableListSection\n\t\t\t\t\t\ttitle=\"Sub-agents\"\n\t\t\t\t\t\thelper=\"Other agents this agent can hand off the conversation to.\"\n\t\t\t\t\t\tdataTestPrefix=\"agent-subagents\"\n\t\t\t\t\t\titems={subAgentItems}\n\t\t\t\t\t\taddableOptions={subAgentOptions}\n\t\t\t\t\t\tmentionItems={subAgentMentionItems}\n\t\t\t\t\t\temptyText=\"No sub-agents added yet.\"\n\t\t\t\t\t\tonAdd={(id) => {\n\t\t\t\t\t\t\tinsertMention('subagent', id);\n\t\t\t\t\t\t\taddReference('subagent', id);\n\t\t\t\t\t\t}}\n\t\t\t\t\t\tonRemove={(id) => removeReference('subagent', id)}\n\t\t\t\t\t\tconfirmDelete={{ noun: 'sub-agent' }}\n\t\t\t\t\t\tonConfigure={onFetchSubAgent ? openConfigure : undefined}\n\t\t\t\t\t\tcreateOption={\n\t\t\t\t\t\t\tonCreateSubAgent\n\t\t\t\t\t\t\t\t? { label: 'Create new', onSelect: openCreate }\n\t\t\t\t\t\t\t\t: undefined\n\t\t\t\t\t\t}\n\t\t\t\t\t/>\n\n\t\t\t\t\t<SideSection>\n\t\t\t\t\t\t<SideSectionHeader>\n\t\t\t\t\t\t\t<div style={{ display: 'flex', alignItems: 'center', gap: 8 }}>\n\t\t\t\t\t\t\t\t<Shield size={20} />\n\t\t\t\t\t\t\t\t<TitleSmall color={COLORS.content.primary}>\n\t\t\t\t\t\t\t\t\tRequire customer verification\n\t\t\t\t\t\t\t\t</TitleSmall>\n\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t\t<Switch\n\t\t\t\t\t\t\t\tdata-test=\"agent-auth-toggle\"\n\t\t\t\t\t\t\t\tvalue={authEnabled || hasAuthRequiredTool}\n\t\t\t\t\t\t\t\t// Mandatory (can't turn off) while an auth_required tool is attached.\n\t\t\t\t\t\t\t\tdisabled={hasAuthRequiredTool}\n\t\t\t\t\t\t\t\tonValueChange={async (enabled) => {\n\t\t\t\t\t\t\t\t\tpatch({ authentication: { enabled, type: authType } });\n\t\t\t\t\t\t\t\t}}\n\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t</SideSectionHeader>\n\t\t\t\t\t\t<BodyCaption color={COLORS.content.secondary}>\n\t\t\t\t\t\t\t{hasAuthRequiredTool\n\t\t\t\t\t\t\t\t? 'Required — this agent uses a tool that accesses customer order details.'\n\t\t\t\t\t\t\t\t: 'Customers must verify their identity before this agent responds.'}\n\t\t\t\t\t\t</BodyCaption>\n\t\t\t\t\t\t{(authEnabled || hasAuthRequiredTool) && (\n\t\t\t\t\t\t\t<>\n\t\t\t\t\t\t\t\t<BodySecondary color={COLORS.content.primary}>\n\t\t\t\t\t\t\t\t\tSelect verification method\n\t\t\t\t\t\t\t\t</BodySecondary>\n\t\t\t\t\t\t\t\t<Dropdown\n\t\t\t\t\t\t\t\t\tdata-test=\"agent-auth-method\"\n\t\t\t\t\t\t\t\t\tsize=\"small\"\n\t\t\t\t\t\t\t\t\twidth=\"100%\"\n\t\t\t\t\t\t\t\t\t// Popover is portalled, so \"100%\" collapses to content width —\n\t\t\t\t\t\t\t\t\t// match the input: 360px side column − 2×16px padding.\n\t\t\t\t\t\t\t\t\tdropdownWidth=\"328px\"\n\t\t\t\t\t\t\t\t\tplaceHolder=\"Select verification method\"\n\t\t\t\t\t\t\t\t\toptions={AUTH_METHOD_OPTIONS}\n\t\t\t\t\t\t\t\t\tdefaultOptions={[\n\t\t\t\t\t\t\t\t\t\tAUTH_METHOD_OPTIONS.find((o) => o.value === authType) ??\n\t\t\t\t\t\t\t\t\t\t\tAUTH_METHOD_OPTIONS[0],\n\t\t\t\t\t\t\t\t\t]}\n\t\t\t\t\t\t\t\t\tonSelect={(opt) => {\n\t\t\t\t\t\t\t\t\t\tconst v = unwrapDropdownValue(opt);\n\t\t\t\t\t\t\t\t\t\tif (v) {\n\t\t\t\t\t\t\t\t\t\t\tpatch({\n\t\t\t\t\t\t\t\t\t\t\t\tauthentication: {\n\t\t\t\t\t\t\t\t\t\t\t\t\tenabled: true,\n\t\t\t\t\t\t\t\t\t\t\t\t\ttype: v as Authentication['type'],\n\t\t\t\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\t\t\t});\n\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t}}\n\t\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t\t</>\n\t\t\t\t\t\t)}\n\t\t\t\t\t</SideSection>\n\n\t\t\t\t\t{availableModels.length > 0 && (\n\t\t\t\t\t\t<SideSection>\n\t\t\t\t\t\t\t<TitleSmall color={COLORS.content.primary}>\n\t\t\t\t\t\t\t\tAdvanced settings\n\t\t\t\t\t\t\t</TitleSmall>\n\t\t\t\t\t\t\t<BodySecondary color={COLORS.content.primary}>\n\t\t\t\t\t\t\t\tSelect AI model\n\t\t\t\t\t\t\t</BodySecondary>\n\t\t\t\t\t\t\t<Dropdown\n\t\t\t\t\t\t\t\tdata-test=\"agent-model\"\n\t\t\t\t\t\t\t\tsize=\"small\"\n\t\t\t\t\t\t\t\twidth=\"100%\"\n\t\t\t\t\t\t\t\t// Popover is portalled, so \"100%\" collapses to content width —\n\t\t\t\t\t\t\t\t// match the input: 360px side column − 2×16px SectionBodyWrap\n\t\t\t\t\t\t\t\t// padding.\n\t\t\t\t\t\t\t\tdropdownWidth=\"328px\"\n\t\t\t\t\t\t\t\tplaceHolder=\"Select model\"\n\t\t\t\t\t\t\t\toptions={modelOptions}\n\t\t\t\t\t\t\t\tdefaultOptions={\n\t\t\t\t\t\t\t\t\tselectedModel\n\t\t\t\t\t\t\t\t\t\t? [\n\t\t\t\t\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\t\t\t\t\tlabel: selectedModel.label,\n\t\t\t\t\t\t\t\t\t\t\t\t\tvalue: selectedModel.value,\n\t\t\t\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\t\t ]\n\t\t\t\t\t\t\t\t\t\t: undefined\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\tonSelect={(opt) => {\n\t\t\t\t\t\t\t\t\tconst v = unwrapDropdownValue(opt);\n\t\t\t\t\t\t\t\t\tif (v) {\n\t\t\t\t\t\t\t\t\t\tupdateField('model', v);\n\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t}}\n\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t</SideSection>\n\t\t\t\t\t)}\n\t\t\t\t</SectionBodyWrap>\n\t\t\t</Step3Grid>\n\n\t\t\t{panel && (\n\t\t\t\t<CreateSubAgentPanel\n\t\t\t\t\tkey={panel.key}\n\t\t\t\t\ttitle={panel.title}\n\t\t\t\t\tinitial={panel.initial}\n\t\t\t\t\tavailableTools={availableTools}\n\t\t\t\t\tconfigToolTemplates={configToolTemplates}\n\t\t\t\t\tvariablesData={variablesData}\n\t\t\t\t\tappLabel={appTypeLabel(applicationType)}\n\t\t\t\t\tcharLimits={charLimits}\n\t\t\t\t\tonImprove={onImproveSubAgent}\n\t\t\t\t\tonImproveToolInstructions={onImproveToolInstructions}\n\t\t\t\t\tonClose={() => setPanel(null)}\n\t\t\t\t\tonSave={handlePanelSave}\n\t\t\t\t/>\n\t\t\t)}\n\n\t\t\t{toolDrawer?.kind === 'restapi' && (\n\t\t\t\t<RestApiToolPanel\n\t\t\t\t\tkey={toolDrawer.key}\n\t\t\t\t\tinitial={toolDrawer.initialRest}\n\t\t\t\t\tcharLimits={charLimits}\n\t\t\t\t\tvariablesData={variablesData}\n\t\t\t\t\t// Block reusing another tool's name (exclude the one being edited).\n\t\t\t\t\texistingNames={(value.restApiTools ?? [])\n\t\t\t\t\t\t.filter((t) => t.id !== toolDrawer.initialRest?.id)\n\t\t\t\t\t\t.map((t) => t.name)}\n\t\t\t\t\tonImprove={onImproveToolInstructions}\n\t\t\t\t\tonClose={() => setToolDrawer(null)}\n\t\t\t\t\tonSave={handleSaveRestApi}\n\t\t\t\t/>\n\t\t\t)}\n\n\t\t\t{toolDrawer?.kind === 'config' &&\n\t\t\t\ttoolDrawer.toolKey &&\n\t\t\t\topenConfigTemplate && (\n\t\t\t\t\t<ConfigToolPanel\n\t\t\t\t\t\tkey={toolDrawer.key}\n\t\t\t\t\t\ttoolKey={toolDrawer.toolKey}\n\t\t\t\t\t\ttemplate={openConfigTemplate}\n\t\t\t\t\t\tinitial={toolDrawer.initialConfig}\n\t\t\t\t\t\tcharLimits={charLimits}\n\t\t\t\t\t\tvariablesData={variablesData}\n\t\t\t\t\t\tonImprove={onImproveToolInstructions}\n\t\t\t\t\t\tonClose={() => setToolDrawer(null)}\n\t\t\t\t\t\tonSave={handleSaveConfigTool}\n\t\t\t\t\t/>\n\t\t\t\t)}\n\n\t\t\t<RequireVerificationModal\n\t\t\t\topen={pendingAuthTool !== null}\n\t\t\t\ttoolLabel={\n\t\t\t\t\tavailableTools.find((t) => t.tool_id === pendingAuthTool)\n\t\t\t\t\t\t?.display_name ?? 'This tool'\n\t\t\t\t}\n\t\t\t\tonCancel={() => setPendingAuthTool(null)}\n\t\t\t\tonConfirm={() => {\n\t\t\t\t\tpatch({ authentication: { enabled: true, type: authType } });\n\t\t\t\t\tif (pendingAuthTool) {\n\t\t\t\t\t\taddTool(pendingAuthTool);\n\t\t\t\t\t}\n\t\t\t\t\tsetPendingAuthTool(null);\n\t\t\t\t}}\n\t\t\t/>\n\t\t</Step3Root>\n\t);\n};\n"],"names":["toolIconEl","source","renderSourceIcon","sourceIcon","toolOption","ToolSource","STEP","STEP_DEFINITIONS","AUTH_METHOD_OPTIONS","upsertById","list","item","arr","x","Step3HowItResponds","value","patch","updateField","addReference","removeReference","availableTools","availableSubAgents","availableModels","configToolTemplates","applicationType","charLimits","insertMention","onCreateSubAgent","onFetchSubAgent","onUpdateSubAgent","onImproveSubAgent","onImproveToolInstructions","registerSubAgentCreator","registerToolActionHandler","integrationStatus","onConnectIntegration","variablesData","useAgentBuilderContext","panel","setPanel","useState","panelKeyRef","useRef","toolDrawer","setToolDrawer","toolDrawerKeyRef","openRestApi","useCallback","initial","openConfigTool","toolKey","handleSaveRestApi","config","isNew","t","restApiMentionItem","handleSaveConfigTool","configToolMentionItem","openToolAction","CONFIG_TOOL_SOURCES","useEffect","createdSubAgents","setCreatedSubAgents","subAgentById","s","knownSubAgents","openCreate","openConfigure","id","data","handlePanelSave","draft","ref","prev","hasAuthRequiredTool","authEnabled","authType","pendingAuthTool","setPendingAuthTool","addTool","handleAddTool","toolItems","tool","restApiItems","restApiToolName","SOURCE_ICONS","configToolItems","configToolName","allToolItems","toolActionSources","buildToolActions","toolOptions","toolSourceGroups","order","bySource","src","toolSourceLabel","subAgentItems","sub","subAgentOptions","appLabel","appTypeLabel","toolMentionItems","buildAgentMentionItems","buildCustomToolMentionItems","subAgentMentionItems","modelOptions","m","selectedModel","openConfigTemplate","Step3Root","jsx","StepSectionHeader","jsxs","Step3Grid","SectionBodyWrap","MentionField","Step3Divider","SelectableListSection","SideSection","SideSectionHeader","Shield","TitleSmall","COLORS","Switch","enabled","BodyCaption","Fragment","BodySecondary","Dropdown","o","opt","v","unwrapDropdownValue","CreateSubAgentPanel","RestApiToolPanel","ConfigToolPanel","RequireVerificationModal"],"mappings":"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"}
|