@burtson-labs/bandit-engine 2.0.107 → 2.0.109
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/{chat-HQHHNWBS.mjs → chat-JDAI4UHT.mjs} +4 -4
- package/dist/{chunk-VIKZPBVO.mjs → chunk-3WKPBIRD.mjs} +1 -2
- package/dist/{chunk-4A2M7T6B.mjs → chunk-LKDUHKY2.mjs} +3 -3
- package/dist/{chunk-N3UWG6CU.mjs → chunk-Q6QQZXRR.mjs} +358 -172
- package/dist/chunk-Q6QQZXRR.mjs.map +1 -0
- package/dist/{chunk-KYC7CC6C.mjs → chunk-VR2ZWFTN.mjs} +2 -2
- package/dist/{chunk-RN3AKXKI.mjs → chunk-XPNXECXM.mjs} +2 -2
- package/dist/index.js +349 -162
- package/dist/index.js.map +1 -1
- package/dist/index.mjs +5 -5
- package/dist/management/management.js +349 -162
- package/dist/management/management.js.map +1 -1
- package/dist/management/management.mjs +4 -4
- package/dist/modals/chat-modal/chat-modal.mjs +2 -2
- package/package.json +1 -1
- package/dist/chunk-N3UWG6CU.mjs.map +0 -1
- /package/dist/{chat-HQHHNWBS.mjs.map → chat-JDAI4UHT.mjs.map} +0 -0
- /package/dist/{chunk-VIKZPBVO.mjs.map → chunk-3WKPBIRD.mjs.map} +0 -0
- /package/dist/{chunk-4A2M7T6B.mjs.map → chunk-LKDUHKY2.mjs.map} +0 -0
- /package/dist/{chunk-KYC7CC6C.mjs.map → chunk-VR2ZWFTN.mjs.map} +0 -0
- /package/dist/{chunk-RN3AKXKI.mjs.map → chunk-XPNXECXM.mjs.map} +0 -0
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import {
|
|
2
2
|
StreamingMarkdown_default
|
|
3
|
-
} from "./chunk-
|
|
3
|
+
} from "./chunk-VR2ZWFTN.mjs";
|
|
4
4
|
import {
|
|
5
5
|
aiProviderInitService
|
|
6
6
|
} from "./chunk-HAUDGBUS.mjs";
|
|
@@ -14,7 +14,7 @@ import {
|
|
|
14
14
|
} from "./chunk-BN3D45E2.mjs";
|
|
15
15
|
import {
|
|
16
16
|
chat_modal_default
|
|
17
|
-
} from "./chunk-
|
|
17
|
+
} from "./chunk-XPNXECXM.mjs";
|
|
18
18
|
import {
|
|
19
19
|
AddIcon,
|
|
20
20
|
ArchiveIcon,
|
|
@@ -42,14 +42,12 @@ import {
|
|
|
42
42
|
DownloadIcon,
|
|
43
43
|
EditNoteOutlinedIcon,
|
|
44
44
|
ErrorIcon,
|
|
45
|
-
ErrorOutlineIcon,
|
|
46
45
|
ExpandMoreIcon,
|
|
47
46
|
FaceRetouchingNaturalIcon,
|
|
48
47
|
FileUploadIcon,
|
|
49
48
|
FolderIcon,
|
|
50
49
|
FolderOpenIcon,
|
|
51
50
|
GroupIcon,
|
|
52
|
-
HealthAndSafetyIcon,
|
|
53
51
|
InfoIcon,
|
|
54
52
|
LinkIcon,
|
|
55
53
|
LockIcon,
|
|
@@ -86,7 +84,7 @@ import {
|
|
|
86
84
|
predefinedThemes,
|
|
87
85
|
useNotificationService,
|
|
88
86
|
useVoiceStore
|
|
89
|
-
} from "./chunk-
|
|
87
|
+
} from "./chunk-3WKPBIRD.mjs";
|
|
90
88
|
import {
|
|
91
89
|
TOPICS,
|
|
92
90
|
brandingService_default,
|
|
@@ -2562,7 +2560,7 @@ var PreferencesTab = ({
|
|
|
2562
2560
|
children: "Control which AI features are enabled to optimize performance for your device. Disabling features can help reduce resource usage on machines with limited capabilities."
|
|
2563
2561
|
}
|
|
2564
2562
|
),
|
|
2565
|
-
/* @__PURE__ */ jsxs3(Paper2, { sx: { p: { xs: 1.
|
|
2563
|
+
/* @__PURE__ */ jsxs3(Paper2, { sx: { p: { xs: 1.5, sm: 1.75 }, mb: { xs: 1.5, md: 1.75 }, border: "1px solid", borderColor: "divider", borderRadius: 2 }, children: [
|
|
2566
2564
|
/* @__PURE__ */ jsxs3(Box3, { children: [
|
|
2567
2565
|
/* @__PURE__ */ jsx3(Typography3, { variant: "h6", sx: { fontWeight: 600, color: "text.primary" }, children: "Conversation Starters" }),
|
|
2568
2566
|
/* @__PURE__ */ jsx3(Typography3, { variant: "body2", color: "text.secondary", children: "Personalize the suggested prompts on your home screen. Pick the topics you care about \u2014 starters lean toward them (blended with fresh ones each time) instead of generic blanket questions." })
|
|
@@ -2605,7 +2603,7 @@ var PreferencesTab = ({
|
|
|
2605
2603
|
}
|
|
2606
2604
|
) })
|
|
2607
2605
|
] }),
|
|
2608
|
-
/* @__PURE__ */ jsxs3(Paper2, { sx: { p: { xs: 1.
|
|
2606
|
+
/* @__PURE__ */ jsxs3(Paper2, { sx: { p: { xs: 1.5, sm: 1.75 }, mb: { xs: 1.5, md: 1.75 }, border: "1px solid", borderColor: "divider", borderRadius: 2 }, children: [
|
|
2609
2607
|
/* @__PURE__ */ jsxs3(Box3, { sx: { display: "flex", flexDirection: { xs: "column", sm: "row" }, justifyContent: "space-between", gap: 2 }, children: [
|
|
2610
2608
|
/* @__PURE__ */ jsxs3(Box3, { children: [
|
|
2611
2609
|
/* @__PURE__ */ jsx3(Typography3, { variant: "h6", sx: { fontWeight: 600, color: "text.primary" }, children: "Conversation & Project Sync" }),
|
|
@@ -2717,7 +2715,7 @@ var PreferencesTab = ({
|
|
|
2717
2715
|
/* @__PURE__ */ jsx3(Typography3, { variant: "body2", color: "text.secondary", sx: { display: "flex", alignItems: "center" }, children: "Need media support? Images and large files stay local until retention rules are finalized." })
|
|
2718
2716
|
] })
|
|
2719
2717
|
] }),
|
|
2720
|
-
/* @__PURE__ */ jsxs3(Paper2, { sx: { p: { xs: 1.
|
|
2718
|
+
/* @__PURE__ */ jsxs3(Paper2, { sx: { p: { xs: 1.5, sm: 1.75 }, mb: { xs: 1.5, md: 1.75 }, border: "1px solid", borderColor: "divider", borderRadius: 2 }, children: [
|
|
2721
2719
|
/* @__PURE__ */ jsx3(Typography3, { variant: "h6", sx: { mb: 2, fontWeight: 600, color: "text.primary" }, children: "Feature Controls" }),
|
|
2722
2720
|
/* @__PURE__ */ jsxs3(Box3, { sx: { display: "flex", flexDirection: "column", gap: 2 }, children: [
|
|
2723
2721
|
/* @__PURE__ */ jsxs3(Box3, { children: [
|
|
@@ -2915,7 +2913,7 @@ var PreferencesTab = ({
|
|
|
2915
2913
|
)
|
|
2916
2914
|
] })
|
|
2917
2915
|
] }),
|
|
2918
|
-
/* @__PURE__ */ jsxs3(Paper2, { sx: { p: { xs: 1.
|
|
2916
|
+
/* @__PURE__ */ jsxs3(Paper2, { sx: { p: { xs: 1.5, sm: 1.75 }, mb: { xs: 1.5, md: 1.75 }, border: "1px solid", borderColor: "divider", borderRadius: 2 }, children: [
|
|
2919
2917
|
/* @__PURE__ */ jsx3(Typography3, { variant: "h6", sx: { mb: 2, fontWeight: 600, color: "text.primary" }, children: "Backup & Restore" }),
|
|
2920
2918
|
/* @__PURE__ */ jsx3(Typography3, { variant: "body2", color: "text.secondary", paragraph: true, children: "Export your preferences to save your settings, or import previously saved preferences. You can also reset to default values." }),
|
|
2921
2919
|
/* @__PURE__ */ jsxs3(Box3, { sx: { display: "flex", flexDirection: { xs: "column", sm: "row" }, gap: 2, alignItems: "center" }, children: [
|
|
@@ -8901,7 +8899,7 @@ var ProviderTab = () => {
|
|
|
8901
8899
|
children: "Configure your AI provider for chat, generation, and model services. This determines which backend service powers your AI interactions."
|
|
8902
8900
|
}
|
|
8903
8901
|
),
|
|
8904
|
-
/* @__PURE__ */ jsxs11(Paper5, { sx: { p: { xs: 1.
|
|
8902
|
+
/* @__PURE__ */ jsxs11(Paper5, { sx: { p: { xs: 1.5, sm: 1.75 }, mb: { xs: 1.5, md: 1.75 }, bgcolor: "background.paper", border: "1px solid", borderColor: "divider", borderRadius: 2 }, children: [
|
|
8905
8903
|
/* @__PURE__ */ jsx11(Typography10, { variant: "h6", sx: { mb: 2, fontWeight: 600, color: "text.primary" }, children: "Current Provider" }),
|
|
8906
8904
|
currentProvider ? /* @__PURE__ */ jsxs11(Box11, { sx: { display: "flex", alignItems: "center", gap: 2 }, children: [
|
|
8907
8905
|
/* @__PURE__ */ jsx11(
|
|
@@ -8915,7 +8913,7 @@ var ProviderTab = () => {
|
|
|
8915
8913
|
/* @__PURE__ */ jsx11(Typography10, { variant: "body2", color: "text.secondary", children: currentProviderConfig?.baseUrl || currentProviderConfig?.gatewayUrl || "No URL configured" })
|
|
8916
8914
|
] }) : /* @__PURE__ */ jsx11(Chip8, { label: "No Provider Configured", color: "warning" })
|
|
8917
8915
|
] }),
|
|
8918
|
-
/* @__PURE__ */ jsxs11(Paper5, { sx: { p: { xs: 1.
|
|
8916
|
+
/* @__PURE__ */ jsxs11(Paper5, { sx: { p: { xs: 1.5, sm: 1.75 }, mb: { xs: 1.5, md: 1.75 }, bgcolor: "background.paper", border: "1px solid", borderColor: "divider", borderRadius: 2 }, children: [
|
|
8919
8917
|
/* @__PURE__ */ jsxs11(
|
|
8920
8918
|
Box11,
|
|
8921
8919
|
{
|
|
@@ -9243,7 +9241,7 @@ var ProviderTab = () => {
|
|
|
9243
9241
|
|
|
9244
9242
|
// src/management/components/MCPToolsTabV2.tsx
|
|
9245
9243
|
import { useEffect as useEffect11, useMemo as useMemo5, useState as useState14 } from "react";
|
|
9246
|
-
import { Box as Box13, Typography as Typography12, Paper as Paper7,
|
|
9244
|
+
import { Alert as Alert11, Box as Box13, Typography as Typography12, Paper as Paper7, IconButton as IconButton7, Tooltip as Tooltip4, LinearProgress as LinearProgress6, Switch as Switch4 } from "@mui/material";
|
|
9247
9245
|
|
|
9248
9246
|
// src/services/mcp/mcpControllerService.ts
|
|
9249
9247
|
var isPlaygroundMode = () => {
|
|
@@ -9316,17 +9314,18 @@ async function fetchMcpHealth() {
|
|
|
9316
9314
|
}
|
|
9317
9315
|
|
|
9318
9316
|
// src/management/components/McpServersSection.tsx
|
|
9319
|
-
import { useCallback as useCallback8, useEffect as useEffect10, useState as useState13 } from "react";
|
|
9317
|
+
import { useCallback as useCallback8, useEffect as useEffect10, useRef as useRef6, useState as useState13 } from "react";
|
|
9320
9318
|
import {
|
|
9321
9319
|
Alert as Alert10,
|
|
9322
9320
|
Box as Box12,
|
|
9323
9321
|
Button as Button10,
|
|
9324
9322
|
Chip as Chip9,
|
|
9325
|
-
CircularProgress as CircularProgress2,
|
|
9326
9323
|
Collapse as Collapse2,
|
|
9324
|
+
CircularProgress as CircularProgress2,
|
|
9327
9325
|
FormControlLabel as FormControlLabel2,
|
|
9328
9326
|
IconButton as IconButton6,
|
|
9329
9327
|
LinearProgress as LinearProgress5,
|
|
9328
|
+
Link,
|
|
9330
9329
|
MenuItem as MenuItem4,
|
|
9331
9330
|
Paper as Paper6,
|
|
9332
9331
|
Stack as Stack5,
|
|
@@ -9337,15 +9336,85 @@ import {
|
|
|
9337
9336
|
} from "@mui/material";
|
|
9338
9337
|
import { jsx as jsx12, jsxs as jsxs12 } from "react/jsx-runtime";
|
|
9339
9338
|
var emptyForm = { name: "", url: "", authType: "none", authValue: "", headerName: "" };
|
|
9339
|
+
var CATALOG = [
|
|
9340
|
+
{
|
|
9341
|
+
key: "linear",
|
|
9342
|
+
name: "Linear",
|
|
9343
|
+
blurb: "Create and track issues, projects, and cycles",
|
|
9344
|
+
letter: "L",
|
|
9345
|
+
accent: "#5E6AD2",
|
|
9346
|
+
url: "https://mcp.linear.app/sse",
|
|
9347
|
+
authType: "bearer",
|
|
9348
|
+
tokenLabel: "Linear API key",
|
|
9349
|
+
tokenHelp: "https://linear.app/settings/api"
|
|
9350
|
+
},
|
|
9351
|
+
{
|
|
9352
|
+
key: "notion",
|
|
9353
|
+
name: "Notion",
|
|
9354
|
+
blurb: "Search and update pages across your workspace",
|
|
9355
|
+
letter: "N",
|
|
9356
|
+
accent: "#0f0f0f",
|
|
9357
|
+
url: "https://mcp.notion.com/mcp",
|
|
9358
|
+
authType: "bearer",
|
|
9359
|
+
tokenLabel: "Notion integration token",
|
|
9360
|
+
tokenHelp: "https://www.notion.so/my-integrations"
|
|
9361
|
+
},
|
|
9362
|
+
{
|
|
9363
|
+
key: "github",
|
|
9364
|
+
name: "GitHub",
|
|
9365
|
+
blurb: "Issues, pull requests, code search, and actions",
|
|
9366
|
+
letter: "G",
|
|
9367
|
+
accent: "#24292f",
|
|
9368
|
+
url: "https://api.githubcopilot.com/mcp/",
|
|
9369
|
+
authType: "bearer",
|
|
9370
|
+
tokenLabel: "GitHub personal access token",
|
|
9371
|
+
tokenHelp: "https://github.com/settings/tokens"
|
|
9372
|
+
},
|
|
9373
|
+
{
|
|
9374
|
+
key: "sentry",
|
|
9375
|
+
name: "Sentry",
|
|
9376
|
+
blurb: "Triage errors and inspect production issues",
|
|
9377
|
+
letter: "S",
|
|
9378
|
+
accent: "#362D59",
|
|
9379
|
+
url: "https://mcp.sentry.dev/mcp",
|
|
9380
|
+
authType: "bearer",
|
|
9381
|
+
tokenLabel: "Sentry auth token",
|
|
9382
|
+
tokenHelp: "https://sentry.io/settings/auth-tokens/"
|
|
9383
|
+
},
|
|
9384
|
+
{
|
|
9385
|
+
key: "atlassian",
|
|
9386
|
+
name: "Jira & Confluence",
|
|
9387
|
+
blurb: "Atlassian issues, boards, and docs",
|
|
9388
|
+
letter: "J",
|
|
9389
|
+
accent: "#0052CC",
|
|
9390
|
+
url: "https://mcp.atlassian.com/v1/sse",
|
|
9391
|
+
authType: "bearer",
|
|
9392
|
+
tokenLabel: "Atlassian API token",
|
|
9393
|
+
tokenHelp: "https://id.atlassian.com/manage-profile/security/api-tokens"
|
|
9394
|
+
},
|
|
9395
|
+
{
|
|
9396
|
+
key: "stripe",
|
|
9397
|
+
name: "Stripe",
|
|
9398
|
+
blurb: "Payments, customers, and invoices",
|
|
9399
|
+
letter: "S",
|
|
9400
|
+
accent: "#635BFF",
|
|
9401
|
+
url: "https://mcp.stripe.com",
|
|
9402
|
+
authType: "bearer",
|
|
9403
|
+
tokenLabel: "Stripe restricted key",
|
|
9404
|
+
tokenHelp: "https://dashboard.stripe.com/apikeys"
|
|
9405
|
+
}
|
|
9406
|
+
];
|
|
9340
9407
|
var McpServersSection = () => {
|
|
9341
9408
|
const [servers, setServers] = useState13([]);
|
|
9342
9409
|
const [loading, setLoading] = useState13(false);
|
|
9343
9410
|
const [error, setError] = useState13(null);
|
|
9344
9411
|
const [form, setForm] = useState13(emptyForm);
|
|
9412
|
+
const [activeEntry, setActiveEntry] = useState13(null);
|
|
9345
9413
|
const [adding, setAdding] = useState13(false);
|
|
9346
9414
|
const [showForm, setShowForm] = useState13(false);
|
|
9347
9415
|
const [tools, setTools] = useState13({});
|
|
9348
9416
|
const reloadChatTools = useMCPToolsStore((s) => s.loadMcpServerTools);
|
|
9417
|
+
const formRef = useRef6(null);
|
|
9349
9418
|
const refresh = useCallback8(async () => {
|
|
9350
9419
|
setLoading(true);
|
|
9351
9420
|
setError(null);
|
|
@@ -9360,6 +9429,20 @@ var McpServersSection = () => {
|
|
|
9360
9429
|
useEffect10(() => {
|
|
9361
9430
|
refresh();
|
|
9362
9431
|
}, [refresh]);
|
|
9432
|
+
const connectedKeys = new Set(servers.map((s) => s.url.replace(/\/+$/, "")));
|
|
9433
|
+
const openForCatalog = (entry) => {
|
|
9434
|
+
setActiveEntry(entry);
|
|
9435
|
+
setForm({ name: entry.name, url: entry.url, authType: entry.authType, authValue: "", headerName: "" });
|
|
9436
|
+
setShowForm(true);
|
|
9437
|
+
setError(null);
|
|
9438
|
+
requestAnimationFrame(() => formRef.current?.scrollIntoView({ behavior: "smooth", block: "nearest" }));
|
|
9439
|
+
};
|
|
9440
|
+
const openCustom = () => {
|
|
9441
|
+
setActiveEntry(null);
|
|
9442
|
+
setForm(emptyForm);
|
|
9443
|
+
setShowForm((v) => !v);
|
|
9444
|
+
setError(null);
|
|
9445
|
+
};
|
|
9363
9446
|
const handleAdd = async () => {
|
|
9364
9447
|
if (!form.name.trim() || !form.url.trim()) {
|
|
9365
9448
|
setError("Name and URL are required.");
|
|
@@ -9376,6 +9459,7 @@ var McpServersSection = () => {
|
|
|
9376
9459
|
headerName: form.authType === "header" ? form.headerName : void 0
|
|
9377
9460
|
});
|
|
9378
9461
|
setForm(emptyForm);
|
|
9462
|
+
setActiveEntry(null);
|
|
9379
9463
|
setShowForm(false);
|
|
9380
9464
|
await refresh();
|
|
9381
9465
|
void reloadChatTools();
|
|
@@ -9414,101 +9498,185 @@ var McpServersSection = () => {
|
|
|
9414
9498
|
setTools((prev) => ({ ...prev, [id]: { error: e instanceof Error ? e.message : "Could not connect." } }));
|
|
9415
9499
|
}
|
|
9416
9500
|
};
|
|
9417
|
-
return /* @__PURE__ */ jsxs12(
|
|
9418
|
-
/* @__PURE__ */ jsxs12(Box12, { sx: {
|
|
9419
|
-
/* @__PURE__ */
|
|
9420
|
-
|
|
9421
|
-
/* @__PURE__ */ jsx12(Typography11, { variant: "subtitle1", sx: { fontWeight: 700 }, children: "MCP Servers" }),
|
|
9422
|
-
/* @__PURE__ */ jsx12(Chip9, { size: "small", label: String(servers.length) })
|
|
9423
|
-
] }),
|
|
9424
|
-
/* @__PURE__ */ jsxs12(Box12, { sx: { display: "flex", alignItems: "center", gap: 0.5 }, children: [
|
|
9425
|
-
/* @__PURE__ */ jsx12(Tooltip3, { title: "Refresh", children: /* @__PURE__ */ jsx12(IconButton6, { onClick: refresh, size: "small", children: /* @__PURE__ */ jsx12(RefreshIcon, {}) }) }),
|
|
9426
|
-
/* @__PURE__ */ jsx12(Button10, { size: "small", variant: "contained", startIcon: /* @__PURE__ */ jsx12(AddIcon, {}), onClick: () => setShowForm((v) => !v), children: "Add server" })
|
|
9427
|
-
] })
|
|
9501
|
+
return /* @__PURE__ */ jsxs12(Box12, { children: [
|
|
9502
|
+
/* @__PURE__ */ jsxs12(Box12, { sx: { mb: 2.5 }, children: [
|
|
9503
|
+
/* @__PURE__ */ jsx12(Typography11, { variant: "h6", sx: { fontWeight: 700, mb: 0.5 }, children: "Connect your tools" }),
|
|
9504
|
+
/* @__PURE__ */ jsx12(Typography11, { variant: "body2", color: "text.secondary", sx: { maxWidth: 680, lineHeight: 1.6 }, children: "Let Bandit work inside the apps you already use \u2014 open a Linear issue, search Notion, or triage a Sentry error right from chat. Connect a service once; the gateway holds the connection securely, so your browser never talks to it directly." })
|
|
9428
9505
|
] }),
|
|
9429
|
-
/* @__PURE__ */ jsx12(Typography11, { variant: "body2", color: "text.secondary", sx: { mb: 2 }, children: "Connect a remote Model Context Protocol server to give the assistant its tools. The gateway holds the connection and proxies calls \u2014 your browser never talks to the server directly." }),
|
|
9430
9506
|
error && /* @__PURE__ */ jsx12(Alert10, { severity: "error", sx: { mb: 2 }, onClose: () => setError(null), children: error }),
|
|
9431
|
-
/* @__PURE__ */ jsx12(
|
|
9432
|
-
|
|
9433
|
-
|
|
9434
|
-
|
|
9435
|
-
|
|
9436
|
-
|
|
9437
|
-
|
|
9438
|
-
|
|
9439
|
-
|
|
9440
|
-
|
|
9441
|
-
}
|
|
9442
|
-
|
|
9443
|
-
|
|
9444
|
-
|
|
9445
|
-
|
|
9446
|
-
|
|
9447
|
-
|
|
9448
|
-
|
|
9449
|
-
|
|
9450
|
-
|
|
9451
|
-
|
|
9452
|
-
|
|
9453
|
-
|
|
9454
|
-
|
|
9455
|
-
|
|
9456
|
-
|
|
9457
|
-
|
|
9458
|
-
|
|
9459
|
-
|
|
9460
|
-
|
|
9461
|
-
|
|
9462
|
-
|
|
9463
|
-
|
|
9464
|
-
|
|
9465
|
-
|
|
9466
|
-
|
|
9467
|
-
|
|
9468
|
-
|
|
9469
|
-
|
|
9470
|
-
|
|
9471
|
-
|
|
9472
|
-
|
|
9473
|
-
|
|
9474
|
-
|
|
9475
|
-
|
|
9476
|
-
|
|
9477
|
-
|
|
9478
|
-
|
|
9479
|
-
|
|
9480
|
-
|
|
9481
|
-
|
|
9482
|
-
|
|
9483
|
-
|
|
9484
|
-
|
|
9485
|
-
|
|
9486
|
-
|
|
9487
|
-
|
|
9488
|
-
|
|
9489
|
-
|
|
9490
|
-
|
|
9491
|
-
|
|
9492
|
-
|
|
9493
|
-
|
|
9507
|
+
/* @__PURE__ */ jsx12(Typography11, { variant: "overline", color: "text.secondary", sx: { fontWeight: 700, letterSpacing: 0.6 }, children: "Popular integrations" }),
|
|
9508
|
+
/* @__PURE__ */ jsx12(
|
|
9509
|
+
Box12,
|
|
9510
|
+
{
|
|
9511
|
+
sx: {
|
|
9512
|
+
mt: 1,
|
|
9513
|
+
mb: 3,
|
|
9514
|
+
display: "grid",
|
|
9515
|
+
gridTemplateColumns: { xs: "1fr", sm: "repeat(2, 1fr)", lg: "repeat(3, 1fr)" },
|
|
9516
|
+
gap: 1.25
|
|
9517
|
+
},
|
|
9518
|
+
children: CATALOG.map((entry) => {
|
|
9519
|
+
const connected = connectedKeys.has(entry.url.replace(/\/+$/, ""));
|
|
9520
|
+
return /* @__PURE__ */ jsxs12(
|
|
9521
|
+
Paper6,
|
|
9522
|
+
{
|
|
9523
|
+
variant: "outlined",
|
|
9524
|
+
sx: {
|
|
9525
|
+
p: 1.5,
|
|
9526
|
+
display: "flex",
|
|
9527
|
+
alignItems: "center",
|
|
9528
|
+
gap: 1.25,
|
|
9529
|
+
borderRadius: 2,
|
|
9530
|
+
transition: "border-color 0.15s ease, transform 0.15s ease",
|
|
9531
|
+
"&:hover": { borderColor: "primary.main", transform: "translateY(-1px)" }
|
|
9532
|
+
},
|
|
9533
|
+
children: [
|
|
9534
|
+
/* @__PURE__ */ jsx12(
|
|
9535
|
+
Box12,
|
|
9536
|
+
{
|
|
9537
|
+
sx: {
|
|
9538
|
+
width: 36,
|
|
9539
|
+
height: 36,
|
|
9540
|
+
borderRadius: 1.5,
|
|
9541
|
+
flexShrink: 0,
|
|
9542
|
+
display: "grid",
|
|
9543
|
+
placeItems: "center",
|
|
9544
|
+
color: "#fff",
|
|
9545
|
+
fontWeight: 700,
|
|
9546
|
+
fontSize: 16,
|
|
9547
|
+
bgcolor: entry.accent
|
|
9548
|
+
},
|
|
9549
|
+
children: entry.letter
|
|
9550
|
+
}
|
|
9551
|
+
),
|
|
9552
|
+
/* @__PURE__ */ jsxs12(Box12, { sx: { minWidth: 0, flex: 1 }, children: [
|
|
9553
|
+
/* @__PURE__ */ jsx12(Typography11, { variant: "subtitle2", sx: { fontWeight: 700, lineHeight: 1.2 }, children: entry.name }),
|
|
9554
|
+
/* @__PURE__ */ jsx12(
|
|
9555
|
+
Typography11,
|
|
9556
|
+
{
|
|
9557
|
+
variant: "caption",
|
|
9558
|
+
color: "text.secondary",
|
|
9559
|
+
sx: { display: "block", lineHeight: 1.35 },
|
|
9560
|
+
children: entry.blurb
|
|
9561
|
+
}
|
|
9562
|
+
)
|
|
9563
|
+
] }),
|
|
9564
|
+
connected ? /* @__PURE__ */ jsx12(Chip9, { size: "small", color: "success", label: "Added", sx: { flexShrink: 0 } }) : /* @__PURE__ */ jsx12(
|
|
9565
|
+
Button10,
|
|
9566
|
+
{
|
|
9567
|
+
size: "small",
|
|
9568
|
+
variant: "outlined",
|
|
9569
|
+
onClick: () => openForCatalog(entry),
|
|
9570
|
+
sx: { flexShrink: 0, minWidth: 0 },
|
|
9571
|
+
children: "Connect"
|
|
9572
|
+
}
|
|
9573
|
+
)
|
|
9574
|
+
]
|
|
9575
|
+
},
|
|
9576
|
+
entry.key
|
|
9577
|
+
);
|
|
9578
|
+
})
|
|
9579
|
+
}
|
|
9580
|
+
),
|
|
9581
|
+
/* @__PURE__ */ jsx12(Box12, { ref: formRef, children: /* @__PURE__ */ jsx12(Collapse2, { in: showForm, children: /* @__PURE__ */ jsxs12(Paper6, { variant: "outlined", sx: { p: 2, mb: 2, borderRadius: 2 }, children: [
|
|
9582
|
+
/* @__PURE__ */ jsx12(Typography11, { variant: "subtitle2", sx: { fontWeight: 700, mb: 0.5 }, children: activeEntry ? `Connect ${activeEntry.name}` : "Add a custom server" }),
|
|
9583
|
+
activeEntry?.tokenHelp && /* @__PURE__ */ jsxs12(Typography11, { variant: "caption", color: "text.secondary", sx: { display: "block", mb: 1.5 }, children: [
|
|
9584
|
+
"Paste your ",
|
|
9585
|
+
activeEntry.tokenLabel,
|
|
9586
|
+
".",
|
|
9587
|
+
" ",
|
|
9588
|
+
/* @__PURE__ */ jsx12(Link, { href: activeEntry.tokenHelp, target: "_blank", rel: "noopener noreferrer", children: "Get one here \u2192" })
|
|
9589
|
+
] }),
|
|
9590
|
+
/* @__PURE__ */ jsxs12(Stack5, { spacing: 1.75, children: [
|
|
9494
9591
|
/* @__PURE__ */ jsx12(
|
|
9495
|
-
|
|
9592
|
+
TextField7,
|
|
9496
9593
|
{
|
|
9497
|
-
|
|
9498
|
-
|
|
9499
|
-
|
|
9500
|
-
},
|
|
9501
|
-
|
|
9594
|
+
label: "Name",
|
|
9595
|
+
size: "small",
|
|
9596
|
+
value: form.name,
|
|
9597
|
+
onChange: (e) => setForm({ ...form, name: e.target.value }),
|
|
9598
|
+
placeholder: "e.g. Linear",
|
|
9599
|
+
fullWidth: true
|
|
9502
9600
|
}
|
|
9503
|
-
)
|
|
9601
|
+
),
|
|
9602
|
+
/* @__PURE__ */ jsx12(
|
|
9603
|
+
TextField7,
|
|
9604
|
+
{
|
|
9605
|
+
label: "Server URL",
|
|
9606
|
+
size: "small",
|
|
9607
|
+
value: form.url,
|
|
9608
|
+
onChange: (e) => setForm({ ...form, url: e.target.value }),
|
|
9609
|
+
placeholder: "https://mcp.example.com/mcp",
|
|
9610
|
+
fullWidth: true
|
|
9611
|
+
}
|
|
9612
|
+
),
|
|
9613
|
+
/* @__PURE__ */ jsxs12(
|
|
9614
|
+
TextField7,
|
|
9615
|
+
{
|
|
9616
|
+
select: true,
|
|
9617
|
+
label: "Auth",
|
|
9618
|
+
size: "small",
|
|
9619
|
+
value: form.authType,
|
|
9620
|
+
onChange: (e) => setForm({ ...form, authType: e.target.value }),
|
|
9621
|
+
sx: { maxWidth: 220 },
|
|
9622
|
+
children: [
|
|
9623
|
+
/* @__PURE__ */ jsx12(MenuItem4, { value: "none", children: "None" }),
|
|
9624
|
+
/* @__PURE__ */ jsx12(MenuItem4, { value: "bearer", children: "Bearer token" }),
|
|
9625
|
+
/* @__PURE__ */ jsx12(MenuItem4, { value: "header", children: "Custom header" })
|
|
9626
|
+
]
|
|
9627
|
+
}
|
|
9628
|
+
),
|
|
9629
|
+
form.authType === "header" && /* @__PURE__ */ jsx12(
|
|
9630
|
+
TextField7,
|
|
9631
|
+
{
|
|
9632
|
+
label: "Header name",
|
|
9633
|
+
size: "small",
|
|
9634
|
+
value: form.headerName,
|
|
9635
|
+
onChange: (e) => setForm({ ...form, headerName: e.target.value }),
|
|
9636
|
+
placeholder: "X-Api-Key",
|
|
9637
|
+
fullWidth: true
|
|
9638
|
+
}
|
|
9639
|
+
),
|
|
9640
|
+
form.authType !== "none" && /* @__PURE__ */ jsx12(
|
|
9641
|
+
TextField7,
|
|
9642
|
+
{
|
|
9643
|
+
label: activeEntry?.tokenLabel ?? (form.authType === "bearer" ? "Token" : "Header value"),
|
|
9644
|
+
size: "small",
|
|
9645
|
+
type: "password",
|
|
9646
|
+
value: form.authValue,
|
|
9647
|
+
onChange: (e) => setForm({ ...form, authValue: e.target.value }),
|
|
9648
|
+
fullWidth: true
|
|
9649
|
+
}
|
|
9650
|
+
),
|
|
9651
|
+
/* @__PURE__ */ jsxs12(Box12, { sx: { display: "flex", gap: 1 }, children: [
|
|
9652
|
+
/* @__PURE__ */ jsx12(Button10, { variant: "contained", onClick: handleAdd, disabled: adding, children: adding ? "Connecting\u2026" : "Connect" }),
|
|
9653
|
+
/* @__PURE__ */ jsx12(
|
|
9654
|
+
Button10,
|
|
9655
|
+
{
|
|
9656
|
+
onClick: () => {
|
|
9657
|
+
setShowForm(false);
|
|
9658
|
+
setActiveEntry(null);
|
|
9659
|
+
setForm(emptyForm);
|
|
9660
|
+
},
|
|
9661
|
+
children: "Cancel"
|
|
9662
|
+
}
|
|
9663
|
+
)
|
|
9664
|
+
] })
|
|
9504
9665
|
] })
|
|
9505
9666
|
] }) }) }),
|
|
9667
|
+
/* @__PURE__ */ jsxs12(Box12, { sx: { display: "flex", alignItems: "center", justifyContent: "space-between", mb: 1 }, children: [
|
|
9668
|
+
/* @__PURE__ */ jsxs12(Typography11, { variant: "overline", color: "text.secondary", sx: { fontWeight: 700, letterSpacing: 0.6 }, children: [
|
|
9669
|
+
"Your connections",
|
|
9670
|
+
servers.length ? ` (${servers.length})` : ""
|
|
9671
|
+
] }),
|
|
9672
|
+
/* @__PURE__ */ jsx12(Button10, { size: "small", startIcon: /* @__PURE__ */ jsx12(AddIcon, {}), onClick: openCustom, children: "Custom server" })
|
|
9673
|
+
] }),
|
|
9506
9674
|
loading && /* @__PURE__ */ jsx12(LinearProgress5, { sx: { mb: 2 } }),
|
|
9507
|
-
/* @__PURE__ */ jsxs12(Stack5, { spacing: 1.
|
|
9508
|
-
servers.length === 0 && !loading && /* @__PURE__ */ jsx12(Typography11, { variant: "body2", color: "text.secondary", children: "
|
|
9675
|
+
/* @__PURE__ */ jsxs12(Stack5, { spacing: 1.25, children: [
|
|
9676
|
+
servers.length === 0 && !loading && /* @__PURE__ */ jsx12(Typography11, { variant: "body2", color: "text.secondary", sx: { py: 1 }, children: "Nothing connected yet \u2014 pick a tool above to get started." }),
|
|
9509
9677
|
servers.map((server) => {
|
|
9510
9678
|
const toolState = tools[server.id];
|
|
9511
|
-
return /* @__PURE__ */ jsxs12(Paper6, { variant: "outlined", sx: { p: 1.5 }, children: [
|
|
9679
|
+
return /* @__PURE__ */ jsxs12(Paper6, { variant: "outlined", sx: { p: 1.5, borderRadius: 2 }, children: [
|
|
9512
9680
|
/* @__PURE__ */ jsxs12(Box12, { sx: { display: "flex", alignItems: "center", justifyContent: "space-between", gap: 1 }, children: [
|
|
9513
9681
|
/* @__PURE__ */ jsxs12(Box12, { sx: { minWidth: 0 }, children: [
|
|
9514
9682
|
/* @__PURE__ */ jsx12(Typography11, { variant: "subtitle2", sx: { fontWeight: 700 }, children: server.name }),
|
|
@@ -9536,6 +9704,11 @@ var McpServersSection = () => {
|
|
|
9536
9704
|
toolState && !Array.isArray(toolState) && toolState !== "loading" && /* @__PURE__ */ jsx12(Alert10, { severity: "warning", sx: { mt: 1 }, children: toolState.error })
|
|
9537
9705
|
] }, server.id);
|
|
9538
9706
|
})
|
|
9707
|
+
] }),
|
|
9708
|
+
/* @__PURE__ */ jsxs12(Typography11, { variant: "caption", color: "text.secondary", sx: { display: "block", mt: 2, lineHeight: 1.5 }, children: [
|
|
9709
|
+
"Running a local server (Figma Dev Mode, Azure DevOps)? Add it as a custom server \u2014 note the cloud gateway can't reach ",
|
|
9710
|
+
/* @__PURE__ */ jsx12("code", { children: "localhost" }),
|
|
9711
|
+
", so local servers need the Bandit desktop app."
|
|
9539
9712
|
] })
|
|
9540
9713
|
] });
|
|
9541
9714
|
};
|
|
@@ -9629,85 +9802,98 @@ var MCPToolsTabV2 = () => {
|
|
|
9629
9802
|
return map;
|
|
9630
9803
|
}, [localTools]);
|
|
9631
9804
|
return /* @__PURE__ */ jsxs13(Box13, { children: [
|
|
9632
|
-
/* @__PURE__ */ jsxs13(Box13, { sx: { display: "flex", alignItems: "center", justifyContent: "space-between", mb: 2 }, children: [
|
|
9633
|
-
/* @__PURE__ */ jsx13(Typography12, { variant: "h5", sx: { fontWeight: 600, color: "primary.main" }, children: "Available Tools" }),
|
|
9634
|
-
/* @__PURE__ */ jsx13(Box13, { children: /* @__PURE__ */ jsx13(Tooltip4, { title: "Refresh", children: /* @__PURE__ */ jsx13(IconButton7, { onClick: refresh, children: /* @__PURE__ */ jsx13(RefreshIcon, {}) }) }) })
|
|
9635
|
-
] }),
|
|
9636
9805
|
/* @__PURE__ */ jsx13(McpServersSection_default, {}),
|
|
9637
|
-
|
|
9638
|
-
|
|
9639
|
-
|
|
9640
|
-
|
|
9641
|
-
|
|
9642
|
-
|
|
9643
|
-
|
|
9644
|
-
|
|
9645
|
-
|
|
9646
|
-
|
|
9647
|
-
|
|
9648
|
-
|
|
9649
|
-
),
|
|
9650
|
-
health?.timestamp && /* @__PURE__ */ jsx13(Typography12, { variant: "caption", color: "text.secondary", sx: { ml: 1 }, children: new Date(health.timestamp).toLocaleString() })
|
|
9651
|
-
] }) }),
|
|
9652
|
-
loading && /* @__PURE__ */ jsx13(Box13, { sx: { mb: 2 }, children: /* @__PURE__ */ jsx13(LinearProgress6, {}) }),
|
|
9653
|
-
error && /* @__PURE__ */ jsx13(Paper7, { sx: { p: 2, mb: 2 }, children: /* @__PURE__ */ jsx13(Typography12, { color: "error", children: error }) }),
|
|
9654
|
-
/* @__PURE__ */ jsx13(Stack6, { spacing: 2, children: tools.map((tool) => {
|
|
9655
|
-
let locallyEnabled = localEnabledMap.get(tool.id);
|
|
9656
|
-
if (locallyEnabled === void 0) {
|
|
9657
|
-
locallyEnabled = localEnabledMap.get(tool.name);
|
|
9658
|
-
}
|
|
9659
|
-
if (locallyEnabled === void 0) {
|
|
9660
|
-
const directLookup = localTools.find(
|
|
9661
|
-
(t) => t.id === tool.id || t.function.name === tool.id || t.name === tool.name
|
|
9662
|
-
);
|
|
9663
|
-
locallyEnabled = directLookup?.enabled ?? tool.isEnabled;
|
|
9664
|
-
}
|
|
9665
|
-
return /* @__PURE__ */ jsxs13(Paper7, { sx: { p: 2 }, children: [
|
|
9666
|
-
/* @__PURE__ */ jsxs13(Box13, { sx: { display: "flex", alignItems: "center", justifyContent: "space-between" }, children: [
|
|
9667
|
-
/* @__PURE__ */ jsxs13(Box13, { children: [
|
|
9668
|
-
/* @__PURE__ */ jsx13(Typography12, { variant: "h6", sx: { fontWeight: 700 }, children: tool.name }),
|
|
9669
|
-
/* @__PURE__ */ jsx13(Typography12, { variant: "body2", color: "text.secondary", sx: { mt: 0.5 }, children: tool.description })
|
|
9670
|
-
] }),
|
|
9671
|
-
/* @__PURE__ */ jsxs13(Box13, { sx: { display: "flex", alignItems: "center", gap: 1 }, children: [
|
|
9672
|
-
/* @__PURE__ */ jsx13(
|
|
9673
|
-
FormControlLabel3,
|
|
9674
|
-
{
|
|
9675
|
-
control: /* @__PURE__ */ jsx13(Switch4, { checked: !!locallyEnabled, onChange: () => {
|
|
9676
|
-
let local = localTools.find((t) => t.function.name === tool.id);
|
|
9677
|
-
if (!local) {
|
|
9678
|
-
local = localTools.find((t) => t.function.name === tool.name);
|
|
9679
|
-
}
|
|
9680
|
-
if (!local) {
|
|
9681
|
-
local = localTools.find((t) => t.id === tool.id);
|
|
9682
|
-
}
|
|
9683
|
-
if (!local) {
|
|
9684
|
-
local = localTools.find((t) => t.name === tool.name);
|
|
9685
|
-
}
|
|
9686
|
-
if (local) {
|
|
9687
|
-
toggleTool(local.id);
|
|
9688
|
-
} else {
|
|
9689
|
-
console.warn("Could not find local tool for server tool:", tool);
|
|
9690
|
-
}
|
|
9691
|
-
} }),
|
|
9692
|
-
label: locallyEnabled ? "Enabled" : "Disabled"
|
|
9806
|
+
/* @__PURE__ */ jsxs13(Box13, { sx: { mt: 4 }, children: [
|
|
9807
|
+
/* @__PURE__ */ jsxs13(Box13, { sx: { display: "flex", alignItems: "center", justifyContent: "space-between", mb: 0.5 }, children: [
|
|
9808
|
+
/* @__PURE__ */ jsx13(Typography12, { variant: "overline", color: "text.secondary", sx: { fontWeight: 700, letterSpacing: 0.6 }, children: "Built-in capabilities" }),
|
|
9809
|
+
/* @__PURE__ */ jsxs13(Box13, { sx: { display: "flex", alignItems: "center", gap: 0.75 }, children: [
|
|
9810
|
+
/* @__PURE__ */ jsx13(Tooltip4, { title: `Controller: ${health?.status || "unknown"}`, children: /* @__PURE__ */ jsx13(
|
|
9811
|
+
Box13,
|
|
9812
|
+
{
|
|
9813
|
+
sx: {
|
|
9814
|
+
width: 8,
|
|
9815
|
+
height: 8,
|
|
9816
|
+
borderRadius: "50%",
|
|
9817
|
+
bgcolor: health?.status === "healthy" ? "success.main" : health?.status === "unhealthy" ? "error.main" : "grey.500"
|
|
9693
9818
|
}
|
|
9694
|
-
|
|
9695
|
-
|
|
9696
|
-
|
|
9697
|
-
] }),
|
|
9698
|
-
!!tool.supportedParameters?.length && /* @__PURE__ */ jsxs13(Box13, { sx: { mt: 1.5 }, children: [
|
|
9699
|
-
/* @__PURE__ */ jsx13(Typography12, { variant: "caption", color: "text.secondary", children: "Supported parameters" }),
|
|
9700
|
-
/* @__PURE__ */ jsx13(Box13, { sx: { mt: 0.5, display: "flex", flexWrap: "wrap", gap: 1 }, children: tool.supportedParameters.map((p) => /* @__PURE__ */ jsx13(Chip10, { size: "small", label: p }, p)) })
|
|
9819
|
+
}
|
|
9820
|
+
) }),
|
|
9821
|
+
/* @__PURE__ */ jsx13(Tooltip4, { title: "Refresh", children: /* @__PURE__ */ jsx13(IconButton7, { size: "small", onClick: refresh, children: /* @__PURE__ */ jsx13(RefreshIcon, { fontSize: "small" }) }) })
|
|
9701
9822
|
] })
|
|
9702
|
-
] },
|
|
9703
|
-
|
|
9823
|
+
] }),
|
|
9824
|
+
/* @__PURE__ */ jsx13(Typography12, { variant: "body2", color: "text.secondary", sx: { mb: 1.5 }, children: "Things Bandit can do on its own \u2014 toggle what it\u2019s allowed to use." }),
|
|
9825
|
+
loading && /* @__PURE__ */ jsx13(LinearProgress6, { sx: { mb: 2 } }),
|
|
9826
|
+
error && /* @__PURE__ */ jsx13(Alert11, { severity: "warning", sx: { mb: 2 }, children: error }),
|
|
9827
|
+
!gatewayConfigured && /* @__PURE__ */ jsx13(Alert11, { severity: "info", sx: { mb: 2 }, children: "Using this origin for tool endpoints (no gateway URL configured)." }),
|
|
9828
|
+
/* @__PURE__ */ jsxs13(
|
|
9829
|
+
Box13,
|
|
9830
|
+
{
|
|
9831
|
+
sx: {
|
|
9832
|
+
display: "grid",
|
|
9833
|
+
gridTemplateColumns: { xs: "1fr", sm: "repeat(2, 1fr)" },
|
|
9834
|
+
gap: 1.25
|
|
9835
|
+
},
|
|
9836
|
+
children: [
|
|
9837
|
+
tools.map((tool) => {
|
|
9838
|
+
let locallyEnabled = localEnabledMap.get(tool.id);
|
|
9839
|
+
if (locallyEnabled === void 0) {
|
|
9840
|
+
locallyEnabled = localEnabledMap.get(tool.name);
|
|
9841
|
+
}
|
|
9842
|
+
if (locallyEnabled === void 0) {
|
|
9843
|
+
const directLookup = localTools.find(
|
|
9844
|
+
(t) => t.id === tool.id || t.function.name === tool.id || t.name === tool.name
|
|
9845
|
+
);
|
|
9846
|
+
locallyEnabled = directLookup?.enabled ?? tool.isEnabled;
|
|
9847
|
+
}
|
|
9848
|
+
return /* @__PURE__ */ jsxs13(
|
|
9849
|
+
Paper7,
|
|
9850
|
+
{
|
|
9851
|
+
variant: "outlined",
|
|
9852
|
+
sx: {
|
|
9853
|
+
p: 1.5,
|
|
9854
|
+
borderRadius: 2,
|
|
9855
|
+
display: "flex",
|
|
9856
|
+
alignItems: "flex-start",
|
|
9857
|
+
justifyContent: "space-between",
|
|
9858
|
+
gap: 1
|
|
9859
|
+
},
|
|
9860
|
+
children: [
|
|
9861
|
+
/* @__PURE__ */ jsxs13(Box13, { sx: { minWidth: 0 }, children: [
|
|
9862
|
+
/* @__PURE__ */ jsx13(Typography12, { variant: "subtitle2", sx: { fontWeight: 700 }, children: tool.name }),
|
|
9863
|
+
/* @__PURE__ */ jsx13(Typography12, { variant: "caption", color: "text.secondary", sx: { display: "block", lineHeight: 1.4 }, children: tool.description })
|
|
9864
|
+
] }),
|
|
9865
|
+
/* @__PURE__ */ jsx13(
|
|
9866
|
+
Switch4,
|
|
9867
|
+
{
|
|
9868
|
+
size: "small",
|
|
9869
|
+
checked: !!locallyEnabled,
|
|
9870
|
+
sx: { flexShrink: 0 },
|
|
9871
|
+
onChange: () => {
|
|
9872
|
+
let local = localTools.find((t) => t.function.name === tool.id);
|
|
9873
|
+
if (!local) local = localTools.find((t) => t.function.name === tool.name);
|
|
9874
|
+
if (!local) local = localTools.find((t) => t.id === tool.id);
|
|
9875
|
+
if (!local) local = localTools.find((t) => t.name === tool.name);
|
|
9876
|
+
if (local) toggleTool(local.id);
|
|
9877
|
+
}
|
|
9878
|
+
}
|
|
9879
|
+
)
|
|
9880
|
+
]
|
|
9881
|
+
},
|
|
9882
|
+
tool.id
|
|
9883
|
+
);
|
|
9884
|
+
}),
|
|
9885
|
+
!loading && tools.length === 0 && /* @__PURE__ */ jsx13(Typography12, { variant: "body2", color: "text.secondary", children: "No built-in tools reported." })
|
|
9886
|
+
]
|
|
9887
|
+
}
|
|
9888
|
+
)
|
|
9889
|
+
] })
|
|
9704
9890
|
] });
|
|
9705
9891
|
};
|
|
9706
9892
|
var MCPToolsTabV2_default = MCPToolsTabV2;
|
|
9707
9893
|
|
|
9708
9894
|
// src/management/management.tsx
|
|
9709
9895
|
import { jsx as jsx14, jsxs as jsxs14 } from "react/jsx-runtime";
|
|
9710
|
-
var preloadChatPage = () => import("./chat-
|
|
9896
|
+
var preloadChatPage = () => import("./chat-JDAI4UHT.mjs");
|
|
9711
9897
|
var buildCapabilitiesUrl = (gatewayApiUrl) => {
|
|
9712
9898
|
const trimmed = gatewayApiUrl.replace(/\/$/, "");
|
|
9713
9899
|
if (trimmed.endsWith("/api")) {
|
|
@@ -10483,8 +10669,8 @@ var Management = () => {
|
|
|
10483
10669
|
MuiCardContent: {
|
|
10484
10670
|
styleOverrides: {
|
|
10485
10671
|
root: {
|
|
10486
|
-
padding:
|
|
10487
|
-
"&:last-child": { paddingBottom:
|
|
10672
|
+
padding: 12,
|
|
10673
|
+
"&:last-child": { paddingBottom: 12 }
|
|
10488
10674
|
}
|
|
10489
10675
|
}
|
|
10490
10676
|
},
|
|
@@ -11073,4 +11259,4 @@ export {
|
|
|
11073
11259
|
useGatewayMemory,
|
|
11074
11260
|
management_default
|
|
11075
11261
|
};
|
|
11076
|
-
//# sourceMappingURL=chunk-
|
|
11262
|
+
//# sourceMappingURL=chunk-Q6QQZXRR.mjs.map
|