@burdenoff/microfe-botmanor 2026.1026.1 → 2026.1027.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 +55 -51
- package/dist/botlit/BotlitRoutes.js.map +1 -1
- package/dist/botlit/components/AgentApprovalPanel.js +233 -0
- package/dist/botlit/components/AgentApprovalPanel.js.map +1 -0
- package/dist/botlit/hooks/useAgentApprovals.js +195 -0
- package/dist/botlit/hooks/useAgentApprovals.js.map +1 -0
- package/dist/botlit/pages/AgentApprovalsPage.js +205 -0
- package/dist/botlit/pages/AgentApprovalsPage.js.map +1 -0
- package/dist/botlit/pages/AgentDetailPage.js +343 -324
- package/dist/botlit/pages/AgentDetailPage.js.map +1 -1
- package/dist/botlit/pages/AgentsListPage.js +143 -135
- package/dist/botlit/pages/AgentsListPage.js.map +1 -1
- package/package.json +1 -1
|
@@ -5,9 +5,9 @@ import { Suspense as r, lazy as i } from "react";
|
|
|
5
5
|
import { jsx as a, jsxs as o } from "react/jsx-runtime";
|
|
6
6
|
import { Navigate as s, Route as c, Routes as l, useLocation as u } from "react-router";
|
|
7
7
|
//#region src/botlit/BotlitRoutes.tsx
|
|
8
|
-
var d = i(() => import("./pages/BotsListPage.js").then((e) => ({ default: e.BotsListPage }))), f = i(() => import("./pages/BotDetailPage.js").then((e) => ({ default: e.BotDetailPage }))), p = i(() => import("./pages/AgentsListPage.js").then((e) => ({ default: e.AgentsListPage }))), m = i(() => import("./pages/AgentDetailPage.js").then((e) => ({ default: e.AgentDetailPage }))),
|
|
9
|
-
let { basePath: i, isStandalone:
|
|
10
|
-
return
|
|
8
|
+
var d = i(() => import("./pages/BotsListPage.js").then((e) => ({ default: e.BotsListPage }))), f = i(() => import("./pages/BotDetailPage.js").then((e) => ({ default: e.BotDetailPage }))), p = i(() => import("./pages/AgentsListPage.js").then((e) => ({ default: e.AgentsListPage }))), m = i(() => import("./pages/AgentApprovalsPage.js").then((e) => ({ default: e.AgentApprovalsPage }))), h = i(() => import("./pages/AgentDetailPage.js").then((e) => ({ default: e.AgentDetailPage }))), g = i(() => import("./pages/AgentBuilderPage.js").then((e) => ({ default: e.AgentBuilderPage }))), _ = i(() => import("./pages/KnowledgeBasesPage.js").then((e) => ({ default: e.KnowledgeBasesPage }))), v = i(() => import("./pages/KnowledgeBaseDetailPage.js").then((e) => ({ default: e.KnowledgeBaseDetailPage }))), y = i(() => import("./pages/RetrievalProfilesPage.js").then((e) => ({ default: e.RetrievalProfilesPage }))), b = i(() => import("./pages/RetrievalProfileDetailPage.js").then((e) => ({ default: e.RetrievalProfileDetailPage }))), x = i(() => import("./pages/MCPServersPage.js").then((e) => ({ default: e.MCPServersPage }))), S = i(() => import("./pages/MCPServerDetailPage.js").then((e) => ({ default: e.MCPServerDetailPage }))), C = i(() => import("./pages/A2ARegistryPage.js").then((e) => ({ default: e.A2ARegistryPage }))), w = i(() => import("./pages/A2AAgentDetailPage.js").then((e) => ({ default: e.A2AAgentDetailPage }))), T = i(() => import("./pages/ChannelsPage.js").then((e) => ({ default: e.ChannelsPage }))), E = i(() => import("./pages/ChannelDetailPage.js").then((e) => ({ default: e.ChannelDetailPage }))), D = i(() => import("./pages/ChannelRoutesPage.js").then((e) => ({ default: e.ChannelRoutesPage }))), O = i(() => import("./pages/PoliciesPage.js").then((e) => ({ default: e.PoliciesPage }))), k = i(() => import("./pages/PolicyDetailPage.js").then((e) => ({ default: e.PolicyDetailPage }))), A = i(() => import("./pages/SkillsPage.js").then((e) => ({ default: e.SkillsPage }))), j = i(() => import("./pages/SkillDetailPage.js").then((e) => ({ default: e.SkillDetailPage }))), M = i(() => import("./pages/PromptTemplatesPage.js").then((e) => ({ default: e.PromptTemplatesPage }))), N = i(() => import("./pages/PromptTemplateDetailPage.js").then((e) => ({ default: e.PromptTemplateDetailPage }))), P = i(() => import("./pages/PromptStudioPage.js").then((e) => ({ default: e.PromptStudioPage }))), F = i(() => import("./pages/ExecutionsPage.js").then((e) => ({ default: e.ExecutionsPage }))), I = i(() => import("./pages/ExecutionDetailPage.js").then((e) => ({ default: e.ExecutionDetailPage }))), L = i(() => import("./pages/BucketsPage.js").then((e) => ({ default: e.BucketsPage }))), R = i(() => import("./pages/StorePage.js").then((e) => ({ default: e.StorePage }))), z = i(() => import("./pages/StorePackageDetailPage.js").then((e) => ({ default: e.StorePackageDetailPage }))), B = i(() => import("./pages/InstalledPackagesPage.js").then((e) => ({ default: e.InstalledPackagesPage }))), V = i(() => import("./pages/SettingsPage.js").then((e) => ({ default: e.SettingsPage }))), H = i(() => import("./pages/ChatPage.js").then((e) => ({ default: e.ChatPage }))), U = () => {
|
|
9
|
+
let { basePath: i, isStandalone: U } = t(), W = u(), G = i === "/" ? "" : i.replace(/\/$/, "");
|
|
10
|
+
return G && !U && !(W.pathname === G || W.pathname.startsWith(G + "/")) ? null : /* @__PURE__ */ a("div", {
|
|
11
11
|
className: "flex flex-col min-h-full bg-bg-surface",
|
|
12
12
|
children: /* @__PURE__ */ a(r, {
|
|
13
13
|
fallback: /* @__PURE__ */ a(e, {}),
|
|
@@ -45,23 +45,23 @@ var d = i(() => import("./pages/BotsListPage.js").then((e) => ({ default: e.Bots
|
|
|
45
45
|
}),
|
|
46
46
|
/* @__PURE__ */ a(c, {
|
|
47
47
|
path: "bots/:botId/agents/new",
|
|
48
|
-
element: /* @__PURE__ */ a(
|
|
48
|
+
element: /* @__PURE__ */ a(g, {})
|
|
49
49
|
}),
|
|
50
50
|
/* @__PURE__ */ a(c, {
|
|
51
51
|
path: "bots/:botId/agents/:agentId",
|
|
52
|
-
element: /* @__PURE__ */ a(
|
|
52
|
+
element: /* @__PURE__ */ a(h, {})
|
|
53
53
|
}),
|
|
54
54
|
/* @__PURE__ */ a(c, {
|
|
55
55
|
path: "bots/:botId/agents/:agentId/edit",
|
|
56
|
-
element: /* @__PURE__ */ a(
|
|
56
|
+
element: /* @__PURE__ */ a(g, {})
|
|
57
57
|
}),
|
|
58
58
|
/* @__PURE__ */ a(c, {
|
|
59
59
|
path: "bots/:botId/knowledge",
|
|
60
|
-
element: /* @__PURE__ */ a(
|
|
60
|
+
element: /* @__PURE__ */ a(_, {})
|
|
61
61
|
}),
|
|
62
62
|
/* @__PURE__ */ a(c, {
|
|
63
63
|
path: "bots/:botId/knowledge/:kbId",
|
|
64
|
-
element: /* @__PURE__ */ a(
|
|
64
|
+
element: /* @__PURE__ */ a(v, {})
|
|
65
65
|
}),
|
|
66
66
|
/* @__PURE__ */ a(c, {
|
|
67
67
|
path: "agents",
|
|
@@ -69,19 +69,23 @@ var d = i(() => import("./pages/BotsListPage.js").then((e) => ({ default: e.Bots
|
|
|
69
69
|
}),
|
|
70
70
|
/* @__PURE__ */ a(c, {
|
|
71
71
|
path: "agents/new",
|
|
72
|
-
element: /* @__PURE__ */ a(
|
|
72
|
+
element: /* @__PURE__ */ a(g, {})
|
|
73
73
|
}),
|
|
74
74
|
/* @__PURE__ */ a(c, {
|
|
75
|
-
path: "agents
|
|
75
|
+
path: "agents/approvals",
|
|
76
76
|
element: /* @__PURE__ */ a(m, {})
|
|
77
77
|
}),
|
|
78
78
|
/* @__PURE__ */ a(c, {
|
|
79
|
-
path: "agents/:agentId
|
|
79
|
+
path: "agents/:agentId",
|
|
80
80
|
element: /* @__PURE__ */ a(h, {})
|
|
81
81
|
}),
|
|
82
|
+
/* @__PURE__ */ a(c, {
|
|
83
|
+
path: "agents/:agentId/edit",
|
|
84
|
+
element: /* @__PURE__ */ a(g, {})
|
|
85
|
+
}),
|
|
82
86
|
/* @__PURE__ */ a(c, {
|
|
83
87
|
path: "agents/:agentId/chat",
|
|
84
|
-
element: /* @__PURE__ */ a(
|
|
88
|
+
element: /* @__PURE__ */ a(H, {})
|
|
85
89
|
}),
|
|
86
90
|
/* @__PURE__ */ a(c, {
|
|
87
91
|
path: "conversations",
|
|
@@ -99,156 +103,156 @@ var d = i(() => import("./pages/BotsListPage.js").then((e) => ({ default: e.Bots
|
|
|
99
103
|
}),
|
|
100
104
|
/* @__PURE__ */ a(c, {
|
|
101
105
|
path: "knowledge",
|
|
102
|
-
element: /* @__PURE__ */ a(
|
|
106
|
+
element: /* @__PURE__ */ a(_, {})
|
|
103
107
|
}),
|
|
104
108
|
/* @__PURE__ */ a(c, {
|
|
105
109
|
path: "knowledge/new",
|
|
106
|
-
element: /* @__PURE__ */ a(
|
|
110
|
+
element: /* @__PURE__ */ a(v, { isNew: !0 })
|
|
107
111
|
}),
|
|
108
112
|
/* @__PURE__ */ a(c, {
|
|
109
113
|
path: "knowledge/:kbId",
|
|
110
|
-
element: /* @__PURE__ */ a(
|
|
114
|
+
element: /* @__PURE__ */ a(v, {})
|
|
111
115
|
}),
|
|
112
116
|
/* @__PURE__ */ a(c, {
|
|
113
117
|
path: "retrieval-profiles",
|
|
114
|
-
element: /* @__PURE__ */ a(
|
|
118
|
+
element: /* @__PURE__ */ a(y, {})
|
|
115
119
|
}),
|
|
116
120
|
/* @__PURE__ */ a(c, {
|
|
117
121
|
path: "retrieval-profiles/new",
|
|
118
|
-
element: /* @__PURE__ */ a(
|
|
122
|
+
element: /* @__PURE__ */ a(b, { isNew: !0 })
|
|
119
123
|
}),
|
|
120
124
|
/* @__PURE__ */ a(c, {
|
|
121
125
|
path: "retrieval-profiles/:profileId",
|
|
122
|
-
element: /* @__PURE__ */ a(
|
|
126
|
+
element: /* @__PURE__ */ a(b, {})
|
|
123
127
|
}),
|
|
124
128
|
/* @__PURE__ */ a(c, {
|
|
125
129
|
path: "mcp",
|
|
126
|
-
element: /* @__PURE__ */ a(
|
|
130
|
+
element: /* @__PURE__ */ a(x, {})
|
|
127
131
|
}),
|
|
128
132
|
/* @__PURE__ */ a(c, {
|
|
129
133
|
path: "mcp/new",
|
|
130
|
-
element: /* @__PURE__ */ a(
|
|
134
|
+
element: /* @__PURE__ */ a(S, { isNew: !0 })
|
|
131
135
|
}),
|
|
132
136
|
/* @__PURE__ */ a(c, {
|
|
133
137
|
path: "mcp/:serverId",
|
|
134
|
-
element: /* @__PURE__ */ a(
|
|
138
|
+
element: /* @__PURE__ */ a(S, {})
|
|
135
139
|
}),
|
|
136
140
|
/* @__PURE__ */ a(c, {
|
|
137
141
|
path: "a2a",
|
|
138
|
-
element: /* @__PURE__ */ a(
|
|
142
|
+
element: /* @__PURE__ */ a(C, {})
|
|
139
143
|
}),
|
|
140
144
|
/* @__PURE__ */ a(c, {
|
|
141
145
|
path: "a2a/register",
|
|
142
|
-
element: /* @__PURE__ */ a(
|
|
146
|
+
element: /* @__PURE__ */ a(w, { isNew: !0 })
|
|
143
147
|
}),
|
|
144
148
|
/* @__PURE__ */ a(c, {
|
|
145
149
|
path: "a2a/:agentId",
|
|
146
|
-
element: /* @__PURE__ */ a(
|
|
150
|
+
element: /* @__PURE__ */ a(w, {})
|
|
147
151
|
}),
|
|
148
152
|
/* @__PURE__ */ a(c, {
|
|
149
153
|
path: "channels",
|
|
150
|
-
element: /* @__PURE__ */ a(
|
|
154
|
+
element: /* @__PURE__ */ a(T, {})
|
|
151
155
|
}),
|
|
152
156
|
/* @__PURE__ */ a(c, {
|
|
153
157
|
path: "channels/new",
|
|
154
|
-
element: /* @__PURE__ */ a(
|
|
158
|
+
element: /* @__PURE__ */ a(E, { isNew: !0 })
|
|
155
159
|
}),
|
|
156
160
|
/* @__PURE__ */ a(c, {
|
|
157
161
|
path: "channels/routes",
|
|
158
|
-
element: /* @__PURE__ */ a(
|
|
162
|
+
element: /* @__PURE__ */ a(D, {})
|
|
159
163
|
}),
|
|
160
164
|
/* @__PURE__ */ a(c, {
|
|
161
165
|
path: "channels/:connectorId",
|
|
162
|
-
element: /* @__PURE__ */ a(
|
|
166
|
+
element: /* @__PURE__ */ a(E, {})
|
|
163
167
|
}),
|
|
164
168
|
/* @__PURE__ */ a(c, {
|
|
165
169
|
path: "policies",
|
|
166
|
-
element: /* @__PURE__ */ a(
|
|
170
|
+
element: /* @__PURE__ */ a(O, {})
|
|
167
171
|
}),
|
|
168
172
|
/* @__PURE__ */ a(c, {
|
|
169
173
|
path: "policies/new",
|
|
170
|
-
element: /* @__PURE__ */ a(
|
|
174
|
+
element: /* @__PURE__ */ a(k, { isNew: !0 })
|
|
171
175
|
}),
|
|
172
176
|
/* @__PURE__ */ a(c, {
|
|
173
177
|
path: "policies/:policyId",
|
|
174
|
-
element: /* @__PURE__ */ a(
|
|
178
|
+
element: /* @__PURE__ */ a(k, {})
|
|
175
179
|
}),
|
|
176
180
|
/* @__PURE__ */ a(c, {
|
|
177
181
|
path: "skills",
|
|
178
|
-
element: /* @__PURE__ */ a(
|
|
182
|
+
element: /* @__PURE__ */ a(A, {})
|
|
179
183
|
}),
|
|
180
184
|
/* @__PURE__ */ a(c, {
|
|
181
185
|
path: "skills/new",
|
|
182
|
-
element: /* @__PURE__ */ a(
|
|
186
|
+
element: /* @__PURE__ */ a(j, { isNew: !0 })
|
|
183
187
|
}),
|
|
184
188
|
/* @__PURE__ */ a(c, {
|
|
185
189
|
path: "skills/:skillId",
|
|
186
|
-
element: /* @__PURE__ */ a(
|
|
190
|
+
element: /* @__PURE__ */ a(j, {})
|
|
187
191
|
}),
|
|
188
192
|
/* @__PURE__ */ a(c, {
|
|
189
193
|
path: "prompt-templates",
|
|
190
|
-
element: /* @__PURE__ */ a(
|
|
194
|
+
element: /* @__PURE__ */ a(M, {})
|
|
191
195
|
}),
|
|
192
196
|
/* @__PURE__ */ a(c, {
|
|
193
197
|
path: "prompt-templates/new",
|
|
194
|
-
element: /* @__PURE__ */ a(
|
|
198
|
+
element: /* @__PURE__ */ a(N, { isNew: !0 })
|
|
195
199
|
}),
|
|
196
200
|
/* @__PURE__ */ a(c, {
|
|
197
201
|
path: "prompt-templates/:templateId",
|
|
198
|
-
element: /* @__PURE__ */ a(
|
|
202
|
+
element: /* @__PURE__ */ a(N, {})
|
|
199
203
|
}),
|
|
200
204
|
/* @__PURE__ */ a(c, {
|
|
201
205
|
path: "prompts",
|
|
202
|
-
element: /* @__PURE__ */ a(
|
|
206
|
+
element: /* @__PURE__ */ a(P, {})
|
|
203
207
|
}),
|
|
204
208
|
/* @__PURE__ */ a(c, {
|
|
205
209
|
path: "executions",
|
|
206
|
-
element: /* @__PURE__ */ a(
|
|
210
|
+
element: /* @__PURE__ */ a(F, {})
|
|
207
211
|
}),
|
|
208
212
|
/* @__PURE__ */ a(c, {
|
|
209
213
|
path: "executions/:executionId",
|
|
210
|
-
element: /* @__PURE__ */ a(
|
|
214
|
+
element: /* @__PURE__ */ a(I, {})
|
|
211
215
|
}),
|
|
212
216
|
/* @__PURE__ */ a(c, {
|
|
213
217
|
path: "buckets",
|
|
214
|
-
element: /* @__PURE__ */ a(
|
|
218
|
+
element: /* @__PURE__ */ a(L, {})
|
|
215
219
|
}),
|
|
216
220
|
/* @__PURE__ */ a(c, {
|
|
217
221
|
path: "buckets/new",
|
|
218
|
-
element: /* @__PURE__ */ a(
|
|
222
|
+
element: /* @__PURE__ */ a(L, {})
|
|
219
223
|
}),
|
|
220
224
|
/* @__PURE__ */ a(c, {
|
|
221
225
|
path: "buckets/:bucketId",
|
|
222
|
-
element: /* @__PURE__ */ a(
|
|
226
|
+
element: /* @__PURE__ */ a(L, {})
|
|
223
227
|
}),
|
|
224
228
|
/* @__PURE__ */ a(c, {
|
|
225
229
|
path: "store",
|
|
226
|
-
element: /* @__PURE__ */ a(
|
|
230
|
+
element: /* @__PURE__ */ a(R, {})
|
|
227
231
|
}),
|
|
228
232
|
/* @__PURE__ */ a(c, {
|
|
229
233
|
path: "store/installed",
|
|
230
|
-
element: /* @__PURE__ */ a(
|
|
234
|
+
element: /* @__PURE__ */ a(B, {})
|
|
231
235
|
}),
|
|
232
236
|
/* @__PURE__ */ a(c, {
|
|
233
237
|
path: "store/package/:slug",
|
|
234
|
-
element: /* @__PURE__ */ a(
|
|
238
|
+
element: /* @__PURE__ */ a(z, {})
|
|
235
239
|
}),
|
|
236
240
|
/* @__PURE__ */ a(c, {
|
|
237
241
|
path: "chat",
|
|
238
|
-
element: /* @__PURE__ */ a(
|
|
242
|
+
element: /* @__PURE__ */ a(H, {})
|
|
239
243
|
}),
|
|
240
244
|
/* @__PURE__ */ a(c, {
|
|
241
245
|
path: "chat/:agentId",
|
|
242
|
-
element: /* @__PURE__ */ a(
|
|
246
|
+
element: /* @__PURE__ */ a(H, {})
|
|
243
247
|
}),
|
|
244
248
|
/* @__PURE__ */ a(c, {
|
|
245
249
|
path: "settings",
|
|
246
|
-
element: /* @__PURE__ */ a(
|
|
250
|
+
element: /* @__PURE__ */ a(V, {})
|
|
247
251
|
}),
|
|
248
252
|
/* @__PURE__ */ a(c, {
|
|
249
253
|
path: "list",
|
|
250
254
|
element: /* @__PURE__ */ a(s, {
|
|
251
|
-
to: `${
|
|
255
|
+
to: `${G}/workflows/list`,
|
|
252
256
|
replace: !0
|
|
253
257
|
})
|
|
254
258
|
}),
|
|
@@ -264,6 +268,6 @@ var d = i(() => import("./pages/BotsListPage.js").then((e) => ({ default: e.Bots
|
|
|
264
268
|
});
|
|
265
269
|
};
|
|
266
270
|
//#endregion
|
|
267
|
-
export {
|
|
271
|
+
export { U as BotlitRoutes };
|
|
268
272
|
|
|
269
273
|
//# sourceMappingURL=BotlitRoutes.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"BotlitRoutes.js","names":[],"sources":["../../src/botlit/BotlitRoutes.tsx"],"sourcesContent":["/**\n * BotManor Routes\n * @module botlit\n */\n\nimport { type FC, lazy, Suspense } from 'react';\nimport { Routes, Route, Navigate, useLocation } from 'react-router';\nimport { useBotlit } from './providers/BotlitProvider';\nimport { RouteLoader } from './components/RouteLoader';\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 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 - 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\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 path=\"bots/new\" element={<BotDetailPage isNew />} />\n <Route path=\"bots/:botId\" element={<BotDetailPage />} />\n <Route path=\"bots/:botId/edit\" element={<BotDetailPage isEditing />} />\n <Route path=\"bots/:botId/agents\" element={<AgentsListPage />} />\n <Route path=\"bots/:botId/agents/new\" element={<AgentBuilderPage />} />\n <Route path=\"bots/:botId/agents/:agentId\" element={<AgentDetailPage />} />\n <Route path=\"bots/:botId/agents/:agentId/edit\" element={<AgentBuilderPage />} />\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 path=\"agents/new\" element={<AgentBuilderPage />} />\n <Route path=\"agents/:agentId\" element={<AgentDetailPage />} />\n <Route path=\"agents/:agentId/edit\" element={<AgentBuilderPage />} />\n <Route path=\"agents/:agentId/chat\" element={<ChatPage />} />\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 path=\"knowledge/new\" element={<KnowledgeBaseDetailPage isNew />} />\n <Route path=\"knowledge/:kbId\" element={<KnowledgeBaseDetailPage />} />\n\n {/* Retrieval Profiles */}\n <Route path=\"retrieval-profiles\" element={<RetrievalProfilesPage />} />\n <Route path=\"retrieval-profiles/new\" element={<RetrievalProfileDetailPage isNew />} />\n <Route path=\"retrieval-profiles/:profileId\" element={<RetrievalProfileDetailPage />} />\n\n {/* MCP Servers */}\n <Route path=\"mcp\" element={<MCPServersPage />} />\n <Route path=\"mcp/new\" element={<MCPServerDetailPage isNew />} />\n <Route path=\"mcp/:serverId\" element={<MCPServerDetailPage />} />\n\n {/* A2A Registry */}\n <Route path=\"a2a\" element={<A2ARegistryPage />} />\n <Route path=\"a2a/register\" element={<A2AAgentDetailPage isNew />} />\n <Route path=\"a2a/:agentId\" element={<A2AAgentDetailPage />} />\n\n {/* Channels */}\n <Route path=\"channels\" element={<ChannelsPage />} />\n <Route path=\"channels/new\" element={<ChannelDetailPage isNew />} />\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 path=\"policies/new\" element={<PolicyDetailPage isNew />} />\n <Route path=\"policies/:policyId\" element={<PolicyDetailPage />} />\n\n {/* Skills */}\n <Route path=\"skills\" element={<SkillsPage />} />\n <Route path=\"skills/new\" element={<SkillDetailPage isNew />} />\n <Route path=\"skills/:skillId\" element={<SkillDetailPage />} />\n\n {/* Prompt Templates */}\n <Route path=\"prompt-templates\" element={<PromptTemplatesPage />} />\n <Route path=\"prompt-templates/new\" element={<PromptTemplateDetailPage isNew />} />\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=\"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 path=\"chat\" element={<ChatPage />} />\n <Route path=\"chat/:agentId\" element={<ChatPage />} />\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":"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"}
|
|
1
|
+
{"version":3,"file":"BotlitRoutes.js","names":[],"sources":["../../src/botlit/BotlitRoutes.tsx"],"sourcesContent":["/**\n * BotManor Routes\n * @module botlit\n */\n\nimport { type FC, lazy, Suspense } from 'react';\nimport { Routes, Route, Navigate, useLocation } from 'react-router';\nimport { useBotlit } from './providers/BotlitProvider';\nimport { RouteLoader } from './components/RouteLoader';\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 - 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\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 path=\"bots/new\" element={<BotDetailPage isNew />} />\n <Route path=\"bots/:botId\" element={<BotDetailPage />} />\n <Route path=\"bots/:botId/edit\" element={<BotDetailPage isEditing />} />\n <Route path=\"bots/:botId/agents\" element={<AgentsListPage />} />\n <Route path=\"bots/:botId/agents/new\" element={<AgentBuilderPage />} />\n <Route path=\"bots/:botId/agents/:agentId\" element={<AgentDetailPage />} />\n <Route path=\"bots/:botId/agents/:agentId/edit\" element={<AgentBuilderPage />} />\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 path=\"agents/new\" element={<AgentBuilderPage />} />\n <Route path=\"agents/approvals\" element={<AgentApprovalsPage />} />\n <Route path=\"agents/:agentId\" element={<AgentDetailPage />} />\n <Route path=\"agents/:agentId/edit\" element={<AgentBuilderPage />} />\n <Route path=\"agents/:agentId/chat\" element={<ChatPage />} />\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 path=\"knowledge/new\" element={<KnowledgeBaseDetailPage isNew />} />\n <Route path=\"knowledge/:kbId\" element={<KnowledgeBaseDetailPage />} />\n\n {/* Retrieval Profiles */}\n <Route path=\"retrieval-profiles\" element={<RetrievalProfilesPage />} />\n <Route path=\"retrieval-profiles/new\" element={<RetrievalProfileDetailPage isNew />} />\n <Route path=\"retrieval-profiles/:profileId\" element={<RetrievalProfileDetailPage />} />\n\n {/* MCP Servers */}\n <Route path=\"mcp\" element={<MCPServersPage />} />\n <Route path=\"mcp/new\" element={<MCPServerDetailPage isNew />} />\n <Route path=\"mcp/:serverId\" element={<MCPServerDetailPage />} />\n\n {/* A2A Registry */}\n <Route path=\"a2a\" element={<A2ARegistryPage />} />\n <Route path=\"a2a/register\" element={<A2AAgentDetailPage isNew />} />\n <Route path=\"a2a/:agentId\" element={<A2AAgentDetailPage />} />\n\n {/* Channels */}\n <Route path=\"channels\" element={<ChannelsPage />} />\n <Route path=\"channels/new\" element={<ChannelDetailPage isNew />} />\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 path=\"policies/new\" element={<PolicyDetailPage isNew />} />\n <Route path=\"policies/:policyId\" element={<PolicyDetailPage />} />\n\n {/* Skills */}\n <Route path=\"skills\" element={<SkillsPage />} />\n <Route path=\"skills/new\" element={<SkillDetailPage isNew />} />\n <Route path=\"skills/:skillId\" element={<SkillDetailPage />} />\n\n {/* Prompt Templates */}\n <Route path=\"prompt-templates\" element={<PromptTemplatesPage />} />\n <Route path=\"prompt-templates/new\" element={<PromptTemplateDetailPage isNew />} />\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=\"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 path=\"chat\" element={<ChatPage />} />\n <Route path=\"chat/:agentId\" element={<ChatPage />} />\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":"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"}
|
|
@@ -0,0 +1,233 @@
|
|
|
1
|
+
import { useTr as e } from "../../shared/hooks/useTr.js";
|
|
2
|
+
import { useBotlit as t } from "../providers/BotlitProvider.js";
|
|
3
|
+
import { formatRelativeTime as n } from "../utils/formatters.js";
|
|
4
|
+
import { Card as r, CardContent as i, CardDescription as a, CardHeader as o, CardTitle as s } from "./Card.js";
|
|
5
|
+
import { Button as c } from "./Button.js";
|
|
6
|
+
import { Badge as l } from "./Badge.js";
|
|
7
|
+
import { useAgentApprovalActions as u, useAgentApprovalRequests as d, useAgentApprovalSettings as f } from "../hooks/useAgentApprovals.js";
|
|
8
|
+
import { useState as p } from "react";
|
|
9
|
+
import { Dialog as m, DialogContent as h, DialogDescription as g, DialogFooter as _, DialogHeader as v, DialogTitle as y, Textarea as b } from "@burdenoff/fe-libs/ui";
|
|
10
|
+
import { Fragment as x, jsx as S, jsxs as C } from "react/jsx-runtime";
|
|
11
|
+
import { AlertTriangle as w, CheckCircle2 as T, Send as E, ShieldCheck as D, XCircle as O } from "lucide-react";
|
|
12
|
+
import { toast as k } from "sonner";
|
|
13
|
+
//#region src/botlit/components/AgentApprovalPanel.tsx
|
|
14
|
+
function A(e) {
|
|
15
|
+
return e === "PENDING" ? "warning" : e === "APPROVED" ? "success" : e === "REJECTED" ? "destructive" : "outline";
|
|
16
|
+
}
|
|
17
|
+
var j = ({ kind: t, loading: n, onClose: r, onConfirm: i }) => {
|
|
18
|
+
let a = e(), [o, s] = p(""), l = t === "reject", u = {
|
|
19
|
+
request: {
|
|
20
|
+
title: a("botlit.agentApproval.dialog.request.title", "Request activation"),
|
|
21
|
+
description: a("botlit.agentApproval.dialog.request.description", "A reviewer will check the agent's current prompt, model, tools and limits before it goes live. Changing the agent afterwards makes this request stale."),
|
|
22
|
+
confirm: a("botlit.agentApproval.dialog.request.confirm", "Submit for review")
|
|
23
|
+
},
|
|
24
|
+
approve: {
|
|
25
|
+
title: a("botlit.agentApproval.dialog.approve.title", "Approve and go live"),
|
|
26
|
+
description: a("botlit.agentApproval.dialog.approve.description", "Approving publishes the agent's draft and makes it ACTIVE immediately."),
|
|
27
|
+
confirm: a("botlit.agentApproval.dialog.approve.confirm", "Approve")
|
|
28
|
+
},
|
|
29
|
+
reject: {
|
|
30
|
+
title: a("botlit.agentApproval.dialog.reject.title", "Reject activation"),
|
|
31
|
+
description: a("botlit.agentApproval.dialog.reject.description", "Tell the requester what needs to change. The agent stays as it is."),
|
|
32
|
+
confirm: a("botlit.agentApproval.dialog.reject.confirm", "Reject")
|
|
33
|
+
}
|
|
34
|
+
}, d = t ? u[t] : null;
|
|
35
|
+
return /* @__PURE__ */ S(m, {
|
|
36
|
+
open: t !== null,
|
|
37
|
+
onOpenChange: (e) => {
|
|
38
|
+
e || (s(""), r());
|
|
39
|
+
},
|
|
40
|
+
children: /* @__PURE__ */ C(h, { children: [
|
|
41
|
+
/* @__PURE__ */ C(v, { children: [/* @__PURE__ */ S(y, { children: d?.title }), /* @__PURE__ */ S(g, { children: d?.description })] }),
|
|
42
|
+
/* @__PURE__ */ S(b, {
|
|
43
|
+
"aria-label": t === "request" ? a("botlit.agentApproval.dialog.noteLabel", "Note for the reviewer") : a("botlit.agentApproval.dialog.reasonLabel", "Reason"),
|
|
44
|
+
value: o,
|
|
45
|
+
maxLength: 2e3,
|
|
46
|
+
onChange: (e) => s(e.target.value),
|
|
47
|
+
placeholder: t === "request" ? a("botlit.agentApproval.dialog.notePlaceholder", "What changed and why (optional)") : l ? a("botlit.agentApproval.dialog.reasonRequiredPlaceholder", "Reason (required)") : a("botlit.agentApproval.dialog.reasonPlaceholder", "Reason (optional)"),
|
|
48
|
+
rows: 4
|
|
49
|
+
}),
|
|
50
|
+
/* @__PURE__ */ C(_, { children: [/* @__PURE__ */ S(c, {
|
|
51
|
+
variant: "outline",
|
|
52
|
+
onClick: () => {
|
|
53
|
+
s(""), r();
|
|
54
|
+
},
|
|
55
|
+
children: a("botlit.common.cancel", "Cancel")
|
|
56
|
+
}), /* @__PURE__ */ S(c, {
|
|
57
|
+
variant: t === "reject" ? "destructive" : "default",
|
|
58
|
+
isLoading: n,
|
|
59
|
+
disabled: l && o.trim().length === 0,
|
|
60
|
+
onClick: async () => {
|
|
61
|
+
await i(o), s("");
|
|
62
|
+
},
|
|
63
|
+
children: d?.confirm
|
|
64
|
+
})] })
|
|
65
|
+
] })
|
|
66
|
+
});
|
|
67
|
+
}, M = ({ agentId: m, agentStatus: h, onChanged: g }) => {
|
|
68
|
+
let _ = e(), { currentUser: v } = t(), y = f(), b = d({ agentId: m }), { run: M, pending: N } = u(), [P, F] = p(null), I = y.data?.requireActivationApproval === !0, L = b.data.find((e) => e.status === "PENDING") ?? null, R = b.data.filter((e) => e.status !== "PENDING").slice(0, 10), z = L !== null && L.requestedById === v?.id, B = (e) => e && e === v?.id ? _("botlit.agentApproval.you", "you") : e ?? "—", V = async (e) => {
|
|
69
|
+
if (P) try {
|
|
70
|
+
P.kind === "request" ? (await M({
|
|
71
|
+
kind: "request",
|
|
72
|
+
agentId: m,
|
|
73
|
+
note: e
|
|
74
|
+
}), k.success(_("botlit.agentApproval.toast.requested", "Activation requested"))) : P.kind === "approve" && P.request ? (await M({
|
|
75
|
+
kind: "approve",
|
|
76
|
+
id: P.request.id,
|
|
77
|
+
reason: e
|
|
78
|
+
}), k.success(_("botlit.agentApproval.toast.approved", "Approved — the agent is live")), g?.()) : P.kind === "reject" && P.request && (await M({
|
|
79
|
+
kind: "reject",
|
|
80
|
+
id: P.request.id,
|
|
81
|
+
reason: e
|
|
82
|
+
}), k.success(_("botlit.agentApproval.toast.rejected", "Activation rejected"))), F(null), await b.refetch();
|
|
83
|
+
} catch (e) {
|
|
84
|
+
k.error(e instanceof Error ? e.message : _("botlit.agentApproval.toast.error", "Approval action failed"));
|
|
85
|
+
}
|
|
86
|
+
}, H = async (e) => {
|
|
87
|
+
try {
|
|
88
|
+
await M({
|
|
89
|
+
kind: "cancel",
|
|
90
|
+
id: e.id
|
|
91
|
+
}), k.success(_("botlit.agentApproval.toast.cancelled", "Request cancelled")), await b.refetch();
|
|
92
|
+
} catch (e) {
|
|
93
|
+
k.error(e instanceof Error ? e.message : _("botlit.agentApproval.toast.error", "Approval action failed"));
|
|
94
|
+
}
|
|
95
|
+
};
|
|
96
|
+
return /* @__PURE__ */ C(r, {
|
|
97
|
+
"data-testid": "agent-approval-panel",
|
|
98
|
+
children: [
|
|
99
|
+
/* @__PURE__ */ C(o, {
|
|
100
|
+
className: "flex flex-row items-start justify-between gap-4",
|
|
101
|
+
children: [/* @__PURE__ */ C("div", { children: [/* @__PURE__ */ C(s, {
|
|
102
|
+
className: "flex items-center gap-2",
|
|
103
|
+
children: [
|
|
104
|
+
/* @__PURE__ */ S(D, { size: 18 }),
|
|
105
|
+
_("botlit.agentApproval.title", "Activation approval"),
|
|
106
|
+
/* @__PURE__ */ S(l, {
|
|
107
|
+
variant: I ? "warning" : "outline",
|
|
108
|
+
children: I ? _("botlit.agentApproval.required", "Required in this workspace") : _("botlit.agentApproval.optional", "Optional")
|
|
109
|
+
})
|
|
110
|
+
]
|
|
111
|
+
}), /* @__PURE__ */ S(a, { children: I ? _("botlit.agentApproval.descriptionRequired", "This workspace requires a reviewer to approve an agent before it goes live or before a new version is published.") : _("botlit.agentApproval.descriptionOptional", "You can ask a reviewer to check this agent before it goes live. A workspace admin can make review mandatory on the Approvals page.") })] }), !L && h !== "ARCHIVED" && /* @__PURE__ */ S(c, {
|
|
112
|
+
leftIcon: /* @__PURE__ */ S(E, { size: 16 }),
|
|
113
|
+
onClick: () => F({ kind: "request" }),
|
|
114
|
+
children: _("botlit.agentApproval.requestAction", "Request activation")
|
|
115
|
+
})]
|
|
116
|
+
}),
|
|
117
|
+
/* @__PURE__ */ C(i, {
|
|
118
|
+
className: "space-y-4",
|
|
119
|
+
children: [
|
|
120
|
+
b.loading && b.data.length === 0 ? /* @__PURE__ */ S("div", { className: "h-20 bg-bg-sunken motion-safe:animate-vc-shimmer rounded-lg" }) : null,
|
|
121
|
+
L && /* @__PURE__ */ C("div", {
|
|
122
|
+
className: "p-4 border border-status-warning-border bg-status-warning-bg rounded-lg space-y-2",
|
|
123
|
+
"data-testid": "agent-approval-pending",
|
|
124
|
+
children: [
|
|
125
|
+
/* @__PURE__ */ C("div", {
|
|
126
|
+
className: "flex items-center gap-2 flex-wrap",
|
|
127
|
+
children: [/* @__PURE__ */ S(l, {
|
|
128
|
+
variant: "warning",
|
|
129
|
+
children: L.status
|
|
130
|
+
}), /* @__PURE__ */ C("span", {
|
|
131
|
+
className: "text-sm text-text-secondary",
|
|
132
|
+
children: [
|
|
133
|
+
_("botlit.agentApproval.requestedBy", "Requested by"),
|
|
134
|
+
" ",
|
|
135
|
+
B(L.requestedById),
|
|
136
|
+
" ",
|
|
137
|
+
n(L.createdAt)
|
|
138
|
+
]
|
|
139
|
+
})]
|
|
140
|
+
}),
|
|
141
|
+
L.requestNote && /* @__PURE__ */ S("p", {
|
|
142
|
+
className: "text-sm break-words",
|
|
143
|
+
children: L.requestNote
|
|
144
|
+
}),
|
|
145
|
+
L.isStale && /* @__PURE__ */ C("p", {
|
|
146
|
+
className: "flex items-center gap-2 text-sm text-status-warning-text",
|
|
147
|
+
children: [/* @__PURE__ */ S(w, { size: 14 }), _("botlit.agentApproval.stale", "The agent changed after this request. Submit a new request so the reviewer sees the current configuration.")]
|
|
148
|
+
}),
|
|
149
|
+
/* @__PURE__ */ S("div", {
|
|
150
|
+
className: "flex gap-2 flex-wrap",
|
|
151
|
+
children: z ? /* @__PURE__ */ C(x, { children: [/* @__PURE__ */ S(c, {
|
|
152
|
+
variant: "outline",
|
|
153
|
+
size: "sm",
|
|
154
|
+
isLoading: N === "cancel",
|
|
155
|
+
onClick: () => void H(L),
|
|
156
|
+
children: _("botlit.agentApproval.cancelAction", "Cancel request")
|
|
157
|
+
}), L.isStale && /* @__PURE__ */ S(c, {
|
|
158
|
+
size: "sm",
|
|
159
|
+
onClick: () => F({ kind: "request" }),
|
|
160
|
+
children: _("botlit.agentApproval.resubmitAction", "Submit new request")
|
|
161
|
+
})] }) : /* @__PURE__ */ C(x, { children: [/* @__PURE__ */ S(c, {
|
|
162
|
+
size: "sm",
|
|
163
|
+
leftIcon: /* @__PURE__ */ S(T, { size: 14 }),
|
|
164
|
+
disabled: L.isStale,
|
|
165
|
+
onClick: () => F({
|
|
166
|
+
kind: "approve",
|
|
167
|
+
request: L
|
|
168
|
+
}),
|
|
169
|
+
children: _("botlit.agentApproval.approveAction", "Approve")
|
|
170
|
+
}), /* @__PURE__ */ S(c, {
|
|
171
|
+
size: "sm",
|
|
172
|
+
variant: "destructive",
|
|
173
|
+
leftIcon: /* @__PURE__ */ S(O, { size: 14 }),
|
|
174
|
+
onClick: () => F({
|
|
175
|
+
kind: "reject",
|
|
176
|
+
request: L
|
|
177
|
+
}),
|
|
178
|
+
children: _("botlit.agentApproval.rejectAction", "Reject")
|
|
179
|
+
})] })
|
|
180
|
+
})
|
|
181
|
+
]
|
|
182
|
+
}),
|
|
183
|
+
R.length > 0 && /* @__PURE__ */ C("div", {
|
|
184
|
+
className: "space-y-2",
|
|
185
|
+
children: [/* @__PURE__ */ S("p", {
|
|
186
|
+
className: "text-sm font-medium",
|
|
187
|
+
children: _("botlit.agentApproval.history", "Decision history")
|
|
188
|
+
}), /* @__PURE__ */ S("ul", {
|
|
189
|
+
className: "space-y-2",
|
|
190
|
+
"data-testid": "agent-approval-history",
|
|
191
|
+
children: R.map((e) => /* @__PURE__ */ C("li", {
|
|
192
|
+
className: "p-3 border border-border-subtle rounded-lg text-sm space-y-1",
|
|
193
|
+
children: [/* @__PURE__ */ C("div", {
|
|
194
|
+
className: "flex items-center gap-2 flex-wrap",
|
|
195
|
+
children: [/* @__PURE__ */ S(l, {
|
|
196
|
+
variant: A(e.status),
|
|
197
|
+
children: e.status
|
|
198
|
+
}), /* @__PURE__ */ C("span", {
|
|
199
|
+
className: "text-text-secondary",
|
|
200
|
+
children: [
|
|
201
|
+
_("botlit.agentApproval.decidedBy", "by"),
|
|
202
|
+
" ",
|
|
203
|
+
B(e.reviewerId),
|
|
204
|
+
" ",
|
|
205
|
+
e.decidedAt ? n(e.decidedAt) : ""
|
|
206
|
+
]
|
|
207
|
+
})]
|
|
208
|
+
}), e.decisionReason && /* @__PURE__ */ S("p", {
|
|
209
|
+
className: "break-words",
|
|
210
|
+
children: e.decisionReason
|
|
211
|
+
})]
|
|
212
|
+
}, e.id))
|
|
213
|
+
})]
|
|
214
|
+
}),
|
|
215
|
+
!L && R.length === 0 && !b.loading && /* @__PURE__ */ S("p", {
|
|
216
|
+
className: "text-sm text-text-secondary",
|
|
217
|
+
children: _("botlit.agentApproval.empty", "No activation requests for this agent yet.")
|
|
218
|
+
})
|
|
219
|
+
]
|
|
220
|
+
}),
|
|
221
|
+
/* @__PURE__ */ S(j, {
|
|
222
|
+
kind: P?.kind ?? null,
|
|
223
|
+
loading: N !== null,
|
|
224
|
+
onClose: () => F(null),
|
|
225
|
+
onConfirm: V
|
|
226
|
+
})
|
|
227
|
+
]
|
|
228
|
+
});
|
|
229
|
+
};
|
|
230
|
+
//#endregion
|
|
231
|
+
export { M as AgentApprovalPanel, j as ApprovalDecisionDialog, A as approvalStatusVariant };
|
|
232
|
+
|
|
233
|
+
//# sourceMappingURL=AgentApprovalPanel.js.map
|