@burdenoff/microfe-botmanor 2026.821.1 → 2026.925.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/botlit/BotlitRoutes.js.map +1 -1
- package/dist/botlit/BotmanorRoot.js.map +1 -1
- package/dist/botlit/BotmanorRootInner.js +4 -4
- package/dist/botlit/BotmanorRootInner.js.map +1 -1
- package/dist/botlit/components/ErrorState.js +33 -29
- package/dist/botlit/components/ErrorState.js.map +1 -1
- package/dist/botlit/components/RouteLoader.js +52 -48
- package/dist/botlit/components/RouteLoader.js.map +1 -1
- package/dist/botlit/components/VersionHistoryPanel.js +74 -77
- package/dist/botlit/components/VersionHistoryPanel.js.map +1 -1
- package/dist/botlit/components/WorkspaceRequired.js +31 -30
- package/dist/botlit/components/WorkspaceRequired.js.map +1 -1
- package/dist/botlit/hooks/internal/workspaceGateway.js.map +1 -1
- package/dist/botlit/hooks/useConversations.js.map +1 -1
- package/dist/botlit/hooks/useLLMProviders.js.map +1 -1
- package/dist/botlit/pages/A2AAgentDetailPage.js +1 -1
- package/dist/botlit/pages/A2AAgentDetailPage.js.map +1 -1
- package/dist/botlit/pages/A2ARegistryPage.js +116 -124
- package/dist/botlit/pages/A2ARegistryPage.js.map +1 -1
- package/dist/botlit/pages/AgentDetailPage.js +169 -172
- package/dist/botlit/pages/AgentDetailPage.js.map +1 -1
- package/dist/botlit/pages/AgentsListPage.js +96 -90
- package/dist/botlit/pages/AgentsListPage.js.map +1 -1
- package/dist/botlit/pages/BotChannelsTab.js.map +1 -1
- package/dist/botlit/pages/BotDetailPage.js +228 -231
- package/dist/botlit/pages/BotDetailPage.js.map +1 -1
- package/dist/botlit/pages/BotWorkflowTab.js +84 -87
- package/dist/botlit/pages/BotWorkflowTab.js.map +1 -1
- package/dist/botlit/pages/BotsListPage.js +144 -147
- package/dist/botlit/pages/BotsListPage.js.map +1 -1
- package/dist/botlit/pages/BucketsPage.js +3 -3
- package/dist/botlit/pages/BucketsPage.js.map +1 -1
- package/dist/botlit/pages/ChannelDetailPage.js +1 -1
- package/dist/botlit/pages/ChannelDetailPage.js.map +1 -1
- package/dist/botlit/pages/ChannelsPage.js +156 -149
- package/dist/botlit/pages/ChannelsPage.js.map +1 -1
- package/dist/botlit/pages/ChatPage.js +126 -129
- package/dist/botlit/pages/ChatPage.js.map +1 -1
- package/dist/botlit/pages/DashboardPage.js +111 -114
- package/dist/botlit/pages/DashboardPage.js.map +1 -1
- package/dist/botlit/pages/ExecutionsPage.js +163 -159
- package/dist/botlit/pages/ExecutionsPage.js.map +1 -1
- package/dist/botlit/pages/InstalledPackagesPage.js +3 -3
- package/dist/botlit/pages/InstalledPackagesPage.js.map +1 -1
- package/dist/botlit/pages/KnowledgeBasesPage.js +84 -78
- package/dist/botlit/pages/KnowledgeBasesPage.js.map +1 -1
- package/dist/botlit/pages/MCPServersPage.js +159 -154
- package/dist/botlit/pages/MCPServersPage.js.map +1 -1
- package/dist/botlit/pages/PoliciesPage.js +119 -114
- package/dist/botlit/pages/PoliciesPage.js.map +1 -1
- package/dist/botlit/pages/RetrievalProfilesPage.js +102 -109
- package/dist/botlit/pages/RetrievalProfilesPage.js.map +1 -1
- package/dist/botlit/pages/SettingsPage.js +144 -159
- package/dist/botlit/pages/SettingsPage.js.map +1 -1
- package/dist/botlit/pages/SkillsPage.js +122 -105
- package/dist/botlit/pages/SkillsPage.js.map +1 -1
- package/dist/botlit/pages/StorePage.js +176 -175
- package/dist/botlit/pages/StorePage.js.map +1 -1
- package/dist/botlit/providers/BotlitProvider.js.map +1 -1
- package/dist/botlit/store/botlitStore.js +1 -1
- package/dist/botlit/store/botlitStore.js.map +1 -1
- package/dist/botlit/utils/navigation.js.map +1 -1
- package/dist/shared/hooks/useTr.js +14 -0
- package/dist/shared/hooks/useTr.js.map +1 -0
- package/package.json +33 -9
|
@@ -1,56 +1,57 @@
|
|
|
1
|
-
import {
|
|
2
|
-
import {
|
|
3
|
-
import {
|
|
4
|
-
import {
|
|
5
|
-
import {
|
|
6
|
-
import {
|
|
7
|
-
import {
|
|
8
|
-
import {
|
|
9
|
-
import {
|
|
10
|
-
import {
|
|
1
|
+
import { useTr as e } from "../../shared/hooks/useTr.js";
|
|
2
|
+
import { useBotlit as t } from "../providers/BotlitProvider.js";
|
|
3
|
+
import { formatRelativeTime as n } from "../utils/formatters.js";
|
|
4
|
+
import { PageLayout as r } from "../components/PageLayout.js";
|
|
5
|
+
import { Card as i, CardContent as a, CardDescription as o, CardHeader as s, CardTitle as c } from "../components/Card.js";
|
|
6
|
+
import { Button as l } from "../components/Button.js";
|
|
7
|
+
import { Badge as u, StatusBadge as d } from "../components/Badge.js";
|
|
8
|
+
import { EmptyState as f } from "../components/EmptyState.js";
|
|
9
|
+
import { Input as p } from "../components/Input.js";
|
|
10
|
+
import { ErrorState as m } from "../components/ErrorState.js";
|
|
11
|
+
import { useSkills as h } from "../hooks/useSkills.js";
|
|
11
12
|
import "../hooks/index.js";
|
|
12
|
-
import { useState as
|
|
13
|
-
import { GlassCard as
|
|
14
|
-
import { jsx as
|
|
15
|
-
import { Link as
|
|
16
|
-
import { Database as
|
|
13
|
+
import { useState as g } from "react";
|
|
14
|
+
import { GlassCard as _, PagePurpose as v } from "@burdenoff/fe-libs/ui";
|
|
15
|
+
import { jsx as y, jsxs as b } from "react/jsx-runtime";
|
|
16
|
+
import { Link as x } from "react-router";
|
|
17
|
+
import { Database as S, FileText as C, Filter as w, Package as T, Plus as E, Search as D, Sparkles as O, Wrench as k } from "lucide-react";
|
|
17
18
|
//#region src/botlit/pages/SkillsPage.tsx
|
|
18
|
-
var
|
|
19
|
-
let { getPath:
|
|
20
|
-
return /* @__PURE__ */
|
|
21
|
-
title: "Skills",
|
|
22
|
-
description: "Reusable skill bundles that combine prompts, tools, and knowledge",
|
|
23
|
-
actions: /* @__PURE__ */
|
|
24
|
-
leftIcon: /* @__PURE__ */
|
|
25
|
-
children: /* @__PURE__ */
|
|
26
|
-
to:
|
|
27
|
-
children: "Create Skill"
|
|
19
|
+
var A = () => {
|
|
20
|
+
let A = e(), { getPath: j } = t(), [M, N] = g(""), { data: P, loading: F, error: I, refetch: L } = h({ search: M });
|
|
21
|
+
return /* @__PURE__ */ y(r, {
|
|
22
|
+
title: A("botlit.skills.title", "Skills"),
|
|
23
|
+
description: A("botlit.skills.description", "Reusable skill bundles that combine prompts, tools, and knowledge"),
|
|
24
|
+
actions: /* @__PURE__ */ y(l, {
|
|
25
|
+
leftIcon: /* @__PURE__ */ y(E, { size: 16 }),
|
|
26
|
+
children: /* @__PURE__ */ y(x, {
|
|
27
|
+
to: j("skills/new"),
|
|
28
|
+
children: A("botlit.skills.actions.createSkill", "Create Skill")
|
|
28
29
|
})
|
|
29
30
|
}),
|
|
30
|
-
children: /* @__PURE__ */
|
|
31
|
+
children: /* @__PURE__ */ b("div", {
|
|
31
32
|
className: "space-y-6",
|
|
32
33
|
children: [
|
|
33
|
-
/* @__PURE__ */ v
|
|
34
|
-
icon: /* @__PURE__ */
|
|
35
|
-
children: "A skill is a reusable bundle that packages a prompt template, a tool policy and a knowledge (retrieval) profile into one capability you can drop onto any agent. Build a skill once — say
|
|
34
|
+
/* @__PURE__ */ y(v, {
|
|
35
|
+
icon: /* @__PURE__ */ y(O, { size: 18 }),
|
|
36
|
+
children: A("botlit.skills.purpose", "A skill is a reusable bundle that packages a prompt template, a tool policy and a knowledge (retrieval) profile into one capability you can drop onto any agent. Build a skill once — say \"Customer Support\" or \"Code Review\" — and reuse it across agents instead of wiring the same prompt, tools and knowledge by hand each time.")
|
|
36
37
|
}),
|
|
37
|
-
/* @__PURE__ */
|
|
38
|
+
/* @__PURE__ */ b("div", {
|
|
38
39
|
className: "flex items-center gap-4",
|
|
39
|
-
children: [/* @__PURE__ */
|
|
40
|
+
children: [/* @__PURE__ */ b("div", {
|
|
40
41
|
className: "relative flex-1 max-w-md",
|
|
41
|
-
children: [/* @__PURE__ */
|
|
42
|
-
placeholder: "Search skills...",
|
|
43
|
-
value:
|
|
44
|
-
onChange: (e) =>
|
|
42
|
+
children: [/* @__PURE__ */ y(D, { className: "absolute left-3 top-1/2 -translate-y-1/2 h-4 w-4 text-text-secondary" }), /* @__PURE__ */ y(p, {
|
|
43
|
+
placeholder: A("botlit.skills.searchPlaceholder", "Search skills..."),
|
|
44
|
+
value: M,
|
|
45
|
+
onChange: (e) => N(e.target.value),
|
|
45
46
|
className: "pl-9"
|
|
46
47
|
})]
|
|
47
|
-
}), /* @__PURE__ */
|
|
48
|
+
}), /* @__PURE__ */ y(l, {
|
|
48
49
|
variant: "outline",
|
|
49
|
-
leftIcon: /* @__PURE__ */
|
|
50
|
-
children: "Filters"
|
|
50
|
+
leftIcon: /* @__PURE__ */ y(w, { size: 16 }),
|
|
51
|
+
children: A("botlit.skills.actions.filters", "Filters")
|
|
51
52
|
})]
|
|
52
53
|
}),
|
|
53
|
-
|
|
54
|
+
F ? /* @__PURE__ */ y("div", {
|
|
54
55
|
className: "grid grid-cols-1 md:grid-cols-2 lg:grid-cols-3 gap-4",
|
|
55
56
|
children: [
|
|
56
57
|
1,
|
|
@@ -59,139 +60,155 @@ var k = () => {
|
|
|
59
60
|
4,
|
|
60
61
|
5,
|
|
61
62
|
6
|
|
62
|
-
].map((e) => /* @__PURE__ */
|
|
63
|
-
}) :
|
|
63
|
+
].map((e) => /* @__PURE__ */ y("div", { className: "h-48 bg-bg-sunken motion-safe:animate-vc-shimmer rounded-lg" }, e))
|
|
64
|
+
}) : I ? /* @__PURE__ */ y(m, {
|
|
64
65
|
resource: "skills",
|
|
65
|
-
error:
|
|
66
|
-
onRetry: () => void
|
|
67
|
-
}) :
|
|
66
|
+
error: I,
|
|
67
|
+
onRetry: () => void L()
|
|
68
|
+
}) : P.length > 0 ? /* @__PURE__ */ y("div", {
|
|
68
69
|
className: "grid grid-cols-1 md:grid-cols-2 lg:grid-cols-3 gap-4",
|
|
69
|
-
children:
|
|
70
|
-
to:
|
|
71
|
-
children: /* @__PURE__ */
|
|
70
|
+
children: P.map((e) => /* @__PURE__ */ y(x, {
|
|
71
|
+
to: j(`skills/${e.id}`),
|
|
72
|
+
children: /* @__PURE__ */ b(i, {
|
|
72
73
|
className: "h-full hover:border-primary/50 transition-colors cursor-pointer",
|
|
73
|
-
children: [/* @__PURE__ */
|
|
74
|
+
children: [/* @__PURE__ */ y(s, { children: /* @__PURE__ */ b("div", {
|
|
74
75
|
className: "flex items-start justify-between",
|
|
75
|
-
children: [/* @__PURE__ */
|
|
76
|
+
children: [/* @__PURE__ */ b("div", {
|
|
76
77
|
className: "flex items-center gap-3",
|
|
77
|
-
children: [/* @__PURE__ */
|
|
78
|
+
children: [/* @__PURE__ */ y("div", {
|
|
78
79
|
className: "p-2 bg-gradient-to-br from-primary/20 to-primary/5 rounded-lg",
|
|
79
|
-
children: /* @__PURE__ */
|
|
80
|
-
}), /* @__PURE__ */
|
|
80
|
+
children: /* @__PURE__ */ y(O, { className: "h-5 w-5 text-primary" })
|
|
81
|
+
}), /* @__PURE__ */ b("div", { children: [/* @__PURE__ */ y(c, {
|
|
81
82
|
className: "text-base",
|
|
82
83
|
children: e.name
|
|
83
|
-
}), /* @__PURE__ */
|
|
84
|
+
}), /* @__PURE__ */ y(o, {
|
|
84
85
|
className: "text-xs line-clamp-1",
|
|
85
86
|
children: e.description
|
|
86
87
|
})] })]
|
|
87
|
-
}), /* @__PURE__ */
|
|
88
|
-
}) }), /* @__PURE__ */
|
|
88
|
+
}), /* @__PURE__ */ y(d, { status: e.status })]
|
|
89
|
+
}) }), /* @__PURE__ */ y(a, { children: /* @__PURE__ */ b("div", {
|
|
89
90
|
className: "space-y-3",
|
|
90
|
-
children: [/* @__PURE__ */
|
|
91
|
+
children: [/* @__PURE__ */ b("div", {
|
|
91
92
|
className: "flex flex-wrap gap-2",
|
|
92
93
|
children: [
|
|
93
|
-
e.promptTemplateId && /* @__PURE__ */
|
|
94
|
+
e.promptTemplateId && /* @__PURE__ */ b(u, {
|
|
94
95
|
variant: "outline",
|
|
95
96
|
className: "text-xs flex items-center gap-1",
|
|
96
|
-
children: [/* @__PURE__ */
|
|
97
|
+
children: [/* @__PURE__ */ y(C, { size: 10 }), A("botlit.skills.badge.prompt", "Prompt")]
|
|
97
98
|
}),
|
|
98
|
-
e.toolPolicyId && /* @__PURE__ */
|
|
99
|
+
e.toolPolicyId && /* @__PURE__ */ b(u, {
|
|
99
100
|
variant: "outline",
|
|
100
101
|
className: "text-xs flex items-center gap-1",
|
|
101
|
-
children: [/* @__PURE__ */
|
|
102
|
+
children: [/* @__PURE__ */ y(k, { size: 10 }), A("botlit.skills.badge.tools", "Tools")]
|
|
102
103
|
}),
|
|
103
|
-
e.retrievalProfileId && /* @__PURE__ */
|
|
104
|
+
e.retrievalProfileId && /* @__PURE__ */ b(u, {
|
|
104
105
|
variant: "outline",
|
|
105
106
|
className: "text-xs flex items-center gap-1",
|
|
106
|
-
children: [/* @__PURE__ */
|
|
107
|
+
children: [/* @__PURE__ */ y(S, { size: 10 }), A("botlit.skills.badge.knowledge", "Knowledge")]
|
|
107
108
|
})
|
|
108
109
|
]
|
|
109
|
-
}), /* @__PURE__ */
|
|
110
|
+
}), /* @__PURE__ */ b("div", {
|
|
110
111
|
className: "pt-3 border-t border-border-subtle text-xs text-text-secondary",
|
|
111
|
-
children: [
|
|
112
|
+
children: [
|
|
113
|
+
A("botlit.botsList.createdLabel", "Created"),
|
|
114
|
+
" ",
|
|
115
|
+
n(e.createdAt)
|
|
116
|
+
]
|
|
112
117
|
})]
|
|
113
118
|
}) })]
|
|
114
119
|
})
|
|
115
120
|
}, e.id))
|
|
116
|
-
}) : /* @__PURE__ */
|
|
121
|
+
}) : /* @__PURE__ */ y(f, {
|
|
117
122
|
illustration: "empty-generic",
|
|
118
|
-
title: "No skills created",
|
|
119
|
-
description: "Create reusable skill bundles to quickly configure agents with common capabilities.",
|
|
120
|
-
action: /* @__PURE__ */
|
|
121
|
-
leftIcon: /* @__PURE__ */
|
|
122
|
-
children: /* @__PURE__ */
|
|
123
|
-
to:
|
|
124
|
-
children: "Create Skill"
|
|
123
|
+
title: A("botlit.skills.empty.title", "No skills created"),
|
|
124
|
+
description: A("botlit.skills.empty.description", "Create reusable skill bundles to quickly configure agents with common capabilities."),
|
|
125
|
+
action: /* @__PURE__ */ y(l, {
|
|
126
|
+
leftIcon: /* @__PURE__ */ y(E, { size: 16 }),
|
|
127
|
+
children: /* @__PURE__ */ y(x, {
|
|
128
|
+
to: j("skills/new"),
|
|
129
|
+
children: A("botlit.skills.actions.createSkill", "Create Skill")
|
|
125
130
|
})
|
|
126
131
|
})
|
|
127
132
|
}),
|
|
128
|
-
/* @__PURE__ */
|
|
133
|
+
/* @__PURE__ */ b(_, {
|
|
129
134
|
treatment: "glass",
|
|
130
135
|
glow: !0,
|
|
131
136
|
className: "p-6",
|
|
132
|
-
children: [/* @__PURE__ */
|
|
137
|
+
children: [/* @__PURE__ */ b("div", {
|
|
133
138
|
className: "mb-4",
|
|
134
|
-
children: [/* @__PURE__ */
|
|
139
|
+
children: [/* @__PURE__ */ b("h2", {
|
|
135
140
|
className: "flex items-center gap-2 text-lg font-semibold tracking-tight text-text-primary",
|
|
136
|
-
children: [/* @__PURE__ */
|
|
137
|
-
}), /* @__PURE__ */
|
|
141
|
+
children: [/* @__PURE__ */ y(T, { size: 18 }), A("botlit.skills.overview.title", "What are Skills?")]
|
|
142
|
+
}), /* @__PURE__ */ y("p", {
|
|
138
143
|
className: "text-sm text-text-secondary",
|
|
139
|
-
children: "Skills are composable bundles that encapsulate agent capabilities"
|
|
144
|
+
children: A("botlit.skills.overview.description", "Skills are composable bundles that encapsulate agent capabilities")
|
|
140
145
|
})]
|
|
141
|
-
}), /* @__PURE__ */
|
|
146
|
+
}), /* @__PURE__ */ b("div", { children: [/* @__PURE__ */ b("div", {
|
|
142
147
|
className: "grid grid-cols-1 md:grid-cols-3 gap-6",
|
|
143
148
|
children: [
|
|
144
|
-
/* @__PURE__ */
|
|
149
|
+
/* @__PURE__ */ b("div", {
|
|
145
150
|
className: "space-y-2",
|
|
146
|
-
children: [/* @__PURE__ */
|
|
151
|
+
children: [/* @__PURE__ */ b("h4", {
|
|
147
152
|
className: "font-medium flex items-center gap-2",
|
|
148
|
-
children: [/* @__PURE__ */
|
|
153
|
+
children: [/* @__PURE__ */ y(C, {
|
|
149
154
|
size: 16,
|
|
150
155
|
className: "text-primary"
|
|
151
|
-
}), "Prompt Templates"]
|
|
152
|
-
}), /* @__PURE__ */
|
|
156
|
+
}), A("botlit.skills.overview.promptTitle", "Prompt Templates")]
|
|
157
|
+
}), /* @__PURE__ */ y("p", {
|
|
153
158
|
className: "text-sm text-text-secondary",
|
|
154
|
-
children: "Pre-configured system prompts with variable support for consistent agent behavior."
|
|
159
|
+
children: A("botlit.skills.overview.promptDescription", "Pre-configured system prompts with variable support for consistent agent behavior.")
|
|
155
160
|
})]
|
|
156
161
|
}),
|
|
157
|
-
/* @__PURE__ */
|
|
162
|
+
/* @__PURE__ */ b("div", {
|
|
158
163
|
className: "space-y-2",
|
|
159
|
-
children: [/* @__PURE__ */
|
|
164
|
+
children: [/* @__PURE__ */ b("h4", {
|
|
160
165
|
className: "font-medium flex items-center gap-2",
|
|
161
|
-
children: [/* @__PURE__ */
|
|
166
|
+
children: [/* @__PURE__ */ y(k, {
|
|
162
167
|
size: 16,
|
|
163
168
|
className: "text-primary"
|
|
164
|
-
}), "Tool Configurations"]
|
|
165
|
-
}), /* @__PURE__ */
|
|
169
|
+
}), A("botlit.skills.overview.toolsTitle", "Tool Configurations")]
|
|
170
|
+
}), /* @__PURE__ */ y("p", {
|
|
166
171
|
className: "text-sm text-text-secondary",
|
|
167
|
-
children: "Bundled MCP tool packs with policies defining allowed operations and limits."
|
|
172
|
+
children: A("botlit.skills.overview.toolsDescription", "Bundled MCP tool packs with policies defining allowed operations and limits.")
|
|
168
173
|
})]
|
|
169
174
|
}),
|
|
170
|
-
/* @__PURE__ */
|
|
175
|
+
/* @__PURE__ */ b("div", {
|
|
171
176
|
className: "space-y-2",
|
|
172
|
-
children: [/* @__PURE__ */
|
|
177
|
+
children: [/* @__PURE__ */ b("h4", {
|
|
173
178
|
className: "font-medium flex items-center gap-2",
|
|
174
|
-
children: [/* @__PURE__ */
|
|
179
|
+
children: [/* @__PURE__ */ y(S, {
|
|
175
180
|
size: 16,
|
|
176
181
|
className: "text-primary"
|
|
177
|
-
}), "Knowledge Bindings"]
|
|
178
|
-
}), /* @__PURE__ */
|
|
182
|
+
}), A("botlit.skills.overview.knowledgeTitle", "Knowledge Bindings")]
|
|
183
|
+
}), /* @__PURE__ */ y("p", {
|
|
179
184
|
className: "text-sm text-text-secondary",
|
|
180
|
-
children: "Pre-configured retrieval profiles for domain-specific knowledge access."
|
|
185
|
+
children: A("botlit.skills.overview.knowledgeDescription", "Pre-configured retrieval profiles for domain-specific knowledge access.")
|
|
181
186
|
})]
|
|
182
187
|
})
|
|
183
188
|
]
|
|
184
|
-
}), /* @__PURE__ */
|
|
189
|
+
}), /* @__PURE__ */ b("div", {
|
|
185
190
|
className: "mt-6 p-4 bg-bg-sunken rounded-lg",
|
|
186
|
-
children: [/* @__PURE__ */
|
|
191
|
+
children: [/* @__PURE__ */ y("h4", {
|
|
187
192
|
className: "font-medium mb-2",
|
|
188
|
-
children: "Use Cases"
|
|
189
|
-
}), /* @__PURE__ */
|
|
193
|
+
children: A("botlit.skills.overview.useCases.title", "Use Cases")
|
|
194
|
+
}), /* @__PURE__ */ b("ul", {
|
|
190
195
|
className: "text-sm text-text-secondary space-y-1",
|
|
191
196
|
children: [
|
|
192
|
-
/* @__PURE__ */
|
|
193
|
-
|
|
194
|
-
|
|
197
|
+
/* @__PURE__ */ b("li", { children: [
|
|
198
|
+
"•",
|
|
199
|
+
" ",
|
|
200
|
+
A("botlit.skills.overview.useCases.case1", "Create a \"Customer Support\" skill with FAQ knowledge and ticketing tools")
|
|
201
|
+
] }),
|
|
202
|
+
/* @__PURE__ */ b("li", { children: [
|
|
203
|
+
"•",
|
|
204
|
+
" ",
|
|
205
|
+
A("botlit.skills.overview.useCases.case2", "Build a \"Code Review\" skill with GitHub tools and coding guidelines")
|
|
206
|
+
] }),
|
|
207
|
+
/* @__PURE__ */ b("li", { children: [
|
|
208
|
+
"•",
|
|
209
|
+
" ",
|
|
210
|
+
A("botlit.skills.overview.useCases.case3", "Package a \"Sales Assistant\" skill with CRM tools and product catalog")
|
|
211
|
+
] })
|
|
195
212
|
]
|
|
196
213
|
})]
|
|
197
214
|
})] })]
|
|
@@ -201,6 +218,6 @@ var k = () => {
|
|
|
201
218
|
});
|
|
202
219
|
};
|
|
203
220
|
//#endregion
|
|
204
|
-
export {
|
|
221
|
+
export { A as SkillsPage };
|
|
205
222
|
|
|
206
223
|
//# sourceMappingURL=SkillsPage.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"SkillsPage.js","names":[],"sources":["../../../src/botlit/pages/SkillsPage.tsx"],"sourcesContent":["/**\n * Skills Page\n * @module botlit/pages\n */\n\nimport type { FC } from 'react';\nimport { useState } from 'react';\nimport { Link } from 'react-router';\nimport { useBotlit } from '../providers/BotlitProvider';\nimport {\n Plus,\n Search as SearchIcon,\n Filter,\n Sparkles,\n FileText,\n Wrench,\n Database,\n Package,\n} from 'lucide-react';\nimport { PagePurpose, GlassCard } from '@burdenoff/fe-libs/ui';\nimport { PageLayout } from '../components/PageLayout';\nimport { Card, CardHeader, CardTitle, CardContent, CardDescription } from '../components/Card';\nimport { Button } from '../components/Button';\nimport { Input } from '../components/Input';\nimport { Badge, StatusBadge } from '../components/Badge';\nimport { EmptyState } from '../components/EmptyState';\nimport { ErrorState } from '../components/ErrorState';\nimport { useSkills } from '../hooks';\nimport { formatRelativeTime } from '../utils/formatters';\n\nexport const SkillsPage: FC = () => {\n const { getPath } = useBotlit();\n const [search, setSearch] = useState('');\n const { data: skills, loading, error, refetch } = useSkills({ search });\n\n return (\n <PageLayout\n title=\"Skills\"\n description=\"Reusable skill bundles that combine prompts, tools, and knowledge\"\n actions={\n <Button leftIcon={<Plus size={16} />}>\n <Link to={getPath('skills/new')}>Create Skill</Link>\n </Button>\n }\n >\n <div className=\"space-y-6\">\n <PagePurpose icon={<Sparkles size={18} />}>\n A skill is a reusable bundle that packages a prompt template, a tool policy and a\n knowledge (retrieval) profile into one capability you can drop onto any agent. Build a\n skill once — say “Customer Support” or “Code Review” — and reuse\n it across agents instead of wiring the same prompt, tools and knowledge by hand each time.\n </PagePurpose>\n\n {/* Search */}\n <div className=\"flex items-center gap-4\">\n <div className=\"relative flex-1 max-w-md\">\n <SearchIcon className=\"absolute left-3 top-1/2 -translate-y-1/2 h-4 w-4 text-text-secondary\" />\n <Input\n placeholder=\"Search skills...\"\n value={search}\n onChange={(e) => setSearch(e.target.value)}\n className=\"pl-9\"\n />\n </div>\n <Button variant=\"outline\" leftIcon={<Filter size={16} />}>\n Filters\n </Button>\n </div>\n\n {/* Skills List */}\n {loading ? (\n <div className=\"grid grid-cols-1 md:grid-cols-2 lg:grid-cols-3 gap-4\">\n {[1, 2, 3, 4, 5, 6].map((i) => (\n <div\n key={i}\n className=\"h-48 bg-bg-sunken motion-safe:animate-vc-shimmer rounded-lg\"\n />\n ))}\n </div>\n ) : error ? (\n <ErrorState resource=\"skills\" error={error} onRetry={() => void refetch()} />\n ) : skills.length > 0 ? (\n <div className=\"grid grid-cols-1 md:grid-cols-2 lg:grid-cols-3 gap-4\">\n {skills.map(\n (skill: {\n id: string;\n name: string;\n description?: string | null;\n status: string;\n promptTemplateId?: string | null;\n toolPolicyId?: string | null;\n retrievalProfileId?: string | null;\n createdAt: string;\n }) => (\n <Link key={skill.id} to={getPath(`skills/${skill.id}`)}>\n <Card className=\"h-full hover:border-primary/50 transition-colors cursor-pointer\">\n <CardHeader>\n <div className=\"flex items-start justify-between\">\n <div className=\"flex items-center gap-3\">\n <div className=\"p-2 bg-gradient-to-br from-primary/20 to-primary/5 rounded-lg\">\n <Sparkles className=\"h-5 w-5 text-primary\" />\n </div>\n <div>\n <CardTitle className=\"text-base\">{skill.name}</CardTitle>\n <CardDescription className=\"text-xs line-clamp-1\">\n {skill.description}\n </CardDescription>\n </div>\n </div>\n <StatusBadge status={skill.status} />\n </div>\n </CardHeader>\n <CardContent>\n <div className=\"space-y-3\">\n {/* Capabilities */}\n <div className=\"flex flex-wrap gap-2\">\n {skill.promptTemplateId && (\n <Badge variant=\"outline\" className=\"text-xs flex items-center gap-1\">\n <FileText size={10} />\n Prompt\n </Badge>\n )}\n {skill.toolPolicyId && (\n <Badge variant=\"outline\" className=\"text-xs flex items-center gap-1\">\n <Wrench size={10} />\n Tools\n </Badge>\n )}\n {skill.retrievalProfileId && (\n <Badge variant=\"outline\" className=\"text-xs flex items-center gap-1\">\n <Database size={10} />\n Knowledge\n </Badge>\n )}\n </div>\n\n {/* Footer */}\n <div className=\"pt-3 border-t border-border-subtle text-xs text-text-secondary\">\n Created {formatRelativeTime(skill.createdAt)}\n </div>\n </div>\n </CardContent>\n </Card>\n </Link>\n )\n )}\n </div>\n ) : (\n <EmptyState\n illustration=\"empty-generic\"\n title=\"No skills created\"\n description=\"Create reusable skill bundles to quickly configure agents with common capabilities.\"\n action={\n <Button leftIcon={<Plus size={16} />}>\n <Link to={getPath('skills/new')}>Create Skill</Link>\n </Button>\n }\n />\n )}\n\n {/* Skills Overview */}\n <GlassCard treatment=\"glass\" glow className=\"p-6\">\n <div className=\"mb-4\">\n <h2 className=\"flex items-center gap-2 text-lg font-semibold tracking-tight text-text-primary\">\n <Package size={18} />\n What are Skills?\n </h2>\n <p className=\"text-sm text-text-secondary\">\n Skills are composable bundles that encapsulate agent capabilities\n </p>\n </div>\n <div>\n <div className=\"grid grid-cols-1 md:grid-cols-3 gap-6\">\n <div className=\"space-y-2\">\n <h4 className=\"font-medium flex items-center gap-2\">\n <FileText size={16} className=\"text-primary\" />\n Prompt Templates\n </h4>\n <p className=\"text-sm text-text-secondary\">\n Pre-configured system prompts with variable support for consistent agent behavior.\n </p>\n </div>\n <div className=\"space-y-2\">\n <h4 className=\"font-medium flex items-center gap-2\">\n <Wrench size={16} className=\"text-primary\" />\n Tool Configurations\n </h4>\n <p className=\"text-sm text-text-secondary\">\n Bundled MCP tool packs with policies defining allowed operations and limits.\n </p>\n </div>\n <div className=\"space-y-2\">\n <h4 className=\"font-medium flex items-center gap-2\">\n <Database size={16} className=\"text-primary\" />\n Knowledge Bindings\n </h4>\n <p className=\"text-sm text-text-secondary\">\n Pre-configured retrieval profiles for domain-specific knowledge access.\n </p>\n </div>\n </div>\n\n <div className=\"mt-6 p-4 bg-bg-sunken rounded-lg\">\n <h4 className=\"font-medium mb-2\">Use Cases</h4>\n <ul className=\"text-sm text-text-secondary space-y-1\">\n <li>• Create a \"Customer Support\" skill with FAQ knowledge and ticketing tools</li>\n <li>• Build a \"Code Review\" skill with GitHub tools and coding guidelines</li>\n <li>• Package a \"Sales Assistant\" skill with CRM tools and product catalog</li>\n </ul>\n </div>\n </div>\n </GlassCard>\n </div>\n </PageLayout>\n );\n};\n"],"mappings":";;;;;;;;;;;;;;;;;AA8BA,IAAa,UAAuB;CAClC,IAAM,EAAE,eAAY,GAAW,EACzB,CAAC,GAAQ,KAAa,EAAS,GAAG,EAClC,EAAE,MAAM,GAAQ,YAAS,UAAO,eAAY,EAAU,EAAE,WAAQ,CAAC;AAEvE,QACE,kBAAC,GAAD;EACE,OAAM;EACN,aAAY;EACZ,SACE,kBAAC,GAAD;GAAQ,UAAU,kBAAC,GAAD,EAAM,MAAM,IAAM,CAAA;aAClC,kBAAC,GAAD;IAAM,IAAI,EAAQ,aAAa;cAAE;IAAmB,CAAA;GAC7C,CAAA;YAGX,kBAAC,OAAD;GAAK,WAAU;aAAf;IACE,kBAAC,GAAD;KAAa,MAAM,kBAAC,GAAD,EAAU,MAAM,IAAM,CAAA;eAAE;KAK7B,CAAA;IAGd,kBAAC,OAAD;KAAK,WAAU;eAAf,CACE,kBAAC,OAAD;MAAK,WAAU;gBAAf,CACE,kBAAC,GAAD,EAAY,WAAU,wEAAyE,CAAA,EAC/F,kBAAC,GAAD;OACE,aAAY;OACZ,OAAO;OACP,WAAW,MAAM,EAAU,EAAE,OAAO,MAAM;OAC1C,WAAU;OACV,CAAA,CACE;SACN,kBAAC,GAAD;MAAQ,SAAQ;MAAU,UAAU,kBAAC,GAAD,EAAQ,MAAM,IAAM,CAAA;gBAAE;MAEjD,CAAA,CACL;;IAGL,IACC,kBAAC,OAAD;KAAK,WAAU;eACZ;MAAC;MAAG;MAAG;MAAG;MAAG;MAAG;MAAE,CAAC,KAAK,MACvB,kBAAC,OAAD,EAEE,WAAU,+DACV,EAFK,EAEL,CACF;KACE,CAAA,GACJ,IACF,kBAAC,GAAD;KAAY,UAAS;KAAgB;KAAO,eAAe,KAAK,GAAS;KAAI,CAAA,GAC3E,EAAO,SAAS,IAClB,kBAAC,OAAD;KAAK,WAAU;eACZ,EAAO,KACL,MAUC,kBAAC,GAAD;MAAqB,IAAI,EAAQ,UAAU,EAAM,KAAK;gBACpD,kBAAC,GAAD;OAAM,WAAU;iBAAhB,CACE,kBAAC,GAAD,EAAA,UACE,kBAAC,OAAD;QAAK,WAAU;kBAAf,CACE,kBAAC,OAAD;SAAK,WAAU;mBAAf,CACE,kBAAC,OAAD;UAAK,WAAU;oBACb,kBAAC,GAAD,EAAU,WAAU,wBAAyB,CAAA;UACzC,CAAA,EACN,kBAAC,OAAD,EAAA,UAAA,CACE,kBAAC,GAAD;UAAW,WAAU;oBAAa,EAAM;UAAiB,CAAA,EACzD,kBAAC,GAAD;UAAiB,WAAU;oBACxB,EAAM;UACS,CAAA,CACd,EAAA,CAAA,CACF;YACN,kBAAC,GAAD,EAAa,QAAQ,EAAM,QAAU,CAAA,CACjC;WACK,CAAA,EACb,kBAAC,GAAD,EAAA,UACE,kBAAC,OAAD;QAAK,WAAU;kBAAf,CAEE,kBAAC,OAAD;SAAK,WAAU;mBAAf;UACG,EAAM,oBACL,kBAAC,GAAD;WAAO,SAAQ;WAAU,WAAU;qBAAnC,CACE,kBAAC,GAAD,EAAU,MAAM,IAAM,CAAA,EAAA,SAEhB;;UAET,EAAM,gBACL,kBAAC,GAAD;WAAO,SAAQ;WAAU,WAAU;qBAAnC,CACE,kBAAC,GAAD,EAAQ,MAAM,IAAM,CAAA,EAAA,QAEd;;UAET,EAAM,sBACL,kBAAC,GAAD;WAAO,SAAQ;WAAU,WAAU;qBAAnC,CACE,kBAAC,GAAD,EAAU,MAAM,IAAM,CAAA,EAAA,YAEhB;;UAEN;YAGN,kBAAC,OAAD;SAAK,WAAU;mBAAf,CAAgF,YACrE,EAAmB,EAAM,UAAU,CACxC;WACF;WACM,CAAA,CACT;;MACF,EAjDI,EAAM,GAiDV,CAEV;KACG,CAAA,GAEN,kBAAC,GAAD;KACE,cAAa;KACb,OAAM;KACN,aAAY;KACZ,QACE,kBAAC,GAAD;MAAQ,UAAU,kBAAC,GAAD,EAAM,MAAM,IAAM,CAAA;gBAClC,kBAAC,GAAD;OAAM,IAAI,EAAQ,aAAa;iBAAE;OAAmB,CAAA;MAC7C,CAAA;KAEX,CAAA;IAIJ,kBAAC,GAAD;KAAW,WAAU;KAAQ,MAAA;KAAK,WAAU;eAA5C,CACE,kBAAC,OAAD;MAAK,WAAU;gBAAf,CACE,kBAAC,MAAD;OAAI,WAAU;iBAAd,CACE,kBAAC,GAAD,EAAS,MAAM,IAAM,CAAA,EAAA,mBAElB;UACL,kBAAC,KAAD;OAAG,WAAU;iBAA8B;OAEvC,CAAA,CACA;SACN,kBAAC,OAAD,EAAA,UAAA,CACE,kBAAC,OAAD;MAAK,WAAU;gBAAf;OACE,kBAAC,OAAD;QAAK,WAAU;kBAAf,CACE,kBAAC,MAAD;SAAI,WAAU;mBAAd,CACE,kBAAC,GAAD;UAAU,MAAM;UAAI,WAAU;UAAiB,CAAA,EAAA,mBAE5C;YACL,kBAAC,KAAD;SAAG,WAAU;mBAA8B;SAEvC,CAAA,CACA;;OACN,kBAAC,OAAD;QAAK,WAAU;kBAAf,CACE,kBAAC,MAAD;SAAI,WAAU;mBAAd,CACE,kBAAC,GAAD;UAAQ,MAAM;UAAI,WAAU;UAAiB,CAAA,EAAA,sBAE1C;YACL,kBAAC,KAAD;SAAG,WAAU;mBAA8B;SAEvC,CAAA,CACA;;OACN,kBAAC,OAAD;QAAK,WAAU;kBAAf,CACE,kBAAC,MAAD;SAAI,WAAU;mBAAd,CACE,kBAAC,GAAD;UAAU,MAAM;UAAI,WAAU;UAAiB,CAAA,EAAA,qBAE5C;YACL,kBAAC,KAAD;SAAG,WAAU;mBAA8B;SAEvC,CAAA,CACA;;OACF;SAEN,kBAAC,OAAD;MAAK,WAAU;gBAAf,CACE,kBAAC,MAAD;OAAI,WAAU;iBAAmB;OAAc,CAAA,EAC/C,kBAAC,MAAD;OAAI,WAAU;iBAAd;QACE,kBAAC,MAAD,EAAA,UAAI,gFAA+E,CAAA;QACnF,kBAAC,MAAD,EAAA,UAAI,2EAA0E,CAAA;QAC9E,kBAAC,MAAD,EAAA,UAAI,4EAA2E,CAAA;QAC5E;SACD;QACF,EAAA,CAAA,CACI;;IACR;;EACK,CAAA"}
|
|
1
|
+
{"version":3,"file":"SkillsPage.js","names":[],"sources":["../../../src/botlit/pages/SkillsPage.tsx"],"sourcesContent":["/**\n * Skills Page\n * @module botlit/pages\n */\n\nimport type { FC } from 'react';\nimport { useState } from 'react';\nimport { Link } from 'react-router';\nimport { useBotlit } from '../providers/BotlitProvider';\nimport {\n Plus,\n Search as SearchIcon,\n Filter,\n Sparkles,\n FileText,\n Wrench,\n Database,\n Package,\n} from 'lucide-react';\nimport { useTr } from '../../shared/hooks/useTr';\nimport { PagePurpose, GlassCard } from '@burdenoff/fe-libs/ui';\nimport { PageLayout } from '../components/PageLayout';\nimport { Card, CardHeader, CardTitle, CardContent, CardDescription } from '../components/Card';\nimport { Button } from '../components/Button';\nimport { Input } from '../components/Input';\nimport { Badge, StatusBadge } from '../components/Badge';\nimport { EmptyState } from '../components/EmptyState';\nimport { ErrorState } from '../components/ErrorState';\nimport { useSkills } from '../hooks';\nimport { formatRelativeTime } from '../utils/formatters';\n\nexport const SkillsPage: FC = () => {\n const t = useTr();\n const { getPath } = useBotlit();\n const [search, setSearch] = useState('');\n const { data: skills, loading, error, refetch } = useSkills({ search });\n\n return (\n <PageLayout\n title={t('botlit.skills.title', 'Skills')}\n description={t(\n 'botlit.skills.description',\n 'Reusable skill bundles that combine prompts, tools, and knowledge'\n )}\n actions={\n <Button leftIcon={<Plus size={16} />}>\n <Link to={getPath('skills/new')}>\n {t('botlit.skills.actions.createSkill', 'Create Skill')}\n </Link>\n </Button>\n }\n >\n <div className=\"space-y-6\">\n <PagePurpose icon={<Sparkles size={18} />}>\n {t(\n 'botlit.skills.purpose',\n 'A skill is a reusable bundle that packages a prompt template, a tool policy and a knowledge (retrieval) profile into one capability you can drop onto any agent. Build a skill once — say \"Customer Support\" or \"Code Review\" — and reuse it across agents instead of wiring the same prompt, tools and knowledge by hand each time.'\n )}\n </PagePurpose>\n\n {/* Search */}\n <div className=\"flex items-center gap-4\">\n <div className=\"relative flex-1 max-w-md\">\n <SearchIcon className=\"absolute left-3 top-1/2 -translate-y-1/2 h-4 w-4 text-text-secondary\" />\n <Input\n placeholder={t('botlit.skills.searchPlaceholder', 'Search skills...')}\n value={search}\n onChange={(e) => setSearch(e.target.value)}\n className=\"pl-9\"\n />\n </div>\n <Button variant=\"outline\" leftIcon={<Filter size={16} />}>\n {t('botlit.skills.actions.filters', 'Filters')}\n </Button>\n </div>\n\n {/* Skills List */}\n {loading ? (\n <div className=\"grid grid-cols-1 md:grid-cols-2 lg:grid-cols-3 gap-4\">\n {[1, 2, 3, 4, 5, 6].map((i) => (\n <div\n key={i}\n className=\"h-48 bg-bg-sunken motion-safe:animate-vc-shimmer rounded-lg\"\n />\n ))}\n </div>\n ) : error ? (\n <ErrorState resource=\"skills\" error={error} onRetry={() => void refetch()} />\n ) : skills.length > 0 ? (\n <div className=\"grid grid-cols-1 md:grid-cols-2 lg:grid-cols-3 gap-4\">\n {skills.map(\n (skill: {\n id: string;\n name: string;\n description?: string | null;\n status: string;\n promptTemplateId?: string | null;\n toolPolicyId?: string | null;\n retrievalProfileId?: string | null;\n createdAt: string;\n }) => (\n <Link key={skill.id} to={getPath(`skills/${skill.id}`)}>\n <Card className=\"h-full hover:border-primary/50 transition-colors cursor-pointer\">\n <CardHeader>\n <div className=\"flex items-start justify-between\">\n <div className=\"flex items-center gap-3\">\n <div className=\"p-2 bg-gradient-to-br from-primary/20 to-primary/5 rounded-lg\">\n <Sparkles className=\"h-5 w-5 text-primary\" />\n </div>\n <div>\n <CardTitle className=\"text-base\">{skill.name}</CardTitle>\n <CardDescription className=\"text-xs line-clamp-1\">\n {skill.description}\n </CardDescription>\n </div>\n </div>\n <StatusBadge status={skill.status} />\n </div>\n </CardHeader>\n <CardContent>\n <div className=\"space-y-3\">\n {/* Capabilities */}\n <div className=\"flex flex-wrap gap-2\">\n {skill.promptTemplateId && (\n <Badge variant=\"outline\" className=\"text-xs flex items-center gap-1\">\n <FileText size={10} />\n {t('botlit.skills.badge.prompt', 'Prompt')}\n </Badge>\n )}\n {skill.toolPolicyId && (\n <Badge variant=\"outline\" className=\"text-xs flex items-center gap-1\">\n <Wrench size={10} />\n {t('botlit.skills.badge.tools', 'Tools')}\n </Badge>\n )}\n {skill.retrievalProfileId && (\n <Badge variant=\"outline\" className=\"text-xs flex items-center gap-1\">\n <Database size={10} />\n {t('botlit.skills.badge.knowledge', 'Knowledge')}\n </Badge>\n )}\n </div>\n\n {/* Footer */}\n <div className=\"pt-3 border-t border-border-subtle text-xs text-text-secondary\">\n {t('botlit.botsList.createdLabel', 'Created')}{' '}\n {formatRelativeTime(skill.createdAt)}\n </div>\n </div>\n </CardContent>\n </Card>\n </Link>\n )\n )}\n </div>\n ) : (\n <EmptyState\n illustration=\"empty-generic\"\n title={t('botlit.skills.empty.title', 'No skills created')}\n description={t(\n 'botlit.skills.empty.description',\n 'Create reusable skill bundles to quickly configure agents with common capabilities.'\n )}\n action={\n <Button leftIcon={<Plus size={16} />}>\n <Link to={getPath('skills/new')}>\n {t('botlit.skills.actions.createSkill', 'Create Skill')}\n </Link>\n </Button>\n }\n />\n )}\n\n {/* Skills Overview */}\n <GlassCard treatment=\"glass\" glow className=\"p-6\">\n <div className=\"mb-4\">\n <h2 className=\"flex items-center gap-2 text-lg font-semibold tracking-tight text-text-primary\">\n <Package size={18} />\n {t('botlit.skills.overview.title', 'What are Skills?')}\n </h2>\n <p className=\"text-sm text-text-secondary\">\n {t(\n 'botlit.skills.overview.description',\n 'Skills are composable bundles that encapsulate agent capabilities'\n )}\n </p>\n </div>\n <div>\n <div className=\"grid grid-cols-1 md:grid-cols-3 gap-6\">\n <div className=\"space-y-2\">\n <h4 className=\"font-medium flex items-center gap-2\">\n <FileText size={16} className=\"text-primary\" />\n {t('botlit.skills.overview.promptTitle', 'Prompt Templates')}\n </h4>\n <p className=\"text-sm text-text-secondary\">\n {t(\n 'botlit.skills.overview.promptDescription',\n 'Pre-configured system prompts with variable support for consistent agent behavior.'\n )}\n </p>\n </div>\n <div className=\"space-y-2\">\n <h4 className=\"font-medium flex items-center gap-2\">\n <Wrench size={16} className=\"text-primary\" />\n {t('botlit.skills.overview.toolsTitle', 'Tool Configurations')}\n </h4>\n <p className=\"text-sm text-text-secondary\">\n {t(\n 'botlit.skills.overview.toolsDescription',\n 'Bundled MCP tool packs with policies defining allowed operations and limits.'\n )}\n </p>\n </div>\n <div className=\"space-y-2\">\n <h4 className=\"font-medium flex items-center gap-2\">\n <Database size={16} className=\"text-primary\" />\n {t('botlit.skills.overview.knowledgeTitle', 'Knowledge Bindings')}\n </h4>\n <p className=\"text-sm text-text-secondary\">\n {t(\n 'botlit.skills.overview.knowledgeDescription',\n 'Pre-configured retrieval profiles for domain-specific knowledge access.'\n )}\n </p>\n </div>\n </div>\n\n <div className=\"mt-6 p-4 bg-bg-sunken rounded-lg\">\n <h4 className=\"font-medium mb-2\">\n {t('botlit.skills.overview.useCases.title', 'Use Cases')}\n </h4>\n <ul className=\"text-sm text-text-secondary space-y-1\">\n <li>\n •{' '}\n {t(\n 'botlit.skills.overview.useCases.case1',\n 'Create a \"Customer Support\" skill with FAQ knowledge and ticketing tools'\n )}\n </li>\n <li>\n •{' '}\n {t(\n 'botlit.skills.overview.useCases.case2',\n 'Build a \"Code Review\" skill with GitHub tools and coding guidelines'\n )}\n </li>\n <li>\n •{' '}\n {t(\n 'botlit.skills.overview.useCases.case3',\n 'Package a \"Sales Assistant\" skill with CRM tools and product catalog'\n )}\n </li>\n </ul>\n </div>\n </div>\n </GlassCard>\n </div>\n </PageLayout>\n );\n};\n"],"mappings":"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"}
|