@bikdotai/bik-component-library 0.0.831-beta.1 → 0.0.831-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 +6 -6
- package/dist/cjs/components/agent-builder/components/ConfigToolPanel.js.map +1 -1
- package/dist/cjs/components/agent-builder/components/CreateSubAgentPanel.js +2 -2
- package/dist/cjs/components/agent-builder/components/CreateSubAgentPanel.js.map +1 -1
- package/dist/cjs/components/agent-builder/components/DrawerHeaderText.js +3 -3
- package/dist/cjs/components/agent-builder/components/DrawerHeaderText.js.map +1 -1
- package/dist/cjs/components/agent-builder/components/MentionField.js +1 -1
- package/dist/cjs/components/agent-builder/components/MentionField.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/RestApiToolPanel.js +4 -4
- package/dist/cjs/components/agent-builder/components/RestApiToolPanel.js.map +1 -1
- package/dist/cjs/components/agent-builder/components/SelectableListSection.js +4 -4
- package/dist/cjs/components/agent-builder/components/SelectableListSection.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/utils/sourceIcons.js +1 -1
- package/dist/cjs/components/agent-builder/utils/sourceIcons.js.map +1 -1
- package/dist/cjs/components/agent-builder/utils/toolActions.js +2 -0
- package/dist/cjs/components/agent-builder/utils/toolActions.js.map +1 -0
- package/dist/cjs/components/states-modal/DeleteConfirmationModal.js +1 -1
- package/dist/cjs/components/states-modal/DeleteConfirmationModal.js.map +1 -1
- package/dist/cjs/icons/Media/Visual/{FormkitNeutral.js → Frame26086263.js} +1 -1
- package/dist/cjs/icons/Media/Visual/Frame26086263.js.map +1 -0
- package/dist/cjs/icons/Media/Visual/{FormkitSad.js → IconTrailing.js} +1 -1
- package/dist/cjs/icons/Media/Visual/IconTrailing.js.map +1 -0
- package/dist/cjs/icons/Social/Social/SlackIcon.js +2 -0
- package/dist/cjs/icons/Social/Social/SlackIcon.js.map +1 -0
- package/dist/cjs/icons/index.js +1 -1
- package/dist/esm/components/agent-builder/components/ConfigToolPanel.js +92 -101
- package/dist/esm/components/agent-builder/components/ConfigToolPanel.js.map +1 -1
- package/dist/esm/components/agent-builder/components/CreateSubAgentPanel.js +149 -154
- package/dist/esm/components/agent-builder/components/CreateSubAgentPanel.js.map +1 -1
- package/dist/esm/components/agent-builder/components/DrawerHeaderText.d.ts +2 -9
- package/dist/esm/components/agent-builder/components/DrawerHeaderText.js +15 -19
- package/dist/esm/components/agent-builder/components/DrawerHeaderText.js.map +1 -1
- package/dist/esm/components/agent-builder/components/MentionField.js +57 -66
- package/dist/esm/components/agent-builder/components/MentionField.js.map +1 -1
- package/dist/esm/components/agent-builder/components/MentionPicker.js +66 -55
- package/dist/esm/components/agent-builder/components/MentionPicker.js.map +1 -1
- package/dist/esm/components/agent-builder/components/RestApiToolPanel.js +77 -80
- package/dist/esm/components/agent-builder/components/RestApiToolPanel.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 +134 -118
- package/dist/esm/components/agent-builder/components/SelectableListSection.js.map +1 -1
- package/dist/esm/components/agent-builder/steps/Step3HowItResponds.js +144 -148
- package/dist/esm/components/agent-builder/steps/Step3HowItResponds.js.map +1 -1
- package/dist/esm/components/agent-builder/utils/sourceIcons.js +14 -14
- package/dist/esm/components/agent-builder/utils/sourceIcons.js.map +1 -1
- package/dist/esm/components/agent-builder/utils/toolActions.d.ts +11 -0
- package/dist/esm/components/agent-builder/utils/toolActions.js +15 -0
- package/dist/esm/components/agent-builder/utils/toolActions.js.map +1 -0
- package/dist/esm/components/states-modal/DeleteConfirmationModal.d.ts +2 -0
- package/dist/esm/components/states-modal/DeleteConfirmationModal.js +11 -10
- package/dist/esm/components/states-modal/DeleteConfirmationModal.js.map +1 -1
- package/dist/esm/icons/Media/Visual/Frame26086263.d.ts +7 -0
- package/dist/esm/icons/Media/Visual/{FormkitNeutral.js → Frame26086263.js} +1 -1
- package/dist/esm/icons/Media/Visual/Frame26086263.js.map +1 -0
- package/dist/esm/icons/Media/Visual/IconTrailing.d.ts +7 -0
- package/dist/esm/icons/Media/Visual/{FormkitSad.js → IconTrailing.js} +1 -1
- package/dist/esm/icons/Media/Visual/IconTrailing.js.map +1 -0
- package/dist/esm/icons/Media/Visual/index.d.ts +2 -2
- package/dist/esm/icons/Social/Social/SlackIcon.d.ts +7 -0
- package/dist/esm/icons/Social/Social/SlackIcon.js +47 -0
- package/dist/esm/icons/Social/Social/SlackIcon.js.map +1 -0
- package/dist/esm/icons/Social/Social/index.d.ts +1 -0
- package/dist/esm/icons/index.d.ts +25 -25
- package/dist/esm/icons/index.js +246 -244
- package/dist/esm/icons/index.js.map +1 -1
- package/package.json +1 -1
- package/dist/cjs/icons/Media/Visual/FormkitNeutral.js.map +0 -1
- package/dist/cjs/icons/Media/Visual/FormkitSad.js.map +0 -1
- package/dist/esm/icons/Media/Visual/FormkitNeutral.js.map +0 -1
- package/dist/esm/icons/Media/Visual/FormkitSad.js.map +0 -1
|
@@ -1,29 +1,30 @@
|
|
|
1
1
|
import { jsxs as T, jsx as l } from "react/jsx-runtime";
|
|
2
|
-
import { useState as N, useRef as
|
|
3
|
-
import { TitleSmall as
|
|
4
|
-
import { COLORS as
|
|
5
|
-
import { Step3Root as
|
|
2
|
+
import { useState as N, useRef as U, useCallback as r, useEffect as j } from "react";
|
|
3
|
+
import { TitleSmall as W } from "../../TypographyStyle.js";
|
|
4
|
+
import { COLORS as $ } from "../../../constants/Theme.js";
|
|
5
|
+
import { Step3Root as ye, Step3Grid as Ae, SectionBodyWrap as z, Step3Divider as Ie, SideSection as Ce } from "../AgentBuilder.styled.js";
|
|
6
6
|
import { ConfigToolPanel as we } from "../components/ConfigToolPanel.js";
|
|
7
|
-
import { CreateSubAgentPanel as
|
|
8
|
-
import { MentionField as
|
|
9
|
-
import { RestApiToolPanel as
|
|
10
|
-
import { SelectableListSection as
|
|
11
|
-
import { StepSectionHeader as
|
|
12
|
-
import { STEP_DEFINITIONS as
|
|
13
|
-
import { CONFIG_TOOL_SOURCES as
|
|
14
|
-
import { useAgentBuilderContext as
|
|
15
|
-
import { restApiMentionItem as
|
|
16
|
-
import { sourceIcon as
|
|
7
|
+
import { CreateSubAgentPanel as ke } from "../components/CreateSubAgentPanel.js";
|
|
8
|
+
import { MentionField as V } from "../components/MentionField.js";
|
|
9
|
+
import { RestApiToolPanel as Oe } from "../components/RestApiToolPanel.js";
|
|
10
|
+
import { SelectableListSection as q } from "../components/SelectableListSection.js";
|
|
11
|
+
import { StepSectionHeader as Re } from "../components/StepSectionHeader.js";
|
|
12
|
+
import { STEP_DEFINITIONS as Me } from "../constants/steps.js";
|
|
13
|
+
import { CONFIG_TOOL_SOURCES as Ee, ToolSource as g } from "../constants/tools.js";
|
|
14
|
+
import { useAgentBuilderContext as _e } from "../context/AgentBuilderContext.js";
|
|
15
|
+
import { restApiMentionItem as xe, configToolMentionItem as Ke, restApiToolName as Le, configToolName as Ne, toolSourceLabel as De, buildAgentMentionItems as J, appTypeLabel as Q } from "../utils/mentionSerialization.js";
|
|
16
|
+
import { sourceIcon as oe, SOURCE_ICONS as X, renderSourceIcon as Pe } from "../utils/sourceIcons.js";
|
|
17
|
+
import { buildToolActions as He } from "../utils/toolActions.js";
|
|
17
18
|
import { Dropdown as Fe } from "../../dropdown/Dropdown.js";
|
|
18
19
|
import { unwrapDropdownValue as Ge } from "../../dropdown/utils.js";
|
|
19
|
-
const
|
|
20
|
+
const Be = (t) => Pe(oe(t)) ?? void 0, Y = (t) => ({
|
|
20
21
|
label: t.display_name,
|
|
21
22
|
value: t.tool_id,
|
|
22
|
-
leadingIcon:
|
|
23
|
-
}),
|
|
23
|
+
leadingIcon: Be(t.source ?? g.Manifest)
|
|
24
|
+
}), Z = Me[2], ee = (t, i) => {
|
|
24
25
|
const f = t ?? [];
|
|
25
26
|
return f.some((c) => c.id === i.id) ? f.map((c) => c.id === i.id ? i : c) : [...f, i];
|
|
26
|
-
},
|
|
27
|
+
}, ao = () => {
|
|
27
28
|
const {
|
|
28
29
|
value: t,
|
|
29
30
|
patch: i,
|
|
@@ -31,167 +32,160 @@ const Ue = (t) => Be(te(t)) ?? void 0, Z = (t) => ({
|
|
|
31
32
|
addReference: c,
|
|
32
33
|
removeReference: D,
|
|
33
34
|
availableTools: b,
|
|
34
|
-
availableSubAgents:
|
|
35
|
+
availableSubAgents: te,
|
|
35
36
|
availableModels: C,
|
|
36
|
-
configToolTemplates:
|
|
37
|
-
applicationType:
|
|
37
|
+
configToolTemplates: w,
|
|
38
|
+
applicationType: P,
|
|
38
39
|
charLimits: S,
|
|
39
|
-
insertMention:
|
|
40
|
-
onCreateSubAgent:
|
|
40
|
+
insertMention: a,
|
|
41
|
+
onCreateSubAgent: u,
|
|
41
42
|
onFetchSubAgent: h,
|
|
42
|
-
onUpdateSubAgent:
|
|
43
|
-
onImproveSubAgent:
|
|
44
|
-
onImproveToolInstructions:
|
|
45
|
-
registerSubAgentCreator:
|
|
46
|
-
registerToolActionHandler:
|
|
47
|
-
} =
|
|
48
|
-
|
|
49
|
-
key:
|
|
43
|
+
onUpdateSubAgent: k,
|
|
44
|
+
onImproveSubAgent: ne,
|
|
45
|
+
onImproveToolInstructions: O,
|
|
46
|
+
registerSubAgentCreator: R,
|
|
47
|
+
registerToolActionHandler: M
|
|
48
|
+
} = _e(), [d, v] = N(null), y = U(0), [s, p] = N(null), A = U(0), E = r((e) => {
|
|
49
|
+
A.current += 1, p({
|
|
50
|
+
key: A.current,
|
|
50
51
|
kind: "restapi",
|
|
51
52
|
initialRest: e
|
|
52
53
|
});
|
|
53
|
-
}, []),
|
|
54
|
+
}, []), _ = r(
|
|
54
55
|
(e, o) => {
|
|
55
|
-
|
|
56
|
-
key:
|
|
56
|
+
A.current += 1, p({
|
|
57
|
+
key: A.current,
|
|
57
58
|
kind: "config",
|
|
58
59
|
toolKey: e,
|
|
59
60
|
initialConfig: o
|
|
60
61
|
});
|
|
61
62
|
},
|
|
62
63
|
[]
|
|
63
|
-
),
|
|
64
|
+
), le = r(
|
|
64
65
|
(e) => {
|
|
65
66
|
const o = !(t.restApiTools ?? []).some((n) => n.id === e.id);
|
|
66
|
-
i({ restApiTools:
|
|
67
|
+
i({ restApiTools: ee(t.restApiTools, e) }), o && a("tool", e.id, xe(e).label), p(null);
|
|
67
68
|
},
|
|
68
|
-
[i, t.restApiTools,
|
|
69
|
-
),
|
|
69
|
+
[i, t.restApiTools, a]
|
|
70
|
+
), ie = r(
|
|
70
71
|
(e) => {
|
|
71
72
|
const o = !(t.configTools ?? []).some((n) => n.id === e.id);
|
|
72
|
-
i({ configTools:
|
|
73
|
+
i({ configTools: ee(t.configTools, e) }), o && a("tool", e.id, Ke(e).label), p(null);
|
|
73
74
|
},
|
|
74
|
-
[i, t.configTools,
|
|
75
|
-
),
|
|
75
|
+
[i, t.configTools, a]
|
|
76
|
+
), x = r(
|
|
76
77
|
(e) => {
|
|
77
|
-
const o =
|
|
78
|
-
o ?
|
|
78
|
+
const o = Ee[e];
|
|
79
|
+
o ? _(o) : E();
|
|
79
80
|
},
|
|
80
|
-
[
|
|
81
|
+
[_, E]
|
|
81
82
|
);
|
|
82
|
-
|
|
83
|
-
const [se,
|
|
84
|
-
|
|
85
|
-
const F = Array.from(I.values()),
|
|
86
|
-
|
|
83
|
+
j(() => (M(x), () => M(null)), [M, x]);
|
|
84
|
+
const [se, H] = N([]), I = /* @__PURE__ */ new Map();
|
|
85
|
+
te.forEach((e) => I.set(e.id, e)), se.forEach((e) => I.set(e.id, e));
|
|
86
|
+
const F = Array.from(I.values()), K = r(() => {
|
|
87
|
+
y.current += 1, v({ key: y.current, title: "Create sub-agent" });
|
|
87
88
|
}, []);
|
|
88
|
-
|
|
89
|
-
if (
|
|
90
|
-
return
|
|
91
|
-
}, [
|
|
92
|
-
const
|
|
89
|
+
j(() => {
|
|
90
|
+
if (u)
|
|
91
|
+
return R(K), () => R(null);
|
|
92
|
+
}, [R, K, u]);
|
|
93
|
+
const ae = r(
|
|
93
94
|
async (e) => {
|
|
94
95
|
if (!h)
|
|
95
96
|
return;
|
|
96
97
|
const o = await h(e);
|
|
97
|
-
|
|
98
|
-
key:
|
|
98
|
+
y.current += 1, v({
|
|
99
|
+
key: y.current,
|
|
99
100
|
title: "Edit sub-agent",
|
|
100
101
|
editingId: e,
|
|
101
102
|
initial: o
|
|
102
103
|
});
|
|
103
104
|
},
|
|
104
105
|
[h]
|
|
105
|
-
),
|
|
106
|
+
), re = r(
|
|
106
107
|
async (e) => {
|
|
107
108
|
if (d?.editingId) {
|
|
108
|
-
if (
|
|
109
|
-
const o = await
|
|
110
|
-
|
|
109
|
+
if (k) {
|
|
110
|
+
const o = await k(d.editingId, e);
|
|
111
|
+
H((n) => [
|
|
111
112
|
...n.filter((m) => m.id !== o.id),
|
|
112
113
|
o
|
|
113
114
|
]);
|
|
114
115
|
}
|
|
115
|
-
} else if (
|
|
116
|
-
const o = await
|
|
117
|
-
|
|
116
|
+
} else if (u) {
|
|
117
|
+
const o = await u(e);
|
|
118
|
+
H((n) => [...n, o]), i({ subagents: [...t.subagents, o.id] }), a("subagent", o.id, `sub-agent: ${o.name}`);
|
|
118
119
|
}
|
|
119
|
-
|
|
120
|
+
v(null);
|
|
120
121
|
},
|
|
121
122
|
[
|
|
122
123
|
d,
|
|
123
|
-
|
|
124
|
-
|
|
124
|
+
k,
|
|
125
|
+
u,
|
|
125
126
|
i,
|
|
126
127
|
t.subagents,
|
|
127
|
-
|
|
128
|
+
a
|
|
128
129
|
]
|
|
129
|
-
),
|
|
130
|
+
), ce = t.tools.map((e) => {
|
|
130
131
|
const o = b.find((n) => n.tool_id === e);
|
|
131
132
|
return o ? {
|
|
132
133
|
id: e,
|
|
133
134
|
label: o.display_name,
|
|
134
|
-
icon:
|
|
135
|
+
icon: oe(o.source ?? g.Manifest)
|
|
135
136
|
} : null;
|
|
136
|
-
}).filter((e) => e !== null),
|
|
137
|
+
}).filter((e) => e !== null), de = (t.restApiTools ?? []).map(
|
|
137
138
|
(e) => ({
|
|
138
139
|
id: e.id,
|
|
139
|
-
label:
|
|
140
|
-
icon:
|
|
140
|
+
label: Le(e),
|
|
141
|
+
icon: X[g.RestApi],
|
|
141
142
|
onConfigure: () => E(e)
|
|
142
143
|
})
|
|
143
144
|
), ue = (t.configTools ?? []).map(
|
|
144
145
|
(e) => ({
|
|
145
146
|
id: e.id,
|
|
146
|
-
label:
|
|
147
|
-
icon:
|
|
148
|
-
onConfigure: () =>
|
|
147
|
+
label: Ne(e),
|
|
148
|
+
icon: X[e.tool_key === "send_slack_message" ? g.Slack : g.EmailHandover],
|
|
149
|
+
onConfigure: () => _(e.tool_key, e)
|
|
149
150
|
})
|
|
150
|
-
),
|
|
151
|
+
), pe = [
|
|
152
|
+
...ce,
|
|
151
153
|
...de,
|
|
152
|
-
...pe,
|
|
153
154
|
...ue
|
|
154
|
-
],
|
|
155
|
-
|
|
156
|
-
|
|
157
|
-
|
|
158
|
-
}
|
|
159
|
-
).map((e) => ({
|
|
160
|
-
source: e,
|
|
161
|
-
label: Me[e],
|
|
162
|
-
icon: P[e],
|
|
163
|
-
onSelect: () => M(e)
|
|
164
|
-
})), fe = b.map(Z), be = (() => {
|
|
155
|
+
], me = He(
|
|
156
|
+
w,
|
|
157
|
+
x
|
|
158
|
+
), ge = b.map(Y), fe = (() => {
|
|
165
159
|
const e = [], o = /* @__PURE__ */ new Map();
|
|
166
160
|
return b.forEach((n) => {
|
|
167
161
|
const m = n.source ?? g.Manifest;
|
|
168
|
-
o.has(m) || (o.set(m, []), e.push(m)), o.get(m)?.push(
|
|
162
|
+
o.has(m) || (o.set(m, []), e.push(m)), o.get(m)?.push(Y(n));
|
|
169
163
|
}), e.map((n) => ({
|
|
170
164
|
source: n,
|
|
171
|
-
label:
|
|
165
|
+
label: De(n),
|
|
172
166
|
options: o.get(n) ?? []
|
|
173
167
|
}));
|
|
174
|
-
})(),
|
|
168
|
+
})(), be = t.subagents.map((e) => {
|
|
175
169
|
const o = I.get(e);
|
|
176
170
|
return o ? { id: e, label: o.name } : null;
|
|
177
|
-
}).filter((e) => e !== null),
|
|
171
|
+
}).filter((e) => e !== null), Se = F.map((e) => ({
|
|
178
172
|
label: e.name,
|
|
179
173
|
value: e.id
|
|
180
|
-
})), G =
|
|
174
|
+
})), G = Q(P), Te = J(b, [], G), he = J(
|
|
181
175
|
[],
|
|
182
176
|
F,
|
|
183
177
|
G
|
|
184
|
-
),
|
|
178
|
+
), ve = C.map((e) => ({
|
|
185
179
|
label: e.label,
|
|
186
180
|
value: e.value,
|
|
187
181
|
selected: e.value === t.model
|
|
188
|
-
})),
|
|
189
|
-
return /* @__PURE__ */ T(
|
|
190
|
-
/* @__PURE__ */ l(
|
|
191
|
-
/* @__PURE__ */ T(
|
|
192
|
-
/* @__PURE__ */ T(
|
|
182
|
+
})), L = C.find((e) => e.value === t.model), B = s?.kind === "config" && s.toolKey ? w?.[s.toolKey] : void 0;
|
|
183
|
+
return /* @__PURE__ */ T(ye, { children: [
|
|
184
|
+
/* @__PURE__ */ l(Re, { title: Z.title, helper: Z.helper }),
|
|
185
|
+
/* @__PURE__ */ T(Ae, { $grow: !0, children: [
|
|
186
|
+
/* @__PURE__ */ T(z, { children: [
|
|
193
187
|
/* @__PURE__ */ l(
|
|
194
|
-
|
|
188
|
+
V,
|
|
195
189
|
{
|
|
196
190
|
fieldKey: "instructions",
|
|
197
191
|
"data-test": "agent-instructions",
|
|
@@ -202,7 +196,7 @@ const Ue = (t) => Be(te(t)) ?? void 0, Z = (t) => ({
|
|
|
202
196
|
}
|
|
203
197
|
),
|
|
204
198
|
/* @__PURE__ */ l(
|
|
205
|
-
|
|
199
|
+
V,
|
|
206
200
|
{
|
|
207
201
|
fieldKey: "guardrail",
|
|
208
202
|
"data-test": "agent-guardrail",
|
|
@@ -213,47 +207,49 @@ const Ue = (t) => Be(te(t)) ?? void 0, Z = (t) => ({
|
|
|
213
207
|
}
|
|
214
208
|
)
|
|
215
209
|
] }),
|
|
216
|
-
/* @__PURE__ */ l(
|
|
217
|
-
/* @__PURE__ */ T(
|
|
210
|
+
/* @__PURE__ */ l(Ie, {}),
|
|
211
|
+
/* @__PURE__ */ T(z, { children: [
|
|
218
212
|
/* @__PURE__ */ l(
|
|
219
|
-
|
|
213
|
+
q,
|
|
220
214
|
{
|
|
221
215
|
title: "Tools",
|
|
222
216
|
helper: "Actions this agent can take while responding.",
|
|
223
217
|
dataTestPrefix: "agent-tools",
|
|
224
|
-
items:
|
|
225
|
-
addableOptions:
|
|
226
|
-
sourceGroups:
|
|
227
|
-
mentionItems:
|
|
228
|
-
actionSources:
|
|
218
|
+
items: pe,
|
|
219
|
+
addableOptions: ge,
|
|
220
|
+
sourceGroups: fe,
|
|
221
|
+
mentionItems: Te,
|
|
222
|
+
actionSources: me,
|
|
229
223
|
emptyText: "No tools added yet.",
|
|
230
224
|
onAdd: (e) => {
|
|
231
|
-
|
|
225
|
+
a("tool", e), c("tool", e);
|
|
232
226
|
},
|
|
233
|
-
onRemove: (e) => D("tool", e)
|
|
227
|
+
onRemove: (e) => D("tool", e),
|
|
228
|
+
confirmDelete: { noun: "tool" }
|
|
234
229
|
}
|
|
235
230
|
),
|
|
236
231
|
/* @__PURE__ */ l(
|
|
237
|
-
|
|
232
|
+
q,
|
|
238
233
|
{
|
|
239
234
|
title: "Sub-agents",
|
|
240
235
|
helper: "Other agents this agent can hand off the conversation to.",
|
|
241
236
|
dataTestPrefix: "agent-subagents",
|
|
242
|
-
items:
|
|
243
|
-
addableOptions:
|
|
244
|
-
mentionItems:
|
|
237
|
+
items: be,
|
|
238
|
+
addableOptions: Se,
|
|
239
|
+
mentionItems: he,
|
|
245
240
|
emptyText: "No sub-agents added yet.",
|
|
246
241
|
onAdd: (e) => {
|
|
247
|
-
|
|
242
|
+
a("subagent", e), c("subagent", e);
|
|
248
243
|
},
|
|
249
244
|
onRemove: (e) => D("subagent", e),
|
|
250
|
-
|
|
251
|
-
|
|
245
|
+
confirmDelete: { noun: "sub-agent" },
|
|
246
|
+
onConfigure: h ? ae : void 0,
|
|
247
|
+
createOption: u ? { label: "Create new", onSelect: K } : void 0
|
|
252
248
|
}
|
|
253
249
|
),
|
|
254
|
-
C.length > 0 && /* @__PURE__ */ T(
|
|
255
|
-
/* @__PURE__ */ l(
|
|
256
|
-
/* @__PURE__ */ l(
|
|
250
|
+
C.length > 0 && /* @__PURE__ */ T(Ce, { children: [
|
|
251
|
+
/* @__PURE__ */ l(W, { color: $.content.primary, children: "Advanced settings" }),
|
|
252
|
+
/* @__PURE__ */ l(W, { color: $.content.secondary, children: "Select AI model" }),
|
|
257
253
|
/* @__PURE__ */ l(
|
|
258
254
|
Fe,
|
|
259
255
|
{
|
|
@@ -261,11 +257,11 @@ const Ue = (t) => Be(te(t)) ?? void 0, Z = (t) => ({
|
|
|
261
257
|
size: "small",
|
|
262
258
|
width: "100%",
|
|
263
259
|
placeHolder: "Select model",
|
|
264
|
-
options:
|
|
265
|
-
defaultOptions:
|
|
260
|
+
options: ve,
|
|
261
|
+
defaultOptions: L ? [
|
|
266
262
|
{
|
|
267
|
-
label:
|
|
268
|
-
value:
|
|
263
|
+
label: L.label,
|
|
264
|
+
value: L.value
|
|
269
265
|
}
|
|
270
266
|
] : void 0,
|
|
271
267
|
onSelect: (e) => {
|
|
@@ -278,48 +274,48 @@ const Ue = (t) => Be(te(t)) ?? void 0, Z = (t) => ({
|
|
|
278
274
|
] })
|
|
279
275
|
] }),
|
|
280
276
|
d && /* @__PURE__ */ l(
|
|
281
|
-
|
|
277
|
+
ke,
|
|
282
278
|
{
|
|
283
279
|
title: d.title,
|
|
284
280
|
initial: d.initial,
|
|
285
281
|
availableTools: b,
|
|
286
|
-
configToolTemplates:
|
|
287
|
-
appLabel:
|
|
282
|
+
configToolTemplates: w,
|
|
283
|
+
appLabel: Q(P),
|
|
288
284
|
charLimits: S,
|
|
289
|
-
onImprove:
|
|
290
|
-
onImproveToolInstructions:
|
|
291
|
-
onClose: () =>
|
|
292
|
-
onSave:
|
|
285
|
+
onImprove: ne,
|
|
286
|
+
onImproveToolInstructions: O,
|
|
287
|
+
onClose: () => v(null),
|
|
288
|
+
onSave: re
|
|
293
289
|
},
|
|
294
290
|
d.key
|
|
295
291
|
),
|
|
296
|
-
|
|
297
|
-
|
|
292
|
+
s?.kind === "restapi" && /* @__PURE__ */ l(
|
|
293
|
+
Oe,
|
|
298
294
|
{
|
|
299
|
-
initial:
|
|
295
|
+
initial: s.initialRest,
|
|
300
296
|
charLimits: S,
|
|
301
|
-
onImprove:
|
|
302
|
-
onClose: () =>
|
|
303
|
-
onSave:
|
|
297
|
+
onImprove: O,
|
|
298
|
+
onClose: () => p(null),
|
|
299
|
+
onSave: le
|
|
304
300
|
},
|
|
305
|
-
|
|
301
|
+
s.key
|
|
306
302
|
),
|
|
307
|
-
|
|
303
|
+
s?.kind === "config" && s.toolKey && B && /* @__PURE__ */ l(
|
|
308
304
|
we,
|
|
309
305
|
{
|
|
310
|
-
toolKey:
|
|
311
|
-
template:
|
|
312
|
-
initial:
|
|
306
|
+
toolKey: s.toolKey,
|
|
307
|
+
template: B,
|
|
308
|
+
initial: s.initialConfig,
|
|
313
309
|
charLimits: S,
|
|
314
|
-
onImprove:
|
|
315
|
-
onClose: () =>
|
|
316
|
-
onSave:
|
|
310
|
+
onImprove: O,
|
|
311
|
+
onClose: () => p(null),
|
|
312
|
+
onSave: ie
|
|
317
313
|
},
|
|
318
|
-
|
|
314
|
+
s.key
|
|
319
315
|
)
|
|
320
316
|
] });
|
|
321
317
|
};
|
|
322
318
|
export {
|
|
323
|
-
|
|
319
|
+
ao as Step3HowItResponds
|
|
324
320
|
};
|
|
325
321
|
//# sourceMappingURL=Step3HowItResponds.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Step3HowItResponds.js","sources":["../../../../../src/components/agent-builder/steps/Step3HowItResponds.tsx"],"sourcesContent":["import React, { useCallback, useEffect, useRef, useState } from 'react';\nimport { Dropdown, unwrapDropdownValue } from '@src/components/dropdown';\nimport { SingleOption } from '@src/components/dropdown/type';\nimport { TitleSmall } from '@src/components/TypographyStyle';\nimport { COLORS } from '@src/constants/Theme';\nimport {\n\tAgentTool,\n\tConfigToolConfig,\n\tConfigToolKey,\n\tRestApiToolConfig,\n\tSubAgentDraft,\n\tSubAgentRef,\n} from '../AgentBuilder.model';\nimport {\n\tSectionBodyWrap,\n\tSideSection,\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 { 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 {\n\tCONFIG_TOOL_SOURCES,\n\tTOOL_ACTION_SOURCES,\n\tTOOL_SOURCE_LABELS,\n\tToolAction,\n\tToolSource,\n} from '../constants/tools';\nimport { useAgentBuilderContext } from '../context/AgentBuilderContext';\nimport {\n\tappTypeLabel,\n\tbuildAgentMentionItems,\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';\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/** 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} = 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\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 }\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: ToolAction[] = TOOL_ACTION_SOURCES.filter(\n\t\t(source) => {\n\t\t\tconst toolKey = CONFIG_TOOL_SOURCES[source];\n\t\t\treturn !toolKey || Boolean(configToolTemplates?.[toolKey]);\n\t\t},\n\t).map((source) => ({\n\t\tsource,\n\t\tlabel: TOOL_SOURCE_LABELS[source],\n\t\ticon: SOURCE_ICONS[source],\n\t\tonSelect: () => openToolAction(source),\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}));\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 = buildAgentMentionItems(availableTools, [], appLabel);\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 what this agent should do. Type @ to reference a tool or sub-agent.\"\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=\"Things this agent must never do. Type @ to reference a tool or sub-agent.\"\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={(id) => {\n\t\t\t\t\t\t\t// Always drop a chip at the cursor; addReference dedupes and reads\n\t\t\t\t\t\t\t// the latest value.\n\t\t\t\t\t\t\tinsertMention('tool', id);\n\t\t\t\t\t\t\taddReference('tool', id);\n\t\t\t\t\t\t}}\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/>\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\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{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<TitleSmall color={COLORS.content.secondary}>\n\t\t\t\t\t\t\t\tSelect AI model\n\t\t\t\t\t\t\t</TitleSmall>\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\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\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\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\t\t</Step3Root>\n\t);\n};\n"],"names":["toolIconEl","source","renderSourceIcon","sourceIcon","toolOption","ToolSource","STEP","STEP_DEFINITIONS","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","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","toolItems","tool","restApiItems","restApiToolName","SOURCE_ICONS","configToolItems","configToolName","allToolItems","toolActionSources","TOOL_ACTION_SOURCES","TOOL_SOURCE_LABELS","toolOptions","toolSourceGroups","order","bySource","src","toolSourceLabel","subAgentItems","sub","subAgentOptions","appLabel","appTypeLabel","toolMentionItems","buildAgentMentionItems","subAgentMentionItems","modelOptions","m","selectedModel","openConfigTemplate","Step3Root","jsx","StepSectionHeader","jsxs","Step3Grid","SectionBodyWrap","MentionField","Step3Divider","SelectableListSection","SideSection","TitleSmall","COLORS","Dropdown","opt","v","unwrapDropdownValue","CreateSubAgentPanel","RestApiToolPanel","ConfigToolPanel"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"Step3HowItResponds.js","sources":["../../../../../src/components/agent-builder/steps/Step3HowItResponds.tsx"],"sourcesContent":["import React, { useCallback, useEffect, useRef, useState } from 'react';\nimport { Dropdown, unwrapDropdownValue } from '@src/components/dropdown';\nimport { SingleOption } from '@src/components/dropdown/type';\nimport { TitleSmall } from '@src/components/TypographyStyle';\nimport { COLORS } from '@src/constants/Theme';\nimport {\n\tAgentTool,\n\tConfigToolConfig,\n\tConfigToolKey,\n\tRestApiToolConfig,\n\tSubAgentDraft,\n\tSubAgentRef,\n} from '../AgentBuilder.model';\nimport {\n\tSectionBodyWrap,\n\tSideSection,\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 { 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\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/** 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} = 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\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 }\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);\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}));\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 = buildAgentMentionItems(availableTools, [], appLabel);\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 what this agent should do. Type @ to reference a tool or sub-agent.\"\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=\"Things this agent must never do. Type @ to reference a tool or sub-agent.\"\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={(id) => {\n\t\t\t\t\t\t\t// Always drop a chip at the cursor; addReference dedupes and reads\n\t\t\t\t\t\t\t// the latest value.\n\t\t\t\t\t\t\tinsertMention('tool', id);\n\t\t\t\t\t\t\taddReference('tool', id);\n\t\t\t\t\t\t}}\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{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<TitleSmall color={COLORS.content.secondary}>\n\t\t\t\t\t\t\t\tSelect AI model\n\t\t\t\t\t\t\t</TitleSmall>\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\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\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\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\t\t</Step3Root>\n\t);\n};\n"],"names":["toolIconEl","source","renderSourceIcon","sourceIcon","toolOption","ToolSource","STEP","STEP_DEFINITIONS","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","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","toolItems","tool","restApiItems","restApiToolName","SOURCE_ICONS","configToolItems","configToolName","allToolItems","toolActionSources","buildToolActions","toolOptions","toolSourceGroups","order","bySource","src","toolSourceLabel","subAgentItems","sub","subAgentOptions","appLabel","appTypeLabel","toolMentionItems","buildAgentMentionItems","subAgentMentionItems","modelOptions","m","selectedModel","openConfigTemplate","Step3Root","jsx","StepSectionHeader","jsxs","Step3Grid","SectionBodyWrap","MentionField","Step3Divider","SelectableListSection","SideSection","TitleSmall","COLORS","Dropdown","opt","v","unwrapDropdownValue","CreateSubAgentPanel","RestApiToolPanel","ConfigToolPanel"],"mappings":"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"}
|
|
@@ -1,23 +1,23 @@
|
|
|
1
|
-
import
|
|
2
|
-
import
|
|
3
|
-
import
|
|
1
|
+
import m from "../../../assets/icons/ManifestGlass.svg.js";
|
|
2
|
+
import c from "../../../assets/icons/Shopify.svg.js";
|
|
3
|
+
import e from "react";
|
|
4
4
|
import { ToolSource as r } from "../constants/tools.js";
|
|
5
|
-
import
|
|
5
|
+
import n from "../../../icons/Social/Social/SlackIcon.js";
|
|
6
6
|
import i from "../../../icons/Informational/Communication/Email.js";
|
|
7
|
-
import
|
|
8
|
-
const
|
|
9
|
-
[r.Manifest]: { Icon:
|
|
10
|
-
[r.Shopify]: { Icon:
|
|
11
|
-
[r.RestApi]: { Icon:
|
|
7
|
+
import S from "../../../icons/BIK AI specific/Webhook.js";
|
|
8
|
+
const f = {
|
|
9
|
+
[r.Manifest]: { Icon: m, w: 24, h: 24 },
|
|
10
|
+
[r.Shopify]: { Icon: c, w: 21, h: 24 },
|
|
11
|
+
[r.RestApi]: { Icon: S, w: 20, h: 20 },
|
|
12
12
|
[r.EmailHandover]: { Icon: i, w: 20, h: 20 },
|
|
13
|
-
[r.Slack]: { Icon:
|
|
14
|
-
},
|
|
13
|
+
[r.Slack]: { Icon: n, w: 20, h: 20 }
|
|
14
|
+
}, w = (o) => o ? f[o] : void 0, g = (o, t = 0) => o ? e.createElement(o.Icon, {
|
|
15
15
|
width: o.w + t,
|
|
16
16
|
height: o.h + t
|
|
17
17
|
}) : null;
|
|
18
18
|
export {
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
19
|
+
f as SOURCE_ICONS,
|
|
20
|
+
g as renderSourceIcon,
|
|
21
|
+
w as sourceIcon
|
|
22
22
|
};
|
|
23
23
|
//# sourceMappingURL=sourceIcons.js.map
|