@getcatalystiq/agent-plane-ui 0.1.19 → 0.1.21
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/agent-identity-tab-ETPM6LQN.js +2 -0
- package/dist/agent-identity-tab-F4MU2HP2.cjs +11 -0
- package/dist/chunk-CE2RHDPY.js +422 -0
- package/dist/chunk-CHJL4MZI.cjs +277 -0
- package/dist/chunk-L45SI32F.js +275 -0
- package/dist/chunk-VZ43ATC5.cjs +454 -0
- package/dist/{chunk-OOBDCC6Q.js → chunk-XFI227OB.js} +6 -48
- package/dist/{chunk-VBGYWQUF.cjs → chunk-XXF4U7WL.cjs} +15 -67
- package/dist/editor.cjs +26 -657
- package/dist/editor.js +7 -643
- package/dist/index.cjs +390 -381
- package/dist/index.d.cts +6 -3
- package/dist/index.d.ts +6 -3
- package/dist/index.js +58 -48
- package/package.json +1 -1
package/dist/index.cjs
CHANGED
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
'use strict';
|
|
2
2
|
|
|
3
|
-
var
|
|
3
|
+
var chunkVZ43ATC5_cjs = require('./chunk-VZ43ATC5.cjs');
|
|
4
|
+
var chunkXXF4U7WL_cjs = require('./chunk-XXF4U7WL.cjs');
|
|
4
5
|
var jsxRuntime = require('react/jsx-runtime');
|
|
5
6
|
var React = require('react');
|
|
6
7
|
var swr = require('swr');
|
|
@@ -55,7 +56,7 @@ var Textarea = React__namespace.forwardRef(
|
|
|
55
56
|
return /* @__PURE__ */ jsxRuntime.jsx(
|
|
56
57
|
"textarea",
|
|
57
58
|
{
|
|
58
|
-
className:
|
|
59
|
+
className: chunkXXF4U7WL_cjs.cn(
|
|
59
60
|
"flex min-h-[60px] w-full rounded-md border border-input bg-transparent px-3 py-2 text-sm shadow-sm placeholder:text-muted-foreground focus-visible:outline-none focus-visible:ring-1 focus-visible:ring-ring disabled:cursor-not-allowed disabled:opacity-50",
|
|
60
61
|
className
|
|
61
62
|
),
|
|
@@ -71,7 +72,7 @@ function FormError({ error }) {
|
|
|
71
72
|
return /* @__PURE__ */ jsxRuntime.jsx("p", { className: "text-xs text-destructive", children: error });
|
|
72
73
|
}
|
|
73
74
|
function SectionHeader({ title, children, className }) {
|
|
74
|
-
return /* @__PURE__ */ jsxRuntime.jsxs("div", { className:
|
|
75
|
+
return /* @__PURE__ */ jsxRuntime.jsxs("div", { className: chunkXXF4U7WL_cjs.cn("flex items-center justify-between mb-3", className), children: [
|
|
75
76
|
/* @__PURE__ */ jsxRuntime.jsx("h2", { className: "text-lg font-semibold", children: title }),
|
|
76
77
|
children
|
|
77
78
|
] });
|
|
@@ -95,13 +96,13 @@ function DetailPageHeader({ backHref, backLabel, title, actions, badge, subtitle
|
|
|
95
96
|
] });
|
|
96
97
|
}
|
|
97
98
|
function MetricCard({ label, children, className }) {
|
|
98
|
-
return /* @__PURE__ */ jsxRuntime.jsxs(
|
|
99
|
-
/* @__PURE__ */ jsxRuntime.jsx(
|
|
100
|
-
/* @__PURE__ */ jsxRuntime.jsx(
|
|
99
|
+
return /* @__PURE__ */ jsxRuntime.jsxs(chunkVZ43ATC5_cjs.Card, { className, children: [
|
|
100
|
+
/* @__PURE__ */ jsxRuntime.jsx(chunkVZ43ATC5_cjs.CardHeader, { className: "pb-2", children: /* @__PURE__ */ jsxRuntime.jsx(chunkVZ43ATC5_cjs.CardTitle, { className: "text-sm font-medium text-muted-foreground", children: label }) }),
|
|
101
|
+
/* @__PURE__ */ jsxRuntime.jsx(chunkVZ43ATC5_cjs.CardContent, { children: /* @__PURE__ */ jsxRuntime.jsx("div", { className: "text-2xl font-bold", children }) })
|
|
101
102
|
] });
|
|
102
103
|
}
|
|
103
104
|
function AdminTable({ children, footer, className }) {
|
|
104
|
-
return /* @__PURE__ */ jsxRuntime.jsxs("div", { className:
|
|
105
|
+
return /* @__PURE__ */ jsxRuntime.jsxs("div", { className: chunkXXF4U7WL_cjs.cn("rounded-lg border border-border", className), children: [
|
|
105
106
|
/* @__PURE__ */ jsxRuntime.jsx("table", { className: "w-full text-sm", children }),
|
|
106
107
|
footer
|
|
107
108
|
] });
|
|
@@ -110,10 +111,10 @@ function AdminTableHead({ children }) {
|
|
|
110
111
|
return /* @__PURE__ */ jsxRuntime.jsx("thead", { children: /* @__PURE__ */ jsxRuntime.jsx("tr", { className: "border-b border-border bg-muted/50", children }) });
|
|
111
112
|
}
|
|
112
113
|
function Th({ children, className, align = "left" }) {
|
|
113
|
-
return /* @__PURE__ */ jsxRuntime.jsx("th", { className:
|
|
114
|
+
return /* @__PURE__ */ jsxRuntime.jsx("th", { className: chunkXXF4U7WL_cjs.cn("p-3 font-medium", align === "right" ? "text-right" : "text-left", className), children });
|
|
114
115
|
}
|
|
115
116
|
function AdminTableRow({ children, className }) {
|
|
116
|
-
return /* @__PURE__ */ jsxRuntime.jsx("tr", { className:
|
|
117
|
+
return /* @__PURE__ */ jsxRuntime.jsx("tr", { className: chunkXXF4U7WL_cjs.cn("border-b border-border hover:bg-muted/30 transition-colors", className), children });
|
|
117
118
|
}
|
|
118
119
|
function EmptyRow({ colSpan, children = "No results found" }) {
|
|
119
120
|
return /* @__PURE__ */ jsxRuntime.jsx("tr", { children: /* @__PURE__ */ jsxRuntime.jsx("td", { colSpan, className: "p-8 text-center text-muted-foreground", children }) });
|
|
@@ -216,15 +217,15 @@ function ConfirmDialog({
|
|
|
216
217
|
onConfirm,
|
|
217
218
|
variant = "destructive"
|
|
218
219
|
}) {
|
|
219
|
-
return /* @__PURE__ */ jsxRuntime.jsx(
|
|
220
|
-
/* @__PURE__ */ jsxRuntime.jsx(
|
|
221
|
-
/* @__PURE__ */ jsxRuntime.jsxs(
|
|
220
|
+
return /* @__PURE__ */ jsxRuntime.jsx(chunkXXF4U7WL_cjs.Dialog, { open, onOpenChange, children: /* @__PURE__ */ jsxRuntime.jsxs(chunkXXF4U7WL_cjs.DialogContent, { className: "max-w-sm", children: [
|
|
221
|
+
/* @__PURE__ */ jsxRuntime.jsx(chunkXXF4U7WL_cjs.DialogHeader, { children: /* @__PURE__ */ jsxRuntime.jsx(chunkXXF4U7WL_cjs.DialogTitle, { children: title }) }),
|
|
222
|
+
/* @__PURE__ */ jsxRuntime.jsxs(chunkXXF4U7WL_cjs.DialogBody, { children: [
|
|
222
223
|
/* @__PURE__ */ jsxRuntime.jsx("div", { className: "text-sm text-muted-foreground", children }),
|
|
223
224
|
error && /* @__PURE__ */ jsxRuntime.jsx("p", { className: "text-xs text-destructive mt-3", children: error })
|
|
224
225
|
] }),
|
|
225
|
-
/* @__PURE__ */ jsxRuntime.jsxs(
|
|
226
|
-
/* @__PURE__ */ jsxRuntime.jsx(
|
|
227
|
-
/* @__PURE__ */ jsxRuntime.jsx(
|
|
226
|
+
/* @__PURE__ */ jsxRuntime.jsxs(chunkXXF4U7WL_cjs.DialogFooter, { children: [
|
|
227
|
+
/* @__PURE__ */ jsxRuntime.jsx(chunkXXF4U7WL_cjs.Button, { size: "sm", variant: "outline", onClick: () => onOpenChange(false), disabled: loading, children: "Cancel" }),
|
|
228
|
+
/* @__PURE__ */ jsxRuntime.jsx(chunkXXF4U7WL_cjs.Button, { size: "sm", variant, onClick: onConfirm, disabled: loading, children: loading ? loadingLabel : confirmLabel })
|
|
228
229
|
] })
|
|
229
230
|
] }) });
|
|
230
231
|
}
|
|
@@ -256,7 +257,7 @@ function CopyButton({ text, className = "" }) {
|
|
|
256
257
|
}
|
|
257
258
|
function RunStatusBadge({ status }) {
|
|
258
259
|
const variant = status === "completed" ? "default" : status === "running" ? "secondary" : status === "failed" || status === "timed_out" ? "destructive" : "outline";
|
|
259
|
-
return /* @__PURE__ */ jsxRuntime.jsx(
|
|
260
|
+
return /* @__PURE__ */ jsxRuntime.jsx(chunkXXF4U7WL_cjs.Badge, { variant, children: status.replace("_", " ") });
|
|
260
261
|
}
|
|
261
262
|
var STYLES = {
|
|
262
263
|
schedule: "bg-blue-500/10 text-blue-400",
|
|
@@ -281,8 +282,8 @@ function LocalDate({ value, fallback = "\u2014" }) {
|
|
|
281
282
|
return /* @__PURE__ */ jsxRuntime.jsx(jsxRuntime.Fragment, { children: new Date(value).toLocaleString() });
|
|
282
283
|
}
|
|
283
284
|
function DashboardPage({ initialData, chartComponent: ChartComponent }) {
|
|
284
|
-
const { LinkComponent, basePath } =
|
|
285
|
-
const { data, error, isLoading } =
|
|
285
|
+
const { LinkComponent, basePath } = chunkXXF4U7WL_cjs.useNavigation();
|
|
286
|
+
const { data, error, isLoading } = chunkVZ43ATC5_cjs.useApi(
|
|
286
287
|
"dashboard",
|
|
287
288
|
async (client) => {
|
|
288
289
|
const [stats2, daily_stats2] = await Promise.all([
|
|
@@ -301,10 +302,10 @@ function DashboardPage({ initialData, chartComponent: ChartComponent }) {
|
|
|
301
302
|
}
|
|
302
303
|
if (isLoading || !data) {
|
|
303
304
|
return /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "space-y-6", children: [
|
|
304
|
-
/* @__PURE__ */ jsxRuntime.jsx("div", { className: "grid grid-cols-4 gap-4", children: Array.from({ length: 4 }).map((_, i) => /* @__PURE__ */ jsxRuntime.jsx(
|
|
305
|
+
/* @__PURE__ */ jsxRuntime.jsx("div", { className: "grid grid-cols-4 gap-4", children: Array.from({ length: 4 }).map((_, i) => /* @__PURE__ */ jsxRuntime.jsx(chunkVZ43ATC5_cjs.Skeleton, { className: "h-24 rounded-lg" }, i)) }),
|
|
305
306
|
/* @__PURE__ */ jsxRuntime.jsxs("div", { className: "grid grid-cols-2 gap-4", children: [
|
|
306
|
-
/* @__PURE__ */ jsxRuntime.jsx(
|
|
307
|
-
/* @__PURE__ */ jsxRuntime.jsx(
|
|
307
|
+
/* @__PURE__ */ jsxRuntime.jsx(chunkVZ43ATC5_cjs.Skeleton, { className: "h-64 rounded-lg" }),
|
|
308
|
+
/* @__PURE__ */ jsxRuntime.jsx(chunkVZ43ATC5_cjs.Skeleton, { className: "h-64 rounded-lg" })
|
|
308
309
|
] })
|
|
309
310
|
] });
|
|
310
311
|
}
|
|
@@ -332,12 +333,12 @@ var SOURCES = [
|
|
|
332
333
|
];
|
|
333
334
|
var VALID_SOURCES = SOURCES.filter((s) => s.value).map((s) => s.value);
|
|
334
335
|
function RunListPage({ initialData }) {
|
|
335
|
-
const { LinkComponent, basePath } =
|
|
336
|
+
const { LinkComponent, basePath } = chunkXXF4U7WL_cjs.useNavigation();
|
|
336
337
|
const [page, setPage] = React.useState(1);
|
|
337
338
|
const [pageSize, setPageSize] = React.useState(20);
|
|
338
339
|
const [sourceFilter, setSourceFilter] = React.useState(null);
|
|
339
340
|
const cacheKey = `runs-${page}-${pageSize}-${sourceFilter || "all"}`;
|
|
340
|
-
const { data, error, isLoading } =
|
|
341
|
+
const { data, error, isLoading } = chunkVZ43ATC5_cjs.useApi(
|
|
341
342
|
cacheKey,
|
|
342
343
|
(client) => {
|
|
343
344
|
return client.runs.list({
|
|
@@ -368,8 +369,8 @@ function RunListPage({ initialData }) {
|
|
|
368
369
|
}
|
|
369
370
|
if (isLoading || !data) {
|
|
370
371
|
return /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "space-y-4", children: [
|
|
371
|
-
/* @__PURE__ */ jsxRuntime.jsx(
|
|
372
|
-
/* @__PURE__ */ jsxRuntime.jsx(
|
|
372
|
+
/* @__PURE__ */ jsxRuntime.jsx(chunkVZ43ATC5_cjs.Skeleton, { className: "h-9 w-40" }),
|
|
373
|
+
/* @__PURE__ */ jsxRuntime.jsx(chunkVZ43ATC5_cjs.Skeleton, { className: "h-96 rounded-lg" })
|
|
373
374
|
] });
|
|
374
375
|
}
|
|
375
376
|
const runs = data.data;
|
|
@@ -530,9 +531,9 @@ function buildConversation(events) {
|
|
|
530
531
|
}
|
|
531
532
|
function TranscriptViewer({ transcript, prompt }) {
|
|
532
533
|
const conversation = React.useMemo(() => buildConversation(transcript), [transcript]);
|
|
533
|
-
return /* @__PURE__ */ jsxRuntime.jsxs(
|
|
534
|
-
/* @__PURE__ */ jsxRuntime.jsx(
|
|
535
|
-
/* @__PURE__ */ jsxRuntime.jsxs(
|
|
534
|
+
return /* @__PURE__ */ jsxRuntime.jsxs(chunkVZ43ATC5_cjs.Card, { children: [
|
|
535
|
+
/* @__PURE__ */ jsxRuntime.jsx(chunkVZ43ATC5_cjs.CardHeader, { children: /* @__PURE__ */ jsxRuntime.jsx(chunkVZ43ATC5_cjs.CardTitle, { className: "text-base", children: "Transcript" }) }),
|
|
536
|
+
/* @__PURE__ */ jsxRuntime.jsxs(chunkVZ43ATC5_cjs.CardContent, { className: "space-y-3", children: [
|
|
536
537
|
prompt && /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "rounded-md border border-border bg-muted/20 px-4 py-3", children: [
|
|
537
538
|
/* @__PURE__ */ jsxRuntime.jsx("div", { className: "text-xs font-medium text-muted-foreground mb-1", children: "Prompt" }),
|
|
538
539
|
/* @__PURE__ */ jsxRuntime.jsx("pre", { className: "text-xs font-mono whitespace-pre-wrap", children: prompt })
|
|
@@ -570,7 +571,7 @@ function A2AIncomingItem({ item }) {
|
|
|
570
571
|
onClick: () => setExpanded(!expanded),
|
|
571
572
|
className: "w-full flex items-center gap-2 px-4 py-2 text-left hover:bg-muted/50 transition-colors",
|
|
572
573
|
children: [
|
|
573
|
-
/* @__PURE__ */ jsxRuntime.jsx(
|
|
574
|
+
/* @__PURE__ */ jsxRuntime.jsx(chunkXXF4U7WL_cjs.Badge, { variant: "outline", className: "text-[10px]", children: "A2A incoming" }),
|
|
574
575
|
/* @__PURE__ */ jsxRuntime.jsxs("span", { className: "text-xs text-muted-foreground", children: [
|
|
575
576
|
"to ",
|
|
576
577
|
/* @__PURE__ */ jsxRuntime.jsx("span", { className: "font-medium text-foreground", children: item.sender })
|
|
@@ -591,7 +592,7 @@ function SystemItem({ item }) {
|
|
|
591
592
|
const [expanded, setExpanded] = React.useState(false);
|
|
592
593
|
return /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "rounded-md border border-border bg-muted/30 overflow-hidden", children: [
|
|
593
594
|
/* @__PURE__ */ jsxRuntime.jsxs("button", { onClick: () => setExpanded(!expanded), className: "w-full flex items-center gap-2 px-4 py-2 text-left hover:bg-muted/50 transition-colors", children: [
|
|
594
|
-
/* @__PURE__ */ jsxRuntime.jsx(
|
|
595
|
+
/* @__PURE__ */ jsxRuntime.jsx(chunkXXF4U7WL_cjs.Badge, { variant: "outline", className: "text-[10px]", children: "system" }),
|
|
595
596
|
/* @__PURE__ */ jsxRuntime.jsxs("span", { className: "text-xs text-muted-foreground flex-1", children: [
|
|
596
597
|
"Model: ",
|
|
597
598
|
/* @__PURE__ */ jsxRuntime.jsx("span", { className: "font-mono", children: item.model }),
|
|
@@ -626,7 +627,7 @@ function AssistantItem({ item }) {
|
|
|
626
627
|
onClick: () => setExpanded(!expanded),
|
|
627
628
|
className: "w-full flex items-center gap-2 px-4 py-2 text-left hover:bg-muted/30 transition-colors",
|
|
628
629
|
children: [
|
|
629
|
-
/* @__PURE__ */ jsxRuntime.jsx(
|
|
630
|
+
/* @__PURE__ */ jsxRuntime.jsx(chunkXXF4U7WL_cjs.Badge, { variant: "outline", className: "text-[10px]", children: "assistant" }),
|
|
630
631
|
/* @__PURE__ */ jsxRuntime.jsx("span", { className: "text-sm text-muted-foreground truncate flex-1", children: preview }),
|
|
631
632
|
/* @__PURE__ */ jsxRuntime.jsx("span", { className: "text-xs text-muted-foreground flex-shrink-0", children: expanded ? "\u25B2" : "\u25BC" })
|
|
632
633
|
]
|
|
@@ -645,9 +646,9 @@ function ToolItem({ item }) {
|
|
|
645
646
|
onClick: () => setExpanded(!expanded),
|
|
646
647
|
className: "w-full flex items-center gap-2 px-4 py-2 text-left hover:bg-muted/30 transition-colors",
|
|
647
648
|
children: [
|
|
648
|
-
/* @__PURE__ */ jsxRuntime.jsx(
|
|
649
|
+
/* @__PURE__ */ jsxRuntime.jsx(chunkXXF4U7WL_cjs.Badge, { variant: "secondary", className: "text-[10px]", children: "tool" }),
|
|
649
650
|
/* @__PURE__ */ jsxRuntime.jsx("span", { className: "text-sm font-medium font-mono", children: item.toolName }),
|
|
650
|
-
hasOutput && /* @__PURE__ */ jsxRuntime.jsx(
|
|
651
|
+
hasOutput && /* @__PURE__ */ jsxRuntime.jsx(chunkXXF4U7WL_cjs.Badge, { variant: "outline", className: "text-[10px] ml-auto", children: "has output" }),
|
|
651
652
|
/* @__PURE__ */ jsxRuntime.jsx("span", { className: "text-xs text-muted-foreground", children: expanded ? "\u25B2" : "\u25BC" })
|
|
652
653
|
]
|
|
653
654
|
}
|
|
@@ -686,18 +687,18 @@ function ResultItem({ item }) {
|
|
|
686
687
|
}
|
|
687
688
|
function ErrorItem({ item }) {
|
|
688
689
|
return /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "rounded-md border border-destructive/30 bg-destructive/5 px-4 py-3", children: [
|
|
689
|
-
/* @__PURE__ */ jsxRuntime.jsx("div", { className: "flex items-center gap-2", children: /* @__PURE__ */ jsxRuntime.jsx(
|
|
690
|
+
/* @__PURE__ */ jsxRuntime.jsx("div", { className: "flex items-center gap-2", children: /* @__PURE__ */ jsxRuntime.jsx(chunkXXF4U7WL_cjs.Badge, { variant: "destructive", className: "text-[10px]", children: "error" }) }),
|
|
690
691
|
/* @__PURE__ */ jsxRuntime.jsx("pre", { className: "mt-1 text-xs font-mono text-destructive whitespace-pre-wrap", children: item.error })
|
|
691
692
|
] });
|
|
692
693
|
}
|
|
693
694
|
function RunDetailPage({ runId, initialData, initialTranscript }) {
|
|
694
695
|
const { mutate } = swr.useSWRConfig();
|
|
695
|
-
const { data: run, error, isLoading } =
|
|
696
|
+
const { data: run, error, isLoading } = chunkVZ43ATC5_cjs.useApi(
|
|
696
697
|
`run-${runId}`,
|
|
697
698
|
(client) => client.runs.get(runId),
|
|
698
699
|
initialData ? { fallbackData: initialData } : void 0
|
|
699
700
|
);
|
|
700
|
-
const { data: transcript } =
|
|
701
|
+
const { data: transcript } = chunkVZ43ATC5_cjs.useApi(
|
|
701
702
|
run?.transcript_blob_url ? `transcript-${runId}` : null,
|
|
702
703
|
(client) => client.runs.transcriptArray(runId),
|
|
703
704
|
initialTranscript ? { fallbackData: initialTranscript } : void 0
|
|
@@ -710,14 +711,14 @@ function RunDetailPage({ runId, initialData, initialTranscript }) {
|
|
|
710
711
|
}
|
|
711
712
|
if (isLoading || !run) {
|
|
712
713
|
return /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "space-y-6", children: [
|
|
713
|
-
/* @__PURE__ */ jsxRuntime.jsx("div", { className: "grid grid-cols-4 gap-4", children: Array.from({ length: 4 }).map((_, i) => /* @__PURE__ */ jsxRuntime.jsx(
|
|
714
|
-
/* @__PURE__ */ jsxRuntime.jsx(
|
|
714
|
+
/* @__PURE__ */ jsxRuntime.jsx("div", { className: "grid grid-cols-4 gap-4", children: Array.from({ length: 4 }).map((_, i) => /* @__PURE__ */ jsxRuntime.jsx(chunkVZ43ATC5_cjs.Skeleton, { className: "h-24 rounded-lg" }, i)) }),
|
|
715
|
+
/* @__PURE__ */ jsxRuntime.jsx(chunkVZ43ATC5_cjs.Skeleton, { className: "h-96 rounded-lg" })
|
|
715
716
|
] });
|
|
716
717
|
}
|
|
717
718
|
return /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "space-y-6", children: [
|
|
718
719
|
(run.status === "running" || run.status === "pending") && /* @__PURE__ */ jsxRuntime.jsx("div", { className: "flex items-center justify-end", children: /* @__PURE__ */ jsxRuntime.jsx(CancelRunButton, { runId: run.id, onCancelled: () => mutate(`run-${runId}`) }) }),
|
|
719
720
|
run.triggered_by === "a2a" && run.requested_by_key_name && /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "flex items-center gap-2 text-sm text-muted-foreground", children: [
|
|
720
|
-
/* @__PURE__ */ jsxRuntime.jsx(
|
|
721
|
+
/* @__PURE__ */ jsxRuntime.jsx(chunkXXF4U7WL_cjs.Badge, { variant: "outline", className: "text-[10px]", children: "A2A" }),
|
|
721
722
|
/* @__PURE__ */ jsxRuntime.jsxs("span", { children: [
|
|
722
723
|
"Requested by ",
|
|
723
724
|
/* @__PURE__ */ jsxRuntime.jsx("span", { className: "font-medium text-foreground", children: run.requested_by_key_name })
|
|
@@ -748,15 +749,15 @@ function RunDetailPage({ runId, initialData, initialTranscript }) {
|
|
|
748
749
|
] })
|
|
749
750
|
] })
|
|
750
751
|
] }),
|
|
751
|
-
run.error_messages && run.error_messages.length > 0 && /* @__PURE__ */ jsxRuntime.jsxs(
|
|
752
|
-
/* @__PURE__ */ jsxRuntime.jsx(
|
|
753
|
-
/* @__PURE__ */ jsxRuntime.jsxs(
|
|
754
|
-
run.error_type && /* @__PURE__ */ jsxRuntime.jsx(
|
|
752
|
+
run.error_messages && run.error_messages.length > 0 && /* @__PURE__ */ jsxRuntime.jsxs(chunkVZ43ATC5_cjs.Card, { children: [
|
|
753
|
+
/* @__PURE__ */ jsxRuntime.jsx(chunkVZ43ATC5_cjs.CardHeader, { children: /* @__PURE__ */ jsxRuntime.jsx(chunkVZ43ATC5_cjs.CardTitle, { className: "text-base text-destructive", children: "Errors" }) }),
|
|
754
|
+
/* @__PURE__ */ jsxRuntime.jsxs(chunkVZ43ATC5_cjs.CardContent, { className: "space-y-2", children: [
|
|
755
|
+
run.error_type && /* @__PURE__ */ jsxRuntime.jsx(chunkXXF4U7WL_cjs.Badge, { variant: "destructive", children: run.error_type }),
|
|
755
756
|
run.error_messages.map((msg, i) => /* @__PURE__ */ jsxRuntime.jsx("pre", { className: "whitespace-pre-wrap text-sm text-destructive font-mono bg-destructive/10 rounded-md p-3", children: msg }, i))
|
|
756
757
|
] })
|
|
757
758
|
] }),
|
|
758
759
|
/* @__PURE__ */ jsxRuntime.jsx(TranscriptViewer, { transcript: transcript || [], prompt: run.prompt }),
|
|
759
|
-
/* @__PURE__ */ jsxRuntime.jsx(
|
|
760
|
+
/* @__PURE__ */ jsxRuntime.jsx(chunkVZ43ATC5_cjs.Card, { children: /* @__PURE__ */ jsxRuntime.jsxs("details", { children: [
|
|
760
761
|
/* @__PURE__ */ jsxRuntime.jsxs("summary", { className: "flex items-center justify-between px-6 py-4 cursor-pointer list-none hover:bg-muted/30 transition-colors rounded-xl", children: [
|
|
761
762
|
/* @__PURE__ */ jsxRuntime.jsx("span", { className: "text-base font-semibold", children: "Metadata" }),
|
|
762
763
|
/* @__PURE__ */ jsxRuntime.jsx("span", { className: "text-xs text-muted-foreground", children: "\\u25BC" })
|
|
@@ -783,7 +784,7 @@ function RunDetailPage({ runId, initialData, initialTranscript }) {
|
|
|
783
784
|
function CancelRunButton({ runId, onCancelled }) {
|
|
784
785
|
const [open, setOpen] = React.useState(false);
|
|
785
786
|
const [cancelling, setCancelling] = React.useState(false);
|
|
786
|
-
const client =
|
|
787
|
+
const client = chunkXXF4U7WL_cjs.useAgentPlaneClient();
|
|
787
788
|
async function handleConfirm() {
|
|
788
789
|
setCancelling(true);
|
|
789
790
|
try {
|
|
@@ -797,7 +798,7 @@ function CancelRunButton({ runId, onCancelled }) {
|
|
|
797
798
|
}
|
|
798
799
|
return /* @__PURE__ */ jsxRuntime.jsxs(jsxRuntime.Fragment, { children: [
|
|
799
800
|
/* @__PURE__ */ jsxRuntime.jsx(
|
|
800
|
-
|
|
801
|
+
chunkXXF4U7WL_cjs.Button,
|
|
801
802
|
{
|
|
802
803
|
variant: "destructive",
|
|
803
804
|
size: "sm",
|
|
@@ -805,15 +806,15 @@ function CancelRunButton({ runId, onCancelled }) {
|
|
|
805
806
|
children: "Stop Run"
|
|
806
807
|
}
|
|
807
808
|
),
|
|
808
|
-
/* @__PURE__ */ jsxRuntime.jsx(
|
|
809
|
-
/* @__PURE__ */ jsxRuntime.jsxs(
|
|
810
|
-
/* @__PURE__ */ jsxRuntime.jsx(
|
|
811
|
-
/* @__PURE__ */ jsxRuntime.jsx(
|
|
809
|
+
/* @__PURE__ */ jsxRuntime.jsx(chunkXXF4U7WL_cjs.Dialog, { open, onOpenChange: setOpen, children: /* @__PURE__ */ jsxRuntime.jsxs(chunkXXF4U7WL_cjs.DialogContent, { className: "max-w-sm", children: [
|
|
810
|
+
/* @__PURE__ */ jsxRuntime.jsxs(chunkXXF4U7WL_cjs.DialogHeader, { children: [
|
|
811
|
+
/* @__PURE__ */ jsxRuntime.jsx(chunkXXF4U7WL_cjs.DialogTitle, { children: "Stop this run?" }),
|
|
812
|
+
/* @__PURE__ */ jsxRuntime.jsx(chunkXXF4U7WL_cjs.DialogDescription, { children: "This will terminate the sandbox immediately." })
|
|
812
813
|
] }),
|
|
813
|
-
/* @__PURE__ */ jsxRuntime.jsxs(
|
|
814
|
-
/* @__PURE__ */ jsxRuntime.jsx(
|
|
814
|
+
/* @__PURE__ */ jsxRuntime.jsxs(chunkXXF4U7WL_cjs.DialogFooter, { children: [
|
|
815
|
+
/* @__PURE__ */ jsxRuntime.jsx(chunkXXF4U7WL_cjs.Button, { variant: "outline", size: "sm", onClick: () => setOpen(false), disabled: cancelling, children: "Cancel" }),
|
|
815
816
|
/* @__PURE__ */ jsxRuntime.jsx(
|
|
816
|
-
|
|
817
|
+
chunkXXF4U7WL_cjs.Button,
|
|
817
818
|
{
|
|
818
819
|
variant: "destructive",
|
|
819
820
|
size: "sm",
|
|
@@ -829,8 +830,8 @@ function CancelRunButton({ runId, onCancelled }) {
|
|
|
829
830
|
var emptyForm = { name: "", slug: "", description: "", base_url: "", mcp_endpoint_path: "/mcp" };
|
|
830
831
|
function McpServerListPage({ initialData }) {
|
|
831
832
|
const { mutate } = swr.useSWRConfig();
|
|
832
|
-
const client =
|
|
833
|
-
const { data: servers, error, isLoading } =
|
|
833
|
+
const client = chunkXXF4U7WL_cjs.useAgentPlaneClient();
|
|
834
|
+
const { data: servers, error, isLoading } = chunkVZ43ATC5_cjs.useApi(
|
|
834
835
|
"mcp-servers",
|
|
835
836
|
(c) => c.customConnectors.listServers(),
|
|
836
837
|
initialData ? { fallbackData: initialData } : void 0
|
|
@@ -900,10 +901,10 @@ function McpServerListPage({ initialData }) {
|
|
|
900
901
|
] }) });
|
|
901
902
|
}
|
|
902
903
|
if (isLoading || !servers) {
|
|
903
|
-
return /* @__PURE__ */ jsxRuntime.jsx(
|
|
904
|
+
return /* @__PURE__ */ jsxRuntime.jsx(chunkVZ43ATC5_cjs.Skeleton, { className: "h-96 rounded-lg" });
|
|
904
905
|
}
|
|
905
906
|
return /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "space-y-6", children: [
|
|
906
|
-
/* @__PURE__ */ jsxRuntime.jsx("div", { className: "flex items-center", children: /* @__PURE__ */ jsxRuntime.jsx(
|
|
907
|
+
/* @__PURE__ */ jsxRuntime.jsx("div", { className: "flex items-center", children: /* @__PURE__ */ jsxRuntime.jsx(chunkXXF4U7WL_cjs.Button, { variant: "outline", size: "sm", onClick: () => setShowCreate(true), children: "+ New Connector" }) }),
|
|
907
908
|
/* @__PURE__ */ jsxRuntime.jsxs(AdminTable, { children: [
|
|
908
909
|
/* @__PURE__ */ jsxRuntime.jsxs(AdminTableHead, { children: [
|
|
909
910
|
/* @__PURE__ */ jsxRuntime.jsx(Th, { children: "Name" }),
|
|
@@ -930,12 +931,12 @@ function McpServerListPage({ initialData }) {
|
|
|
930
931
|
) }),
|
|
931
932
|
/* @__PURE__ */ jsxRuntime.jsx("td", { className: "p-3 font-mono text-xs text-muted-foreground", children: s.slug }),
|
|
932
933
|
/* @__PURE__ */ jsxRuntime.jsx("td", { className: "p-3 font-mono text-xs text-muted-foreground truncate max-w-xs", title: s.base_url, children: s.base_url }),
|
|
933
|
-
/* @__PURE__ */ jsxRuntime.jsx("td", { className: "p-3", children: /* @__PURE__ */ jsxRuntime.jsx(
|
|
934
|
+
/* @__PURE__ */ jsxRuntime.jsx("td", { className: "p-3", children: /* @__PURE__ */ jsxRuntime.jsx(chunkXXF4U7WL_cjs.Badge, { variant: s.client_id ? "default" : "secondary", children: s.client_id ? "Registered" : "No DCR" }) }),
|
|
934
935
|
/* @__PURE__ */ jsxRuntime.jsx("td", { className: "p-3 text-right", children: s.connection_count }),
|
|
935
936
|
/* @__PURE__ */ jsxRuntime.jsx("td", { className: "p-3 text-right text-green-500", children: s.active_count }),
|
|
936
937
|
/* @__PURE__ */ jsxRuntime.jsx("td", { className: "p-3 text-muted-foreground text-xs", children: new Date(s.created_at).toLocaleDateString() }),
|
|
937
938
|
/* @__PURE__ */ jsxRuntime.jsx("td", { className: "p-3 text-right", children: /* @__PURE__ */ jsxRuntime.jsx(
|
|
938
|
-
|
|
939
|
+
chunkXXF4U7WL_cjs.Button,
|
|
939
940
|
{
|
|
940
941
|
variant: "destructive",
|
|
941
942
|
size: "sm",
|
|
@@ -948,29 +949,29 @@ function McpServerListPage({ initialData }) {
|
|
|
948
949
|
servers.length === 0 && /* @__PURE__ */ jsxRuntime.jsx(EmptyRow, { colSpan: 8, children: 'No custom connectors registered. Click "+ New Connector" to add one.' })
|
|
949
950
|
] })
|
|
950
951
|
] }),
|
|
951
|
-
/* @__PURE__ */ jsxRuntime.jsx(
|
|
952
|
-
/* @__PURE__ */ jsxRuntime.jsx(
|
|
953
|
-
/* @__PURE__ */ jsxRuntime.jsxs(
|
|
952
|
+
/* @__PURE__ */ jsxRuntime.jsx(chunkXXF4U7WL_cjs.Dialog, { open: showCreate, onOpenChange: setShowCreate, children: /* @__PURE__ */ jsxRuntime.jsxs(chunkXXF4U7WL_cjs.DialogContent, { className: "max-w-lg", children: [
|
|
953
|
+
/* @__PURE__ */ jsxRuntime.jsx(chunkXXF4U7WL_cjs.DialogHeader, { children: /* @__PURE__ */ jsxRuntime.jsx(chunkXXF4U7WL_cjs.DialogTitle, { children: "Register Connector" }) }),
|
|
954
|
+
/* @__PURE__ */ jsxRuntime.jsxs(chunkXXF4U7WL_cjs.DialogBody, { className: "space-y-3", children: [
|
|
954
955
|
createError && /* @__PURE__ */ jsxRuntime.jsx("p", { className: "text-sm text-destructive", children: createError }),
|
|
955
|
-
/* @__PURE__ */ jsxRuntime.jsx(
|
|
956
|
-
/* @__PURE__ */ jsxRuntime.jsx(
|
|
957
|
-
/* @__PURE__ */ jsxRuntime.jsx(
|
|
958
|
-
/* @__PURE__ */ jsxRuntime.jsx(
|
|
959
|
-
/* @__PURE__ */ jsxRuntime.jsx(
|
|
956
|
+
/* @__PURE__ */ jsxRuntime.jsx(chunkXXF4U7WL_cjs.FormField, { label: "Name", children: /* @__PURE__ */ jsxRuntime.jsx(chunkXXF4U7WL_cjs.Input, { value: createForm.name, onChange: (e) => setCreateForm({ ...createForm, name: e.target.value }), placeholder: "My MCP Server" }) }),
|
|
957
|
+
/* @__PURE__ */ jsxRuntime.jsx(chunkXXF4U7WL_cjs.FormField, { label: "Slug", children: /* @__PURE__ */ jsxRuntime.jsx(chunkXXF4U7WL_cjs.Input, { value: createForm.slug, onChange: (e) => setCreateForm({ ...createForm, slug: e.target.value }), placeholder: "my-mcp-server" }) }),
|
|
958
|
+
/* @__PURE__ */ jsxRuntime.jsx(chunkXXF4U7WL_cjs.FormField, { label: "Description", children: /* @__PURE__ */ jsxRuntime.jsx(chunkXXF4U7WL_cjs.Input, { value: createForm.description, onChange: (e) => setCreateForm({ ...createForm, description: e.target.value }), placeholder: "What this connector does" }) }),
|
|
959
|
+
/* @__PURE__ */ jsxRuntime.jsx(chunkXXF4U7WL_cjs.FormField, { label: "Base URL", children: /* @__PURE__ */ jsxRuntime.jsx(chunkXXF4U7WL_cjs.Input, { value: createForm.base_url, onChange: (e) => setCreateForm({ ...createForm, base_url: e.target.value }), placeholder: "https://my-server.example.com" }) }),
|
|
960
|
+
/* @__PURE__ */ jsxRuntime.jsx(chunkXXF4U7WL_cjs.FormField, { label: "MCP Endpoint Path", children: /* @__PURE__ */ jsxRuntime.jsx(chunkXXF4U7WL_cjs.Input, { value: createForm.mcp_endpoint_path, onChange: (e) => setCreateForm({ ...createForm, mcp_endpoint_path: e.target.value }), placeholder: "/mcp" }) })
|
|
960
961
|
] }),
|
|
961
|
-
/* @__PURE__ */ jsxRuntime.jsxs(
|
|
962
|
-
/* @__PURE__ */ jsxRuntime.jsx(
|
|
963
|
-
/* @__PURE__ */ jsxRuntime.jsx(
|
|
962
|
+
/* @__PURE__ */ jsxRuntime.jsxs(chunkXXF4U7WL_cjs.DialogFooter, { children: [
|
|
963
|
+
/* @__PURE__ */ jsxRuntime.jsx(chunkXXF4U7WL_cjs.Button, { variant: "outline", onClick: () => setShowCreate(false), children: "Cancel" }),
|
|
964
|
+
/* @__PURE__ */ jsxRuntime.jsx(chunkXXF4U7WL_cjs.Button, { onClick: handleCreate, disabled: creating || !createForm.name || !createForm.base_url, children: creating ? "Creating..." : "Create" })
|
|
964
965
|
] })
|
|
965
966
|
] }) }),
|
|
966
|
-
/* @__PURE__ */ jsxRuntime.jsx(
|
|
967
|
+
/* @__PURE__ */ jsxRuntime.jsx(chunkXXF4U7WL_cjs.Dialog, { open: !!editTarget, onOpenChange: (open) => {
|
|
967
968
|
if (!open) setEditTarget(null);
|
|
968
|
-
}, children: /* @__PURE__ */ jsxRuntime.jsxs(
|
|
969
|
-
/* @__PURE__ */ jsxRuntime.jsx(
|
|
970
|
-
/* @__PURE__ */ jsxRuntime.jsxs(
|
|
969
|
+
}, children: /* @__PURE__ */ jsxRuntime.jsxs(chunkXXF4U7WL_cjs.DialogContent, { className: "max-w-lg", children: [
|
|
970
|
+
/* @__PURE__ */ jsxRuntime.jsx(chunkXXF4U7WL_cjs.DialogHeader, { children: /* @__PURE__ */ jsxRuntime.jsx(chunkXXF4U7WL_cjs.DialogTitle, { children: "Edit Connector" }) }),
|
|
971
|
+
/* @__PURE__ */ jsxRuntime.jsxs(chunkXXF4U7WL_cjs.DialogBody, { className: "space-y-3", children: [
|
|
971
972
|
editError && /* @__PURE__ */ jsxRuntime.jsx("p", { className: "text-sm text-destructive", children: editError }),
|
|
972
|
-
/* @__PURE__ */ jsxRuntime.jsx(
|
|
973
|
-
/* @__PURE__ */ jsxRuntime.jsx(
|
|
973
|
+
/* @__PURE__ */ jsxRuntime.jsx(chunkXXF4U7WL_cjs.FormField, { label: "Name", children: /* @__PURE__ */ jsxRuntime.jsx(chunkXXF4U7WL_cjs.Input, { value: editForm.name, onChange: (e) => setEditForm({ ...editForm, name: e.target.value }) }) }),
|
|
974
|
+
/* @__PURE__ */ jsxRuntime.jsx(chunkXXF4U7WL_cjs.FormField, { label: "Description", children: /* @__PURE__ */ jsxRuntime.jsx(chunkXXF4U7WL_cjs.Input, { value: editForm.description, onChange: (e) => setEditForm({ ...editForm, description: e.target.value }) }) }),
|
|
974
975
|
editTarget && /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "text-xs text-muted-foreground space-y-1", children: [
|
|
975
976
|
/* @__PURE__ */ jsxRuntime.jsxs("div", { children: [
|
|
976
977
|
/* @__PURE__ */ jsxRuntime.jsx("span", { className: "font-medium", children: "Slug:" }),
|
|
@@ -989,9 +990,9 @@ function McpServerListPage({ initialData }) {
|
|
|
989
990
|
] })
|
|
990
991
|
] })
|
|
991
992
|
] }),
|
|
992
|
-
/* @__PURE__ */ jsxRuntime.jsxs(
|
|
993
|
-
/* @__PURE__ */ jsxRuntime.jsx(
|
|
994
|
-
/* @__PURE__ */ jsxRuntime.jsx(
|
|
993
|
+
/* @__PURE__ */ jsxRuntime.jsxs(chunkXXF4U7WL_cjs.DialogFooter, { children: [
|
|
994
|
+
/* @__PURE__ */ jsxRuntime.jsx(chunkXXF4U7WL_cjs.Button, { variant: "outline", onClick: () => setEditTarget(null), children: "Cancel" }),
|
|
995
|
+
/* @__PURE__ */ jsxRuntime.jsx(chunkXXF4U7WL_cjs.Button, { onClick: handleEdit, disabled: editing || !editForm.name, children: editing ? "Saving..." : "Save" })
|
|
995
996
|
] })
|
|
996
997
|
] }) }),
|
|
997
998
|
/* @__PURE__ */ jsxRuntime.jsxs(
|
|
@@ -1021,9 +1022,9 @@ function McpServerListPage({ initialData }) {
|
|
|
1021
1022
|
}
|
|
1022
1023
|
function PluginMarketplaceListPage({ initialData }) {
|
|
1023
1024
|
const { mutate } = swr.useSWRConfig();
|
|
1024
|
-
const client =
|
|
1025
|
-
const { LinkComponent, basePath } =
|
|
1026
|
-
const { data: marketplaces, error, isLoading } =
|
|
1025
|
+
const client = chunkXXF4U7WL_cjs.useAgentPlaneClient();
|
|
1026
|
+
const { LinkComponent, basePath } = chunkXXF4U7WL_cjs.useNavigation();
|
|
1027
|
+
const { data: marketplaces, error, isLoading } = chunkVZ43ATC5_cjs.useApi(
|
|
1027
1028
|
"plugin-marketplaces",
|
|
1028
1029
|
(c) => c.pluginMarketplaces.list(),
|
|
1029
1030
|
initialData ? { fallbackData: initialData } : void 0
|
|
@@ -1074,26 +1075,26 @@ function PluginMarketplaceListPage({ initialData }) {
|
|
|
1074
1075
|
] }) });
|
|
1075
1076
|
}
|
|
1076
1077
|
if (isLoading || !marketplaces) {
|
|
1077
|
-
return /* @__PURE__ */ jsxRuntime.jsx(
|
|
1078
|
+
return /* @__PURE__ */ jsxRuntime.jsx(chunkVZ43ATC5_cjs.Skeleton, { className: "h-96 rounded-lg" });
|
|
1078
1079
|
}
|
|
1079
1080
|
return /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "space-y-6", children: [
|
|
1080
|
-
/* @__PURE__ */ jsxRuntime.jsx("div", { className: "flex items-center", children: /* @__PURE__ */ jsxRuntime.jsx(
|
|
1081
|
-
/* @__PURE__ */ jsxRuntime.jsx(
|
|
1081
|
+
/* @__PURE__ */ jsxRuntime.jsx("div", { className: "flex items-center", children: /* @__PURE__ */ jsxRuntime.jsx(chunkXXF4U7WL_cjs.Button, { variant: "outline", size: "sm", onClick: () => setShowAdd(true), children: "+ Add Marketplace" }) }),
|
|
1082
|
+
/* @__PURE__ */ jsxRuntime.jsx(chunkXXF4U7WL_cjs.Dialog, { open: showAdd, onOpenChange: (v) => {
|
|
1082
1083
|
setShowAdd(v);
|
|
1083
1084
|
if (!v) resetAddForm();
|
|
1084
|
-
}, children: /* @__PURE__ */ jsxRuntime.jsxs(
|
|
1085
|
-
/* @__PURE__ */ jsxRuntime.jsx(
|
|
1086
|
-
/* @__PURE__ */ jsxRuntime.jsxs(
|
|
1087
|
-
/* @__PURE__ */ jsxRuntime.jsx(
|
|
1088
|
-
|
|
1085
|
+
}, children: /* @__PURE__ */ jsxRuntime.jsxs(chunkXXF4U7WL_cjs.DialogContent, { className: "max-w-md", children: [
|
|
1086
|
+
/* @__PURE__ */ jsxRuntime.jsx(chunkXXF4U7WL_cjs.DialogHeader, { children: /* @__PURE__ */ jsxRuntime.jsx(chunkXXF4U7WL_cjs.DialogTitle, { children: "Add Marketplace" }) }),
|
|
1087
|
+
/* @__PURE__ */ jsxRuntime.jsxs(chunkXXF4U7WL_cjs.DialogBody, { className: "space-y-3", children: [
|
|
1088
|
+
/* @__PURE__ */ jsxRuntime.jsx(chunkXXF4U7WL_cjs.FormField, { label: "Name", children: /* @__PURE__ */ jsxRuntime.jsx(
|
|
1089
|
+
chunkXXF4U7WL_cjs.Input,
|
|
1089
1090
|
{
|
|
1090
1091
|
value: newMarketplace.name,
|
|
1091
1092
|
onChange: (e) => setNewMarketplace({ ...newMarketplace, name: e.target.value }),
|
|
1092
1093
|
placeholder: "My Marketplace"
|
|
1093
1094
|
}
|
|
1094
1095
|
) }),
|
|
1095
|
-
/* @__PURE__ */ jsxRuntime.jsx(
|
|
1096
|
-
|
|
1096
|
+
/* @__PURE__ */ jsxRuntime.jsx(chunkXXF4U7WL_cjs.FormField, { label: "GitHub Repo", children: /* @__PURE__ */ jsxRuntime.jsx(
|
|
1097
|
+
chunkXXF4U7WL_cjs.Input,
|
|
1097
1098
|
{
|
|
1098
1099
|
value: newMarketplace.github_repo,
|
|
1099
1100
|
onChange: (e) => setNewMarketplace({ ...newMarketplace, github_repo: e.target.value }),
|
|
@@ -1102,12 +1103,12 @@ function PluginMarketplaceListPage({ initialData }) {
|
|
|
1102
1103
|
) }),
|
|
1103
1104
|
/* @__PURE__ */ jsxRuntime.jsx(FormError, { error: addError })
|
|
1104
1105
|
] }),
|
|
1105
|
-
/* @__PURE__ */ jsxRuntime.jsxs(
|
|
1106
|
-
/* @__PURE__ */ jsxRuntime.jsx(
|
|
1106
|
+
/* @__PURE__ */ jsxRuntime.jsxs(chunkXXF4U7WL_cjs.DialogFooter, { children: [
|
|
1107
|
+
/* @__PURE__ */ jsxRuntime.jsx(chunkXXF4U7WL_cjs.Button, { variant: "outline", size: "sm", onClick: () => {
|
|
1107
1108
|
setShowAdd(false);
|
|
1108
1109
|
resetAddForm();
|
|
1109
1110
|
}, children: "Cancel" }),
|
|
1110
|
-
/* @__PURE__ */ jsxRuntime.jsx(
|
|
1111
|
+
/* @__PURE__ */ jsxRuntime.jsx(chunkXXF4U7WL_cjs.Button, { size: "sm", onClick: handleAdd, disabled: adding || !newMarketplace.name || !newMarketplace.github_repo, children: adding ? "Adding..." : "Add Marketplace" })
|
|
1111
1112
|
] })
|
|
1112
1113
|
] }) }),
|
|
1113
1114
|
/* @__PURE__ */ jsxRuntime.jsxs(AdminTable, { children: [
|
|
@@ -1129,7 +1130,7 @@ function PluginMarketplaceListPage({ initialData }) {
|
|
|
1129
1130
|
children: m.name
|
|
1130
1131
|
}
|
|
1131
1132
|
),
|
|
1132
|
-
m.is_owned && /* @__PURE__ */ jsxRuntime.jsx(
|
|
1133
|
+
m.is_owned && /* @__PURE__ */ jsxRuntime.jsx(chunkXXF4U7WL_cjs.Badge, { variant: "secondary", className: "ml-2 text-xs", children: "Owned" })
|
|
1133
1134
|
] }),
|
|
1134
1135
|
/* @__PURE__ */ jsxRuntime.jsx("td", { className: "p-3", children: /* @__PURE__ */ jsxRuntime.jsx(
|
|
1135
1136
|
"a",
|
|
@@ -1141,10 +1142,10 @@ function PluginMarketplaceListPage({ initialData }) {
|
|
|
1141
1142
|
children: m.github_repo
|
|
1142
1143
|
}
|
|
1143
1144
|
) }),
|
|
1144
|
-
/* @__PURE__ */ jsxRuntime.jsx("td", { className: "p-3 text-right", children: /* @__PURE__ */ jsxRuntime.jsx(
|
|
1145
|
+
/* @__PURE__ */ jsxRuntime.jsx("td", { className: "p-3 text-right", children: /* @__PURE__ */ jsxRuntime.jsx(chunkXXF4U7WL_cjs.Badge, { variant: m.agent_count > 0 ? "default" : "secondary", children: m.agent_count }) }),
|
|
1145
1146
|
/* @__PURE__ */ jsxRuntime.jsx("td", { className: "p-3 text-muted-foreground text-xs", children: new Date(m.created_at).toLocaleDateString() }),
|
|
1146
1147
|
/* @__PURE__ */ jsxRuntime.jsx("td", { className: "p-3 text-right", children: /* @__PURE__ */ jsxRuntime.jsx(
|
|
1147
|
-
|
|
1148
|
+
chunkXXF4U7WL_cjs.Button,
|
|
1148
1149
|
{
|
|
1149
1150
|
variant: "destructive",
|
|
1150
1151
|
size: "sm",
|
|
@@ -1184,14 +1185,14 @@ function PluginMarketplaceListPage({ initialData }) {
|
|
|
1184
1185
|
}
|
|
1185
1186
|
function PluginMarketplaceDetailPage({ marketplaceId, initialData, initialPlugins }) {
|
|
1186
1187
|
const { mutate } = swr.useSWRConfig();
|
|
1187
|
-
const client =
|
|
1188
|
-
const { LinkComponent, basePath } =
|
|
1189
|
-
const { data: marketplace, error, isLoading } =
|
|
1188
|
+
const client = chunkXXF4U7WL_cjs.useAgentPlaneClient();
|
|
1189
|
+
const { LinkComponent, basePath } = chunkXXF4U7WL_cjs.useNavigation();
|
|
1190
|
+
const { data: marketplace, error, isLoading } = chunkVZ43ATC5_cjs.useApi(
|
|
1190
1191
|
`marketplace-${marketplaceId}`,
|
|
1191
1192
|
(c) => c.pluginMarketplaces.get(marketplaceId),
|
|
1192
1193
|
initialData ? { fallbackData: initialData } : void 0
|
|
1193
1194
|
);
|
|
1194
|
-
const { data: plugins } =
|
|
1195
|
+
const { data: plugins } = chunkVZ43ATC5_cjs.useApi(
|
|
1195
1196
|
`marketplace-${marketplaceId}-plugins`,
|
|
1196
1197
|
(c) => c.pluginMarketplaces.listPlugins(marketplaceId),
|
|
1197
1198
|
initialPlugins ? { fallbackData: initialPlugins } : void 0
|
|
@@ -1217,14 +1218,14 @@ function PluginMarketplaceDetailPage({ marketplaceId, initialData, initialPlugin
|
|
|
1217
1218
|
}
|
|
1218
1219
|
if (isLoading || !marketplace) {
|
|
1219
1220
|
return /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "space-y-6", children: [
|
|
1220
|
-
/* @__PURE__ */ jsxRuntime.jsx(
|
|
1221
|
-
/* @__PURE__ */ jsxRuntime.jsx(
|
|
1222
|
-
/* @__PURE__ */ jsxRuntime.jsx(
|
|
1221
|
+
/* @__PURE__ */ jsxRuntime.jsx(chunkVZ43ATC5_cjs.Skeleton, { className: "h-12 w-64" }),
|
|
1222
|
+
/* @__PURE__ */ jsxRuntime.jsx(chunkVZ43ATC5_cjs.Skeleton, { className: "h-32 rounded-lg" }),
|
|
1223
|
+
/* @__PURE__ */ jsxRuntime.jsx(chunkVZ43ATC5_cjs.Skeleton, { className: "h-64 rounded-lg" })
|
|
1223
1224
|
] });
|
|
1224
1225
|
}
|
|
1225
1226
|
return /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "space-y-6", children: [
|
|
1226
1227
|
/* @__PURE__ */ jsxRuntime.jsxs("div", { className: "flex items-center gap-3", children: [
|
|
1227
|
-
marketplace.has_token && /* @__PURE__ */ jsxRuntime.jsx(
|
|
1228
|
+
marketplace.has_token && /* @__PURE__ */ jsxRuntime.jsx(chunkXXF4U7WL_cjs.Badge, { variant: "secondary", children: "Owned" }),
|
|
1228
1229
|
/* @__PURE__ */ jsxRuntime.jsx(
|
|
1229
1230
|
"a",
|
|
1230
1231
|
{
|
|
@@ -1236,13 +1237,13 @@ function PluginMarketplaceDetailPage({ marketplaceId, initialData, initialPlugin
|
|
|
1236
1237
|
}
|
|
1237
1238
|
)
|
|
1238
1239
|
] }),
|
|
1239
|
-
/* @__PURE__ */ jsxRuntime.jsxs(
|
|
1240
|
-
/* @__PURE__ */ jsxRuntime.jsx(
|
|
1241
|
-
/* @__PURE__ */ jsxRuntime.jsx(
|
|
1240
|
+
/* @__PURE__ */ jsxRuntime.jsxs(chunkVZ43ATC5_cjs.Card, { children: [
|
|
1241
|
+
/* @__PURE__ */ jsxRuntime.jsx(chunkVZ43ATC5_cjs.CardHeader, { children: /* @__PURE__ */ jsxRuntime.jsx(chunkVZ43ATC5_cjs.CardTitle, { className: "text-base", children: "GitHub Token" }) }),
|
|
1242
|
+
/* @__PURE__ */ jsxRuntime.jsx(chunkVZ43ATC5_cjs.CardContent, { children: /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "space-y-3", children: [
|
|
1242
1243
|
/* @__PURE__ */ jsxRuntime.jsx("p", { className: "text-sm text-muted-foreground", children: marketplace.has_token ? "A GitHub token is configured. You can update it below." : "Add a GitHub personal access token to enable write access and private repo support." }),
|
|
1243
1244
|
/* @__PURE__ */ jsxRuntime.jsxs("div", { className: "flex gap-2", children: [
|
|
1244
1245
|
/* @__PURE__ */ jsxRuntime.jsx(
|
|
1245
|
-
|
|
1246
|
+
chunkXXF4U7WL_cjs.Input,
|
|
1246
1247
|
{
|
|
1247
1248
|
type: "password",
|
|
1248
1249
|
placeholder: "ghp_...",
|
|
@@ -1251,30 +1252,30 @@ function PluginMarketplaceDetailPage({ marketplaceId, initialData, initialPlugin
|
|
|
1251
1252
|
className: "flex-1"
|
|
1252
1253
|
}
|
|
1253
1254
|
),
|
|
1254
|
-
/* @__PURE__ */ jsxRuntime.jsx(
|
|
1255
|
+
/* @__PURE__ */ jsxRuntime.jsx(chunkXXF4U7WL_cjs.Button, { size: "sm", onClick: handleSaveToken, disabled: savingToken || !tokenInput, children: savingToken ? "Saving..." : marketplace.has_token ? "Update Token" : "Save Token" })
|
|
1255
1256
|
] })
|
|
1256
1257
|
] }) })
|
|
1257
1258
|
] }),
|
|
1258
1259
|
/* @__PURE__ */ jsxRuntime.jsxs("div", { children: [
|
|
1259
1260
|
/* @__PURE__ */ jsxRuntime.jsx(SectionHeader, { title: "Plugins" }),
|
|
1260
|
-
!plugins ? /* @__PURE__ */ jsxRuntime.jsx(
|
|
1261
|
+
!plugins ? /* @__PURE__ */ jsxRuntime.jsx(chunkVZ43ATC5_cjs.Skeleton, { className: "h-48 rounded-lg" }) : plugins.length === 0 ? /* @__PURE__ */ jsxRuntime.jsx("p", { className: "text-sm text-muted-foreground", children: "No plugins found in this marketplace." }) : /* @__PURE__ */ jsxRuntime.jsx("div", { className: "grid grid-cols-1 md:grid-cols-2 lg:grid-cols-3 gap-4", children: plugins.map((plugin) => /* @__PURE__ */ jsxRuntime.jsx(
|
|
1261
1262
|
LinkComponent,
|
|
1262
1263
|
{
|
|
1263
1264
|
href: `${basePath}/plugin-marketplaces/${marketplaceId}/plugins/${plugin.name}`,
|
|
1264
|
-
children: /* @__PURE__ */ jsxRuntime.jsxs(
|
|
1265
|
-
/* @__PURE__ */ jsxRuntime.jsx(
|
|
1265
|
+
children: /* @__PURE__ */ jsxRuntime.jsxs(chunkVZ43ATC5_cjs.Card, { className: "hover:border-primary/50 transition-colors cursor-pointer h-full", children: [
|
|
1266
|
+
/* @__PURE__ */ jsxRuntime.jsx(chunkVZ43ATC5_cjs.CardHeader, { className: "pb-2", children: /* @__PURE__ */ jsxRuntime.jsxs(chunkVZ43ATC5_cjs.CardTitle, { className: "text-sm font-medium flex items-center justify-between", children: [
|
|
1266
1267
|
plugin.displayName,
|
|
1267
1268
|
plugin.version && /* @__PURE__ */ jsxRuntime.jsxs("span", { className: "text-xs text-muted-foreground font-normal", children: [
|
|
1268
1269
|
"v",
|
|
1269
1270
|
plugin.version
|
|
1270
1271
|
] })
|
|
1271
1272
|
] }) }),
|
|
1272
|
-
/* @__PURE__ */ jsxRuntime.jsxs(
|
|
1273
|
+
/* @__PURE__ */ jsxRuntime.jsxs(chunkVZ43ATC5_cjs.CardContent, { children: [
|
|
1273
1274
|
plugin.description && /* @__PURE__ */ jsxRuntime.jsx("p", { className: "text-xs text-muted-foreground mb-3", children: plugin.description }),
|
|
1274
1275
|
/* @__PURE__ */ jsxRuntime.jsxs("div", { className: "flex gap-1.5", children: [
|
|
1275
|
-
plugin.hasAgents && /* @__PURE__ */ jsxRuntime.jsx(
|
|
1276
|
-
plugin.hasSkills && /* @__PURE__ */ jsxRuntime.jsx(
|
|
1277
|
-
plugin.hasMcpJson && /* @__PURE__ */ jsxRuntime.jsx(
|
|
1276
|
+
plugin.hasAgents && /* @__PURE__ */ jsxRuntime.jsx(chunkXXF4U7WL_cjs.Badge, { variant: "secondary", className: "text-xs", children: "Agents" }),
|
|
1277
|
+
plugin.hasSkills && /* @__PURE__ */ jsxRuntime.jsx(chunkXXF4U7WL_cjs.Badge, { variant: "secondary", className: "text-xs", children: "Skills" }),
|
|
1278
|
+
plugin.hasMcpJson && /* @__PURE__ */ jsxRuntime.jsx(chunkXXF4U7WL_cjs.Badge, { variant: "secondary", className: "text-xs", children: "MCP" })
|
|
1278
1279
|
] })
|
|
1279
1280
|
] })
|
|
1280
1281
|
] })
|
|
@@ -1293,13 +1294,13 @@ function AgentsTab({
|
|
|
1293
1294
|
return /* @__PURE__ */ jsxRuntime.jsx("p", { className: "text-sm text-muted-foreground py-4", children: "No agents defined in this plugin." });
|
|
1294
1295
|
}
|
|
1295
1296
|
return /* @__PURE__ */ jsxRuntime.jsx("div", { className: "grid grid-cols-1 md:grid-cols-2 gap-4", children: agents.map((agent) => /* @__PURE__ */ jsxRuntime.jsxs(
|
|
1296
|
-
|
|
1297
|
+
chunkVZ43ATC5_cjs.Card,
|
|
1297
1298
|
{
|
|
1298
1299
|
className: `cursor-pointer transition-colors hover:border-primary/50 ${selectedFilename === agent.filename ? "border-primary ring-1 ring-primary/30" : ""}`,
|
|
1299
1300
|
onClick: () => onSelectAgent(agent.filename),
|
|
1300
1301
|
children: [
|
|
1301
|
-
/* @__PURE__ */ jsxRuntime.jsx(
|
|
1302
|
-
/* @__PURE__ */ jsxRuntime.jsxs(
|
|
1302
|
+
/* @__PURE__ */ jsxRuntime.jsx(chunkVZ43ATC5_cjs.CardHeader, { className: "pb-2", children: /* @__PURE__ */ jsxRuntime.jsx(chunkVZ43ATC5_cjs.CardTitle, { className: "text-sm font-medium", children: agent.name }) }),
|
|
1303
|
+
/* @__PURE__ */ jsxRuntime.jsxs(chunkVZ43ATC5_cjs.CardContent, { children: [
|
|
1303
1304
|
agent.description ? /* @__PURE__ */ jsxRuntime.jsx("p", { className: "text-xs text-muted-foreground", children: agent.description }) : /* @__PURE__ */ jsxRuntime.jsx("p", { className: "text-xs text-muted-foreground italic", children: "No description" }),
|
|
1304
1305
|
/* @__PURE__ */ jsxRuntime.jsx("p", { className: "text-xs text-muted-foreground/60 mt-2 font-mono", children: agent.filename })
|
|
1305
1306
|
] })
|
|
@@ -1317,13 +1318,13 @@ function SkillsTab({
|
|
|
1317
1318
|
return /* @__PURE__ */ jsxRuntime.jsx("p", { className: "text-sm text-muted-foreground py-4", children: "No skills defined in this plugin." });
|
|
1318
1319
|
}
|
|
1319
1320
|
return /* @__PURE__ */ jsxRuntime.jsx("div", { className: "grid grid-cols-1 md:grid-cols-2 lg:grid-cols-3 gap-4", children: skills.map((skill) => /* @__PURE__ */ jsxRuntime.jsxs(
|
|
1320
|
-
|
|
1321
|
+
chunkVZ43ATC5_cjs.Card,
|
|
1321
1322
|
{
|
|
1322
1323
|
className: `cursor-pointer transition-colors hover:border-primary/50 ${selectedSkill === skill ? "border-primary ring-1 ring-primary/30" : ""}`,
|
|
1323
1324
|
onClick: () => onSelectSkill(skill),
|
|
1324
1325
|
children: [
|
|
1325
|
-
/* @__PURE__ */ jsxRuntime.jsx(
|
|
1326
|
-
/* @__PURE__ */ jsxRuntime.jsx(
|
|
1326
|
+
/* @__PURE__ */ jsxRuntime.jsx(chunkVZ43ATC5_cjs.CardHeader, { className: "pb-2", children: /* @__PURE__ */ jsxRuntime.jsx(chunkVZ43ATC5_cjs.CardTitle, { className: "text-sm font-medium", children: skill }) }),
|
|
1327
|
+
/* @__PURE__ */ jsxRuntime.jsx(chunkVZ43ATC5_cjs.CardContent, { children: /* @__PURE__ */ jsxRuntime.jsxs("p", { className: "text-xs text-muted-foreground font-mono", children: [
|
|
1327
1328
|
"skills/",
|
|
1328
1329
|
skill,
|
|
1329
1330
|
"/"
|
|
@@ -1343,13 +1344,13 @@ function ConnectorsTab({
|
|
|
1343
1344
|
return /* @__PURE__ */ jsxRuntime.jsx("p", { className: "text-sm text-muted-foreground py-4", children: "No connectors defined in this plugin." });
|
|
1344
1345
|
}
|
|
1345
1346
|
return /* @__PURE__ */ jsxRuntime.jsxs(
|
|
1346
|
-
|
|
1347
|
+
chunkVZ43ATC5_cjs.Card,
|
|
1347
1348
|
{
|
|
1348
1349
|
className: `cursor-pointer transition-colors hover:border-primary/50 ${selected ? "border-primary ring-1 ring-primary/30" : ""}`,
|
|
1349
1350
|
onClick: onSelectConnector,
|
|
1350
1351
|
children: [
|
|
1351
|
-
/* @__PURE__ */ jsxRuntime.jsx(
|
|
1352
|
-
/* @__PURE__ */ jsxRuntime.jsx(
|
|
1352
|
+
/* @__PURE__ */ jsxRuntime.jsx(chunkVZ43ATC5_cjs.CardHeader, { className: "pb-2", children: /* @__PURE__ */ jsxRuntime.jsx(chunkVZ43ATC5_cjs.CardTitle, { className: "text-sm font-medium", children: ".mcp.json" }) }),
|
|
1353
|
+
/* @__PURE__ */ jsxRuntime.jsx(chunkVZ43ATC5_cjs.CardContent, { children: /* @__PURE__ */ jsxRuntime.jsx("p", { className: "text-xs text-muted-foreground", children: "This plugin includes an MCP connector configuration that will be suggested to agents using it." }) })
|
|
1353
1354
|
]
|
|
1354
1355
|
}
|
|
1355
1356
|
);
|
|
@@ -1371,8 +1372,8 @@ function FileEditorInline({
|
|
|
1371
1372
|
/* @__PURE__ */ jsxRuntime.jsxs("div", { className: "flex items-center gap-2", children: [
|
|
1372
1373
|
saveError && /* @__PURE__ */ jsxRuntime.jsx("span", { className: "text-xs text-destructive", children: saveError }),
|
|
1373
1374
|
saveSuccess && /* @__PURE__ */ jsxRuntime.jsx("span", { className: "text-xs text-green-500", children: saveSuccess }),
|
|
1374
|
-
!readOnly && /* @__PURE__ */ jsxRuntime.jsx(
|
|
1375
|
-
/* @__PURE__ */ jsxRuntime.jsx(
|
|
1375
|
+
!readOnly && /* @__PURE__ */ jsxRuntime.jsx(chunkXXF4U7WL_cjs.Button, { size: "sm", onClick: onSave, disabled: saving, className: "h-7 text-xs", children: saving ? "Saving..." : "Save" }),
|
|
1376
|
+
/* @__PURE__ */ jsxRuntime.jsx(chunkXXF4U7WL_cjs.Button, { size: "sm", variant: "ghost", onClick: onClose, className: "h-7 text-xs", children: "Close" })
|
|
1376
1377
|
] })
|
|
1377
1378
|
] }),
|
|
1378
1379
|
/* @__PURE__ */ jsxRuntime.jsx(
|
|
@@ -1388,9 +1389,9 @@ function FileEditorInline({
|
|
|
1388
1389
|
] });
|
|
1389
1390
|
}
|
|
1390
1391
|
function PluginDetailPage({ marketplaceId, pluginName }) {
|
|
1391
|
-
const { LinkComponent, basePath } =
|
|
1392
|
-
const client =
|
|
1393
|
-
const { data: plugin, error, isLoading } =
|
|
1392
|
+
const { LinkComponent, basePath } = chunkXXF4U7WL_cjs.useNavigation();
|
|
1393
|
+
const client = chunkXXF4U7WL_cjs.useAgentPlaneClient();
|
|
1394
|
+
const { data: plugin, error, isLoading } = chunkVZ43ATC5_cjs.useApi(
|
|
1394
1395
|
`marketplace-${marketplaceId}-plugin-${pluginName}`,
|
|
1395
1396
|
(c) => c.pluginMarketplaces.getPlugin(marketplaceId, pluginName)
|
|
1396
1397
|
);
|
|
@@ -1534,9 +1535,9 @@ function PluginDetailPage({ marketplaceId, pluginName }) {
|
|
|
1534
1535
|
}
|
|
1535
1536
|
if (isLoading || !plugin) {
|
|
1536
1537
|
return /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "space-y-6", children: [
|
|
1537
|
-
/* @__PURE__ */ jsxRuntime.jsx(
|
|
1538
|
-
/* @__PURE__ */ jsxRuntime.jsx(
|
|
1539
|
-
/* @__PURE__ */ jsxRuntime.jsx(
|
|
1538
|
+
/* @__PURE__ */ jsxRuntime.jsx(chunkVZ43ATC5_cjs.Skeleton, { className: "h-8 w-48" }),
|
|
1539
|
+
/* @__PURE__ */ jsxRuntime.jsx(chunkVZ43ATC5_cjs.Skeleton, { className: "h-4 w-96" }),
|
|
1540
|
+
/* @__PURE__ */ jsxRuntime.jsx(chunkVZ43ATC5_cjs.Skeleton, { className: "h-64 rounded-lg" })
|
|
1540
1541
|
] });
|
|
1541
1542
|
}
|
|
1542
1543
|
const readOnly = pluginFiles ? !pluginFiles.isOwned : true;
|
|
@@ -1553,7 +1554,7 @@ function PluginDetailPage({ marketplaceId, pluginName }) {
|
|
|
1553
1554
|
selectedFilename: editorState?.type === "agent" ? editorState.identifier : null
|
|
1554
1555
|
}
|
|
1555
1556
|
),
|
|
1556
|
-
editorState?.type === "agent" && editorFile && (filesLoading ? /* @__PURE__ */ jsxRuntime.jsx("div", { className: "mt-4", children: /* @__PURE__ */ jsxRuntime.jsx(
|
|
1557
|
+
editorState?.type === "agent" && editorFile && (filesLoading ? /* @__PURE__ */ jsxRuntime.jsx("div", { className: "mt-4", children: /* @__PURE__ */ jsxRuntime.jsx(chunkVZ43ATC5_cjs.Skeleton, { className: "h-[400px] rounded-md" }) }) : filesError ? /* @__PURE__ */ jsxRuntime.jsx("p", { className: "mt-4 text-sm text-destructive", children: filesError }) : /* @__PURE__ */ jsxRuntime.jsx(
|
|
1557
1558
|
FileEditorInline,
|
|
1558
1559
|
{
|
|
1559
1560
|
filePath: editorFile.path,
|
|
@@ -1580,7 +1581,7 @@ function PluginDetailPage({ marketplaceId, pluginName }) {
|
|
|
1580
1581
|
selectedSkill: editorState?.type === "skill" ? editorState.identifier : null
|
|
1581
1582
|
}
|
|
1582
1583
|
),
|
|
1583
|
-
editorState?.type === "skill" && editorFile && (filesLoading ? /* @__PURE__ */ jsxRuntime.jsx("div", { className: "mt-4", children: /* @__PURE__ */ jsxRuntime.jsx(
|
|
1584
|
+
editorState?.type === "skill" && editorFile && (filesLoading ? /* @__PURE__ */ jsxRuntime.jsx("div", { className: "mt-4", children: /* @__PURE__ */ jsxRuntime.jsx(chunkVZ43ATC5_cjs.Skeleton, { className: "h-[400px] rounded-md" }) }) : filesError ? /* @__PURE__ */ jsxRuntime.jsx("p", { className: "mt-4 text-sm text-destructive", children: filesError }) : /* @__PURE__ */ jsxRuntime.jsx(
|
|
1584
1585
|
FileEditorInline,
|
|
1585
1586
|
{
|
|
1586
1587
|
filePath: editorFile.path,
|
|
@@ -1608,7 +1609,7 @@ function PluginDetailPage({ marketplaceId, pluginName }) {
|
|
|
1608
1609
|
selected: editorState?.type === "connector"
|
|
1609
1610
|
}
|
|
1610
1611
|
),
|
|
1611
|
-
editorState?.type === "connector" && editorFile && (filesLoading ? /* @__PURE__ */ jsxRuntime.jsx("div", { className: "mt-4", children: /* @__PURE__ */ jsxRuntime.jsx(
|
|
1612
|
+
editorState?.type === "connector" && editorFile && (filesLoading ? /* @__PURE__ */ jsxRuntime.jsx("div", { className: "mt-4", children: /* @__PURE__ */ jsxRuntime.jsx(chunkVZ43ATC5_cjs.Skeleton, { className: "h-[400px] rounded-md" }) }) : filesError ? /* @__PURE__ */ jsxRuntime.jsx("p", { className: "mt-4 text-sm text-destructive", children: filesError }) : /* @__PURE__ */ jsxRuntime.jsx(
|
|
1612
1613
|
FileEditorInline,
|
|
1613
1614
|
{
|
|
1614
1615
|
filePath: editorFile.path,
|
|
@@ -1629,11 +1630,11 @@ function PluginDetailPage({ marketplaceId, pluginName }) {
|
|
|
1629
1630
|
/* @__PURE__ */ jsxRuntime.jsxs("div", { children: [
|
|
1630
1631
|
/* @__PURE__ */ jsxRuntime.jsxs("div", { className: "flex items-center gap-3", children: [
|
|
1631
1632
|
/* @__PURE__ */ jsxRuntime.jsx("h1", { className: "text-2xl font-semibold", children: plugin.displayName }),
|
|
1632
|
-
plugin.version && /* @__PURE__ */ jsxRuntime.jsxs(
|
|
1633
|
+
plugin.version && /* @__PURE__ */ jsxRuntime.jsxs(chunkXXF4U7WL_cjs.Badge, { variant: "outline", children: [
|
|
1633
1634
|
"v",
|
|
1634
1635
|
plugin.version
|
|
1635
1636
|
] }),
|
|
1636
|
-
pluginFiles && (pluginFiles.isOwned ? /* @__PURE__ */ jsxRuntime.jsx(
|
|
1637
|
+
pluginFiles && (pluginFiles.isOwned ? /* @__PURE__ */ jsxRuntime.jsx(chunkXXF4U7WL_cjs.Badge, { variant: "secondary", children: "Editable" }) : /* @__PURE__ */ jsxRuntime.jsx(chunkXXF4U7WL_cjs.Badge, { variant: "outline", children: "Read-only" }))
|
|
1637
1638
|
] }),
|
|
1638
1639
|
plugin.description && /* @__PURE__ */ jsxRuntime.jsx("p", { className: "text-sm text-muted-foreground mt-1", children: plugin.description })
|
|
1639
1640
|
] }),
|
|
@@ -1643,12 +1644,12 @@ function PluginDetailPage({ marketplaceId, pluginName }) {
|
|
|
1643
1644
|
var TIMEZONES = typeof Intl !== "undefined" && Intl.supportedValuesOf ? Intl.supportedValuesOf("timeZone") : ["UTC"];
|
|
1644
1645
|
function SettingsPage({ initialData, hideDangerZone }) {
|
|
1645
1646
|
const { mutate } = swr.useSWRConfig();
|
|
1646
|
-
const { data: tenantData, error: tenantError, isLoading: tenantLoading } =
|
|
1647
|
+
const { data: tenantData, error: tenantError, isLoading: tenantLoading } = chunkVZ43ATC5_cjs.useApi(
|
|
1647
1648
|
"settings-tenant",
|
|
1648
1649
|
(c) => c.tenants.getMe(),
|
|
1649
1650
|
initialData ? { fallbackData: initialData.tenant } : void 0
|
|
1650
1651
|
);
|
|
1651
|
-
const { data: apiKeysData, error: apiKeysError, isLoading: apiKeysLoading } =
|
|
1652
|
+
const { data: apiKeysData, error: apiKeysError, isLoading: apiKeysLoading } = chunkVZ43ATC5_cjs.useApi(
|
|
1652
1653
|
"settings-keys",
|
|
1653
1654
|
(c) => c.keys.list ? c.keys.list() : Promise.resolve([]),
|
|
1654
1655
|
initialData ? { fallbackData: initialData.api_keys } : void 0
|
|
@@ -1664,8 +1665,8 @@ function SettingsPage({ initialData, hideDangerZone }) {
|
|
|
1664
1665
|
}
|
|
1665
1666
|
if (isLoading || !data) {
|
|
1666
1667
|
return /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "space-y-6", children: [
|
|
1667
|
-
/* @__PURE__ */ jsxRuntime.jsx(
|
|
1668
|
-
/* @__PURE__ */ jsxRuntime.jsx(
|
|
1668
|
+
/* @__PURE__ */ jsxRuntime.jsx(chunkVZ43ATC5_cjs.Skeleton, { className: "h-48 rounded-lg" }),
|
|
1669
|
+
/* @__PURE__ */ jsxRuntime.jsx(chunkVZ43ATC5_cjs.Skeleton, { className: "h-64 rounded-lg" })
|
|
1669
1670
|
] });
|
|
1670
1671
|
}
|
|
1671
1672
|
return /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "space-y-6", children: [
|
|
@@ -1681,7 +1682,7 @@ function SettingsPage({ initialData, hideDangerZone }) {
|
|
|
1681
1682
|
] });
|
|
1682
1683
|
}
|
|
1683
1684
|
function CompanyForm({ tenant, onSaved }) {
|
|
1684
|
-
const client =
|
|
1685
|
+
const client = chunkXXF4U7WL_cjs.useAgentPlaneClient();
|
|
1685
1686
|
const fileInputRef = React.useRef(null);
|
|
1686
1687
|
const [name, setName] = React.useState(tenant.name);
|
|
1687
1688
|
const [budget, setBudget] = React.useState(tenant.monthly_budget_usd.toString());
|
|
@@ -1711,8 +1712,8 @@ function CompanyForm({ tenant, onSaved }) {
|
|
|
1711
1712
|
/* @__PURE__ */ jsxRuntime.jsxs("div", { className: "space-y-2", children: [
|
|
1712
1713
|
/* @__PURE__ */ jsxRuntime.jsx("p", { className: "text-sm text-muted-foreground", children: "Upload a logo for your company. Recommended size: 256x256px." }),
|
|
1713
1714
|
/* @__PURE__ */ jsxRuntime.jsxs("div", { className: "flex items-center gap-2", children: [
|
|
1714
|
-
/* @__PURE__ */ jsxRuntime.jsx(
|
|
1715
|
-
logoUrl && /* @__PURE__ */ jsxRuntime.jsx(
|
|
1715
|
+
/* @__PURE__ */ jsxRuntime.jsx(chunkXXF4U7WL_cjs.Button, { size: "sm", variant: "outline", onClick: () => fileInputRef.current?.click(), children: "Upload image" }),
|
|
1716
|
+
logoUrl && /* @__PURE__ */ jsxRuntime.jsx(chunkXXF4U7WL_cjs.Button, { size: "sm", variant: "outline", onClick: () => setLogoUrl(""), children: "Remove" }),
|
|
1716
1717
|
/* @__PURE__ */ jsxRuntime.jsx(
|
|
1717
1718
|
"input",
|
|
1718
1719
|
{
|
|
@@ -1737,14 +1738,14 @@ function CompanyForm({ tenant, onSaved }) {
|
|
|
1737
1738
|
/* @__PURE__ */ jsxRuntime.jsxs("div", { className: "rounded-lg border border-muted-foreground/25 p-5", children: [
|
|
1738
1739
|
/* @__PURE__ */ jsxRuntime.jsx(SectionHeader, { title: "Company Details" }),
|
|
1739
1740
|
/* @__PURE__ */ jsxRuntime.jsxs("div", { className: "grid grid-cols-2 md:grid-cols-4 gap-4", children: [
|
|
1740
|
-
/* @__PURE__ */ jsxRuntime.jsx(
|
|
1741
|
-
/* @__PURE__ */ jsxRuntime.jsx(
|
|
1742
|
-
/* @__PURE__ */ jsxRuntime.jsx(
|
|
1743
|
-
/* @__PURE__ */ jsxRuntime.jsx(
|
|
1744
|
-
/* @__PURE__ */ jsxRuntime.jsx(
|
|
1741
|
+
/* @__PURE__ */ jsxRuntime.jsx(chunkXXF4U7WL_cjs.FormField, { label: "Name", children: /* @__PURE__ */ jsxRuntime.jsx(chunkXXF4U7WL_cjs.Input, { value: name, onChange: (e) => setName(e.target.value) }) }),
|
|
1742
|
+
/* @__PURE__ */ jsxRuntime.jsx(chunkXXF4U7WL_cjs.FormField, { label: "Slug", children: /* @__PURE__ */ jsxRuntime.jsx(chunkXXF4U7WL_cjs.Input, { value: tenant.slug, readOnly: true, disabled: true, className: "opacity-60" }) }),
|
|
1743
|
+
/* @__PURE__ */ jsxRuntime.jsx(chunkXXF4U7WL_cjs.FormField, { label: "Status", children: /* @__PURE__ */ jsxRuntime.jsx("div", { className: "flex items-center h-9", children: /* @__PURE__ */ jsxRuntime.jsx(chunkXXF4U7WL_cjs.Badge, { variant: tenant.status === "active" ? "default" : "destructive", children: tenant.status }) }) }),
|
|
1744
|
+
/* @__PURE__ */ jsxRuntime.jsx(chunkXXF4U7WL_cjs.FormField, { label: "Timezone", children: /* @__PURE__ */ jsxRuntime.jsx(Select, { value: timezone, onChange: (e) => setTimezone(e.target.value), children: TIMEZONES.map((tz) => /* @__PURE__ */ jsxRuntime.jsx("option", { value: tz, children: tz.replace(/_/g, " ") }, tz)) }) }),
|
|
1745
|
+
/* @__PURE__ */ jsxRuntime.jsx(chunkXXF4U7WL_cjs.FormField, { label: "Monthly Budget (USD)", children: /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "relative", children: [
|
|
1745
1746
|
/* @__PURE__ */ jsxRuntime.jsx("span", { className: "absolute left-3 top-1/2 -translate-y-1/2 text-muted-foreground text-sm", children: "$" }),
|
|
1746
1747
|
/* @__PURE__ */ jsxRuntime.jsx(
|
|
1747
|
-
|
|
1748
|
+
chunkXXF4U7WL_cjs.Input,
|
|
1748
1749
|
{
|
|
1749
1750
|
type: "number",
|
|
1750
1751
|
step: "0.01",
|
|
@@ -1756,11 +1757,11 @@ function CompanyForm({ tenant, onSaved }) {
|
|
|
1756
1757
|
] }) })
|
|
1757
1758
|
] })
|
|
1758
1759
|
] }),
|
|
1759
|
-
/* @__PURE__ */ jsxRuntime.jsx("div", { className: "flex items-center", children: /* @__PURE__ */ jsxRuntime.jsx(
|
|
1760
|
+
/* @__PURE__ */ jsxRuntime.jsx("div", { className: "flex items-center", children: /* @__PURE__ */ jsxRuntime.jsx(chunkXXF4U7WL_cjs.Button, { onClick: handleSave, disabled: saving || !isDirty, size: "sm", children: saving ? "Saving..." : "Save Changes" }) })
|
|
1760
1761
|
] });
|
|
1761
1762
|
}
|
|
1762
1763
|
function ApiKeysSection({ initialKeys, onChanged }) {
|
|
1763
|
-
const client =
|
|
1764
|
+
const client = chunkXXF4U7WL_cjs.useAgentPlaneClient();
|
|
1764
1765
|
const [creating, setCreating] = React.useState(false);
|
|
1765
1766
|
const [newKeyName, setNewKeyName] = React.useState("default");
|
|
1766
1767
|
const [showCreate, setShowCreate] = React.useState(false);
|
|
@@ -1797,17 +1798,17 @@ function ApiKeysSection({ initialKeys, onChanged }) {
|
|
|
1797
1798
|
const activeKeys = initialKeys.filter((k) => !k.revoked_at);
|
|
1798
1799
|
const revokedKeys = initialKeys.filter((k) => k.revoked_at);
|
|
1799
1800
|
return /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "rounded-lg border border-muted-foreground/25 p-5", children: [
|
|
1800
|
-
/* @__PURE__ */ jsxRuntime.jsx(SectionHeader, { title: "API Keys", children: /* @__PURE__ */ jsxRuntime.jsx(
|
|
1801
|
+
/* @__PURE__ */ jsxRuntime.jsx(SectionHeader, { title: "API Keys", children: /* @__PURE__ */ jsxRuntime.jsx(chunkXXF4U7WL_cjs.Button, { variant: "outline", size: "sm", onClick: () => setShowCreate(!showCreate), children: showCreate ? "Cancel" : "+ New Key" }) }),
|
|
1801
1802
|
rawKey && /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "mb-4 p-3 rounded-lg border border-yellow-500/50 bg-yellow-500/10", children: [
|
|
1802
1803
|
/* @__PURE__ */ jsxRuntime.jsx("p", { className: "text-sm font-medium mb-1", children: "New API key created \u2014 copy it now, it won't be shown again:" }),
|
|
1803
1804
|
/* @__PURE__ */ jsxRuntime.jsx("code", { className: "block text-xs font-mono bg-black/20 p-2 rounded break-all select-all", children: rawKey }),
|
|
1804
|
-
/* @__PURE__ */ jsxRuntime.jsx(
|
|
1805
|
+
/* @__PURE__ */ jsxRuntime.jsx(chunkXXF4U7WL_cjs.Button, { size: "sm", variant: "outline", className: "mt-2", onClick: () => setRawKey(null), children: "Dismiss" })
|
|
1805
1806
|
] }),
|
|
1806
1807
|
showCreate && /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "mb-4 flex gap-2 items-end", children: [
|
|
1807
1808
|
/* @__PURE__ */ jsxRuntime.jsxs("div", { className: "space-y-1", children: [
|
|
1808
1809
|
/* @__PURE__ */ jsxRuntime.jsx("label", { className: "text-xs font-medium text-muted-foreground", children: "Key Name" }),
|
|
1809
1810
|
/* @__PURE__ */ jsxRuntime.jsx(
|
|
1810
|
-
|
|
1811
|
+
chunkXXF4U7WL_cjs.Input,
|
|
1811
1812
|
{
|
|
1812
1813
|
value: newKeyName,
|
|
1813
1814
|
onChange: (e) => setNewKeyName(e.target.value),
|
|
@@ -1816,7 +1817,7 @@ function ApiKeysSection({ initialKeys, onChanged }) {
|
|
|
1816
1817
|
}
|
|
1817
1818
|
)
|
|
1818
1819
|
] }),
|
|
1819
|
-
/* @__PURE__ */ jsxRuntime.jsx(
|
|
1820
|
+
/* @__PURE__ */ jsxRuntime.jsx(chunkXXF4U7WL_cjs.Button, { size: "sm", onClick: handleCreate, disabled: creating, children: creating ? "Creating..." : "Create" })
|
|
1820
1821
|
] }),
|
|
1821
1822
|
/* @__PURE__ */ jsxRuntime.jsx("div", { className: "rounded-lg border border-border", children: /* @__PURE__ */ jsxRuntime.jsxs("table", { className: "w-full text-sm", children: [
|
|
1822
1823
|
/* @__PURE__ */ jsxRuntime.jsx("thead", { children: /* @__PURE__ */ jsxRuntime.jsxs("tr", { className: "border-b border-border bg-muted/50", children: [
|
|
@@ -1834,11 +1835,11 @@ function ApiKeysSection({ initialKeys, onChanged }) {
|
|
|
1834
1835
|
k.key_prefix,
|
|
1835
1836
|
"..."
|
|
1836
1837
|
] }),
|
|
1837
|
-
/* @__PURE__ */ jsxRuntime.jsx("td", { className: "p-3", children: /* @__PURE__ */ jsxRuntime.jsx(
|
|
1838
|
+
/* @__PURE__ */ jsxRuntime.jsx("td", { className: "p-3", children: /* @__PURE__ */ jsxRuntime.jsx(chunkXXF4U7WL_cjs.Badge, { variant: "default", children: "active" }) }),
|
|
1838
1839
|
/* @__PURE__ */ jsxRuntime.jsx("td", { className: "p-3 text-muted-foreground text-xs", children: k.last_used_at ? new Date(k.last_used_at).toLocaleString() : "never" }),
|
|
1839
1840
|
/* @__PURE__ */ jsxRuntime.jsx("td", { className: "p-3 text-muted-foreground text-xs", children: new Date(k.created_at).toLocaleDateString() }),
|
|
1840
1841
|
/* @__PURE__ */ jsxRuntime.jsx("td", { className: "p-3 text-right", children: /* @__PURE__ */ jsxRuntime.jsx(
|
|
1841
|
-
|
|
1842
|
+
chunkXXF4U7WL_cjs.Button,
|
|
1842
1843
|
{
|
|
1843
1844
|
size: "sm",
|
|
1844
1845
|
variant: "destructive",
|
|
@@ -1853,7 +1854,7 @@ function ApiKeysSection({ initialKeys, onChanged }) {
|
|
|
1853
1854
|
k.key_prefix,
|
|
1854
1855
|
"..."
|
|
1855
1856
|
] }),
|
|
1856
|
-
/* @__PURE__ */ jsxRuntime.jsx("td", { className: "p-3", children: /* @__PURE__ */ jsxRuntime.jsx(
|
|
1857
|
+
/* @__PURE__ */ jsxRuntime.jsx("td", { className: "p-3", children: /* @__PURE__ */ jsxRuntime.jsx(chunkXXF4U7WL_cjs.Badge, { variant: "destructive", children: "revoked" }) }),
|
|
1857
1858
|
/* @__PURE__ */ jsxRuntime.jsx("td", { className: "p-3 text-muted-foreground text-xs", children: k.last_used_at ? new Date(k.last_used_at).toLocaleString() : "never" }),
|
|
1858
1859
|
/* @__PURE__ */ jsxRuntime.jsx("td", { className: "p-3 text-muted-foreground text-xs", children: new Date(k.created_at).toLocaleDateString() }),
|
|
1859
1860
|
/* @__PURE__ */ jsxRuntime.jsx("td", { className: "p-3" })
|
|
@@ -1886,8 +1887,8 @@ function ApiKeysSection({ initialKeys, onChanged }) {
|
|
|
1886
1887
|
] });
|
|
1887
1888
|
}
|
|
1888
1889
|
function DangerZone({ tenantId, tenantName }) {
|
|
1889
|
-
const client =
|
|
1890
|
-
const { onNavigate, basePath } =
|
|
1890
|
+
const client = chunkXXF4U7WL_cjs.useAgentPlaneClient();
|
|
1891
|
+
const { onNavigate, basePath } = chunkXXF4U7WL_cjs.useNavigation();
|
|
1891
1892
|
const [open, setOpen] = React.useState(false);
|
|
1892
1893
|
const [deleting, setDeleting] = React.useState(false);
|
|
1893
1894
|
const [error, setError] = React.useState("");
|
|
@@ -1910,7 +1911,7 @@ function DangerZone({ tenantId, tenantName }) {
|
|
|
1910
1911
|
/* @__PURE__ */ jsxRuntime.jsx("h2", { className: "text-lg font-semibold text-destructive", children: "Danger Zone" }),
|
|
1911
1912
|
/* @__PURE__ */ jsxRuntime.jsx("p", { className: "text-sm text-muted-foreground mt-1", children: "Permanently delete this company and all its agents, runs, sessions, and API keys." })
|
|
1912
1913
|
] }),
|
|
1913
|
-
/* @__PURE__ */ jsxRuntime.jsx(
|
|
1914
|
+
/* @__PURE__ */ jsxRuntime.jsx(chunkXXF4U7WL_cjs.Button, { size: "sm", variant: "destructive", onClick: () => setOpen(true), children: "Delete Company" })
|
|
1914
1915
|
] }),
|
|
1915
1916
|
/* @__PURE__ */ jsxRuntime.jsxs(
|
|
1916
1917
|
ConfirmDialog,
|
|
@@ -1970,7 +1971,7 @@ var TAG_TITLES = {
|
|
|
1970
1971
|
"image-generation": "Image Generation"
|
|
1971
1972
|
};
|
|
1972
1973
|
function ModelSelector({ value, onChange, disabled }) {
|
|
1973
|
-
const client =
|
|
1974
|
+
const client = chunkXXF4U7WL_cjs.useAgentPlaneClient();
|
|
1974
1975
|
const [open, setOpen] = React.useState(false);
|
|
1975
1976
|
const [models, setModels] = React.useState(null);
|
|
1976
1977
|
const [loading, setLoading] = React.useState(false);
|
|
@@ -2174,7 +2175,7 @@ function ModelSelector({ value, onChange, disabled }) {
|
|
|
2174
2175
|
] });
|
|
2175
2176
|
}
|
|
2176
2177
|
function AddAgentDialog({ onCreated }) {
|
|
2177
|
-
const client =
|
|
2178
|
+
const client = chunkXXF4U7WL_cjs.useAgentPlaneClient();
|
|
2178
2179
|
const [open, setOpen] = React.useState(false);
|
|
2179
2180
|
const [saving, setSaving] = React.useState(false);
|
|
2180
2181
|
const [error, setError] = React.useState("");
|
|
@@ -2226,15 +2227,15 @@ function AddAgentDialog({ onCreated }) {
|
|
|
2226
2227
|
}
|
|
2227
2228
|
}
|
|
2228
2229
|
return /* @__PURE__ */ jsxRuntime.jsxs(jsxRuntime.Fragment, { children: [
|
|
2229
|
-
/* @__PURE__ */ jsxRuntime.jsx(
|
|
2230
|
-
/* @__PURE__ */ jsxRuntime.jsx(
|
|
2230
|
+
/* @__PURE__ */ jsxRuntime.jsx(chunkXXF4U7WL_cjs.Button, { variant: "outline", size: "sm", onClick: () => setOpen(true), children: "+ New Agent" }),
|
|
2231
|
+
/* @__PURE__ */ jsxRuntime.jsx(chunkXXF4U7WL_cjs.Dialog, { open, onOpenChange: (v) => {
|
|
2231
2232
|
setOpen(v);
|
|
2232
2233
|
if (!v) resetForm();
|
|
2233
|
-
}, children: /* @__PURE__ */ jsxRuntime.jsx(
|
|
2234
|
-
/* @__PURE__ */ jsxRuntime.jsx(
|
|
2235
|
-
/* @__PURE__ */ jsxRuntime.jsxs(
|
|
2236
|
-
/* @__PURE__ */ jsxRuntime.jsx(
|
|
2237
|
-
|
|
2234
|
+
}, children: /* @__PURE__ */ jsxRuntime.jsx(chunkXXF4U7WL_cjs.DialogContent, { className: "max-w-md", children: /* @__PURE__ */ jsxRuntime.jsxs("form", { onSubmit: handleSubmit, children: [
|
|
2235
|
+
/* @__PURE__ */ jsxRuntime.jsx(chunkXXF4U7WL_cjs.DialogHeader, { children: /* @__PURE__ */ jsxRuntime.jsx(chunkXXF4U7WL_cjs.DialogTitle, { children: "Add Agent" }) }),
|
|
2236
|
+
/* @__PURE__ */ jsxRuntime.jsxs(chunkXXF4U7WL_cjs.DialogBody, { className: "space-y-3", children: [
|
|
2237
|
+
/* @__PURE__ */ jsxRuntime.jsx(chunkXXF4U7WL_cjs.FormField, { label: "Name", children: /* @__PURE__ */ jsxRuntime.jsx(
|
|
2238
|
+
chunkXXF4U7WL_cjs.Input,
|
|
2238
2239
|
{
|
|
2239
2240
|
value: form.name,
|
|
2240
2241
|
onChange: (e) => setForm((f) => ({ ...f, name: e.target.value })),
|
|
@@ -2242,28 +2243,28 @@ function AddAgentDialog({ onCreated }) {
|
|
|
2242
2243
|
required: true
|
|
2243
2244
|
}
|
|
2244
2245
|
) }),
|
|
2245
|
-
/* @__PURE__ */ jsxRuntime.jsx(
|
|
2246
|
-
|
|
2246
|
+
/* @__PURE__ */ jsxRuntime.jsx(chunkXXF4U7WL_cjs.FormField, { label: "Description", children: /* @__PURE__ */ jsxRuntime.jsx(
|
|
2247
|
+
chunkXXF4U7WL_cjs.Input,
|
|
2247
2248
|
{
|
|
2248
2249
|
value: form.description,
|
|
2249
2250
|
onChange: (e) => setForm((f) => ({ ...f, description: e.target.value })),
|
|
2250
2251
|
placeholder: "What does this agent do?"
|
|
2251
2252
|
}
|
|
2252
2253
|
) }),
|
|
2253
|
-
/* @__PURE__ */ jsxRuntime.jsx(
|
|
2254
|
+
/* @__PURE__ */ jsxRuntime.jsx(chunkXXF4U7WL_cjs.FormField, { label: "Model", children: /* @__PURE__ */ jsxRuntime.jsx(
|
|
2254
2255
|
ModelSelector,
|
|
2255
2256
|
{
|
|
2256
2257
|
value: form.model,
|
|
2257
2258
|
onChange: (modelId) => setForm((f) => ({
|
|
2258
2259
|
...f,
|
|
2259
2260
|
model: modelId,
|
|
2260
|
-
runner:
|
|
2261
|
-
permission_mode:
|
|
2261
|
+
runner: chunkXXF4U7WL_cjs.supportsClaudeRunner(modelId) ? f.runner : "vercel-ai-sdk",
|
|
2262
|
+
permission_mode: chunkXXF4U7WL_cjs.supportsClaudeRunner(modelId) ? f.permission_mode : "bypassPermissions"
|
|
2262
2263
|
}))
|
|
2263
2264
|
}
|
|
2264
2265
|
) }),
|
|
2265
2266
|
/* @__PURE__ */ jsxRuntime.jsxs("div", { className: "grid grid-cols-2 gap-3", children: [
|
|
2266
|
-
/* @__PURE__ */ jsxRuntime.jsx(
|
|
2267
|
+
/* @__PURE__ */ jsxRuntime.jsx(chunkXXF4U7WL_cjs.FormField, { label: "Runner", children: chunkXXF4U7WL_cjs.supportsClaudeRunner(form.model) ? /* @__PURE__ */ jsxRuntime.jsxs(
|
|
2267
2268
|
Select,
|
|
2268
2269
|
{
|
|
2269
2270
|
value: form.runner || "claude-agent-sdk",
|
|
@@ -2274,12 +2275,12 @@ function AddAgentDialog({ onCreated }) {
|
|
|
2274
2275
|
]
|
|
2275
2276
|
}
|
|
2276
2277
|
) : /* @__PURE__ */ jsxRuntime.jsx(Select, { value: "vercel-ai-sdk", disabled: true, children: /* @__PURE__ */ jsxRuntime.jsx("option", { value: "vercel-ai-sdk", children: "Vercel AI SDK" }) }) }),
|
|
2277
|
-
/* @__PURE__ */ jsxRuntime.jsx(
|
|
2278
|
+
/* @__PURE__ */ jsxRuntime.jsx(chunkXXF4U7WL_cjs.FormField, { label: "Permission Mode", children: /* @__PURE__ */ jsxRuntime.jsxs(
|
|
2278
2279
|
Select,
|
|
2279
2280
|
{
|
|
2280
2281
|
value: form.permission_mode,
|
|
2281
2282
|
onChange: (e) => setForm((f) => ({ ...f, permission_mode: e.target.value })),
|
|
2282
|
-
disabled: !
|
|
2283
|
+
disabled: !chunkXXF4U7WL_cjs.supportsClaudeRunner(form.model) || form.runner === "vercel-ai-sdk",
|
|
2283
2284
|
children: [
|
|
2284
2285
|
/* @__PURE__ */ jsxRuntime.jsx("option", { value: "default", children: "default" }),
|
|
2285
2286
|
/* @__PURE__ */ jsxRuntime.jsx("option", { value: "acceptEdits", children: "acceptEdits" }),
|
|
@@ -2290,8 +2291,8 @@ function AddAgentDialog({ onCreated }) {
|
|
|
2290
2291
|
) })
|
|
2291
2292
|
] }),
|
|
2292
2293
|
/* @__PURE__ */ jsxRuntime.jsxs("div", { className: "grid grid-cols-3 gap-3", children: [
|
|
2293
|
-
/* @__PURE__ */ jsxRuntime.jsx(
|
|
2294
|
-
|
|
2294
|
+
/* @__PURE__ */ jsxRuntime.jsx(chunkXXF4U7WL_cjs.FormField, { label: "Max Turns", children: /* @__PURE__ */ jsxRuntime.jsx(
|
|
2295
|
+
chunkXXF4U7WL_cjs.Input,
|
|
2295
2296
|
{
|
|
2296
2297
|
type: "number",
|
|
2297
2298
|
min: "1",
|
|
@@ -2301,10 +2302,10 @@ function AddAgentDialog({ onCreated }) {
|
|
|
2301
2302
|
required: true
|
|
2302
2303
|
}
|
|
2303
2304
|
) }),
|
|
2304
|
-
/* @__PURE__ */ jsxRuntime.jsx(
|
|
2305
|
+
/* @__PURE__ */ jsxRuntime.jsx(chunkXXF4U7WL_cjs.FormField, { label: "Max Budget", children: /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "relative", children: [
|
|
2305
2306
|
/* @__PURE__ */ jsxRuntime.jsx("span", { className: "absolute left-3 top-1/2 -translate-y-1/2 text-sm text-muted-foreground", children: "$" }),
|
|
2306
2307
|
/* @__PURE__ */ jsxRuntime.jsx(
|
|
2307
|
-
|
|
2308
|
+
chunkXXF4U7WL_cjs.Input,
|
|
2308
2309
|
{
|
|
2309
2310
|
type: "number",
|
|
2310
2311
|
step: "0.01",
|
|
@@ -2317,9 +2318,9 @@ function AddAgentDialog({ onCreated }) {
|
|
|
2317
2318
|
}
|
|
2318
2319
|
)
|
|
2319
2320
|
] }) }),
|
|
2320
|
-
/* @__PURE__ */ jsxRuntime.jsx(
|
|
2321
|
+
/* @__PURE__ */ jsxRuntime.jsx(chunkXXF4U7WL_cjs.FormField, { label: "Max Runtime", children: /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "relative", children: [
|
|
2321
2322
|
/* @__PURE__ */ jsxRuntime.jsx(
|
|
2322
|
-
|
|
2323
|
+
chunkXXF4U7WL_cjs.Input,
|
|
2323
2324
|
{
|
|
2324
2325
|
type: "number",
|
|
2325
2326
|
min: "1",
|
|
@@ -2335,18 +2336,18 @@ function AddAgentDialog({ onCreated }) {
|
|
|
2335
2336
|
] }),
|
|
2336
2337
|
/* @__PURE__ */ jsxRuntime.jsx(FormError, { error })
|
|
2337
2338
|
] }),
|
|
2338
|
-
/* @__PURE__ */ jsxRuntime.jsxs(
|
|
2339
|
-
/* @__PURE__ */ jsxRuntime.jsx(
|
|
2339
|
+
/* @__PURE__ */ jsxRuntime.jsxs(chunkXXF4U7WL_cjs.DialogFooter, { children: [
|
|
2340
|
+
/* @__PURE__ */ jsxRuntime.jsx(chunkXXF4U7WL_cjs.Button, { type: "button", variant: "outline", size: "sm", onClick: () => {
|
|
2340
2341
|
setOpen(false);
|
|
2341
2342
|
resetForm();
|
|
2342
2343
|
}, children: "Cancel" }),
|
|
2343
|
-
/* @__PURE__ */ jsxRuntime.jsx(
|
|
2344
|
+
/* @__PURE__ */ jsxRuntime.jsx(chunkXXF4U7WL_cjs.Button, { type: "submit", size: "sm", disabled: saving, children: saving ? "Creating..." : "Create Agent" })
|
|
2344
2345
|
] })
|
|
2345
2346
|
] }) }) })
|
|
2346
2347
|
] });
|
|
2347
2348
|
}
|
|
2348
2349
|
function DeleteAgentButton({ agentId, agentName, onDeleted }) {
|
|
2349
|
-
const client =
|
|
2350
|
+
const client = chunkXXF4U7WL_cjs.useAgentPlaneClient();
|
|
2350
2351
|
const [open, setOpen] = React.useState(false);
|
|
2351
2352
|
const [deleting, setDeleting] = React.useState(false);
|
|
2352
2353
|
const [error, setError] = React.useState("");
|
|
@@ -2365,7 +2366,7 @@ function DeleteAgentButton({ agentId, agentName, onDeleted }) {
|
|
|
2365
2366
|
}
|
|
2366
2367
|
return /* @__PURE__ */ jsxRuntime.jsxs(jsxRuntime.Fragment, { children: [
|
|
2367
2368
|
/* @__PURE__ */ jsxRuntime.jsx(
|
|
2368
|
-
|
|
2369
|
+
chunkXXF4U7WL_cjs.Button,
|
|
2369
2370
|
{
|
|
2370
2371
|
size: "sm",
|
|
2371
2372
|
variant: "ghost",
|
|
@@ -2395,9 +2396,9 @@ function DeleteAgentButton({ agentId, agentName, onDeleted }) {
|
|
|
2395
2396
|
] });
|
|
2396
2397
|
}
|
|
2397
2398
|
function AgentListPage() {
|
|
2398
|
-
const { LinkComponent, basePath } =
|
|
2399
|
+
const { LinkComponent, basePath } = chunkXXF4U7WL_cjs.useNavigation();
|
|
2399
2400
|
const { mutate } = swr.useSWRConfig();
|
|
2400
|
-
const { data, error, isLoading } =
|
|
2401
|
+
const { data, error, isLoading } = chunkVZ43ATC5_cjs.useApi(
|
|
2401
2402
|
"agents",
|
|
2402
2403
|
(client) => client.agents.list()
|
|
2403
2404
|
);
|
|
@@ -2407,8 +2408,8 @@ function AgentListPage() {
|
|
|
2407
2408
|
}, [mutate]);
|
|
2408
2409
|
if (isLoading) {
|
|
2409
2410
|
return /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "space-y-4", children: [
|
|
2410
|
-
/* @__PURE__ */ jsxRuntime.jsx(
|
|
2411
|
-
/* @__PURE__ */ jsxRuntime.jsx("div", { className: "space-y-2", children: [1, 2, 3].map((i) => /* @__PURE__ */ jsxRuntime.jsx(
|
|
2411
|
+
/* @__PURE__ */ jsxRuntime.jsx(chunkVZ43ATC5_cjs.Skeleton, { className: "h-9 w-32" }),
|
|
2412
|
+
/* @__PURE__ */ jsxRuntime.jsx("div", { className: "space-y-2", children: [1, 2, 3].map((i) => /* @__PURE__ */ jsxRuntime.jsx(chunkVZ43ATC5_cjs.Skeleton, { className: "h-12 w-full" }, i)) })
|
|
2412
2413
|
] });
|
|
2413
2414
|
}
|
|
2414
2415
|
if (error) {
|
|
@@ -2433,11 +2434,11 @@ function AgentListPage() {
|
|
|
2433
2434
|
agents.map((a) => /* @__PURE__ */ jsxRuntime.jsxs(AdminTableRow, { children: [
|
|
2434
2435
|
/* @__PURE__ */ jsxRuntime.jsx("td", { className: "p-3 font-medium", children: /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "flex items-center gap-2", children: [
|
|
2435
2436
|
/* @__PURE__ */ jsxRuntime.jsx(LinkComponent, { href: `${basePath}/agents/${a.id}`, className: "text-primary hover:underline", children: a.name }),
|
|
2436
|
-
a.a2a_enabled && /* @__PURE__ */ jsxRuntime.jsx(
|
|
2437
|
+
a.a2a_enabled && /* @__PURE__ */ jsxRuntime.jsx(chunkXXF4U7WL_cjs.Badge, { className: "text-[10px] px-1.5 py-0 bg-indigo-500/10 text-indigo-400 border-indigo-500/20", children: "A2A" })
|
|
2437
2438
|
] }) }),
|
|
2438
2439
|
/* @__PURE__ */ jsxRuntime.jsx("td", { className: "p-3 text-muted-foreground text-xs max-w-xs truncate", title: a.description ?? void 0, children: a.description ?? "\u2014" }),
|
|
2439
2440
|
/* @__PURE__ */ jsxRuntime.jsx("td", { className: "p-3 font-mono text-xs text-muted-foreground", children: a.model }),
|
|
2440
|
-
/* @__PURE__ */ jsxRuntime.jsx("td", { className: "p-3", children: a.composio_toolkits.length > 0 ? /* @__PURE__ */ jsxRuntime.jsx("div", { className: "flex gap-1 flex-wrap", children: a.composio_toolkits.map((t) => /* @__PURE__ */ jsxRuntime.jsx(
|
|
2441
|
+
/* @__PURE__ */ jsxRuntime.jsx("td", { className: "p-3", children: a.composio_toolkits.length > 0 ? /* @__PURE__ */ jsxRuntime.jsx("div", { className: "flex gap-1 flex-wrap", children: a.composio_toolkits.map((t) => /* @__PURE__ */ jsxRuntime.jsx(chunkXXF4U7WL_cjs.Badge, { variant: "secondary", className: "text-xs", children: t }, t)) }) : /* @__PURE__ */ jsxRuntime.jsx("span", { className: "text-muted-foreground text-xs", children: "\u2014" }) }),
|
|
2441
2442
|
/* @__PURE__ */ jsxRuntime.jsx("td", { className: "p-3 text-right", children: (a.skills ?? []).length }),
|
|
2442
2443
|
/* @__PURE__ */ jsxRuntime.jsx("td", { className: "p-3 text-right", children: (a.plugins ?? []).length }),
|
|
2443
2444
|
/* @__PURE__ */ jsxRuntime.jsx("td", { className: "p-3 text-right", children: /* @__PURE__ */ jsxRuntime.jsx(DeleteAgentButton, { agentId: a.id, agentName: a.name, onDeleted: invalidate }) })
|
|
@@ -2448,7 +2449,7 @@ function AgentListPage() {
|
|
|
2448
2449
|
] });
|
|
2449
2450
|
}
|
|
2450
2451
|
function AgentEditForm({ agent, onSaved }) {
|
|
2451
|
-
const client =
|
|
2452
|
+
const client = chunkXXF4U7WL_cjs.useAgentPlaneClient();
|
|
2452
2453
|
const [name, setName] = React.useState(agent.name);
|
|
2453
2454
|
const [description, setDescription] = React.useState(agent.description ?? "");
|
|
2454
2455
|
const [model, setModel] = React.useState(agent.model);
|
|
@@ -2457,10 +2458,8 @@ function AgentEditForm({ agent, onSaved }) {
|
|
|
2457
2458
|
const [maxTurns, setMaxTurns] = React.useState(agent.max_turns.toString());
|
|
2458
2459
|
const [maxBudget, setMaxBudget] = React.useState(agent.max_budget_usd.toString());
|
|
2459
2460
|
const [maxRuntime, setMaxRuntime] = React.useState(Math.floor(agent.max_runtime_seconds / 60).toString());
|
|
2460
|
-
const [soulMd, setSoulMd] = React.useState(agent.soul_md ?? "");
|
|
2461
|
-
const [identityMd, setIdentityMd] = React.useState(agent.identity_md ?? "");
|
|
2462
2461
|
const [saving, setSaving] = React.useState(false);
|
|
2463
|
-
const isDirty = name !== agent.name || description !== (agent.description ?? "") || model !== agent.model || runner !== (agent.runner ?? "") || permissionMode !== agent.permission_mode || maxTurns !== agent.max_turns.toString() || maxBudget !== agent.max_budget_usd.toString() || maxRuntime !== Math.floor(agent.max_runtime_seconds / 60).toString()
|
|
2462
|
+
const isDirty = name !== agent.name || description !== (agent.description ?? "") || model !== agent.model || runner !== (agent.runner ?? "") || permissionMode !== agent.permission_mode || maxTurns !== agent.max_turns.toString() || maxBudget !== agent.max_budget_usd.toString() || maxRuntime !== Math.floor(agent.max_runtime_seconds / 60).toString();
|
|
2464
2463
|
const [error, setError] = React.useState("");
|
|
2465
2464
|
async function handleSave() {
|
|
2466
2465
|
setSaving(true);
|
|
@@ -2474,9 +2473,7 @@ function AgentEditForm({ agent, onSaved }) {
|
|
|
2474
2473
|
permission_mode: permissionMode,
|
|
2475
2474
|
max_turns: parseInt(maxTurns) || agent.max_turns,
|
|
2476
2475
|
max_budget_usd: parseFloat(maxBudget) || agent.max_budget_usd,
|
|
2477
|
-
max_runtime_seconds: (parseInt(maxRuntime) || Math.floor(agent.max_runtime_seconds / 60)) * 60
|
|
2478
|
-
soul_md: soulMd || null,
|
|
2479
|
-
identity_md: identityMd || null
|
|
2476
|
+
max_runtime_seconds: (parseInt(maxRuntime) || Math.floor(agent.max_runtime_seconds / 60)) * 60
|
|
2480
2477
|
});
|
|
2481
2478
|
onSaved?.();
|
|
2482
2479
|
} catch (err) {
|
|
@@ -2488,13 +2485,13 @@ function AgentEditForm({ agent, onSaved }) {
|
|
|
2488
2485
|
return /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "rounded-lg border border-muted-foreground/25 p-5", children: [
|
|
2489
2486
|
/* @__PURE__ */ jsxRuntime.jsxs(SectionHeader, { title: "Details", children: [
|
|
2490
2487
|
error && /* @__PURE__ */ jsxRuntime.jsx("span", { className: "text-sm text-destructive mr-2", children: error }),
|
|
2491
|
-
/* @__PURE__ */ jsxRuntime.jsx(
|
|
2488
|
+
/* @__PURE__ */ jsxRuntime.jsx(chunkXXF4U7WL_cjs.Button, { onClick: handleSave, disabled: saving || !isDirty, size: "sm", children: saving ? "Saving..." : "Save Changes" })
|
|
2492
2489
|
] }),
|
|
2493
2490
|
/* @__PURE__ */ jsxRuntime.jsx("div", { children: /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "space-y-4", children: [
|
|
2494
2491
|
/* @__PURE__ */ jsxRuntime.jsxs("div", { className: "grid grid-cols-12 gap-4", children: [
|
|
2495
|
-
/* @__PURE__ */ jsxRuntime.jsx("div", { className: "col-span-2", children: /* @__PURE__ */ jsxRuntime.jsx(
|
|
2496
|
-
/* @__PURE__ */ jsxRuntime.jsx("div", { className: "col-span-4", children: /* @__PURE__ */ jsxRuntime.jsx(
|
|
2497
|
-
|
|
2492
|
+
/* @__PURE__ */ jsxRuntime.jsx("div", { className: "col-span-2", children: /* @__PURE__ */ jsxRuntime.jsx(chunkXXF4U7WL_cjs.FormField, { label: "Name", children: /* @__PURE__ */ jsxRuntime.jsx(chunkXXF4U7WL_cjs.Input, { value: name, onChange: (e) => setName(e.target.value), disabled: saving }) }) }),
|
|
2493
|
+
/* @__PURE__ */ jsxRuntime.jsx("div", { className: "col-span-4", children: /* @__PURE__ */ jsxRuntime.jsx(chunkXXF4U7WL_cjs.FormField, { label: "Description", children: /* @__PURE__ */ jsxRuntime.jsx(
|
|
2494
|
+
chunkXXF4U7WL_cjs.Input,
|
|
2498
2495
|
{
|
|
2499
2496
|
value: description,
|
|
2500
2497
|
onChange: (e) => setDescription(e.target.value),
|
|
@@ -2502,83 +2499,47 @@ function AgentEditForm({ agent, onSaved }) {
|
|
|
2502
2499
|
disabled: saving
|
|
2503
2500
|
}
|
|
2504
2501
|
) }) }),
|
|
2505
|
-
/* @__PURE__ */ jsxRuntime.jsx("div", { className: "col-span-3", children: /* @__PURE__ */ jsxRuntime.jsx(
|
|
2502
|
+
/* @__PURE__ */ jsxRuntime.jsx("div", { className: "col-span-3", children: /* @__PURE__ */ jsxRuntime.jsx(chunkXXF4U7WL_cjs.FormField, { label: "Model", children: /* @__PURE__ */ jsxRuntime.jsx(
|
|
2506
2503
|
ModelSelector,
|
|
2507
2504
|
{
|
|
2508
2505
|
value: model,
|
|
2509
2506
|
disabled: saving,
|
|
2510
2507
|
onChange: (modelId) => {
|
|
2511
2508
|
setModel(modelId);
|
|
2512
|
-
if (!
|
|
2509
|
+
if (!chunkXXF4U7WL_cjs.supportsClaudeRunner(modelId)) {
|
|
2513
2510
|
setRunner("vercel-ai-sdk");
|
|
2514
2511
|
setPermissionMode("bypassPermissions");
|
|
2515
2512
|
}
|
|
2516
2513
|
}
|
|
2517
2514
|
}
|
|
2518
2515
|
) }) }),
|
|
2519
|
-
/* @__PURE__ */ jsxRuntime.jsx("div", { className: "col-span-3", children: /* @__PURE__ */ jsxRuntime.jsx(
|
|
2516
|
+
/* @__PURE__ */ jsxRuntime.jsx("div", { className: "col-span-3", children: /* @__PURE__ */ jsxRuntime.jsx(chunkXXF4U7WL_cjs.FormField, { label: "Runner", children: chunkXXF4U7WL_cjs.supportsClaudeRunner(model) ? /* @__PURE__ */ jsxRuntime.jsxs(Select, { value: runner || "claude-agent-sdk", onChange: (e) => setRunner(e.target.value === "claude-agent-sdk" ? "" : e.target.value), disabled: saving, children: [
|
|
2520
2517
|
/* @__PURE__ */ jsxRuntime.jsx("option", { value: "claude-agent-sdk", children: "Claude SDK" }),
|
|
2521
2518
|
/* @__PURE__ */ jsxRuntime.jsx("option", { value: "vercel-ai-sdk", children: "AI SDK" })
|
|
2522
2519
|
] }) : /* @__PURE__ */ jsxRuntime.jsx(Select, { value: "vercel-ai-sdk", disabled: true, children: /* @__PURE__ */ jsxRuntime.jsx("option", { value: "vercel-ai-sdk", children: "AI SDK" }) }) }) })
|
|
2523
2520
|
] }),
|
|
2524
2521
|
/* @__PURE__ */ jsxRuntime.jsxs("div", { className: "grid grid-cols-12 gap-4", children: [
|
|
2525
|
-
/* @__PURE__ */ jsxRuntime.jsx("div", { className: "col-span-2", children: /* @__PURE__ */ jsxRuntime.jsx(
|
|
2526
|
-
/* @__PURE__ */ jsxRuntime.jsx("div", { className: "col-span-2", children: /* @__PURE__ */ jsxRuntime.jsx(
|
|
2522
|
+
/* @__PURE__ */ jsxRuntime.jsx("div", { className: "col-span-2", children: /* @__PURE__ */ jsxRuntime.jsx(chunkXXF4U7WL_cjs.FormField, { label: "Max Turns", children: /* @__PURE__ */ jsxRuntime.jsx(chunkXXF4U7WL_cjs.Input, { type: "number", min: "1", max: "1000", value: maxTurns, onChange: (e) => setMaxTurns(e.target.value), disabled: saving }) }) }),
|
|
2523
|
+
/* @__PURE__ */ jsxRuntime.jsx("div", { className: "col-span-2", children: /* @__PURE__ */ jsxRuntime.jsx(chunkXXF4U7WL_cjs.FormField, { label: "Max Budget", children: /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "relative", children: [
|
|
2527
2524
|
/* @__PURE__ */ jsxRuntime.jsx("span", { className: "absolute left-3 top-1/2 -translate-y-1/2 text-sm text-muted-foreground", children: "$" }),
|
|
2528
|
-
/* @__PURE__ */ jsxRuntime.jsx(
|
|
2525
|
+
/* @__PURE__ */ jsxRuntime.jsx(chunkXXF4U7WL_cjs.Input, { type: "number", step: "0.01", min: "0.01", max: "100", value: maxBudget, onChange: (e) => setMaxBudget(e.target.value), className: "pl-6", disabled: saving })
|
|
2529
2526
|
] }) }) }),
|
|
2530
|
-
/* @__PURE__ */ jsxRuntime.jsx("div", { className: "col-span-2", children: /* @__PURE__ */ jsxRuntime.jsx(
|
|
2531
|
-
/* @__PURE__ */ jsxRuntime.jsx(
|
|
2527
|
+
/* @__PURE__ */ jsxRuntime.jsx("div", { className: "col-span-2", children: /* @__PURE__ */ jsxRuntime.jsx(chunkXXF4U7WL_cjs.FormField, { label: "Max Runtime", children: /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "relative", children: [
|
|
2528
|
+
/* @__PURE__ */ jsxRuntime.jsx(chunkXXF4U7WL_cjs.Input, { type: "number", min: "1", max: "60", value: maxRuntime, onChange: (e) => setMaxRuntime(e.target.value), className: "pr-10", disabled: saving }),
|
|
2532
2529
|
/* @__PURE__ */ jsxRuntime.jsx("span", { className: "absolute right-3 top-1/2 -translate-y-1/2 text-sm text-muted-foreground", children: "min" })
|
|
2533
2530
|
] }) }) }),
|
|
2534
|
-
|
|
2531
|
+
chunkXXF4U7WL_cjs.supportsClaudeRunner(model) && (runner === "" || runner === "claude-agent-sdk") && /* @__PURE__ */ jsxRuntime.jsx("div", { className: "col-span-3", children: /* @__PURE__ */ jsxRuntime.jsx(chunkXXF4U7WL_cjs.FormField, { label: "Permission Mode", children: /* @__PURE__ */ jsxRuntime.jsxs(Select, { value: permissionMode, onChange: (e) => setPermissionMode(e.target.value), disabled: saving, children: [
|
|
2535
2532
|
/* @__PURE__ */ jsxRuntime.jsx("option", { value: "default", children: "default" }),
|
|
2536
2533
|
/* @__PURE__ */ jsxRuntime.jsx("option", { value: "acceptEdits", children: "acceptEdits" }),
|
|
2537
2534
|
/* @__PURE__ */ jsxRuntime.jsx("option", { value: "bypassPermissions", children: "bypassPermissions" }),
|
|
2538
2535
|
/* @__PURE__ */ jsxRuntime.jsx("option", { value: "plan", children: "plan" })
|
|
2539
2536
|
] }) }) })
|
|
2540
|
-
] }),
|
|
2541
|
-
/* @__PURE__ */ jsxRuntime.jsxs("div", { className: "grid grid-cols-2 gap-4", children: [
|
|
2542
|
-
/* @__PURE__ */ jsxRuntime.jsx("div", { children: /* @__PURE__ */ jsxRuntime.jsxs(chunkVBGYWQUF_cjs.FormField, { label: "SOUL.md", children: [
|
|
2543
|
-
/* @__PURE__ */ jsxRuntime.jsx(
|
|
2544
|
-
Textarea,
|
|
2545
|
-
{
|
|
2546
|
-
value: soulMd,
|
|
2547
|
-
onChange: (e) => setSoulMd(e.target.value),
|
|
2548
|
-
placeholder: "## Voice & Tone\nDirect, concise, technical.\n\n## Values\nClarity over completeness.\n\n## Stance\nProactive problem-solver.\n\n## Boundaries\n- Never modify production data directly\n\n## Essence\nA focused engineering assistant.",
|
|
2549
|
-
rows: 10,
|
|
2550
|
-
className: "font-mono text-sm",
|
|
2551
|
-
disabled: saving
|
|
2552
|
-
}
|
|
2553
|
-
),
|
|
2554
|
-
/* @__PURE__ */ jsxRuntime.jsxs("span", { className: "text-xs text-muted-foreground mt-1 block", children: [
|
|
2555
|
-
soulMd.split(/\s+/).filter(Boolean).length,
|
|
2556
|
-
" words"
|
|
2557
|
-
] })
|
|
2558
|
-
] }) }),
|
|
2559
|
-
/* @__PURE__ */ jsxRuntime.jsx("div", { children: /* @__PURE__ */ jsxRuntime.jsxs(chunkVBGYWQUF_cjs.FormField, { label: "IDENTITY.md", children: [
|
|
2560
|
-
/* @__PURE__ */ jsxRuntime.jsx(
|
|
2561
|
-
Textarea,
|
|
2562
|
-
{
|
|
2563
|
-
value: identityMd,
|
|
2564
|
-
onChange: (e) => setIdentityMd(e.target.value),
|
|
2565
|
-
placeholder: "- **Communication Verbosity:** concise\n- **Communication Tone:** direct\n- **Decision Autonomy:** high\n- **Risk Tolerance:** moderate\n- **Collaboration Mode:** autonomous\n\n## Escalation Preferences\n- Budget over $50 -> escalate\n- Breaking changes -> escalate",
|
|
2566
|
-
rows: 10,
|
|
2567
|
-
className: "font-mono text-sm",
|
|
2568
|
-
disabled: saving
|
|
2569
|
-
}
|
|
2570
|
-
),
|
|
2571
|
-
/* @__PURE__ */ jsxRuntime.jsxs("span", { className: "text-xs text-muted-foreground mt-1 block", children: [
|
|
2572
|
-
identityMd.split(/\s+/).filter(Boolean).length,
|
|
2573
|
-
" words"
|
|
2574
|
-
] })
|
|
2575
|
-
] }) })
|
|
2576
2537
|
] })
|
|
2577
2538
|
] }) })
|
|
2578
2539
|
] });
|
|
2579
2540
|
}
|
|
2580
2541
|
function ToolkitMultiselect({ value, onChange }) {
|
|
2581
|
-
const client =
|
|
2542
|
+
const client = chunkXXF4U7WL_cjs.useAgentPlaneClient();
|
|
2582
2543
|
const [open, setOpen] = React.useState(false);
|
|
2583
2544
|
const [search, setSearch] = React.useState("");
|
|
2584
2545
|
const [toolkits, setToolkits] = React.useState([]);
|
|
@@ -2704,7 +2665,7 @@ function ToolsModal({
|
|
|
2704
2665
|
onOpenChange,
|
|
2705
2666
|
onSave
|
|
2706
2667
|
}) {
|
|
2707
|
-
const client =
|
|
2668
|
+
const client = chunkXXF4U7WL_cjs.useAgentPlaneClient();
|
|
2708
2669
|
const [tools, setTools] = React.useState([]);
|
|
2709
2670
|
const [loading, setLoading] = React.useState(false);
|
|
2710
2671
|
const [search, setSearch] = React.useState("");
|
|
@@ -2762,20 +2723,20 @@ function ToolsModal({
|
|
|
2762
2723
|
setSaving(false);
|
|
2763
2724
|
}
|
|
2764
2725
|
}
|
|
2765
|
-
return /* @__PURE__ */ jsxRuntime.jsx(
|
|
2766
|
-
/* @__PURE__ */ jsxRuntime.jsxs(
|
|
2767
|
-
/* @__PURE__ */ jsxRuntime.jsxs(
|
|
2726
|
+
return /* @__PURE__ */ jsxRuntime.jsx(chunkXXF4U7WL_cjs.Dialog, { open, onOpenChange, children: /* @__PURE__ */ jsxRuntime.jsxs(chunkXXF4U7WL_cjs.DialogContent, { className: "max-w-lg", children: [
|
|
2727
|
+
/* @__PURE__ */ jsxRuntime.jsxs(chunkXXF4U7WL_cjs.DialogHeader, { children: [
|
|
2728
|
+
/* @__PURE__ */ jsxRuntime.jsxs(chunkXXF4U7WL_cjs.DialogTitle, { className: "capitalize flex items-center gap-2", children: [
|
|
2768
2729
|
toolkitLogo && /* @__PURE__ */ jsxRuntime.jsx("img", { src: toolkitLogo, alt: "", className: "w-5 h-5 rounded-sm object-contain flex-shrink-0" }),
|
|
2769
2730
|
toolkit,
|
|
2770
2731
|
" Tools"
|
|
2771
2732
|
] }),
|
|
2772
|
-
!loading && /* @__PURE__ */ jsxRuntime.jsxs(
|
|
2733
|
+
!loading && /* @__PURE__ */ jsxRuntime.jsxs(chunkXXF4U7WL_cjs.DialogDescription, { children: [
|
|
2773
2734
|
tools.length,
|
|
2774
2735
|
" tools available"
|
|
2775
2736
|
] })
|
|
2776
2737
|
] }),
|
|
2777
|
-
/* @__PURE__ */ jsxRuntime.jsxs(
|
|
2778
|
-
/* @__PURE__ */ jsxRuntime.jsx(
|
|
2738
|
+
/* @__PURE__ */ jsxRuntime.jsxs(chunkXXF4U7WL_cjs.DialogBody, { className: "space-y-3", children: [
|
|
2739
|
+
/* @__PURE__ */ jsxRuntime.jsx(chunkXXF4U7WL_cjs.Input, { placeholder: "Search tools...", value: search, onChange: (e) => setSearch(e.target.value), className: "h-8 text-sm" }),
|
|
2779
2740
|
loading ? /* @__PURE__ */ jsxRuntime.jsx("p", { className: "text-sm text-muted-foreground py-4 text-center", children: "Loading tools..." }) : /* @__PURE__ */ jsxRuntime.jsxs(jsxRuntime.Fragment, { children: [
|
|
2780
2741
|
/* @__PURE__ */ jsxRuntime.jsxs("div", { className: "flex items-center justify-between text-xs text-muted-foreground", children: [
|
|
2781
2742
|
/* @__PURE__ */ jsxRuntime.jsx("span", { children: selected.size === 0 ? "All tools (no filter)" : `${selected.size} / ${tools.length} selected` }),
|
|
@@ -2793,9 +2754,9 @@ function ToolsModal({
|
|
|
2793
2754
|
] })
|
|
2794
2755
|
] })
|
|
2795
2756
|
] }),
|
|
2796
|
-
/* @__PURE__ */ jsxRuntime.jsxs(
|
|
2797
|
-
/* @__PURE__ */ jsxRuntime.jsx(
|
|
2798
|
-
/* @__PURE__ */ jsxRuntime.jsx(
|
|
2757
|
+
/* @__PURE__ */ jsxRuntime.jsxs(chunkXXF4U7WL_cjs.DialogFooter, { children: [
|
|
2758
|
+
/* @__PURE__ */ jsxRuntime.jsx(chunkXXF4U7WL_cjs.Button, { size: "sm", variant: "outline", onClick: () => onOpenChange(false), children: "Cancel" }),
|
|
2759
|
+
/* @__PURE__ */ jsxRuntime.jsx(chunkXXF4U7WL_cjs.Button, { size: "sm", onClick: handleSave, disabled: saving || loading, children: saving ? "Saving..." : "Save" })
|
|
2799
2760
|
] })
|
|
2800
2761
|
] }) });
|
|
2801
2762
|
}
|
|
@@ -2809,7 +2770,7 @@ function McpToolsModal({
|
|
|
2809
2770
|
onOpenChange,
|
|
2810
2771
|
onSave
|
|
2811
2772
|
}) {
|
|
2812
|
-
const client =
|
|
2773
|
+
const client = chunkXXF4U7WL_cjs.useAgentPlaneClient();
|
|
2813
2774
|
const [tools, setTools] = React.useState([]);
|
|
2814
2775
|
const [loading, setLoading] = React.useState(false);
|
|
2815
2776
|
const [search, setSearch] = React.useState("");
|
|
@@ -2869,20 +2830,20 @@ function McpToolsModal({
|
|
|
2869
2830
|
setSaving(false);
|
|
2870
2831
|
}
|
|
2871
2832
|
}
|
|
2872
|
-
return /* @__PURE__ */ jsxRuntime.jsx(
|
|
2873
|
-
/* @__PURE__ */ jsxRuntime.jsxs(
|
|
2874
|
-
/* @__PURE__ */ jsxRuntime.jsxs(
|
|
2833
|
+
return /* @__PURE__ */ jsxRuntime.jsx(chunkXXF4U7WL_cjs.Dialog, { open, onOpenChange, children: /* @__PURE__ */ jsxRuntime.jsxs(chunkXXF4U7WL_cjs.DialogContent, { className: "max-w-lg", children: [
|
|
2834
|
+
/* @__PURE__ */ jsxRuntime.jsxs(chunkXXF4U7WL_cjs.DialogHeader, { children: [
|
|
2835
|
+
/* @__PURE__ */ jsxRuntime.jsxs(chunkXXF4U7WL_cjs.DialogTitle, { className: "flex items-center gap-2", children: [
|
|
2875
2836
|
serverLogo && /* @__PURE__ */ jsxRuntime.jsx("img", { src: serverLogo, alt: "", className: "w-5 h-5 rounded-sm object-contain flex-shrink-0" }),
|
|
2876
2837
|
serverName,
|
|
2877
2838
|
" Tools"
|
|
2878
2839
|
] }),
|
|
2879
|
-
!loading && !error && /* @__PURE__ */ jsxRuntime.jsxs(
|
|
2840
|
+
!loading && !error && /* @__PURE__ */ jsxRuntime.jsxs(chunkXXF4U7WL_cjs.DialogDescription, { children: [
|
|
2880
2841
|
tools.length,
|
|
2881
2842
|
" tools available"
|
|
2882
2843
|
] })
|
|
2883
2844
|
] }),
|
|
2884
|
-
/* @__PURE__ */ jsxRuntime.jsxs(
|
|
2885
|
-
/* @__PURE__ */ jsxRuntime.jsx(
|
|
2845
|
+
/* @__PURE__ */ jsxRuntime.jsxs(chunkXXF4U7WL_cjs.DialogBody, { className: "space-y-3", children: [
|
|
2846
|
+
/* @__PURE__ */ jsxRuntime.jsx(chunkXXF4U7WL_cjs.Input, { placeholder: "Search tools...", value: search, onChange: (e) => setSearch(e.target.value), className: "h-8 text-sm" }),
|
|
2886
2847
|
loading ? /* @__PURE__ */ jsxRuntime.jsx("p", { className: "text-sm text-muted-foreground py-4 text-center", children: "Loading tools..." }) : error ? /* @__PURE__ */ jsxRuntime.jsx("p", { className: "text-sm text-destructive py-4 text-center", children: error }) : /* @__PURE__ */ jsxRuntime.jsxs(jsxRuntime.Fragment, { children: [
|
|
2887
2848
|
/* @__PURE__ */ jsxRuntime.jsxs("div", { className: "flex items-center justify-between text-xs text-muted-foreground", children: [
|
|
2888
2849
|
/* @__PURE__ */ jsxRuntime.jsx("span", { children: selected.size === 0 ? "All tools (no filter)" : `${selected.size} / ${tools.length} selected` }),
|
|
@@ -2900,14 +2861,14 @@ function McpToolsModal({
|
|
|
2900
2861
|
] })
|
|
2901
2862
|
] })
|
|
2902
2863
|
] }),
|
|
2903
|
-
/* @__PURE__ */ jsxRuntime.jsxs(
|
|
2904
|
-
/* @__PURE__ */ jsxRuntime.jsx(
|
|
2905
|
-
/* @__PURE__ */ jsxRuntime.jsx(
|
|
2864
|
+
/* @__PURE__ */ jsxRuntime.jsxs(chunkXXF4U7WL_cjs.DialogFooter, { children: [
|
|
2865
|
+
/* @__PURE__ */ jsxRuntime.jsx(chunkXXF4U7WL_cjs.Button, { size: "sm", variant: "outline", onClick: () => onOpenChange(false), children: "Cancel" }),
|
|
2866
|
+
/* @__PURE__ */ jsxRuntime.jsx(chunkXXF4U7WL_cjs.Button, { size: "sm", onClick: handleSave, disabled: saving || loading, children: saving ? "Saving..." : "Save" })
|
|
2906
2867
|
] })
|
|
2907
2868
|
] }) });
|
|
2908
2869
|
}
|
|
2909
2870
|
function AgentConnectorsManager({ agentId, toolkits: initialToolkits, composioAllowedTools: initialAllowedTools, onChanged }) {
|
|
2910
|
-
const client =
|
|
2871
|
+
const client = chunkXXF4U7WL_cjs.useAgentPlaneClient();
|
|
2911
2872
|
const [localToolkits, setLocalToolkits] = React.useState(initialToolkits);
|
|
2912
2873
|
const [connectors, setConnectors] = React.useState([]);
|
|
2913
2874
|
const [loading, setLoading] = React.useState(true);
|
|
@@ -3154,7 +3115,7 @@ function AgentConnectorsManager({ agentId, toolkits: initialToolkits, composioAl
|
|
|
3154
3115
|
),
|
|
3155
3116
|
/* @__PURE__ */ jsxRuntime.jsxs("div", { className: "rounded-lg border border-muted-foreground/25 p-5", children: [
|
|
3156
3117
|
/* @__PURE__ */ jsxRuntime.jsx(SectionHeader, { title: "Connectors", children: /* @__PURE__ */ jsxRuntime.jsx(
|
|
3157
|
-
|
|
3118
|
+
chunkXXF4U7WL_cjs.Button,
|
|
3158
3119
|
{
|
|
3159
3120
|
size: "sm",
|
|
3160
3121
|
variant: "outline",
|
|
@@ -3173,11 +3134,11 @@ function AgentConnectorsManager({ agentId, toolkits: initialToolkits, composioAl
|
|
|
3173
3134
|
/* @__PURE__ */ jsxRuntime.jsxs("div", { className: "flex items-center gap-2 min-w-0", children: [
|
|
3174
3135
|
s.logo_url && /* @__PURE__ */ jsxRuntime.jsx("img", { src: s.logo_url, alt: "", className: "w-5 h-5 rounded-sm object-contain flex-shrink-0" }),
|
|
3175
3136
|
/* @__PURE__ */ jsxRuntime.jsx("span", { className: "text-sm font-medium truncate", children: s.name }),
|
|
3176
|
-
/* @__PURE__ */ jsxRuntime.jsx(
|
|
3137
|
+
/* @__PURE__ */ jsxRuntime.jsx(chunkXXF4U7WL_cjs.Badge, { variant: "outline", className: "text-xs flex-shrink-0 ml-auto", children: s.slug })
|
|
3177
3138
|
] }),
|
|
3178
3139
|
s.description && /* @__PURE__ */ jsxRuntime.jsx("p", { className: "text-xs text-muted-foreground truncate", children: s.description }),
|
|
3179
3140
|
/* @__PURE__ */ jsxRuntime.jsx(
|
|
3180
|
-
|
|
3141
|
+
chunkXXF4U7WL_cjs.Button,
|
|
3181
3142
|
{
|
|
3182
3143
|
size: "sm",
|
|
3183
3144
|
variant: "outline",
|
|
@@ -3189,8 +3150,8 @@ function AgentConnectorsManager({ agentId, toolkits: initialToolkits, composioAl
|
|
|
3189
3150
|
)
|
|
3190
3151
|
] }, s.id)) }),
|
|
3191
3152
|
/* @__PURE__ */ jsxRuntime.jsxs("div", { className: "flex justify-end gap-2", children: [
|
|
3192
|
-
/* @__PURE__ */ jsxRuntime.jsx(
|
|
3193
|
-
/* @__PURE__ */ jsxRuntime.jsx(
|
|
3153
|
+
/* @__PURE__ */ jsxRuntime.jsx(chunkXXF4U7WL_cjs.Button, { size: "sm", variant: "ghost", onClick: () => setShowAdd(false), children: "Cancel" }),
|
|
3154
|
+
/* @__PURE__ */ jsxRuntime.jsx(chunkXXF4U7WL_cjs.Button, { size: "sm", onClick: handleApplyAdd, disabled: applyingToolkits, children: applyingToolkits ? "Saving..." : "Apply" })
|
|
3194
3155
|
] })
|
|
3195
3156
|
] }),
|
|
3196
3157
|
isAllLoading ? /* @__PURE__ */ jsxRuntime.jsx("p", { className: "text-sm text-muted-foreground", children: "Loading..." }) : isEmpty ? /* @__PURE__ */ jsxRuntime.jsx("p", { className: "text-sm text-muted-foreground", children: "No connectors added. Click Add to configure connectors." }) : /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "grid grid-cols-3 gap-3", children: [
|
|
@@ -3198,7 +3159,7 @@ function AgentConnectorsManager({ agentId, toolkits: initialToolkits, composioAl
|
|
|
3198
3159
|
/* @__PURE__ */ jsxRuntime.jsxs("div", { className: "flex items-center gap-2", children: [
|
|
3199
3160
|
c.logo && /* @__PURE__ */ jsxRuntime.jsx("img", { src: c.logo, alt: "", className: "w-5 h-5 rounded-sm object-contain flex-shrink-0" }),
|
|
3200
3161
|
/* @__PURE__ */ jsxRuntime.jsx("span", { className: "text-sm font-medium truncate flex-1", children: c.name }),
|
|
3201
|
-
/* @__PURE__ */ jsxRuntime.jsx(
|
|
3162
|
+
/* @__PURE__ */ jsxRuntime.jsx(chunkXXF4U7WL_cjs.Badge, { variant: schemeBadgeVariant(c.authScheme ?? c.auth_scheme), className: "text-xs flex-shrink-0", children: c.authScheme ?? c.auth_scheme }),
|
|
3202
3163
|
/* @__PURE__ */ jsxRuntime.jsx(
|
|
3203
3164
|
"button",
|
|
3204
3165
|
{
|
|
@@ -3230,7 +3191,7 @@ function AgentConnectorsManager({ agentId, toolkits: initialToolkits, composioAl
|
|
|
3230
3191
|
(c.authScheme ?? c.auth_scheme) === "API_KEY" && /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "flex flex-col gap-1 mt-auto", children: [
|
|
3231
3192
|
/* @__PURE__ */ jsxRuntime.jsxs("div", { className: "flex items-center gap-2", children: [
|
|
3232
3193
|
/* @__PURE__ */ jsxRuntime.jsx(
|
|
3233
|
-
|
|
3194
|
+
chunkXXF4U7WL_cjs.Input,
|
|
3234
3195
|
{
|
|
3235
3196
|
type: "password",
|
|
3236
3197
|
placeholder: c.connected || c.connectionStatus === "ACTIVE" ? "Update API key\u2026" : "Enter API key\u2026",
|
|
@@ -3240,7 +3201,7 @@ function AgentConnectorsManager({ agentId, toolkits: initialToolkits, composioAl
|
|
|
3240
3201
|
}
|
|
3241
3202
|
),
|
|
3242
3203
|
/* @__PURE__ */ jsxRuntime.jsx(
|
|
3243
|
-
|
|
3204
|
+
chunkXXF4U7WL_cjs.Button,
|
|
3244
3205
|
{
|
|
3245
3206
|
size: "sm",
|
|
3246
3207
|
variant: "outline",
|
|
@@ -3253,14 +3214,14 @@ function AgentConnectorsManager({ agentId, toolkits: initialToolkits, composioAl
|
|
|
3253
3214
|
] }),
|
|
3254
3215
|
/* @__PURE__ */ jsxRuntime.jsx(FormError, { error: errors[c.slug] })
|
|
3255
3216
|
] }),
|
|
3256
|
-
((c.authScheme ?? c.auth_scheme) === "OAUTH2" || (c.authScheme ?? c.auth_scheme) === "OAUTH1") && c.connectionStatus !== "ACTIVE" && !c.connected && /* @__PURE__ */ jsxRuntime.jsx(
|
|
3257
|
-
((c.authScheme ?? c.auth_scheme) === "OAUTH2" || (c.authScheme ?? c.auth_scheme) === "OAUTH1") && (c.connectionStatus === "ACTIVE" || c.connected) && /* @__PURE__ */ jsxRuntime.jsx(
|
|
3217
|
+
((c.authScheme ?? c.auth_scheme) === "OAUTH2" || (c.authScheme ?? c.auth_scheme) === "OAUTH1") && c.connectionStatus !== "ACTIVE" && !c.connected && /* @__PURE__ */ jsxRuntime.jsx(chunkXXF4U7WL_cjs.Button, { size: "sm", variant: "outline", className: "h-7 text-xs w-full mt-auto", onClick: () => handleComposioOauth(c.slug), children: "Connect" }),
|
|
3218
|
+
((c.authScheme ?? c.auth_scheme) === "OAUTH2" || (c.authScheme ?? c.auth_scheme) === "OAUTH1") && (c.connectionStatus === "ACTIVE" || c.connected) && /* @__PURE__ */ jsxRuntime.jsx(chunkXXF4U7WL_cjs.Button, { size: "sm", variant: "ghost", className: "h-7 text-xs text-muted-foreground w-full mt-auto", onClick: () => handleComposioOauth(c.slug), children: "Reconnect" })
|
|
3258
3219
|
] }, `composio-${c.slug}`)),
|
|
3259
3220
|
mcpConnections.map((c) => /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "rounded-lg border border-border p-3 flex flex-col gap-2", children: [
|
|
3260
3221
|
/* @__PURE__ */ jsxRuntime.jsxs("div", { className: "flex items-center gap-2", children: [
|
|
3261
3222
|
c.server_logo_url && /* @__PURE__ */ jsxRuntime.jsx("img", { src: c.server_logo_url, alt: "", className: "w-5 h-5 rounded-sm object-contain flex-shrink-0" }),
|
|
3262
3223
|
/* @__PURE__ */ jsxRuntime.jsx("span", { className: "text-sm font-medium truncate flex-1", children: c.server_name }),
|
|
3263
|
-
/* @__PURE__ */ jsxRuntime.jsx(
|
|
3224
|
+
/* @__PURE__ */ jsxRuntime.jsx(chunkXXF4U7WL_cjs.Badge, { variant: "outline", className: "text-xs flex-shrink-0", children: c.server_slug }),
|
|
3264
3225
|
/* @__PURE__ */ jsxRuntime.jsx(
|
|
3265
3226
|
"button",
|
|
3266
3227
|
{
|
|
@@ -3283,7 +3244,7 @@ function AgentConnectorsManager({ agentId, toolkits: initialToolkits, composioAl
|
|
|
3283
3244
|
}
|
|
3284
3245
|
),
|
|
3285
3246
|
(c.status === "expired" || c.status === "failed") && /* @__PURE__ */ jsxRuntime.jsx(
|
|
3286
|
-
|
|
3247
|
+
chunkXXF4U7WL_cjs.Button,
|
|
3287
3248
|
{
|
|
3288
3249
|
size: "sm",
|
|
3289
3250
|
variant: "ghost",
|
|
@@ -3340,7 +3301,7 @@ function buildTree(files) {
|
|
|
3340
3301
|
if (existing) return existing;
|
|
3341
3302
|
const parts = dirPath.split("/");
|
|
3342
3303
|
const node = {
|
|
3343
|
-
name: parts[parts.length - 1],
|
|
3304
|
+
name: parts[parts.length - 1] ?? dirPath,
|
|
3344
3305
|
fullPath: dirPath,
|
|
3345
3306
|
children: [],
|
|
3346
3307
|
files: []
|
|
@@ -3390,7 +3351,7 @@ function collectAllDirPaths(nodes) {
|
|
|
3390
3351
|
nodes.forEach(walk);
|
|
3391
3352
|
return paths;
|
|
3392
3353
|
}
|
|
3393
|
-
function
|
|
3354
|
+
function FileTreeEditor2({
|
|
3394
3355
|
initialFiles,
|
|
3395
3356
|
onSave,
|
|
3396
3357
|
onChange,
|
|
@@ -3559,7 +3520,7 @@ function FileTreeEditor({
|
|
|
3559
3520
|
}),
|
|
3560
3521
|
!readOnly && /* @__PURE__ */ jsxRuntime.jsx("div", { style: { paddingLeft: `${(depth + 1) * 16 + 8}px` }, className: "py-1 pr-2", children: addingFileInDir === node.fullPath ? /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "flex gap-1", children: [
|
|
3561
3522
|
/* @__PURE__ */ jsxRuntime.jsx(
|
|
3562
|
-
|
|
3523
|
+
chunkXXF4U7WL_cjs.Input,
|
|
3563
3524
|
{
|
|
3564
3525
|
value: newFileName,
|
|
3565
3526
|
onChange: (e) => setNewFileName(e.target.value),
|
|
@@ -3569,7 +3530,7 @@ function FileTreeEditor({
|
|
|
3569
3530
|
autoFocus: true
|
|
3570
3531
|
}
|
|
3571
3532
|
),
|
|
3572
|
-
/* @__PURE__ */ jsxRuntime.jsx(
|
|
3533
|
+
/* @__PURE__ */ jsxRuntime.jsx(chunkXXF4U7WL_cjs.Button, { onClick: () => addFileInDir(node.fullPath), size: "sm", className: "h-6 text-xs px-2", children: "+" })
|
|
3573
3534
|
] }) : /* @__PURE__ */ jsxRuntime.jsx(
|
|
3574
3535
|
"button",
|
|
3575
3536
|
{
|
|
@@ -3588,10 +3549,10 @@ function FileTreeEditor({
|
|
|
3588
3549
|
/* @__PURE__ */ jsxRuntime.jsxs("div", { className: "flex items-center justify-between mb-3", children: [
|
|
3589
3550
|
/* @__PURE__ */ jsxRuntime.jsxs("div", { className: "flex items-center gap-3", children: [
|
|
3590
3551
|
/* @__PURE__ */ jsxRuntime.jsx("h2", { className: "text-lg font-semibold", children: title }),
|
|
3591
|
-
isDirty && !readOnly && /* @__PURE__ */ jsxRuntime.jsx(
|
|
3592
|
-
readOnly && /* @__PURE__ */ jsxRuntime.jsx(
|
|
3552
|
+
isDirty && !readOnly && /* @__PURE__ */ jsxRuntime.jsx(chunkXXF4U7WL_cjs.Badge, { variant: "destructive", className: "text-xs", children: "Unsaved changes" }),
|
|
3553
|
+
readOnly && /* @__PURE__ */ jsxRuntime.jsx(chunkXXF4U7WL_cjs.Badge, { variant: "secondary", className: "text-xs", children: "Read-only" })
|
|
3593
3554
|
] }),
|
|
3594
|
-
!readOnly && !hideSave && /* @__PURE__ */ jsxRuntime.jsx(
|
|
3555
|
+
!readOnly && !hideSave && /* @__PURE__ */ jsxRuntime.jsx(chunkXXF4U7WL_cjs.Button, { onClick: handleSave, disabled: saving || !isDirty, size: "sm", children: saving ? "Saving..." : saveLabel })
|
|
3595
3556
|
] }),
|
|
3596
3557
|
/* @__PURE__ */ jsxRuntime.jsxs("div", { className: "flex gap-4 min-h-[500px]", children: [
|
|
3597
3558
|
/* @__PURE__ */ jsxRuntime.jsxs("div", { className: "w-64 shrink-0 border border-border rounded-md overflow-hidden", children: [
|
|
@@ -3611,7 +3572,7 @@ function FileTreeEditor({
|
|
|
3611
3572
|
] }),
|
|
3612
3573
|
showAddFolder && !readOnly && /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "p-2 border-b border-border flex gap-1", children: [
|
|
3613
3574
|
/* @__PURE__ */ jsxRuntime.jsx(
|
|
3614
|
-
|
|
3575
|
+
chunkXXF4U7WL_cjs.Input,
|
|
3615
3576
|
{
|
|
3616
3577
|
value: newFolderName,
|
|
3617
3578
|
onChange: (e) => setNewFolderName(e.target.value),
|
|
@@ -3621,7 +3582,7 @@ function FileTreeEditor({
|
|
|
3621
3582
|
autoFocus: true
|
|
3622
3583
|
}
|
|
3623
3584
|
),
|
|
3624
|
-
/* @__PURE__ */ jsxRuntime.jsx(
|
|
3585
|
+
/* @__PURE__ */ jsxRuntime.jsx(chunkXXF4U7WL_cjs.Button, { onClick: addFolder, size: "sm", className: "h-7 text-xs px-2", children: "Add" })
|
|
3625
3586
|
] }),
|
|
3626
3587
|
/* @__PURE__ */ jsxRuntime.jsxs("div", { className: "text-sm overflow-y-auto", children: [
|
|
3627
3588
|
tree.rootFiles.map((file) => /* @__PURE__ */ jsxRuntime.jsxs(
|
|
@@ -3669,7 +3630,7 @@ function FileTreeEditor({
|
|
|
3669
3630
|
] });
|
|
3670
3631
|
}
|
|
3671
3632
|
function AgentSkillManager({ agentId, initialSkills, onSaved }) {
|
|
3672
|
-
const client =
|
|
3633
|
+
const client = chunkXXF4U7WL_cjs.useAgentPlaneClient();
|
|
3673
3634
|
const initialFiles = React.useMemo(
|
|
3674
3635
|
() => initialSkills.flatMap(
|
|
3675
3636
|
(s) => s.files.map((f) => ({
|
|
@@ -3700,7 +3661,7 @@ function AgentSkillManager({ agentId, initialSkills, onSaved }) {
|
|
|
3700
3661
|
onSaved?.();
|
|
3701
3662
|
}, [agentId, client, onSaved]);
|
|
3702
3663
|
return /* @__PURE__ */ jsxRuntime.jsx(
|
|
3703
|
-
|
|
3664
|
+
FileTreeEditor2,
|
|
3704
3665
|
{
|
|
3705
3666
|
initialFiles,
|
|
3706
3667
|
onSave: handleSave,
|
|
@@ -3715,7 +3676,7 @@ function AgentSkillManager({ agentId, initialSkills, onSaved }) {
|
|
|
3715
3676
|
);
|
|
3716
3677
|
}
|
|
3717
3678
|
function AgentPluginManager({ agentId, initialPlugins, onSaved }) {
|
|
3718
|
-
const client =
|
|
3679
|
+
const client = chunkXXF4U7WL_cjs.useAgentPlaneClient();
|
|
3719
3680
|
const [plugins, setPlugins] = React.useState(initialPlugins);
|
|
3720
3681
|
const [saving, setSaving] = React.useState(false);
|
|
3721
3682
|
const [dialogOpen, setDialogOpen] = React.useState(false);
|
|
@@ -3788,10 +3749,10 @@ function AgentPluginManager({ agentId, initialPlugins, onSaved }) {
|
|
|
3788
3749
|
}
|
|
3789
3750
|
return /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "rounded-lg border border-muted-foreground/25 p-5", children: [
|
|
3790
3751
|
/* @__PURE__ */ jsxRuntime.jsx(SectionHeader, { title: "Plugins", children: /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "flex items-center gap-3", children: [
|
|
3791
|
-
isDirty && /* @__PURE__ */ jsxRuntime.jsx(
|
|
3752
|
+
isDirty && /* @__PURE__ */ jsxRuntime.jsx(chunkXXF4U7WL_cjs.Badge, { variant: "destructive", className: "text-xs", children: "Unsaved changes" }),
|
|
3792
3753
|
/* @__PURE__ */ jsxRuntime.jsxs("div", { className: "flex gap-2", children: [
|
|
3793
|
-
/* @__PURE__ */ jsxRuntime.jsx(
|
|
3794
|
-
/* @__PURE__ */ jsxRuntime.jsx(
|
|
3754
|
+
/* @__PURE__ */ jsxRuntime.jsx(chunkXXF4U7WL_cjs.Button, { variant: "outline", size: "sm", onClick: () => setDialogOpen(true), children: "Add Plugins" }),
|
|
3755
|
+
/* @__PURE__ */ jsxRuntime.jsx(chunkXXF4U7WL_cjs.Button, { onClick: handleSave, disabled: saving || !isDirty, size: "sm", children: saving ? "Saving..." : "Save Plugins" })
|
|
3795
3756
|
] })
|
|
3796
3757
|
] }) }),
|
|
3797
3758
|
/* @__PURE__ */ jsxRuntime.jsxs("div", { children: [
|
|
@@ -3808,7 +3769,7 @@ function AgentPluginManager({ agentId, initialPlugins, onSaved }) {
|
|
|
3808
3769
|
] })
|
|
3809
3770
|
] }),
|
|
3810
3771
|
/* @__PURE__ */ jsxRuntime.jsx(
|
|
3811
|
-
|
|
3772
|
+
chunkXXF4U7WL_cjs.Button,
|
|
3812
3773
|
{
|
|
3813
3774
|
variant: "ghost",
|
|
3814
3775
|
size: "sm",
|
|
@@ -3821,11 +3782,11 @@ function AgentPluginManager({ agentId, initialPlugins, onSaved }) {
|
|
|
3821
3782
|
},
|
|
3822
3783
|
`${p.marketplace_id}:${p.plugin_name}`
|
|
3823
3784
|
)) }),
|
|
3824
|
-
/* @__PURE__ */ jsxRuntime.jsx(
|
|
3825
|
-
/* @__PURE__ */ jsxRuntime.jsx(
|
|
3826
|
-
/* @__PURE__ */ jsxRuntime.jsx(
|
|
3785
|
+
/* @__PURE__ */ jsxRuntime.jsx(chunkXXF4U7WL_cjs.Dialog, { open: dialogOpen, onOpenChange: setDialogOpen, children: /* @__PURE__ */ jsxRuntime.jsxs(chunkXXF4U7WL_cjs.DialogContent, { className: "max-w-lg max-h-[80vh] flex flex-col", children: [
|
|
3786
|
+
/* @__PURE__ */ jsxRuntime.jsx(chunkXXF4U7WL_cjs.DialogHeader, { children: /* @__PURE__ */ jsxRuntime.jsx(chunkXXF4U7WL_cjs.DialogTitle, { children: "Add Plugins" }) }),
|
|
3787
|
+
/* @__PURE__ */ jsxRuntime.jsx(chunkXXF4U7WL_cjs.DialogBody, { className: "flex-1 overflow-hidden flex flex-col gap-3", children: marketplaces.length === 0 ? /* @__PURE__ */ jsxRuntime.jsx("p", { className: "text-sm text-muted-foreground", children: "No plugin marketplaces registered. Add one from the Plugin Marketplaces page first." }) : /* @__PURE__ */ jsxRuntime.jsxs(jsxRuntime.Fragment, { children: [
|
|
3827
3788
|
/* @__PURE__ */ jsxRuntime.jsx("div", { className: "flex gap-2 flex-wrap", children: marketplaces.map((m) => /* @__PURE__ */ jsxRuntime.jsx(
|
|
3828
|
-
|
|
3789
|
+
chunkXXF4U7WL_cjs.Button,
|
|
3829
3790
|
{
|
|
3830
3791
|
size: "sm",
|
|
3831
3792
|
variant: selectedMarketplace === m.id ? "default" : "outline",
|
|
@@ -3852,9 +3813,9 @@ function AgentPluginManager({ agentId, initialPlugins, onSaved }) {
|
|
|
3852
3813
|
] }),
|
|
3853
3814
|
ap.description && /* @__PURE__ */ jsxRuntime.jsx("p", { className: "text-xs text-muted-foreground truncate", children: ap.description }),
|
|
3854
3815
|
/* @__PURE__ */ jsxRuntime.jsxs("div", { className: "flex gap-1 mt-1", children: [
|
|
3855
|
-
ap.hasAgents && /* @__PURE__ */ jsxRuntime.jsx(
|
|
3856
|
-
ap.hasSkills && /* @__PURE__ */ jsxRuntime.jsx(
|
|
3857
|
-
ap.hasMcpJson && /* @__PURE__ */ jsxRuntime.jsx(
|
|
3816
|
+
ap.hasAgents && /* @__PURE__ */ jsxRuntime.jsx(chunkXXF4U7WL_cjs.Badge, { variant: "secondary", className: "text-[10px] px-1 py-0", children: "Agents" }),
|
|
3817
|
+
ap.hasSkills && /* @__PURE__ */ jsxRuntime.jsx(chunkXXF4U7WL_cjs.Badge, { variant: "secondary", className: "text-[10px] px-1 py-0", children: "Skills" }),
|
|
3818
|
+
ap.hasMcpJson && /* @__PURE__ */ jsxRuntime.jsx(chunkXXF4U7WL_cjs.Badge, { variant: "secondary", className: "text-[10px] px-1 py-0", children: "MCP" })
|
|
3858
3819
|
] })
|
|
3859
3820
|
] }),
|
|
3860
3821
|
/* @__PURE__ */ jsxRuntime.jsx("div", { className: `w-4 h-4 rounded border flex items-center justify-center shrink-0 ${enabled ? "bg-primary border-primary text-primary-foreground" : "border-muted-foreground"}`, children: enabled && /* @__PURE__ */ jsxRuntime.jsx("span", { className: "text-xs", children: "\u2713" }) })
|
|
@@ -3864,20 +3825,20 @@ function AgentPluginManager({ agentId, initialPlugins, onSaved }) {
|
|
|
3864
3825
|
);
|
|
3865
3826
|
}) })
|
|
3866
3827
|
] }) }),
|
|
3867
|
-
/* @__PURE__ */ jsxRuntime.jsx(
|
|
3828
|
+
/* @__PURE__ */ jsxRuntime.jsx(chunkXXF4U7WL_cjs.DialogFooter, { children: /* @__PURE__ */ jsxRuntime.jsx(chunkXXF4U7WL_cjs.Button, { size: "sm", onClick: () => setDialogOpen(false), children: "Done" }) })
|
|
3868
3829
|
] }) })
|
|
3869
3830
|
] })
|
|
3870
3831
|
] });
|
|
3871
3832
|
}
|
|
3872
3833
|
function AgentRuns({ agentId }) {
|
|
3873
|
-
const { LinkComponent, basePath } =
|
|
3874
|
-
const { data, error, isLoading } =
|
|
3834
|
+
const { LinkComponent, basePath } = chunkXXF4U7WL_cjs.useNavigation();
|
|
3835
|
+
const { data, error, isLoading } = chunkVZ43ATC5_cjs.useApi(
|
|
3875
3836
|
`agent-runs-${agentId}`,
|
|
3876
3837
|
(client) => client.runs.list({ agent_id: agentId, limit: 50 })
|
|
3877
3838
|
);
|
|
3878
3839
|
const runs = data?.data ?? [];
|
|
3879
3840
|
if (isLoading) {
|
|
3880
|
-
return /* @__PURE__ */ jsxRuntime.jsx("div", { className: "space-y-2", children: [1, 2, 3].map((i) => /* @__PURE__ */ jsxRuntime.jsx(
|
|
3841
|
+
return /* @__PURE__ */ jsxRuntime.jsx("div", { className: "space-y-2", children: [1, 2, 3].map((i) => /* @__PURE__ */ jsxRuntime.jsx(chunkVZ43ATC5_cjs.Skeleton, { className: "h-10 w-full" }, i)) });
|
|
3881
3842
|
}
|
|
3882
3843
|
if (error) {
|
|
3883
3844
|
return /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "text-destructive text-sm py-4 text-center", children: [
|
|
@@ -3929,7 +3890,7 @@ function AgentA2aInfo({
|
|
|
3929
3890
|
initialTags,
|
|
3930
3891
|
onChanged
|
|
3931
3892
|
}) {
|
|
3932
|
-
const client =
|
|
3893
|
+
const client = chunkXXF4U7WL_cjs.useAgentPlaneClient();
|
|
3933
3894
|
const [enabled, setEnabled] = React.useState(initialEnabled);
|
|
3934
3895
|
const [toggling, setToggling] = React.useState(false);
|
|
3935
3896
|
const [detailsOpen, setDetailsOpen] = React.useState(false);
|
|
@@ -4098,7 +4059,7 @@ function AgentA2aInfo({
|
|
|
4098
4059
|
] })
|
|
4099
4060
|
] }),
|
|
4100
4061
|
/* @__PURE__ */ jsxRuntime.jsxs("div", { children: [
|
|
4101
|
-
/* @__PURE__ */ jsxRuntime.jsx(
|
|
4062
|
+
/* @__PURE__ */ jsxRuntime.jsx(chunkXXF4U7WL_cjs.Button, { variant: "outline", size: "sm", onClick: fetchAgentCard, disabled: loading, children: loading ? "Loading..." : cardPreview ? "Hide Agent Card" : "Agent Card" }),
|
|
4102
4063
|
cardPreview && /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "mt-3 relative", children: [
|
|
4103
4064
|
/* @__PURE__ */ jsxRuntime.jsx("pre", { className: "rounded bg-muted p-4 text-xs font-mono text-foreground overflow-x-auto max-h-96", children: cardPreview }),
|
|
4104
4065
|
/* @__PURE__ */ jsxRuntime.jsx(CopyButton, { text: cardPreview, className: "absolute top-2 right-2" })
|
|
@@ -4108,22 +4069,66 @@ function AgentA2aInfo({
|
|
|
4108
4069
|
] })
|
|
4109
4070
|
] });
|
|
4110
4071
|
}
|
|
4111
|
-
|
|
4112
|
-
|
|
4072
|
+
var AgentIdentityTab = React.lazy(() => import('./agent-identity-tab-F4MU2HP2.cjs').then((m) => ({ default: m.AgentIdentityTab })));
|
|
4073
|
+
function AgentDetailPage({ agentId, a2aBaseUrl, tenantSlug, adminApiBaseUrl, adminApiKey }) {
|
|
4074
|
+
const { LinkComponent, basePath } = chunkXXF4U7WL_cjs.useNavigation();
|
|
4113
4075
|
const { mutate } = swr.useSWRConfig();
|
|
4114
4076
|
const cacheKey = `agent-${agentId}`;
|
|
4115
|
-
const { data: agent, error, isLoading } =
|
|
4077
|
+
const { data: agent, error, isLoading } = chunkVZ43ATC5_cjs.useApi(
|
|
4116
4078
|
cacheKey,
|
|
4117
4079
|
(client) => client.agents.get(agentId)
|
|
4118
4080
|
);
|
|
4119
4081
|
const invalidate = React.useCallback(() => {
|
|
4120
4082
|
mutate(cacheKey);
|
|
4121
4083
|
}, [mutate, cacheKey]);
|
|
4084
|
+
const adminFetch = React.useCallback(async (path, options) => {
|
|
4085
|
+
if (!adminApiBaseUrl) throw new Error("Admin API not configured");
|
|
4086
|
+
const res = await fetch(`${adminApiBaseUrl}${path}`, {
|
|
4087
|
+
...options,
|
|
4088
|
+
headers: {
|
|
4089
|
+
"Content-Type": "application/json",
|
|
4090
|
+
...adminApiKey ? { Authorization: `Bearer ${adminApiKey}` } : {},
|
|
4091
|
+
...options?.headers
|
|
4092
|
+
}
|
|
4093
|
+
});
|
|
4094
|
+
if (!res.ok) {
|
|
4095
|
+
const body = await res.json().catch(() => ({ error: { message: res.statusText } }));
|
|
4096
|
+
throw new Error(body?.error?.message ?? `Request failed: ${res.status}`);
|
|
4097
|
+
}
|
|
4098
|
+
return res.json();
|
|
4099
|
+
}, [adminApiBaseUrl, adminApiKey]);
|
|
4100
|
+
const soulCallbacks = React.useMemo(() => {
|
|
4101
|
+
if (!adminApiBaseUrl) return {};
|
|
4102
|
+
return {
|
|
4103
|
+
onGenerateSoul: async () => {
|
|
4104
|
+
const result = await adminFetch(`/api/admin/agents/${agentId}/generate-soul`, { method: "POST" });
|
|
4105
|
+
return { files: result.files };
|
|
4106
|
+
},
|
|
4107
|
+
onImportSoul: async (ref) => {
|
|
4108
|
+
const [owner, name] = ref.split("/");
|
|
4109
|
+
const result = await adminFetch(`/api/admin/agents/${agentId}/import-soul`, {
|
|
4110
|
+
method: "POST",
|
|
4111
|
+
body: JSON.stringify({ owner, name })
|
|
4112
|
+
});
|
|
4113
|
+
return { files: result.imported_files };
|
|
4114
|
+
},
|
|
4115
|
+
onExportSoul: async () => {
|
|
4116
|
+
const result = await adminFetch(`/api/admin/agents/${agentId}/export-soul`);
|
|
4117
|
+
return { files: result.files, name: agent?.name ?? "agent" };
|
|
4118
|
+
},
|
|
4119
|
+
onPublishSoul: async (owner) => {
|
|
4120
|
+
await adminFetch(`/api/admin/agents/${agentId}/publish-soul`, {
|
|
4121
|
+
method: "POST",
|
|
4122
|
+
body: JSON.stringify({ owner })
|
|
4123
|
+
});
|
|
4124
|
+
}
|
|
4125
|
+
};
|
|
4126
|
+
}, [adminApiBaseUrl, adminFetch, agentId, agent?.name]);
|
|
4122
4127
|
if (isLoading) {
|
|
4123
4128
|
return /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "space-y-6", children: [
|
|
4124
|
-
/* @__PURE__ */ jsxRuntime.jsx(
|
|
4125
|
-
/* @__PURE__ */ jsxRuntime.jsx("div", { className: "grid grid-cols-6 gap-4", children: [1, 2, 3, 4, 5, 6].map((i) => /* @__PURE__ */ jsxRuntime.jsx(
|
|
4126
|
-
/* @__PURE__ */ jsxRuntime.jsx(
|
|
4129
|
+
/* @__PURE__ */ jsxRuntime.jsx(chunkVZ43ATC5_cjs.Skeleton, { className: "h-9 w-40" }),
|
|
4130
|
+
/* @__PURE__ */ jsxRuntime.jsx("div", { className: "grid grid-cols-6 gap-4", children: [1, 2, 3, 4, 5, 6].map((i) => /* @__PURE__ */ jsxRuntime.jsx(chunkVZ43ATC5_cjs.Skeleton, { className: "h-20" }, i)) }),
|
|
4131
|
+
/* @__PURE__ */ jsxRuntime.jsx(chunkVZ43ATC5_cjs.Skeleton, { className: "h-64 w-full" })
|
|
4127
4132
|
] });
|
|
4128
4133
|
}
|
|
4129
4134
|
if (error) {
|
|
@@ -4137,7 +4142,7 @@ function AgentDetailPage({ agentId, a2aBaseUrl, tenantSlug }) {
|
|
|
4137
4142
|
LinkComponent,
|
|
4138
4143
|
{
|
|
4139
4144
|
href: `${basePath}/agents/${agentId}/playground`,
|
|
4140
|
-
className:
|
|
4145
|
+
className: chunkXXF4U7WL_cjs.buttonVariants({ variant: "outline", size: "sm" }),
|
|
4141
4146
|
children: "Open Playground"
|
|
4142
4147
|
}
|
|
4143
4148
|
) }),
|
|
@@ -4177,6 +4182,10 @@ function AgentDetailPage({ agentId, a2aBaseUrl, tenantSlug }) {
|
|
|
4177
4182
|
)
|
|
4178
4183
|
] })
|
|
4179
4184
|
},
|
|
4185
|
+
{
|
|
4186
|
+
label: "Identity",
|
|
4187
|
+
content: /* @__PURE__ */ jsxRuntime.jsx(React.Suspense, { fallback: /* @__PURE__ */ jsxRuntime.jsx(chunkVZ43ATC5_cjs.Skeleton, { className: "h-64 w-full" }), children: /* @__PURE__ */ jsxRuntime.jsx(AgentIdentityTab, { agent, FileTreeEditor: chunkVZ43ATC5_cjs.FileTreeEditor, onSaved: invalidate, ...soulCallbacks }) })
|
|
4188
|
+
},
|
|
4180
4189
|
{
|
|
4181
4190
|
label: "Connectors",
|
|
4182
4191
|
content: /* @__PURE__ */ jsxRuntime.jsx(
|
|
@@ -4272,7 +4281,7 @@ function ScheduleCard({
|
|
|
4272
4281
|
return /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "rounded border border-muted-foreground/15 p-4 space-y-3", children: [
|
|
4273
4282
|
/* @__PURE__ */ jsxRuntime.jsxs("div", { className: "flex items-center justify-between gap-3", children: [
|
|
4274
4283
|
/* @__PURE__ */ jsxRuntime.jsx(
|
|
4275
|
-
|
|
4284
|
+
chunkXXF4U7WL_cjs.Input,
|
|
4276
4285
|
{
|
|
4277
4286
|
value: name,
|
|
4278
4287
|
onChange: (e) => setName(e.target.value),
|
|
@@ -4301,7 +4310,7 @@ function ScheduleCard({
|
|
|
4301
4310
|
] }) })
|
|
4302
4311
|
] }),
|
|
4303
4312
|
/* @__PURE__ */ jsxRuntime.jsxs("div", { className: "grid grid-cols-2 gap-4", children: [
|
|
4304
|
-
/* @__PURE__ */ jsxRuntime.jsx(
|
|
4313
|
+
/* @__PURE__ */ jsxRuntime.jsx(chunkXXF4U7WL_cjs.FormField, { label: "Frequency", children: /* @__PURE__ */ jsxRuntime.jsx(
|
|
4305
4314
|
Select,
|
|
4306
4315
|
{
|
|
4307
4316
|
value: frequency,
|
|
@@ -4314,15 +4323,15 @@ function ScheduleCard({
|
|
|
4314
4323
|
children: FREQUENCIES.map((f) => /* @__PURE__ */ jsxRuntime.jsx("option", { value: f.value, children: f.label }, f.value))
|
|
4315
4324
|
}
|
|
4316
4325
|
) }),
|
|
4317
|
-
showTimePicker && /* @__PURE__ */ jsxRuntime.jsx(
|
|
4318
|
-
|
|
4326
|
+
showTimePicker && /* @__PURE__ */ jsxRuntime.jsx(chunkXXF4U7WL_cjs.FormField, { label: `Time (${timezone})`, children: /* @__PURE__ */ jsxRuntime.jsx(
|
|
4327
|
+
chunkXXF4U7WL_cjs.Input,
|
|
4319
4328
|
{
|
|
4320
4329
|
type: "time",
|
|
4321
4330
|
value: time,
|
|
4322
4331
|
onChange: (e) => setTime(e.target.value)
|
|
4323
4332
|
}
|
|
4324
4333
|
) }),
|
|
4325
|
-
showDayPicker && /* @__PURE__ */ jsxRuntime.jsx(
|
|
4334
|
+
showDayPicker && /* @__PURE__ */ jsxRuntime.jsx(chunkXXF4U7WL_cjs.FormField, { label: "Day of Week", children: /* @__PURE__ */ jsxRuntime.jsx(
|
|
4326
4335
|
Select,
|
|
4327
4336
|
{
|
|
4328
4337
|
value: dayOfWeek.toString(),
|
|
@@ -4331,7 +4340,7 @@ function ScheduleCard({
|
|
|
4331
4340
|
}
|
|
4332
4341
|
) })
|
|
4333
4342
|
] }),
|
|
4334
|
-
frequency !== "manual" && /* @__PURE__ */ jsxRuntime.jsx(
|
|
4343
|
+
frequency !== "manual" && /* @__PURE__ */ jsxRuntime.jsx(chunkXXF4U7WL_cjs.FormField, { label: "Prompt", children: /* @__PURE__ */ jsxRuntime.jsx(
|
|
4335
4344
|
Textarea,
|
|
4336
4345
|
{
|
|
4337
4346
|
value: prompt,
|
|
@@ -4516,9 +4525,9 @@ function renderEvent(event, idx) {
|
|
|
4516
4525
|
}
|
|
4517
4526
|
var TERMINAL_STATUSES = /* @__PURE__ */ new Set(["completed", "failed", "cancelled", "timed_out"]);
|
|
4518
4527
|
function PlaygroundPage({ agentId }) {
|
|
4519
|
-
const client =
|
|
4520
|
-
const { LinkComponent, basePath } =
|
|
4521
|
-
const { data: agent, error: agentError, isLoading } =
|
|
4528
|
+
const client = chunkXXF4U7WL_cjs.useAgentPlaneClient();
|
|
4529
|
+
const { LinkComponent, basePath } = chunkXXF4U7WL_cjs.useNavigation();
|
|
4530
|
+
const { data: agent, error: agentError, isLoading } = chunkVZ43ATC5_cjs.useApi(
|
|
4522
4531
|
`agent-${agentId}`,
|
|
4523
4532
|
(c) => c.agents.get(agentId)
|
|
4524
4533
|
);
|
|
@@ -4710,13 +4719,13 @@ function PlaygroundPage({ agentId }) {
|
|
|
4710
4719
|
if (isLoading) {
|
|
4711
4720
|
return /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "flex flex-col h-[calc(100vh-6rem)]", children: [
|
|
4712
4721
|
/* @__PURE__ */ jsxRuntime.jsxs("div", { className: "flex items-center gap-3 mb-4", children: [
|
|
4713
|
-
/* @__PURE__ */ jsxRuntime.jsx(
|
|
4714
|
-
/* @__PURE__ */ jsxRuntime.jsx(
|
|
4722
|
+
/* @__PURE__ */ jsxRuntime.jsx(chunkVZ43ATC5_cjs.Skeleton, { className: "h-8 w-24" }),
|
|
4723
|
+
/* @__PURE__ */ jsxRuntime.jsx(chunkVZ43ATC5_cjs.Skeleton, { className: "h-4 w-40" })
|
|
4715
4724
|
] }),
|
|
4716
|
-
/* @__PURE__ */ jsxRuntime.jsx(
|
|
4725
|
+
/* @__PURE__ */ jsxRuntime.jsx(chunkVZ43ATC5_cjs.Skeleton, { className: "flex-1 rounded-lg" }),
|
|
4717
4726
|
/* @__PURE__ */ jsxRuntime.jsxs("div", { className: "mt-4 space-y-2", children: [
|
|
4718
|
-
/* @__PURE__ */ jsxRuntime.jsx(
|
|
4719
|
-
/* @__PURE__ */ jsxRuntime.jsx(
|
|
4727
|
+
/* @__PURE__ */ jsxRuntime.jsx(chunkVZ43ATC5_cjs.Skeleton, { className: "h-24 w-full rounded-lg" }),
|
|
4728
|
+
/* @__PURE__ */ jsxRuntime.jsx(chunkVZ43ATC5_cjs.Skeleton, { className: "h-8 w-20" })
|
|
4720
4729
|
] })
|
|
4721
4730
|
] });
|
|
4722
4731
|
}
|
|
@@ -4747,7 +4756,7 @@ function PlaygroundPage({ agentId }) {
|
|
|
4747
4756
|
]
|
|
4748
4757
|
}
|
|
4749
4758
|
),
|
|
4750
|
-
(sessionId || events.length > 0) && /* @__PURE__ */ jsxRuntime.jsx(
|
|
4759
|
+
(sessionId || events.length > 0) && /* @__PURE__ */ jsxRuntime.jsx(chunkXXF4U7WL_cjs.Button, { onClick: handleNewChat, variant: "outline", size: "sm", disabled: running, children: "New Chat" }),
|
|
4751
4760
|
sessionId && /* @__PURE__ */ jsxRuntime.jsxs("span", { className: "text-xs text-muted-foreground font-mono", children: [
|
|
4752
4761
|
"Session: ",
|
|
4753
4762
|
sessionId.slice(0, 12),
|
|
@@ -4785,113 +4794,113 @@ function PlaygroundPage({ agentId }) {
|
|
|
4785
4794
|
}
|
|
4786
4795
|
),
|
|
4787
4796
|
/* @__PURE__ */ jsxRuntime.jsxs("div", { className: "flex items-center gap-2", children: [
|
|
4788
|
-
/* @__PURE__ */ jsxRuntime.jsx(
|
|
4789
|
-
running && /* @__PURE__ */ jsxRuntime.jsx(
|
|
4797
|
+
/* @__PURE__ */ jsxRuntime.jsx(chunkXXF4U7WL_cjs.Button, { onClick: handleSend, disabled: running || !prompt.trim(), size: "sm", children: running ? "Running\u2026" : sessionId ? "Send" : "Run" }),
|
|
4798
|
+
running && /* @__PURE__ */ jsxRuntime.jsx(chunkXXF4U7WL_cjs.Button, { onClick: handleStop, variant: "outline", size: "sm", children: "Stop" }),
|
|
4790
4799
|
/* @__PURE__ */ jsxRuntime.jsx("span", { className: "text-xs text-muted-foreground ml-1", children: "\u2318+Enter to send" })
|
|
4791
4800
|
] })
|
|
4792
4801
|
] })
|
|
4793
4802
|
] });
|
|
4794
4803
|
}
|
|
4795
4804
|
|
|
4796
|
-
Object.defineProperty(exports, "
|
|
4805
|
+
Object.defineProperty(exports, "Card", {
|
|
4797
4806
|
enumerable: true,
|
|
4798
|
-
get: function () { return
|
|
4807
|
+
get: function () { return chunkVZ43ATC5_cjs.Card; }
|
|
4799
4808
|
});
|
|
4800
|
-
Object.defineProperty(exports, "
|
|
4809
|
+
Object.defineProperty(exports, "CardContent", {
|
|
4801
4810
|
enumerable: true,
|
|
4802
|
-
get: function () { return
|
|
4811
|
+
get: function () { return chunkVZ43ATC5_cjs.CardContent; }
|
|
4803
4812
|
});
|
|
4804
|
-
Object.defineProperty(exports, "
|
|
4813
|
+
Object.defineProperty(exports, "CardDescription", {
|
|
4805
4814
|
enumerable: true,
|
|
4806
|
-
get: function () { return
|
|
4815
|
+
get: function () { return chunkVZ43ATC5_cjs.CardDescription; }
|
|
4807
4816
|
});
|
|
4808
|
-
Object.defineProperty(exports, "
|
|
4817
|
+
Object.defineProperty(exports, "CardHeader", {
|
|
4809
4818
|
enumerable: true,
|
|
4810
|
-
get: function () { return
|
|
4819
|
+
get: function () { return chunkVZ43ATC5_cjs.CardHeader; }
|
|
4811
4820
|
});
|
|
4812
|
-
Object.defineProperty(exports, "
|
|
4821
|
+
Object.defineProperty(exports, "CardTitle", {
|
|
4813
4822
|
enumerable: true,
|
|
4814
|
-
get: function () { return
|
|
4823
|
+
get: function () { return chunkVZ43ATC5_cjs.CardTitle; }
|
|
4815
4824
|
});
|
|
4816
|
-
Object.defineProperty(exports, "
|
|
4825
|
+
Object.defineProperty(exports, "Skeleton", {
|
|
4817
4826
|
enumerable: true,
|
|
4818
|
-
get: function () { return
|
|
4827
|
+
get: function () { return chunkVZ43ATC5_cjs.Skeleton; }
|
|
4819
4828
|
});
|
|
4820
|
-
Object.defineProperty(exports, "
|
|
4829
|
+
Object.defineProperty(exports, "useApi", {
|
|
4821
4830
|
enumerable: true,
|
|
4822
|
-
get: function () { return
|
|
4831
|
+
get: function () { return chunkVZ43ATC5_cjs.useApi; }
|
|
4823
4832
|
});
|
|
4824
|
-
Object.defineProperty(exports, "
|
|
4833
|
+
Object.defineProperty(exports, "AgentPlaneProvider", {
|
|
4834
|
+
enumerable: true,
|
|
4835
|
+
get: function () { return chunkXXF4U7WL_cjs.AgentPlaneProvider; }
|
|
4836
|
+
});
|
|
4837
|
+
Object.defineProperty(exports, "Badge", {
|
|
4838
|
+
enumerable: true,
|
|
4839
|
+
get: function () { return chunkXXF4U7WL_cjs.Badge; }
|
|
4840
|
+
});
|
|
4841
|
+
Object.defineProperty(exports, "Button", {
|
|
4825
4842
|
enumerable: true,
|
|
4826
|
-
get: function () { return
|
|
4843
|
+
get: function () { return chunkXXF4U7WL_cjs.Button; }
|
|
4827
4844
|
});
|
|
4828
4845
|
Object.defineProperty(exports, "Dialog", {
|
|
4829
4846
|
enumerable: true,
|
|
4830
|
-
get: function () { return
|
|
4847
|
+
get: function () { return chunkXXF4U7WL_cjs.Dialog; }
|
|
4831
4848
|
});
|
|
4832
4849
|
Object.defineProperty(exports, "DialogBody", {
|
|
4833
4850
|
enumerable: true,
|
|
4834
|
-
get: function () { return
|
|
4851
|
+
get: function () { return chunkXXF4U7WL_cjs.DialogBody; }
|
|
4835
4852
|
});
|
|
4836
4853
|
Object.defineProperty(exports, "DialogContent", {
|
|
4837
4854
|
enumerable: true,
|
|
4838
|
-
get: function () { return
|
|
4855
|
+
get: function () { return chunkXXF4U7WL_cjs.DialogContent; }
|
|
4839
4856
|
});
|
|
4840
4857
|
Object.defineProperty(exports, "DialogDescription", {
|
|
4841
4858
|
enumerable: true,
|
|
4842
|
-
get: function () { return
|
|
4859
|
+
get: function () { return chunkXXF4U7WL_cjs.DialogDescription; }
|
|
4843
4860
|
});
|
|
4844
4861
|
Object.defineProperty(exports, "DialogFooter", {
|
|
4845
4862
|
enumerable: true,
|
|
4846
|
-
get: function () { return
|
|
4863
|
+
get: function () { return chunkXXF4U7WL_cjs.DialogFooter; }
|
|
4847
4864
|
});
|
|
4848
4865
|
Object.defineProperty(exports, "DialogHeader", {
|
|
4849
4866
|
enumerable: true,
|
|
4850
|
-
get: function () { return
|
|
4867
|
+
get: function () { return chunkXXF4U7WL_cjs.DialogHeader; }
|
|
4851
4868
|
});
|
|
4852
4869
|
Object.defineProperty(exports, "DialogTitle", {
|
|
4853
4870
|
enumerable: true,
|
|
4854
|
-
get: function () { return
|
|
4871
|
+
get: function () { return chunkXXF4U7WL_cjs.DialogTitle; }
|
|
4855
4872
|
});
|
|
4856
4873
|
Object.defineProperty(exports, "FormField", {
|
|
4857
4874
|
enumerable: true,
|
|
4858
|
-
get: function () { return
|
|
4875
|
+
get: function () { return chunkXXF4U7WL_cjs.FormField; }
|
|
4859
4876
|
});
|
|
4860
4877
|
Object.defineProperty(exports, "Input", {
|
|
4861
4878
|
enumerable: true,
|
|
4862
|
-
get: function () { return
|
|
4863
|
-
});
|
|
4864
|
-
Object.defineProperty(exports, "Skeleton", {
|
|
4865
|
-
enumerable: true,
|
|
4866
|
-
get: function () { return chunkVBGYWQUF_cjs.Skeleton; }
|
|
4879
|
+
get: function () { return chunkXXF4U7WL_cjs.Input; }
|
|
4867
4880
|
});
|
|
4868
4881
|
Object.defineProperty(exports, "badgeVariants", {
|
|
4869
4882
|
enumerable: true,
|
|
4870
|
-
get: function () { return
|
|
4883
|
+
get: function () { return chunkXXF4U7WL_cjs.badgeVariants; }
|
|
4871
4884
|
});
|
|
4872
4885
|
Object.defineProperty(exports, "buttonVariants", {
|
|
4873
4886
|
enumerable: true,
|
|
4874
|
-
get: function () { return
|
|
4887
|
+
get: function () { return chunkXXF4U7WL_cjs.buttonVariants; }
|
|
4875
4888
|
});
|
|
4876
4889
|
Object.defineProperty(exports, "cn", {
|
|
4877
4890
|
enumerable: true,
|
|
4878
|
-
get: function () { return
|
|
4891
|
+
get: function () { return chunkXXF4U7WL_cjs.cn; }
|
|
4879
4892
|
});
|
|
4880
4893
|
Object.defineProperty(exports, "useAgentPlaneClient", {
|
|
4881
4894
|
enumerable: true,
|
|
4882
|
-
get: function () { return
|
|
4883
|
-
});
|
|
4884
|
-
Object.defineProperty(exports, "useApi", {
|
|
4885
|
-
enumerable: true,
|
|
4886
|
-
get: function () { return chunkVBGYWQUF_cjs.useApi; }
|
|
4895
|
+
get: function () { return chunkXXF4U7WL_cjs.useAgentPlaneClient; }
|
|
4887
4896
|
});
|
|
4888
4897
|
Object.defineProperty(exports, "useAuthError", {
|
|
4889
4898
|
enumerable: true,
|
|
4890
|
-
get: function () { return
|
|
4899
|
+
get: function () { return chunkXXF4U7WL_cjs.useAuthError; }
|
|
4891
4900
|
});
|
|
4892
4901
|
Object.defineProperty(exports, "useNavigation", {
|
|
4893
4902
|
enumerable: true,
|
|
4894
|
-
get: function () { return
|
|
4903
|
+
get: function () { return chunkXXF4U7WL_cjs.useNavigation; }
|
|
4895
4904
|
});
|
|
4896
4905
|
exports.AdminTable = AdminTable;
|
|
4897
4906
|
exports.AdminTableHead = AdminTableHead;
|