@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.
Files changed (65) hide show
  1. package/dist/botlit/BotlitRoutes.js.map +1 -1
  2. package/dist/botlit/BotmanorRoot.js.map +1 -1
  3. package/dist/botlit/BotmanorRootInner.js +4 -4
  4. package/dist/botlit/BotmanorRootInner.js.map +1 -1
  5. package/dist/botlit/components/ErrorState.js +33 -29
  6. package/dist/botlit/components/ErrorState.js.map +1 -1
  7. package/dist/botlit/components/RouteLoader.js +52 -48
  8. package/dist/botlit/components/RouteLoader.js.map +1 -1
  9. package/dist/botlit/components/VersionHistoryPanel.js +74 -77
  10. package/dist/botlit/components/VersionHistoryPanel.js.map +1 -1
  11. package/dist/botlit/components/WorkspaceRequired.js +31 -30
  12. package/dist/botlit/components/WorkspaceRequired.js.map +1 -1
  13. package/dist/botlit/hooks/internal/workspaceGateway.js.map +1 -1
  14. package/dist/botlit/hooks/useConversations.js.map +1 -1
  15. package/dist/botlit/hooks/useLLMProviders.js.map +1 -1
  16. package/dist/botlit/pages/A2AAgentDetailPage.js +1 -1
  17. package/dist/botlit/pages/A2AAgentDetailPage.js.map +1 -1
  18. package/dist/botlit/pages/A2ARegistryPage.js +116 -124
  19. package/dist/botlit/pages/A2ARegistryPage.js.map +1 -1
  20. package/dist/botlit/pages/AgentDetailPage.js +169 -172
  21. package/dist/botlit/pages/AgentDetailPage.js.map +1 -1
  22. package/dist/botlit/pages/AgentsListPage.js +96 -90
  23. package/dist/botlit/pages/AgentsListPage.js.map +1 -1
  24. package/dist/botlit/pages/BotChannelsTab.js.map +1 -1
  25. package/dist/botlit/pages/BotDetailPage.js +228 -231
  26. package/dist/botlit/pages/BotDetailPage.js.map +1 -1
  27. package/dist/botlit/pages/BotWorkflowTab.js +84 -87
  28. package/dist/botlit/pages/BotWorkflowTab.js.map +1 -1
  29. package/dist/botlit/pages/BotsListPage.js +144 -147
  30. package/dist/botlit/pages/BotsListPage.js.map +1 -1
  31. package/dist/botlit/pages/BucketsPage.js +3 -3
  32. package/dist/botlit/pages/BucketsPage.js.map +1 -1
  33. package/dist/botlit/pages/ChannelDetailPage.js +1 -1
  34. package/dist/botlit/pages/ChannelDetailPage.js.map +1 -1
  35. package/dist/botlit/pages/ChannelsPage.js +156 -149
  36. package/dist/botlit/pages/ChannelsPage.js.map +1 -1
  37. package/dist/botlit/pages/ChatPage.js +126 -129
  38. package/dist/botlit/pages/ChatPage.js.map +1 -1
  39. package/dist/botlit/pages/DashboardPage.js +111 -114
  40. package/dist/botlit/pages/DashboardPage.js.map +1 -1
  41. package/dist/botlit/pages/ExecutionsPage.js +163 -159
  42. package/dist/botlit/pages/ExecutionsPage.js.map +1 -1
  43. package/dist/botlit/pages/InstalledPackagesPage.js +3 -3
  44. package/dist/botlit/pages/InstalledPackagesPage.js.map +1 -1
  45. package/dist/botlit/pages/KnowledgeBasesPage.js +84 -78
  46. package/dist/botlit/pages/KnowledgeBasesPage.js.map +1 -1
  47. package/dist/botlit/pages/MCPServersPage.js +159 -154
  48. package/dist/botlit/pages/MCPServersPage.js.map +1 -1
  49. package/dist/botlit/pages/PoliciesPage.js +119 -114
  50. package/dist/botlit/pages/PoliciesPage.js.map +1 -1
  51. package/dist/botlit/pages/RetrievalProfilesPage.js +102 -109
  52. package/dist/botlit/pages/RetrievalProfilesPage.js.map +1 -1
  53. package/dist/botlit/pages/SettingsPage.js +144 -159
  54. package/dist/botlit/pages/SettingsPage.js.map +1 -1
  55. package/dist/botlit/pages/SkillsPage.js +122 -105
  56. package/dist/botlit/pages/SkillsPage.js.map +1 -1
  57. package/dist/botlit/pages/StorePage.js +176 -175
  58. package/dist/botlit/pages/StorePage.js.map +1 -1
  59. package/dist/botlit/providers/BotlitProvider.js.map +1 -1
  60. package/dist/botlit/store/botlitStore.js +1 -1
  61. package/dist/botlit/store/botlitStore.js.map +1 -1
  62. package/dist/botlit/utils/navigation.js.map +1 -1
  63. package/dist/shared/hooks/useTr.js +14 -0
  64. package/dist/shared/hooks/useTr.js.map +1 -0
  65. package/package.json +33 -9
@@ -1,56 +1,57 @@
1
- import { useBotlit as e } from "../providers/BotlitProvider.js";
2
- import { formatRelativeTime as t } from "../utils/formatters.js";
3
- import { PageLayout as n } from "../components/PageLayout.js";
4
- import { Card as r, CardContent as i, CardDescription as a, CardHeader as o, CardTitle as s } from "../components/Card.js";
5
- import { Button as c } from "../components/Button.js";
6
- import { Badge as l, StatusBadge as u } from "../components/Badge.js";
7
- import { EmptyState as d } from "../components/EmptyState.js";
8
- import { Input as f } from "../components/Input.js";
9
- import { ErrorState as p } from "../components/ErrorState.js";
10
- import { useSkills as m } from "../hooks/useSkills.js";
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 h } from "react";
13
- import { GlassCard as g, PagePurpose as _ } from "@burdenoff/fe-libs/ui";
14
- import { jsx as v, jsxs as y } from "react/jsx-runtime";
15
- import { Link as b } from "react-router";
16
- import { Database as x, FileText as S, Filter as C, Package as w, Plus as T, Search as E, Sparkles as D, Wrench as O } from "lucide-react";
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 k = () => {
19
- let { getPath: k } = e(), [A, j] = h(""), { data: M, loading: N, error: P, refetch: F } = m({ search: A });
20
- return /* @__PURE__ */ v(n, {
21
- title: "Skills",
22
- description: "Reusable skill bundles that combine prompts, tools, and knowledge",
23
- actions: /* @__PURE__ */ v(c, {
24
- leftIcon: /* @__PURE__ */ v(T, { size: 16 }),
25
- children: /* @__PURE__ */ v(b, {
26
- to: k("skills/new"),
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__ */ y("div", {
31
+ children: /* @__PURE__ */ b("div", {
31
32
  className: "space-y-6",
32
33
  children: [
33
- /* @__PURE__ */ v(_, {
34
- icon: /* @__PURE__ */ v(D, { size: 18 }),
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 “Customer Support” or “Code Review” — and reuse it across agents instead of wiring the same prompt, tools and knowledge by hand each time."
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__ */ y("div", {
38
+ /* @__PURE__ */ b("div", {
38
39
  className: "flex items-center gap-4",
39
- children: [/* @__PURE__ */ y("div", {
40
+ children: [/* @__PURE__ */ b("div", {
40
41
  className: "relative flex-1 max-w-md",
41
- children: [/* @__PURE__ */ v(E, { className: "absolute left-3 top-1/2 -translate-y-1/2 h-4 w-4 text-text-secondary" }), /* @__PURE__ */ v(f, {
42
- placeholder: "Search skills...",
43
- value: A,
44
- onChange: (e) => j(e.target.value),
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__ */ v(c, {
48
+ }), /* @__PURE__ */ y(l, {
48
49
  variant: "outline",
49
- leftIcon: /* @__PURE__ */ v(C, { size: 16 }),
50
- children: "Filters"
50
+ leftIcon: /* @__PURE__ */ y(w, { size: 16 }),
51
+ children: A("botlit.skills.actions.filters", "Filters")
51
52
  })]
52
53
  }),
53
- N ? /* @__PURE__ */ v("div", {
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__ */ v("div", { className: "h-48 bg-bg-sunken motion-safe:animate-vc-shimmer rounded-lg" }, e))
63
- }) : P ? /* @__PURE__ */ v(p, {
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: P,
66
- onRetry: () => void F()
67
- }) : M.length > 0 ? /* @__PURE__ */ v("div", {
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: M.map((e) => /* @__PURE__ */ v(b, {
70
- to: k(`skills/${e.id}`),
71
- children: /* @__PURE__ */ y(r, {
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__ */ v(o, { children: /* @__PURE__ */ y("div", {
74
+ children: [/* @__PURE__ */ y(s, { children: /* @__PURE__ */ b("div", {
74
75
  className: "flex items-start justify-between",
75
- children: [/* @__PURE__ */ y("div", {
76
+ children: [/* @__PURE__ */ b("div", {
76
77
  className: "flex items-center gap-3",
77
- children: [/* @__PURE__ */ v("div", {
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__ */ v(D, { className: "h-5 w-5 text-primary" })
80
- }), /* @__PURE__ */ y("div", { children: [/* @__PURE__ */ v(s, {
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__ */ v(a, {
84
+ }), /* @__PURE__ */ y(o, {
84
85
  className: "text-xs line-clamp-1",
85
86
  children: e.description
86
87
  })] })]
87
- }), /* @__PURE__ */ v(u, { status: e.status })]
88
- }) }), /* @__PURE__ */ v(i, { children: /* @__PURE__ */ y("div", {
88
+ }), /* @__PURE__ */ y(d, { status: e.status })]
89
+ }) }), /* @__PURE__ */ y(a, { children: /* @__PURE__ */ b("div", {
89
90
  className: "space-y-3",
90
- children: [/* @__PURE__ */ y("div", {
91
+ children: [/* @__PURE__ */ b("div", {
91
92
  className: "flex flex-wrap gap-2",
92
93
  children: [
93
- e.promptTemplateId && /* @__PURE__ */ y(l, {
94
+ e.promptTemplateId && /* @__PURE__ */ b(u, {
94
95
  variant: "outline",
95
96
  className: "text-xs flex items-center gap-1",
96
- children: [/* @__PURE__ */ v(S, { size: 10 }), "Prompt"]
97
+ children: [/* @__PURE__ */ y(C, { size: 10 }), A("botlit.skills.badge.prompt", "Prompt")]
97
98
  }),
98
- e.toolPolicyId && /* @__PURE__ */ y(l, {
99
+ e.toolPolicyId && /* @__PURE__ */ b(u, {
99
100
  variant: "outline",
100
101
  className: "text-xs flex items-center gap-1",
101
- children: [/* @__PURE__ */ v(O, { size: 10 }), "Tools"]
102
+ children: [/* @__PURE__ */ y(k, { size: 10 }), A("botlit.skills.badge.tools", "Tools")]
102
103
  }),
103
- e.retrievalProfileId && /* @__PURE__ */ y(l, {
104
+ e.retrievalProfileId && /* @__PURE__ */ b(u, {
104
105
  variant: "outline",
105
106
  className: "text-xs flex items-center gap-1",
106
- children: [/* @__PURE__ */ v(x, { size: 10 }), "Knowledge"]
107
+ children: [/* @__PURE__ */ y(S, { size: 10 }), A("botlit.skills.badge.knowledge", "Knowledge")]
107
108
  })
108
109
  ]
109
- }), /* @__PURE__ */ y("div", {
110
+ }), /* @__PURE__ */ b("div", {
110
111
  className: "pt-3 border-t border-border-subtle text-xs text-text-secondary",
111
- children: ["Created ", t(e.createdAt)]
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__ */ v(d, {
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__ */ v(c, {
121
- leftIcon: /* @__PURE__ */ v(T, { size: 16 }),
122
- children: /* @__PURE__ */ v(b, {
123
- to: k("skills/new"),
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__ */ y(g, {
133
+ /* @__PURE__ */ b(_, {
129
134
  treatment: "glass",
130
135
  glow: !0,
131
136
  className: "p-6",
132
- children: [/* @__PURE__ */ y("div", {
137
+ children: [/* @__PURE__ */ b("div", {
133
138
  className: "mb-4",
134
- children: [/* @__PURE__ */ y("h2", {
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__ */ v(w, { size: 18 }), "What are Skills?"]
137
- }), /* @__PURE__ */ v("p", {
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__ */ y("div", { children: [/* @__PURE__ */ y("div", {
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__ */ y("div", {
149
+ /* @__PURE__ */ b("div", {
145
150
  className: "space-y-2",
146
- children: [/* @__PURE__ */ y("h4", {
151
+ children: [/* @__PURE__ */ b("h4", {
147
152
  className: "font-medium flex items-center gap-2",
148
- children: [/* @__PURE__ */ v(S, {
153
+ children: [/* @__PURE__ */ y(C, {
149
154
  size: 16,
150
155
  className: "text-primary"
151
- }), "Prompt Templates"]
152
- }), /* @__PURE__ */ v("p", {
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__ */ y("div", {
162
+ /* @__PURE__ */ b("div", {
158
163
  className: "space-y-2",
159
- children: [/* @__PURE__ */ y("h4", {
164
+ children: [/* @__PURE__ */ b("h4", {
160
165
  className: "font-medium flex items-center gap-2",
161
- children: [/* @__PURE__ */ v(O, {
166
+ children: [/* @__PURE__ */ y(k, {
162
167
  size: 16,
163
168
  className: "text-primary"
164
- }), "Tool Configurations"]
165
- }), /* @__PURE__ */ v("p", {
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__ */ y("div", {
175
+ /* @__PURE__ */ b("div", {
171
176
  className: "space-y-2",
172
- children: [/* @__PURE__ */ y("h4", {
177
+ children: [/* @__PURE__ */ b("h4", {
173
178
  className: "font-medium flex items-center gap-2",
174
- children: [/* @__PURE__ */ v(x, {
179
+ children: [/* @__PURE__ */ y(S, {
175
180
  size: 16,
176
181
  className: "text-primary"
177
- }), "Knowledge Bindings"]
178
- }), /* @__PURE__ */ v("p", {
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__ */ y("div", {
189
+ }), /* @__PURE__ */ b("div", {
185
190
  className: "mt-6 p-4 bg-bg-sunken rounded-lg",
186
- children: [/* @__PURE__ */ v("h4", {
191
+ children: [/* @__PURE__ */ y("h4", {
187
192
  className: "font-medium mb-2",
188
- children: "Use Cases"
189
- }), /* @__PURE__ */ y("ul", {
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__ */ v("li", { children: "• Create a \"Customer Support\" skill with FAQ knowledge and ticketing tools" }),
193
- /* @__PURE__ */ v("li", { children: "• Build a \"Code Review\" skill with GitHub tools and coding guidelines" }),
194
- /* @__PURE__ */ v("li", { children: "• Package a \"Sales Assistant\" skill with CRM tools and product catalog" })
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 { k as SkillsPage };
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 &ldquo;Customer Support&rdquo; or &ldquo;Code Review&rdquo; — 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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"}