@burdenoff/microfe-botmanor 2026.1109.1 → 2026.1110.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 +34 -45
- package/dist/botlit/BotlitRoutes.js.map +1 -1
- package/dist/botlit/components/Badge.js +2 -2
- package/dist/botlit/components/Badge.js.map +1 -1
- package/dist/botlit/components/ChannelSelectorSheet.js +4 -4
- package/dist/botlit/components/ChannelSelectorSheet.js.map +1 -1
- package/dist/botlit/components/LoadMore.d.ts +9 -0
- package/dist/botlit/components/LoadMore.js +22 -0
- package/dist/botlit/components/LoadMore.js.map +1 -0
- package/dist/botlit/components/index.d.ts +1 -0
- package/dist/botlit/hooks/index.d.ts +1 -2
- package/dist/botlit/hooks/index.js +15 -16
- package/dist/botlit/hooks/internal/workspaceGateway.d.ts +47 -0
- package/dist/botlit/hooks/internal/workspaceGateway.js +59 -1
- package/dist/botlit/hooks/internal/workspaceGateway.js.map +1 -1
- package/dist/botlit/hooks/useAgents.d.ts +2 -6
- package/dist/botlit/hooks/useAgents.js +71 -95
- package/dist/botlit/hooks/useAgents.js.map +1 -1
- package/dist/botlit/hooks/useBots.d.ts +2 -6
- package/dist/botlit/hooks/useBots.js +51 -75
- package/dist/botlit/hooks/useBots.js.map +1 -1
- package/dist/botlit/hooks/useBuckets.d.ts +5 -0
- package/dist/botlit/hooks/useBuckets.js +72 -38
- package/dist/botlit/hooks/useBuckets.js.map +1 -1
- package/dist/botlit/hooks/useExecutions.d.ts +2 -2
- package/dist/botlit/hooks/useExecutions.js +30 -34
- package/dist/botlit/hooks/useExecutions.js.map +1 -1
- package/dist/botlit/hooks/useStore.d.ts +3 -3
- package/dist/botlit/hooks/useStore.js +41 -50
- package/dist/botlit/hooks/useStore.js.map +1 -1
- package/dist/botlit/index.d.ts +0 -1
- package/dist/botlit/index.js +5 -6
- package/dist/botlit/pages/A2AAgentDetailPage.js +1 -1
- package/dist/botlit/pages/A2AAgentDetailPage.js.map +1 -1
- package/dist/botlit/pages/AgentDetailPage.js +1 -1
- package/dist/botlit/pages/AgentDetailPage.js.map +1 -1
- package/dist/botlit/pages/AgentsListPage.js +157 -156
- package/dist/botlit/pages/AgentsListPage.js.map +1 -1
- package/dist/botlit/pages/BotChannelsTab.js +24 -24
- package/dist/botlit/pages/BotChannelsTab.js.map +1 -1
- package/dist/botlit/pages/BotsListPage.js +147 -146
- package/dist/botlit/pages/BotsListPage.js.map +1 -1
- package/dist/botlit/pages/BucketDetailPage.d.ts +2 -0
- package/dist/botlit/pages/BucketDetailPage.js +251 -0
- package/dist/botlit/pages/BucketDetailPage.js.map +1 -0
- package/dist/botlit/pages/BucketsPage.js +3 -3
- package/dist/botlit/pages/BucketsPage.js.map +1 -1
- package/dist/botlit/pages/ChannelDetailPage.js +2 -2
- package/dist/botlit/pages/ChannelDetailPage.js.map +1 -1
- package/dist/botlit/pages/ExecutionsPage.js +141 -134
- package/dist/botlit/pages/ExecutionsPage.js.map +1 -1
- package/dist/botlit/pages/InstalledPackagesPage.js +43 -36
- package/dist/botlit/pages/InstalledPackagesPage.js.map +1 -1
- package/dist/botlit/pages/MCPServersPage.js +1 -1
- package/dist/botlit/pages/MCPServersPage.js.map +1 -1
- package/dist/botlit/pages/SettingsPage.js +2 -2
- package/dist/botlit/pages/SettingsPage.js.map +1 -1
- package/dist/botlit/pages/SkillDetailPage.js +1 -1
- package/dist/botlit/pages/SkillDetailPage.js.map +1 -1
- package/dist/botlit/pages/StorePackageDetailPage.js +1 -1
- package/dist/botlit/pages/StorePackageDetailPage.js.map +1 -1
- package/dist/botlit/pages/StorePage.js +150 -143
- package/dist/botlit/pages/StorePage.js.map +1 -1
- package/dist/botlit/pages/index.d.ts +1 -2
- package/dist/generated/wspace-operations.js +67 -67
- package/dist/generated/wspace-operations.js.map +1 -1
- package/dist/index.js +5 -6
- package/package.json +1 -1
- package/dist/botlit/hooks/useConversations.d.ts +0 -42
- package/dist/botlit/hooks/useConversations.js +0 -63
- package/dist/botlit/hooks/useConversations.js.map +0 -1
- package/dist/botlit/pages/ConversationDetailPage.d.ts +0 -2
- package/dist/botlit/pages/ConversationsPage.d.ts +0 -2
|
@@ -9,15 +9,15 @@ import { Suspense as o, lazy as s } from "react";
|
|
|
9
9
|
import { jsx as c, jsxs as l } from "react/jsx-runtime";
|
|
10
10
|
import { Navigate as u, Route as d, Routes as f, useLocation as p } from "react-router";
|
|
11
11
|
// src/botlit/BotlitRoutes.tsx
|
|
12
|
-
var m = s(() => import("./pages/BotsListPage.js").then((e) => ({ default: e.BotsListPage }))), h = s(() => import("./pages/BotDetailPage.js").then((e) => ({ default: e.BotDetailPage }))), g = s(() => import("./pages/AgentsListPage.js").then((e) => ({ default: e.AgentsListPage }))), _ = s(() => import("./pages/AgentApprovalsPage.js").then((e) => ({ default: e.AgentApprovalsPage }))), v = s(() => import("./pages/AgentDetailPage.js").then((e) => ({ default: e.AgentDetailPage }))), y = s(() => import("./pages/AgentBuilderPage.js").then((e) => ({ default: e.AgentBuilderPage }))), b = s(() => import("./pages/KnowledgeBasesPage.js").then((e) => ({ default: e.KnowledgeBasesPage }))), x = s(() => import("./pages/KnowledgeBaseDetailPage.js").then((e) => ({ default: e.KnowledgeBaseDetailPage }))), S = s(() => import("./pages/RetrievalProfilesPage.js").then((e) => ({ default: e.RetrievalProfilesPage }))), C = s(() => import("./pages/RetrievalProfileDetailPage.js").then((e) => ({ default: e.RetrievalProfileDetailPage }))), w = s(() => import("./pages/MCPServersPage.js").then((e) => ({ default: e.MCPServersPage }))), T = s(() => import("./pages/MCPServerDetailPage.js").then((e) => ({ default: e.MCPServerDetailPage }))), E = s(() => import("./pages/A2ARegistryPage.js").then((e) => ({ default: e.A2ARegistryPage }))), D = s(() => import("./pages/A2AAgentDetailPage.js").then((e) => ({ default: e.A2AAgentDetailPage }))), O = s(() => import("./pages/ChannelsPage.js").then((e) => ({ default: e.ChannelsPage }))), k = s(() => import("./pages/ChannelDetailPage.js").then((e) => ({ default: e.ChannelDetailPage }))), A = s(() => import("./pages/ChannelRoutesPage.js").then((e) => ({ default: e.ChannelRoutesPage }))), j = s(() => import("./pages/PoliciesPage.js").then((e) => ({ default: e.PoliciesPage }))), M = s(() => import("./pages/PolicyDetailPage.js").then((e) => ({ default: e.PolicyDetailPage }))), N = s(() => import("./pages/SkillsPage.js").then((e) => ({ default: e.SkillsPage }))), P = s(() => import("./pages/SkillDetailPage.js").then((e) => ({ default: e.SkillDetailPage }))), F = s(() => import("./pages/PromptTemplatesPage.js").then((e) => ({ default: e.PromptTemplatesPage }))), I = s(() => import("./pages/PromptTemplateDetailPage.js").then((e) => ({ default: e.PromptTemplateDetailPage }))), L = s(() => import("./pages/PromptStudioPage.js").then((e) => ({ default: e.PromptStudioPage }))), R = s(() => import("./pages/ExecutionsPage.js").then((e) => ({ default: e.ExecutionsPage }))), z = s(() => import("./pages/ExecutionDetailPage.js").then((e) => ({ default: e.ExecutionDetailPage }))), B = s(() => import("./pages/AiOperationsPage.js").then((e) => ({ default: e.AiOperationsPage }))), V = s(() => import("./pages/BucketsPage.js").then((e) => ({ default: e.BucketsPage }))), H = s(() => import("./pages/StorePage.js").then((e) => ({ default: e.StorePage }))),
|
|
13
|
-
let { basePath: s, isStandalone:
|
|
12
|
+
var m = s(() => import("./pages/BotsListPage.js").then((e) => ({ default: e.BotsListPage }))), h = s(() => import("./pages/BotDetailPage.js").then((e) => ({ default: e.BotDetailPage }))), g = s(() => import("./pages/AgentsListPage.js").then((e) => ({ default: e.AgentsListPage }))), _ = s(() => import("./pages/AgentApprovalsPage.js").then((e) => ({ default: e.AgentApprovalsPage }))), v = s(() => import("./pages/AgentDetailPage.js").then((e) => ({ default: e.AgentDetailPage }))), y = s(() => import("./pages/AgentBuilderPage.js").then((e) => ({ default: e.AgentBuilderPage }))), b = s(() => import("./pages/KnowledgeBasesPage.js").then((e) => ({ default: e.KnowledgeBasesPage }))), x = s(() => import("./pages/KnowledgeBaseDetailPage.js").then((e) => ({ default: e.KnowledgeBaseDetailPage }))), S = s(() => import("./pages/RetrievalProfilesPage.js").then((e) => ({ default: e.RetrievalProfilesPage }))), C = s(() => import("./pages/RetrievalProfileDetailPage.js").then((e) => ({ default: e.RetrievalProfileDetailPage }))), w = s(() => import("./pages/MCPServersPage.js").then((e) => ({ default: e.MCPServersPage }))), T = s(() => import("./pages/MCPServerDetailPage.js").then((e) => ({ default: e.MCPServerDetailPage }))), E = s(() => import("./pages/A2ARegistryPage.js").then((e) => ({ default: e.A2ARegistryPage }))), D = s(() => import("./pages/A2AAgentDetailPage.js").then((e) => ({ default: e.A2AAgentDetailPage }))), O = s(() => import("./pages/ChannelsPage.js").then((e) => ({ default: e.ChannelsPage }))), k = s(() => import("./pages/ChannelDetailPage.js").then((e) => ({ default: e.ChannelDetailPage }))), A = s(() => import("./pages/ChannelRoutesPage.js").then((e) => ({ default: e.ChannelRoutesPage }))), j = s(() => import("./pages/PoliciesPage.js").then((e) => ({ default: e.PoliciesPage }))), M = s(() => import("./pages/PolicyDetailPage.js").then((e) => ({ default: e.PolicyDetailPage }))), N = s(() => import("./pages/SkillsPage.js").then((e) => ({ default: e.SkillsPage }))), P = s(() => import("./pages/SkillDetailPage.js").then((e) => ({ default: e.SkillDetailPage }))), F = s(() => import("./pages/PromptTemplatesPage.js").then((e) => ({ default: e.PromptTemplatesPage }))), I = s(() => import("./pages/PromptTemplateDetailPage.js").then((e) => ({ default: e.PromptTemplateDetailPage }))), L = s(() => import("./pages/PromptStudioPage.js").then((e) => ({ default: e.PromptStudioPage }))), R = s(() => import("./pages/ExecutionsPage.js").then((e) => ({ default: e.ExecutionsPage }))), z = s(() => import("./pages/ExecutionDetailPage.js").then((e) => ({ default: e.ExecutionDetailPage }))), B = s(() => import("./pages/AiOperationsPage.js").then((e) => ({ default: e.AiOperationsPage }))), V = s(() => import("./pages/BucketsPage.js").then((e) => ({ default: e.BucketsPage }))), H = s(() => import("./pages/BucketDetailPage.js").then((e) => ({ default: e.BucketDetailPage }))), U = s(() => import("./pages/StorePage.js").then((e) => ({ default: e.StorePage }))), W = s(() => import("./pages/StorePackageDetailPage.js").then((e) => ({ default: e.StorePackageDetailPage }))), G = s(() => import("./pages/InstalledPackagesPage.js").then((e) => ({ default: e.InstalledPackagesPage }))), K = s(() => import("./pages/SettingsPage.js").then((e) => ({ default: e.SettingsPage }))), q = s(() => import("./pages/ChatPage.js").then((e) => ({ default: e.ChatPage }))), J = () => {
|
|
13
|
+
let { basePath: s, isStandalone: J } = e(), Y = p(), X = i(), Z = (e, t, n, i, a) => /* @__PURE__ */ c(r, {
|
|
14
14
|
permission: e,
|
|
15
15
|
title: t,
|
|
16
16
|
backTo: n,
|
|
17
17
|
backLabel: i,
|
|
18
18
|
children: a
|
|
19
|
-
}),
|
|
20
|
-
return
|
|
19
|
+
}), Q = X("permissions.required.back", "Go back"), $ = s === "/" ? "" : s.replace(/\/$/, "");
|
|
20
|
+
return $ && !J && !(Y.pathname === $ || Y.pathname.startsWith($ + "/")) ? null : /* @__PURE__ */ c("div", {
|
|
21
21
|
className: "flex flex-col min-h-full bg-bg-surface",
|
|
22
22
|
children: /* @__PURE__ */ c(o, {
|
|
23
23
|
fallback: /* @__PURE__ */ c(t, {}),
|
|
@@ -29,7 +29,7 @@ var m = s(() => import("./pages/BotsListPage.js").then((e) => ({ default: e.Bots
|
|
|
29
29
|
/* @__PURE__ */ c(d, {
|
|
30
30
|
path: "home",
|
|
31
31
|
element: /* @__PURE__ */ c(u, {
|
|
32
|
-
to: "/",
|
|
32
|
+
to: $ || "/",
|
|
33
33
|
replace: !0
|
|
34
34
|
})
|
|
35
35
|
}),
|
|
@@ -39,7 +39,7 @@ var m = s(() => import("./pages/BotsListPage.js").then((e) => ({ default: e.Bots
|
|
|
39
39
|
}),
|
|
40
40
|
/* @__PURE__ */ c(d, {
|
|
41
41
|
path: "bots/new",
|
|
42
|
-
element:
|
|
42
|
+
element: Z(n.APP_CREATE, X("botlit.botsList.actions.createBot", "Create Bot"), "bots", Q, /* @__PURE__ */ c(h, { isNew: !0 }))
|
|
43
43
|
}),
|
|
44
44
|
/* @__PURE__ */ c(d, {
|
|
45
45
|
path: "bots/:botId",
|
|
@@ -47,7 +47,7 @@ var m = s(() => import("./pages/BotsListPage.js").then((e) => ({ default: e.Bots
|
|
|
47
47
|
}),
|
|
48
48
|
/* @__PURE__ */ c(d, {
|
|
49
49
|
path: "bots/:botId/edit",
|
|
50
|
-
element:
|
|
50
|
+
element: Z(n.APP_UPDATE, X("botlit.botsList.menu.editBot", "Edit Bot"), "bots", Q, /* @__PURE__ */ c(h, { isEditing: !0 }))
|
|
51
51
|
}),
|
|
52
52
|
/* @__PURE__ */ c(d, {
|
|
53
53
|
path: "bots/:botId/agents",
|
|
@@ -55,7 +55,7 @@ var m = s(() => import("./pages/BotsListPage.js").then((e) => ({ default: e.Bots
|
|
|
55
55
|
}),
|
|
56
56
|
/* @__PURE__ */ c(d, {
|
|
57
57
|
path: "bots/:botId/agents/new",
|
|
58
|
-
element:
|
|
58
|
+
element: Z(n.AGENT_CREATE, X("botlit.agentsList.actions.createAgent", "Create Agent"), "agents", Q, /* @__PURE__ */ c(y, {}))
|
|
59
59
|
}),
|
|
60
60
|
/* @__PURE__ */ c(d, {
|
|
61
61
|
path: "bots/:botId/agents/:agentId",
|
|
@@ -63,7 +63,7 @@ var m = s(() => import("./pages/BotsListPage.js").then((e) => ({ default: e.Bots
|
|
|
63
63
|
}),
|
|
64
64
|
/* @__PURE__ */ c(d, {
|
|
65
65
|
path: "bots/:botId/agents/:agentId/edit",
|
|
66
|
-
element:
|
|
66
|
+
element: Z(n.AGENT_UPDATE, X("botlit.agentsList.menu.editAgent", "Edit Agent"), "agents", Q, /* @__PURE__ */ c(y, {}))
|
|
67
67
|
}),
|
|
68
68
|
/* @__PURE__ */ c(d, {
|
|
69
69
|
path: "bots/:botId/knowledge",
|
|
@@ -79,7 +79,7 @@ var m = s(() => import("./pages/BotsListPage.js").then((e) => ({ default: e.Bots
|
|
|
79
79
|
}),
|
|
80
80
|
/* @__PURE__ */ c(d, {
|
|
81
81
|
path: "agents/new",
|
|
82
|
-
element:
|
|
82
|
+
element: Z(n.AGENT_CREATE, X("botlit.agentsList.actions.createAgent", "Create Agent"), "agents", Q, /* @__PURE__ */ c(y, {}))
|
|
83
83
|
}),
|
|
84
84
|
/* @__PURE__ */ c(d, {
|
|
85
85
|
path: "agents/approvals",
|
|
@@ -91,25 +91,11 @@ var m = s(() => import("./pages/BotsListPage.js").then((e) => ({ default: e.Bots
|
|
|
91
91
|
}),
|
|
92
92
|
/* @__PURE__ */ c(d, {
|
|
93
93
|
path: "agents/:agentId/edit",
|
|
94
|
-
element:
|
|
94
|
+
element: Z(n.AGENT_UPDATE, X("botlit.agentsList.menu.editAgent", "Edit Agent"), "agents", Q, /* @__PURE__ */ c(y, {}))
|
|
95
95
|
}),
|
|
96
96
|
/* @__PURE__ */ c(d, {
|
|
97
97
|
path: "agents/:agentId/chat",
|
|
98
|
-
element:
|
|
99
|
-
}),
|
|
100
|
-
/* @__PURE__ */ c(d, {
|
|
101
|
-
path: "conversations",
|
|
102
|
-
element: /* @__PURE__ */ c(u, {
|
|
103
|
-
to: "/conversations",
|
|
104
|
-
replace: !0
|
|
105
|
-
})
|
|
106
|
-
}),
|
|
107
|
-
/* @__PURE__ */ c(d, {
|
|
108
|
-
path: "conversations/:conversationId",
|
|
109
|
-
element: /* @__PURE__ */ c(u, {
|
|
110
|
-
to: "/conversations",
|
|
111
|
-
replace: !0
|
|
112
|
-
})
|
|
98
|
+
element: Z(n.AGENT_EXECUTE, X("botlit.chat.title", "AI Chat"), "agents", Q, /* @__PURE__ */ c(q, {}))
|
|
113
99
|
}),
|
|
114
100
|
/* @__PURE__ */ c(d, {
|
|
115
101
|
path: "knowledge",
|
|
@@ -117,7 +103,7 @@ var m = s(() => import("./pages/BotsListPage.js").then((e) => ({ default: e.Bots
|
|
|
117
103
|
}),
|
|
118
104
|
/* @__PURE__ */ c(d, {
|
|
119
105
|
path: "knowledge/new",
|
|
120
|
-
element:
|
|
106
|
+
element: Z(n.KNOWLEDGE_CREATE, X("botlit.knowledge.actions.create", "Create Knowledge Base"), "knowledge", Q, /* @__PURE__ */ c(x, { isNew: !0 }))
|
|
121
107
|
}),
|
|
122
108
|
/* @__PURE__ */ c(d, {
|
|
123
109
|
path: "knowledge/:kbId",
|
|
@@ -129,7 +115,7 @@ var m = s(() => import("./pages/BotsListPage.js").then((e) => ({ default: e.Bots
|
|
|
129
115
|
}),
|
|
130
116
|
/* @__PURE__ */ c(d, {
|
|
131
117
|
path: "retrieval-profiles/new",
|
|
132
|
-
element:
|
|
118
|
+
element: Z(n.RETRIEVAL_PROFILE_CREATE, X("botlit.retrievalProfiles.actions.create", "Create Retrieval Profile"), "retrieval-profiles", Q, /* @__PURE__ */ c(C, { isNew: !0 }))
|
|
133
119
|
}),
|
|
134
120
|
/* @__PURE__ */ c(d, {
|
|
135
121
|
path: "retrieval-profiles/:profileId",
|
|
@@ -141,7 +127,7 @@ var m = s(() => import("./pages/BotsListPage.js").then((e) => ({ default: e.Bots
|
|
|
141
127
|
}),
|
|
142
128
|
/* @__PURE__ */ c(d, {
|
|
143
129
|
path: "mcp/new",
|
|
144
|
-
element:
|
|
130
|
+
element: Z(n.MCP_CREATE, X("botlit.mcpServers.actions.add", "Add MCP Server"), "mcp", Q, /* @__PURE__ */ c(T, { isNew: !0 }))
|
|
145
131
|
}),
|
|
146
132
|
/* @__PURE__ */ c(d, {
|
|
147
133
|
path: "mcp/:serverId",
|
|
@@ -153,7 +139,7 @@ var m = s(() => import("./pages/BotsListPage.js").then((e) => ({ default: e.Bots
|
|
|
153
139
|
}),
|
|
154
140
|
/* @__PURE__ */ c(d, {
|
|
155
141
|
path: "a2a/register",
|
|
156
|
-
element:
|
|
142
|
+
element: Z(n.A2A_REGISTRY_CREATE, X("botlit.a2aRegistry.actions.registerAgent", "Register Agent"), "a2a", Q, /* @__PURE__ */ c(D, { isNew: !0 }))
|
|
157
143
|
}),
|
|
158
144
|
/* @__PURE__ */ c(d, {
|
|
159
145
|
path: "a2a/:agentId",
|
|
@@ -165,7 +151,7 @@ var m = s(() => import("./pages/BotsListPage.js").then((e) => ({ default: e.Bots
|
|
|
165
151
|
}),
|
|
166
152
|
/* @__PURE__ */ c(d, {
|
|
167
153
|
path: "channels/new",
|
|
168
|
-
element:
|
|
154
|
+
element: Z(n.CHANNEL_CREATE, X("botlit.channels.actions.addChannel", "Add Channel"), "channels", Q, /* @__PURE__ */ c(k, { isNew: !0 }))
|
|
169
155
|
}),
|
|
170
156
|
/* @__PURE__ */ c(d, {
|
|
171
157
|
path: "channels/routes",
|
|
@@ -181,7 +167,7 @@ var m = s(() => import("./pages/BotsListPage.js").then((e) => ({ default: e.Bots
|
|
|
181
167
|
}),
|
|
182
168
|
/* @__PURE__ */ c(d, {
|
|
183
169
|
path: "policies/new",
|
|
184
|
-
element:
|
|
170
|
+
element: Z(n.POLICY_CREATE, X("botlit.policies.actions.createPolicy", "Create Policy"), "policies", Q, /* @__PURE__ */ c(M, { isNew: !0 }))
|
|
185
171
|
}),
|
|
186
172
|
/* @__PURE__ */ c(d, {
|
|
187
173
|
path: "policies/:policyId",
|
|
@@ -193,7 +179,7 @@ var m = s(() => import("./pages/BotsListPage.js").then((e) => ({ default: e.Bots
|
|
|
193
179
|
}),
|
|
194
180
|
/* @__PURE__ */ c(d, {
|
|
195
181
|
path: "skills/new",
|
|
196
|
-
element:
|
|
182
|
+
element: Z(n.SKILL_CREATE, X("botlit.skills.actions.create", "Create Skill"), "skills", Q, /* @__PURE__ */ c(P, { isNew: !0 }))
|
|
197
183
|
}),
|
|
198
184
|
/* @__PURE__ */ c(d, {
|
|
199
185
|
path: "skills/:skillId",
|
|
@@ -205,7 +191,7 @@ var m = s(() => import("./pages/BotsListPage.js").then((e) => ({ default: e.Bots
|
|
|
205
191
|
}),
|
|
206
192
|
/* @__PURE__ */ c(d, {
|
|
207
193
|
path: "prompt-templates/new",
|
|
208
|
-
element:
|
|
194
|
+
element: Z(n.PROMPT_TEMPLATE_CREATE, X("botlit.promptTemplates.actions.create", "Create Template"), "prompt-templates", Q, /* @__PURE__ */ c(I, { isNew: !0 }))
|
|
209
195
|
}),
|
|
210
196
|
/* @__PURE__ */ c(d, {
|
|
211
197
|
path: "prompt-templates/:templateId",
|
|
@@ -233,47 +219,50 @@ var m = s(() => import("./pages/BotsListPage.js").then((e) => ({ default: e.Bots
|
|
|
233
219
|
}),
|
|
234
220
|
/* @__PURE__ */ c(d, {
|
|
235
221
|
path: "buckets/new",
|
|
236
|
-
element: /* @__PURE__ */ c(
|
|
222
|
+
element: /* @__PURE__ */ c(u, {
|
|
223
|
+
to: `${$}/buckets`,
|
|
224
|
+
replace: !0
|
|
225
|
+
})
|
|
237
226
|
}),
|
|
238
227
|
/* @__PURE__ */ c(d, {
|
|
239
228
|
path: "buckets/:bucketId",
|
|
240
|
-
element: /* @__PURE__ */ c(
|
|
229
|
+
element: /* @__PURE__ */ c(H, {})
|
|
241
230
|
}),
|
|
242
231
|
/* @__PURE__ */ c(d, {
|
|
243
232
|
path: "store",
|
|
244
|
-
element: /* @__PURE__ */ c(
|
|
233
|
+
element: /* @__PURE__ */ c(U, {})
|
|
245
234
|
}),
|
|
246
235
|
/* @__PURE__ */ c(d, {
|
|
247
236
|
path: "store/installed",
|
|
248
|
-
element: /* @__PURE__ */ c(
|
|
237
|
+
element: /* @__PURE__ */ c(G, {})
|
|
249
238
|
}),
|
|
250
239
|
/* @__PURE__ */ c(d, {
|
|
251
240
|
path: "store/package/:slug",
|
|
252
|
-
element: /* @__PURE__ */ c(
|
|
241
|
+
element: /* @__PURE__ */ c(W, {})
|
|
253
242
|
}),
|
|
254
243
|
/* @__PURE__ */ c(d, {
|
|
255
244
|
path: "chat",
|
|
256
|
-
element:
|
|
245
|
+
element: Z(n.AGENT_EXECUTE, X("botlit.chat.title", "AI Chat"), "agents", Q, /* @__PURE__ */ c(q, {}))
|
|
257
246
|
}),
|
|
258
247
|
/* @__PURE__ */ c(d, {
|
|
259
248
|
path: "chat/:agentId",
|
|
260
|
-
element:
|
|
249
|
+
element: Z(n.AGENT_EXECUTE, X("botlit.chat.title", "AI Chat"), "agents", Q, /* @__PURE__ */ c(q, {}))
|
|
261
250
|
}),
|
|
262
251
|
/* @__PURE__ */ c(d, {
|
|
263
252
|
path: "settings",
|
|
264
|
-
element: /* @__PURE__ */ c(
|
|
253
|
+
element: /* @__PURE__ */ c(K, {})
|
|
265
254
|
}),
|
|
266
255
|
/* @__PURE__ */ c(d, {
|
|
267
256
|
path: "list",
|
|
268
257
|
element: /* @__PURE__ */ c(u, {
|
|
269
|
-
to: `${
|
|
258
|
+
to: `${$}/workflows/list`,
|
|
270
259
|
replace: !0
|
|
271
260
|
})
|
|
272
261
|
}),
|
|
273
262
|
/* @__PURE__ */ c(d, {
|
|
274
263
|
path: "*",
|
|
275
264
|
element: /* @__PURE__ */ c(u, {
|
|
276
|
-
to: "/",
|
|
265
|
+
to: $ || "/",
|
|
277
266
|
replace: !0
|
|
278
267
|
})
|
|
279
268
|
})
|
|
@@ -281,6 +270,6 @@ var m = s(() => import("./pages/BotsListPage.js").then((e) => ({ default: e.Bots
|
|
|
281
270
|
})
|
|
282
271
|
});
|
|
283
272
|
};
|
|
284
|
-
export {
|
|
273
|
+
export { J as BotlitRoutes };
|
|
285
274
|
|
|
286
275
|
//# sourceMappingURL=BotlitRoutes.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"BotlitRoutes.js","names":["BotsListPage","lazy","m","BotDetailPage","AgentsListPage","AgentApprovalsPage","AgentDetailPage","AgentBuilderPage","KnowledgeBasesPage","KnowledgeBaseDetailPage","RetrievalProfilesPage","RetrievalProfileDetailPage","MCPServersPage","MCPServerDetailPage","A2ARegistryPage","A2AAgentDetailPage","ChannelsPage","ChannelDetailPage","ChannelRoutesPage","PoliciesPage","PolicyDetailPage","SkillsPage","SkillDetailPage","PromptTemplatesPage","PromptTemplateDetailPage","PromptStudioPage","ExecutionsPage","ExecutionDetailPage","AiOperationsPage","BucketsPage","StorePage","StorePackageDetailPage","InstalledPackagesPage","SettingsPage","ChatPage","BotlitRoutes","useBotlit","location","useLocation","t","useTr","gated","RequirePermission","element","back","normalizedBasePath","basePath","isStandalone","Suspense","RouteLoader","Routes","Route","DashboardPage","Navigate","BOTMANOR_PERMISSIONS"],"sources":["../../src/botlit/BotlitRoutes.tsx"],"sourcesContent":["/**\n * BotManor Routes\n * @module botlit\n */\n\nimport { type FC, type ReactElement, lazy, Suspense } from 'react';\nimport { Routes, Route, Navigate, useLocation } from 'react-router';\nimport { useBotlit } from './providers/BotlitProvider';\nimport { RouteLoader } from './components/RouteLoader';\nimport { BOTMANOR_PERMISSIONS, RequirePermission, type BotmanorPermission } from './permissions';\nimport { useTr } from '../shared/hooks/useTr';\n\n// Eager load - Dashboard (primary landing page)\nimport { DashboardPage } from './pages/DashboardPage';\n\n// Lazy loaded pages - Bots\nconst BotsListPage = lazy(() =>\n import('./pages/BotsListPage').then((m) => ({ default: m.BotsListPage }))\n);\nconst BotDetailPage = lazy(() =>\n import('./pages/BotDetailPage').then((m) => ({ default: m.BotDetailPage }))\n);\n\n// Lazy loaded pages - Agents\nconst AgentsListPage = lazy(() =>\n import('./pages/AgentsListPage').then((m) => ({ default: m.AgentsListPage }))\n);\nconst AgentApprovalsPage = lazy(() =>\n import('./pages/AgentApprovalsPage').then((m) => ({ default: m.AgentApprovalsPage }))\n);\nconst AgentDetailPage = lazy(() =>\n import('./pages/AgentDetailPage').then((m) => ({ default: m.AgentDetailPage }))\n);\nconst AgentBuilderPage = lazy(() =>\n import('./pages/AgentBuilderPage').then((m) => ({ default: m.AgentBuilderPage }))\n);\n\n// Lazy loaded pages - Knowledge Bases\nconst KnowledgeBasesPage = lazy(() =>\n import('./pages/KnowledgeBasesPage').then((m) => ({ default: m.KnowledgeBasesPage }))\n);\nconst KnowledgeBaseDetailPage = lazy(() =>\n import('./pages/KnowledgeBaseDetailPage').then((m) => ({ default: m.KnowledgeBaseDetailPage }))\n);\n\n// Lazy loaded pages - Retrieval Profiles\nconst RetrievalProfilesPage = lazy(() =>\n import('./pages/RetrievalProfilesPage').then((m) => ({ default: m.RetrievalProfilesPage }))\n);\nconst RetrievalProfileDetailPage = lazy(() =>\n import('./pages/RetrievalProfileDetailPage').then((m) => ({\n default: m.RetrievalProfileDetailPage,\n }))\n);\n\n// Lazy loaded pages - MCP Servers\nconst MCPServersPage = lazy(() =>\n import('./pages/MCPServersPage').then((m) => ({ default: m.MCPServersPage }))\n);\nconst MCPServerDetailPage = lazy(() =>\n import('./pages/MCPServerDetailPage').then((m) => ({ default: m.MCPServerDetailPage }))\n);\n\n// Lazy loaded pages - A2A Registry\nconst A2ARegistryPage = lazy(() =>\n import('./pages/A2ARegistryPage').then((m) => ({ default: m.A2ARegistryPage }))\n);\nconst A2AAgentDetailPage = lazy(() =>\n import('./pages/A2AAgentDetailPage').then((m) => ({ default: m.A2AAgentDetailPage }))\n);\n\n// Lazy loaded pages - Channels\nconst ChannelsPage = lazy(() =>\n import('./pages/ChannelsPage').then((m) => ({ default: m.ChannelsPage }))\n);\nconst ChannelDetailPage = lazy(() =>\n import('./pages/ChannelDetailPage').then((m) => ({ default: m.ChannelDetailPage }))\n);\nconst ChannelRoutesPage = lazy(() =>\n import('./pages/ChannelRoutesPage').then((m) => ({ default: m.ChannelRoutesPage }))\n);\n\n// Lazy loaded pages - Policies\nconst PoliciesPage = lazy(() =>\n import('./pages/PoliciesPage').then((m) => ({ default: m.PoliciesPage }))\n);\nconst PolicyDetailPage = lazy(() =>\n import('./pages/PolicyDetailPage').then((m) => ({ default: m.PolicyDetailPage }))\n);\n\n// Lazy loaded pages - Skills\nconst SkillsPage = lazy(() =>\n import('./pages/SkillsPage').then((m) => ({ default: m.SkillsPage }))\n);\nconst SkillDetailPage = lazy(() =>\n import('./pages/SkillDetailPage').then((m) => ({ default: m.SkillDetailPage }))\n);\n\n// Lazy loaded pages - Prompt Templates\nconst PromptTemplatesPage = lazy(() =>\n import('./pages/PromptTemplatesPage').then((m) => ({ default: m.PromptTemplatesPage }))\n);\nconst PromptTemplateDetailPage = lazy(() =>\n import('./pages/PromptTemplateDetailPage').then((m) => ({ default: m.PromptTemplateDetailPage }))\n);\nconst PromptStudioPage = lazy(() =>\n import('./pages/PromptStudioPage').then((m) => ({ default: m.PromptStudioPage }))\n);\n\n// Lazy loaded pages - Executions\nconst ExecutionsPage = lazy(() =>\n import('./pages/ExecutionsPage').then((m) => ({ default: m.ExecutionsPage }))\n);\nconst ExecutionDetailPage = lazy(() =>\n import('./pages/ExecutionDetailPage').then((m) => ({ default: m.ExecutionDetailPage }))\n);\n\n// Lazy loaded pages - AI Operations (supervisor decision feed, BOFF-3839)\nconst AiOperationsPage = lazy(() =>\n import('./pages/AiOperationsPage').then((m) => ({ default: m.AiOperationsPage }))\n);\n\n// Lazy loaded pages - Buckets\nconst BucketsPage = lazy(() =>\n import('./pages/BucketsPage').then((m) => ({ default: m.BucketsPage }))\n);\n\n// Lazy loaded pages - Store\nconst StorePage = lazy(() => import('./pages/StorePage').then((m) => ({ default: m.StorePage })));\nconst StorePackageDetailPage = lazy(() =>\n import('./pages/StorePackageDetailPage').then((m) => ({ default: m.StorePackageDetailPage }))\n);\nconst InstalledPackagesPage = lazy(() =>\n import('./pages/InstalledPackagesPage').then((m) => ({ default: m.InstalledPackagesPage }))\n);\n\n// Lazy loaded pages - Settings & Chat\nconst SettingsPage = lazy(() =>\n import('./pages/SettingsPage').then((m) => ({ default: m.SettingsPage }))\n);\nconst ChatPage = lazy(() => import('./pages/ChatPage').then((m) => ({ default: m.ChatPage })));\n\n// Loading fallback — the same skeleton `BotmanorRoot` paints while its\n// implementation chunk resolves, so the content region never switches loading\n// idioms (and never goes empty) between first paint and the page rendering.\n\nexport const BotlitRoutes: FC = () => {\n const { basePath, isStandalone } = useBotlit();\n const location = useLocation();\n const t = useTr();\n\n /**\n * Create, edit and chat routes are reachable by URL, so they are gated here\n * as well as at the buttons that link to them: a member without the\n * permission gets a clear \"no access\" state instead of a form the gateway\n * would refuse to save.\n */\n const gated = (\n permission: BotmanorPermission,\n title: string,\n backTo: string,\n backLabel: string,\n element: ReactElement\n ): ReactElement => (\n <RequirePermission permission={permission} title={title} backTo={backTo} backLabel={backLabel}>\n {element}\n </RequirePermission>\n );\n const back = t('permissions.required.back', 'Go back');\n\n // Normalize base path\n const normalizedBasePath = basePath === '/' ? '' : basePath.replace(/\\/$/, '');\n\n // Guard: Only render if path matches basePath (when integrated)\n if (normalizedBasePath && !isStandalone) {\n const pathMatches =\n location.pathname === normalizedBasePath ||\n location.pathname.startsWith(normalizedBasePath + '/');\n\n if (!pathMatches) {\n return null;\n }\n }\n\n return (\n <div className=\"flex flex-col min-h-full bg-bg-surface\">\n <Suspense fallback={<RouteLoader />}>\n <Routes>\n {/* Dashboard - Eager loaded */}\n <Route index element={<DashboardPage />} />\n <Route path=\"home\" element={<Navigate to=\"/\" replace />} />\n\n {/* Bots */}\n <Route path=\"bots\" element={<BotsListPage />} />\n <Route\n path=\"bots/new\"\n element={gated(\n BOTMANOR_PERMISSIONS.APP_CREATE,\n t('botlit.botsList.actions.createBot', 'Create Bot'),\n 'bots',\n back,\n <BotDetailPage isNew />\n )}\n />\n <Route path=\"bots/:botId\" element={<BotDetailPage />} />\n <Route\n path=\"bots/:botId/edit\"\n element={gated(\n BOTMANOR_PERMISSIONS.APP_UPDATE,\n t('botlit.botsList.menu.editBot', 'Edit Bot'),\n 'bots',\n back,\n <BotDetailPage isEditing />\n )}\n />\n <Route path=\"bots/:botId/agents\" element={<AgentsListPage />} />\n <Route\n path=\"bots/:botId/agents/new\"\n element={gated(\n BOTMANOR_PERMISSIONS.AGENT_CREATE,\n t('botlit.agentsList.actions.createAgent', 'Create Agent'),\n 'agents',\n back,\n <AgentBuilderPage />\n )}\n />\n <Route path=\"bots/:botId/agents/:agentId\" element={<AgentDetailPage />} />\n <Route\n path=\"bots/:botId/agents/:agentId/edit\"\n element={gated(\n BOTMANOR_PERMISSIONS.AGENT_UPDATE,\n t('botlit.agentsList.menu.editAgent', 'Edit Agent'),\n 'agents',\n back,\n <AgentBuilderPage />\n )}\n />\n <Route path=\"bots/:botId/knowledge\" element={<KnowledgeBasesPage />} />\n <Route path=\"bots/:botId/knowledge/:kbId\" element={<KnowledgeBaseDetailPage />} />\n\n {/* Agents (global view) */}\n <Route path=\"agents\" element={<AgentsListPage />} />\n <Route\n path=\"agents/new\"\n element={gated(\n BOTMANOR_PERMISSIONS.AGENT_CREATE,\n t('botlit.agentsList.actions.createAgent', 'Create Agent'),\n 'agents',\n back,\n <AgentBuilderPage />\n )}\n />\n <Route path=\"agents/approvals\" element={<AgentApprovalsPage />} />\n <Route path=\"agents/:agentId\" element={<AgentDetailPage />} />\n <Route\n path=\"agents/:agentId/edit\"\n element={gated(\n BOTMANOR_PERMISSIONS.AGENT_UPDATE,\n t('botlit.agentsList.menu.editAgent', 'Edit Agent'),\n 'agents',\n back,\n <AgentBuilderPage />\n )}\n />\n <Route\n path=\"agents/:agentId/chat\"\n element={gated(\n BOTMANOR_PERMISSIONS.AGENT_EXECUTE,\n t('botlit.chat.title', 'AI Chat'),\n 'agents',\n back,\n <ChatPage />\n )}\n />\n\n {/* Conversations - Redirect to conversations microfe */}\n <Route path=\"conversations\" element={<Navigate to=\"/conversations\" replace />} />\n <Route\n path=\"conversations/:conversationId\"\n element={<Navigate to=\"/conversations\" replace />}\n />\n\n {/* Knowledge Bases */}\n <Route path=\"knowledge\" element={<KnowledgeBasesPage />} />\n <Route\n path=\"knowledge/new\"\n element={gated(\n BOTMANOR_PERMISSIONS.KNOWLEDGE_CREATE,\n t('botlit.knowledge.actions.create', 'Create Knowledge Base'),\n 'knowledge',\n back,\n <KnowledgeBaseDetailPage isNew />\n )}\n />\n <Route path=\"knowledge/:kbId\" element={<KnowledgeBaseDetailPage />} />\n\n {/* Retrieval Profiles */}\n <Route path=\"retrieval-profiles\" element={<RetrievalProfilesPage />} />\n <Route\n path=\"retrieval-profiles/new\"\n element={gated(\n BOTMANOR_PERMISSIONS.RETRIEVAL_PROFILE_CREATE,\n t('botlit.retrievalProfiles.actions.create', 'Create Retrieval Profile'),\n 'retrieval-profiles',\n back,\n <RetrievalProfileDetailPage isNew />\n )}\n />\n <Route path=\"retrieval-profiles/:profileId\" element={<RetrievalProfileDetailPage />} />\n\n {/* MCP Servers */}\n <Route path=\"mcp\" element={<MCPServersPage />} />\n <Route\n path=\"mcp/new\"\n element={gated(\n BOTMANOR_PERMISSIONS.MCP_CREATE,\n t('botlit.mcpServers.actions.add', 'Add MCP Server'),\n 'mcp',\n back,\n <MCPServerDetailPage isNew />\n )}\n />\n <Route path=\"mcp/:serverId\" element={<MCPServerDetailPage />} />\n\n {/* A2A Registry */}\n <Route path=\"a2a\" element={<A2ARegistryPage />} />\n <Route\n path=\"a2a/register\"\n element={gated(\n BOTMANOR_PERMISSIONS.A2A_REGISTRY_CREATE,\n t('botlit.a2aRegistry.actions.registerAgent', 'Register Agent'),\n 'a2a',\n back,\n <A2AAgentDetailPage isNew />\n )}\n />\n <Route path=\"a2a/:agentId\" element={<A2AAgentDetailPage />} />\n\n {/* Channels */}\n <Route path=\"channels\" element={<ChannelsPage />} />\n <Route\n path=\"channels/new\"\n element={gated(\n BOTMANOR_PERMISSIONS.CHANNEL_CREATE,\n t('botlit.channels.actions.addChannel', 'Add Channel'),\n 'channels',\n back,\n <ChannelDetailPage isNew />\n )}\n />\n <Route path=\"channels/routes\" element={<ChannelRoutesPage />} />\n <Route path=\"channels/:connectorId\" element={<ChannelDetailPage />} />\n\n {/* Policies & Guardrails */}\n <Route path=\"policies\" element={<PoliciesPage />} />\n <Route\n path=\"policies/new\"\n element={gated(\n BOTMANOR_PERMISSIONS.POLICY_CREATE,\n t('botlit.policies.actions.createPolicy', 'Create Policy'),\n 'policies',\n back,\n <PolicyDetailPage isNew />\n )}\n />\n <Route path=\"policies/:policyId\" element={<PolicyDetailPage />} />\n\n {/* Skills */}\n <Route path=\"skills\" element={<SkillsPage />} />\n <Route\n path=\"skills/new\"\n element={gated(\n BOTMANOR_PERMISSIONS.SKILL_CREATE,\n t('botlit.skills.actions.create', 'Create Skill'),\n 'skills',\n back,\n <SkillDetailPage isNew />\n )}\n />\n <Route path=\"skills/:skillId\" element={<SkillDetailPage />} />\n\n {/* Prompt Templates */}\n <Route path=\"prompt-templates\" element={<PromptTemplatesPage />} />\n <Route\n path=\"prompt-templates/new\"\n element={gated(\n BOTMANOR_PERMISSIONS.PROMPT_TEMPLATE_CREATE,\n t('botlit.promptTemplates.actions.create', 'Create Template'),\n 'prompt-templates',\n back,\n <PromptTemplateDetailPage isNew />\n )}\n />\n <Route path=\"prompt-templates/:templateId\" element={<PromptTemplateDetailPage />} />\n\n {/* Prompt Studio (legacy) */}\n <Route path=\"prompts\" element={<PromptStudioPage />} />\n\n {/* Executions */}\n <Route path=\"executions\" element={<ExecutionsPage />} />\n <Route path=\"ai\" element={<AiOperationsPage />} />\n <Route path=\"executions/:executionId\" element={<ExecutionDetailPage />} />\n\n {/* Buckets */}\n <Route path=\"buckets\" element={<BucketsPage />} />\n <Route path=\"buckets/new\" element={<BucketsPage />} />\n <Route path=\"buckets/:bucketId\" element={<BucketsPage />} />\n\n {/* Store */}\n <Route path=\"store\" element={<StorePage />} />\n <Route path=\"store/installed\" element={<InstalledPackagesPage />} />\n <Route path=\"store/package/:slug\" element={<StorePackageDetailPage />} />\n\n {/* Chat */}\n <Route\n path=\"chat\"\n element={gated(\n BOTMANOR_PERMISSIONS.AGENT_EXECUTE,\n t('botlit.chat.title', 'AI Chat'),\n 'agents',\n back,\n <ChatPage />\n )}\n />\n <Route\n path=\"chat/:agentId\"\n element={gated(\n BOTMANOR_PERMISSIONS.AGENT_EXECUTE,\n t('botlit.chat.title', 'AI Chat'),\n 'agents',\n back,\n <ChatPage />\n )}\n />\n\n {/* Settings */}\n <Route path=\"settings\" element={<SettingsPage />} />\n\n {/* Workflow routes are owned by the shared app-shell WorkflowsRoot. */}\n <Route\n path=\"list\"\n element={<Navigate to={`${normalizedBasePath}/workflows/list`} replace />}\n />\n\n {/* Fallback */}\n <Route path=\"*\" element={<Navigate to=\"/\" replace />} />\n </Routes>\n </Suspense>\n </div>\n );\n};\n"],"mappings":";;;;;;;;;;;AAgBA,IAAMA,IAAeC,QACnB,OAAO,0BAAuB,CAAC,MAAM,OAAO,EAAE,SAASC,EAAE,aAAa,EAAE,CAC1E,GACMC,IAAgBF,QACpB,OAAO,2BAAwB,CAAC,MAAM,OAAO,EAAE,SAASC,EAAE,cAAc,EAAE,CAC5E,GAGME,IAAiBH,QACrB,OAAO,4BAAyB,CAAC,MAAM,OAAO,EAAE,SAASC,EAAE,eAAe,EAAE,CAC9E,GACMG,IAAqBJ,QACzB,OAAO,gCAA6B,CAAC,MAAM,OAAO,EAAE,SAASC,EAAE,mBAAmB,EAAE,CACtF,GACMI,IAAkBL,QACtB,OAAO,6BAA0B,CAAC,MAAM,OAAO,EAAE,SAASC,EAAE,gBAAgB,EAAE,CAChF,GACMK,IAAmBN,QACvB,OAAO,8BAA2B,CAAC,MAAM,OAAO,EAAE,SAASC,EAAE,iBAAiB,EAAE,CAClF,GAGMM,IAAqBP,QACzB,OAAO,gCAA6B,CAAC,MAAM,OAAO,EAAE,SAASC,EAAE,mBAAmB,EAAE,CACtF,GACMO,IAA0BR,QAC9B,OAAO,qCAAkC,CAAC,MAAM,OAAO,EAAE,SAASC,EAAE,wBAAwB,EAAE,CAChG,GAGMQ,IAAwBT,QAC5B,OAAO,mCAAgC,CAAC,MAAM,OAAO,EAAE,SAASC,EAAE,sBAAsB,EAAE,CAC5F,GACMS,IAA6BV,QACjC,OAAO,wCAAqC,CAAC,MAAM,OAAO,EACxD,SAASC,EAAE,2BACb,EAAE,CACJ,GAGMU,IAAiBX,QACrB,OAAO,4BAAyB,CAAC,MAAM,OAAO,EAAE,SAASC,EAAE,eAAe,EAAE,CAC9E,GACMW,IAAsBZ,QAC1B,OAAO,iCAA8B,CAAC,MAAM,OAAO,EAAE,SAASC,EAAE,oBAAoB,EAAE,CACxF,GAGMY,IAAkBb,QACtB,OAAO,6BAA0B,CAAC,MAAM,OAAO,EAAE,SAASC,EAAE,gBAAgB,EAAE,CAChF,GACMa,IAAqBd,QACzB,OAAO,gCAA6B,CAAC,MAAM,OAAO,EAAE,SAASC,EAAE,mBAAmB,EAAE,CACtF,GAGMc,IAAef,QACnB,OAAO,0BAAuB,CAAC,MAAM,OAAO,EAAE,SAASC,EAAE,aAAa,EAAE,CAC1E,GACMe,IAAoBhB,QACxB,OAAO,+BAA4B,CAAC,MAAM,OAAO,EAAE,SAASC,EAAE,kBAAkB,EAAE,CACpF,GACMgB,IAAoBjB,QACxB,OAAO,+BAA4B,CAAC,MAAM,OAAO,EAAE,SAASC,EAAE,kBAAkB,EAAE,CACpF,GAGMiB,IAAelB,QACnB,OAAO,0BAAuB,CAAC,MAAM,OAAO,EAAE,SAASC,EAAE,aAAa,EAAE,CAC1E,GACMkB,IAAmBnB,QACvB,OAAO,8BAA2B,CAAC,MAAM,OAAO,EAAE,SAASC,EAAE,iBAAiB,EAAE,CAClF,GAGMmB,IAAapB,QACjB,OAAO,wBAAqB,CAAC,MAAM,OAAO,EAAE,SAASC,EAAE,WAAW,EAAE,CACtE,GACMoB,IAAkBrB,QACtB,OAAO,6BAA0B,CAAC,MAAM,OAAO,EAAE,SAASC,EAAE,gBAAgB,EAAE,CAChF,GAGMqB,IAAsBtB,QAC1B,OAAO,iCAA8B,CAAC,MAAM,OAAO,EAAE,SAASC,EAAE,oBAAoB,EAAE,CACxF,GACMsB,IAA2BvB,QAC/B,OAAO,sCAAmC,CAAC,MAAM,OAAO,EAAE,SAASC,EAAE,yBAAyB,EAAE,CAClG,GACMuB,IAAmBxB,QACvB,OAAO,8BAA2B,CAAC,MAAM,OAAO,EAAE,SAASC,EAAE,iBAAiB,EAAE,CAClF,GAGMwB,IAAiBzB,QACrB,OAAO,4BAAyB,CAAC,MAAM,OAAO,EAAE,SAASC,EAAE,eAAe,EAAE,CAC9E,GACMyB,IAAsB1B,QAC1B,OAAO,iCAA8B,CAAC,MAAM,OAAO,EAAE,SAASC,EAAE,oBAAoB,EAAE,CACxF,GAGM0B,IAAmB3B,QACvB,OAAO,8BAA2B,CAAC,MAAM,OAAO,EAAE,SAASC,EAAE,iBAAiB,EAAE,CAClF,GAGM2B,IAAc5B,QAClB,OAAO,yBAAsB,CAAC,MAAM,OAAO,EAAE,SAASC,EAAE,YAAY,EAAE,CACxE,GAGM4B,IAAY7B,QAAW,OAAO,uBAAoB,CAAC,MAAM,OAAO,EAAE,SAASC,EAAE,UAAU,EAAE,CAAC,GAC1F6B,IAAyB9B,QAC7B,OAAO,oCAAiC,CAAC,MAAM,OAAO,EAAE,SAASC,EAAE,uBAAuB,EAAE,CAC9F,GACM8B,IAAwB/B,QAC5B,OAAO,mCAAgC,CAAC,MAAM,OAAO,EAAE,SAASC,EAAE,sBAAsB,EAAE,CAC5F,GAGM+B,IAAehC,QACnB,OAAO,0BAAuB,CAAC,MAAM,OAAO,EAAE,SAASC,EAAE,aAAa,EAAE,CAC1E,GACMgC,IAAWjC,QAAW,OAAO,sBAAmB,CAAC,MAAM,OAAO,EAAE,SAASC,EAAE,SAAS,EAAE,CAAC,GAMhFiC,UAAyB;CACpC,IAAM,EAAE,aAAU,oBAAiBC,EAAU,GACvCC,IAAWC,EAAY,GACvBC,IAAIC,EAAM,GAQVC,KACJ,GACA,GACA,GACA,GACA,MAEA,kBAACC,GAAD;EAA+B;EAAmB;EAAe;EAAmB;EACjF,UAAAC;CACgB,CAAA,GAEfC,IAAOL,EAAE,6BAA6B,SAAS,GAG/CM,IAAqBC,MAAa,MAAM,KAAKA,EAAS,QAAQ,OAAO,EAAE;CAa7E,OAVID,KAAsB,CAACE,KAKrB,EAHFV,EAAS,aAAaQ,KACtBR,EAAS,SAAS,WAAWQ,IAAqB,GAAG,KAG9C,OAKT,kBAAC,OAAD;EAAK,WAAU;EACb,UAAA,kBAACG,GAAD;GAAU,UAAU,kBAACC,GAAD,CAAc,CAAA;GAChC,UAAA,kBAACC,GAAD,EAAA,UAAA;IAEE,kBAACC,GAAD;KAAO,OAAA;KAAM,SAAS,kBAACC,GAAD,CAAgB,CAAA;IAAI,CAAA;IAC1C,kBAACD,GAAD;KAAO,MAAK;KAAO,SAAS,kBAACE,GAAD;MAAU,IAAG;MAAI,SAAA;KAAS,CAAA;IAAI,CAAA;IAG1D,kBAACF,GAAD;KAAO,MAAK;KAAO,SAAS,kBAACnD,GAAD,CAAe,CAAA;IAAI,CAAA;IAC/C,kBAACmD,GAAD;KACE,MAAK;KACL,SAASV,EACPa,EAAqB,YACrBf,EAAE,qCAAqC,YAAY,GACnD,QACAK,GACA,kBAACzC,GAAD,EAAe,OAAA,GAAO,CAAA,CACxB;IACD,CAAA;IACD,kBAACgD,GAAD;KAAO,MAAK;KAAc,SAAS,kBAAChD,GAAD,CAAgB,CAAA;IAAI,CAAA;IACvD,kBAACgD,GAAD;KACE,MAAK;KACL,SAASV,EACPa,EAAqB,YACrBf,EAAE,gCAAgC,UAAU,GAC5C,QACAK,GACA,kBAACzC,GAAD,EAAe,WAAA,GAAW,CAAA,CAC5B;IACD,CAAA;IACD,kBAACgD,GAAD;KAAO,MAAK;KAAqB,SAAS,kBAAC/C,GAAD,CAAiB,CAAA;IAAI,CAAA;IAC/D,kBAAC+C,GAAD;KACE,MAAK;KACL,SAASV,EACPa,EAAqB,cACrBf,EAAE,yCAAyC,cAAc,GACzD,UACAK,GACA,kBAACrC,GAAD,CAAmB,CAAA,CACrB;IACD,CAAA;IACD,kBAAC4C,GAAD;KAAO,MAAK;KAA8B,SAAS,kBAAC7C,GAAD,CAAkB,CAAA;IAAI,CAAA;IACzE,kBAAC6C,GAAD;KACE,MAAK;KACL,SAASV,EACPa,EAAqB,cACrBf,EAAE,oCAAoC,YAAY,GAClD,UACAK,GACA,kBAACrC,GAAD,CAAmB,CAAA,CACrB;IACD,CAAA;IACD,kBAAC4C,GAAD;KAAO,MAAK;KAAwB,SAAS,kBAAC3C,GAAD,CAAqB,CAAA;IAAI,CAAA;IACtE,kBAAC2C,GAAD;KAAO,MAAK;KAA8B,SAAS,kBAAC1C,GAAD,CAA0B,CAAA;IAAI,CAAA;IAGjF,kBAAC0C,GAAD;KAAO,MAAK;KAAS,SAAS,kBAAC/C,GAAD,CAAiB,CAAA;IAAI,CAAA;IACnD,kBAAC+C,GAAD;KACE,MAAK;KACL,SAASV,EACPa,EAAqB,cACrBf,EAAE,yCAAyC,cAAc,GACzD,UACAK,GACA,kBAACrC,GAAD,CAAmB,CAAA,CACrB;IACD,CAAA;IACD,kBAAC4C,GAAD;KAAO,MAAK;KAAmB,SAAS,kBAAC9C,GAAD,CAAqB,CAAA;IAAI,CAAA;IACjE,kBAAC8C,GAAD;KAAO,MAAK;KAAkB,SAAS,kBAAC7C,GAAD,CAAkB,CAAA;IAAI,CAAA;IAC7D,kBAAC6C,GAAD;KACE,MAAK;KACL,SAASV,EACPa,EAAqB,cACrBf,EAAE,oCAAoC,YAAY,GAClD,UACAK,GACA,kBAACrC,GAAD,CAAmB,CAAA,CACrB;IACD,CAAA;IACD,kBAAC4C,GAAD;KACE,MAAK;KACL,SAASV,EACPa,EAAqB,eACrBf,EAAE,qBAAqB,SAAS,GAChC,UACAK,GACA,kBAACV,GAAD,CAAW,CAAA,CACb;IACD,CAAA;IAGD,kBAACiB,GAAD;KAAO,MAAK;KAAgB,SAAS,kBAACE,GAAD;MAAU,IAAG;MAAiB,SAAA;KAAS,CAAA;IAAI,CAAA;IAChF,kBAACF,GAAD;KACE,MAAK;KACL,SAAS,kBAACE,GAAD;MAAU,IAAG;MAAiB,SAAA;KAAS,CAAA;IACjD,CAAA;IAGD,kBAACF,GAAD;KAAO,MAAK;KAAY,SAAS,kBAAC3C,GAAD,CAAqB,CAAA;IAAI,CAAA;IAC1D,kBAAC2C,GAAD;KACE,MAAK;KACL,SAASV,EACPa,EAAqB,kBACrBf,EAAE,mCAAmC,uBAAuB,GAC5D,aACAK,GACA,kBAACnC,GAAD,EAAyB,OAAA,GAAO,CAAA,CAClC;IACD,CAAA;IACD,kBAAC0C,GAAD;KAAO,MAAK;KAAkB,SAAS,kBAAC1C,GAAD,CAA0B,CAAA;IAAI,CAAA;IAGrE,kBAAC0C,GAAD;KAAO,MAAK;KAAqB,SAAS,kBAACzC,GAAD,CAAwB,CAAA;IAAI,CAAA;IACtE,kBAACyC,GAAD;KACE,MAAK;KACL,SAASV,EACPa,EAAqB,0BACrBf,EAAE,2CAA2C,0BAA0B,GACvE,sBACAK,GACA,kBAACjC,GAAD,EAA4B,OAAA,GAAO,CAAA,CACrC;IACD,CAAA;IACD,kBAACwC,GAAD;KAAO,MAAK;KAAgC,SAAS,kBAACxC,GAAD,CAA6B,CAAA;IAAI,CAAA;IAGtF,kBAACwC,GAAD;KAAO,MAAK;KAAM,SAAS,kBAACvC,GAAD,CAAiB,CAAA;IAAI,CAAA;IAChD,kBAACuC,GAAD;KACE,MAAK;KACL,SAASV,EACPa,EAAqB,YACrBf,EAAE,iCAAiC,gBAAgB,GACnD,OACAK,GACA,kBAAC/B,GAAD,EAAqB,OAAA,GAAO,CAAA,CAC9B;IACD,CAAA;IACD,kBAACsC,GAAD;KAAO,MAAK;KAAgB,SAAS,kBAACtC,GAAD,CAAsB,CAAA;IAAI,CAAA;IAG/D,kBAACsC,GAAD;KAAO,MAAK;KAAM,SAAS,kBAACrC,GAAD,CAAkB,CAAA;IAAI,CAAA;IACjD,kBAACqC,GAAD;KACE,MAAK;KACL,SAASV,EACPa,EAAqB,qBACrBf,EAAE,4CAA4C,gBAAgB,GAC9D,OACAK,GACA,kBAAC7B,GAAD,EAAoB,OAAA,GAAO,CAAA,CAC7B;IACD,CAAA;IACD,kBAACoC,GAAD;KAAO,MAAK;KAAe,SAAS,kBAACpC,GAAD,CAAqB,CAAA;IAAI,CAAA;IAG7D,kBAACoC,GAAD;KAAO,MAAK;KAAW,SAAS,kBAACnC,GAAD,CAAe,CAAA;IAAI,CAAA;IACnD,kBAACmC,GAAD;KACE,MAAK;KACL,SAASV,EACPa,EAAqB,gBACrBf,EAAE,sCAAsC,aAAa,GACrD,YACAK,GACA,kBAAC3B,GAAD,EAAmB,OAAA,GAAO,CAAA,CAC5B;IACD,CAAA;IACD,kBAACkC,GAAD;KAAO,MAAK;KAAkB,SAAS,kBAACjC,GAAD,CAAoB,CAAA;IAAI,CAAA;IAC/D,kBAACiC,GAAD;KAAO,MAAK;KAAwB,SAAS,kBAAClC,GAAD,CAAoB,CAAA;IAAI,CAAA;IAGrE,kBAACkC,GAAD;KAAO,MAAK;KAAW,SAAS,kBAAChC,GAAD,CAAe,CAAA;IAAI,CAAA;IACnD,kBAACgC,GAAD;KACE,MAAK;KACL,SAASV,EACPa,EAAqB,eACrBf,EAAE,wCAAwC,eAAe,GACzD,YACAK,GACA,kBAACxB,GAAD,EAAkB,OAAA,GAAO,CAAA,CAC3B;IACD,CAAA;IACD,kBAAC+B,GAAD;KAAO,MAAK;KAAqB,SAAS,kBAAC/B,GAAD,CAAmB,CAAA;IAAI,CAAA;IAGjE,kBAAC+B,GAAD;KAAO,MAAK;KAAS,SAAS,kBAAC9B,GAAD,CAAa,CAAA;IAAI,CAAA;IAC/C,kBAAC8B,GAAD;KACE,MAAK;KACL,SAASV,EACPa,EAAqB,cACrBf,EAAE,gCAAgC,cAAc,GAChD,UACAK,GACA,kBAACtB,GAAD,EAAiB,OAAA,GAAO,CAAA,CAC1B;IACD,CAAA;IACD,kBAAC6B,GAAD;KAAO,MAAK;KAAkB,SAAS,kBAAC7B,GAAD,CAAkB,CAAA;IAAI,CAAA;IAG7D,kBAAC6B,GAAD;KAAO,MAAK;KAAmB,SAAS,kBAAC5B,GAAD,CAAsB,CAAA;IAAI,CAAA;IAClE,kBAAC4B,GAAD;KACE,MAAK;KACL,SAASV,EACPa,EAAqB,wBACrBf,EAAE,yCAAyC,iBAAiB,GAC5D,oBACAK,GACA,kBAACpB,GAAD,EAA0B,OAAA,GAAO,CAAA,CACnC;IACD,CAAA;IACD,kBAAC2B,GAAD;KAAO,MAAK;KAA+B,SAAS,kBAAC3B,GAAD,CAA2B,CAAA;IAAI,CAAA;IAGnF,kBAAC2B,GAAD;KAAO,MAAK;KAAU,SAAS,kBAAC1B,GAAD,CAAmB,CAAA;IAAI,CAAA;IAGtD,kBAAC0B,GAAD;KAAO,MAAK;KAAa,SAAS,kBAACzB,GAAD,CAAiB,CAAA;IAAI,CAAA;IACvD,kBAACyB,GAAD;KAAO,MAAK;KAAK,SAAS,kBAACvB,GAAD,CAAmB,CAAA;IAAI,CAAA;IACjD,kBAACuB,GAAD;KAAO,MAAK;KAA0B,SAAS,kBAACxB,GAAD,CAAsB,CAAA;IAAI,CAAA;IAGzE,kBAACwB,GAAD;KAAO,MAAK;KAAU,SAAS,kBAACtB,GAAD,CAAc,CAAA;IAAI,CAAA;IACjD,kBAACsB,GAAD;KAAO,MAAK;KAAc,SAAS,kBAACtB,GAAD,CAAc,CAAA;IAAI,CAAA;IACrD,kBAACsB,GAAD;KAAO,MAAK;KAAoB,SAAS,kBAACtB,GAAD,CAAc,CAAA;IAAI,CAAA;IAG3D,kBAACsB,GAAD;KAAO,MAAK;KAAQ,SAAS,kBAACrB,GAAD,CAAY,CAAA;IAAI,CAAA;IAC7C,kBAACqB,GAAD;KAAO,MAAK;KAAkB,SAAS,kBAACnB,GAAD,CAAwB,CAAA;IAAI,CAAA;IACnE,kBAACmB,GAAD;KAAO,MAAK;KAAsB,SAAS,kBAACpB,GAAD,CAAyB,CAAA;IAAI,CAAA;IAGxE,kBAACoB,GAAD;KACE,MAAK;KACL,SAASV,EACPa,EAAqB,eACrBf,EAAE,qBAAqB,SAAS,GAChC,UACAK,GACA,kBAACV,GAAD,CAAW,CAAA,CACb;IACD,CAAA;IACD,kBAACiB,GAAD;KACE,MAAK;KACL,SAASV,EACPa,EAAqB,eACrBf,EAAE,qBAAqB,SAAS,GAChC,UACAK,GACA,kBAACV,GAAD,CAAW,CAAA,CACb;IACD,CAAA;IAGD,kBAACiB,GAAD;KAAO,MAAK;KAAW,SAAS,kBAAClB,GAAD,CAAe,CAAA;IAAI,CAAA;IAGnD,kBAACkB,GAAD;KACE,MAAK;KACL,SAAS,kBAACE,GAAD;MAAU,IAAI,GAAGR,EAAmB;MAAkB,SAAA;KAAS,CAAA;IACzE,CAAA;IAGD,kBAACM,GAAD;KAAO,MAAK;KAAI,SAAS,kBAACE,GAAD;MAAU,IAAG;MAAI,SAAA;KAAS,CAAA;IAAI,CAAA;GACjD,EAAA,CAAA;EACA,CAAA;CACP,CAAA;AAET"}
|
|
1
|
+
{"version":3,"file":"BotlitRoutes.js","names":["BotsListPage","lazy","m","BotDetailPage","AgentsListPage","AgentApprovalsPage","AgentDetailPage","AgentBuilderPage","KnowledgeBasesPage","KnowledgeBaseDetailPage","RetrievalProfilesPage","RetrievalProfileDetailPage","MCPServersPage","MCPServerDetailPage","A2ARegistryPage","A2AAgentDetailPage","ChannelsPage","ChannelDetailPage","ChannelRoutesPage","PoliciesPage","PolicyDetailPage","SkillsPage","SkillDetailPage","PromptTemplatesPage","PromptTemplateDetailPage","PromptStudioPage","ExecutionsPage","ExecutionDetailPage","AiOperationsPage","BucketsPage","BucketDetailPage","StorePage","StorePackageDetailPage","InstalledPackagesPage","SettingsPage","ChatPage","BotlitRoutes","useBotlit","location","useLocation","t","useTr","gated","RequirePermission","element","back","normalizedBasePath","basePath","isStandalone","Suspense","RouteLoader","Routes","Route","DashboardPage","Navigate","BOTMANOR_PERMISSIONS"],"sources":["../../src/botlit/BotlitRoutes.tsx"],"sourcesContent":["/**\n * BotManor Routes\n * @module botlit\n */\n\nimport { type FC, type ReactElement, lazy, Suspense } from 'react';\nimport { Routes, Route, Navigate, useLocation } from 'react-router';\nimport { useBotlit } from './providers/BotlitProvider';\nimport { RouteLoader } from './components/RouteLoader';\nimport { BOTMANOR_PERMISSIONS, RequirePermission, type BotmanorPermission } from './permissions';\nimport { useTr } from '../shared/hooks/useTr';\n\n// Eager load - Dashboard (primary landing page)\nimport { DashboardPage } from './pages/DashboardPage';\n\n// Lazy loaded pages - Bots\nconst BotsListPage = lazy(() =>\n import('./pages/BotsListPage').then((m) => ({ default: m.BotsListPage }))\n);\nconst BotDetailPage = lazy(() =>\n import('./pages/BotDetailPage').then((m) => ({ default: m.BotDetailPage }))\n);\n\n// Lazy loaded pages - Agents\nconst AgentsListPage = lazy(() =>\n import('./pages/AgentsListPage').then((m) => ({ default: m.AgentsListPage }))\n);\nconst AgentApprovalsPage = lazy(() =>\n import('./pages/AgentApprovalsPage').then((m) => ({ default: m.AgentApprovalsPage }))\n);\nconst AgentDetailPage = lazy(() =>\n import('./pages/AgentDetailPage').then((m) => ({ default: m.AgentDetailPage }))\n);\nconst AgentBuilderPage = lazy(() =>\n import('./pages/AgentBuilderPage').then((m) => ({ default: m.AgentBuilderPage }))\n);\n\n// Lazy loaded pages - Knowledge Bases\nconst KnowledgeBasesPage = lazy(() =>\n import('./pages/KnowledgeBasesPage').then((m) => ({ default: m.KnowledgeBasesPage }))\n);\nconst KnowledgeBaseDetailPage = lazy(() =>\n import('./pages/KnowledgeBaseDetailPage').then((m) => ({ default: m.KnowledgeBaseDetailPage }))\n);\n\n// Lazy loaded pages - Retrieval Profiles\nconst RetrievalProfilesPage = lazy(() =>\n import('./pages/RetrievalProfilesPage').then((m) => ({ default: m.RetrievalProfilesPage }))\n);\nconst RetrievalProfileDetailPage = lazy(() =>\n import('./pages/RetrievalProfileDetailPage').then((m) => ({\n default: m.RetrievalProfileDetailPage,\n }))\n);\n\n// Lazy loaded pages - MCP Servers\nconst MCPServersPage = lazy(() =>\n import('./pages/MCPServersPage').then((m) => ({ default: m.MCPServersPage }))\n);\nconst MCPServerDetailPage = lazy(() =>\n import('./pages/MCPServerDetailPage').then((m) => ({ default: m.MCPServerDetailPage }))\n);\n\n// Lazy loaded pages - A2A Registry\nconst A2ARegistryPage = lazy(() =>\n import('./pages/A2ARegistryPage').then((m) => ({ default: m.A2ARegistryPage }))\n);\nconst A2AAgentDetailPage = lazy(() =>\n import('./pages/A2AAgentDetailPage').then((m) => ({ default: m.A2AAgentDetailPage }))\n);\n\n// Lazy loaded pages - Channels\nconst ChannelsPage = lazy(() =>\n import('./pages/ChannelsPage').then((m) => ({ default: m.ChannelsPage }))\n);\nconst ChannelDetailPage = lazy(() =>\n import('./pages/ChannelDetailPage').then((m) => ({ default: m.ChannelDetailPage }))\n);\nconst ChannelRoutesPage = lazy(() =>\n import('./pages/ChannelRoutesPage').then((m) => ({ default: m.ChannelRoutesPage }))\n);\n\n// Lazy loaded pages - Policies\nconst PoliciesPage = lazy(() =>\n import('./pages/PoliciesPage').then((m) => ({ default: m.PoliciesPage }))\n);\nconst PolicyDetailPage = lazy(() =>\n import('./pages/PolicyDetailPage').then((m) => ({ default: m.PolicyDetailPage }))\n);\n\n// Lazy loaded pages - Skills\nconst SkillsPage = lazy(() =>\n import('./pages/SkillsPage').then((m) => ({ default: m.SkillsPage }))\n);\nconst SkillDetailPage = lazy(() =>\n import('./pages/SkillDetailPage').then((m) => ({ default: m.SkillDetailPage }))\n);\n\n// Lazy loaded pages - Prompt Templates\nconst PromptTemplatesPage = lazy(() =>\n import('./pages/PromptTemplatesPage').then((m) => ({ default: m.PromptTemplatesPage }))\n);\nconst PromptTemplateDetailPage = lazy(() =>\n import('./pages/PromptTemplateDetailPage').then((m) => ({ default: m.PromptTemplateDetailPage }))\n);\nconst PromptStudioPage = lazy(() =>\n import('./pages/PromptStudioPage').then((m) => ({ default: m.PromptStudioPage }))\n);\n\n// Lazy loaded pages - Executions\nconst ExecutionsPage = lazy(() =>\n import('./pages/ExecutionsPage').then((m) => ({ default: m.ExecutionsPage }))\n);\nconst ExecutionDetailPage = lazy(() =>\n import('./pages/ExecutionDetailPage').then((m) => ({ default: m.ExecutionDetailPage }))\n);\n\n// Lazy loaded pages - AI Operations (supervisor decision feed, BOFF-3839)\nconst AiOperationsPage = lazy(() =>\n import('./pages/AiOperationsPage').then((m) => ({ default: m.AiOperationsPage }))\n);\n\n// Lazy loaded pages - Buckets\nconst BucketsPage = lazy(() =>\n import('./pages/BucketsPage').then((m) => ({ default: m.BucketsPage }))\n);\nconst BucketDetailPage = lazy(() =>\n import('./pages/BucketDetailPage').then((m) => ({ default: m.BucketDetailPage }))\n);\n\n// Lazy loaded pages - Store\nconst StorePage = lazy(() => import('./pages/StorePage').then((m) => ({ default: m.StorePage })));\nconst StorePackageDetailPage = lazy(() =>\n import('./pages/StorePackageDetailPage').then((m) => ({ default: m.StorePackageDetailPage }))\n);\nconst InstalledPackagesPage = lazy(() =>\n import('./pages/InstalledPackagesPage').then((m) => ({ default: m.InstalledPackagesPage }))\n);\n\n// Lazy loaded pages - Settings & Chat\nconst SettingsPage = lazy(() =>\n import('./pages/SettingsPage').then((m) => ({ default: m.SettingsPage }))\n);\nconst ChatPage = lazy(() => import('./pages/ChatPage').then((m) => ({ default: m.ChatPage })));\n\n// Loading fallback — the same skeleton `BotmanorRoot` paints while its\n// implementation chunk resolves, so the content region never switches loading\n// idioms (and never goes empty) between first paint and the page rendering.\n\nexport const BotlitRoutes: FC = () => {\n const { basePath, isStandalone } = useBotlit();\n const location = useLocation();\n const t = useTr();\n\n /**\n * Create, edit and chat routes are reachable by URL, so they are gated here\n * as well as at the buttons that link to them: a member without the\n * permission gets a clear \"no access\" state instead of a form the gateway\n * would refuse to save.\n */\n const gated = (\n permission: BotmanorPermission,\n title: string,\n backTo: string,\n backLabel: string,\n element: ReactElement\n ): ReactElement => (\n <RequirePermission permission={permission} title={title} backTo={backTo} backLabel={backLabel}>\n {element}\n </RequirePermission>\n );\n const back = t('permissions.required.back', 'Go back');\n\n // Normalize base path\n const normalizedBasePath = basePath === '/' ? '' : basePath.replace(/\\/$/, '');\n\n // Guard: Only render if path matches basePath (when integrated)\n if (normalizedBasePath && !isStandalone) {\n const pathMatches =\n location.pathname === normalizedBasePath ||\n location.pathname.startsWith(normalizedBasePath + '/');\n\n if (!pathMatches) {\n return null;\n }\n }\n\n return (\n <div className=\"flex flex-col min-h-full bg-bg-surface\">\n <Suspense fallback={<RouteLoader />}>\n <Routes>\n {/* Dashboard - Eager loaded */}\n <Route index element={<DashboardPage />} />\n <Route path=\"home\" element={<Navigate to={normalizedBasePath || '/'} replace />} />\n\n {/* Bots */}\n <Route path=\"bots\" element={<BotsListPage />} />\n <Route\n path=\"bots/new\"\n element={gated(\n BOTMANOR_PERMISSIONS.APP_CREATE,\n t('botlit.botsList.actions.createBot', 'Create Bot'),\n 'bots',\n back,\n <BotDetailPage isNew />\n )}\n />\n <Route path=\"bots/:botId\" element={<BotDetailPage />} />\n <Route\n path=\"bots/:botId/edit\"\n element={gated(\n BOTMANOR_PERMISSIONS.APP_UPDATE,\n t('botlit.botsList.menu.editBot', 'Edit Bot'),\n 'bots',\n back,\n <BotDetailPage isEditing />\n )}\n />\n <Route path=\"bots/:botId/agents\" element={<AgentsListPage />} />\n <Route\n path=\"bots/:botId/agents/new\"\n element={gated(\n BOTMANOR_PERMISSIONS.AGENT_CREATE,\n t('botlit.agentsList.actions.createAgent', 'Create Agent'),\n 'agents',\n back,\n <AgentBuilderPage />\n )}\n />\n <Route path=\"bots/:botId/agents/:agentId\" element={<AgentDetailPage />} />\n <Route\n path=\"bots/:botId/agents/:agentId/edit\"\n element={gated(\n BOTMANOR_PERMISSIONS.AGENT_UPDATE,\n t('botlit.agentsList.menu.editAgent', 'Edit Agent'),\n 'agents',\n back,\n <AgentBuilderPage />\n )}\n />\n <Route path=\"bots/:botId/knowledge\" element={<KnowledgeBasesPage />} />\n <Route path=\"bots/:botId/knowledge/:kbId\" element={<KnowledgeBaseDetailPage />} />\n\n {/* Agents (global view) */}\n <Route path=\"agents\" element={<AgentsListPage />} />\n <Route\n path=\"agents/new\"\n element={gated(\n BOTMANOR_PERMISSIONS.AGENT_CREATE,\n t('botlit.agentsList.actions.createAgent', 'Create Agent'),\n 'agents',\n back,\n <AgentBuilderPage />\n )}\n />\n <Route path=\"agents/approvals\" element={<AgentApprovalsPage />} />\n <Route path=\"agents/:agentId\" element={<AgentDetailPage />} />\n <Route\n path=\"agents/:agentId/edit\"\n element={gated(\n BOTMANOR_PERMISSIONS.AGENT_UPDATE,\n t('botlit.agentsList.menu.editAgent', 'Edit Agent'),\n 'agents',\n back,\n <AgentBuilderPage />\n )}\n />\n <Route\n path=\"agents/:agentId/chat\"\n element={gated(\n BOTMANOR_PERMISSIONS.AGENT_EXECUTE,\n t('botlit.chat.title', 'AI Chat'),\n 'agents',\n back,\n <ChatPage />\n )}\n />\n\n {/* Knowledge Bases */}\n <Route path=\"knowledge\" element={<KnowledgeBasesPage />} />\n <Route\n path=\"knowledge/new\"\n element={gated(\n BOTMANOR_PERMISSIONS.KNOWLEDGE_CREATE,\n t('botlit.knowledge.actions.create', 'Create Knowledge Base'),\n 'knowledge',\n back,\n <KnowledgeBaseDetailPage isNew />\n )}\n />\n <Route path=\"knowledge/:kbId\" element={<KnowledgeBaseDetailPage />} />\n\n {/* Retrieval Profiles */}\n <Route path=\"retrieval-profiles\" element={<RetrievalProfilesPage />} />\n <Route\n path=\"retrieval-profiles/new\"\n element={gated(\n BOTMANOR_PERMISSIONS.RETRIEVAL_PROFILE_CREATE,\n t('botlit.retrievalProfiles.actions.create', 'Create Retrieval Profile'),\n 'retrieval-profiles',\n back,\n <RetrievalProfileDetailPage isNew />\n )}\n />\n <Route path=\"retrieval-profiles/:profileId\" element={<RetrievalProfileDetailPage />} />\n\n {/* MCP Servers */}\n <Route path=\"mcp\" element={<MCPServersPage />} />\n <Route\n path=\"mcp/new\"\n element={gated(\n BOTMANOR_PERMISSIONS.MCP_CREATE,\n t('botlit.mcpServers.actions.add', 'Add MCP Server'),\n 'mcp',\n back,\n <MCPServerDetailPage isNew />\n )}\n />\n <Route path=\"mcp/:serverId\" element={<MCPServerDetailPage />} />\n\n {/* A2A Registry */}\n <Route path=\"a2a\" element={<A2ARegistryPage />} />\n <Route\n path=\"a2a/register\"\n element={gated(\n BOTMANOR_PERMISSIONS.A2A_REGISTRY_CREATE,\n t('botlit.a2aRegistry.actions.registerAgent', 'Register Agent'),\n 'a2a',\n back,\n <A2AAgentDetailPage isNew />\n )}\n />\n <Route path=\"a2a/:agentId\" element={<A2AAgentDetailPage />} />\n\n {/* Channels */}\n <Route path=\"channels\" element={<ChannelsPage />} />\n <Route\n path=\"channels/new\"\n element={gated(\n BOTMANOR_PERMISSIONS.CHANNEL_CREATE,\n t('botlit.channels.actions.addChannel', 'Add Channel'),\n 'channels',\n back,\n <ChannelDetailPage isNew />\n )}\n />\n <Route path=\"channels/routes\" element={<ChannelRoutesPage />} />\n <Route path=\"channels/:connectorId\" element={<ChannelDetailPage />} />\n\n {/* Policies & Guardrails */}\n <Route path=\"policies\" element={<PoliciesPage />} />\n <Route\n path=\"policies/new\"\n element={gated(\n BOTMANOR_PERMISSIONS.POLICY_CREATE,\n t('botlit.policies.actions.createPolicy', 'Create Policy'),\n 'policies',\n back,\n <PolicyDetailPage isNew />\n )}\n />\n <Route path=\"policies/:policyId\" element={<PolicyDetailPage />} />\n\n {/* Skills */}\n <Route path=\"skills\" element={<SkillsPage />} />\n <Route\n path=\"skills/new\"\n element={gated(\n BOTMANOR_PERMISSIONS.SKILL_CREATE,\n t('botlit.skills.actions.create', 'Create Skill'),\n 'skills',\n back,\n <SkillDetailPage isNew />\n )}\n />\n <Route path=\"skills/:skillId\" element={<SkillDetailPage />} />\n\n {/* Prompt Templates */}\n <Route path=\"prompt-templates\" element={<PromptTemplatesPage />} />\n <Route\n path=\"prompt-templates/new\"\n element={gated(\n BOTMANOR_PERMISSIONS.PROMPT_TEMPLATE_CREATE,\n t('botlit.promptTemplates.actions.create', 'Create Template'),\n 'prompt-templates',\n back,\n <PromptTemplateDetailPage isNew />\n )}\n />\n <Route path=\"prompt-templates/:templateId\" element={<PromptTemplateDetailPage />} />\n\n {/* Prompt Studio (legacy) */}\n <Route path=\"prompts\" element={<PromptStudioPage />} />\n\n {/* Executions */}\n <Route path=\"executions\" element={<ExecutionsPage />} />\n <Route path=\"ai\" element={<AiOperationsPage />} />\n <Route path=\"executions/:executionId\" element={<ExecutionDetailPage />} />\n\n {/* Buckets */}\n <Route path=\"buckets\" element={<BucketsPage />} />\n <Route\n path=\"buckets/new\"\n element={<Navigate to={`${normalizedBasePath}/buckets`} replace />}\n />\n <Route path=\"buckets/:bucketId\" element={<BucketDetailPage />} />\n\n {/* Store */}\n <Route path=\"store\" element={<StorePage />} />\n <Route path=\"store/installed\" element={<InstalledPackagesPage />} />\n <Route path=\"store/package/:slug\" element={<StorePackageDetailPage />} />\n\n {/* Chat */}\n <Route\n path=\"chat\"\n element={gated(\n BOTMANOR_PERMISSIONS.AGENT_EXECUTE,\n t('botlit.chat.title', 'AI Chat'),\n 'agents',\n back,\n <ChatPage />\n )}\n />\n <Route\n path=\"chat/:agentId\"\n element={gated(\n BOTMANOR_PERMISSIONS.AGENT_EXECUTE,\n t('botlit.chat.title', 'AI Chat'),\n 'agents',\n back,\n <ChatPage />\n )}\n />\n\n {/* Settings */}\n <Route path=\"settings\" element={<SettingsPage />} />\n\n {/* Workflow routes are owned by the shared app-shell WorkflowsRoot. */}\n <Route\n path=\"list\"\n element={<Navigate to={`${normalizedBasePath}/workflows/list`} replace />}\n />\n\n {/* Fallback - land back on the BotManor dashboard, not the app-shell root */}\n <Route path=\"*\" element={<Navigate to={normalizedBasePath || '/'} replace />} />\n </Routes>\n </Suspense>\n </div>\n );\n};\n"],"mappings":"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"}
|
|
@@ -4,8 +4,8 @@ import { jsx as t } from "react/jsx-runtime";
|
|
|
4
4
|
var n = {
|
|
5
5
|
default: "bg-action-primary-bg text-action-primary-text",
|
|
6
6
|
secondary: "bg-secondary text-secondary-foreground",
|
|
7
|
-
success: "bg-
|
|
8
|
-
warning: "bg-
|
|
7
|
+
success: "bg-status-success-bg-subtle text-status-success-text",
|
|
8
|
+
warning: "bg-status-warning-bg-subtle text-status-warning-text",
|
|
9
9
|
destructive: "bg-status-error-bg/20 text-status-error-text",
|
|
10
10
|
outline: "border border-border-subtle text-text-primary"
|
|
11
11
|
}, r = ({ className: r, variant: i = "default", ...a }) => /* @__PURE__ */ t("span", {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Badge.js","names":["variantStyles","Badge","props","cn","variant","className","StatusBadge","status"],"sources":["../../../src/botlit/components/Badge.tsx"],"sourcesContent":["/**\n * Badge Component\n * @module botlit/components\n */\n\nimport type { FC, HTMLAttributes } from 'react';\nimport { cn } from '../utils/cn';\n\ninterface BadgeProps extends HTMLAttributes<HTMLSpanElement> {\n variant?: 'default' | 'secondary' | 'success' | 'warning' | 'destructive' | 'outline';\n}\n\nconst variantStyles = {\n default: 'bg-action-primary-bg text-action-primary-text',\n secondary: 'bg-secondary text-secondary-foreground',\n success: 'bg-
|
|
1
|
+
{"version":3,"file":"Badge.js","names":["variantStyles","Badge","props","cn","variant","className","StatusBadge","status"],"sources":["../../../src/botlit/components/Badge.tsx"],"sourcesContent":["/**\n * Badge Component\n * @module botlit/components\n */\n\nimport type { FC, HTMLAttributes } from 'react';\nimport { cn } from '../utils/cn';\n\ninterface BadgeProps extends HTMLAttributes<HTMLSpanElement> {\n variant?: 'default' | 'secondary' | 'success' | 'warning' | 'destructive' | 'outline';\n}\n\nconst variantStyles = {\n default: 'bg-action-primary-bg text-action-primary-text',\n secondary: 'bg-secondary text-secondary-foreground',\n success: 'bg-status-success-bg-subtle text-status-success-text',\n warning: 'bg-status-warning-bg-subtle text-status-warning-text',\n destructive: 'bg-status-error-bg/20 text-status-error-text',\n outline: 'border border-border-subtle text-text-primary',\n};\n\nexport const Badge: FC<BadgeProps> = ({ className, variant = 'default', ...props }) => {\n return (\n <span\n className={cn(\n 'inline-flex items-center rounded-full px-2.5 py-0.5 text-xs font-medium',\n variantStyles[variant],\n className\n )}\n {...props}\n />\n );\n};\n\n// Status-specific badges\nexport const StatusBadge: FC<{ status: string }> = ({ status }) => {\n const variants: Record<string, BadgeProps['variant']> = {\n active: 'success',\n ready: 'success',\n connected: 'success',\n running: 'success',\n completed: 'success',\n draft: 'secondary',\n pending: 'secondary',\n paused: 'warning',\n training: 'warning',\n indexing: 'warning',\n processing: 'warning',\n connecting: 'warning',\n error: 'destructive',\n failed: 'destructive',\n disconnected: 'destructive',\n archived: 'outline',\n cancelled: 'outline',\n };\n\n return <Badge variant={variants[status.toLowerCase()] || 'default'}>{status}</Badge>;\n};\n"],"mappings":";;;AAYA,IAAMA,IAAgB;CACpB,SAAS;CACT,WAAW;CACX,SAAS;CACT,SAAS;CACT,aAAa;CACb,SAAS;AACX,GAEaC,KAAyB,EAAE,cAAW,aAAU,WAAW,GAAGC,QAEvE,kBAAC,QAAD;CACE,WAAWC,EACT,2EACAH,EAAcI,IACdC,CACF;CACA,GAAIH;AACL,CAAA,GAKQI,KAAuC,EAAE,gBAqB7C,kBAACL,GAAD;CAAO,SAAS;EAnBrB,QAAQ;EACR,OAAO;EACP,WAAW;EACX,SAAS;EACT,WAAW;EACX,OAAO;EACP,SAAS;EACT,QAAQ;EACR,UAAU;EACV,UAAU;EACV,YAAY;EACZ,YAAY;EACZ,OAAO;EACP,QAAQ;EACR,cAAc;EACd,UAAU;EACV,WAAW;CAGU,EAASM,EAAO,YAAY,MAAM;CAAY,UAAAA;AAAc,CAAA"}
|
|
@@ -12,7 +12,7 @@ var s = ({ open: s, onClose: c, onSelectChannel: l, availableChannels: u, platfo
|
|
|
12
12
|
};
|
|
13
13
|
return window.addEventListener("keydown", e), () => window.removeEventListener("keydown", e);
|
|
14
14
|
}, [s, c]), s ? /* @__PURE__ */ a(r, { children: [/* @__PURE__ */ i("div", {
|
|
15
|
-
className: "fixed inset-0 bg-
|
|
15
|
+
className: "fixed inset-0 bg-bg-overlay z-40 transition-opacity duration-300",
|
|
16
16
|
onClick: c,
|
|
17
17
|
"aria-hidden": "true"
|
|
18
18
|
}), /* @__PURE__ */ a("div", {
|
|
@@ -55,9 +55,9 @@ var s = ({ open: s, onClose: c, onSelectChannel: l, availableChannels: u, platfo
|
|
|
55
55
|
children: u.map((e) => {
|
|
56
56
|
let n = e.platform, r = f[n] || {
|
|
57
57
|
label: n,
|
|
58
|
-
badgeClass: "bg-
|
|
59
|
-
accentBg: "bg-
|
|
60
|
-
accentText: "text-
|
|
58
|
+
badgeClass: "bg-bg-sunken text-text-secondary",
|
|
59
|
+
accentBg: "bg-accent",
|
|
60
|
+
accentText: "text-text-primary"
|
|
61
61
|
}, o = d[n];
|
|
62
62
|
return /* @__PURE__ */ i("button", {
|
|
63
63
|
onClick: () => {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ChannelSelectorSheet.js","names":["_Fragment","ChannelSelectorSheet","useEffect","open","handleEscape","onClose","Fragment","Button","X","availableChannels","platform","channel","meta","platformMeta","icon","platformIcons","onSelectChannel","Badge"],"sources":["../../../src/botlit/components/ChannelSelectorSheet.tsx"],"sourcesContent":["/**\n * ChannelSelectorSheet\n * @module botlit/components\n *\n * A slide-in sheet component that displays available communication channels\n * for selection when setting up bot integrations.\n */\n\nimport type { FC, ReactNode } from 'react';\nimport { useEffect } from 'react';\nimport { X } from 'lucide-react';\nimport { Button } from './Button';\nimport { Badge } from './Badge';\nimport type { GlobalChannelData } from '../hooks/useUserPlatformConnection';\n\ninterface ChannelSelectorSheetProps {\n /** Controls visibility of the sheet */\n open: boolean;\n /** Callback when sheet is closed */\n onClose: () => void;\n /** Callback when a channel is selected */\n onSelectChannel: (channelId: string, platform: string) => void;\n /** Available channels to display (already filtered by backend) */\n availableChannels: GlobalChannelData[];\n /** Platform icons mapping */\n platformIcons: Record<string, ReactNode>;\n /** Platform metadata mapping */\n platformMeta: Record<\n string,\n { label: string; badgeClass: string; accentBg: string; accentText: string }\n >;\n}\n\nexport const ChannelSelectorSheet: FC<ChannelSelectorSheetProps> = ({\n open,\n onClose,\n onSelectChannel,\n availableChannels,\n platformIcons,\n platformMeta,\n}) => {\n // Lock body scroll when sheet is open\n useEffect(() => {\n if (open) {\n document.body.style.overflow = 'hidden';\n } else {\n document.body.style.overflow = '';\n }\n return () => {\n document.body.style.overflow = '';\n };\n }, [open]);\n\n // Close on Escape key\n useEffect(() => {\n const handleEscape = (e: KeyboardEvent) => {\n if (e.key === 'Escape' && open) {\n onClose();\n }\n };\n window.addEventListener('keydown', handleEscape);\n return () => window.removeEventListener('keydown', handleEscape);\n }, [open, onClose]);\n\n if (!open) return null;\n\n return (\n <>\n {/* Backdrop */}\n <div\n className=\"fixed inset-0 bg-
|
|
1
|
+
{"version":3,"file":"ChannelSelectorSheet.js","names":["_Fragment","ChannelSelectorSheet","useEffect","open","handleEscape","onClose","Fragment","Button","X","availableChannels","platform","channel","meta","platformMeta","icon","platformIcons","onSelectChannel","Badge"],"sources":["../../../src/botlit/components/ChannelSelectorSheet.tsx"],"sourcesContent":["/**\n * ChannelSelectorSheet\n * @module botlit/components\n *\n * A slide-in sheet component that displays available communication channels\n * for selection when setting up bot integrations.\n */\n\nimport type { FC, ReactNode } from 'react';\nimport { useEffect } from 'react';\nimport { X } from 'lucide-react';\nimport { Button } from './Button';\nimport { Badge } from './Badge';\nimport type { GlobalChannelData } from '../hooks/useUserPlatformConnection';\n\ninterface ChannelSelectorSheetProps {\n /** Controls visibility of the sheet */\n open: boolean;\n /** Callback when sheet is closed */\n onClose: () => void;\n /** Callback when a channel is selected */\n onSelectChannel: (channelId: string, platform: string) => void;\n /** Available channels to display (already filtered by backend) */\n availableChannels: GlobalChannelData[];\n /** Platform icons mapping */\n platformIcons: Record<string, ReactNode>;\n /** Platform metadata mapping */\n platformMeta: Record<\n string,\n { label: string; badgeClass: string; accentBg: string; accentText: string }\n >;\n}\n\nexport const ChannelSelectorSheet: FC<ChannelSelectorSheetProps> = ({\n open,\n onClose,\n onSelectChannel,\n availableChannels,\n platformIcons,\n platformMeta,\n}) => {\n // Lock body scroll when sheet is open\n useEffect(() => {\n if (open) {\n document.body.style.overflow = 'hidden';\n } else {\n document.body.style.overflow = '';\n }\n return () => {\n document.body.style.overflow = '';\n };\n }, [open]);\n\n // Close on Escape key\n useEffect(() => {\n const handleEscape = (e: KeyboardEvent) => {\n if (e.key === 'Escape' && open) {\n onClose();\n }\n };\n window.addEventListener('keydown', handleEscape);\n return () => window.removeEventListener('keydown', handleEscape);\n }, [open, onClose]);\n\n if (!open) return null;\n\n return (\n <>\n {/* Backdrop */}\n <div\n className=\"fixed inset-0 bg-bg-overlay z-40 transition-opacity duration-300\"\n onClick={onClose}\n aria-hidden=\"true\"\n />\n\n {/* Sheet */}\n <div\n className=\"fixed inset-y-0 right-0 z-50 w-full sm:max-w-md bg-bg-surface shadow-xl transform transition-transform duration-300 ease-out flex flex-col\"\n role=\"dialog\"\n aria-modal=\"true\"\n aria-labelledby=\"channel-selector-title\"\n >\n {/* Header */}\n <div className=\"flex items-center justify-between px-6 py-4 border-b border-border-subtle shrink-0\">\n <div>\n <h2 id=\"channel-selector-title\" className=\"text-lg font-semibold\">\n Select a Channel\n </h2>\n <p className=\"text-sm text-text-secondary mt-0.5\">\n Choose a platform to connect to your bot\n </p>\n </div>\n <Button\n variant=\"ghost\"\n size=\"icon\"\n onClick={onClose}\n className=\"shrink-0\"\n aria-label=\"Close\"\n >\n <X size={18} />\n </Button>\n </div>\n\n {/* Content */}\n <div className=\"flex-1 overflow-y-auto px-6 py-4\">\n {availableChannels.length === 0 ? (\n <div className=\"flex flex-col items-center justify-center py-12 text-center\">\n <p className=\"text-sm text-text-secondary\">No channels available to configure.</p>\n <p className=\"text-xs text-text-secondary mt-2\">\n All available channels have already been connected to this bot.\n </p>\n </div>\n ) : (\n <div className=\"space-y-3\">\n {availableChannels.map((channel) => {\n const platform = channel.platform as string;\n const meta = platformMeta[platform] || {\n label: platform,\n badgeClass: 'bg-bg-sunken text-text-secondary',\n accentBg: 'bg-accent',\n accentText: 'text-text-primary',\n };\n const icon = platformIcons[platform];\n\n return (\n <button\n key={channel.id}\n onClick={() => {\n onSelectChannel(channel.id, platform);\n onClose();\n }}\n className=\"w-full text-left p-4 rounded-lg border border-border-subtle bg-bg-surface hover:bg-bg-sunken/50 transition-colors focus:outline-none focus:ring-2 focus:ring-[var(--color-focus-ring)] focus:ring-offset-2\"\n >\n <div className=\"flex items-start gap-3\">\n {/* Icon */}\n <div className={`p-2 rounded-md ${meta.accentBg} shrink-0`}>\n <span className={meta.accentText}>{icon}</span>\n </div>\n\n {/* Content */}\n <div className=\"flex-1 min-w-0\">\n <div className=\"flex items-center gap-2 mb-1\">\n <h3 className=\"font-medium text-sm\">{channel.name}</h3>\n <Badge className={`text-xs ${meta.badgeClass}`}>{meta.label}</Badge>\n </div>\n {channel.description && (\n <p className=\"text-xs text-text-secondary line-clamp-2\">\n {channel.description}\n </p>\n )}\n </div>\n\n {/* Arrow indicator */}\n <div className=\"shrink-0 self-center text-text-secondary\">\n <svg\n width=\"16\"\n height=\"16\"\n viewBox=\"0 0 16 16\"\n fill=\"none\"\n xmlns=\"http://www.w3.org/2000/svg\"\n >\n <path\n d=\"M6 12L10 8L6 4\"\n stroke=\"currentColor\"\n strokeWidth=\"2\"\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n />\n </svg>\n </div>\n </div>\n </button>\n );\n })}\n </div>\n )}\n </div>\n\n {/* Footer */}\n <div className=\"px-6 py-4 border-t border-border-subtle shrink-0\">\n <Button variant=\"outline\" onClick={onClose} className=\"w-full\">\n Cancel\n </Button>\n </div>\n </div>\n </>\n );\n};\n"],"mappings":"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"}
|
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
import { useTr as e } from "../../shared/hooks/useTr.js";
|
|
2
|
+
import { Button as t } from "./Button.js";
|
|
3
|
+
import { jsx as n, jsxs as r } from "react/jsx-runtime";
|
|
4
|
+
// src/botlit/components/LoadMore.tsx
|
|
5
|
+
var i = ({ hasMore: i, loadingMore: a, onLoadMore: o, loadedCount: s }) => {
|
|
6
|
+
let c = e();
|
|
7
|
+
return i ? /* @__PURE__ */ r("div", {
|
|
8
|
+
className: "flex flex-col items-center gap-2 pt-4",
|
|
9
|
+
children: [/* @__PURE__ */ n(t, {
|
|
10
|
+
variant: "outline",
|
|
11
|
+
onClick: o,
|
|
12
|
+
isLoading: a,
|
|
13
|
+
children: c("botlit.common.loadMore", "Load more")
|
|
14
|
+
}), /* @__PURE__ */ n("p", {
|
|
15
|
+
className: "text-xs text-text-secondary tabular-nums",
|
|
16
|
+
children: c("botlit.common.loadedCount", "Showing {{count}}", { count: s })
|
|
17
|
+
})]
|
|
18
|
+
}) : null;
|
|
19
|
+
};
|
|
20
|
+
export { i as LoadMore };
|
|
21
|
+
|
|
22
|
+
//# sourceMappingURL=LoadMore.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"LoadMore.js","names":["LoadMore","t","useTr","hasMore","Button","onLoadMore","loadingMore","loadedCount"],"sources":["../../../src/botlit/components/LoadMore.tsx"],"sourcesContent":["/**\n * LoadMore Component\n * @module botlit/components\n *\n * Load-more control for offset-paginated lists. Renders nothing until the\n * list reports more pages (`hasMore`), so pages stay clean for short lists.\n */\n\nimport type { FC } from 'react';\nimport { useTr } from '../../shared/hooks/useTr';\nimport { Button } from './Button';\n\ninterface LoadMoreProps {\n hasMore: boolean;\n loadingMore: boolean;\n onLoadMore: () => void;\n loadedCount: number;\n}\n\nexport const LoadMore: FC<LoadMoreProps> = ({ hasMore, loadingMore, onLoadMore, loadedCount }) => {\n const t = useTr();\n\n if (!hasMore) return null;\n\n return (\n <div className=\"flex flex-col items-center gap-2 pt-4\">\n <Button variant=\"outline\" onClick={onLoadMore} isLoading={loadingMore}>\n {t('botlit.common.loadMore', 'Load more')}\n </Button>\n <p className=\"text-xs text-text-secondary tabular-nums\">\n {t('botlit.common.loadedCount', 'Showing {{count}}', { count: loadedCount })}\n </p>\n </div>\n );\n};\n"],"mappings":";;;;AAmBA,IAAaA,KAA+B,EAAE,YAAS,gBAAa,eAAY,qBAAkB;CAChG,IAAMC,IAAIC,EAAM;CAIhB,OAFKC,IAGH,kBAAC,OAAD;EAAK,WAAU;EAAf,UAAA,CACE,kBAACC,GAAD;GAAQ,SAAQ;GAAU,SAASC;GAAY,WAAWC;GACvD,UAAAL,EAAE,0BAA0B,WAAW;EAClC,CAAA,GACR,kBAAC,KAAD;GAAG,WAAU;GACV,UAAAA,EAAE,6BAA6B,qBAAqB,EAAE,OAAOM,EAAY,CAAC;EAC1E,CAAA,CACA;C,KAVc;AAYvB"}
|
|
@@ -12,3 +12,4 @@ export { ErrorState } from './ErrorState';
|
|
|
12
12
|
export { ChannelSelectorSheet } from './ChannelSelectorSheet';
|
|
13
13
|
export { RouteLoader, type RouteLoaderProps } from './RouteLoader';
|
|
14
14
|
export { WorkspaceRequired, type WorkspaceRequiredProps } from './WorkspaceRequired';
|
|
15
|
+
export { LoadMore } from './LoadMore';
|
|
@@ -24,11 +24,10 @@ export { usePromptTemplates, usePromptTemplate, useCreatePromptTemplate, useUpda
|
|
|
24
24
|
export type { PromptTemplateRecord } from './usePromptTemplates';
|
|
25
25
|
export { useExecutions, useExecution, useCreateExecution, useUpdateExecutionStatus, useExecutionMetrics, summariseExecutions, executionKeys, } from './useExecutions';
|
|
26
26
|
export type { ExecutionRecord, ExecutionRollup } from './useExecutions';
|
|
27
|
-
export { useBuckets, useBucketTree, useBucket, useCreateBucket, useUpdateBucket, useDeleteBucket, buildBucketTree, bucketKeys, } from './useBuckets';
|
|
27
|
+
export { useBuckets, useBucketTree, useBucket, useChildBuckets, useCreateBucket, useUpdateBucket, useDeleteBucket, buildBucketTree, bucketKeys, } from './useBuckets';
|
|
28
28
|
export type { BucketRecord, BucketTreeNode } from './useBuckets';
|
|
29
29
|
export { useStorePackages, useStorePackage, useInstalledPackages, useInstalledPackage, useInstallPackage, useUpdateInstalledPackage, useUninstallPackage, usePinPackageVersion, useForkPackage, useCheckPackageUpdates, storePackageName, storePackageDescription, storeKeys, } from './useStore';
|
|
30
30
|
export type { StoreFilter, StoreSortBy, StorePackageRecord, InstalledPackageRecord, OutdatedPackage, } from './useStore';
|
|
31
|
-
export { useConversations, useConversation, useSendMessage, conversationKeys, } from './useConversations';
|
|
32
31
|
export { useLLMProviders, useConfigureLLMProvider, llmProviderKeys } from './useLLMProviders';
|
|
33
32
|
export { useMyUserPlatformConnection, useInitiateSlackConnect, useCompleteSlackConnect, useLinkIntegrationConnection, useToggleSlackNotifications, useRevokeSlackConnection, useGlobalChannels, } from './useUserPlatformConnection';
|
|
34
33
|
export type { UserPlatformConnectionData, GlobalChannelData } from './useUserPlatformConnection';
|