@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,123 +1,128 @@
|
|
|
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 { useRetrievalProfiles as h } from "../hooks/useRetrievalProfiles.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, Filter as C, Layers as w, Plus as T, Search as E, Settings as D, Zap as O } from "lucide-react";
|
|
17
18
|
//#region src/botlit/pages/RetrievalProfilesPage.tsx
|
|
18
|
-
var
|
|
19
|
-
let { getPath:
|
|
20
|
-
return /* @__PURE__ */
|
|
21
|
-
title: "Retrieval Profiles",
|
|
22
|
-
description: "Configure how agents retrieve and rank knowledge from knowledge bases",
|
|
23
|
-
actions: /* @__PURE__ */
|
|
24
|
-
leftIcon: /* @__PURE__ */
|
|
25
|
-
children: /* @__PURE__ */
|
|
26
|
-
to:
|
|
27
|
-
children: "Create Profile"
|
|
19
|
+
var k = () => {
|
|
20
|
+
let k = e(), { getPath: A } = t(), [j, M] = g(""), { data: N, loading: P, error: F, refetch: I } = h({ search: j });
|
|
21
|
+
return /* @__PURE__ */ y(r, {
|
|
22
|
+
title: k("botlit.retrievalProfiles.title", "Retrieval Profiles"),
|
|
23
|
+
description: k("botlit.retrievalProfiles.description", "Configure how agents retrieve and rank knowledge from knowledge bases"),
|
|
24
|
+
actions: /* @__PURE__ */ y(l, {
|
|
25
|
+
leftIcon: /* @__PURE__ */ y(T, { size: 16 }),
|
|
26
|
+
children: /* @__PURE__ */ y(x, {
|
|
27
|
+
to: A("retrieval-profiles/new"),
|
|
28
|
+
children: k("botlit.retrievalProfiles.actions.createProfile", "Create Profile")
|
|
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 retrieval profile decides how an agent searches your knowledge bases — which search strategy to use (semantic, keyword or hybrid), how many passages to pull back, whether to rerank for relevance and whether answers must cite their sources. Tune a profile here to control the accuracy-versus-speed trade-off of every grounded answer your agents give."
|
|
34
|
+
/* @__PURE__ */ y(v, {
|
|
35
|
+
icon: /* @__PURE__ */ y(S, { size: 18 }),
|
|
36
|
+
children: k("botlit.retrievalProfiles.purpose", "A retrieval profile decides how an agent searches your knowledge bases — which search strategy to use (semantic, keyword or hybrid), how many passages to pull back, whether to rerank for relevance and whether answers must cite their sources. Tune a profile here to control the accuracy-versus-speed trade-off of every grounded answer your agents give.")
|
|
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 profiles...",
|
|
43
|
-
value:
|
|
44
|
-
onChange: (e) =>
|
|
42
|
+
children: [/* @__PURE__ */ y(E, { className: "absolute left-3 top-1/2 -translate-y-1/2 h-4 w-4 text-text-secondary" }), /* @__PURE__ */ y(p, {
|
|
43
|
+
placeholder: k("botlit.retrievalProfiles.searchPlaceholder", "Search profiles..."),
|
|
44
|
+
value: j,
|
|
45
|
+
onChange: (e) => M(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(C, { size: 16 }),
|
|
51
|
+
children: k("botlit.retrievalProfiles.actions.filters", "Filters")
|
|
51
52
|
})]
|
|
52
53
|
}),
|
|
53
|
-
|
|
54
|
+
P ? /* @__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,
|
|
57
58
|
2,
|
|
58
59
|
3
|
|
59
|
-
].map((e) => /* @__PURE__ */
|
|
60
|
-
}) :
|
|
60
|
+
].map((e) => /* @__PURE__ */ y("div", { className: "h-48 bg-bg-sunken motion-safe:animate-vc-shimmer rounded-lg" }, e))
|
|
61
|
+
}) : F ? /* @__PURE__ */ y(m, {
|
|
61
62
|
resource: "retrieval profiles",
|
|
62
|
-
error:
|
|
63
|
-
onRetry: () => void
|
|
64
|
-
}) :
|
|
63
|
+
error: F,
|
|
64
|
+
onRetry: () => void I()
|
|
65
|
+
}) : N.length > 0 ? /* @__PURE__ */ y("div", {
|
|
65
66
|
className: "grid grid-cols-1 md:grid-cols-2 lg:grid-cols-3 gap-4",
|
|
66
|
-
children:
|
|
67
|
-
to:
|
|
68
|
-
children: /* @__PURE__ */
|
|
67
|
+
children: N.map((e) => /* @__PURE__ */ y(x, {
|
|
68
|
+
to: A(`retrieval-profiles/${e.id}`),
|
|
69
|
+
children: /* @__PURE__ */ b(i, {
|
|
69
70
|
className: "h-full hover:border-primary/50 transition-colors cursor-pointer",
|
|
70
|
-
children: [/* @__PURE__ */
|
|
71
|
+
children: [/* @__PURE__ */ y(s, { children: /* @__PURE__ */ b("div", {
|
|
71
72
|
className: "flex items-start justify-between",
|
|
72
|
-
children: [/* @__PURE__ */
|
|
73
|
+
children: [/* @__PURE__ */ b("div", {
|
|
73
74
|
className: "flex items-center gap-3",
|
|
74
|
-
children: [/* @__PURE__ */
|
|
75
|
+
children: [/* @__PURE__ */ y("div", {
|
|
75
76
|
className: "p-2 bg-action-primary-bg/10 rounded-lg",
|
|
76
|
-
children: /* @__PURE__ */
|
|
77
|
-
}), /* @__PURE__ */
|
|
77
|
+
children: /* @__PURE__ */ y(S, { className: "h-5 w-5 text-primary" })
|
|
78
|
+
}), /* @__PURE__ */ b("div", { children: [/* @__PURE__ */ y(c, {
|
|
78
79
|
className: "text-base",
|
|
79
80
|
children: e.name
|
|
80
|
-
}), /* @__PURE__ */
|
|
81
|
+
}), /* @__PURE__ */ y(o, {
|
|
81
82
|
className: "text-xs",
|
|
82
83
|
children: e.description
|
|
83
84
|
})] })]
|
|
84
|
-
}), /* @__PURE__ */
|
|
85
|
-
}) }), /* @__PURE__ */
|
|
85
|
+
}), /* @__PURE__ */ y(d, { status: e.status })]
|
|
86
|
+
}) }), /* @__PURE__ */ y(a, { children: /* @__PURE__ */ b("div", {
|
|
86
87
|
className: "space-y-3",
|
|
87
88
|
children: [
|
|
88
|
-
/* @__PURE__ */
|
|
89
|
+
/* @__PURE__ */ b("div", {
|
|
89
90
|
className: "flex items-center gap-2",
|
|
90
|
-
children: [/* @__PURE__ */
|
|
91
|
+
children: [/* @__PURE__ */ y(w, {
|
|
91
92
|
size: 14,
|
|
92
93
|
className: "text-text-secondary"
|
|
93
94
|
}), /* @__PURE__ */ y("span", {
|
|
94
95
|
className: "text-sm capitalize",
|
|
95
|
-
children:
|
|
96
|
+
children: k("botlit.retrievalProfiles.overview.mode", "{{mode}} mode", { mode: e.strategyMode.toLowerCase().replace("_", " ") })
|
|
96
97
|
})]
|
|
97
98
|
}),
|
|
98
|
-
/* @__PURE__ */
|
|
99
|
+
/* @__PURE__ */ b("div", {
|
|
99
100
|
className: "flex items-center gap-2",
|
|
100
|
-
children: [/* @__PURE__ */
|
|
101
|
+
children: [/* @__PURE__ */ y(O, {
|
|
101
102
|
size: 14,
|
|
102
103
|
className: "text-text-secondary"
|
|
103
104
|
}), /* @__PURE__ */ y("span", {
|
|
104
105
|
className: "text-sm",
|
|
105
|
-
children:
|
|
106
|
+
children: k("botlit.retrievalProfiles.overview.citations", "Citations: {{status}}", { status: e.citationsRequired ? k("botlit.retrievalProfiles.overview.required", "Required") : k("botlit.retrievalProfiles.overview.optional", "Optional") })
|
|
106
107
|
})]
|
|
107
108
|
}),
|
|
108
|
-
/* @__PURE__ */
|
|
109
|
+
/* @__PURE__ */ b("div", {
|
|
109
110
|
className: "flex items-center gap-2",
|
|
110
|
-
children: [/* @__PURE__ */
|
|
111
|
+
children: [/* @__PURE__ */ y(S, {
|
|
111
112
|
size: 14,
|
|
112
113
|
className: "text-text-secondary"
|
|
113
114
|
}), /* @__PURE__ */ y("span", {
|
|
114
115
|
className: "text-sm",
|
|
115
|
-
children:
|
|
116
|
+
children: k("botlit.retrievalProfiles.topK", "Top K: {{value}}", { value: e.topK })
|
|
116
117
|
})]
|
|
117
118
|
}),
|
|
118
|
-
/* @__PURE__ */
|
|
119
|
+
/* @__PURE__ */ b("div", {
|
|
119
120
|
className: "pt-3 border-t border-border-subtle flex items-center justify-between text-xs text-text-secondary",
|
|
120
|
-
children: [/* @__PURE__ */
|
|
121
|
+
children: [/* @__PURE__ */ b("span", { children: [
|
|
122
|
+
k("botlit.botsList.createdLabel", "Created"),
|
|
123
|
+
" ",
|
|
124
|
+
n(e.createdAt)
|
|
125
|
+
] }), /* @__PURE__ */ y(u, {
|
|
121
126
|
variant: "outline",
|
|
122
127
|
className: "text-xs capitalize",
|
|
123
128
|
children: e.strategyMode.toLowerCase().replace("_", " ")
|
|
@@ -127,83 +132,71 @@ var O = () => {
|
|
|
127
132
|
}) })]
|
|
128
133
|
})
|
|
129
134
|
}, e.id))
|
|
130
|
-
}) : /* @__PURE__ */
|
|
135
|
+
}) : /* @__PURE__ */ y(f, {
|
|
131
136
|
illustration: "empty-files",
|
|
132
|
-
title: "No retrieval profiles",
|
|
133
|
-
description: "Create retrieval profiles to customize how agents search and rank knowledge.",
|
|
134
|
-
action: /* @__PURE__ */
|
|
135
|
-
leftIcon: /* @__PURE__ */
|
|
136
|
-
children: /* @__PURE__ */
|
|
137
|
-
to:
|
|
138
|
-
children: "Create Profile"
|
|
137
|
+
title: k("botlit.retrievalProfiles.empty.title", "No retrieval profiles"),
|
|
138
|
+
description: k("botlit.retrievalProfiles.empty.description", "Create retrieval profiles to customize how agents search and rank knowledge."),
|
|
139
|
+
action: /* @__PURE__ */ y(l, {
|
|
140
|
+
leftIcon: /* @__PURE__ */ y(T, { size: 16 }),
|
|
141
|
+
children: /* @__PURE__ */ y(x, {
|
|
142
|
+
to: A("retrieval-profiles/new"),
|
|
143
|
+
children: k("botlit.retrievalProfiles.actions.createProfile", "Create Profile")
|
|
139
144
|
})
|
|
140
145
|
})
|
|
141
146
|
}),
|
|
142
|
-
/* @__PURE__ */
|
|
147
|
+
/* @__PURE__ */ b(_, {
|
|
143
148
|
treatment: "glass",
|
|
144
149
|
glow: !0,
|
|
145
150
|
className: "p-6",
|
|
146
|
-
children: [/* @__PURE__ */
|
|
151
|
+
children: [/* @__PURE__ */ b("div", {
|
|
147
152
|
className: "mb-4",
|
|
148
|
-
children: [/* @__PURE__ */
|
|
153
|
+
children: [/* @__PURE__ */ b("h2", {
|
|
149
154
|
className: "flex items-center gap-2 text-lg font-semibold tracking-tight text-text-primary",
|
|
150
|
-
children: [/* @__PURE__ */
|
|
151
|
-
}), /* @__PURE__ */
|
|
155
|
+
children: [/* @__PURE__ */ y(D, { size: 18 }), k("botlit.retrievalProfiles.overview.title", "Retrieval Profile Configuration")]
|
|
156
|
+
}), /* @__PURE__ */ y("p", {
|
|
152
157
|
className: "text-sm text-text-secondary",
|
|
153
|
-
children: "Retrieval profiles control how knowledge is fetched and ranked for agent responses"
|
|
158
|
+
children: k("botlit.retrievalProfiles.overview.description", "Retrieval profiles control how knowledge is fetched and ranked for agent responses")
|
|
154
159
|
})]
|
|
155
|
-
}), /* @__PURE__ */
|
|
160
|
+
}), /* @__PURE__ */ b("div", {
|
|
156
161
|
className: "grid grid-cols-1 md:grid-cols-3 gap-6",
|
|
157
162
|
children: [
|
|
158
|
-
/* @__PURE__ */
|
|
163
|
+
/* @__PURE__ */ b("div", {
|
|
159
164
|
className: "space-y-2",
|
|
160
|
-
children: [/* @__PURE__ */
|
|
165
|
+
children: [/* @__PURE__ */ b("h4", {
|
|
161
166
|
className: "font-medium flex items-center gap-2",
|
|
162
|
-
children: [/* @__PURE__ */
|
|
167
|
+
children: [/* @__PURE__ */ y(w, {
|
|
163
168
|
size: 16,
|
|
164
169
|
className: "text-primary"
|
|
165
|
-
}), "Retrieval Modes"]
|
|
170
|
+
}), k("botlit.retrievalProfiles.overview.modesTitle", "Retrieval Modes")]
|
|
166
171
|
}), /* @__PURE__ */ y("ul", {
|
|
167
172
|
className: "text-sm text-text-secondary space-y-1",
|
|
168
|
-
children:
|
|
169
|
-
/* @__PURE__ */ y("li", { children: [/* @__PURE__ */ v("strong", { children: "Vector:" }), " Semantic similarity search"] }),
|
|
170
|
-
/* @__PURE__ */ y("li", { children: [/* @__PURE__ */ v("strong", { children: "Hybrid:" }), " Vector + keyword combined"] }),
|
|
171
|
-
/* @__PURE__ */ y("li", { children: [/* @__PURE__ */ v("strong", { children: "BM25:" }), " Traditional keyword search"] })
|
|
172
|
-
]
|
|
173
|
+
children: /* @__PURE__ */ y("li", { children: k("botlit.retrievalProfiles.overview.modesDescription", "Vector: semantic similarity search; Hybrid: vector + keyword combined; BM25: traditional keyword search.") })
|
|
173
174
|
})]
|
|
174
175
|
}),
|
|
175
|
-
/* @__PURE__ */
|
|
176
|
+
/* @__PURE__ */ b("div", {
|
|
176
177
|
className: "space-y-2",
|
|
177
|
-
children: [/* @__PURE__ */
|
|
178
|
+
children: [/* @__PURE__ */ b("h4", {
|
|
178
179
|
className: "font-medium flex items-center gap-2",
|
|
179
|
-
children: [/* @__PURE__ */
|
|
180
|
+
children: [/* @__PURE__ */ y(O, {
|
|
180
181
|
size: 16,
|
|
181
182
|
className: "text-primary"
|
|
182
|
-
}), "Reranking"]
|
|
183
|
+
}), k("botlit.retrievalProfiles.overview.rerankingTitle", "Reranking")]
|
|
183
184
|
}), /* @__PURE__ */ y("ul", {
|
|
184
185
|
className: "text-sm text-text-secondary space-y-1",
|
|
185
|
-
children:
|
|
186
|
-
/* @__PURE__ */ v("li", { children: "Cross-encoder reranking for better relevance" }),
|
|
187
|
-
/* @__PURE__ */ v("li", { children: "Improves precision at the cost of latency" }),
|
|
188
|
-
/* @__PURE__ */ v("li", { children: "Recommended for complex queries" })
|
|
189
|
-
]
|
|
186
|
+
children: /* @__PURE__ */ y("li", { children: k("botlit.retrievalProfiles.overview.rerankingDescription", "Cross-encoder reranking for better relevance; improves precision at the cost of latency; recommended for complex queries.") })
|
|
190
187
|
})]
|
|
191
188
|
}),
|
|
192
|
-
/* @__PURE__ */
|
|
189
|
+
/* @__PURE__ */ b("div", {
|
|
193
190
|
className: "space-y-2",
|
|
194
|
-
children: [/* @__PURE__ */
|
|
191
|
+
children: [/* @__PURE__ */ b("h4", {
|
|
195
192
|
className: "font-medium flex items-center gap-2",
|
|
196
|
-
children: [/* @__PURE__ */
|
|
193
|
+
children: [/* @__PURE__ */ y(S, {
|
|
197
194
|
size: 16,
|
|
198
195
|
className: "text-primary"
|
|
199
|
-
}), "Knowledge Sources"]
|
|
196
|
+
}), k("botlit.retrievalProfiles.overview.knowledgeSourcesTitle", "Knowledge Sources")]
|
|
200
197
|
}), /* @__PURE__ */ y("ul", {
|
|
201
198
|
className: "text-sm text-text-secondary space-y-1",
|
|
202
|
-
children:
|
|
203
|
-
/* @__PURE__ */ v("li", { children: "Bind multiple knowledge bases" }),
|
|
204
|
-
/* @__PURE__ */ v("li", { children: "Configure priority and weights" }),
|
|
205
|
-
/* @__PURE__ */ v("li", { children: "Set per-KB retrieval limits" })
|
|
206
|
-
]
|
|
199
|
+
children: /* @__PURE__ */ y("li", { children: k("botlit.retrievalProfiles.overview.knowledgeSourcesDescription", "Bind multiple knowledge bases, configure priority and weights, and set per-KB retrieval limits.") })
|
|
207
200
|
})]
|
|
208
201
|
})
|
|
209
202
|
]
|
|
@@ -214,6 +207,6 @@ var O = () => {
|
|
|
214
207
|
});
|
|
215
208
|
};
|
|
216
209
|
//#endregion
|
|
217
|
-
export {
|
|
210
|
+
export { k as RetrievalProfilesPage };
|
|
218
211
|
|
|
219
212
|
//# sourceMappingURL=RetrievalProfilesPage.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"RetrievalProfilesPage.js","names":[],"sources":["../../../src/botlit/pages/RetrievalProfilesPage.tsx"],"sourcesContent":["/**\n * Retrieval Profiles 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 { Plus, Search as SearchIcon, Filter, Database, Layers, Zap, Settings } 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 { useRetrievalProfiles } from '../hooks';\nimport { formatRelativeTime } from '../utils/formatters';\n\nexport const RetrievalProfilesPage: FC = () => {\n const { getPath } = useBotlit();\n const [search, setSearch] = useState('');\n const { data: profiles, loading, error, refetch } = useRetrievalProfiles({ search });\n\n return (\n <PageLayout\n title=\"Retrieval Profiles\"\n description=\"Configure how agents retrieve and rank knowledge from knowledge bases\"\n actions={\n <Button leftIcon={<Plus size={16} />}>\n <Link to={getPath('retrieval-profiles/new')}>Create Profile</Link>\n </Button>\n }\n >\n <div className=\"space-y-6\">\n <PagePurpose icon={<Database size={18} />}>\n A retrieval profile decides how an agent searches your knowledge bases — which search\n strategy to use (semantic, keyword or hybrid), how many passages to pull back, whether to\n rerank for relevance and whether answers must cite their sources. Tune a profile here to\n control the accuracy-versus-speed trade-off of every grounded answer your agents give.\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 profiles...\"\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 {/* Profiles List */}\n {loading ? (\n <div className=\"grid grid-cols-1 md:grid-cols-2 lg:grid-cols-3 gap-4\">\n {[1, 2, 3].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=\"retrieval profiles\" error={error} onRetry={() => void refetch()} />\n ) : profiles.length > 0 ? (\n <div className=\"grid grid-cols-1 md:grid-cols-2 lg:grid-cols-3 gap-4\">\n {profiles.map(\n (profile: {\n id: string;\n name: string;\n description?: string | null;\n status: string;\n strategyMode: string;\n citationsRequired: boolean;\n topK: number;\n createdAt: string;\n }) => (\n <Link key={profile.id} to={getPath(`retrieval-profiles/${profile.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-action-primary-bg/10 rounded-lg\">\n <Database className=\"h-5 w-5 text-primary\" />\n </div>\n <div>\n <CardTitle className=\"text-base\">{profile.name}</CardTitle>\n <CardDescription className=\"text-xs\">\n {profile.description}\n </CardDescription>\n </div>\n </div>\n <StatusBadge status={profile.status} />\n </div>\n </CardHeader>\n <CardContent>\n <div className=\"space-y-3\">\n {/* Retrieval Mode */}\n <div className=\"flex items-center gap-2\">\n <Layers size={14} className=\"text-text-secondary\" />\n <span className=\"text-sm capitalize\">\n {profile.strategyMode.toLowerCase().replace('_', ' ')} mode\n </span>\n </div>\n\n {/* Citations */}\n <div className=\"flex items-center gap-2\">\n <Zap size={14} className=\"text-text-secondary\" />\n <span className=\"text-sm\">\n Citations: {profile.citationsRequired ? 'Required' : 'Optional'}\n </span>\n </div>\n\n {/* Top K */}\n <div className=\"flex items-center gap-2\">\n <Database size={14} className=\"text-text-secondary\" />\n <span className=\"text-sm\">Top K: {profile.topK}</span>\n </div>\n\n {/* Footer */}\n <div className=\"pt-3 border-t border-border-subtle flex items-center justify-between text-xs text-text-secondary\">\n <span>Created {formatRelativeTime(profile.createdAt)}</span>\n <Badge variant=\"outline\" className=\"text-xs capitalize\">\n {profile.strategyMode.toLowerCase().replace('_', ' ')}\n </Badge>\n </div>\n </div>\n </CardContent>\n </Card>\n </Link>\n )\n )}\n </div>\n ) : (\n <EmptyState\n illustration=\"empty-files\"\n title=\"No retrieval profiles\"\n description=\"Create retrieval profiles to customize how agents search and rank knowledge.\"\n action={\n <Button leftIcon={<Plus size={16} />}>\n <Link to={getPath('retrieval-profiles/new')}>Create Profile</Link>\n </Button>\n }\n />\n )}\n\n {/* Quick Start Guide */}\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 <Settings size={18} />\n Retrieval Profile Configuration\n </h2>\n <p className=\"text-sm text-text-secondary\">\n Retrieval profiles control how knowledge is fetched and ranked for agent responses\n </p>\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 <Layers size={16} className=\"text-primary\" />\n Retrieval Modes\n </h4>\n <ul className=\"text-sm text-text-secondary space-y-1\">\n <li>\n <strong>Vector:</strong> Semantic similarity search\n </li>\n <li>\n <strong>Hybrid:</strong> Vector + keyword combined\n </li>\n <li>\n <strong>BM25:</strong> Traditional keyword search\n </li>\n </ul>\n </div>\n <div className=\"space-y-2\">\n <h4 className=\"font-medium flex items-center gap-2\">\n <Zap size={16} className=\"text-primary\" />\n Reranking\n </h4>\n <ul className=\"text-sm text-text-secondary space-y-1\">\n <li>Cross-encoder reranking for better relevance</li>\n <li>Improves precision at the cost of latency</li>\n <li>Recommended for complex queries</li>\n </ul>\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 Sources\n </h4>\n <ul className=\"text-sm text-text-secondary space-y-1\">\n <li>Bind multiple knowledge bases</li>\n <li>Configure priority and weights</li>\n <li>Set per-KB retrieval limits</li>\n </ul>\n </div>\n </div>\n </GlassCard>\n </div>\n </PageLayout>\n );\n};\n"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"RetrievalProfilesPage.js","names":[],"sources":["../../../src/botlit/pages/RetrievalProfilesPage.tsx"],"sourcesContent":["/**\n * Retrieval Profiles 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 { Plus, Search as SearchIcon, Filter, Database, Layers, Zap, Settings } 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 { useRetrievalProfiles } from '../hooks';\nimport { formatRelativeTime } from '../utils/formatters';\n\nexport const RetrievalProfilesPage: FC = () => {\n const t = useTr();\n const { getPath } = useBotlit();\n const [search, setSearch] = useState('');\n const { data: profiles, loading, error, refetch } = useRetrievalProfiles({ search });\n\n return (\n <PageLayout\n title={t('botlit.retrievalProfiles.title', 'Retrieval Profiles')}\n description={t(\n 'botlit.retrievalProfiles.description',\n 'Configure how agents retrieve and rank knowledge from knowledge bases'\n )}\n actions={\n <Button leftIcon={<Plus size={16} />}>\n <Link to={getPath('retrieval-profiles/new')}>\n {t('botlit.retrievalProfiles.actions.createProfile', 'Create Profile')}\n </Link>\n </Button>\n }\n >\n <div className=\"space-y-6\">\n <PagePurpose icon={<Database size={18} />}>\n {t(\n 'botlit.retrievalProfiles.purpose',\n 'A retrieval profile decides how an agent searches your knowledge bases — which search strategy to use (semantic, keyword or hybrid), how many passages to pull back, whether to rerank for relevance and whether answers must cite their sources. Tune a profile here to control the accuracy-versus-speed trade-off of every grounded answer your agents give.'\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.retrievalProfiles.searchPlaceholder', 'Search profiles...')}\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.retrievalProfiles.actions.filters', 'Filters')}\n </Button>\n </div>\n\n {/* Profiles List */}\n {loading ? (\n <div className=\"grid grid-cols-1 md:grid-cols-2 lg:grid-cols-3 gap-4\">\n {[1, 2, 3].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=\"retrieval profiles\" error={error} onRetry={() => void refetch()} />\n ) : profiles.length > 0 ? (\n <div className=\"grid grid-cols-1 md:grid-cols-2 lg:grid-cols-3 gap-4\">\n {profiles.map(\n (profile: {\n id: string;\n name: string;\n description?: string | null;\n status: string;\n strategyMode: string;\n citationsRequired: boolean;\n topK: number;\n createdAt: string;\n }) => (\n <Link key={profile.id} to={getPath(`retrieval-profiles/${profile.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-action-primary-bg/10 rounded-lg\">\n <Database className=\"h-5 w-5 text-primary\" />\n </div>\n <div>\n <CardTitle className=\"text-base\">{profile.name}</CardTitle>\n <CardDescription className=\"text-xs\">\n {profile.description}\n </CardDescription>\n </div>\n </div>\n <StatusBadge status={profile.status} />\n </div>\n </CardHeader>\n <CardContent>\n <div className=\"space-y-3\">\n {/* Retrieval Mode */}\n <div className=\"flex items-center gap-2\">\n <Layers size={14} className=\"text-text-secondary\" />\n <span className=\"text-sm capitalize\">\n {t('botlit.retrievalProfiles.overview.mode', '{{mode}} mode', {\n mode: profile.strategyMode.toLowerCase().replace('_', ' '),\n })}\n </span>\n </div>\n\n {/* Citations */}\n <div className=\"flex items-center gap-2\">\n <Zap size={14} className=\"text-text-secondary\" />\n <span className=\"text-sm\">\n {t(\n 'botlit.retrievalProfiles.overview.citations',\n 'Citations: {{status}}',\n {\n status: profile.citationsRequired\n ? t('botlit.retrievalProfiles.overview.required', 'Required')\n : t('botlit.retrievalProfiles.overview.optional', 'Optional'),\n }\n )}\n </span>\n </div>\n\n {/* Top K */}\n <div className=\"flex items-center gap-2\">\n <Database size={14} className=\"text-text-secondary\" />\n <span className=\"text-sm\">\n {t('botlit.retrievalProfiles.topK', 'Top K: {{value}}', {\n value: profile.topK,\n })}\n </span>\n </div>\n\n {/* Footer */}\n <div className=\"pt-3 border-t border-border-subtle flex items-center justify-between text-xs text-text-secondary\">\n <span>\n {t('botlit.botsList.createdLabel', 'Created')}{' '}\n {formatRelativeTime(profile.createdAt)}\n </span>\n <Badge variant=\"outline\" className=\"text-xs capitalize\">\n {profile.strategyMode.toLowerCase().replace('_', ' ')}\n </Badge>\n </div>\n </div>\n </CardContent>\n </Card>\n </Link>\n )\n )}\n </div>\n ) : (\n <EmptyState\n illustration=\"empty-files\"\n title={t('botlit.retrievalProfiles.empty.title', 'No retrieval profiles')}\n description={t(\n 'botlit.retrievalProfiles.empty.description',\n 'Create retrieval profiles to customize how agents search and rank knowledge.'\n )}\n action={\n <Button leftIcon={<Plus size={16} />}>\n <Link to={getPath('retrieval-profiles/new')}>\n {t('botlit.retrievalProfiles.actions.createProfile', 'Create Profile')}\n </Link>\n </Button>\n }\n />\n )}\n\n {/* Quick Start Guide */}\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 <Settings size={18} />\n {t('botlit.retrievalProfiles.overview.title', 'Retrieval Profile Configuration')}\n </h2>\n <p className=\"text-sm text-text-secondary\">\n {t(\n 'botlit.retrievalProfiles.overview.description',\n 'Retrieval profiles control how knowledge is fetched and ranked for agent responses'\n )}\n </p>\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 <Layers size={16} className=\"text-primary\" />\n {t('botlit.retrievalProfiles.overview.modesTitle', 'Retrieval Modes')}\n </h4>\n <ul className=\"text-sm text-text-secondary space-y-1\">\n <li>\n {t(\n 'botlit.retrievalProfiles.overview.modesDescription',\n 'Vector: semantic similarity search; Hybrid: vector + keyword combined; BM25: traditional keyword search.'\n )}\n </li>\n </ul>\n </div>\n <div className=\"space-y-2\">\n <h4 className=\"font-medium flex items-center gap-2\">\n <Zap size={16} className=\"text-primary\" />\n {t('botlit.retrievalProfiles.overview.rerankingTitle', 'Reranking')}\n </h4>\n <ul className=\"text-sm text-text-secondary space-y-1\">\n <li>\n {t(\n 'botlit.retrievalProfiles.overview.rerankingDescription',\n 'Cross-encoder reranking for better relevance; improves precision at the cost of latency; recommended for complex queries.'\n )}\n </li>\n </ul>\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.retrievalProfiles.overview.knowledgeSourcesTitle', 'Knowledge Sources')}\n </h4>\n <ul className=\"text-sm text-text-secondary space-y-1\">\n <li>\n {t(\n 'botlit.retrievalProfiles.overview.knowledgeSourcesDescription',\n 'Bind multiple knowledge bases, configure priority and weights, and set per-KB retrieval limits.'\n )}\n </li>\n </ul>\n </div>\n </div>\n </GlassCard>\n </div>\n </PageLayout>\n );\n};\n"],"mappings":"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"}
|