@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.
Files changed (31) hide show
  1. package/dist/botlit/BotlitRoutes.js +58 -146
  2. package/dist/botlit/BotlitRoutes.js.map +1 -1
  3. package/dist/botlit/BotmanorRoot.js.map +1 -1
  4. package/dist/botlit/BotmanorRootInner.js +39 -67
  5. package/dist/botlit/BotmanorRootInner.js.map +1 -1
  6. package/dist/botlit/components/AssistantRuntimeSetupPanel.js +1 -1
  7. package/dist/botlit/components/AssistantRuntimeSetupPanel.js.map +1 -1
  8. package/dist/botlit/components/ModelRegistrationPanel.js +174 -0
  9. package/dist/botlit/components/ModelRegistrationPanel.js.map +1 -0
  10. package/dist/botlit/hooks/internal/workspaceGateway.js +1 -1
  11. package/dist/botlit/hooks/useAssistantRuntimeSetup.js +2 -2
  12. package/dist/botlit/hooks/useAssistantRuntimeSetup.js.map +1 -1
  13. package/dist/botlit/hooks/useBotWorkflow.js +56 -0
  14. package/dist/botlit/hooks/useBotWorkflow.js.map +1 -0
  15. package/dist/botlit/hooks/useLLMProviders.js +94 -50
  16. package/dist/botlit/hooks/useLLMProviders.js.map +1 -1
  17. package/dist/botlit/pages/AgentBuilderPage.js +206 -183
  18. package/dist/botlit/pages/AgentBuilderPage.js.map +1 -1
  19. package/dist/botlit/pages/BotWorkflowTab.js +33 -33
  20. package/dist/botlit/pages/BotWorkflowTab.js.map +1 -1
  21. package/dist/botlit/pages/KnowledgeBaseDetailPage.js +162 -145
  22. package/dist/botlit/pages/KnowledgeBaseDetailPage.js.map +1 -1
  23. package/dist/botlit/pages/SettingsPage.js +129 -66
  24. package/dist/botlit/pages/SettingsPage.js.map +1 -1
  25. package/dist/botlit/providers/BotlitProvider.js +30 -26
  26. package/dist/botlit/providers/BotlitProvider.js.map +1 -1
  27. package/dist/botlit/utils/embedding-models.js +36 -0
  28. package/dist/botlit/utils/embedding-models.js.map +1 -0
  29. package/dist/generated/wspace-operations.js +58 -36
  30. package/dist/generated/wspace-operations.js.map +1 -1
  31. 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 r, useRebuildKnowledgeBaseIndex as i, useUpdateKnowledgeBase as ee } from "../hooks/useKnowledgeBases.js";
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 m } from "../components/EmptyState.js";
9
- import { FormField as h, Input as g, Textarea as _ } from "../components/Input.js";
10
- import { KnowledgeSourceImportPanel as te } from "../components/KnowledgeSourceImportPanel.js";
11
- import { useEffect as ne, useState as v } from "react";
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 w } from "react-router";
15
- import { ArrowLeft as T, Boxes as E, Database as D, FileText as O, Layers as k, RefreshCw as re, Save as A, Settings as j } from "lucide-react";
16
- import { toast as M } from "sonner";
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 ie = [
20
+ var pe = [
19
21
  "RECURSIVE",
20
22
  "FIXED",
21
23
  "SENTENCE"
22
- ], N = [
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: N[0].id,
42
- embeddingDimensions: N[0].dimensions,
27
+ embeddingModel: "",
28
+ embeddingDimensions: 0,
43
29
  chunkingStrategy: "RECURSIVE",
44
30
  chunkSize: 512,
45
31
  chunkOverlap: 50
46
32
  };
47
- function F(e) {
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 I(e, t) {
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 L = ({ isNew: L }) => {
63
- let { kbId: R } = w(), { navigateTo: z } = e(), { data: B, loading: V, refetch: H } = n(L ? void 0 : R), { data: U } = r(L ? void 0 : R), [W, G] = t(), [K, q] = ee(), [J, ae] = i(), [Y, X] = v(!1), [Z, Q] = v(P);
64
- ne(() => {
65
- B && !L && Q(F(B));
66
- }, [B, L]);
67
- let oe = async () => {
68
- if (!Z.name.trim()) {
69
- M.error("Name is required");
70
- return;
71
- }
72
- try {
73
- let e = await W({
74
- name: Z.name.trim(),
75
- description: Z.description.trim() || null,
76
- embeddingModel: Z.embeddingModel,
77
- embeddingDimensions: Z.embeddingDimensions,
78
- chunkingStrategy: Z.chunkingStrategy,
79
- chunkSize: Z.chunkSize,
80
- chunkOverlap: Z.chunkOverlap
81
- });
82
- M.success(`Knowledge base "${e.name}" created`), z(`knowledge/${e.id}`);
83
- } catch (e) {
84
- M.error(e instanceof Error ? e.message : "Failed to create knowledge base");
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
- }, se = async () => {
87
- if (!R || !Z.name.trim()) {
88
- M.error("Name is required");
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 K({
93
- kbId: R,
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 H(), M.success("Knowledge base updated"), X(!1);
93
+ }), await K(), D.success("Knowledge base updated"), X(!1);
102
94
  } catch (e) {
103
- M.error(e instanceof Error ? e.message : "Failed to update knowledge base");
95
+ D.error(e instanceof Error ? e.message : "Failed to update knowledge base");
104
96
  }
105
- }, ce = async () => {
106
- if (R) try {
107
- await J(R), await H(), M.success("Re-indexing started");
97
+ }, Se = async () => {
98
+ if (M) try {
99
+ await J(M), await K(), D.success("Re-indexing started");
108
100
  } catch (e) {
109
- M.error(e instanceof Error ? e.message : "Failed to rebuild the index");
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(h, {
104
+ /* @__PURE__ */ S(m, {
113
105
  label: "Name",
114
106
  required: !0,
115
- children: /* @__PURE__ */ S(g, {
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(h, {
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__ */ S(h, {
128
+ e && /* @__PURE__ */ C(m, {
137
129
  label: "Embedding Model",
138
130
  required: !0,
139
- children: /* @__PURE__ */ S("select", {
140
- className: "flex h-10 w-full rounded-md border border-border-default bg-bg-surface px-3 py-2 text-sm",
141
- value: Z.embeddingModel,
142
- onChange: (e) => {
143
- let t = N.find((t) => t.id === e.target.value);
144
- Q({
145
- ...Z,
146
- embeddingModel: e.target.value,
147
- embeddingDimensions: t?.dimensions ?? Z.embeddingDimensions
148
- });
149
- },
150
- children: N.map((e) => /* @__PURE__ */ C("option", {
151
- value: e.id,
152
- children: [
153
- e.label,
154
- " (",
155
- e.dimensions,
156
- "d)"
157
- ]
158
- }, e.id))
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(h, {
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: ie.map((e) => /* @__PURE__ */ S("option", {
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(h, {
196
+ /* @__PURE__ */ S(m, {
180
197
  label: "Chunk Size",
181
- children: /* @__PURE__ */ S(g, {
198
+ children: /* @__PURE__ */ S(h, {
182
199
  type: "number",
183
200
  value: Z.chunkSize,
184
201
  onChange: (e) => Q({
185
202
  ...Z,
186
- chunkSize: I(e.target.value, P.chunkSize)
203
+ chunkSize: A(e.target.value, O.chunkSize)
187
204
  })
188
205
  })
189
206
  }),
190
- /* @__PURE__ */ S(h, {
207
+ /* @__PURE__ */ S(m, {
191
208
  label: "Chunk Overlap",
192
- children: /* @__PURE__ */ S(g, {
209
+ children: /* @__PURE__ */ S(h, {
193
210
  type: "number",
194
211
  value: Z.chunkOverlap,
195
212
  onChange: (e) => Q({
196
213
  ...Z,
197
- chunkOverlap: I(e.target.value, P.chunkOverlap)
214
+ chunkOverlap: A(e.target.value, O.chunkOverlap)
198
215
  })
199
216
  })
200
217
  })
201
218
  ]
202
219
  })
203
220
  ] });
204
- return L ? /* @__PURE__ */ S(o, {
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: () => z("knowledge"),
228
+ onClick: () => W("knowledge"),
212
229
  children: "Cancel"
213
230
  }), /* @__PURE__ */ S(f, {
214
- leftIcon: /* @__PURE__ */ S(A, { size: 16 }),
215
- onClick: oe,
216
- isLoading: G.loading,
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
- }) : V ? /* @__PURE__ */ S(o, {
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
- }) : B ? /* @__PURE__ */ S(o, {
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: () => z("knowledge"),
238
- children: /* @__PURE__ */ S(T, { size: 20 })
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: B.name }), /* @__PURE__ */ S(p, { status: B.indexStatus })]
242
- }), B.description && /* @__PURE__ */ S("p", {
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: B.description
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(re, { size: 16 }),
252
- onClick: ce,
253
- isLoading: ae.loading,
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(F(B)), X(!1);
275
+ Q(k(G)), X(!1);
259
276
  },
260
277
  children: "Cancel"
261
278
  }), /* @__PURE__ */ S(f, {
262
- leftIcon: /* @__PURE__ */ S(A, { size: 16 }),
263
- onClick: se,
264
- isLoading: q.loading,
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(j, { size: 16 }),
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(D, { size: 18 }),
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(D, { className: "h-5 w-5 text-primary" })
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: B.indexStatus.toLowerCase()
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: B.totalDocuments
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: B.totalChunks
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: B.vectorCount
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(k, { size: 18 }), "Index Configuration"]
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: B.embeddingModel
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: B.embeddingDimensions
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: B.chunkingStrategy
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: B.chunkSize
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: B.chunkOverlap
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: B.lastIndexedAt ? a(B.lastIndexedAt) : "Never"
398
+ children: G.lastIndexedAt ? a(G.lastIndexedAt) : "Never"
382
399
  })] })
383
400
  ]
384
401
  })
385
402
  })] }),
386
- !L && R && /* @__PURE__ */ S(te, { knowledgeBaseId: R }),
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(O, { size: 18 }),
407
+ /* @__PURE__ */ S(ue, { size: 18 }),
391
408
  "Documents (",
392
- U.length,
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: U.length > 0 ? /* @__PURE__ */ S("div", {
414
+ children: q.length > 0 ? /* @__PURE__ */ S("div", {
398
415
  className: "divide-y divide-border-subtle",
399
- children: U.map((e) => /* @__PURE__ */ C("div", {
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(E, { className: "h-8 w-8 mx-auto mb-2 opacity-50" }), /* @__PURE__ */ S("p", { children: "No documents indexed yet" })]
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(j, { size: 18 }), "Metadata"]
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(B.createdAt)
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(B.updatedAt)
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: B.lastIndexedAt ? a(B.lastIndexedAt) : "—"
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(m, {
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: () => z("knowledge"),
483
+ onClick: () => W("knowledge"),
467
484
  children: "Back to Knowledge Bases"
468
485
  })
469
486
  })
470
487
  });
471
488
  };
472
489
  //#endregion
473
- export { L as KnowledgeBaseDetailPage };
490
+ export { j as KnowledgeBaseDetailPage };
474
491
 
475
492
  //# sourceMappingURL=KnowledgeBaseDetailPage.js.map