@burdenoff/microfe-botmanor 2026.1007.1 → 2026.1009.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 +58 -146
- package/dist/botlit/BotlitRoutes.js.map +1 -1
- package/dist/botlit/BotmanorRoot.js.map +1 -1
- package/dist/botlit/BotmanorRootInner.js +39 -67
- package/dist/botlit/BotmanorRootInner.js.map +1 -1
- package/dist/botlit/components/AssistantRuntimeSetupPanel.js +1 -1
- package/dist/botlit/components/AssistantRuntimeSetupPanel.js.map +1 -1
- package/dist/botlit/components/ModelRegistrationPanel.js +174 -0
- package/dist/botlit/components/ModelRegistrationPanel.js.map +1 -0
- package/dist/botlit/hooks/internal/workspaceGateway.js +1 -1
- package/dist/botlit/hooks/useAssistantRuntimeSetup.js +2 -2
- package/dist/botlit/hooks/useAssistantRuntimeSetup.js.map +1 -1
- package/dist/botlit/hooks/useBotWorkflow.js +56 -0
- package/dist/botlit/hooks/useBotWorkflow.js.map +1 -0
- package/dist/botlit/hooks/useLLMProviders.js +94 -50
- package/dist/botlit/hooks/useLLMProviders.js.map +1 -1
- package/dist/botlit/pages/AgentBuilderPage.js +206 -183
- package/dist/botlit/pages/AgentBuilderPage.js.map +1 -1
- package/dist/botlit/pages/BotWorkflowTab.js +33 -33
- package/dist/botlit/pages/BotWorkflowTab.js.map +1 -1
- package/dist/botlit/pages/KnowledgeBaseDetailPage.js +162 -145
- package/dist/botlit/pages/KnowledgeBaseDetailPage.js.map +1 -1
- package/dist/botlit/pages/SettingsPage.js +129 -66
- package/dist/botlit/pages/SettingsPage.js.map +1 -1
- package/dist/botlit/providers/BotlitProvider.js +30 -26
- package/dist/botlit/providers/BotlitProvider.js.map +1 -1
- package/dist/botlit/utils/embedding-models.js +36 -0
- package/dist/botlit/utils/embedding-models.js.map +1 -0
- package/dist/generated/wspace-operations.js +58 -36
- package/dist/generated/wspace-operations.js.map +1 -1
- package/package.json +1 -3
|
@@ -1,50 +1,36 @@
|
|
|
1
1
|
import { useBotlit as e } from "../providers/BotlitProvider.js";
|
|
2
|
-
import { useCreateKnowledgeBase as t, useKnowledgeBase as n, useKnowledgeDocuments as
|
|
2
|
+
import { useCreateKnowledgeBase as t, useKnowledgeBase as n, useKnowledgeDocuments as ee, useRebuildKnowledgeBaseIndex as r, useUpdateKnowledgeBase as i } from "../hooks/useKnowledgeBases.js";
|
|
3
|
+
import { useLLMModels as te, useLLMProviders as ne } from "../hooks/useLLMProviders.js";
|
|
3
4
|
import { formatRelativeTime as a } from "../utils/formatters.js";
|
|
4
5
|
import { PageLayout as o } from "../components/PageLayout.js";
|
|
5
6
|
import { Card as s, CardContent as c, CardDescription as l, CardHeader as u, CardTitle as d } from "../components/Card.js";
|
|
6
7
|
import { Button as f } from "../components/Button.js";
|
|
7
8
|
import { StatusBadge as p } from "../components/Badge.js";
|
|
8
|
-
import { EmptyState as
|
|
9
|
-
import { FormField as
|
|
10
|
-
import {
|
|
11
|
-
import {
|
|
9
|
+
import { EmptyState as re } from "../components/EmptyState.js";
|
|
10
|
+
import { FormField as m, Input as h, Textarea as ie } from "../components/Input.js";
|
|
11
|
+
import { configuredEmbeddingModels as ae } from "../utils/embedding-models.js";
|
|
12
|
+
import { KnowledgeSourceImportPanel as oe } from "../components/KnowledgeSourceImportPanel.js";
|
|
13
|
+
import { useEffect as g, useMemo as _, useState as v } from "react";
|
|
12
14
|
import { GlassCard as y, PagePurpose as b } from "@burdenoff/fe-libs/ui";
|
|
13
15
|
import { Fragment as x, jsx as S, jsxs as C } from "react/jsx-runtime";
|
|
14
|
-
import { useParams as
|
|
15
|
-
import { ArrowLeft as
|
|
16
|
-
import { toast as
|
|
16
|
+
import { useParams as se } from "react-router";
|
|
17
|
+
import { ArrowLeft as ce, Boxes as le, Database as w, FileText as ue, Layers as de, RefreshCw as fe, Save as T, Settings as E } from "lucide-react";
|
|
18
|
+
import { toast as D } from "sonner";
|
|
17
19
|
//#region src/botlit/pages/KnowledgeBaseDetailPage.tsx
|
|
18
|
-
var
|
|
20
|
+
var pe = [
|
|
19
21
|
"RECURSIVE",
|
|
20
22
|
"FIXED",
|
|
21
23
|
"SENTENCE"
|
|
22
|
-
],
|
|
23
|
-
{
|
|
24
|
-
id: "text-embedding-3-small",
|
|
25
|
-
label: "OpenAI text-embedding-3-small",
|
|
26
|
-
dimensions: 1536
|
|
27
|
-
},
|
|
28
|
-
{
|
|
29
|
-
id: "text-embedding-3-large",
|
|
30
|
-
label: "OpenAI text-embedding-3-large",
|
|
31
|
-
dimensions: 3072
|
|
32
|
-
},
|
|
33
|
-
{
|
|
34
|
-
id: "text-embedding-ada-002",
|
|
35
|
-
label: "OpenAI text-embedding-ada-002",
|
|
36
|
-
dimensions: 1536
|
|
37
|
-
}
|
|
38
|
-
], P = {
|
|
24
|
+
], O = {
|
|
39
25
|
name: "",
|
|
40
26
|
description: "",
|
|
41
|
-
embeddingModel:
|
|
42
|
-
embeddingDimensions:
|
|
27
|
+
embeddingModel: "",
|
|
28
|
+
embeddingDimensions: 0,
|
|
43
29
|
chunkingStrategy: "RECURSIVE",
|
|
44
30
|
chunkSize: 512,
|
|
45
31
|
chunkOverlap: 50
|
|
46
32
|
};
|
|
47
|
-
function
|
|
33
|
+
function k(e) {
|
|
48
34
|
return {
|
|
49
35
|
name: e.name,
|
|
50
36
|
description: e.description ?? "",
|
|
@@ -55,42 +41,48 @@ function F(e) {
|
|
|
55
41
|
chunkOverlap: e.chunkOverlap
|
|
56
42
|
};
|
|
57
43
|
}
|
|
58
|
-
function
|
|
44
|
+
function A(e, t) {
|
|
59
45
|
let n = Number(e);
|
|
60
46
|
return e.trim() !== "" && Number.isFinite(n) ? n : t;
|
|
61
47
|
}
|
|
62
|
-
var
|
|
63
|
-
let { kbId: R } =
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
}, [
|
|
67
|
-
let
|
|
68
|
-
if (!
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
|
|
48
|
+
var j = ({ isNew: j }) => {
|
|
49
|
+
let { kbId: M } = se(), { data: N, loading: P, error: F, refetch: I } = te(), { data: L, loading: R, error: z, refetch: B } = ne(), V = P || R, H = F || z, U = _(() => ae(N ?? [], L ?? []), [N, L]), { navigateTo: W } = e(), { data: G, loading: me, refetch: K } = n(j ? void 0 : M), { data: q } = ee(j ? void 0 : M), [he, ge] = t(), [_e, ve] = i(), [J, ye] = r(), [Y, X] = v(!1), [Z, Q] = v(O);
|
|
50
|
+
g(() => {
|
|
51
|
+
G && !j && Q(k(G));
|
|
52
|
+
}, [G, j]);
|
|
53
|
+
let be = async () => {
|
|
54
|
+
if (!(V || H)) {
|
|
55
|
+
if (!Z.name.trim()) {
|
|
56
|
+
D.error("Name is required");
|
|
57
|
+
return;
|
|
58
|
+
}
|
|
59
|
+
if (!U.some((e) => e.id === Z.embeddingModel)) {
|
|
60
|
+
D.error("Choose a configured embedding model. Register one in Settings first.");
|
|
61
|
+
return;
|
|
62
|
+
}
|
|
63
|
+
try {
|
|
64
|
+
let e = await he({
|
|
65
|
+
name: Z.name.trim(),
|
|
66
|
+
description: Z.description.trim() || null,
|
|
67
|
+
embeddingModel: Z.embeddingModel,
|
|
68
|
+
embeddingDimensions: Z.embeddingDimensions,
|
|
69
|
+
chunkingStrategy: Z.chunkingStrategy,
|
|
70
|
+
chunkSize: Z.chunkSize,
|
|
71
|
+
chunkOverlap: Z.chunkOverlap
|
|
72
|
+
});
|
|
73
|
+
D.success(`Knowledge base "${e.name}" created`), W(`knowledge/${e.id}`);
|
|
74
|
+
} catch (e) {
|
|
75
|
+
D.error(e instanceof Error ? e.message : "Failed to create knowledge base");
|
|
76
|
+
}
|
|
85
77
|
}
|
|
86
|
-
},
|
|
87
|
-
if (!
|
|
88
|
-
|
|
78
|
+
}, xe = async () => {
|
|
79
|
+
if (!M || !Z.name.trim()) {
|
|
80
|
+
D.error("Name is required");
|
|
89
81
|
return;
|
|
90
82
|
}
|
|
91
83
|
try {
|
|
92
|
-
await
|
|
93
|
-
kbId:
|
|
84
|
+
await _e({
|
|
85
|
+
kbId: M,
|
|
94
86
|
input: {
|
|
95
87
|
name: Z.name.trim(),
|
|
96
88
|
description: Z.description.trim() || null,
|
|
@@ -98,21 +90,21 @@ var L = ({ isNew: L }) => {
|
|
|
98
90
|
chunkSize: Z.chunkSize,
|
|
99
91
|
chunkOverlap: Z.chunkOverlap
|
|
100
92
|
}
|
|
101
|
-
}), await
|
|
93
|
+
}), await K(), D.success("Knowledge base updated"), X(!1);
|
|
102
94
|
} catch (e) {
|
|
103
|
-
|
|
95
|
+
D.error(e instanceof Error ? e.message : "Failed to update knowledge base");
|
|
104
96
|
}
|
|
105
|
-
},
|
|
106
|
-
if (
|
|
107
|
-
await J(
|
|
97
|
+
}, Se = async () => {
|
|
98
|
+
if (M) try {
|
|
99
|
+
await J(M), await K(), D.success("Re-indexing started");
|
|
108
100
|
} catch (e) {
|
|
109
|
-
|
|
101
|
+
D.error(e instanceof Error ? e.message : "Failed to rebuild the index");
|
|
110
102
|
}
|
|
111
103
|
}, $ = (e) => /* @__PURE__ */ C(x, { children: [
|
|
112
|
-
/* @__PURE__ */ S(
|
|
104
|
+
/* @__PURE__ */ S(m, {
|
|
113
105
|
label: "Name",
|
|
114
106
|
required: !0,
|
|
115
|
-
children: /* @__PURE__ */ S(
|
|
107
|
+
children: /* @__PURE__ */ S(h, {
|
|
116
108
|
placeholder: "e.g., Product Documentation",
|
|
117
109
|
value: Z.name,
|
|
118
110
|
onChange: (e) => Q({
|
|
@@ -121,9 +113,9 @@ var L = ({ isNew: L }) => {
|
|
|
121
113
|
})
|
|
122
114
|
})
|
|
123
115
|
}),
|
|
124
|
-
/* @__PURE__ */ S(
|
|
116
|
+
/* @__PURE__ */ S(m, {
|
|
125
117
|
label: "Description",
|
|
126
|
-
children: /* @__PURE__ */ S(
|
|
118
|
+
children: /* @__PURE__ */ S(ie, {
|
|
127
119
|
placeholder: "What kind of knowledge will this store?",
|
|
128
120
|
value: Z.description,
|
|
129
121
|
onChange: (e) => Q({
|
|
@@ -133,35 +125,60 @@ var L = ({ isNew: L }) => {
|
|
|
133
125
|
rows: 3
|
|
134
126
|
})
|
|
135
127
|
}),
|
|
136
|
-
e && /* @__PURE__ */
|
|
128
|
+
e && /* @__PURE__ */ C(m, {
|
|
137
129
|
label: "Embedding Model",
|
|
138
130
|
required: !0,
|
|
139
|
-
children:
|
|
140
|
-
|
|
141
|
-
|
|
142
|
-
|
|
143
|
-
|
|
144
|
-
|
|
145
|
-
|
|
146
|
-
|
|
147
|
-
|
|
148
|
-
|
|
149
|
-
|
|
150
|
-
|
|
151
|
-
|
|
152
|
-
|
|
153
|
-
|
|
154
|
-
|
|
155
|
-
|
|
156
|
-
|
|
157
|
-
|
|
158
|
-
|
|
159
|
-
|
|
131
|
+
children: [
|
|
132
|
+
/* @__PURE__ */ C("select", {
|
|
133
|
+
className: "flex h-10 w-full rounded-md border border-border-default bg-bg-surface px-3 py-2 text-sm",
|
|
134
|
+
"aria-label": "Embedding Model",
|
|
135
|
+
disabled: V || !!H,
|
|
136
|
+
value: Z.embeddingModel,
|
|
137
|
+
onChange: (e) => {
|
|
138
|
+
let t = U.find((t) => t.id === e.target.value);
|
|
139
|
+
Q({
|
|
140
|
+
...Z,
|
|
141
|
+
embeddingModel: e.target.value,
|
|
142
|
+
embeddingDimensions: t?.dimensions ?? Z.embeddingDimensions
|
|
143
|
+
});
|
|
144
|
+
},
|
|
145
|
+
children: [/* @__PURE__ */ S("option", {
|
|
146
|
+
value: "",
|
|
147
|
+
children: "Choose a configured embedding model"
|
|
148
|
+
}), U.map((e) => /* @__PURE__ */ C("option", {
|
|
149
|
+
value: e.id,
|
|
150
|
+
children: [
|
|
151
|
+
e.label,
|
|
152
|
+
" (",
|
|
153
|
+
e.dimensions,
|
|
154
|
+
"d)"
|
|
155
|
+
]
|
|
156
|
+
}, e.id))]
|
|
157
|
+
}),
|
|
158
|
+
V && /* @__PURE__ */ S("p", {
|
|
159
|
+
role: "status",
|
|
160
|
+
children: "Loading configured embedding models…"
|
|
161
|
+
}),
|
|
162
|
+
H && /* @__PURE__ */ C("div", {
|
|
163
|
+
role: "alert",
|
|
164
|
+
children: [/* @__PURE__ */ S("p", { children: "Could not load configured models. Try loading the catalog again." }), /* @__PURE__ */ S(f, {
|
|
165
|
+
variant: "secondary",
|
|
166
|
+
onClick: () => {
|
|
167
|
+
I(), B();
|
|
168
|
+
},
|
|
169
|
+
children: "Retry model catalog"
|
|
170
|
+
})]
|
|
171
|
+
}),
|
|
172
|
+
!V && !H && U.length === 0 && /* @__PURE__ */ S("p", {
|
|
173
|
+
className: "text-sm text-text-secondary",
|
|
174
|
+
children: "Register an embedding model with an active provider in Settings first."
|
|
175
|
+
})
|
|
176
|
+
]
|
|
160
177
|
}),
|
|
161
178
|
/* @__PURE__ */ C("div", {
|
|
162
179
|
className: "grid grid-cols-3 gap-4",
|
|
163
180
|
children: [
|
|
164
|
-
/* @__PURE__ */ S(
|
|
181
|
+
/* @__PURE__ */ S(m, {
|
|
165
182
|
label: "Chunking Strategy",
|
|
166
183
|
children: /* @__PURE__ */ S("select", {
|
|
167
184
|
className: "flex h-10 w-full rounded-md border border-border-default bg-bg-surface px-3 py-2 text-sm",
|
|
@@ -170,51 +187,51 @@ var L = ({ isNew: L }) => {
|
|
|
170
187
|
...Z,
|
|
171
188
|
chunkingStrategy: e.target.value
|
|
172
189
|
}),
|
|
173
|
-
children:
|
|
190
|
+
children: pe.map((e) => /* @__PURE__ */ S("option", {
|
|
174
191
|
value: e,
|
|
175
192
|
children: e
|
|
176
193
|
}, e))
|
|
177
194
|
})
|
|
178
195
|
}),
|
|
179
|
-
/* @__PURE__ */ S(
|
|
196
|
+
/* @__PURE__ */ S(m, {
|
|
180
197
|
label: "Chunk Size",
|
|
181
|
-
children: /* @__PURE__ */ S(
|
|
198
|
+
children: /* @__PURE__ */ S(h, {
|
|
182
199
|
type: "number",
|
|
183
200
|
value: Z.chunkSize,
|
|
184
201
|
onChange: (e) => Q({
|
|
185
202
|
...Z,
|
|
186
|
-
chunkSize:
|
|
203
|
+
chunkSize: A(e.target.value, O.chunkSize)
|
|
187
204
|
})
|
|
188
205
|
})
|
|
189
206
|
}),
|
|
190
|
-
/* @__PURE__ */ S(
|
|
207
|
+
/* @__PURE__ */ S(m, {
|
|
191
208
|
label: "Chunk Overlap",
|
|
192
|
-
children: /* @__PURE__ */ S(
|
|
209
|
+
children: /* @__PURE__ */ S(h, {
|
|
193
210
|
type: "number",
|
|
194
211
|
value: Z.chunkOverlap,
|
|
195
212
|
onChange: (e) => Q({
|
|
196
213
|
...Z,
|
|
197
|
-
chunkOverlap:
|
|
214
|
+
chunkOverlap: A(e.target.value, O.chunkOverlap)
|
|
198
215
|
})
|
|
199
216
|
})
|
|
200
217
|
})
|
|
201
218
|
]
|
|
202
219
|
})
|
|
203
220
|
] });
|
|
204
|
-
return
|
|
221
|
+
return j ? /* @__PURE__ */ S(o, {
|
|
205
222
|
title: "Create Knowledge Base",
|
|
206
223
|
description: "Set up an embedding index your agents can retrieve from",
|
|
207
224
|
actions: /* @__PURE__ */ C("div", {
|
|
208
225
|
className: "flex gap-2",
|
|
209
226
|
children: [/* @__PURE__ */ S(f, {
|
|
210
227
|
variant: "outline",
|
|
211
|
-
onClick: () =>
|
|
228
|
+
onClick: () => W("knowledge"),
|
|
212
229
|
children: "Cancel"
|
|
213
230
|
}), /* @__PURE__ */ S(f, {
|
|
214
|
-
leftIcon: /* @__PURE__ */ S(
|
|
215
|
-
onClick:
|
|
216
|
-
isLoading:
|
|
217
|
-
disabled: !Z.name.trim(),
|
|
231
|
+
leftIcon: /* @__PURE__ */ S(T, { size: 16 }),
|
|
232
|
+
onClick: be,
|
|
233
|
+
isLoading: ge.loading,
|
|
234
|
+
disabled: V || !!H || !Z.name.trim(),
|
|
218
235
|
children: "Create"
|
|
219
236
|
})]
|
|
220
237
|
}),
|
|
@@ -225,46 +242,46 @@ var L = ({ isNew: L }) => {
|
|
|
225
242
|
children: $(!0)
|
|
226
243
|
})] })
|
|
227
244
|
})
|
|
228
|
-
}) :
|
|
245
|
+
}) : me ? /* @__PURE__ */ S(o, {
|
|
229
246
|
title: "Loading...",
|
|
230
247
|
children: /* @__PURE__ */ S("div", { className: "h-96 bg-bg-sunken motion-safe:animate-vc-shimmer rounded-lg" })
|
|
231
|
-
}) :
|
|
248
|
+
}) : G ? /* @__PURE__ */ S(o, {
|
|
232
249
|
title: /* @__PURE__ */ C("div", {
|
|
233
250
|
className: "flex items-center gap-3",
|
|
234
251
|
children: [/* @__PURE__ */ S(f, {
|
|
235
252
|
variant: "ghost",
|
|
236
253
|
size: "icon",
|
|
237
|
-
onClick: () =>
|
|
238
|
-
children: /* @__PURE__ */ S(
|
|
254
|
+
onClick: () => W("knowledge"),
|
|
255
|
+
children: /* @__PURE__ */ S(ce, { size: 20 })
|
|
239
256
|
}), /* @__PURE__ */ C("div", { children: [/* @__PURE__ */ C("div", {
|
|
240
257
|
className: "flex items-center gap-2",
|
|
241
|
-
children: [/* @__PURE__ */ S("span", { children:
|
|
242
|
-
}),
|
|
258
|
+
children: [/* @__PURE__ */ S("span", { children: G.name }), /* @__PURE__ */ S(p, { status: G.indexStatus })]
|
|
259
|
+
}), G.description && /* @__PURE__ */ S("p", {
|
|
243
260
|
className: "text-sm font-normal text-text-secondary",
|
|
244
|
-
children:
|
|
261
|
+
children: G.description
|
|
245
262
|
})] })]
|
|
246
263
|
}),
|
|
247
264
|
actions: /* @__PURE__ */ C("div", {
|
|
248
265
|
className: "flex gap-2",
|
|
249
266
|
children: [/* @__PURE__ */ S(f, {
|
|
250
267
|
variant: "outline",
|
|
251
|
-
leftIcon: /* @__PURE__ */ S(
|
|
252
|
-
onClick:
|
|
253
|
-
isLoading:
|
|
268
|
+
leftIcon: /* @__PURE__ */ S(fe, { size: 16 }),
|
|
269
|
+
onClick: Se,
|
|
270
|
+
isLoading: ye.loading,
|
|
254
271
|
children: "Rebuild Index"
|
|
255
272
|
}), Y ? /* @__PURE__ */ C(x, { children: [/* @__PURE__ */ S(f, {
|
|
256
273
|
variant: "outline",
|
|
257
274
|
onClick: () => {
|
|
258
|
-
Q(
|
|
275
|
+
Q(k(G)), X(!1);
|
|
259
276
|
},
|
|
260
277
|
children: "Cancel"
|
|
261
278
|
}), /* @__PURE__ */ S(f, {
|
|
262
|
-
leftIcon: /* @__PURE__ */ S(
|
|
263
|
-
onClick:
|
|
264
|
-
isLoading:
|
|
279
|
+
leftIcon: /* @__PURE__ */ S(T, { size: 16 }),
|
|
280
|
+
onClick: xe,
|
|
281
|
+
isLoading: ve.loading,
|
|
265
282
|
children: "Save"
|
|
266
283
|
})] }) : /* @__PURE__ */ S(f, {
|
|
267
|
-
leftIcon: /* @__PURE__ */ S(
|
|
284
|
+
leftIcon: /* @__PURE__ */ S(E, { size: 16 }),
|
|
268
285
|
onClick: () => X(!0),
|
|
269
286
|
children: "Configure"
|
|
270
287
|
})]
|
|
@@ -273,7 +290,7 @@ var L = ({ isNew: L }) => {
|
|
|
273
290
|
className: "space-y-6",
|
|
274
291
|
children: [
|
|
275
292
|
/* @__PURE__ */ S(b, {
|
|
276
|
-
icon: /* @__PURE__ */ S(
|
|
293
|
+
icon: /* @__PURE__ */ S(w, { size: 18 }),
|
|
277
294
|
children: "This knowledge base is one searchable library your agents can draw on. Review how its documents are chunked and indexed, rebuild the index when content changes, and confirm it is healthy — so agents retrieve accurate, up-to-date passages and can cite them in their answers."
|
|
278
295
|
}),
|
|
279
296
|
/* @__PURE__ */ C("div", {
|
|
@@ -286,11 +303,11 @@ var L = ({ isNew: L }) => {
|
|
|
286
303
|
children: [
|
|
287
304
|
/* @__PURE__ */ S("div", {
|
|
288
305
|
className: "p-3 rounded-full bg-action-primary-bg/10 w-fit mx-auto mb-2",
|
|
289
|
-
children: /* @__PURE__ */ S(
|
|
306
|
+
children: /* @__PURE__ */ S(w, { className: "h-5 w-5 text-primary" })
|
|
290
307
|
}),
|
|
291
308
|
/* @__PURE__ */ S("p", {
|
|
292
309
|
className: "text-lg font-bold text-text-primary capitalize",
|
|
293
|
-
children:
|
|
310
|
+
children: G.indexStatus.toLowerCase()
|
|
294
311
|
}),
|
|
295
312
|
/* @__PURE__ */ S("p", {
|
|
296
313
|
className: "text-sm text-text-secondary",
|
|
@@ -302,7 +319,7 @@ var L = ({ isNew: L }) => {
|
|
|
302
319
|
className: "pt-6 text-center",
|
|
303
320
|
children: [/* @__PURE__ */ S("p", {
|
|
304
321
|
className: "text-3xl font-bold text-text-primary",
|
|
305
|
-
children:
|
|
322
|
+
children: G.totalDocuments
|
|
306
323
|
}), /* @__PURE__ */ S("p", {
|
|
307
324
|
className: "text-sm text-text-secondary",
|
|
308
325
|
children: "Documents"
|
|
@@ -312,7 +329,7 @@ var L = ({ isNew: L }) => {
|
|
|
312
329
|
className: "pt-6 text-center",
|
|
313
330
|
children: [/* @__PURE__ */ S("p", {
|
|
314
331
|
className: "text-3xl font-bold text-text-primary",
|
|
315
|
-
children:
|
|
332
|
+
children: G.totalChunks
|
|
316
333
|
}), /* @__PURE__ */ S("p", {
|
|
317
334
|
className: "text-sm text-text-secondary",
|
|
318
335
|
children: "Chunks"
|
|
@@ -322,7 +339,7 @@ var L = ({ isNew: L }) => {
|
|
|
322
339
|
className: "pt-6 text-center",
|
|
323
340
|
children: [/* @__PURE__ */ S("p", {
|
|
324
341
|
className: "text-3xl font-bold text-text-primary",
|
|
325
|
-
children:
|
|
342
|
+
children: G.vectorCount
|
|
326
343
|
}), /* @__PURE__ */ S("p", {
|
|
327
344
|
className: "text-sm text-text-secondary",
|
|
328
345
|
children: "Vectors"
|
|
@@ -332,7 +349,7 @@ var L = ({ isNew: L }) => {
|
|
|
332
349
|
}),
|
|
333
350
|
/* @__PURE__ */ C(s, { children: [/* @__PURE__ */ C(u, { children: [/* @__PURE__ */ C(d, {
|
|
334
351
|
className: "flex items-center gap-2",
|
|
335
|
-
children: [/* @__PURE__ */ S(
|
|
352
|
+
children: [/* @__PURE__ */ S(de, { size: 18 }), "Index Configuration"]
|
|
336
353
|
}), /* @__PURE__ */ S(l, { children: "How documents are embedded and split before they are indexed" })] }), /* @__PURE__ */ S(c, {
|
|
337
354
|
className: "space-y-4",
|
|
338
355
|
children: Y ? $(!1) : /* @__PURE__ */ C("div", {
|
|
@@ -343,60 +360,60 @@ var L = ({ isNew: L }) => {
|
|
|
343
360
|
children: "Embedding Model"
|
|
344
361
|
}), /* @__PURE__ */ S("p", {
|
|
345
362
|
className: "font-medium font-mono text-sm",
|
|
346
|
-
children:
|
|
363
|
+
children: G.embeddingModel
|
|
347
364
|
})] }),
|
|
348
365
|
/* @__PURE__ */ C("div", { children: [/* @__PURE__ */ S("p", {
|
|
349
366
|
className: "text-sm text-text-secondary",
|
|
350
367
|
children: "Dimensions"
|
|
351
368
|
}), /* @__PURE__ */ S("p", {
|
|
352
369
|
className: "font-medium",
|
|
353
|
-
children:
|
|
370
|
+
children: G.embeddingDimensions
|
|
354
371
|
})] }),
|
|
355
372
|
/* @__PURE__ */ C("div", { children: [/* @__PURE__ */ S("p", {
|
|
356
373
|
className: "text-sm text-text-secondary",
|
|
357
374
|
children: "Chunking Strategy"
|
|
358
375
|
}), /* @__PURE__ */ S("p", {
|
|
359
376
|
className: "font-medium",
|
|
360
|
-
children:
|
|
377
|
+
children: G.chunkingStrategy
|
|
361
378
|
})] }),
|
|
362
379
|
/* @__PURE__ */ C("div", { children: [/* @__PURE__ */ S("p", {
|
|
363
380
|
className: "text-sm text-text-secondary",
|
|
364
381
|
children: "Chunk Size"
|
|
365
382
|
}), /* @__PURE__ */ S("p", {
|
|
366
383
|
className: "font-medium",
|
|
367
|
-
children:
|
|
384
|
+
children: G.chunkSize
|
|
368
385
|
})] }),
|
|
369
386
|
/* @__PURE__ */ C("div", { children: [/* @__PURE__ */ S("p", {
|
|
370
387
|
className: "text-sm text-text-secondary",
|
|
371
388
|
children: "Chunk Overlap"
|
|
372
389
|
}), /* @__PURE__ */ S("p", {
|
|
373
390
|
className: "font-medium",
|
|
374
|
-
children:
|
|
391
|
+
children: G.chunkOverlap
|
|
375
392
|
})] }),
|
|
376
393
|
/* @__PURE__ */ C("div", { children: [/* @__PURE__ */ S("p", {
|
|
377
394
|
className: "text-sm text-text-secondary",
|
|
378
395
|
children: "Last Indexed"
|
|
379
396
|
}), /* @__PURE__ */ S("p", {
|
|
380
397
|
className: "font-medium",
|
|
381
|
-
children:
|
|
398
|
+
children: G.lastIndexedAt ? a(G.lastIndexedAt) : "Never"
|
|
382
399
|
})] })
|
|
383
400
|
]
|
|
384
401
|
})
|
|
385
402
|
})] }),
|
|
386
|
-
!
|
|
403
|
+
!j && M && /* @__PURE__ */ S(oe, { knowledgeBaseId: M }),
|
|
387
404
|
/* @__PURE__ */ C(s, { children: [/* @__PURE__ */ C(u, { children: [/* @__PURE__ */ C(d, {
|
|
388
405
|
className: "flex items-center gap-2",
|
|
389
406
|
children: [
|
|
390
|
-
/* @__PURE__ */ S(
|
|
407
|
+
/* @__PURE__ */ S(ue, { size: 18 }),
|
|
391
408
|
"Documents (",
|
|
392
|
-
|
|
409
|
+
q.length,
|
|
393
410
|
")"
|
|
394
411
|
]
|
|
395
412
|
}), /* @__PURE__ */ S(l, { children: "Source documents indexed into this knowledge base" })] }), /* @__PURE__ */ S(c, {
|
|
396
413
|
className: "p-0",
|
|
397
|
-
children:
|
|
414
|
+
children: q.length > 0 ? /* @__PURE__ */ S("div", {
|
|
398
415
|
className: "divide-y divide-border-subtle",
|
|
399
|
-
children:
|
|
416
|
+
children: q.map((e) => /* @__PURE__ */ C("div", {
|
|
400
417
|
className: "flex items-center justify-between gap-4 p-4",
|
|
401
418
|
children: [/* @__PURE__ */ C("div", {
|
|
402
419
|
className: "min-w-0",
|
|
@@ -422,12 +439,12 @@ var L = ({ isNew: L }) => {
|
|
|
422
439
|
}, e.id))
|
|
423
440
|
}) : /* @__PURE__ */ C("div", {
|
|
424
441
|
className: "p-8 text-center text-text-secondary",
|
|
425
|
-
children: [/* @__PURE__ */ S(
|
|
442
|
+
children: [/* @__PURE__ */ S(le, { className: "h-8 w-8 mx-auto mb-2 opacity-50" }), /* @__PURE__ */ S("p", { children: "No documents indexed yet" })]
|
|
426
443
|
})
|
|
427
444
|
})] }),
|
|
428
445
|
/* @__PURE__ */ C(s, { children: [/* @__PURE__ */ S(u, { children: /* @__PURE__ */ C(d, {
|
|
429
446
|
className: "flex items-center gap-2",
|
|
430
|
-
children: [/* @__PURE__ */ S(
|
|
447
|
+
children: [/* @__PURE__ */ S(E, { size: 18 }), "Metadata"]
|
|
431
448
|
}) }), /* @__PURE__ */ S(c, { children: /* @__PURE__ */ C("div", {
|
|
432
449
|
className: "grid grid-cols-2 md:grid-cols-3 gap-6 text-sm",
|
|
433
450
|
children: [
|
|
@@ -436,21 +453,21 @@ var L = ({ isNew: L }) => {
|
|
|
436
453
|
children: "Created"
|
|
437
454
|
}), /* @__PURE__ */ S("p", {
|
|
438
455
|
className: "font-medium",
|
|
439
|
-
children: a(
|
|
456
|
+
children: a(G.createdAt)
|
|
440
457
|
})] }),
|
|
441
458
|
/* @__PURE__ */ C("div", { children: [/* @__PURE__ */ S("p", {
|
|
442
459
|
className: "text-text-secondary",
|
|
443
460
|
children: "Updated"
|
|
444
461
|
}), /* @__PURE__ */ S("p", {
|
|
445
462
|
className: "font-medium",
|
|
446
|
-
children: a(
|
|
463
|
+
children: a(G.updatedAt)
|
|
447
464
|
})] }),
|
|
448
465
|
/* @__PURE__ */ C("div", { children: [/* @__PURE__ */ S("p", {
|
|
449
466
|
className: "text-text-secondary",
|
|
450
467
|
children: "Last Indexed"
|
|
451
468
|
}), /* @__PURE__ */ S("p", {
|
|
452
469
|
className: "font-medium",
|
|
453
|
-
children:
|
|
470
|
+
children: G.lastIndexedAt ? a(G.lastIndexedAt) : "—"
|
|
454
471
|
})] })
|
|
455
472
|
]
|
|
456
473
|
}) })] })
|
|
@@ -458,18 +475,18 @@ var L = ({ isNew: L }) => {
|
|
|
458
475
|
})
|
|
459
476
|
}) : /* @__PURE__ */ S(o, {
|
|
460
477
|
title: "Knowledge Base Not Found",
|
|
461
|
-
children: /* @__PURE__ */ S(
|
|
478
|
+
children: /* @__PURE__ */ S(re, {
|
|
462
479
|
illustration: "empty-files",
|
|
463
480
|
title: "Knowledge Base Not Found",
|
|
464
481
|
description: "This knowledge base doesn't exist.",
|
|
465
482
|
action: /* @__PURE__ */ S(f, {
|
|
466
|
-
onClick: () =>
|
|
483
|
+
onClick: () => W("knowledge"),
|
|
467
484
|
children: "Back to Knowledge Bases"
|
|
468
485
|
})
|
|
469
486
|
})
|
|
470
487
|
});
|
|
471
488
|
};
|
|
472
489
|
//#endregion
|
|
473
|
-
export {
|
|
490
|
+
export { j as KnowledgeBaseDetailPage };
|
|
474
491
|
|
|
475
492
|
//# sourceMappingURL=KnowledgeBaseDetailPage.js.map
|