@burdenoff/microfe-botmanor 2026.813.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (160) hide show
  1. package/README.md +12 -0
  2. package/dist/botlit/BotlitRoutes.js +357 -0
  3. package/dist/botlit/BotlitRoutes.js.map +1 -0
  4. package/dist/botlit/BotmanorRoot.js +12 -0
  5. package/dist/botlit/BotmanorRoot.js.map +1 -0
  6. package/dist/botlit/BotmanorRootInner.js +101 -0
  7. package/dist/botlit/BotmanorRootInner.js.map +1 -0
  8. package/dist/botlit/components/Badge.js +39 -0
  9. package/dist/botlit/components/Badge.js.map +1 -0
  10. package/dist/botlit/components/Button.js +46 -0
  11. package/dist/botlit/components/Button.js.map +1 -0
  12. package/dist/botlit/components/Card.js +31 -0
  13. package/dist/botlit/components/Card.js.map +1 -0
  14. package/dist/botlit/components/ChannelSelectorSheet.js +130 -0
  15. package/dist/botlit/components/ChannelSelectorSheet.js.map +1 -0
  16. package/dist/botlit/components/EmptyState.js +35 -0
  17. package/dist/botlit/components/EmptyState.js.map +1 -0
  18. package/dist/botlit/components/ErrorState.js +33 -0
  19. package/dist/botlit/components/ErrorState.js.map +1 -0
  20. package/dist/botlit/components/Input.js +59 -0
  21. package/dist/botlit/components/Input.js.map +1 -0
  22. package/dist/botlit/components/PageLayout.js +34 -0
  23. package/dist/botlit/components/PageLayout.js.map +1 -0
  24. package/dist/botlit/components/QuotaExhaustedDialog.js +20 -0
  25. package/dist/botlit/components/QuotaExhaustedDialog.js.map +1 -0
  26. package/dist/botlit/components/RouteLoader.js +52 -0
  27. package/dist/botlit/components/RouteLoader.js.map +1 -0
  28. package/dist/botlit/components/VersionHistoryPanel.js +144 -0
  29. package/dist/botlit/components/VersionHistoryPanel.js.map +1 -0
  30. package/dist/botlit/components/WorkspaceRequired.js +70 -0
  31. package/dist/botlit/components/WorkspaceRequired.js.map +1 -0
  32. package/dist/botlit/hooks/index.js +16 -0
  33. package/dist/botlit/hooks/internal/mutationInput.js +16 -0
  34. package/dist/botlit/hooks/internal/mutationInput.js.map +1 -0
  35. package/dist/botlit/hooks/internal/workspaceGateway.js +99 -0
  36. package/dist/botlit/hooks/internal/workspaceGateway.js.map +1 -0
  37. package/dist/botlit/hooks/useA2A.js +184 -0
  38. package/dist/botlit/hooks/useA2A.js.map +1 -0
  39. package/dist/botlit/hooks/useAgents.js +469 -0
  40. package/dist/botlit/hooks/useAgents.js.map +1 -0
  41. package/dist/botlit/hooks/useBots.js +306 -0
  42. package/dist/botlit/hooks/useBots.js.map +1 -0
  43. package/dist/botlit/hooks/useBuckets.js +119 -0
  44. package/dist/botlit/hooks/useBuckets.js.map +1 -0
  45. package/dist/botlit/hooks/useChannels.js +213 -0
  46. package/dist/botlit/hooks/useChannels.js.map +1 -0
  47. package/dist/botlit/hooks/useConversations.js +64 -0
  48. package/dist/botlit/hooks/useConversations.js.map +1 -0
  49. package/dist/botlit/hooks/useExecutions.js +86 -0
  50. package/dist/botlit/hooks/useExecutions.js.map +1 -0
  51. package/dist/botlit/hooks/useKnowledgeBases.js +113 -0
  52. package/dist/botlit/hooks/useKnowledgeBases.js.map +1 -0
  53. package/dist/botlit/hooks/useLLMProviders.js +83 -0
  54. package/dist/botlit/hooks/useLLMProviders.js.map +1 -0
  55. package/dist/botlit/hooks/useMCPServers.js +134 -0
  56. package/dist/botlit/hooks/useMCPServers.js.map +1 -0
  57. package/dist/botlit/hooks/usePolicies.js +120 -0
  58. package/dist/botlit/hooks/usePolicies.js.map +1 -0
  59. package/dist/botlit/hooks/usePromptTemplates.js +161 -0
  60. package/dist/botlit/hooks/usePromptTemplates.js.map +1 -0
  61. package/dist/botlit/hooks/useRetrievalProfiles.js +146 -0
  62. package/dist/botlit/hooks/useRetrievalProfiles.js.map +1 -0
  63. package/dist/botlit/hooks/useSkills.js +132 -0
  64. package/dist/botlit/hooks/useSkills.js.map +1 -0
  65. package/dist/botlit/hooks/useStore.js +167 -0
  66. package/dist/botlit/hooks/useStore.js.map +1 -0
  67. package/dist/botlit/hooks/useUserPlatformConnection.js +172 -0
  68. package/dist/botlit/hooks/useUserPlatformConnection.js.map +1 -0
  69. package/dist/botlit/index.js +11 -0
  70. package/dist/botlit/pages/A2AAgentDetailPage.js +589 -0
  71. package/dist/botlit/pages/A2AAgentDetailPage.js.map +1 -0
  72. package/dist/botlit/pages/A2ARegistryPage.js +240 -0
  73. package/dist/botlit/pages/A2ARegistryPage.js.map +1 -0
  74. package/dist/botlit/pages/AgentBuilderPage.js +486 -0
  75. package/dist/botlit/pages/AgentBuilderPage.js.map +1 -0
  76. package/dist/botlit/pages/AgentDetailPage.js +517 -0
  77. package/dist/botlit/pages/AgentDetailPage.js.map +1 -0
  78. package/dist/botlit/pages/AgentsListPage.js +294 -0
  79. package/dist/botlit/pages/AgentsListPage.js.map +1 -0
  80. package/dist/botlit/pages/BotChannelsTab.js +530 -0
  81. package/dist/botlit/pages/BotChannelsTab.js.map +1 -0
  82. package/dist/botlit/pages/BotDetailPage.js +872 -0
  83. package/dist/botlit/pages/BotDetailPage.js.map +1 -0
  84. package/dist/botlit/pages/BotWorkflowTab.js +229 -0
  85. package/dist/botlit/pages/BotWorkflowTab.js.map +1 -0
  86. package/dist/botlit/pages/BotsListPage.js +313 -0
  87. package/dist/botlit/pages/BotsListPage.js.map +1 -0
  88. package/dist/botlit/pages/BucketsPage.js +604 -0
  89. package/dist/botlit/pages/BucketsPage.js.map +1 -0
  90. package/dist/botlit/pages/ChannelDetailPage.js +955 -0
  91. package/dist/botlit/pages/ChannelDetailPage.js.map +1 -0
  92. package/dist/botlit/pages/ChannelRoutesPage.js +218 -0
  93. package/dist/botlit/pages/ChannelRoutesPage.js.map +1 -0
  94. package/dist/botlit/pages/ChannelsPage.js +304 -0
  95. package/dist/botlit/pages/ChannelsPage.js.map +1 -0
  96. package/dist/botlit/pages/ChatPage.js +247 -0
  97. package/dist/botlit/pages/ChatPage.js.map +1 -0
  98. package/dist/botlit/pages/DashboardPage.js +318 -0
  99. package/dist/botlit/pages/DashboardPage.js.map +1 -0
  100. package/dist/botlit/pages/ExecutionDetailPage.js +313 -0
  101. package/dist/botlit/pages/ExecutionDetailPage.js.map +1 -0
  102. package/dist/botlit/pages/ExecutionsPage.js +294 -0
  103. package/dist/botlit/pages/ExecutionsPage.js.map +1 -0
  104. package/dist/botlit/pages/InstalledPackagesPage.js +619 -0
  105. package/dist/botlit/pages/InstalledPackagesPage.js.map +1 -0
  106. package/dist/botlit/pages/KnowledgeBaseDetailPage.js +473 -0
  107. package/dist/botlit/pages/KnowledgeBaseDetailPage.js.map +1 -0
  108. package/dist/botlit/pages/KnowledgeBasesPage.js +150 -0
  109. package/dist/botlit/pages/KnowledgeBasesPage.js.map +1 -0
  110. package/dist/botlit/pages/MCPServerDetailPage.js +550 -0
  111. package/dist/botlit/pages/MCPServerDetailPage.js.map +1 -0
  112. package/dist/botlit/pages/MCPServersPage.js +321 -0
  113. package/dist/botlit/pages/MCPServersPage.js.map +1 -0
  114. package/dist/botlit/pages/PoliciesPage.js +224 -0
  115. package/dist/botlit/pages/PoliciesPage.js.map +1 -0
  116. package/dist/botlit/pages/PolicyDetailPage.js +861 -0
  117. package/dist/botlit/pages/PolicyDetailPage.js.map +1 -0
  118. package/dist/botlit/pages/PromptStudioPage.js +236 -0
  119. package/dist/botlit/pages/PromptStudioPage.js.map +1 -0
  120. package/dist/botlit/pages/PromptTemplateDetailPage.js +812 -0
  121. package/dist/botlit/pages/PromptTemplateDetailPage.js.map +1 -0
  122. package/dist/botlit/pages/PromptTemplatesPage.js +269 -0
  123. package/dist/botlit/pages/PromptTemplatesPage.js.map +1 -0
  124. package/dist/botlit/pages/RetrievalProfileDetailPage.js +559 -0
  125. package/dist/botlit/pages/RetrievalProfileDetailPage.js.map +1 -0
  126. package/dist/botlit/pages/RetrievalProfilesPage.js +219 -0
  127. package/dist/botlit/pages/RetrievalProfilesPage.js.map +1 -0
  128. package/dist/botlit/pages/SettingsPage.js +655 -0
  129. package/dist/botlit/pages/SettingsPage.js.map +1 -0
  130. package/dist/botlit/pages/SkillDetailPage.js +778 -0
  131. package/dist/botlit/pages/SkillDetailPage.js.map +1 -0
  132. package/dist/botlit/pages/SkillsPage.js +206 -0
  133. package/dist/botlit/pages/SkillsPage.js.map +1 -0
  134. package/dist/botlit/pages/StorePackageDetailPage.js +462 -0
  135. package/dist/botlit/pages/StorePackageDetailPage.js.map +1 -0
  136. package/dist/botlit/pages/StorePage.js +315 -0
  137. package/dist/botlit/pages/StorePage.js.map +1 -0
  138. package/dist/botlit/providers/BotlitProvider.js +93 -0
  139. package/dist/botlit/providers/BotlitProvider.js.map +1 -0
  140. package/dist/botlit/store/botlitStore.js +101 -0
  141. package/dist/botlit/store/botlitStore.js.map +1 -0
  142. package/dist/botlit/utils/cn.js +10 -0
  143. package/dist/botlit/utils/cn.js.map +1 -0
  144. package/dist/botlit/utils/formatters.js +37 -0
  145. package/dist/botlit/utils/formatters.js.map +1 -0
  146. package/dist/botlit/utils/navigation.js +9 -0
  147. package/dist/botlit/utils/navigation.js.map +1 -0
  148. package/dist/botlit/utils/unions.js +14 -0
  149. package/dist/botlit/utils/unions.js.map +1 -0
  150. package/dist/generated/global-operations.js +66 -0
  151. package/dist/generated/global-operations.js.map +1 -0
  152. package/dist/generated/global-types.js +8 -0
  153. package/dist/generated/global-types.js.map +1 -0
  154. package/dist/generated/wspace-operations.js +1591 -0
  155. package/dist/generated/wspace-operations.js.map +1 -0
  156. package/dist/generated/wspace-types.js +12 -0
  157. package/dist/generated/wspace-types.js.map +1 -0
  158. package/dist/index.js +13 -0
  159. package/dist/utils/nativeBridge.js +2 -0
  160. package/package.json +133 -0
@@ -0,0 +1,589 @@
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 { isNative as d, nativeImpact as f, nativeNotify as p } from "../../utils/nativeBridge.js";
8
+ import { EmptyState as m } from "../components/EmptyState.js";
9
+ import { FormField as h, Input as g, Textarea as _ } from "../components/Input.js";
10
+ import { readAgentCard as v, readEntitlements as ee, useA2AAgent as te, useDeleteA2AAgent as ne, useRegisterA2AAgent as y, useUpdateA2AAgent as b, validateAgentCard as x } from "../hooks/useA2A.js";
11
+ import { useEffect as S, useMemo as C, useState as w } from "react";
12
+ import { PagePurpose as T } from "@burdenoff/fe-libs/ui";
13
+ import { Fragment as E, jsx as D, jsxs as O } from "react/jsx-runtime";
14
+ import { useParams as re } from "react-router";
15
+ import { ArrowLeft as ie, Edit as ae, ExternalLink as k, Globe as A, Key as oe, Share2 as se, Shield as j, Trash2 as M, Zap as N } from "lucide-react";
16
+ import { toast as P } from "sonner";
17
+ //#region src/botlit/pages/A2AAgentDetailPage.tsx
18
+ var F = [
19
+ "UNVERIFIED",
20
+ "VERIFIED_PUBLISHER",
21
+ "INTERNAL"
22
+ ], I = {
23
+ name: "",
24
+ description: "",
25
+ wellKnownUrl: "",
26
+ trustLevel: "UNVERIFIED",
27
+ agentCardJson: JSON.stringify({
28
+ name: "",
29
+ description: "",
30
+ url: "",
31
+ version: "1.0.0",
32
+ capabilities: {
33
+ streaming: !1,
34
+ pushNotifications: !1,
35
+ stateTransitionHistory: !1
36
+ },
37
+ authentication: { schemes: ["bearer"] },
38
+ defaultInputModes: ["text"],
39
+ defaultOutputModes: ["text"],
40
+ skills: []
41
+ }, null, 2)
42
+ };
43
+ function L(e) {
44
+ return F.includes(e) ? e : "UNVERIFIED";
45
+ }
46
+ function R(e) {
47
+ return {
48
+ name: e.name,
49
+ description: e.description ?? "",
50
+ wellKnownUrl: e.wellKnownUrl ?? "",
51
+ trustLevel: L(e.trustLevel),
52
+ agentCardJson: JSON.stringify(e.agentCard ?? {}, null, 2)
53
+ };
54
+ }
55
+ function z(e) {
56
+ try {
57
+ let t = JSON.parse(e);
58
+ return typeof t == "object" && t && !Array.isArray(t) ? t : void 0;
59
+ } catch {
60
+ return;
61
+ }
62
+ }
63
+ var B = ({ isNew: F = !1 }) => {
64
+ let { agentId: B } = re(), { navigateTo: V } = e(), { data: H, loading: U } = te(F ? void 0 : B), [W, G] = y(), [ce, le] = b(), [ue, de] = ne(), [K, q] = w(F), [J, Y] = w(!1), [X, Z] = w(I);
65
+ S(() => {
66
+ H && !F && Z(R(H));
67
+ }, [H, F]);
68
+ let Q = C(() => v(K ? z(X.agentCardJson) : H?.agentCard ?? void 0), [
69
+ K,
70
+ X.agentCardJson,
71
+ H
72
+ ]), $ = C(() => ee(H?.entitlements), [H?.entitlements]);
73
+ if (U && !F) return /* @__PURE__ */ D(n, {
74
+ title: "Loading...",
75
+ children: /* @__PURE__ */ D("div", { className: "h-96 bg-bg-sunken motion-safe:animate-vc-shimmer rounded-lg" })
76
+ });
77
+ if (!H && !F) return /* @__PURE__ */ D(n, {
78
+ title: "A2A Agent Not Found",
79
+ children: /* @__PURE__ */ D(m, {
80
+ illustration: "empty-people",
81
+ title: "A2A Agent Not Found",
82
+ description: "The A2A agent doesn't exist.",
83
+ action: /* @__PURE__ */ D(c, {
84
+ onClick: () => V("a2a"),
85
+ children: "Back to A2A Registry"
86
+ })
87
+ })
88
+ });
89
+ let fe = (e) => {
90
+ switch (e) {
91
+ case "INTERNAL": return "success";
92
+ case "VERIFIED_PUBLISHER": return "default";
93
+ default: return "secondary";
94
+ }
95
+ }, pe = async () => {
96
+ if (!X.name.trim()) {
97
+ P.error("Name is required");
98
+ return;
99
+ }
100
+ let e = z(X.agentCardJson);
101
+ if (!e) {
102
+ P.error("Agent card must be a valid JSON object");
103
+ return;
104
+ }
105
+ let t = x(e);
106
+ if (!t.valid) {
107
+ P.error(t.errors[0]);
108
+ return;
109
+ }
110
+ if (F) {
111
+ try {
112
+ let t = await W({
113
+ name: X.name.trim(),
114
+ description: X.description.trim() || null,
115
+ wellKnownUrl: X.wellKnownUrl.trim() || null,
116
+ trustLevel: X.trustLevel,
117
+ agentCard: e
118
+ });
119
+ P.success(`Registered "${t.name}"`), V(`a2a/${t.id}`);
120
+ } catch (e) {
121
+ P.error(e instanceof Error ? e.message : "Failed to register A2A agent");
122
+ }
123
+ return;
124
+ }
125
+ if (B) try {
126
+ await ce({
127
+ agentId: B,
128
+ input: {
129
+ name: X.name.trim(),
130
+ description: X.description.trim() || null,
131
+ wellKnownUrl: X.wellKnownUrl.trim() || null,
132
+ trustLevel: X.trustLevel,
133
+ agentCard: e
134
+ }
135
+ }), P.success("A2A agent updated"), q(!1);
136
+ } catch (e) {
137
+ P.error(e instanceof Error ? e.message : "Failed to update A2A agent");
138
+ }
139
+ }, me = async () => {
140
+ if (B) try {
141
+ await ue(B), d() && p("success"), P.success("A2A agent removed"), V("a2a");
142
+ } catch (e) {
143
+ d() && p("error"), P.error(e instanceof Error ? e.message : "Failed to remove A2A agent");
144
+ }
145
+ };
146
+ return /* @__PURE__ */ D(n, {
147
+ title: /* @__PURE__ */ O("div", {
148
+ className: "flex items-center gap-3",
149
+ children: [
150
+ /* @__PURE__ */ D(c, {
151
+ variant: "ghost",
152
+ size: "icon",
153
+ onClick: () => V("a2a"),
154
+ children: /* @__PURE__ */ D(ie, { size: 20 })
155
+ }),
156
+ /* @__PURE__ */ D(se, {
157
+ size: 24,
158
+ className: "text-primary"
159
+ }),
160
+ /* @__PURE__ */ O("div", { children: [/* @__PURE__ */ O("div", {
161
+ className: "flex items-center gap-2",
162
+ children: [
163
+ /* @__PURE__ */ D("span", { children: F ? "Register A2A Agent" : H?.name }),
164
+ !F && H && /* @__PURE__ */ D(u, { status: H.status }),
165
+ !F && H && /* @__PURE__ */ D(l, {
166
+ variant: fe(L(H.trustLevel)),
167
+ children: H.trustLevel.replace("_", " ")
168
+ })
169
+ ]
170
+ }), !F && H?.description && /* @__PURE__ */ D("p", {
171
+ className: "text-sm font-normal text-text-secondary",
172
+ children: H.description
173
+ })] })
174
+ ]
175
+ }),
176
+ actions: /* @__PURE__ */ D("div", {
177
+ className: "flex gap-2",
178
+ children: K ? /* @__PURE__ */ O(E, { children: [/* @__PURE__ */ D(c, {
179
+ variant: "outline",
180
+ onClick: () => F ? V("a2a") : q(!1),
181
+ children: "Cancel"
182
+ }), /* @__PURE__ */ D(c, {
183
+ onClick: pe,
184
+ isLoading: G.loading || le.loading,
185
+ children: F ? "Register Agent" : "Save Changes"
186
+ })] }) : /* @__PURE__ */ O(E, { children: [/* @__PURE__ */ D(c, {
187
+ variant: "outline",
188
+ leftIcon: /* @__PURE__ */ D(ae, { size: 16 }),
189
+ onClick: () => {
190
+ H && Z(R(H)), q(!0);
191
+ },
192
+ children: "Edit"
193
+ }), J ? /* @__PURE__ */ O("div", {
194
+ className: "flex gap-2",
195
+ children: [/* @__PURE__ */ D(c, {
196
+ variant: "outline",
197
+ size: "sm",
198
+ onClick: () => Y(!1),
199
+ children: "Cancel"
200
+ }), /* @__PURE__ */ D(c, {
201
+ variant: "destructive",
202
+ size: "sm",
203
+ onClick: () => {
204
+ f("medium"), me();
205
+ },
206
+ isLoading: de.loading,
207
+ children: "Confirm"
208
+ })]
209
+ }) : /* @__PURE__ */ D(c, {
210
+ variant: "destructive",
211
+ leftIcon: /* @__PURE__ */ D(M, { size: 16 }),
212
+ onClick: () => Y(!0),
213
+ children: "Remove"
214
+ })] })
215
+ }),
216
+ children: /* @__PURE__ */ O("div", {
217
+ className: "space-y-6",
218
+ children: [
219
+ /* @__PURE__ */ D(T, {
220
+ icon: /* @__PURE__ */ D(A, { size: 18 }),
221
+ children: "This is one external agent registered in your A2A network. Inspect its public agent card — the skills it advertises, its provider and trust level — and decide how your own agents may delegate work to it. Keeping this entry accurate is what lets Botlit safely hand off tasks to agents outside your workspace."
222
+ }),
223
+ K && /* @__PURE__ */ O(r, { children: [/* @__PURE__ */ D(o, { children: /* @__PURE__ */ D(s, { children: "Basic Information" }) }), /* @__PURE__ */ O(i, {
224
+ className: "space-y-4",
225
+ children: [
226
+ /* @__PURE__ */ D(h, {
227
+ label: "Name",
228
+ required: !0,
229
+ children: /* @__PURE__ */ D(g, {
230
+ value: X.name,
231
+ onChange: (e) => Z({
232
+ ...X,
233
+ name: e.target.value
234
+ }),
235
+ placeholder: "e.g., External Weather Agent"
236
+ })
237
+ }),
238
+ /* @__PURE__ */ D(h, {
239
+ label: "Description",
240
+ children: /* @__PURE__ */ D(_, {
241
+ value: X.description,
242
+ onChange: (e) => Z({
243
+ ...X,
244
+ description: e.target.value
245
+ }),
246
+ placeholder: "Describe what this A2A agent does...",
247
+ rows: 3
248
+ })
249
+ }),
250
+ /* @__PURE__ */ D(h, {
251
+ label: "Well-Known URL",
252
+ description: "URL to fetch agent.json",
253
+ children: /* @__PURE__ */ D(g, {
254
+ value: X.wellKnownUrl,
255
+ onChange: (e) => Z({
256
+ ...X,
257
+ wellKnownUrl: e.target.value
258
+ }),
259
+ placeholder: "https://example.com/.well-known/agent.json"
260
+ })
261
+ }),
262
+ /* @__PURE__ */ D(h, {
263
+ label: "Trust Level",
264
+ children: /* @__PURE__ */ O("select", {
265
+ className: "flex h-10 w-full rounded-md border border-border-default bg-bg-surface px-3 py-2 text-sm",
266
+ value: X.trustLevel,
267
+ onChange: (e) => Z({
268
+ ...X,
269
+ trustLevel: L(e.target.value)
270
+ }),
271
+ children: [
272
+ /* @__PURE__ */ D("option", {
273
+ value: "UNVERIFIED",
274
+ children: "Unverified"
275
+ }),
276
+ /* @__PURE__ */ D("option", {
277
+ value: "VERIFIED_PUBLISHER",
278
+ children: "Verified Publisher"
279
+ }),
280
+ /* @__PURE__ */ D("option", {
281
+ value: "INTERNAL",
282
+ children: "Internal"
283
+ })
284
+ ]
285
+ })
286
+ }),
287
+ /* @__PURE__ */ D(h, {
288
+ label: "Agent Card (JSON)",
289
+ required: !0,
290
+ description: "Paste the agent's /.well-known/agent.json document",
291
+ children: /* @__PURE__ */ D(_, {
292
+ value: X.agentCardJson,
293
+ onChange: (e) => Z({
294
+ ...X,
295
+ agentCardJson: e.target.value
296
+ }),
297
+ rows: 12,
298
+ className: "font-mono text-xs"
299
+ })
300
+ }),
301
+ !z(X.agentCardJson) && /* @__PURE__ */ D("p", {
302
+ className: "text-sm text-status-error-text",
303
+ children: "Agent card must be a valid JSON object."
304
+ })
305
+ ]
306
+ })] }),
307
+ /* @__PURE__ */ O(r, {
308
+ treatment: "glass",
309
+ glow: !0,
310
+ children: [/* @__PURE__ */ O(o, { children: [/* @__PURE__ */ O(s, {
311
+ className: "flex items-center gap-2",
312
+ children: [/* @__PURE__ */ D(A, { size: 18 }), "Agent Card"]
313
+ }), /* @__PURE__ */ D(a, { children: "Public agent metadata per A2A spec" })] }), /* @__PURE__ */ O(i, {
314
+ className: "space-y-4",
315
+ children: [!F && H?.wellKnownUrl && /* @__PURE__ */ O("div", {
316
+ className: "flex items-center gap-2 p-3 bg-bg-sunken rounded-lg",
317
+ children: [/* @__PURE__ */ D(A, {
318
+ size: 16,
319
+ className: "text-text-secondary"
320
+ }), /* @__PURE__ */ O("a", {
321
+ href: H.wellKnownUrl,
322
+ target: "_blank",
323
+ rel: "noopener noreferrer",
324
+ className: "text-sm text-primary hover:underline flex items-center gap-1",
325
+ children: [H.wellKnownUrl, /* @__PURE__ */ D(k, { size: 12 })]
326
+ })]
327
+ }), /* @__PURE__ */ O("div", {
328
+ className: "grid grid-cols-2 md:grid-cols-4 gap-4",
329
+ children: [
330
+ /* @__PURE__ */ O("div", { children: [/* @__PURE__ */ D("p", {
331
+ className: "text-sm text-text-secondary",
332
+ children: "Agent URL"
333
+ }), /* @__PURE__ */ D("p", {
334
+ className: "font-medium font-mono text-sm",
335
+ children: Q.url || "—"
336
+ })] }),
337
+ /* @__PURE__ */ O("div", { children: [/* @__PURE__ */ D("p", {
338
+ className: "text-sm text-text-secondary",
339
+ children: "Version"
340
+ }), /* @__PURE__ */ D(l, {
341
+ variant: "outline",
342
+ children: Q.version || "—"
343
+ })] }),
344
+ /* @__PURE__ */ O("div", { children: [/* @__PURE__ */ D("p", {
345
+ className: "text-sm text-text-secondary",
346
+ children: "Provider"
347
+ }), /* @__PURE__ */ D("p", {
348
+ className: "font-medium",
349
+ children: Q.providerOrganization || "—"
350
+ })] }),
351
+ /* @__PURE__ */ O("div", { children: [/* @__PURE__ */ D("p", {
352
+ className: "text-sm text-text-secondary",
353
+ children: "Documentation"
354
+ }), Q.documentationUrl ? /* @__PURE__ */ O("a", {
355
+ href: Q.documentationUrl,
356
+ target: "_blank",
357
+ rel: "noopener noreferrer",
358
+ className: "text-primary hover:underline flex items-center gap-1",
359
+ children: ["View Docs ", /* @__PURE__ */ D(k, { size: 12 })]
360
+ }) : /* @__PURE__ */ D("p", {
361
+ className: "text-text-secondary",
362
+ children: "—"
363
+ })] })
364
+ ]
365
+ })]
366
+ })]
367
+ }),
368
+ /* @__PURE__ */ O(r, { children: [/* @__PURE__ */ D(o, { children: /* @__PURE__ */ O(s, {
369
+ className: "flex items-center gap-2",
370
+ children: [/* @__PURE__ */ D(N, { size: 18 }), "Capabilities"]
371
+ }) }), /* @__PURE__ */ O(i, { children: [/* @__PURE__ */ D("div", {
372
+ className: "grid grid-cols-2 md:grid-cols-3 gap-4",
373
+ children: [
374
+ {
375
+ key: "streaming",
376
+ label: "Streaming",
377
+ value: Q.capabilities.streaming
378
+ },
379
+ {
380
+ key: "pushNotifications",
381
+ label: "Push Notifications",
382
+ value: Q.capabilities.pushNotifications
383
+ },
384
+ {
385
+ key: "stateTransitionHistory",
386
+ label: "State History",
387
+ value: Q.capabilities.stateTransitionHistory
388
+ }
389
+ ].map((e) => /* @__PURE__ */ O("div", {
390
+ className: `p-3 rounded-lg border ${e.value ? "border-green-500 bg-green-500/10" : "border-border-subtle bg-bg-sunken"}`,
391
+ children: [/* @__PURE__ */ D("p", {
392
+ className: "font-medium",
393
+ children: e.label
394
+ }), /* @__PURE__ */ D(l, {
395
+ variant: e.value ? "success" : "secondary",
396
+ children: e.value ? "Supported" : "Not Supported"
397
+ })]
398
+ }, e.key))
399
+ }), /* @__PURE__ */ O("div", {
400
+ className: "mt-4 grid grid-cols-2 gap-4",
401
+ children: [/* @__PURE__ */ O("div", { children: [/* @__PURE__ */ D("p", {
402
+ className: "text-sm text-text-secondary mb-2",
403
+ children: "Input Modes"
404
+ }), /* @__PURE__ */ D("div", {
405
+ className: "flex flex-wrap gap-2",
406
+ children: Q.defaultInputModes.length > 0 ? Q.defaultInputModes.map((e) => /* @__PURE__ */ D(l, {
407
+ variant: "outline",
408
+ children: e
409
+ }, e)) : /* @__PURE__ */ D("span", {
410
+ className: "text-text-secondary",
411
+ children: "None"
412
+ })
413
+ })] }), /* @__PURE__ */ O("div", { children: [/* @__PURE__ */ D("p", {
414
+ className: "text-sm text-text-secondary mb-2",
415
+ children: "Output Modes"
416
+ }), /* @__PURE__ */ D("div", {
417
+ className: "flex flex-wrap gap-2",
418
+ children: Q.defaultOutputModes.length > 0 ? Q.defaultOutputModes.map((e) => /* @__PURE__ */ D(l, {
419
+ variant: "outline",
420
+ children: e
421
+ }, e)) : /* @__PURE__ */ D("span", {
422
+ className: "text-text-secondary",
423
+ children: "None"
424
+ })
425
+ })] })]
426
+ })] })] }),
427
+ /* @__PURE__ */ O(r, { children: [/* @__PURE__ */ D(o, { children: /* @__PURE__ */ O(s, {
428
+ className: "flex items-center gap-2",
429
+ children: [/* @__PURE__ */ D(oe, { size: 18 }), "Authentication"]
430
+ }) }), /* @__PURE__ */ D(i, { children: /* @__PURE__ */ O("div", {
431
+ className: "space-y-2",
432
+ children: [/* @__PURE__ */ D("p", {
433
+ className: "text-sm text-text-secondary",
434
+ children: "Supported Schemes"
435
+ }), /* @__PURE__ */ D("div", {
436
+ className: "flex flex-wrap gap-2",
437
+ children: Q.authenticationSchemes.length > 0 ? Q.authenticationSchemes.map((e) => /* @__PURE__ */ D(l, {
438
+ variant: "outline",
439
+ children: e
440
+ }, e)) : /* @__PURE__ */ D("span", {
441
+ className: "text-text-secondary",
442
+ children: "None specified"
443
+ })
444
+ })]
445
+ }) })] }),
446
+ /* @__PURE__ */ O(r, { children: [/* @__PURE__ */ O(o, { children: [/* @__PURE__ */ O(s, {
447
+ className: "flex items-center gap-2",
448
+ children: [/* @__PURE__ */ D(N, { size: 18 }), "Skills"]
449
+ }), /* @__PURE__ */ D(a, { children: "Capabilities exposed by this agent" })] }), /* @__PURE__ */ D(i, { children: Q.skills.length > 0 ? /* @__PURE__ */ D("div", {
450
+ className: "space-y-3",
451
+ children: Q.skills.map((e) => /* @__PURE__ */ O("div", {
452
+ className: "p-4 border border-border-subtle rounded-lg",
453
+ children: [
454
+ /* @__PURE__ */ O("div", {
455
+ className: "flex items-start justify-between",
456
+ children: [/* @__PURE__ */ O("div", { children: [/* @__PURE__ */ D("h4", {
457
+ className: "font-medium",
458
+ children: e.name
459
+ }), /* @__PURE__ */ D("p", {
460
+ className: "text-sm text-text-secondary",
461
+ children: e.description
462
+ })] }), /* @__PURE__ */ D(l, {
463
+ variant: "outline",
464
+ children: e.id
465
+ })]
466
+ }),
467
+ e.tags.length > 0 && /* @__PURE__ */ D("div", {
468
+ className: "mt-2 flex flex-wrap gap-1",
469
+ children: e.tags.map((e) => /* @__PURE__ */ D(l, {
470
+ variant: "secondary",
471
+ className: "text-xs",
472
+ children: e
473
+ }, e))
474
+ }),
475
+ e.examples.length > 0 && /* @__PURE__ */ O("div", {
476
+ className: "mt-2",
477
+ children: [/* @__PURE__ */ D("p", {
478
+ className: "text-xs text-text-secondary",
479
+ children: "Examples:"
480
+ }), /* @__PURE__ */ D("ul", {
481
+ className: "text-sm text-text-secondary list-disc list-inside",
482
+ children: e.examples.map((e, t) => /* @__PURE__ */ D("li", { children: e }, t))
483
+ })]
484
+ })
485
+ ]
486
+ }, e.id))
487
+ }) : /* @__PURE__ */ D("p", {
488
+ className: "text-text-secondary",
489
+ children: "No skills defined"
490
+ }) })] }),
491
+ /* @__PURE__ */ O(r, { children: [/* @__PURE__ */ O(o, { children: [/* @__PURE__ */ O(s, {
492
+ className: "flex items-center gap-2",
493
+ children: [/* @__PURE__ */ D(j, { size: 18 }), "Entitlements"]
494
+ }), /* @__PURE__ */ D(a, { children: "Which apps/agents can invoke this A2A agent" })] }), /* @__PURE__ */ D(i, { children: $.length > 0 ? /* @__PURE__ */ D("div", {
495
+ className: "space-y-3",
496
+ children: $.map((e) => /* @__PURE__ */ O("div", {
497
+ className: "p-4 border border-border-subtle rounded-lg",
498
+ children: [/* @__PURE__ */ O("div", {
499
+ className: "flex items-center justify-between mb-2",
500
+ children: [/* @__PURE__ */ O("div", {
501
+ className: "flex items-center gap-2",
502
+ children: [/* @__PURE__ */ D(l, {
503
+ variant: "outline",
504
+ className: "capitalize",
505
+ children: e.sourceType
506
+ }), /* @__PURE__ */ D("span", {
507
+ className: "font-mono text-sm",
508
+ children: e.sourceId
509
+ })]
510
+ }), e.maxHops && /* @__PURE__ */ O("span", {
511
+ className: "text-sm text-text-secondary",
512
+ children: ["Max Hops: ", e.maxHops]
513
+ })]
514
+ }), /* @__PURE__ */ O("div", {
515
+ className: "grid grid-cols-2 gap-4 text-sm",
516
+ children: [/* @__PURE__ */ O("div", { children: [/* @__PURE__ */ D("p", {
517
+ className: "text-text-secondary",
518
+ children: "Allowed Skills"
519
+ }), e.allowedSkills.length > 0 ? /* @__PURE__ */ D("div", {
520
+ className: "flex flex-wrap gap-1 mt-1",
521
+ children: e.allowedSkills.map((e) => /* @__PURE__ */ D(l, {
522
+ variant: "success",
523
+ className: "text-xs",
524
+ children: e
525
+ }, e))
526
+ }) : /* @__PURE__ */ D("span", {
527
+ className: "text-text-secondary",
528
+ children: "All"
529
+ })] }), /* @__PURE__ */ O("div", { children: [/* @__PURE__ */ D("p", {
530
+ className: "text-text-secondary",
531
+ children: "Disallowed Skills"
532
+ }), e.disallowedSkills.length > 0 ? /* @__PURE__ */ D("div", {
533
+ className: "flex flex-wrap gap-1 mt-1",
534
+ children: e.disallowedSkills.map((e) => /* @__PURE__ */ D(l, {
535
+ variant: "destructive",
536
+ className: "text-xs",
537
+ children: e
538
+ }, e))
539
+ }) : /* @__PURE__ */ D("span", {
540
+ className: "text-text-secondary",
541
+ children: "None"
542
+ })] })]
543
+ })]
544
+ }, e.id))
545
+ }) : /* @__PURE__ */ D("p", {
546
+ className: "text-text-secondary",
547
+ children: "No entitlements configured"
548
+ }) })] }),
549
+ !F && H && /* @__PURE__ */ O(r, { children: [/* @__PURE__ */ D(o, { children: /* @__PURE__ */ D(s, { children: "Metadata" }) }), /* @__PURE__ */ D(i, { children: /* @__PURE__ */ O("div", {
550
+ className: "grid grid-cols-2 md:grid-cols-4 gap-4 text-sm",
551
+ children: [
552
+ /* @__PURE__ */ O("div", { children: [/* @__PURE__ */ D("p", {
553
+ className: "text-text-secondary",
554
+ children: "Created"
555
+ }), /* @__PURE__ */ D("p", {
556
+ className: "font-medium",
557
+ children: t(H.createdAt)
558
+ })] }),
559
+ /* @__PURE__ */ O("div", { children: [/* @__PURE__ */ D("p", {
560
+ className: "text-text-secondary",
561
+ children: "Updated"
562
+ }), /* @__PURE__ */ D("p", {
563
+ className: "font-medium",
564
+ children: t(H.updatedAt)
565
+ })] }),
566
+ /* @__PURE__ */ O("div", { children: [/* @__PURE__ */ D("p", {
567
+ className: "text-text-secondary",
568
+ children: "Revision"
569
+ }), /* @__PURE__ */ D("p", {
570
+ className: "font-medium",
571
+ children: H.revision
572
+ })] }),
573
+ /* @__PURE__ */ O("div", { children: [/* @__PURE__ */ D("p", {
574
+ className: "text-text-secondary",
575
+ children: "Visibility"
576
+ }), /* @__PURE__ */ D(l, {
577
+ variant: "outline",
578
+ children: H.visibility
579
+ })] })
580
+ ]
581
+ }) })] })
582
+ ]
583
+ })
584
+ });
585
+ };
586
+ //#endregion
587
+ export { B as A2AAgentDetailPage };
588
+
589
+ //# sourceMappingURL=A2AAgentDetailPage.js.map