@burdenoff/microfe-botmanor 2026.819.1 → 2026.925.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (72) hide show
  1. package/dist/botlit/BotlitRoutes.js.map +1 -1
  2. package/dist/botlit/BotmanorRoot.js.map +1 -1
  3. package/dist/botlit/BotmanorRootInner.js +4 -4
  4. package/dist/botlit/BotmanorRootInner.js.map +1 -1
  5. package/dist/botlit/components/ErrorState.js +33 -29
  6. package/dist/botlit/components/ErrorState.js.map +1 -1
  7. package/dist/botlit/components/RouteLoader.js +52 -48
  8. package/dist/botlit/components/RouteLoader.js.map +1 -1
  9. package/dist/botlit/components/VersionHistoryPanel.js +74 -77
  10. package/dist/botlit/components/VersionHistoryPanel.js.map +1 -1
  11. package/dist/botlit/components/WorkspaceRequired.js +31 -30
  12. package/dist/botlit/components/WorkspaceRequired.js.map +1 -1
  13. package/dist/botlit/hooks/internal/workspaceGateway.js.map +1 -1
  14. package/dist/botlit/hooks/useConversations.js.map +1 -1
  15. package/dist/botlit/hooks/useLLMProviders.js.map +1 -1
  16. package/dist/botlit/hooks/useMCPServers.js +60 -49
  17. package/dist/botlit/hooks/useMCPServers.js.map +1 -1
  18. package/dist/botlit/pages/A2AAgentDetailPage.js +1 -1
  19. package/dist/botlit/pages/A2AAgentDetailPage.js.map +1 -1
  20. package/dist/botlit/pages/A2ARegistryPage.js +116 -124
  21. package/dist/botlit/pages/A2ARegistryPage.js.map +1 -1
  22. package/dist/botlit/pages/AgentDetailPage.js +169 -172
  23. package/dist/botlit/pages/AgentDetailPage.js.map +1 -1
  24. package/dist/botlit/pages/AgentsListPage.js +96 -90
  25. package/dist/botlit/pages/AgentsListPage.js.map +1 -1
  26. package/dist/botlit/pages/BotChannelsTab.js.map +1 -1
  27. package/dist/botlit/pages/BotDetailPage.js +228 -231
  28. package/dist/botlit/pages/BotDetailPage.js.map +1 -1
  29. package/dist/botlit/pages/BotWorkflowTab.js +84 -87
  30. package/dist/botlit/pages/BotWorkflowTab.js.map +1 -1
  31. package/dist/botlit/pages/BotsListPage.js +144 -147
  32. package/dist/botlit/pages/BotsListPage.js.map +1 -1
  33. package/dist/botlit/pages/BucketsPage.js +3 -3
  34. package/dist/botlit/pages/BucketsPage.js.map +1 -1
  35. package/dist/botlit/pages/ChannelDetailPage.js +1 -1
  36. package/dist/botlit/pages/ChannelDetailPage.js.map +1 -1
  37. package/dist/botlit/pages/ChannelsPage.js +156 -149
  38. package/dist/botlit/pages/ChannelsPage.js.map +1 -1
  39. package/dist/botlit/pages/ChatPage.js +126 -129
  40. package/dist/botlit/pages/ChatPage.js.map +1 -1
  41. package/dist/botlit/pages/DashboardPage.js +111 -114
  42. package/dist/botlit/pages/DashboardPage.js.map +1 -1
  43. package/dist/botlit/pages/ExecutionsPage.js +163 -159
  44. package/dist/botlit/pages/ExecutionsPage.js.map +1 -1
  45. package/dist/botlit/pages/InstalledPackagesPage.js +3 -3
  46. package/dist/botlit/pages/InstalledPackagesPage.js.map +1 -1
  47. package/dist/botlit/pages/KnowledgeBasesPage.js +84 -78
  48. package/dist/botlit/pages/KnowledgeBasesPage.js.map +1 -1
  49. package/dist/botlit/pages/MCPServerDetailPage.js +295 -238
  50. package/dist/botlit/pages/MCPServerDetailPage.js.map +1 -1
  51. package/dist/botlit/pages/MCPServersPage.js +159 -154
  52. package/dist/botlit/pages/MCPServersPage.js.map +1 -1
  53. package/dist/botlit/pages/PoliciesPage.js +119 -114
  54. package/dist/botlit/pages/PoliciesPage.js.map +1 -1
  55. package/dist/botlit/pages/RetrievalProfilesPage.js +102 -109
  56. package/dist/botlit/pages/RetrievalProfilesPage.js.map +1 -1
  57. package/dist/botlit/pages/SettingsPage.js +144 -159
  58. package/dist/botlit/pages/SettingsPage.js.map +1 -1
  59. package/dist/botlit/pages/SkillsPage.js +122 -105
  60. package/dist/botlit/pages/SkillsPage.js.map +1 -1
  61. package/dist/botlit/pages/StorePage.js +176 -175
  62. package/dist/botlit/pages/StorePage.js.map +1 -1
  63. package/dist/botlit/providers/BotlitProvider.js.map +1 -1
  64. package/dist/botlit/store/botlitStore.js +1 -1
  65. package/dist/botlit/store/botlitStore.js.map +1 -1
  66. package/dist/botlit/utils/navigation.js.map +1 -1
  67. package/dist/generated/wspace-operations.js +45 -29
  68. package/dist/generated/wspace-operations.js.map +1 -1
  69. package/dist/generated/wspace-types.js.map +1 -1
  70. package/dist/shared/hooks/useTr.js +14 -0
  71. package/dist/shared/hooks/useTr.js.map +1 -0
  72. package/package.json +33 -9
@@ -1,230 +1,222 @@
1
- import { useBotlit as e } from "../providers/BotlitProvider.js";
2
- import { formatRelativeTime as t } from "../utils/formatters.js";
3
- import { PageLayout as n } from "../components/PageLayout.js";
4
- import { Card as r, CardContent as i, CardDescription as a, CardHeader as o, CardTitle as s } from "../components/Card.js";
5
- import { Button as c } from "../components/Button.js";
6
- import { Badge as l, StatusBadge as u } from "../components/Badge.js";
7
- import { EmptyState as d } from "../components/EmptyState.js";
8
- import { Input as f } from "../components/Input.js";
9
- import { a2aAgentSkillCount as p, useA2AAgents as m } from "../hooks/useA2A.js";
10
- import { ErrorState as h } from "../components/ErrorState.js";
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 { PageLayout as r } from "../components/PageLayout.js";
5
+ import { Card as i, CardContent as a, CardDescription as o, CardHeader as s, CardTitle as c } from "../components/Card.js";
6
+ import { Button as l } from "../components/Button.js";
7
+ import { Badge as u, StatusBadge as d } from "../components/Badge.js";
8
+ import { EmptyState as f } from "../components/EmptyState.js";
9
+ import { Input as p } from "../components/Input.js";
10
+ import { a2aAgentSkillCount as m, useA2AAgents as h } from "../hooks/useA2A.js";
11
+ import { ErrorState as g } from "../components/ErrorState.js";
11
12
  import "../hooks/index.js";
12
- import { useState as g } from "react";
13
- import { GlassCard as _, PagePurpose as v } from "@burdenoff/fe-libs/ui";
14
- import { jsx as y, jsxs as b } from "react/jsx-runtime";
15
- import { Link as x } from "react-router";
16
- import { AlertCircle as S, CheckCircle as C, ExternalLink as w, Filter as T, Globe as E, Plus as D, Search as O, Shield as k, Zap as A } from "lucide-react";
13
+ import { useState as _ } from "react";
14
+ import { GlassCard as v, PagePurpose as y } from "@burdenoff/fe-libs/ui";
15
+ import { jsx as b, jsxs as x } from "react/jsx-runtime";
16
+ import { Link as S } from "react-router";
17
+ import { AlertCircle as C, CheckCircle as w, ExternalLink as T, Filter as E, Globe as D, Plus as O, Search as k, Shield as A, Zap as j } from "lucide-react";
17
18
  //#region src/botlit/pages/A2ARegistryPage.tsx
18
- var j = ({ level: e }) => {
19
+ var M = ({ level: e, t }) => {
19
20
  switch (e) {
20
- case "INTERNAL": return /* @__PURE__ */ b(l, {
21
+ case "INTERNAL": return /* @__PURE__ */ x(u, {
21
22
  variant: "success",
22
23
  className: "flex items-center gap-1",
23
- children: [/* @__PURE__ */ y(k, { size: 12 }), "Internal"]
24
+ children: [/* @__PURE__ */ b(A, { size: 12 }), t("botlit.a2aRegistry.trustBadge.internal", "Internal")]
24
25
  });
25
- case "VERIFIED_PUBLISHER": return /* @__PURE__ */ b(l, {
26
+ case "VERIFIED_PUBLISHER": return /* @__PURE__ */ x(u, {
26
27
  variant: "default",
27
28
  className: "flex items-center gap-1",
28
- children: [/* @__PURE__ */ y(C, { size: 12 }), "Verified"]
29
+ children: [/* @__PURE__ */ b(w, { size: 12 }), t("botlit.a2aRegistry.trustBadge.verified", "Verified")]
29
30
  });
30
- default: return /* @__PURE__ */ b(l, {
31
+ default: return /* @__PURE__ */ x(u, {
31
32
  variant: "outline",
32
33
  className: "flex items-center gap-1",
33
- children: [/* @__PURE__ */ y(S, { size: 12 }), "Unverified"]
34
+ children: [/* @__PURE__ */ b(C, { size: 12 }), t("botlit.a2aRegistry.trustBadge.unverified", "Unverified")]
34
35
  });
35
36
  }
36
- }, M = () => {
37
- let { getPath: S } = e(), [C, M] = g(""), { data: N, loading: P, error: F, refetch: I } = m({ search: C });
38
- return /* @__PURE__ */ y(n, {
39
- title: "A2A Registry",
40
- description: "Discover and connect to external agents via the Agent-to-Agent protocol",
41
- actions: /* @__PURE__ */ y(c, {
42
- leftIcon: /* @__PURE__ */ y(D, { size: 16 }),
43
- children: /* @__PURE__ */ y(x, {
44
- to: S("a2a/register"),
45
- children: "Register Agent"
37
+ }, N = () => {
38
+ let C = e(), { getPath: w } = t(), [N, P] = _(""), { data: F, loading: I, error: L, refetch: R } = h({ search: N });
39
+ return /* @__PURE__ */ b(r, {
40
+ title: C("botlit.a2aRegistry.title", "A2A Registry"),
41
+ description: C("botlit.a2aRegistry.description", "Discover and connect to external agents via the Agent-to-Agent protocol"),
42
+ actions: /* @__PURE__ */ b(l, {
43
+ leftIcon: /* @__PURE__ */ b(O, { size: 16 }),
44
+ children: /* @__PURE__ */ b(S, {
45
+ to: w("a2a/register"),
46
+ children: C("botlit.a2aRegistry.actions.registerAgent", "Register Agent")
46
47
  })
47
48
  }),
48
- children: /* @__PURE__ */ b("div", {
49
+ children: /* @__PURE__ */ x("div", {
49
50
  className: "space-y-6",
50
51
  children: [
51
- /* @__PURE__ */ b(v, {
52
- icon: /* @__PURE__ */ y(E, { size: 18 }),
53
- children: [
54
- "The A2A (Agent-to-Agent) registry lets your bots collaborate with external agents — your own or third-party — over a shared open protocol. Register an agent by its",
55
- /* @__PURE__ */ y("code", { children: " /.well-known/agent.json" }),
56
- " card to discover its skills, set how much you trust it, and let your agents delegate tasks to it. Use this page to curate that network of partner agents."
57
- ]
52
+ /* @__PURE__ */ b(y, {
53
+ icon: /* @__PURE__ */ b(D, { size: 18 }),
54
+ children: C("botlit.a2aRegistry.purpose", "The A2A (Agent-to-Agent) registry lets your bots collaborate with external agents — your own or third-party — over a shared open protocol. Register an agent by its /.well-known/agent.json card to discover its skills, set how much you trust it, and let your agents delegate tasks to it. Use this page to curate that network of partner agents.")
58
55
  }),
59
- /* @__PURE__ */ b("div", {
56
+ /* @__PURE__ */ x("div", {
60
57
  className: "flex items-center gap-4",
61
- children: [/* @__PURE__ */ b("div", {
58
+ children: [/* @__PURE__ */ x("div", {
62
59
  className: "relative flex-1 max-w-md",
63
- children: [/* @__PURE__ */ y(O, { className: "absolute left-3 top-1/2 -translate-y-1/2 h-4 w-4 text-text-secondary" }), /* @__PURE__ */ y(f, {
64
- placeholder: "Search A2A agents...",
65
- value: C,
66
- onChange: (e) => M(e.target.value),
60
+ children: [/* @__PURE__ */ b(k, { className: "absolute left-3 top-1/2 -translate-y-1/2 h-4 w-4 text-text-secondary" }), /* @__PURE__ */ b(p, {
61
+ placeholder: C("botlit.a2aRegistry.searchPlaceholder", "Search A2A agents..."),
62
+ value: N,
63
+ onChange: (e) => P(e.target.value),
67
64
  className: "pl-9"
68
65
  })]
69
- }), /* @__PURE__ */ y(c, {
66
+ }), /* @__PURE__ */ b(l, {
70
67
  variant: "outline",
71
- leftIcon: /* @__PURE__ */ y(T, { size: 16 }),
72
- children: "Filters"
68
+ leftIcon: /* @__PURE__ */ b(E, { size: 16 }),
69
+ children: C("botlit.a2aRegistry.actions.filters", "Filters")
73
70
  })]
74
71
  }),
75
- P ? /* @__PURE__ */ y("div", {
72
+ I ? /* @__PURE__ */ b("div", {
76
73
  className: "grid grid-cols-1 md:grid-cols-2 gap-4",
77
74
  children: [
78
75
  1,
79
76
  2,
80
77
  3,
81
78
  4
82
- ].map((e) => /* @__PURE__ */ y("div", { className: "h-56 bg-bg-sunken motion-safe:animate-vc-shimmer rounded-lg" }, e))
83
- }) : F ? /* @__PURE__ */ y(h, {
79
+ ].map((e) => /* @__PURE__ */ b("div", { className: "h-56 bg-bg-sunken motion-safe:animate-vc-shimmer rounded-lg" }, e))
80
+ }) : L ? /* @__PURE__ */ b(g, {
84
81
  resource: "the A2A registry",
85
- error: F,
86
- onRetry: () => void I()
87
- }) : N.length > 0 ? /* @__PURE__ */ y("div", {
82
+ error: L,
83
+ onRetry: () => void R()
84
+ }) : F.length > 0 ? /* @__PURE__ */ b("div", {
88
85
  className: "grid grid-cols-1 md:grid-cols-2 gap-4",
89
- children: N.map((e) => /* @__PURE__ */ y(x, {
90
- to: S(`a2a/${e.id}`),
91
- children: /* @__PURE__ */ b(r, {
86
+ children: F.map((e) => /* @__PURE__ */ b(S, {
87
+ to: w(`a2a/${e.id}`),
88
+ children: /* @__PURE__ */ x(i, {
92
89
  className: "h-full hover:border-primary/50 transition-colors cursor-pointer",
93
- children: [/* @__PURE__ */ y(o, { children: /* @__PURE__ */ b("div", {
90
+ children: [/* @__PURE__ */ b(s, { children: /* @__PURE__ */ x("div", {
94
91
  className: "flex items-start justify-between",
95
- children: [/* @__PURE__ */ b("div", {
92
+ children: [/* @__PURE__ */ x("div", {
96
93
  className: "flex items-center gap-3",
97
- children: [/* @__PURE__ */ y("div", {
94
+ children: [/* @__PURE__ */ b("div", {
98
95
  className: "p-2 bg-action-primary-bg/10 rounded-lg",
99
- children: /* @__PURE__ */ y(E, { className: "h-5 w-5 text-primary" })
100
- }), /* @__PURE__ */ b("div", { children: [/* @__PURE__ */ y(s, {
96
+ children: /* @__PURE__ */ b(D, { className: "h-5 w-5 text-primary" })
97
+ }), /* @__PURE__ */ x("div", { children: [/* @__PURE__ */ b(c, {
101
98
  className: "text-base",
102
99
  children: e.name
103
- }), /* @__PURE__ */ y(a, {
100
+ }), /* @__PURE__ */ b(o, {
104
101
  className: "text-xs line-clamp-2",
105
102
  children: e.description
106
103
  })] })]
107
- }), /* @__PURE__ */ y(u, { status: e.status })]
108
- }) }), /* @__PURE__ */ y(i, { children: /* @__PURE__ */ b("div", {
104
+ }), /* @__PURE__ */ b(d, { status: e.status })]
105
+ }) }), /* @__PURE__ */ b(a, { children: /* @__PURE__ */ x("div", {
109
106
  className: "space-y-3",
110
107
  children: [
111
- /* @__PURE__ */ b("div", {
108
+ /* @__PURE__ */ x("div", {
112
109
  className: "flex items-center justify-between",
113
- children: [/* @__PURE__ */ y("span", {
110
+ children: [/* @__PURE__ */ b("span", {
114
111
  className: "text-sm text-text-secondary",
115
- children: "Trust Level"
116
- }), /* @__PURE__ */ y(j, { level: e.trustLevel })]
112
+ children: C("botlit.a2aRegistry.list.trustLevel", "Trust Level")
113
+ }), /* @__PURE__ */ b(M, {
114
+ level: e.trustLevel,
115
+ t: C
116
+ })]
117
117
  }),
118
- /* @__PURE__ */ b("div", {
118
+ /* @__PURE__ */ x("div", {
119
119
  className: "flex items-center justify-between",
120
- children: [/* @__PURE__ */ y("span", {
120
+ children: [/* @__PURE__ */ b("span", {
121
121
  className: "text-sm text-text-secondary",
122
- children: "Available Skills"
123
- }), /* @__PURE__ */ b(l, {
122
+ children: C("botlit.a2aRegistry.list.availableSkills", "Available Skills")
123
+ }), /* @__PURE__ */ b(u, {
124
124
  variant: "secondary",
125
- children: [p(e), " skills"]
125
+ children: C("botlit.a2aRegistry.list.skillsCount", "{{count}} skills", { count: m(e) })
126
126
  })]
127
127
  }),
128
- /* @__PURE__ */ b("div", {
128
+ /* @__PURE__ */ x("div", {
129
129
  className: "flex items-center gap-2 text-sm text-text-secondary",
130
- children: [/* @__PURE__ */ y(w, { size: 14 }), /* @__PURE__ */ y("span", {
130
+ children: [/* @__PURE__ */ b(T, { size: 14 }), /* @__PURE__ */ b("span", {
131
131
  className: "truncate",
132
132
  children: e.wellKnownUrl ?? "—"
133
133
  })]
134
134
  }),
135
- /* @__PURE__ */ b("div", {
135
+ /* @__PURE__ */ x("div", {
136
136
  className: "pt-3 border-t border-border-subtle flex items-center justify-between text-xs text-text-secondary",
137
- children: [/* @__PURE__ */ b("span", { children: ["Added ", t(e.createdAt)] }), /* @__PURE__ */ b(c, {
137
+ children: [/* @__PURE__ */ x("span", { children: [
138
+ C("botlit.a2aRegistry.list.added", "Added"),
139
+ " ",
140
+ n(e.createdAt)
141
+ ] }), /* @__PURE__ */ x(l, {
138
142
  variant: "ghost",
139
143
  size: "sm",
140
144
  className: "h-7 text-xs",
141
- children: [/* @__PURE__ */ y(A, {
145
+ children: [/* @__PURE__ */ b(j, {
142
146
  size: 12,
143
147
  className: "mr-1"
144
- }), "Test"]
148
+ }), C("botlit.a2aRegistry.actions.test", "Test")]
145
149
  })]
146
150
  })
147
151
  ]
148
152
  }) })]
149
153
  })
150
154
  }, e.id))
151
- }) : /* @__PURE__ */ y(d, {
155
+ }) : /* @__PURE__ */ b(f, {
152
156
  illustration: "empty-people",
153
- title: "No A2A agents registered",
154
- description: "Register external agents to enable agent-to-agent communication and delegation.",
155
- action: /* @__PURE__ */ y(c, {
156
- leftIcon: /* @__PURE__ */ y(D, { size: 16 }),
157
- children: /* @__PURE__ */ y(x, {
158
- to: S("a2a/register"),
159
- children: "Register Agent"
157
+ title: C("botlit.a2aRegistry.empty.title", "No A2A agents registered"),
158
+ description: C("botlit.a2aRegistry.empty.description", "Register external agents to enable agent-to-agent communication and delegation."),
159
+ action: /* @__PURE__ */ b(l, {
160
+ leftIcon: /* @__PURE__ */ b(O, { size: 16 }),
161
+ children: /* @__PURE__ */ b(S, {
162
+ to: w("a2a/register"),
163
+ children: C("botlit.a2aRegistry.actions.registerAgent", "Register Agent")
160
164
  })
161
165
  })
162
166
  }),
163
- /* @__PURE__ */ b(_, {
167
+ /* @__PURE__ */ x(v, {
164
168
  treatment: "glass",
165
169
  glow: !0,
166
170
  className: "p-6",
167
- children: [/* @__PURE__ */ b("div", {
171
+ children: [/* @__PURE__ */ x("div", {
168
172
  className: "mb-4",
169
- children: [/* @__PURE__ */ b("h2", {
173
+ children: [/* @__PURE__ */ x("h2", {
170
174
  className: "flex items-center gap-2 text-lg font-semibold tracking-tight text-text-primary",
171
- children: [/* @__PURE__ */ y(E, { size: 18 }), "Agent-to-Agent Protocol"]
172
- }), /* @__PURE__ */ y("p", {
175
+ children: [/* @__PURE__ */ b(D, { size: 18 }), C("botlit.a2aRegistry.overview.title", "Agent-to-Agent Protocol")]
176
+ }), /* @__PURE__ */ b("p", {
173
177
  className: "text-sm text-text-secondary",
174
- children: "A2A enables secure communication between agents across different systems"
178
+ children: C("botlit.a2aRegistry.overview.description", "A2A enables secure communication between agents across different systems")
175
179
  })]
176
- }), /* @__PURE__ */ b("div", {
180
+ }), /* @__PURE__ */ x("div", {
177
181
  className: "grid grid-cols-1 md:grid-cols-3 gap-6",
178
182
  children: [
179
- /* @__PURE__ */ b("div", {
183
+ /* @__PURE__ */ x("div", {
180
184
  className: "space-y-2",
181
- children: [/* @__PURE__ */ b("h4", {
185
+ children: [/* @__PURE__ */ x("h4", {
182
186
  className: "font-medium flex items-center gap-2",
183
- children: [/* @__PURE__ */ y(k, {
187
+ children: [/* @__PURE__ */ b(A, {
184
188
  size: 16,
185
189
  className: "text-primary"
186
- }), "Trust Levels"]
190
+ }), C("botlit.a2aRegistry.overview.trustTitle", "Trust Levels")]
187
191
  }), /* @__PURE__ */ b("ul", {
188
192
  className: "text-sm text-text-secondary space-y-1",
189
- children: [
190
- /* @__PURE__ */ b("li", { children: [/* @__PURE__ */ y("strong", { children: "Internal:" }), " Your own agents"] }),
191
- /* @__PURE__ */ b("li", { children: [/* @__PURE__ */ y("strong", { children: "Verified:" }), " Publisher verified by Botlit"] }),
192
- /* @__PURE__ */ b("li", { children: [/* @__PURE__ */ y("strong", { children: "Unverified:" }), " Community agents"] })
193
- ]
193
+ children: /* @__PURE__ */ b("li", { children: C("botlit.a2aRegistry.overview.trustDescription", "Internal: your own agents; Verified: publisher verified by BotManor; Unverified: community agents.") })
194
194
  })]
195
195
  }),
196
- /* @__PURE__ */ b("div", {
196
+ /* @__PURE__ */ x("div", {
197
197
  className: "space-y-2",
198
- children: [/* @__PURE__ */ b("h4", {
198
+ children: [/* @__PURE__ */ x("h4", {
199
199
  className: "font-medium flex items-center gap-2",
200
- children: [/* @__PURE__ */ y(A, {
200
+ children: [/* @__PURE__ */ b(j, {
201
201
  size: 16,
202
202
  className: "text-primary"
203
- }), "Capabilities"]
203
+ }), C("botlit.a2aRegistry.overview.capabilitiesTitle", "Capabilities")]
204
204
  }), /* @__PURE__ */ b("ul", {
205
205
  className: "text-sm text-text-secondary space-y-1",
206
- children: [
207
- /* @__PURE__ */ y("li", { children: "Skill discovery via agent cards" }),
208
- /* @__PURE__ */ y("li", { children: "Secure task delegation" }),
209
- /* @__PURE__ */ y("li", { children: "Structured input/output modes" })
210
- ]
206
+ children: /* @__PURE__ */ b("li", { children: C("botlit.a2aRegistry.overview.capabilitiesDescription", "Skill discovery via agent cards, secure task delegation, and structured input/output modes.") })
211
207
  })]
212
208
  }),
213
- /* @__PURE__ */ b("div", {
209
+ /* @__PURE__ */ x("div", {
214
210
  className: "space-y-2",
215
- children: [/* @__PURE__ */ b("h4", {
211
+ children: [/* @__PURE__ */ x("h4", {
216
212
  className: "font-medium flex items-center gap-2",
217
- children: [/* @__PURE__ */ y(w, {
213
+ children: [/* @__PURE__ */ b(T, {
218
214
  size: 16,
219
215
  className: "text-primary"
220
- }), "Integration"]
216
+ }), C("botlit.a2aRegistry.overview.integrationTitle", "Integration")]
221
217
  }), /* @__PURE__ */ b("ul", {
222
218
  className: "text-sm text-text-secondary space-y-1",
223
- children: [
224
- /* @__PURE__ */ y("li", { children: "Discover via /.well-known/agent.json" }),
225
- /* @__PURE__ */ y("li", { children: "Automatic capability negotiation" }),
226
- /* @__PURE__ */ y("li", { children: "Entitlement-based access control" })
227
- ]
219
+ children: /* @__PURE__ */ b("li", { children: C("botlit.a2aRegistry.overview.integrationDescription", "Discover via /.well-known/agent.json, automatic capability negotiation, and entitlement-based access control.") })
228
220
  })]
229
221
  })
230
222
  ]
@@ -235,6 +227,6 @@ var j = ({ level: e }) => {
235
227
  });
236
228
  };
237
229
  //#endregion
238
- export { M as A2ARegistryPage };
230
+ export { N as A2ARegistryPage };
239
231
 
240
232
  //# sourceMappingURL=A2ARegistryPage.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"A2ARegistryPage.js","names":[],"sources":["../../../src/botlit/pages/A2ARegistryPage.tsx"],"sourcesContent":["/**\n * A2A Registry Page\n * @module botlit/pages\n */\n\nimport type { FC } from 'react';\nimport { useState } from 'react';\nimport { Link } from 'react-router';\nimport { useBotlit } from '../providers/BotlitProvider';\nimport {\n Plus,\n Search as SearchIcon,\n Filter,\n Globe,\n Shield,\n CheckCircle,\n AlertCircle,\n ExternalLink,\n Zap,\n} from 'lucide-react';\nimport { PagePurpose, GlassCard } from '@burdenoff/fe-libs/ui';\nimport { PageLayout } from '../components/PageLayout';\nimport { Card, CardHeader, CardTitle, CardContent, CardDescription } from '../components/Card';\nimport { Button } from '../components/Button';\nimport { Input } from '../components/Input';\nimport { Badge, StatusBadge } from '../components/Badge';\nimport { EmptyState } from '../components/EmptyState';\nimport { ErrorState } from '../components/ErrorState';\nimport { useA2AAgents, a2aAgentSkillCount, type A2AAgentRecord } from '../hooks';\nimport { formatRelativeTime, MISSING_VALUE } from '../utils/formatters';\n\nconst TrustBadge: FC<{ level: string }> = ({ level }) => {\n switch (level) {\n case 'INTERNAL':\n return (\n <Badge variant=\"success\" className=\"flex items-center gap-1\">\n <Shield size={12} />\n Internal\n </Badge>\n );\n case 'VERIFIED_PUBLISHER':\n return (\n <Badge variant=\"default\" className=\"flex items-center gap-1\">\n <CheckCircle size={12} />\n Verified\n </Badge>\n );\n case 'UNVERIFIED':\n default:\n return (\n <Badge variant=\"outline\" className=\"flex items-center gap-1\">\n <AlertCircle size={12} />\n Unverified\n </Badge>\n );\n }\n};\n\nexport const A2ARegistryPage: FC = () => {\n const { getPath } = useBotlit();\n const [search, setSearch] = useState('');\n const { data: agents, loading, error, refetch } = useA2AAgents({ search });\n\n return (\n <PageLayout\n title=\"A2A Registry\"\n description=\"Discover and connect to external agents via the Agent-to-Agent protocol\"\n actions={\n <Button leftIcon={<Plus size={16} />}>\n <Link to={getPath('a2a/register')}>Register Agent</Link>\n </Button>\n }\n >\n <div className=\"space-y-6\">\n <PagePurpose icon={<Globe size={18} />}>\n The A2A (Agent-to-Agent) registry lets your bots collaborate with external agents — your\n own or third-party — over a shared open protocol. Register an agent by its\n <code> /.well-known/agent.json</code> card to discover its skills, set how much you trust\n it, and let your agents delegate tasks to it. Use this page to curate that network of\n partner agents.\n </PagePurpose>\n\n {/* Search */}\n <div className=\"flex items-center gap-4\">\n <div className=\"relative flex-1 max-w-md\">\n <SearchIcon className=\"absolute left-3 top-1/2 -translate-y-1/2 h-4 w-4 text-text-secondary\" />\n <Input\n placeholder=\"Search A2A agents...\"\n value={search}\n onChange={(e) => setSearch(e.target.value)}\n className=\"pl-9\"\n />\n </div>\n <Button variant=\"outline\" leftIcon={<Filter size={16} />}>\n Filters\n </Button>\n </div>\n\n {/* Agents List */}\n {loading ? (\n <div className=\"grid grid-cols-1 md:grid-cols-2 gap-4\">\n {[1, 2, 3, 4].map((i) => (\n <div\n key={i}\n className=\"h-56 bg-bg-sunken motion-safe:animate-vc-shimmer rounded-lg\"\n />\n ))}\n </div>\n ) : error ? (\n <ErrorState resource=\"the A2A registry\" error={error} onRetry={() => void refetch()} />\n ) : agents.length > 0 ? (\n <div className=\"grid grid-cols-1 md:grid-cols-2 gap-4\">\n {agents.map((agent: A2AAgentRecord) => (\n <Link key={agent.id} to={getPath(`a2a/${agent.id}`)}>\n <Card className=\"h-full hover:border-primary/50 transition-colors cursor-pointer\">\n <CardHeader>\n <div className=\"flex items-start justify-between\">\n <div className=\"flex items-center gap-3\">\n <div className=\"p-2 bg-action-primary-bg/10 rounded-lg\">\n <Globe className=\"h-5 w-5 text-primary\" />\n </div>\n <div>\n <CardTitle className=\"text-base\">{agent.name}</CardTitle>\n <CardDescription className=\"text-xs line-clamp-2\">\n {agent.description}\n </CardDescription>\n </div>\n </div>\n <StatusBadge status={agent.status} />\n </div>\n </CardHeader>\n <CardContent>\n <div className=\"space-y-3\">\n {/* Trust Level */}\n <div className=\"flex items-center justify-between\">\n <span className=\"text-sm text-text-secondary\">Trust Level</span>\n <TrustBadge level={agent.trustLevel} />\n </div>\n\n {/* Skills Count */}\n <div className=\"flex items-center justify-between\">\n <span className=\"text-sm text-text-secondary\">Available Skills</span>\n <Badge variant=\"secondary\">{a2aAgentSkillCount(agent)} skills</Badge>\n </div>\n\n {/* Well-known URL */}\n <div className=\"flex items-center gap-2 text-sm text-text-secondary\">\n <ExternalLink size={14} />\n <span className=\"truncate\">{agent.wellKnownUrl ?? MISSING_VALUE}</span>\n </div>\n\n {/* Footer */}\n <div className=\"pt-3 border-t border-border-subtle flex items-center justify-between text-xs text-text-secondary\">\n <span>Added {formatRelativeTime(agent.createdAt)}</span>\n <Button variant=\"ghost\" size=\"sm\" className=\"h-7 text-xs\">\n <Zap size={12} className=\"mr-1\" />\n Test\n </Button>\n </div>\n </div>\n </CardContent>\n </Card>\n </Link>\n ))}\n </div>\n ) : (\n <EmptyState\n illustration=\"empty-people\"\n title=\"No A2A agents registered\"\n description=\"Register external agents to enable agent-to-agent communication and delegation.\"\n action={\n <Button leftIcon={<Plus size={16} />}>\n <Link to={getPath('a2a/register')}>Register Agent</Link>\n </Button>\n }\n />\n )}\n\n {/* A2A Protocol Info */}\n <GlassCard treatment=\"glass\" glow className=\"p-6\">\n <div className=\"mb-4\">\n <h2 className=\"flex items-center gap-2 text-lg font-semibold tracking-tight text-text-primary\">\n <Globe size={18} />\n Agent-to-Agent Protocol\n </h2>\n <p className=\"text-sm text-text-secondary\">\n A2A enables secure communication between agents across different systems\n </p>\n </div>\n <div className=\"grid grid-cols-1 md:grid-cols-3 gap-6\">\n <div className=\"space-y-2\">\n <h4 className=\"font-medium flex items-center gap-2\">\n <Shield size={16} className=\"text-primary\" />\n Trust Levels\n </h4>\n <ul className=\"text-sm text-text-secondary space-y-1\">\n <li>\n <strong>Internal:</strong> Your own agents\n </li>\n <li>\n <strong>Verified:</strong> Publisher verified by Botlit\n </li>\n <li>\n <strong>Unverified:</strong> Community agents\n </li>\n </ul>\n </div>\n <div className=\"space-y-2\">\n <h4 className=\"font-medium flex items-center gap-2\">\n <Zap size={16} className=\"text-primary\" />\n Capabilities\n </h4>\n <ul className=\"text-sm text-text-secondary space-y-1\">\n <li>Skill discovery via agent cards</li>\n <li>Secure task delegation</li>\n <li>Structured input/output modes</li>\n </ul>\n </div>\n <div className=\"space-y-2\">\n <h4 className=\"font-medium flex items-center gap-2\">\n <ExternalLink size={16} className=\"text-primary\" />\n Integration\n </h4>\n <ul className=\"text-sm text-text-secondary space-y-1\">\n <li>Discover via /.well-known/agent.json</li>\n <li>Automatic capability negotiation</li>\n <li>Entitlement-based access control</li>\n </ul>\n </div>\n </div>\n </GlassCard>\n </div>\n </PageLayout>\n );\n};\n"],"mappings":"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"}
1
+ {"version":3,"file":"A2ARegistryPage.js","names":[],"sources":["../../../src/botlit/pages/A2ARegistryPage.tsx"],"sourcesContent":["/**\n * A2A Registry Page\n * @module botlit/pages\n */\n\nimport type { FC } from 'react';\nimport { useState } from 'react';\nimport { Link } from 'react-router';\nimport { useBotlit } from '../providers/BotlitProvider';\nimport {\n Plus,\n Search as SearchIcon,\n Filter,\n Globe,\n Shield,\n CheckCircle,\n AlertCircle,\n ExternalLink,\n Zap,\n} from 'lucide-react';\nimport { useTr } from '../../shared/hooks/useTr';\nimport { PagePurpose, GlassCard } from '@burdenoff/fe-libs/ui';\nimport { PageLayout } from '../components/PageLayout';\nimport { Card, CardHeader, CardTitle, CardContent, CardDescription } from '../components/Card';\nimport { Button } from '../components/Button';\nimport { Input } from '../components/Input';\nimport { Badge, StatusBadge } from '../components/Badge';\nimport { EmptyState } from '../components/EmptyState';\nimport { ErrorState } from '../components/ErrorState';\nimport { useA2AAgents, a2aAgentSkillCount, type A2AAgentRecord } from '../hooks';\nimport { formatRelativeTime, MISSING_VALUE } from '../utils/formatters';\n\nconst TrustBadge: FC<{ level: string; t: ReturnType<typeof useTr> }> = ({ level, t }) => {\n switch (level) {\n case 'INTERNAL':\n return (\n <Badge variant=\"success\" className=\"flex items-center gap-1\">\n <Shield size={12} />\n {t('botlit.a2aRegistry.trustBadge.internal', 'Internal')}\n </Badge>\n );\n case 'VERIFIED_PUBLISHER':\n return (\n <Badge variant=\"default\" className=\"flex items-center gap-1\">\n <CheckCircle size={12} />\n {t('botlit.a2aRegistry.trustBadge.verified', 'Verified')}\n </Badge>\n );\n case 'UNVERIFIED':\n default:\n return (\n <Badge variant=\"outline\" className=\"flex items-center gap-1\">\n <AlertCircle size={12} />\n {t('botlit.a2aRegistry.trustBadge.unverified', 'Unverified')}\n </Badge>\n );\n }\n};\n\nexport const A2ARegistryPage: FC = () => {\n const t = useTr();\n const { getPath } = useBotlit();\n const [search, setSearch] = useState('');\n const { data: agents, loading, error, refetch } = useA2AAgents({ search });\n\n return (\n <PageLayout\n title={t('botlit.a2aRegistry.title', 'A2A Registry')}\n description={t(\n 'botlit.a2aRegistry.description',\n 'Discover and connect to external agents via the Agent-to-Agent protocol'\n )}\n actions={\n <Button leftIcon={<Plus size={16} />}>\n <Link to={getPath('a2a/register')}>\n {t('botlit.a2aRegistry.actions.registerAgent', 'Register Agent')}\n </Link>\n </Button>\n }\n >\n <div className=\"space-y-6\">\n <PagePurpose icon={<Globe size={18} />}>\n {t(\n 'botlit.a2aRegistry.purpose',\n 'The A2A (Agent-to-Agent) registry lets your bots collaborate with external agents — your own or third-party — over a shared open protocol. Register an agent by its /.well-known/agent.json card to discover its skills, set how much you trust it, and let your agents delegate tasks to it. Use this page to curate that network of partner agents.'\n )}\n </PagePurpose>\n\n {/* Search */}\n <div className=\"flex items-center gap-4\">\n <div className=\"relative flex-1 max-w-md\">\n <SearchIcon className=\"absolute left-3 top-1/2 -translate-y-1/2 h-4 w-4 text-text-secondary\" />\n <Input\n placeholder={t('botlit.a2aRegistry.searchPlaceholder', 'Search A2A agents...')}\n value={search}\n onChange={(e) => setSearch(e.target.value)}\n className=\"pl-9\"\n />\n </div>\n <Button variant=\"outline\" leftIcon={<Filter size={16} />}>\n {t('botlit.a2aRegistry.actions.filters', 'Filters')}\n </Button>\n </div>\n\n {/* Agents List */}\n {loading ? (\n <div className=\"grid grid-cols-1 md:grid-cols-2 gap-4\">\n {[1, 2, 3, 4].map((i) => (\n <div\n key={i}\n className=\"h-56 bg-bg-sunken motion-safe:animate-vc-shimmer rounded-lg\"\n />\n ))}\n </div>\n ) : error ? (\n <ErrorState resource=\"the A2A registry\" error={error} onRetry={() => void refetch()} />\n ) : agents.length > 0 ? (\n <div className=\"grid grid-cols-1 md:grid-cols-2 gap-4\">\n {agents.map((agent: A2AAgentRecord) => (\n <Link key={agent.id} to={getPath(`a2a/${agent.id}`)}>\n <Card className=\"h-full hover:border-primary/50 transition-colors cursor-pointer\">\n <CardHeader>\n <div className=\"flex items-start justify-between\">\n <div className=\"flex items-center gap-3\">\n <div className=\"p-2 bg-action-primary-bg/10 rounded-lg\">\n <Globe className=\"h-5 w-5 text-primary\" />\n </div>\n <div>\n <CardTitle className=\"text-base\">{agent.name}</CardTitle>\n <CardDescription className=\"text-xs line-clamp-2\">\n {agent.description}\n </CardDescription>\n </div>\n </div>\n <StatusBadge status={agent.status} />\n </div>\n </CardHeader>\n <CardContent>\n <div className=\"space-y-3\">\n {/* Trust Level */}\n <div className=\"flex items-center justify-between\">\n <span className=\"text-sm text-text-secondary\">\n {t('botlit.a2aRegistry.list.trustLevel', 'Trust Level')}\n </span>\n <TrustBadge level={agent.trustLevel} t={t} />\n </div>\n\n {/* Skills Count */}\n <div className=\"flex items-center justify-between\">\n <span className=\"text-sm text-text-secondary\">\n {t('botlit.a2aRegistry.list.availableSkills', 'Available Skills')}\n </span>\n <Badge variant=\"secondary\">\n {t('botlit.a2aRegistry.list.skillsCount', '{{count}} skills', {\n count: a2aAgentSkillCount(agent),\n })}\n </Badge>\n </div>\n\n {/* Well-known URL */}\n <div className=\"flex items-center gap-2 text-sm text-text-secondary\">\n <ExternalLink size={14} />\n <span className=\"truncate\">{agent.wellKnownUrl ?? MISSING_VALUE}</span>\n </div>\n\n {/* Footer */}\n <div className=\"pt-3 border-t border-border-subtle flex items-center justify-between text-xs text-text-secondary\">\n <span>\n {t('botlit.a2aRegistry.list.added', 'Added')}{' '}\n {formatRelativeTime(agent.createdAt)}\n </span>\n <Button variant=\"ghost\" size=\"sm\" className=\"h-7 text-xs\">\n <Zap size={12} className=\"mr-1\" />\n {t('botlit.a2aRegistry.actions.test', 'Test')}\n </Button>\n </div>\n </div>\n </CardContent>\n </Card>\n </Link>\n ))}\n </div>\n ) : (\n <EmptyState\n illustration=\"empty-people\"\n title={t('botlit.a2aRegistry.empty.title', 'No A2A agents registered')}\n description={t(\n 'botlit.a2aRegistry.empty.description',\n 'Register external agents to enable agent-to-agent communication and delegation.'\n )}\n action={\n <Button leftIcon={<Plus size={16} />}>\n <Link to={getPath('a2a/register')}>\n {t('botlit.a2aRegistry.actions.registerAgent', 'Register Agent')}\n </Link>\n </Button>\n }\n />\n )}\n\n {/* A2A Protocol Info */}\n <GlassCard treatment=\"glass\" glow className=\"p-6\">\n <div className=\"mb-4\">\n <h2 className=\"flex items-center gap-2 text-lg font-semibold tracking-tight text-text-primary\">\n <Globe size={18} />\n {t('botlit.a2aRegistry.overview.title', 'Agent-to-Agent Protocol')}\n </h2>\n <p className=\"text-sm text-text-secondary\">\n {t(\n 'botlit.a2aRegistry.overview.description',\n 'A2A enables secure communication between agents across different systems'\n )}\n </p>\n </div>\n <div className=\"grid grid-cols-1 md:grid-cols-3 gap-6\">\n <div className=\"space-y-2\">\n <h4 className=\"font-medium flex items-center gap-2\">\n <Shield size={16} className=\"text-primary\" />\n {t('botlit.a2aRegistry.overview.trustTitle', 'Trust Levels')}\n </h4>\n <ul className=\"text-sm text-text-secondary space-y-1\">\n <li>\n {t(\n 'botlit.a2aRegistry.overview.trustDescription',\n 'Internal: your own agents; Verified: publisher verified by BotManor; Unverified: community agents.'\n )}\n </li>\n </ul>\n </div>\n <div className=\"space-y-2\">\n <h4 className=\"font-medium flex items-center gap-2\">\n <Zap size={16} className=\"text-primary\" />\n {t('botlit.a2aRegistry.overview.capabilitiesTitle', 'Capabilities')}\n </h4>\n <ul className=\"text-sm text-text-secondary space-y-1\">\n <li>\n {t(\n 'botlit.a2aRegistry.overview.capabilitiesDescription',\n 'Skill discovery via agent cards, secure task delegation, and structured input/output modes.'\n )}\n </li>\n </ul>\n </div>\n <div className=\"space-y-2\">\n <h4 className=\"font-medium flex items-center gap-2\">\n <ExternalLink size={16} className=\"text-primary\" />\n {t('botlit.a2aRegistry.overview.integrationTitle', 'Integration')}\n </h4>\n <ul className=\"text-sm text-text-secondary space-y-1\">\n <li>\n {t(\n 'botlit.a2aRegistry.overview.integrationDescription',\n 'Discover via /.well-known/agent.json, automatic capability negotiation, and entitlement-based access control.'\n )}\n </li>\n </ul>\n </div>\n </div>\n </GlassCard>\n </div>\n </PageLayout>\n );\n};\n"],"mappings":";;;;;;;;;;;;;;;;;;AAgCA,IAAM,KAAkE,EAAE,UAAO,QAAQ;AACvF,SAAQ,GAAR;EACE,KAAK,WACH,QACE,kBAAC,GAAD;GAAO,SAAQ;GAAU,WAAU;aAAnC,CACE,kBAAC,GAAD,EAAQ,MAAM,IAAM,CAAA,EACnB,EAAE,0CAA0C,WAAW,CAClD;;EAEZ,KAAK,qBACH,QACE,kBAAC,GAAD;GAAO,SAAQ;GAAU,WAAU;aAAnC,CACE,kBAAC,GAAD,EAAa,MAAM,IAAM,CAAA,EACxB,EAAE,0CAA0C,WAAW,CAClD;;EAGZ,QACE,QACE,kBAAC,GAAD;GAAO,SAAQ;GAAU,WAAU;aAAnC,CACE,kBAAC,GAAD,EAAa,MAAM,IAAM,CAAA,EACxB,EAAE,4CAA4C,aAAa,CACtD;;;GAKH,UAA4B;CACvC,IAAM,IAAI,GAAO,EACX,EAAE,eAAY,GAAW,EACzB,CAAC,GAAQ,KAAa,EAAS,GAAG,EAClC,EAAE,MAAM,GAAQ,YAAS,UAAO,eAAY,EAAa,EAAE,WAAQ,CAAC;AAE1E,QACE,kBAAC,GAAD;EACE,OAAO,EAAE,4BAA4B,eAAe;EACpD,aAAa,EACX,kCACA,0EACD;EACD,SACE,kBAAC,GAAD;GAAQ,UAAU,kBAAC,GAAD,EAAM,MAAM,IAAM,CAAA;aAClC,kBAAC,GAAD;IAAM,IAAI,EAAQ,eAAe;cAC9B,EAAE,4CAA4C,iBAAiB;IAC3D,CAAA;GACA,CAAA;YAGX,kBAAC,OAAD;GAAK,WAAU;aAAf;IACE,kBAAC,GAAD;KAAa,MAAM,kBAAC,GAAD,EAAO,MAAM,IAAM,CAAA;eACnC,EACC,8BACA,wVACD;KACW,CAAA;IAGd,kBAAC,OAAD;KAAK,WAAU;eAAf,CACE,kBAAC,OAAD;MAAK,WAAU;gBAAf,CACE,kBAAC,GAAD,EAAY,WAAU,wEAAyE,CAAA,EAC/F,kBAAC,GAAD;OACE,aAAa,EAAE,wCAAwC,uBAAuB;OAC9E,OAAO;OACP,WAAW,MAAM,EAAU,EAAE,OAAO,MAAM;OAC1C,WAAU;OACV,CAAA,CACE;SACN,kBAAC,GAAD;MAAQ,SAAQ;MAAU,UAAU,kBAAC,GAAD,EAAQ,MAAM,IAAM,CAAA;gBACrD,EAAE,sCAAsC,UAAU;MAC5C,CAAA,CACL;;IAGL,IACC,kBAAC,OAAD;KAAK,WAAU;eACZ;MAAC;MAAG;MAAG;MAAG;MAAE,CAAC,KAAK,MACjB,kBAAC,OAAD,EAEE,WAAU,+DACV,EAFK,EAEL,CACF;KACE,CAAA,GACJ,IACF,kBAAC,GAAD;KAAY,UAAS;KAA0B;KAAO,eAAe,KAAK,GAAS;KAAI,CAAA,GACrF,EAAO,SAAS,IAClB,kBAAC,OAAD;KAAK,WAAU;eACZ,EAAO,KAAK,MACX,kBAAC,GAAD;MAAqB,IAAI,EAAQ,OAAO,EAAM,KAAK;gBACjD,kBAAC,GAAD;OAAM,WAAU;iBAAhB,CACE,kBAAC,GAAD,EAAA,UACE,kBAAC,OAAD;QAAK,WAAU;kBAAf,CACE,kBAAC,OAAD;SAAK,WAAU;mBAAf,CACE,kBAAC,OAAD;UAAK,WAAU;oBACb,kBAAC,GAAD,EAAO,WAAU,wBAAyB,CAAA;UACtC,CAAA,EACN,kBAAC,OAAD,EAAA,UAAA,CACE,kBAAC,GAAD;UAAW,WAAU;oBAAa,EAAM;UAAiB,CAAA,EACzD,kBAAC,GAAD;UAAiB,WAAU;oBACxB,EAAM;UACS,CAAA,CACd,EAAA,CAAA,CACF;YACN,kBAAC,GAAD,EAAa,QAAQ,EAAM,QAAU,CAAA,CACjC;WACK,CAAA,EACb,kBAAC,GAAD,EAAA,UACE,kBAAC,OAAD;QAAK,WAAU;kBAAf;SAEE,kBAAC,OAAD;UAAK,WAAU;oBAAf,CACE,kBAAC,QAAD;WAAM,WAAU;qBACb,EAAE,sCAAsC,cAAc;WAClD,CAAA,EACP,kBAAC,GAAD;WAAY,OAAO,EAAM;WAAe;WAAK,CAAA,CACzC;;SAGN,kBAAC,OAAD;UAAK,WAAU;oBAAf,CACE,kBAAC,QAAD;WAAM,WAAU;qBACb,EAAE,2CAA2C,mBAAmB;WAC5D,CAAA,EACP,kBAAC,GAAD;WAAO,SAAQ;qBACZ,EAAE,uCAAuC,oBAAoB,EAC5D,OAAO,EAAmB,EAAM,EACjC,CAAC;WACI,CAAA,CACJ;;SAGN,kBAAC,OAAD;UAAK,WAAU;oBAAf,CACE,kBAAC,GAAD,EAAc,MAAM,IAAM,CAAA,EAC1B,kBAAC,QAAD;WAAM,WAAU;qBAAY,EAAM,gBAAA;WAAqC,CAAA,CACnE;;SAGN,kBAAC,OAAD;UAAK,WAAU;oBAAf,CACE,kBAAC,QAAD,EAAA,UAAA;WACG,EAAE,iCAAiC,QAAQ;WAAE;WAC7C,EAAmB,EAAM,UAAU;WAC/B,EAAA,CAAA,EACP,kBAAC,GAAD;WAAQ,SAAQ;WAAQ,MAAK;WAAK,WAAU;qBAA5C,CACE,kBAAC,GAAD;YAAK,MAAM;YAAI,WAAU;YAAS,CAAA,EACjC,EAAE,mCAAmC,OAAO,CACtC;aACL;;SACF;WACM,CAAA,CACT;;MACF,EA5DI,EAAM,GA4DV,CACP;KACE,CAAA,GAEN,kBAAC,GAAD;KACE,cAAa;KACb,OAAO,EAAE,kCAAkC,2BAA2B;KACtE,aAAa,EACX,wCACA,kFACD;KACD,QACE,kBAAC,GAAD;MAAQ,UAAU,kBAAC,GAAD,EAAM,MAAM,IAAM,CAAA;gBAClC,kBAAC,GAAD;OAAM,IAAI,EAAQ,eAAe;iBAC9B,EAAE,4CAA4C,iBAAiB;OAC3D,CAAA;MACA,CAAA;KAEX,CAAA;IAIJ,kBAAC,GAAD;KAAW,WAAU;KAAQ,MAAA;KAAK,WAAU;eAA5C,CACE,kBAAC,OAAD;MAAK,WAAU;gBAAf,CACE,kBAAC,MAAD;OAAI,WAAU;iBAAd,CACE,kBAAC,GAAD,EAAO,MAAM,IAAM,CAAA,EAClB,EAAE,qCAAqC,0BAA0B,CAC/D;UACL,kBAAC,KAAD;OAAG,WAAU;iBACV,EACC,2CACA,2EACD;OACC,CAAA,CACA;SACN,kBAAC,OAAD;MAAK,WAAU;gBAAf;OACE,kBAAC,OAAD;QAAK,WAAU;kBAAf,CACE,kBAAC,MAAD;SAAI,WAAU;mBAAd,CACE,kBAAC,GAAD;UAAQ,MAAM;UAAI,WAAU;UAAiB,CAAA,EAC5C,EAAE,0CAA0C,eAAe,CACzD;YACL,kBAAC,MAAD;SAAI,WAAU;mBACZ,kBAAC,MAAD,EAAA,UACG,EACC,gDACA,qGACD,EACE,CAAA;SACF,CAAA,CACD;;OACN,kBAAC,OAAD;QAAK,WAAU;kBAAf,CACE,kBAAC,MAAD;SAAI,WAAU;mBAAd,CACE,kBAAC,GAAD;UAAK,MAAM;UAAI,WAAU;UAAiB,CAAA,EACzC,EAAE,iDAAiD,eAAe,CAChE;YACL,kBAAC,MAAD;SAAI,WAAU;mBACZ,kBAAC,MAAD,EAAA,UACG,EACC,uDACA,8FACD,EACE,CAAA;SACF,CAAA,CACD;;OACN,kBAAC,OAAD;QAAK,WAAU;kBAAf,CACE,kBAAC,MAAD;SAAI,WAAU;mBAAd,CACE,kBAAC,GAAD;UAAc,MAAM;UAAI,WAAU;UAAiB,CAAA,EAClD,EAAE,gDAAgD,cAAc,CAC9D;YACL,kBAAC,MAAD;SAAI,WAAU;mBACZ,kBAAC,MAAD,EAAA,UACG,EACC,sDACA,gHACD,EACE,CAAA;SACF,CAAA,CACD;;OACF;QACI;;IACR;;EACK,CAAA"}