@burdenoff/microfe-botmanor 2026.813.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 (160) hide show
  1. package/README.md +12 -0
  2. package/dist/botlit/BotlitRoutes.js +357 -0
  3. package/dist/botlit/BotlitRoutes.js.map +1 -0
  4. package/dist/botlit/BotmanorRoot.js +12 -0
  5. package/dist/botlit/BotmanorRoot.js.map +1 -0
  6. package/dist/botlit/BotmanorRootInner.js +101 -0
  7. package/dist/botlit/BotmanorRootInner.js.map +1 -0
  8. package/dist/botlit/components/Badge.js +39 -0
  9. package/dist/botlit/components/Badge.js.map +1 -0
  10. package/dist/botlit/components/Button.js +46 -0
  11. package/dist/botlit/components/Button.js.map +1 -0
  12. package/dist/botlit/components/Card.js +31 -0
  13. package/dist/botlit/components/Card.js.map +1 -0
  14. package/dist/botlit/components/ChannelSelectorSheet.js +130 -0
  15. package/dist/botlit/components/ChannelSelectorSheet.js.map +1 -0
  16. package/dist/botlit/components/EmptyState.js +35 -0
  17. package/dist/botlit/components/EmptyState.js.map +1 -0
  18. package/dist/botlit/components/ErrorState.js +33 -0
  19. package/dist/botlit/components/ErrorState.js.map +1 -0
  20. package/dist/botlit/components/Input.js +59 -0
  21. package/dist/botlit/components/Input.js.map +1 -0
  22. package/dist/botlit/components/PageLayout.js +34 -0
  23. package/dist/botlit/components/PageLayout.js.map +1 -0
  24. package/dist/botlit/components/QuotaExhaustedDialog.js +20 -0
  25. package/dist/botlit/components/QuotaExhaustedDialog.js.map +1 -0
  26. package/dist/botlit/components/RouteLoader.js +52 -0
  27. package/dist/botlit/components/RouteLoader.js.map +1 -0
  28. package/dist/botlit/components/VersionHistoryPanel.js +144 -0
  29. package/dist/botlit/components/VersionHistoryPanel.js.map +1 -0
  30. package/dist/botlit/components/WorkspaceRequired.js +70 -0
  31. package/dist/botlit/components/WorkspaceRequired.js.map +1 -0
  32. package/dist/botlit/hooks/index.js +16 -0
  33. package/dist/botlit/hooks/internal/mutationInput.js +16 -0
  34. package/dist/botlit/hooks/internal/mutationInput.js.map +1 -0
  35. package/dist/botlit/hooks/internal/workspaceGateway.js +99 -0
  36. package/dist/botlit/hooks/internal/workspaceGateway.js.map +1 -0
  37. package/dist/botlit/hooks/useA2A.js +184 -0
  38. package/dist/botlit/hooks/useA2A.js.map +1 -0
  39. package/dist/botlit/hooks/useAgents.js +469 -0
  40. package/dist/botlit/hooks/useAgents.js.map +1 -0
  41. package/dist/botlit/hooks/useBots.js +306 -0
  42. package/dist/botlit/hooks/useBots.js.map +1 -0
  43. package/dist/botlit/hooks/useBuckets.js +119 -0
  44. package/dist/botlit/hooks/useBuckets.js.map +1 -0
  45. package/dist/botlit/hooks/useChannels.js +213 -0
  46. package/dist/botlit/hooks/useChannels.js.map +1 -0
  47. package/dist/botlit/hooks/useConversations.js +64 -0
  48. package/dist/botlit/hooks/useConversations.js.map +1 -0
  49. package/dist/botlit/hooks/useExecutions.js +86 -0
  50. package/dist/botlit/hooks/useExecutions.js.map +1 -0
  51. package/dist/botlit/hooks/useKnowledgeBases.js +113 -0
  52. package/dist/botlit/hooks/useKnowledgeBases.js.map +1 -0
  53. package/dist/botlit/hooks/useLLMProviders.js +83 -0
  54. package/dist/botlit/hooks/useLLMProviders.js.map +1 -0
  55. package/dist/botlit/hooks/useMCPServers.js +134 -0
  56. package/dist/botlit/hooks/useMCPServers.js.map +1 -0
  57. package/dist/botlit/hooks/usePolicies.js +120 -0
  58. package/dist/botlit/hooks/usePolicies.js.map +1 -0
  59. package/dist/botlit/hooks/usePromptTemplates.js +161 -0
  60. package/dist/botlit/hooks/usePromptTemplates.js.map +1 -0
  61. package/dist/botlit/hooks/useRetrievalProfiles.js +146 -0
  62. package/dist/botlit/hooks/useRetrievalProfiles.js.map +1 -0
  63. package/dist/botlit/hooks/useSkills.js +132 -0
  64. package/dist/botlit/hooks/useSkills.js.map +1 -0
  65. package/dist/botlit/hooks/useStore.js +167 -0
  66. package/dist/botlit/hooks/useStore.js.map +1 -0
  67. package/dist/botlit/hooks/useUserPlatformConnection.js +172 -0
  68. package/dist/botlit/hooks/useUserPlatformConnection.js.map +1 -0
  69. package/dist/botlit/index.js +11 -0
  70. package/dist/botlit/pages/A2AAgentDetailPage.js +589 -0
  71. package/dist/botlit/pages/A2AAgentDetailPage.js.map +1 -0
  72. package/dist/botlit/pages/A2ARegistryPage.js +240 -0
  73. package/dist/botlit/pages/A2ARegistryPage.js.map +1 -0
  74. package/dist/botlit/pages/AgentBuilderPage.js +486 -0
  75. package/dist/botlit/pages/AgentBuilderPage.js.map +1 -0
  76. package/dist/botlit/pages/AgentDetailPage.js +517 -0
  77. package/dist/botlit/pages/AgentDetailPage.js.map +1 -0
  78. package/dist/botlit/pages/AgentsListPage.js +294 -0
  79. package/dist/botlit/pages/AgentsListPage.js.map +1 -0
  80. package/dist/botlit/pages/BotChannelsTab.js +530 -0
  81. package/dist/botlit/pages/BotChannelsTab.js.map +1 -0
  82. package/dist/botlit/pages/BotDetailPage.js +872 -0
  83. package/dist/botlit/pages/BotDetailPage.js.map +1 -0
  84. package/dist/botlit/pages/BotWorkflowTab.js +229 -0
  85. package/dist/botlit/pages/BotWorkflowTab.js.map +1 -0
  86. package/dist/botlit/pages/BotsListPage.js +313 -0
  87. package/dist/botlit/pages/BotsListPage.js.map +1 -0
  88. package/dist/botlit/pages/BucketsPage.js +604 -0
  89. package/dist/botlit/pages/BucketsPage.js.map +1 -0
  90. package/dist/botlit/pages/ChannelDetailPage.js +955 -0
  91. package/dist/botlit/pages/ChannelDetailPage.js.map +1 -0
  92. package/dist/botlit/pages/ChannelRoutesPage.js +218 -0
  93. package/dist/botlit/pages/ChannelRoutesPage.js.map +1 -0
  94. package/dist/botlit/pages/ChannelsPage.js +304 -0
  95. package/dist/botlit/pages/ChannelsPage.js.map +1 -0
  96. package/dist/botlit/pages/ChatPage.js +247 -0
  97. package/dist/botlit/pages/ChatPage.js.map +1 -0
  98. package/dist/botlit/pages/DashboardPage.js +318 -0
  99. package/dist/botlit/pages/DashboardPage.js.map +1 -0
  100. package/dist/botlit/pages/ExecutionDetailPage.js +313 -0
  101. package/dist/botlit/pages/ExecutionDetailPage.js.map +1 -0
  102. package/dist/botlit/pages/ExecutionsPage.js +294 -0
  103. package/dist/botlit/pages/ExecutionsPage.js.map +1 -0
  104. package/dist/botlit/pages/InstalledPackagesPage.js +619 -0
  105. package/dist/botlit/pages/InstalledPackagesPage.js.map +1 -0
  106. package/dist/botlit/pages/KnowledgeBaseDetailPage.js +473 -0
  107. package/dist/botlit/pages/KnowledgeBaseDetailPage.js.map +1 -0
  108. package/dist/botlit/pages/KnowledgeBasesPage.js +150 -0
  109. package/dist/botlit/pages/KnowledgeBasesPage.js.map +1 -0
  110. package/dist/botlit/pages/MCPServerDetailPage.js +550 -0
  111. package/dist/botlit/pages/MCPServerDetailPage.js.map +1 -0
  112. package/dist/botlit/pages/MCPServersPage.js +321 -0
  113. package/dist/botlit/pages/MCPServersPage.js.map +1 -0
  114. package/dist/botlit/pages/PoliciesPage.js +224 -0
  115. package/dist/botlit/pages/PoliciesPage.js.map +1 -0
  116. package/dist/botlit/pages/PolicyDetailPage.js +861 -0
  117. package/dist/botlit/pages/PolicyDetailPage.js.map +1 -0
  118. package/dist/botlit/pages/PromptStudioPage.js +236 -0
  119. package/dist/botlit/pages/PromptStudioPage.js.map +1 -0
  120. package/dist/botlit/pages/PromptTemplateDetailPage.js +812 -0
  121. package/dist/botlit/pages/PromptTemplateDetailPage.js.map +1 -0
  122. package/dist/botlit/pages/PromptTemplatesPage.js +269 -0
  123. package/dist/botlit/pages/PromptTemplatesPage.js.map +1 -0
  124. package/dist/botlit/pages/RetrievalProfileDetailPage.js +559 -0
  125. package/dist/botlit/pages/RetrievalProfileDetailPage.js.map +1 -0
  126. package/dist/botlit/pages/RetrievalProfilesPage.js +219 -0
  127. package/dist/botlit/pages/RetrievalProfilesPage.js.map +1 -0
  128. package/dist/botlit/pages/SettingsPage.js +655 -0
  129. package/dist/botlit/pages/SettingsPage.js.map +1 -0
  130. package/dist/botlit/pages/SkillDetailPage.js +778 -0
  131. package/dist/botlit/pages/SkillDetailPage.js.map +1 -0
  132. package/dist/botlit/pages/SkillsPage.js +206 -0
  133. package/dist/botlit/pages/SkillsPage.js.map +1 -0
  134. package/dist/botlit/pages/StorePackageDetailPage.js +462 -0
  135. package/dist/botlit/pages/StorePackageDetailPage.js.map +1 -0
  136. package/dist/botlit/pages/StorePage.js +315 -0
  137. package/dist/botlit/pages/StorePage.js.map +1 -0
  138. package/dist/botlit/providers/BotlitProvider.js +93 -0
  139. package/dist/botlit/providers/BotlitProvider.js.map +1 -0
  140. package/dist/botlit/store/botlitStore.js +101 -0
  141. package/dist/botlit/store/botlitStore.js.map +1 -0
  142. package/dist/botlit/utils/cn.js +10 -0
  143. package/dist/botlit/utils/cn.js.map +1 -0
  144. package/dist/botlit/utils/formatters.js +37 -0
  145. package/dist/botlit/utils/formatters.js.map +1 -0
  146. package/dist/botlit/utils/navigation.js +9 -0
  147. package/dist/botlit/utils/navigation.js.map +1 -0
  148. package/dist/botlit/utils/unions.js +14 -0
  149. package/dist/botlit/utils/unions.js.map +1 -0
  150. package/dist/generated/global-operations.js +66 -0
  151. package/dist/generated/global-operations.js.map +1 -0
  152. package/dist/generated/global-types.js +8 -0
  153. package/dist/generated/global-types.js.map +1 -0
  154. package/dist/generated/wspace-operations.js +1591 -0
  155. package/dist/generated/wspace-operations.js.map +1 -0
  156. package/dist/generated/wspace-types.js +12 -0
  157. package/dist/generated/wspace-types.js.map +1 -0
  158. package/dist/index.js +13 -0
  159. package/dist/utils/nativeBridge.js +2 -0
  160. package/package.json +133 -0
@@ -0,0 +1,150 @@
1
+ import { useBotlit as e } from "../providers/BotlitProvider.js";
2
+ import { useKnowledgeBases as t } from "../hooks/useKnowledgeBases.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 } from "../components/Card.js";
6
+ import { Button as o } from "../components/Button.js";
7
+ import { StatusBadge as s } from "../components/Badge.js";
8
+ import { EmptyState as c } from "../components/EmptyState.js";
9
+ import { Input as l } from "../components/Input.js";
10
+ import { ErrorState as u } from "../components/ErrorState.js";
11
+ import { GlassCard as d, PagePurpose as f } from "@burdenoff/fe-libs/ui";
12
+ import { jsx as p, jsxs as m } from "react/jsx-runtime";
13
+ import { useParams as h } from "react-router";
14
+ import { BookOpen as g, FileText as _, Plus as v, Search as y } from "lucide-react";
15
+ //#region src/botlit/pages/KnowledgeBasesPage.tsx
16
+ var b = () => {
17
+ let { botId: b } = h(), { navigateTo: x } = e(), { data: S, loading: C, error: w, refetch: T } = t(b ? { search: b } : void 0);
18
+ return /* @__PURE__ */ p(r, {
19
+ title: "Knowledge Bases",
20
+ description: "Manage knowledge sources for your AI agents",
21
+ actions: /* @__PURE__ */ p(o, {
22
+ leftIcon: /* @__PURE__ */ p(v, { size: 16 }),
23
+ onClick: () => x("knowledge/new"),
24
+ children: "Create Knowledge Base"
25
+ }),
26
+ children: /* @__PURE__ */ m("div", {
27
+ className: "space-y-6",
28
+ children: [
29
+ /* @__PURE__ */ p(f, {
30
+ icon: /* @__PURE__ */ p(g, { size: 18 }),
31
+ children: "A knowledge base is the private library your agents read from to answer questions about your business. Upload documents, FAQs, policies or product data here, and they get indexed so agents can retrieve and cite the right passage instead of guessing. Create a knowledge base whenever you want answers grounded in your own content rather than the model’s general training."
32
+ }),
33
+ S.length > 0 ? /* @__PURE__ */ m("div", {
34
+ className: "grid grid-cols-2 gap-4 sm:grid-cols-3",
35
+ children: [/* @__PURE__ */ m(d, {
36
+ treatment: "glass",
37
+ glow: !0,
38
+ className: "p-4",
39
+ children: [/* @__PURE__ */ p("p", {
40
+ className: "text-sm text-text-secondary",
41
+ children: "Knowledge bases"
42
+ }), /* @__PURE__ */ p("p", {
43
+ className: "mt-1 text-2xl font-semibold tabular-nums text-text-primary",
44
+ children: S.length
45
+ })]
46
+ }), /* @__PURE__ */ m(d, {
47
+ treatment: "metric",
48
+ className: "col-span-2 p-4 sm:col-span-2",
49
+ children: [/* @__PURE__ */ p("p", {
50
+ className: "text-sm text-text-secondary",
51
+ children: "Total documents"
52
+ }), /* @__PURE__ */ p("p", {
53
+ className: "mt-1 text-2xl font-semibold tabular-nums text-text-primary",
54
+ children: S.reduce((e, t) => e + (t.totalDocuments ?? t.documentCount ?? 0), 0)
55
+ })]
56
+ })]
57
+ }) : null,
58
+ /* @__PURE__ */ p("div", {
59
+ className: "flex items-center gap-4",
60
+ children: /* @__PURE__ */ m("div", {
61
+ className: "relative flex-1 max-w-md",
62
+ children: [/* @__PURE__ */ p(y, { className: "absolute left-3 top-1/2 -translate-y-1/2 h-4 w-4 text-text-secondary" }), /* @__PURE__ */ p(l, {
63
+ placeholder: "Search knowledge bases...",
64
+ className: "pl-9"
65
+ })]
66
+ })
67
+ }),
68
+ C ? /* @__PURE__ */ p("div", {
69
+ className: "grid grid-cols-1 md:grid-cols-2 lg:grid-cols-3 gap-4",
70
+ children: [
71
+ 1,
72
+ 2,
73
+ 3
74
+ ].map((e) => /* @__PURE__ */ p("div", { className: "h-48 bg-bg-sunken motion-safe:animate-vc-shimmer rounded-lg" }, e))
75
+ }) : w ? /* @__PURE__ */ p(u, {
76
+ resource: "knowledge bases",
77
+ error: w,
78
+ onRetry: () => void T()
79
+ }) : S.length > 0 ? /* @__PURE__ */ m("div", {
80
+ className: "grid grid-cols-1 md:grid-cols-2 lg:grid-cols-3 gap-4",
81
+ children: [S.map((e) => /* @__PURE__ */ p(i, {
82
+ className: "hover:shadow-md transition-shadow cursor-pointer",
83
+ onClick: () => x(`knowledge/${e.id}`),
84
+ children: /* @__PURE__ */ m(a, {
85
+ className: "pt-6",
86
+ children: [
87
+ /* @__PURE__ */ m("div", {
88
+ className: "flex items-start justify-between mb-4",
89
+ children: [/* @__PURE__ */ p("div", {
90
+ className: "p-3 rounded-lg bg-action-primary-bg/10",
91
+ children: /* @__PURE__ */ p(g, { className: "h-6 w-6 text-primary" })
92
+ }), /* @__PURE__ */ p(s, { status: e.indexStatus || e.status || "UNKNOWN" })]
93
+ }),
94
+ /* @__PURE__ */ p("h3", {
95
+ className: "font-semibold text-text-primary mb-1",
96
+ children: e.name
97
+ }),
98
+ /* @__PURE__ */ p("p", {
99
+ className: "text-sm text-text-secondary line-clamp-2 mb-4",
100
+ children: e.description
101
+ }),
102
+ /* @__PURE__ */ p("div", {
103
+ className: "flex items-center gap-4 text-xs text-text-secondary",
104
+ children: /* @__PURE__ */ m("span", {
105
+ className: "flex items-center gap-1",
106
+ children: [
107
+ /* @__PURE__ */ p(_, { size: 14 }),
108
+ e.totalDocuments ?? e.documentCount ?? 0,
109
+ " documents"
110
+ ]
111
+ })
112
+ }),
113
+ /* @__PURE__ */ m("div", {
114
+ className: "mt-3 pt-3 border-t border-border-subtle text-xs text-text-secondary",
115
+ children: ["Created ", n(e.createdAt)]
116
+ })
117
+ ]
118
+ })
119
+ }, e.id)), /* @__PURE__ */ p(i, {
120
+ className: "border-dashed cursor-pointer hover:border-primary/50 transition-colors",
121
+ onClick: () => x("knowledge/new"),
122
+ children: /* @__PURE__ */ m(a, {
123
+ className: "h-full flex flex-col items-center justify-center py-12",
124
+ children: [/* @__PURE__ */ p("div", {
125
+ className: "p-4 rounded-full bg-bg-sunken mb-4",
126
+ children: /* @__PURE__ */ p(v, { className: "h-8 w-8 text-text-secondary" })
127
+ }), /* @__PURE__ */ p("p", {
128
+ className: "font-medium text-text-secondary",
129
+ children: "Add Knowledge Base"
130
+ })]
131
+ })
132
+ })]
133
+ }) : /* @__PURE__ */ p(c, {
134
+ illustration: "empty-files",
135
+ title: "No knowledge bases yet",
136
+ description: "Create a knowledge base to give your agents access to your documents and data.",
137
+ action: /* @__PURE__ */ p(o, {
138
+ leftIcon: /* @__PURE__ */ p(v, { size: 16 }),
139
+ onClick: () => x("knowledge/new"),
140
+ children: "Create Knowledge Base"
141
+ })
142
+ })
143
+ ]
144
+ })
145
+ });
146
+ };
147
+ //#endregion
148
+ export { b as KnowledgeBasesPage };
149
+
150
+ //# sourceMappingURL=KnowledgeBasesPage.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"KnowledgeBasesPage.js","names":[],"sources":["../../../src/botlit/pages/KnowledgeBasesPage.tsx"],"sourcesContent":["/**\n * Knowledge Bases Page\n * @module botlit/pages\n */\n\nimport type { FC } from 'react';\nimport { useParams } from 'react-router';\nimport { useBotlit } from '../providers/BotlitProvider';\nimport { Plus, Search, BookOpen, FileText } from 'lucide-react';\nimport { PagePurpose, GlassCard } from '@burdenoff/fe-libs/ui';\nimport { PageLayout } from '../components/PageLayout';\nimport { Card, CardContent } from '../components/Card';\nimport { Button } from '../components/Button';\nimport { Input } from '../components/Input';\nimport { StatusBadge } from '../components/Badge';\nimport { EmptyState } from '../components/EmptyState';\nimport { ErrorState } from '../components/ErrorState';\nimport { useKnowledgeBases } from '../hooks/useKnowledgeBases';\nimport { formatRelativeTime } from '../utils/formatters';\n\nexport const KnowledgeBasesPage: FC = () => {\n const { botId } = useParams();\n const { navigateTo } = useBotlit();\n const {\n data: knowledgeBases,\n loading,\n error,\n refetch,\n } = useKnowledgeBases(botId ? { search: botId } : undefined);\n\n return (\n <PageLayout\n title=\"Knowledge Bases\"\n description=\"Manage knowledge sources for your AI agents\"\n actions={\n <Button leftIcon={<Plus size={16} />} onClick={() => navigateTo('knowledge/new')}>\n Create Knowledge Base\n </Button>\n }\n >\n <div className=\"space-y-6\">\n <PagePurpose icon={<BookOpen size={18} />}>\n A knowledge base is the private library your agents read from to answer questions about\n your business. Upload documents, FAQs, policies or product data here, and they get indexed\n so agents can retrieve and cite the right passage instead of guessing. Create a knowledge\n base whenever you want answers grounded in your own content rather than the model&rsquo;s\n general training.\n </PagePurpose>\n\n {/* Summary */}\n {knowledgeBases.length > 0 ? (\n <div className=\"grid grid-cols-2 gap-4 sm:grid-cols-3\">\n <GlassCard treatment=\"glass\" glow className=\"p-4\">\n <p className=\"text-sm text-text-secondary\">Knowledge bases</p>\n <p className=\"mt-1 text-2xl font-semibold tabular-nums text-text-primary\">\n {knowledgeBases.length}\n </p>\n </GlassCard>\n <GlassCard treatment=\"metric\" className=\"col-span-2 p-4 sm:col-span-2\">\n <p className=\"text-sm text-text-secondary\">Total documents</p>\n <p className=\"mt-1 text-2xl font-semibold tabular-nums text-text-primary\">\n {knowledgeBases.reduce(\n (\n sum: number,\n kb: { totalDocuments?: number | null; documentCount?: number | null }\n ) => sum + (kb.totalDocuments ?? kb.documentCount ?? 0),\n 0\n )}\n </p>\n </GlassCard>\n </div>\n ) : null}\n\n {/* Toolbar */}\n <div className=\"flex items-center gap-4\">\n <div className=\"relative flex-1 max-w-md\">\n <Search className=\"absolute left-3 top-1/2 -translate-y-1/2 h-4 w-4 text-text-secondary\" />\n <Input placeholder=\"Search knowledge bases...\" className=\"pl-9\" />\n </div>\n </div>\n\n {/* Content */}\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=\"knowledge bases\" error={error} onRetry={() => void refetch()} />\n ) : knowledgeBases.length > 0 ? (\n <div className=\"grid grid-cols-1 md:grid-cols-2 lg:grid-cols-3 gap-4\">\n {knowledgeBases.map(\n (kb: {\n id: string;\n name: string;\n description?: string | null;\n status?: string;\n indexStatus?: string;\n totalDocuments?: number | null;\n documentCount?: number | null;\n createdAt: string;\n }) => (\n <Card\n key={kb.id}\n className=\"hover:shadow-md transition-shadow cursor-pointer\"\n onClick={() => navigateTo(`knowledge/${kb.id}`)}\n >\n <CardContent className=\"pt-6\">\n <div className=\"flex items-start justify-between mb-4\">\n <div className=\"p-3 rounded-lg bg-action-primary-bg/10\">\n <BookOpen className=\"h-6 w-6 text-primary\" />\n </div>\n <StatusBadge status={kb.indexStatus || kb.status || 'UNKNOWN'} />\n </div>\n <h3 className=\"font-semibold text-text-primary mb-1\">{kb.name}</h3>\n <p className=\"text-sm text-text-secondary line-clamp-2 mb-4\">\n {kb.description}\n </p>\n <div className=\"flex items-center gap-4 text-xs text-text-secondary\">\n <span className=\"flex items-center gap-1\">\n <FileText size={14} />\n {kb.totalDocuments ?? kb.documentCount ?? 0} documents\n </span>\n </div>\n <div className=\"mt-3 pt-3 border-t border-border-subtle text-xs text-text-secondary\">\n Created {formatRelativeTime(kb.createdAt)}\n </div>\n </CardContent>\n </Card>\n )\n )}\n\n {/* Add New Card */}\n <Card\n className=\"border-dashed cursor-pointer hover:border-primary/50 transition-colors\"\n onClick={() => navigateTo('knowledge/new')}\n >\n <CardContent className=\"h-full flex flex-col items-center justify-center py-12\">\n <div className=\"p-4 rounded-full bg-bg-sunken mb-4\">\n <Plus className=\"h-8 w-8 text-text-secondary\" />\n </div>\n <p className=\"font-medium text-text-secondary\">Add Knowledge Base</p>\n </CardContent>\n </Card>\n </div>\n ) : (\n <EmptyState\n illustration=\"empty-files\"\n title=\"No knowledge bases yet\"\n description=\"Create a knowledge base to give your agents access to your documents and data.\"\n action={\n <Button leftIcon={<Plus size={16} />} onClick={() => navigateTo('knowledge/new')}>\n Create Knowledge Base\n </Button>\n }\n />\n )}\n </div>\n </PageLayout>\n );\n};\n"],"mappings":"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"}