@bikdotai/bik-component-library 0.0.829 → 0.0.830-beta.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/cjs/components/agent-builder/AgentBuilder.js +1 -1
- package/dist/cjs/components/agent-builder/AgentBuilder.js.map +1 -1
- package/dist/cjs/components/agent-builder/AgentBuilder.styled.js +17 -65
- package/dist/cjs/components/agent-builder/AgentBuilder.styled.js.map +1 -1
- package/dist/cjs/components/agent-builder/components/ConfigToolPanel.js +41 -0
- package/dist/cjs/components/agent-builder/components/ConfigToolPanel.js.map +1 -0
- 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/DrawerHeaderText.js +9 -0
- package/dist/cjs/components/agent-builder/components/DrawerHeaderText.js.map +1 -0
- package/dist/cjs/components/agent-builder/components/MentionEditor.js +1 -1
- package/dist/cjs/components/agent-builder/components/MentionEditor.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 +20 -20
- package/dist/cjs/components/agent-builder/components/MentionPicker.js.map +1 -1
- package/dist/cjs/components/agent-builder/components/RestApiToolPanel.js +23 -0
- package/dist/cjs/components/agent-builder/components/RestApiToolPanel.js.map +1 -0
- package/dist/cjs/components/agent-builder/components/SelectableListSection.js +5 -5
- package/dist/cjs/components/agent-builder/components/SelectableListSection.js.map +1 -1
- package/dist/cjs/components/agent-builder/components/ToolInstructionsField.js +5 -0
- package/dist/cjs/components/agent-builder/components/ToolInstructionsField.js.map +1 -0
- package/dist/cjs/components/agent-builder/constants/tools.js +2 -0
- package/dist/cjs/components/agent-builder/constants/tools.js.map +1 -0
- package/dist/cjs/components/agent-builder/context/AgentBuilderContext.js +1 -1
- package/dist/cjs/components/agent-builder/context/AgentBuilderContext.js.map +1 -1
- package/dist/cjs/components/agent-builder/steps/Step3HowItResponds.js +1 -1
- package/dist/cjs/components/agent-builder/steps/Step3HowItResponds.js.map +1 -1
- package/dist/cjs/components/agent-builder/utils/mentionSerialization.js +3 -3
- package/dist/cjs/components/agent-builder/utils/mentionSerialization.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/side-modal/SideModal.style.js +11 -10
- package/dist/cjs/components/side-modal/SideModal.style.js.map +1 -1
- package/dist/cjs/index.js +1 -1
- package/dist/esm/components/agent-builder/AgentBuilder.js +100 -96
- package/dist/esm/components/agent-builder/AgentBuilder.js.map +1 -1
- package/dist/esm/components/agent-builder/AgentBuilder.model.d.ts +144 -1
- package/dist/esm/components/agent-builder/AgentBuilder.styled.d.ts +0 -21
- package/dist/esm/components/agent-builder/AgentBuilder.styled.js +42 -111
- package/dist/esm/components/agent-builder/AgentBuilder.styled.js.map +1 -1
- package/dist/esm/components/agent-builder/components/ConfigToolPanel.d.ts +33 -0
- package/dist/esm/components/agent-builder/components/ConfigToolPanel.js +242 -0
- package/dist/esm/components/agent-builder/components/ConfigToolPanel.js.map +1 -0
- package/dist/esm/components/agent-builder/components/CreateSubAgentPanel.d.ts +9 -1
- package/dist/esm/components/agent-builder/components/CreateSubAgentPanel.js +318 -219
- package/dist/esm/components/agent-builder/components/CreateSubAgentPanel.js.map +1 -1
- package/dist/esm/components/agent-builder/components/DrawerHeaderText.d.ts +25 -0
- package/dist/esm/components/agent-builder/components/DrawerHeaderText.js +32 -0
- package/dist/esm/components/agent-builder/components/DrawerHeaderText.js.map +1 -0
- package/dist/esm/components/agent-builder/components/MentionEditor.d.ts +6 -0
- package/dist/esm/components/agent-builder/components/MentionEditor.js +38 -30
- package/dist/esm/components/agent-builder/components/MentionEditor.js.map +1 -1
- package/dist/esm/components/agent-builder/components/MentionField.js +77 -52
- package/dist/esm/components/agent-builder/components/MentionField.js.map +1 -1
- package/dist/esm/components/agent-builder/components/MentionPicker.d.ts +7 -0
- package/dist/esm/components/agent-builder/components/MentionPicker.js +139 -129
- package/dist/esm/components/agent-builder/components/MentionPicker.js.map +1 -1
- package/dist/esm/components/agent-builder/components/RestApiToolPanel.d.ts +27 -0
- package/dist/esm/components/agent-builder/components/RestApiToolPanel.js +267 -0
- package/dist/esm/components/agent-builder/components/RestApiToolPanel.js.map +1 -0
- package/dist/esm/components/agent-builder/components/SelectableListSection.d.ts +14 -0
- package/dist/esm/components/agent-builder/components/SelectableListSection.js +166 -140
- package/dist/esm/components/agent-builder/components/SelectableListSection.js.map +1 -1
- package/dist/esm/components/agent-builder/components/ToolInstructionsField.d.ts +19 -0
- package/dist/esm/components/agent-builder/components/ToolInstructionsField.js +66 -0
- package/dist/esm/components/agent-builder/components/ToolInstructionsField.js.map +1 -0
- package/dist/esm/components/agent-builder/constants/tools.d.ts +65 -0
- package/dist/esm/components/agent-builder/constants/tools.js +29 -0
- package/dist/esm/components/agent-builder/constants/tools.js.map +1 -0
- package/dist/esm/components/agent-builder/context/AgentBuilderContext.d.ts +19 -1
- package/dist/esm/components/agent-builder/context/AgentBuilderContext.js +169 -140
- package/dist/esm/components/agent-builder/context/AgentBuilderContext.js.map +1 -1
- package/dist/esm/components/agent-builder/index.d.ts +2 -1
- package/dist/esm/components/agent-builder/steps/Step3HowItResponds.js +241 -141
- package/dist/esm/components/agent-builder/steps/Step3HowItResponds.js.map +1 -1
- package/dist/esm/components/agent-builder/utils/mentionSerialization.d.ts +18 -3
- package/dist/esm/components/agent-builder/utils/mentionSerialization.js +81 -62
- package/dist/esm/components/agent-builder/utils/mentionSerialization.js.map +1 -1
- package/dist/esm/components/agent-builder/utils/sourceIcons.d.ts +15 -9
- package/dist/esm/components/agent-builder/utils/sourceIcons.js +16 -8
- package/dist/esm/components/agent-builder/utils/sourceIcons.js.map +1 -1
- package/dist/esm/components/side-modal/SideModal.style.js +1 -0
- package/dist/esm/components/side-modal/SideModal.style.js.map +1 -1
- package/dist/esm/index.js +97 -95
- package/dist/esm/index.js.map +1 -1
- package/package.json +2 -1
|
@@ -4,5 +4,6 @@ export type { AgentDraft } from './hooks/useAgentDraft';
|
|
|
4
4
|
export { AGENT_CHAR_LIMITS } from './constants/charLimits';
|
|
5
5
|
export type { AgentCharLimits } from './constants/charLimits';
|
|
6
6
|
export { STEP_DEFINITIONS } from './constants/steps';
|
|
7
|
+
export { ToolSource } from './constants/tools';
|
|
7
8
|
export { buildAgentMentionItems, editorDocToInstructions, instructionsToEditorHtml, } from './utils/mentionSerialization';
|
|
8
|
-
export type { AgentBuilderProps, AgentBuilderConfig, AgentValue, AgentStatus as AgentBuilderStatus, StepKey, StepValidation, TriggerMode, AgentTriggerValue, AgentHandoverConfig, HandoverMethod, AgentTool, SubAgentRef, SubAgentDraft, IntentOption, ModelOption, } from './AgentBuilder.model';
|
|
9
|
+
export type { AgentBuilderProps, AgentBuilderConfig, AgentValue, AgentStatus as AgentBuilderStatus, StepKey, StepValidation, TriggerMode, AgentTriggerValue, AgentHandoverConfig, HandoverMethod, AgentTool, SubAgentRef, SubAgentDraft, IntentOption, ModelOption, RestApiToolConfig, RestApiMethod, RestApiHeader, ConfigToolConfig, ConfigToolKey, ParamField, ParamsBlob, ToolRef, CatalogTool, CustomTool, } from './AgentBuilder.model';
|
|
@@ -1,225 +1,325 @@
|
|
|
1
|
-
import { jsxs as
|
|
2
|
-
import { useState as
|
|
3
|
-
import { TitleSmall as
|
|
4
|
-
import { COLORS as
|
|
5
|
-
import { Step3Root as
|
|
6
|
-
import {
|
|
7
|
-
import {
|
|
8
|
-
import {
|
|
9
|
-
import {
|
|
10
|
-
import {
|
|
11
|
-
import {
|
|
12
|
-
import {
|
|
13
|
-
import {
|
|
14
|
-
import {
|
|
15
|
-
import {
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
1
|
+
import { jsxs as T, jsx as l } from "react/jsx-runtime";
|
|
2
|
+
import { useState as N, useRef as j, useCallback as r, useEffect as W } from "react";
|
|
3
|
+
import { TitleSmall as $ } from "../../TypographyStyle.js";
|
|
4
|
+
import { COLORS as z } from "../../../constants/Theme.js";
|
|
5
|
+
import { Step3Root as ve, Step3Grid as Ie, SectionBodyWrap as V, Step3Divider as Ce, SideSection as Oe } from "../AgentBuilder.styled.js";
|
|
6
|
+
import { ConfigToolPanel as we } from "../components/ConfigToolPanel.js";
|
|
7
|
+
import { CreateSubAgentPanel as Re } from "../components/CreateSubAgentPanel.js";
|
|
8
|
+
import { MentionField as q } from "../components/MentionField.js";
|
|
9
|
+
import { RestApiToolPanel as ke } from "../components/RestApiToolPanel.js";
|
|
10
|
+
import { SelectableListSection as J } from "../components/SelectableListSection.js";
|
|
11
|
+
import { StepSectionHeader as _e } from "../components/StepSectionHeader.js";
|
|
12
|
+
import { STEP_DEFINITIONS as Ee } from "../constants/steps.js";
|
|
13
|
+
import { CONFIG_TOOL_SOURCES as Q, ToolSource as g, TOOL_ACTION_SOURCES as Le, TOOL_SOURCE_LABELS as Me } from "../constants/tools.js";
|
|
14
|
+
import { useAgentBuilderContext as xe } from "../context/AgentBuilderContext.js";
|
|
15
|
+
import { restApiMentionItem as Ke, configToolMentionItem as Ne, restApiToolName as Pe, configToolName as De, toolSourceLabel as He, buildAgentMentionItems as X, appTypeLabel as Y } from "../utils/mentionSerialization.js";
|
|
16
|
+
import { sourceIcon as te, SOURCE_ICONS as P, renderSourceIcon as Be } from "../utils/sourceIcons.js";
|
|
17
|
+
import { Dropdown as Fe } from "../../dropdown/Dropdown.js";
|
|
18
|
+
import { unwrapDropdownValue as Ge } from "../../dropdown/utils.js";
|
|
19
|
+
const Ue = (t) => Be(te(t)) ?? void 0, Z = (t) => ({
|
|
20
|
+
label: t.display_name,
|
|
21
|
+
value: t.tool_id,
|
|
22
|
+
leadingIcon: Ue(t.source ?? g.Manifest)
|
|
23
|
+
}), ee = Ee[2], oe = (t, i) => {
|
|
24
|
+
const f = t ?? [];
|
|
25
|
+
return f.some((c) => c.id === i.id) ? f.map((c) => c.id === i.id ? i : c) : [...f, i];
|
|
26
|
+
}, so = () => {
|
|
21
27
|
const {
|
|
22
|
-
value:
|
|
23
|
-
patch:
|
|
24
|
-
updateField:
|
|
25
|
-
addReference:
|
|
26
|
-
removeReference:
|
|
27
|
-
availableTools:
|
|
28
|
-
availableSubAgents:
|
|
29
|
-
availableModels:
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
28
|
+
value: t,
|
|
29
|
+
patch: i,
|
|
30
|
+
updateField: f,
|
|
31
|
+
addReference: c,
|
|
32
|
+
removeReference: D,
|
|
33
|
+
availableTools: b,
|
|
34
|
+
availableSubAgents: ne,
|
|
35
|
+
availableModels: C,
|
|
36
|
+
configToolTemplates: O,
|
|
37
|
+
applicationType: H,
|
|
38
|
+
charLimits: S,
|
|
39
|
+
insertMention: s,
|
|
40
|
+
onCreateSubAgent: p,
|
|
41
|
+
onFetchSubAgent: h,
|
|
42
|
+
onUpdateSubAgent: w,
|
|
43
|
+
onImproveSubAgent: le,
|
|
44
|
+
onImproveToolInstructions: R,
|
|
45
|
+
registerSubAgentCreator: k,
|
|
46
|
+
registerToolActionHandler: _
|
|
47
|
+
} = xe(), [d, y] = N(null), A = j(0), [a, u] = N(null), v = j(0), E = r((e) => {
|
|
48
|
+
v.current += 1, u({
|
|
49
|
+
key: v.current,
|
|
50
|
+
kind: "restapi",
|
|
51
|
+
initialRest: e
|
|
52
|
+
});
|
|
53
|
+
}, []), L = r(
|
|
54
|
+
(e, o) => {
|
|
55
|
+
v.current += 1, u({
|
|
56
|
+
key: v.current,
|
|
57
|
+
kind: "config",
|
|
58
|
+
toolKey: e,
|
|
59
|
+
initialConfig: o
|
|
60
|
+
});
|
|
61
|
+
},
|
|
62
|
+
[]
|
|
63
|
+
), ie = r(
|
|
64
|
+
(e) => {
|
|
65
|
+
const o = !(t.restApiTools ?? []).some((n) => n.id === e.id);
|
|
66
|
+
i({ restApiTools: oe(t.restApiTools, e) }), o && s("tool", e.id, Ke(e).label), u(null);
|
|
67
|
+
},
|
|
68
|
+
[i, t.restApiTools, s]
|
|
69
|
+
), ae = r(
|
|
70
|
+
(e) => {
|
|
71
|
+
const o = !(t.configTools ?? []).some((n) => n.id === e.id);
|
|
72
|
+
i({ configTools: oe(t.configTools, e) }), o && s("tool", e.id, Ne(e).label), u(null);
|
|
73
|
+
},
|
|
74
|
+
[i, t.configTools, s]
|
|
75
|
+
), M = r(
|
|
76
|
+
(e) => {
|
|
77
|
+
const o = Q[e];
|
|
78
|
+
o ? L(o) : E();
|
|
79
|
+
},
|
|
80
|
+
[L, E]
|
|
81
|
+
);
|
|
82
|
+
W(() => (_(M), () => _(null)), [_, M]);
|
|
83
|
+
const [se, B] = N([]), I = /* @__PURE__ */ new Map();
|
|
84
|
+
ne.forEach((e) => I.set(e.id, e)), se.forEach((e) => I.set(e.id, e));
|
|
85
|
+
const F = Array.from(I.values()), x = r(() => {
|
|
86
|
+
A.current += 1, y({ key: A.current, title: "Create sub-agent" });
|
|
42
87
|
}, []);
|
|
43
|
-
|
|
44
|
-
if (
|
|
45
|
-
return
|
|
46
|
-
}, [
|
|
47
|
-
const
|
|
88
|
+
W(() => {
|
|
89
|
+
if (p)
|
|
90
|
+
return k(x), () => k(null);
|
|
91
|
+
}, [k, x, p]);
|
|
92
|
+
const re = r(
|
|
48
93
|
async (e) => {
|
|
49
|
-
if (!
|
|
94
|
+
if (!h)
|
|
50
95
|
return;
|
|
51
|
-
const
|
|
52
|
-
|
|
53
|
-
key:
|
|
96
|
+
const o = await h(e);
|
|
97
|
+
A.current += 1, y({
|
|
98
|
+
key: A.current,
|
|
54
99
|
title: "Edit sub-agent",
|
|
55
100
|
editingId: e,
|
|
56
|
-
initial:
|
|
101
|
+
initial: o
|
|
57
102
|
});
|
|
58
103
|
},
|
|
59
|
-
[
|
|
60
|
-
),
|
|
104
|
+
[h]
|
|
105
|
+
), ce = r(
|
|
61
106
|
async (e) => {
|
|
62
|
-
if (
|
|
63
|
-
if (
|
|
64
|
-
const
|
|
65
|
-
|
|
66
|
-
...n.filter((
|
|
67
|
-
|
|
107
|
+
if (d?.editingId) {
|
|
108
|
+
if (w) {
|
|
109
|
+
const o = await w(d.editingId, e);
|
|
110
|
+
B((n) => [
|
|
111
|
+
...n.filter((m) => m.id !== o.id),
|
|
112
|
+
o
|
|
68
113
|
]);
|
|
69
114
|
}
|
|
70
|
-
} else if (
|
|
71
|
-
const
|
|
72
|
-
|
|
115
|
+
} else if (p) {
|
|
116
|
+
const o = await p(e);
|
|
117
|
+
B((n) => [...n, o]), i({ subagents: [...t.subagents, o.id] }), s("subagent", o.id, `sub-agent: ${o.name}`);
|
|
73
118
|
}
|
|
74
|
-
|
|
119
|
+
y(null);
|
|
75
120
|
},
|
|
76
121
|
[
|
|
77
|
-
|
|
78
|
-
|
|
122
|
+
d,
|
|
123
|
+
w,
|
|
124
|
+
p,
|
|
79
125
|
i,
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
d
|
|
126
|
+
t.subagents,
|
|
127
|
+
s
|
|
83
128
|
]
|
|
84
|
-
),
|
|
85
|
-
const
|
|
86
|
-
return
|
|
129
|
+
), de = t.tools.map((e) => {
|
|
130
|
+
const o = b.find((n) => n.tool_id === e);
|
|
131
|
+
return o ? {
|
|
87
132
|
id: e,
|
|
88
|
-
label:
|
|
89
|
-
icon:
|
|
133
|
+
label: o.display_name,
|
|
134
|
+
icon: te(o.source ?? g.Manifest)
|
|
90
135
|
} : null;
|
|
91
|
-
}).filter((e) => e !== null),
|
|
92
|
-
|
|
93
|
-
|
|
94
|
-
|
|
95
|
-
|
|
136
|
+
}).filter((e) => e !== null), pe = (t.restApiTools ?? []).map(
|
|
137
|
+
(e) => ({
|
|
138
|
+
id: e.id,
|
|
139
|
+
label: Pe(e),
|
|
140
|
+
icon: P[g.RestApi],
|
|
141
|
+
onConfigure: () => E(e)
|
|
142
|
+
})
|
|
143
|
+
), ue = (t.configTools ?? []).map(
|
|
144
|
+
(e) => ({
|
|
145
|
+
id: e.id,
|
|
146
|
+
label: De(e),
|
|
147
|
+
icon: P[e.tool_key === "send_slack_message" ? g.Slack : g.EmailHandover],
|
|
148
|
+
onConfigure: () => L(e.tool_key, e)
|
|
149
|
+
})
|
|
150
|
+
), me = [
|
|
151
|
+
...de,
|
|
152
|
+
...pe,
|
|
153
|
+
...ue
|
|
154
|
+
], ge = Le.filter(
|
|
155
|
+
(e) => {
|
|
156
|
+
const o = Q[e];
|
|
157
|
+
return !o || !!O?.[o];
|
|
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 = (() => {
|
|
165
|
+
const e = [], o = /* @__PURE__ */ new Map();
|
|
166
|
+
return b.forEach((n) => {
|
|
167
|
+
const m = n.source ?? g.Manifest;
|
|
168
|
+
o.has(m) || (o.set(m, []), e.push(m)), o.get(m)?.push(Z(n));
|
|
96
169
|
}), e.map((n) => ({
|
|
97
170
|
source: n,
|
|
98
|
-
label:
|
|
99
|
-
options:
|
|
171
|
+
label: He(n),
|
|
172
|
+
options: o.get(n) ?? []
|
|
100
173
|
}));
|
|
101
|
-
})(),
|
|
102
|
-
const
|
|
103
|
-
return
|
|
104
|
-
}).filter((e) => e !== null),
|
|
174
|
+
})(), Se = t.subagents.map((e) => {
|
|
175
|
+
const o = I.get(e);
|
|
176
|
+
return o ? { id: e, label: o.name } : null;
|
|
177
|
+
}).filter((e) => e !== null), Te = F.map((e) => ({
|
|
105
178
|
label: e.name,
|
|
106
179
|
value: e.id
|
|
107
|
-
})),
|
|
180
|
+
})), G = Y(H), he = X(b, [], G), ye = X(
|
|
108
181
|
[],
|
|
109
|
-
|
|
110
|
-
|
|
111
|
-
),
|
|
182
|
+
F,
|
|
183
|
+
G
|
|
184
|
+
), Ae = C.map((e) => ({
|
|
112
185
|
label: e.label,
|
|
113
186
|
value: e.value,
|
|
114
|
-
selected: e.value ===
|
|
115
|
-
})),
|
|
116
|
-
return /* @__PURE__ */
|
|
117
|
-
/* @__PURE__ */
|
|
118
|
-
/* @__PURE__ */
|
|
119
|
-
/* @__PURE__ */
|
|
120
|
-
/* @__PURE__ */
|
|
121
|
-
|
|
187
|
+
selected: e.value === t.model
|
|
188
|
+
})), K = C.find((e) => e.value === t.model), U = a?.kind === "config" && a.toolKey ? O?.[a.toolKey] : void 0;
|
|
189
|
+
return /* @__PURE__ */ T(ve, { children: [
|
|
190
|
+
/* @__PURE__ */ l(_e, { title: ee.title, helper: ee.helper }),
|
|
191
|
+
/* @__PURE__ */ T(Ie, { $grow: !0, children: [
|
|
192
|
+
/* @__PURE__ */ T(V, { children: [
|
|
193
|
+
/* @__PURE__ */ l(
|
|
194
|
+
q,
|
|
122
195
|
{
|
|
123
196
|
fieldKey: "instructions",
|
|
124
197
|
"data-test": "agent-instructions",
|
|
125
198
|
label: "Instructions",
|
|
126
|
-
maxLength:
|
|
199
|
+
maxLength: S.instructions,
|
|
127
200
|
placeholder: "Write what this agent should do. Type @ to reference a tool or sub-agent.",
|
|
128
201
|
minHeight: "200px"
|
|
129
202
|
}
|
|
130
203
|
),
|
|
131
|
-
/* @__PURE__ */
|
|
132
|
-
|
|
204
|
+
/* @__PURE__ */ l(
|
|
205
|
+
q,
|
|
133
206
|
{
|
|
134
207
|
fieldKey: "guardrail",
|
|
135
208
|
"data-test": "agent-guardrail",
|
|
136
209
|
label: "Guardrails",
|
|
137
|
-
maxLength:
|
|
210
|
+
maxLength: S.guardrail,
|
|
138
211
|
placeholder: "Things this agent must never do. Type @ to reference a tool or sub-agent.",
|
|
139
212
|
minHeight: "140px"
|
|
140
213
|
}
|
|
141
214
|
)
|
|
142
215
|
] }),
|
|
143
|
-
/* @__PURE__ */
|
|
144
|
-
/* @__PURE__ */
|
|
145
|
-
/* @__PURE__ */
|
|
146
|
-
|
|
216
|
+
/* @__PURE__ */ l(Ce, {}),
|
|
217
|
+
/* @__PURE__ */ T(V, { children: [
|
|
218
|
+
/* @__PURE__ */ l(
|
|
219
|
+
J,
|
|
147
220
|
{
|
|
148
221
|
title: "Tools",
|
|
149
222
|
helper: "Actions this agent can take while responding.",
|
|
150
223
|
dataTestPrefix: "agent-tools",
|
|
151
|
-
items:
|
|
152
|
-
addableOptions:
|
|
153
|
-
sourceGroups:
|
|
154
|
-
mentionItems:
|
|
224
|
+
items: me,
|
|
225
|
+
addableOptions: fe,
|
|
226
|
+
sourceGroups: be,
|
|
227
|
+
mentionItems: he,
|
|
228
|
+
actionSources: ge,
|
|
155
229
|
emptyText: "No tools added yet.",
|
|
156
230
|
onAdd: (e) => {
|
|
157
|
-
|
|
231
|
+
s("tool", e), c("tool", e);
|
|
158
232
|
},
|
|
159
|
-
onRemove: (e) =>
|
|
233
|
+
onRemove: (e) => D("tool", e)
|
|
160
234
|
}
|
|
161
235
|
),
|
|
162
|
-
/* @__PURE__ */
|
|
163
|
-
|
|
236
|
+
/* @__PURE__ */ l(
|
|
237
|
+
J,
|
|
164
238
|
{
|
|
165
239
|
title: "Sub-agents",
|
|
166
240
|
helper: "Other agents this agent can hand off the conversation to.",
|
|
167
241
|
dataTestPrefix: "agent-subagents",
|
|
168
|
-
items:
|
|
169
|
-
addableOptions:
|
|
170
|
-
mentionItems:
|
|
242
|
+
items: Se,
|
|
243
|
+
addableOptions: Te,
|
|
244
|
+
mentionItems: ye,
|
|
171
245
|
emptyText: "No sub-agents added yet.",
|
|
172
246
|
onAdd: (e) => {
|
|
173
|
-
|
|
247
|
+
s("subagent", e), c("subagent", e);
|
|
174
248
|
},
|
|
175
|
-
onRemove: (e) =>
|
|
176
|
-
onConfigure:
|
|
177
|
-
createOption:
|
|
249
|
+
onRemove: (e) => D("subagent", e),
|
|
250
|
+
onConfigure: h ? re : void 0,
|
|
251
|
+
createOption: p ? { label: "Create new", onSelect: x } : void 0
|
|
178
252
|
}
|
|
179
253
|
),
|
|
180
|
-
|
|
181
|
-
/* @__PURE__ */
|
|
182
|
-
/* @__PURE__ */
|
|
183
|
-
/* @__PURE__ */
|
|
184
|
-
|
|
254
|
+
C.length > 0 && /* @__PURE__ */ T(Oe, { children: [
|
|
255
|
+
/* @__PURE__ */ l($, { color: z.content.primary, children: "Advanced settings" }),
|
|
256
|
+
/* @__PURE__ */ l($, { color: z.content.secondary, children: "Select AI model" }),
|
|
257
|
+
/* @__PURE__ */ l(
|
|
258
|
+
Fe,
|
|
185
259
|
{
|
|
186
260
|
"data-test": "agent-model",
|
|
187
261
|
size: "small",
|
|
188
262
|
width: "100%",
|
|
189
263
|
placeHolder: "Select model",
|
|
190
|
-
options:
|
|
191
|
-
defaultOptions:
|
|
264
|
+
options: Ae,
|
|
265
|
+
defaultOptions: K ? [
|
|
192
266
|
{
|
|
193
|
-
label:
|
|
194
|
-
value:
|
|
267
|
+
label: K.label,
|
|
268
|
+
value: K.value
|
|
195
269
|
}
|
|
196
270
|
] : void 0,
|
|
197
271
|
onSelect: (e) => {
|
|
198
|
-
const
|
|
199
|
-
|
|
272
|
+
const o = Ge(e);
|
|
273
|
+
o && f("model", o);
|
|
200
274
|
}
|
|
201
275
|
}
|
|
202
276
|
)
|
|
203
277
|
] })
|
|
204
278
|
] })
|
|
205
279
|
] }),
|
|
206
|
-
|
|
207
|
-
|
|
280
|
+
d && /* @__PURE__ */ l(
|
|
281
|
+
Re,
|
|
282
|
+
{
|
|
283
|
+
title: d.title,
|
|
284
|
+
initial: d.initial,
|
|
285
|
+
availableTools: b,
|
|
286
|
+
configToolTemplates: O,
|
|
287
|
+
appLabel: Y(H),
|
|
288
|
+
charLimits: S,
|
|
289
|
+
onImprove: le,
|
|
290
|
+
onImproveToolInstructions: R,
|
|
291
|
+
onClose: () => y(null),
|
|
292
|
+
onSave: ce
|
|
293
|
+
},
|
|
294
|
+
d.key
|
|
295
|
+
),
|
|
296
|
+
a?.kind === "restapi" && /* @__PURE__ */ l(
|
|
297
|
+
ke,
|
|
298
|
+
{
|
|
299
|
+
initial: a.initialRest,
|
|
300
|
+
charLimits: S,
|
|
301
|
+
onImprove: R,
|
|
302
|
+
onClose: () => u(null),
|
|
303
|
+
onSave: ie
|
|
304
|
+
},
|
|
305
|
+
a.key
|
|
306
|
+
),
|
|
307
|
+
a?.kind === "config" && a.toolKey && U && /* @__PURE__ */ l(
|
|
308
|
+
we,
|
|
208
309
|
{
|
|
209
|
-
|
|
210
|
-
|
|
211
|
-
|
|
212
|
-
|
|
213
|
-
|
|
214
|
-
|
|
215
|
-
|
|
216
|
-
onSave: $
|
|
310
|
+
toolKey: a.toolKey,
|
|
311
|
+
template: U,
|
|
312
|
+
initial: a.initialConfig,
|
|
313
|
+
charLimits: S,
|
|
314
|
+
onImprove: R,
|
|
315
|
+
onClose: () => u(null),
|
|
316
|
+
onSave: ae
|
|
217
317
|
},
|
|
218
|
-
|
|
318
|
+
a.key
|
|
219
319
|
)
|
|
220
320
|
] });
|
|
221
321
|
};
|
|
222
322
|
export {
|
|
223
|
-
|
|
323
|
+
so as Step3HowItResponds
|
|
224
324
|
};
|
|
225
325
|
//# 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 { AgentTool, SubAgentDraft, SubAgentRef } from '../AgentBuilder.model';\nimport {\n\tSectionBodyWrap,\n\tSideSection,\n\tStep3Divider,\n\tStep3Grid,\n\tStep3Root,\n} from '../AgentBuilder.styled';\nimport { CreateSubAgentPanel } from '../components/CreateSubAgentPanel';\nimport { MentionField } from '../components/MentionField';\nimport {\n\tSelectableItem,\n\tSelectableListSection,\n\tSourceGroup,\n} from '../components/SelectableListSection';\nimport { StepSectionHeader } from '../components/StepSectionHeader';\nimport { STEP_DEFINITIONS } from '../constants/steps';\nimport { useAgentBuilderContext } from '../context/AgentBuilderContext';\nimport {\n\tappTypeLabel,\n\tbuildAgentMentionItems,\n\ttoolSourceLabel,\n} from '../utils/mentionSerialization';\nimport { renderSourceIcon, SOURCE_ICONS } 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(SOURCE_ICONS[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 ?? '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\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\tapplicationType,\n\t\tcharLimits,\n\t\tinsertMention,\n\t\tonCreateSubAgent,\n\t\tonFetchSubAgent,\n\t\tonUpdateSubAgent,\n\t\tonImproveSubAgent,\n\t\tregisterSubAgentCreator,\n\t} = useAgentBuilderContext();\n\n\tconst [panel, setPanel] = useState<SubAgentPanelState | null>(null);\n\tconst panelKeyRef = useRef(0);\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: SOURCE_ICONS[tool.source ?? 'manifest'],\n\t\t\t\t }\n\t\t\t\t: null;\n\t\t})\n\t\t.filter((x): x is SelectableItem => x !== null);\n\n\t// 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 ?? '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\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={toolItems}\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\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\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\tappLabel={appTypeLabel(applicationType)}\n\t\t\t\t\tcharLimits={charLimits}\n\t\t\t\t\tonImprove={onImproveSubAgent}\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\t\t</Step3Root>\n\t);\n};\n"],"names":["toolIconEl","source","renderSourceIcon","SOURCE_ICONS","toolOption","t","STEP","STEP_DEFINITIONS","Step3HowItResponds","value","patch","updateField","addReference","removeReference","availableTools","availableSubAgents","availableModels","applicationType","charLimits","insertMention","onCreateSubAgent","onFetchSubAgent","onUpdateSubAgent","onImproveSubAgent","registerSubAgentCreator","useAgentBuilderContext","panel","setPanel","useState","panelKeyRef","useRef","createdSubAgents","setCreatedSubAgents","subAgentById","s","knownSubAgents","openCreate","useCallback","useEffect","openConfigure","id","data","handlePanelSave","draft","ref","prev","toolItems","tool","x","toolOptions","toolSourceGroups","order","bySource","src","toolSourceLabel","subAgentItems","sub","subAgentOptions","appLabel","appTypeLabel","toolMentionItems","buildAgentMentionItems","subAgentMentionItems","modelOptions","m","selectedModel","Step3Root","jsx","StepSectionHeader","jsxs","Step3Grid","SectionBodyWrap","MentionField","Step3Divider","SelectableListSection","SideSection","TitleSmall","COLORS","Dropdown","opt","v","unwrapDropdownValue","CreateSubAgentPanel"],"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 {\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":";;;;;;;;;;;;;;;;;;AAuDA,MAAMA,KAAa,CAACC,MACnBC,GAAiBC,GAAWF,CAAM,CAAC,KAAK,QAGnCG,IAAa,CAAC,OAAgC;AAAA,EACnD,OAAO,EAAE;AAAA,EACT,OAAO,EAAE;AAAA,EACT,aAAaJ,GAAW,EAAE,UAAUK,EAAW,QAAQ;AACxD,IAEMC,KAAOC,GAAiB,CAAC,GAwBzBC,KAAa,CAClBC,GACAC,MACS;AACT,QAAMC,IAAMF,KAAQ,CAAA;AACpB,SAAOE,EAAI,KAAK,CAACC,MAAMA,EAAE,OAAOF,EAAK,EAAE,IACpCC,EAAI,IAAI,CAACC,MAAOA,EAAE,OAAOF,EAAK,KAAKA,IAAOE,CAAE,IAC5C,CAAC,GAAGD,GAAKD,CAAI;AACjB,GAEaG,KAA+B,MAAM;AACjD,QAAM;AAAA,IACL,OAAAC;AAAA,IACA,OAAAC;AAAA,IACA,aAAAC;AAAA,IACA,cAAAC;AAAA,IACA,iBAAAC;AAAA,IACA,gBAAAC;AAAA,IACA,oBAAAC;AAAA,IACA,iBAAAC;AAAA,IACA,qBAAAC;AAAA,IACA,iBAAAC;AAAA,IACA,YAAAC;AAAA,IACA,eAAAC;AAAA,IACA,kBAAAC;AAAA,IACA,iBAAAC;AAAA,IACA,kBAAAC;AAAA,IACA,mBAAAC;AAAA,IACA,2BAAAC;AAAA,IACA,yBAAAC;AAAA,IACA,2BAAAC;AAAA,EAAA,IACGC,GAAA,GAEE,CAACC,GAAOC,CAAQ,IAAIC,EAAoC,IAAI,GAC5DC,IAAcC,EAAO,CAAC,GAGtB,CAACC,GAAYC,CAAa,IAAIJ,EAAiC,IAAI,GACnEK,IAAmBH,EAAO,CAAC,GAC3BI,IAAcC,EAAY,CAACC,MAAgC;AAChE,IAAAH,EAAiB,WAAW,GAC5BD,EAAc;AAAA,MACb,KAAKC,EAAiB;AAAA,MACtB,MAAM;AAAA,MACN,aAAaG;AAAA,IAAA,CACb;AAAA,EACF,GAAG,CAAA,CAAE,GACCC,IAAiBF;AAAA,IACtB,CAACG,GAAwBF,MAA+B;AACvD,MAAAH,EAAiB,WAAW,GAC5BD,EAAc;AAAA,QACb,KAAKC,EAAiB;AAAA,QACtB,MAAM;AAAA,QACN,SAAAK;AAAA,QACA,eAAeF;AAAA,MAAA,CACf;AAAA,IACF;AAAA,IACA,CAAA;AAAA,EAAC,GAEIG,KAAoBJ;AAAA,IACzB,CAACK,MAA8B;AAC9B,YAAMC,IAAQ,EAAEnC,EAAM,gBAAgB,CAAA,GAAI,KAAK,CAACoC,MAAMA,EAAE,OAAOF,EAAO,EAAE;AACxE,MAAAjC,EAAM,EAAE,cAAcP,GAAWM,EAAM,cAAckC,CAAM,GAAG,GAE1DC,KACHxB,EAAc,QAAQuB,EAAO,IAAIG,GAAmBH,CAAM,EAAE,KAAK,GAElER,EAAc,IAAI;AAAA,IACnB;AAAA,IACA,CAACzB,GAAOD,EAAM,cAAcW,CAAa;AAAA,EAAA,GAEpC2B,KAAuBT;AAAA,IAC5B,CAACK,MAA6B;AAC7B,YAAMC,IAAQ,EAAEnC,EAAM,eAAe,CAAA,GAAI,KAAK,CAACoC,MAAMA,EAAE,OAAOF,EAAO,EAAE;AACvE,MAAAjC,EAAM,EAAE,aAAaP,GAAWM,EAAM,aAAakC,CAAM,GAAG,GACxDC,KACHxB,EAAc,QAAQuB,EAAO,IAAIK,GAAsBL,CAAM,EAAE,KAAK,GAErER,EAAc,IAAI;AAAA,IACnB;AAAA,IACA,CAACzB,GAAOD,EAAM,aAAaW,CAAa;AAAA,EAAA,GAInC6B,IAAiBX;AAAA,IACtB,CAAC1C,MAAuB;AACvB,YAAM6C,IAAUS,EAAoBtD,CAAM;AAC1C,MAAI6C,IACHD,EAAeC,CAAO,IAEtBJ,EAAA;AAAA,IAEF;AAAA,IACA,CAACG,GAAgBH,CAAW;AAAA,EAAA;AAG7B,EAAAc,EAAU,OACTxB,EAA0BsB,CAAc,GACjC,MAAMtB,EAA0B,IAAI,IACzC,CAACA,GAA2BsB,CAAc,CAAC;AAG9C,QAAM,CAACG,IAAkBC,CAAmB,IAAItB,EAAwB,CAAA,CAAE,GAEpEuB,wBAAmB,IAAA;AACzB,EAAAvC,GAAmB,QAAQ,CAACwC,MAAMD,EAAa,IAAIC,EAAE,IAAIA,CAAC,CAAC,GAC3DH,GAAiB,QAAQ,CAACG,MAAMD,EAAa,IAAIC,EAAE,IAAIA,CAAC,CAAC;AACzD,QAAMC,IAAiB,MAAM,KAAKF,EAAa,QAAQ,GAEjDG,IAAanB,EAAY,MAAM;AACpC,IAAAN,EAAY,WAAW,GACvBF,EAAS,EAAE,KAAKE,EAAY,SAAS,OAAO,oBAAoB;AAAA,EACjE,GAAG,CAAA,CAAE;AAGL,EAAAmB,EAAU,MAAM;AACf,QAAK9B;AAGL,aAAAK,EAAwB+B,CAAU,GAC3B,MAAM/B,EAAwB,IAAI;AAAA,EAC1C,GAAG,CAACA,GAAyB+B,GAAYpC,CAAgB,CAAC;AAE1D,QAAMqC,KAAgBpB;AAAA,IACrB,OAAOqB,MAAe;AACrB,UAAI,CAACrC;AACJ;AAED,YAAMsC,IAAO,MAAMtC,EAAgBqC,CAAE;AACrC,MAAA3B,EAAY,WAAW,GACvBF,EAAS;AAAA,QACR,KAAKE,EAAY;AAAA,QACjB,OAAO;AAAA,QACP,WAAW2B;AAAA,QACX,SAASC;AAAA,MAAA,CACT;AAAA,IACF;AAAA,IACA,CAACtC,CAAe;AAAA,EAAA,GAGXuC,KAAkBvB;AAAA,IACvB,OAAOwB,MAAyB;AAC/B,UAAIjC,GAAO;AACV,YAAIN,GAAkB;AACrB,gBAAMwC,IAAM,MAAMxC,EAAiBM,EAAM,WAAWiC,CAAK;AACzD,UAAAT,EAAoB,CAACW,MAAS;AAAA,YAC7B,GAAGA,EAAK,OAAO,CAACT,MAAMA,EAAE,OAAOQ,EAAI,EAAE;AAAA,YACrCA;AAAA,UAAA,CACA;AAAA,QACF;AAAA,iBACU1C,GAAkB;AAC5B,cAAM0C,IAAM,MAAM1C,EAAiByC,CAAK;AACxC,QAAAT,EAAoB,CAACW,MAAS,CAAC,GAAGA,GAAMD,CAAG,CAAC,GAC5CrD,EAAM,EAAE,WAAW,CAAC,GAAGD,EAAM,WAAWsD,EAAI,EAAE,GAAG,GACjD3C,EAAc,YAAY2C,EAAI,IAAI,cAAcA,EAAI,IAAI,EAAE;AAAA,MAC3D;AACA,MAAAjC,EAAS,IAAI;AAAA,IACd;AAAA,IACA;AAAA,MACCD;AAAA,MACAN;AAAA,MACAF;AAAA,MACAX;AAAA,MACAD,EAAM;AAAA,MACNW;AAAA,IAAA;AAAA,EACD,GAGK6C,KAA8BxD,EAAM,MACxC,IAAI,CAACkD,MAA8B;AACnC,UAAMO,IAAOpD,EAAe,KAAK,CAAC+B,MAAMA,EAAE,YAAYc,CAAE;AACxD,WAAOO,IACJ;AAAA,MACA,IAAAP;AAAA,MACA,OAAOO,EAAK;AAAA,MACZ,MAAMpE,GAAWoE,EAAK,UAAUlE,EAAW,QAAQ;AAAA,IAAA,IAEnD;AAAA,EACJ,CAAC,EACA,OAAO,CAACO,MAA2BA,MAAM,IAAI,GAKzC4D,MAAkC1D,EAAM,gBAAgB,CAAA,GAAI;AAAA,IACjE,CAACoC,OAAO;AAAA,MACP,IAAIA,EAAE;AAAA,MACN,OAAOuB,GAAgBvB,CAAC;AAAA,MACxB,MAAMwB,EAAarE,EAAW,OAAO;AAAA,MACrC,aAAa,MAAMqC,EAAYQ,CAAC;AAAA,IAAA;AAAA,EACjC,GAEKyB,MAAqC7D,EAAM,eAAe,CAAA,GAAI;AAAA,IACnE,CAACoC,OAAO;AAAA,MACP,IAAIA,EAAE;AAAA,MACN,OAAO0B,GAAe1B,CAAC;AAAA,MACvB,MAAMwB,EACLxB,EAAE,aAAa,uBACZ7C,EAAW,QACXA,EAAW,aACf;AAAA,MACA,aAAa,MAAMwC,EAAeK,EAAE,UAAUA,CAAC;AAAA,IAAA;AAAA,EAChD,GAEK2B,KAAiC;AAAA,IACtC,GAAGP;AAAA,IACH,GAAGE;AAAA,IACH,GAAGG;AAAA,EAAA,GAOEG,KAAkCC,GAAoB;AAAA,IAC3D,CAAC9E,MAAW;AACX,YAAM6C,IAAUS,EAAoBtD,CAAM;AAC1C,aAAO,CAAC6C,KAAW,EAAQxB,IAAsBwB,CAAO;AAAA,IACzD;AAAA,EAAA,EACC,IAAI,CAAC7C,OAAY;AAAA,IAClB,QAAAA;AAAA,IACA,OAAO+E,GAAmB/E,CAAM;AAAA,IAChC,MAAMyE,EAAazE,CAAM;AAAA,IACzB,UAAU,MAAMqD,EAAerD,CAAM;AAAA,EAAA,EACpC,GAIIgF,KAA8B9D,EAAe,IAAIf,CAAU,GAG3D8E,MAAmC,MAAM;AAC9C,UAAMC,IAAkB,CAAA,GAClBC,wBAAe,IAAA;AACrB,WAAAjE,EAAe,QAAQ,CAAC+B,MAAM;AAC7B,YAAMmC,IAAMnC,EAAE,UAAU7C,EAAW;AACnC,MAAK+E,EAAS,IAAIC,CAAG,MACpBD,EAAS,IAAIC,GAAK,EAAE,GACpBF,EAAM,KAAKE,CAAG,IAEfD,EAAS,IAAIC,CAAG,GAAG,KAAKjF,EAAW8C,CAAC,CAAC;AAAA,IACtC,CAAC,GACMiC,EAAM,IAAI,CAACE,OAAS;AAAA,MAC1B,QAAQA;AAAA,MACR,OAAOC,GAAgBD,CAAG;AAAA,MAC1B,SAASD,EAAS,IAAIC,CAAG,KAAK,CAAA;AAAA,IAAC,EAC9B;AAAA,EACH,GAAA,GAEME,KAAkCzE,EAAM,UAC5C,IAAI,CAACkD,MAA8B;AACnC,UAAMwB,IAAM7B,EAAa,IAAIK,CAAE;AAC/B,WAAOwB,IAAM,EAAE,IAAAxB,GAAI,OAAOwB,EAAI,SAAS;AAAA,EACxC,CAAC,EACA,OAAO,CAAC5E,MAA2BA,MAAM,IAAI,GAEzC6E,KAAkC5B,EAAe,IAAI,CAACD,OAAO;AAAA,IAClE,OAAOA,EAAE;AAAA,IACT,OAAOA,EAAE;AAAA,EAAA,EACR,GAKI8B,IAAWC,EAAapE,CAAe,GACvCqE,KAAmBC,EAAuB1E,GAAgB,CAAA,GAAIuE,CAAQ,GACtEI,KAAuBD;AAAA,IAC5B,CAAA;AAAA,IACAhC;AAAA,IACA6B;AAAA,EAAA,GAGKK,KAA+B1E,EAAgB,IAAI,CAAC2E,OAAO;AAAA,IAChE,OAAOA,EAAE;AAAA,IACT,OAAOA,EAAE;AAAA,IACT,UAAUA,EAAE,UAAUlF,EAAM;AAAA,EAAA,EAC3B,GACImF,IAAgB5E,EAAgB,KAAK,CAAC2E,MAAMA,EAAE,UAAUlF,EAAM,KAAK,GAInEoF,IACL3D,GAAY,SAAS,YAAYA,EAAW,UACzCjB,IAAsBiB,EAAW,OAAO,IACxC;AAEJ,2BACE4D,IAAA,EACA,UAAA;AAAA,IAAA,gBAAAC,EAACC,MAAkB,OAAO/F,GAAK,OAAO,QAAQA,GAAK,QAAQ;AAAA,IAE3D,gBAAAgG,EAACC,IAAA,EAAU,OAAK,IACf,UAAA;AAAA,MAAA,gBAAAD,EAACE,GAAA,EACA,UAAA;AAAA,QAAA,gBAAAJ;AAAA,UAACK;AAAA,UAAA;AAAA,YACA,UAAS;AAAA,YACT,aAAU;AAAA,YACV,OAAM;AAAA,YACN,WAAWjF,EAAW;AAAA,YACtB,aAAY;AAAA,YACZ,WAAU;AAAA,UAAA;AAAA,QAAA;AAAA,QAGX,gBAAA4E;AAAA,UAACK;AAAA,UAAA;AAAA,YACA,UAAS;AAAA,YACT,aAAU;AAAA,YACV,OAAM;AAAA,YACN,WAAWjF,EAAW;AAAA,YACtB,aAAY;AAAA,YACZ,WAAU;AAAA,UAAA;AAAA,QAAA;AAAA,MACX,GACD;AAAA,wBAECkF,IAAA,EAAa;AAAA,wBAEbF,GAAA,EACA,UAAA;AAAA,QAAA,gBAAAJ;AAAA,UAACO;AAAA,UAAA;AAAA,YACA,OAAM;AAAA,YACN,QAAO;AAAA,YACP,gBAAe;AAAA,YACf,OAAO9B;AAAA,YACP,gBAAgBI;AAAA,YAChB,cAAcC;AAAA,YACd,cAAcU;AAAA,YACd,eAAed;AAAA,YACf,WAAU;AAAA,YACV,OAAO,CAACd,MAAO;AAGd,cAAAvC,EAAc,QAAQuC,CAAE,GACxB/C,EAAa,QAAQ+C,CAAE;AAAA,YACxB;AAAA,YAGA,UAAU,CAACA,MAAO9C,EAAgB,QAAQ8C,CAAE;AAAA,UAAA;AAAA,QAAA;AAAA,QAG7C,gBAAAoC;AAAA,UAACO;AAAA,UAAA;AAAA,YACA,OAAM;AAAA,YACN,QAAO;AAAA,YACP,gBAAe;AAAA,YACf,OAAOpB;AAAA,YACP,gBAAgBE;AAAA,YAChB,cAAcK;AAAA,YACd,WAAU;AAAA,YACV,OAAO,CAAC9B,MAAO;AACd,cAAAvC,EAAc,YAAYuC,CAAE,GAC5B/C,EAAa,YAAY+C,CAAE;AAAA,YAC5B;AAAA,YACA,UAAU,CAACA,MAAO9C,EAAgB,YAAY8C,CAAE;AAAA,YAChD,aAAarC,IAAkBoC,KAAgB;AAAA,YAC/C,cACCrC,IACG,EAAE,OAAO,cAAc,UAAUoC,MACjC;AAAA,UAAA;AAAA,QAAA;AAAA,QAIJzC,EAAgB,SAAS,KACzB,gBAAAiF,EAACM,IAAA,EACA,UAAA;AAAA,UAAA,gBAAAR,EAACS,GAAA,EAAW,OAAOC,EAAO,QAAQ,SAAS,UAAA,qBAE3C;AAAA,4BACCD,GAAA,EAAW,OAAOC,EAAO,QAAQ,WAAW,UAAA,mBAE7C;AAAA,UACA,gBAAAV;AAAA,YAACW;AAAA,YAAA;AAAA,cACA,aAAU;AAAA,cACV,MAAK;AAAA,cACL,OAAM;AAAA,cACN,aAAY;AAAA,cACZ,SAAShB;AAAA,cACT,gBACCE,IACG;AAAA,gBACA;AAAA,kBACC,OAAOA,EAAc;AAAA,kBACrB,OAAOA,EAAc;AAAA,gBAAA;AAAA,cACtB,IAEA;AAAA,cAEJ,UAAU,CAACe,MAAQ;AAClB,sBAAMC,IAAIC,GAAoBF,CAAG;AACjC,gBAAIC,KACHjG,EAAY,SAASiG,CAAC;AAAA,cAExB;AAAA,YAAA;AAAA,UAAA;AAAA,QACD,EAAA,CACD;AAAA,MAAA,EAAA,CAEF;AAAA,IAAA,GACD;AAAA,IAEC/E,KACA,gBAAAkE;AAAA,MAACe;AAAA,MAAA;AAAA,QAEA,OAAOjF,EAAM;AAAA,QACb,SAASA,EAAM;AAAA,QACf,gBAAAf;AAAA,QACA,qBAAAG;AAAA,QACA,UAAUqE,EAAapE,CAAe;AAAA,QACtC,YAAAC;AAAA,QACA,WAAWK;AAAA,QACX,2BAAAC;AAAA,QACA,SAAS,MAAMK,EAAS,IAAI;AAAA,QAC5B,QAAQ+B;AAAA,MAAA;AAAA,MAVHhC,EAAM;AAAA,IAAA;AAAA,IAcZK,GAAY,SAAS,aACrB,gBAAA6D;AAAA,MAACgB;AAAA,MAAA;AAAA,QAEA,SAAS7E,EAAW;AAAA,QACpB,YAAAf;AAAA,QACA,WAAWM;AAAA,QACX,SAAS,MAAMU,EAAc,IAAI;AAAA,QACjC,QAAQO;AAAA,MAAA;AAAA,MALHR,EAAW;AAAA,IAAA;AAAA,IASjBA,GAAY,SAAS,YACrBA,EAAW,WACX2D,KACC,gBAAAE;AAAA,MAACiB;AAAA,MAAA;AAAA,QAEA,SAAS9E,EAAW;AAAA,QACpB,UAAU2D;AAAA,QACV,SAAS3D,EAAW;AAAA,QACpB,YAAAf;AAAA,QACA,WAAWM;AAAA,QACX,SAAS,MAAMU,EAAc,IAAI;AAAA,QACjC,QAAQY;AAAA,MAAA;AAAA,MAPHb,EAAW;AAAA,IAAA;AAAA,EAQjB,GAEH;AAEF;"}
|
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
import { ApplicationType } from '@bikdotai/bik-models/growth';
|
|
2
2
|
import { MentionItem } from '../../../editor';
|
|
3
|
-
import { AgentTool, SubAgentRef } from '../AgentBuilder.model';
|
|
3
|
+
import { AgentTool, ConfigToolConfig, RestApiToolConfig, SubAgentRef } from '../AgentBuilder.model';
|
|
4
|
+
import { TOOL_SOURCE_LABELS } from '../constants/tools';
|
|
4
5
|
/**
|
|
5
6
|
* Serialization helpers between the BikEditor document and the firebase
|
|
6
7
|
* `instructions` string.
|
|
@@ -23,8 +24,7 @@ export interface MentionKindMeta {
|
|
|
23
24
|
/** For tools: the source bucket (manifest / shopify / …) the picker groups by. */
|
|
24
25
|
source?: string;
|
|
25
26
|
}
|
|
26
|
-
|
|
27
|
-
export declare const TOOL_SOURCE_LABELS: Record<string, string>;
|
|
27
|
+
export { TOOL_SOURCE_LABELS };
|
|
28
28
|
/** Human label for a tool source; falls back to the host-app label, then the raw key. */
|
|
29
29
|
export declare const toolSourceLabel: (source: string | undefined, fallback?: string) => string;
|
|
30
30
|
/** Human label for the host application, used as the tool-chip prefix. */
|
|
@@ -38,6 +38,21 @@ export declare const appTypeLabel: (applicationType?: ApplicationType) => string
|
|
|
38
38
|
* picker rows, and `meta.kind` drives the `{{tool}}` / `{{subagent}}` colour.
|
|
39
39
|
*/
|
|
40
40
|
export declare const buildAgentMentionItems: (tools: AgentTool[], subAgents: SubAgentRef[], appLabel?: string) => MentionItem[];
|
|
41
|
+
/** Display name for a shared config tool: first recipient / channel, else generic. */
|
|
42
|
+
export declare const configToolName: (t: ConfigToolConfig) => string;
|
|
43
|
+
/** Display name for a Rest API tool row / chip. */
|
|
44
|
+
export declare const restApiToolName: (t: RestApiToolConfig) => string;
|
|
45
|
+
/** The `@`-mention chip item for a Rest API tool (kind 'tool', restapi source). */
|
|
46
|
+
export declare const restApiMentionItem: (t: RestApiToolConfig) => MentionItem;
|
|
47
|
+
/** The `@`-mention chip item for a shared config tool (email / Slack). */
|
|
48
|
+
export declare const configToolMentionItem: (t: ConfigToolConfig) => MentionItem;
|
|
49
|
+
/**
|
|
50
|
+
* Mention items for the inline-configured custom tools (Rest API + email / Slack)
|
|
51
|
+
* so their `{{tool:<id>}}` tokens rehydrate as chips — they live on the agent
|
|
52
|
+
* value, not in the catalog `availableTools`. Merge alongside
|
|
53
|
+
* {@link buildAgentMentionItems} in the editor's mention list.
|
|
54
|
+
*/
|
|
55
|
+
export declare const buildCustomToolMentionItems: (configTools?: ConfigToolConfig[], restApiTools?: RestApiToolConfig[]) => MentionItem[];
|
|
41
56
|
/**
|
|
42
57
|
* Public: HTML for one mention chip, for inserting at the cursor (e.g. when a
|
|
43
58
|
* tool / sub-agent is added from the Step-3 side panel). Round-trips through the
|