@shuffleio/shuffle-mcps 0.0.18 → 0.0.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/index.js CHANGED
@@ -448,14 +448,31 @@ __export(index_exports, {
448
448
  useSyncHostBaseUrl: () => useSyncHostBaseUrl
449
449
  });
450
450
  module.exports = __toCommonJS(index_exports);
451
- var import_shuffle_mcp2 = require("./shuffle-mcp-CN72CJJQ.css");
451
+ var import_shuffle_mcp2 = require("./shuffle-mcp-ER33P3W2.css");
452
452
  var import_react20 = __toESM(require("react"));
453
453
 
454
454
  // ShuffleMcpThemeProvider.tsx
455
455
  var import_react = __toESM(require("react"));
456
456
  var import_material = require("@mui/material");
457
457
  var import_jsx_runtime = require("react/jsx-runtime");
458
- var componentOverrides = {
458
+ var readHtmlDarkClass = () => {
459
+ if (typeof document === "undefined") return false;
460
+ return document.documentElement.classList.contains("dark");
461
+ };
462
+ var useHtmlDarkClass = (enabled) => {
463
+ const [isDark, setIsDark] = import_react.default.useState(() => enabled ? readHtmlDarkClass() : false);
464
+ import_react.default.useEffect(() => {
465
+ if (!enabled || typeof document === "undefined") return;
466
+ setIsDark(readHtmlDarkClass());
467
+ const observer = new MutationObserver(() => setIsDark(readHtmlDarkClass()));
468
+ observer.observe(document.documentElement, { attributes: true, attributeFilter: ["class"] });
469
+ return () => observer.disconnect();
470
+ }, [enabled]);
471
+ return isDark;
472
+ };
473
+ var ShuffleMcpThemeContext = import_react.default.createContext(null);
474
+ var useShuffleMcpTheme = () => import_react.default.useContext(ShuffleMcpThemeContext);
475
+ var buildComponentOverrides = (scopeClassName) => ({
459
476
  MuiTextField: { defaultProps: { size: "small" } },
460
477
  MuiButton: { defaultProps: { size: "small" } },
461
478
  MuiFormControl: { defaultProps: { size: "small" } },
@@ -497,7 +514,15 @@ var componentOverrides = {
497
514
  }
498
515
  }
499
516
  },
517
+ // ---- Portaled surfaces: stamp scopeClassName so HSL tokens resolve ----
518
+ MuiDrawer: {
519
+ defaultProps: { slotProps: { paper: { className: scopeClassName } } }
520
+ },
521
+ MuiDialog: {
522
+ defaultProps: { slotProps: { paper: { className: scopeClassName } } }
523
+ },
500
524
  MuiMenu: {
525
+ defaultProps: { slotProps: { paper: { className: scopeClassName } } },
501
526
  styleOverrides: {
502
527
  paper: {
503
528
  backgroundColor: "hsl(var(--popover))",
@@ -507,6 +532,7 @@ var componentOverrides = {
507
532
  }
508
533
  },
509
534
  MuiPopover: {
535
+ defaultProps: { slotProps: { paper: { className: scopeClassName } } },
510
536
  styleOverrides: {
511
537
  paper: {
512
538
  backgroundColor: "hsl(var(--popover))",
@@ -515,32 +541,23 @@ var componentOverrides = {
515
541
  }
516
542
  }
517
543
  },
544
+ MuiTooltip: {
545
+ defaultProps: { slotProps: { tooltip: { className: scopeClassName } } }
546
+ },
518
547
  MuiDivider: {
519
548
  styleOverrides: { root: { borderColor: "hsl(var(--border))" } }
520
549
  }
521
- };
522
- var readHtmlDarkClass = () => {
523
- if (typeof document === "undefined") return false;
524
- return document.documentElement.classList.contains("dark");
525
- };
526
- var useHtmlDarkClass = (enabled) => {
527
- const [isDark, setIsDark] = import_react.default.useState(() => enabled ? readHtmlDarkClass() : false);
528
- import_react.default.useEffect(() => {
529
- if (!enabled || typeof document === "undefined") return;
530
- setIsDark(readHtmlDarkClass());
531
- const observer = new MutationObserver(() => setIsDark(readHtmlDarkClass()));
532
- observer.observe(document.documentElement, { attributes: true, attributeFilter: ["class"] });
533
- return () => observer.disconnect();
534
- }, [enabled]);
535
- return isDark;
536
- };
550
+ });
537
551
  var ShuffleMcpThemeProvider = ({
538
552
  children,
539
- mode = "dark"
553
+ mode = "auto"
540
554
  }) => {
541
555
  const parent = (0, import_material.useTheme)();
556
+ const parentCtx = useShuffleMcpTheme();
542
557
  const htmlIsDark = useHtmlDarkClass(mode === "auto");
543
558
  const effectiveDark = mode === "auto" ? htmlIsDark : mode === "dark";
559
+ const sameAsParent = parentCtx !== null && parentCtx.isDark === effectiveDark;
560
+ const scopeClassName = effectiveDark ? "shuffle-mcp-scope dark" : "shuffle-mcp-scope";
544
561
  const merged = import_react.default.useMemo(
545
562
  () => (0, import_material.createTheme)({
546
563
  ...parent,
@@ -550,25 +567,27 @@ var ShuffleMcpThemeProvider = ({
550
567
  },
551
568
  components: {
552
569
  ...parent.components,
553
- ...componentOverrides
570
+ ...buildComponentOverrides(scopeClassName)
554
571
  }
555
572
  }),
556
- [parent, effectiveDark]
573
+ [parent, effectiveDark, scopeClassName]
574
+ );
575
+ const ctxValue = import_react.default.useMemo(
576
+ () => ({ mode, isDark: effectiveDark, scopeClassName }),
577
+ [mode, effectiveDark, scopeClassName]
557
578
  );
558
- const tree = /* @__PURE__ */ (0, import_jsx_runtime.jsx)(import_material.ThemeProvider, { theme: merged, children });
559
- const scopeClassName = mode === "light" ? "shuffle-mcp-scope" : "shuffle-mcp-scope dark";
560
- if (mode === "light" || mode === "dark") {
561
- return /* @__PURE__ */ (0, import_jsx_runtime.jsx)("div", { className: scopeClassName, "data-shuffle-mode": mode, "data-shuffle-mcp-root": true, children: tree });
579
+ if (sameAsParent) {
580
+ return /* @__PURE__ */ (0, import_jsx_runtime.jsx)(ShuffleMcpThemeContext.Provider, { value: ctxValue, children });
562
581
  }
563
- return /* @__PURE__ */ (0, import_jsx_runtime.jsx)("div", { className: "shuffle-mcp-scope", "data-shuffle-mode": "auto", "data-shuffle-mcp-root": true, children: tree });
582
+ return /* @__PURE__ */ (0, import_jsx_runtime.jsx)(ShuffleMcpThemeContext.Provider, { value: ctxValue, children: /* @__PURE__ */ (0, import_jsx_runtime.jsx)(import_material.ThemeProvider, { theme: merged, children: /* @__PURE__ */ (0, import_jsx_runtime.jsx)("div", { className: scopeClassName, "data-shuffle-mode": mode, "data-shuffle-mcp-root": true, children }) }) });
564
583
  };
565
584
 
566
- // ShuffleMCP.tsx
585
+ // views/ShuffleMCP.tsx
567
586
  var import_react12 = __toESM(require("react"));
568
587
  var import_algoliasearch = require("algoliasearch");
569
588
  var import_material10 = require("@mui/material");
570
589
 
571
- // AppDetailDrawer.tsx
590
+ // views/AppDetailDrawer.tsx
572
591
  var import_react10 = require("react");
573
592
 
574
593
  // toast.ts
@@ -593,7 +612,7 @@ base.info = (msg, opts) => _impl({ title: msg, description: opts?.description, v
593
612
  base.warning = (msg, opts) => _impl({ title: msg, description: opts?.description, variant: "warning" }, opts);
594
613
  var toast = base;
595
614
 
596
- // AppDetailDrawer.tsx
615
+ // views/AppDetailDrawer.tsx
597
616
  var import_lucide_react6 = require("lucide-react");
598
617
 
599
618
  // datastore.ts
@@ -1030,7 +1049,7 @@ var DATASTORE_CATEGORIES = {
1030
1049
  LEGACY_CASES: "shuffle-security_cases"
1031
1050
  };
1032
1051
 
1033
- // AppDetailDrawer.tsx
1052
+ // views/AppDetailDrawer.tsx
1034
1053
  var import_material9 = require("@mui/material");
1035
1054
  var import_react_markdown3 = __toESM(require("react-markdown"));
1036
1055
  var import_remark_gfm3 = __toESM(require("remark-gfm"));
@@ -1040,7 +1059,7 @@ var import_framer_motion6 = require("framer-motion");
1040
1059
  var import_react4 = require("react");
1041
1060
  init_api();
1042
1061
 
1043
- // IntegrationStatus.tsx
1062
+ // components/IntegrationStatus.tsx
1044
1063
  var import_react3 = require("react");
1045
1064
  var import_lucide_react = require("lucide-react");
1046
1065
  var import_material2 = require("@mui/material");
@@ -1096,7 +1115,7 @@ var fetchAuthenticatedApps = (crossOrgId) => {
1096
1115
  return promise;
1097
1116
  };
1098
1117
 
1099
- // IntegrationStatus.tsx
1118
+ // components/IntegrationStatus.tsx
1100
1119
  init_appsCache();
1101
1120
 
1102
1121
  // auth-utils.ts
@@ -1319,7 +1338,7 @@ function extractValidatedIngestionApps(authApiResponse, workflowAppNames) {
1319
1338
  return apps;
1320
1339
  }
1321
1340
 
1322
- // IntegrationStatus.tsx
1341
+ // components/IntegrationStatus.tsx
1323
1342
  var import_jsx_runtime3 = require("react/jsx-runtime");
1324
1343
  var ONBOARDING_CONFIG_CATEGORY = "shuffle-security_onboarding";
1325
1344
  var SELECTED_TOOLS_KEY = "selected_tools";
@@ -1969,11 +1988,11 @@ function useAppAuth() {
1969
1988
  };
1970
1989
  }
1971
1990
 
1972
- // AppDetailDrawer.tsx
1991
+ // views/AppDetailDrawer.tsx
1973
1992
  init_api();
1974
1993
  init_appsCache();
1975
1994
 
1976
- // AppTitleHeader.tsx
1995
+ // components/AppTitleHeader.tsx
1977
1996
  var import_material3 = require("@mui/material");
1978
1997
  var import_lucide_react2 = require("lucide-react");
1979
1998
  var import_framer_motion = require("framer-motion");
@@ -2101,17 +2120,17 @@ function AppTitleHeader({
2101
2120
  ) });
2102
2121
  }
2103
2122
 
2104
- // AppAuthSection.tsx
2123
+ // components/AppAuthSection.tsx
2105
2124
  var import_material5 = require("@mui/material");
2106
2125
  var import_framer_motion3 = require("framer-motion");
2107
2126
 
2108
- // AppAuthConfig.tsx
2127
+ // components/AppAuthConfig.tsx
2109
2128
  var import_react6 = require("react");
2110
2129
  var import_lucide_react3 = require("lucide-react");
2111
2130
  var import_material4 = require("@mui/material");
2112
2131
  var import_framer_motion2 = require("framer-motion");
2113
2132
 
2114
- // AppFallbackIcon.tsx
2133
+ // components/AppFallbackIcon.tsx
2115
2134
  var import_react5 = require("react");
2116
2135
  var import_jsx_runtime5 = require("react/jsx-runtime");
2117
2136
  var norm = (s) => s.toLowerCase().replace(/[\s_\-]+/g, "_");
@@ -2257,7 +2276,7 @@ var AppFallbackIcon = ({
2257
2276
  );
2258
2277
  };
2259
2278
 
2260
- // AppAuthConfig.tsx
2279
+ // components/AppAuthConfig.tsx
2261
2280
  init_api();
2262
2281
  var import_react_markdown = __toESM(require("react-markdown"));
2263
2282
  var import_remark_gfm = __toESM(require("remark-gfm"));
@@ -4114,7 +4133,7 @@ var AppAuthConfig = ({
4114
4133
  ] });
4115
4134
  };
4116
4135
 
4117
- // AppAuthSection.tsx
4136
+ // components/AppAuthSection.tsx
4118
4137
  var import_jsx_runtime7 = require("react/jsx-runtime");
4119
4138
  function AppAuthSection({
4120
4139
  displayName,
@@ -4151,11 +4170,11 @@ function AppAuthSection({
4151
4170
  ] }) });
4152
4171
  }
4153
4172
 
4154
- // TryMcpSection.tsx
4173
+ // views/TryMcpSection.tsx
4155
4174
  var import_material7 = require("@mui/material");
4156
4175
  var import_framer_motion5 = require("framer-motion");
4157
4176
 
4158
- // AppMcpChat.tsx
4177
+ // views/AppMcpChat.tsx
4159
4178
  var import_react7 = require("react");
4160
4179
  var import_lucide_react4 = require("lucide-react");
4161
4180
  var import_material6 = require("@mui/material");
@@ -4163,7 +4182,7 @@ var import_material6 = require("@mui/material");
4163
4182
  // ../assets/singul-agent-icon.png
4164
4183
  var singul_agent_icon_default = "data:image/png;base64,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";
4165
4184
 
4166
- // AgentIcon.tsx
4185
+ // components/AgentIcon.tsx
4167
4186
  var import_jsx_runtime8 = require("react/jsx-runtime");
4168
4187
  var AgentIcon = ({ size = 16, className, style }) => /* @__PURE__ */ (0, import_jsx_runtime8.jsx)(
4169
4188
  "img",
@@ -4178,7 +4197,7 @@ var AgentIcon = ({ size = 16, className, style }) => /* @__PURE__ */ (0, import_
4178
4197
  );
4179
4198
  var AgentIcon_default = AgentIcon;
4180
4199
 
4181
- // AppMcpChat.tsx
4200
+ // views/AppMcpChat.tsx
4182
4201
  var import_framer_motion4 = require("framer-motion");
4183
4202
  var import_react_markdown2 = __toESM(require("react-markdown"));
4184
4203
  var import_remark_gfm2 = __toESM(require("remark-gfm"));
@@ -4753,7 +4772,7 @@ ${JSON.stringify(data, null, 2)}
4753
4772
  };
4754
4773
  var AppMcpChat_default = AppMcpChat;
4755
4774
 
4756
- // TryMcpSection.tsx
4775
+ // views/TryMcpSection.tsx
4757
4776
  var import_jsx_runtime10 = require("react/jsx-runtime");
4758
4777
  function TryMcpSection({ appName, appIcon, appId, categories }) {
4759
4778
  return /* @__PURE__ */ (0, import_jsx_runtime10.jsx)(import_framer_motion5.motion.div, { initial: { opacity: 0, y: 12 }, animate: { opacity: 1, y: 0 }, transition: { duration: 0.3, delay: 0.15 }, children: /* @__PURE__ */ (0, import_jsx_runtime10.jsxs)(import_material7.Box, { sx: { mt: 5, mb: 3 }, children: [
@@ -4770,7 +4789,7 @@ function TryMcpSection({ appName, appIcon, appId, categories }) {
4770
4789
  ] }) });
4771
4790
  }
4772
4791
 
4773
- // SingulActionsPreview.tsx
4792
+ // components/SingulActionsPreview.tsx
4774
4793
  var import_react8 = require("react");
4775
4794
  var import_material8 = require("@mui/material");
4776
4795
  var import_lucide_react5 = require("lucide-react");
@@ -5570,7 +5589,7 @@ var SingulActionsPreview = ({
5570
5589
  };
5571
5590
  var SingulActionsPreview_default = SingulActionsPreview;
5572
5591
 
5573
- // AppDetailDrawer.tsx
5592
+ // views/AppDetailDrawer.tsx
5574
5593
  var import_jsx_runtime12 = require("react/jsx-runtime");
5575
5594
  function AppDetailDrawer({
5576
5595
  open,
@@ -5942,11 +5961,11 @@ function AppDetailDrawer({
5942
5961
  );
5943
5962
  }
5944
5963
 
5945
- // ShuffleMCP.tsx
5946
- var import_shuffle_mcp = require("./shuffle-mcp-CN72CJJQ.css");
5964
+ // views/ShuffleMCP.tsx
5965
+ var import_shuffle_mcp = require("./shuffle-mcp-ER33P3W2.css");
5947
5966
  init_appsCache();
5948
5967
 
5949
- // SegmentedControl.tsx
5968
+ // components/SegmentedControl.tsx
5950
5969
  var React2 = __toESM(require("react"));
5951
5970
  var import_framer_motion7 = require("framer-motion");
5952
5971
  var import_jsx_runtime13 = require("react/jsx-runtime");
@@ -6153,7 +6172,7 @@ var useSyncHostBaseUrl = (globalUrl) => {
6153
6172
  }, [globalUrl]);
6154
6173
  };
6155
6174
 
6156
- // ShuffleMCP.tsx
6175
+ // views/ShuffleMCP.tsx
6157
6176
  var import_jsx_runtime14 = require("react/jsx-runtime");
6158
6177
  var DEFAULT_ALGOLIA_APP_ID = "JNSS5CFDZZ";
6159
6178
  var DEFAULT_ALGOLIA_API_KEY = "33e4e3564f4f060e96e0531957bed552";
@@ -6692,7 +6711,7 @@ var ShuffleMCP = import_react12.default.forwardRef(({
6692
6711
  });
6693
6712
  ShuffleMCP.displayName = "ShuffleMCP";
6694
6713
 
6695
- // AppSearchDrawer.tsx
6714
+ // views/AppSearchDrawer.tsx
6696
6715
  var import_react13 = require("react");
6697
6716
  var import_lucide_react7 = require("lucide-react");
6698
6717
  var import_material11 = require("@mui/material");
@@ -7102,7 +7121,7 @@ function AppSearchDrawer({
7102
7121
  ] });
7103
7122
  }
7104
7123
 
7105
- // AiAgentPromptsEditor.tsx
7124
+ // components/AiAgentPromptsEditor.tsx
7106
7125
  var import_material12 = require("@mui/material");
7107
7126
  var import_lucide_react8 = require("lucide-react");
7108
7127
  var import_jsx_runtime16 = require("react/jsx-runtime");
@@ -7295,13 +7314,13 @@ var AiAgentPromptsEditor = ({
7295
7314
  };
7296
7315
  var AiAgentPromptsEditor_default = AiAgentPromptsEditor;
7297
7316
 
7298
- // ShufflePipelinesBanner.tsx
7317
+ // components/ShufflePipelinesBanner.tsx
7299
7318
  var import_material13 = require("@mui/material");
7300
7319
 
7301
7320
  // ../assets/shuffle-icon.png
7302
7321
  var shuffle_icon_default = "data:image/png;base64,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";
7303
7322
 
7304
- // ShufflePipelinesBanner.tsx
7323
+ // components/ShufflePipelinesBanner.tsx
7305
7324
  var import_jsx_runtime17 = require("react/jsx-runtime");
7306
7325
  function ShufflePipelinesBanner() {
7307
7326
  return /* @__PURE__ */ (0, import_jsx_runtime17.jsxs)(
@@ -7362,7 +7381,7 @@ function ShufflePipelinesBanner() {
7362
7381
  }
7363
7382
  var ShufflePipelinesBanner_default = ShufflePipelinesBanner;
7364
7383
 
7365
- // AgentUI.tsx
7384
+ // components/AgentUI.tsx
7366
7385
  var import_react15 = require("react");
7367
7386
  var import_lucide_react11 = require("lucide-react");
7368
7387
  var import_react_router_dom2 = require("react-router-dom");
@@ -7928,11 +7947,11 @@ var parseScheduleHint = (input) => {
7928
7947
  return null;
7929
7948
  };
7930
7949
 
7931
- // AgentRunDiagnosisBanner.tsx
7950
+ // components/AgentRunDiagnosisBanner.tsx
7932
7951
  var import_material15 = require("@mui/material");
7933
7952
  var import_lucide_react10 = require("lucide-react");
7934
7953
 
7935
- // AgentDiagnosisCtas.tsx
7954
+ // components/AgentDiagnosisCtas.tsx
7936
7955
  var import_material14 = require("@mui/material");
7937
7956
  var import_lucide_react9 = require("lucide-react");
7938
7957
  var import_jsx_runtime18 = require("react/jsx-runtime");
@@ -8006,7 +8025,7 @@ var AgentDiagnosisCtas = ({ diagnosis, compact = false, tone = "medium" }) => {
8006
8025
  };
8007
8026
  var AgentDiagnosisCtas_default = AgentDiagnosisCtas;
8008
8027
 
8009
- // AgentRunDiagnosisBanner.tsx
8028
+ // components/AgentRunDiagnosisBanner.tsx
8010
8029
  var import_react14 = require("react");
8011
8030
 
8012
8031
  // agentDiagnosis.ts
@@ -8365,7 +8384,7 @@ var diagnoseOutputWarning = (run) => {
8365
8384
  return null;
8366
8385
  };
8367
8386
 
8368
- // AgentRunDiagnosisBanner.tsx
8387
+ // components/AgentRunDiagnosisBanner.tsx
8369
8388
  var import_jsx_runtime19 = require("react/jsx-runtime");
8370
8389
  var DISMISS_PREFIX = "agent-diagnosis-dismissed::";
8371
8390
  var readDismissed = (key) => {
@@ -8521,7 +8540,7 @@ var AgentRunDiagnosisBanner = ({ run, sx, onJumpToEvidence, executionId }) => {
8521
8540
  };
8522
8541
  var AgentRunDiagnosisBanner_default = AgentRunDiagnosisBanner;
8523
8542
 
8524
- // AgentUI.tsx
8543
+ // components/AgentUI.tsx
8525
8544
  var import_jsx_runtime20 = require("react/jsx-runtime");
8526
8545
  var normalizeMarkdown = (raw) => {
8527
8546
  if (raw == null) return "";
@@ -11684,7 +11703,7 @@ var AgentUI = ({
11684
11703
  };
11685
11704
  var AgentUI_default = AgentUI;
11686
11705
 
11687
- // AgentRunDrawer.tsx
11706
+ // components/AgentRunDrawer.tsx
11688
11707
  var import_react16 = require("react");
11689
11708
  var import_material17 = require("@mui/material");
11690
11709
  var import_lucide_react12 = require("lucide-react");
@@ -11876,7 +11895,7 @@ var AgentRunDrawer = ({
11876
11895
  };
11877
11896
  var AgentRunDrawer_default = AgentRunDrawer;
11878
11897
 
11879
- // AgentActivityList.tsx
11898
+ // components/AgentActivityList.tsx
11880
11899
  var import_react17 = require("react");
11881
11900
  var import_material18 = require("@mui/material");
11882
11901
  var import_lucide_react13 = require("lucide-react");
@@ -12031,7 +12050,7 @@ var stopAgentSchedule = async (workflowId, params = {}) => {
12031
12050
  if (!res.ok) throw new Error(`Failed to stop schedule: ${res.statusText}`);
12032
12051
  };
12033
12052
 
12034
- // AgentActivityList.tsx
12053
+ // components/AgentActivityList.tsx
12035
12054
  var import_lucide_react14 = require("lucide-react");
12036
12055
  var import_jsx_runtime22 = require("react/jsx-runtime");
12037
12056
  var STATUS_CONFIG = {
@@ -12647,7 +12666,7 @@ var AgentActivityList = ({
12647
12666
  };
12648
12667
  var AgentActivityList_default = AgentActivityList;
12649
12668
 
12650
- // AgentExecutionDrawer.tsx
12669
+ // components/AgentExecutionDrawer.tsx
12651
12670
  var import_material19 = require("@mui/material");
12652
12671
  var import_lucide_react15 = require("lucide-react");
12653
12672
  var import_jsx_runtime23 = require("react/jsx-runtime");
@@ -12824,11 +12843,23 @@ var AgentExecutionDrawer = ({
12824
12843
  };
12825
12844
  var AgentExecutionDrawer_default = AgentExecutionDrawer;
12826
12845
 
12827
- // AgentsView.tsx
12846
+ // views/AgentsView.tsx
12828
12847
  var import_react18 = require("react");
12829
12848
  var import_material20 = require("@mui/material");
12830
12849
  var import_jsx_runtime24 = require("react/jsx-runtime");
12831
- var AgentsView = ({ onSchedule, maxWidth = 820, onChooseLLM, hideChooseLLM, globalUrl, isLoaded, isLoggedIn, userdata, serverside }) => {
12850
+ var AgentsView = ({
12851
+ onSchedule,
12852
+ maxWidth = 820,
12853
+ onChooseLLM,
12854
+ hideChooseLLM,
12855
+ localLLMSlot,
12856
+ permissionsSlot,
12857
+ globalUrl,
12858
+ isLoaded,
12859
+ isLoggedIn,
12860
+ userdata,
12861
+ serverside
12862
+ }) => {
12832
12863
  useSyncHostBaseUrl(globalUrl);
12833
12864
  const [selectedRun, setSelectedRun] = (0, import_react18.useState)(null);
12834
12865
  const [agentView, setAgentView] = (0, import_react18.useState)("start");
@@ -12838,6 +12869,33 @@ var AgentsView = ({ onSchedule, maxWidth = 820, onChooseLLM, hideChooseLLM, glob
12838
12869
  key: 0
12839
12870
  });
12840
12871
  const [editing, setEditing] = (0, import_react18.useState)(null);
12872
+ const [builtInDrawer, setBuiltInDrawer] = (0, import_react18.useState)({
12873
+ open: false,
12874
+ tab: "localLLM"
12875
+ });
12876
+ const effectiveLocalLLMSlot = (0, import_react18.useMemo)(
12877
+ () => localLLMSlot ?? /* @__PURE__ */ (0, import_jsx_runtime24.jsxs)(import_material20.Box, { sx: { p: 3, color: "hsl(var(--muted-foreground))", fontSize: "0.85rem", lineHeight: 1.6 }, children: [
12878
+ /* @__PURE__ */ (0, import_jsx_runtime24.jsx)(import_material20.Typography, { sx: { fontSize: "0.95rem", fontWeight: 600, color: "hsl(var(--foreground))", mb: 1 }, children: "Local LLM not configured" }),
12879
+ "This host hasn't wired a Local LLM picker yet. Pass an",
12880
+ " ",
12881
+ /* @__PURE__ */ (0, import_jsx_runtime24.jsx)("code", { style: { fontFamily: "monospace" }, children: "onChooseLLM" }),
12882
+ " handler or a",
12883
+ " ",
12884
+ /* @__PURE__ */ (0, import_jsx_runtime24.jsx)("code", { style: { fontFamily: "monospace" }, children: "localLLMSlot" }),
12885
+ " to",
12886
+ " ",
12887
+ /* @__PURE__ */ (0, import_jsx_runtime24.jsx)("code", { style: { fontFamily: "monospace" }, children: "<AgentsView />" }),
12888
+ " to render your own configuration UI here."
12889
+ ] }),
12890
+ [localLLMSlot]
12891
+ );
12892
+ const handleChooseLLM = (0, import_react18.useCallback)(() => {
12893
+ if (onChooseLLM) {
12894
+ onChooseLLM();
12895
+ return;
12896
+ }
12897
+ setBuiltInDrawer({ open: true, tab: "localLLM" });
12898
+ }, [onChooseLLM]);
12841
12899
  const handleEditWorkflow = (0, import_react18.useCallback)(
12842
12900
  ({ workflowId, name, prompt, apps }) => {
12843
12901
  setEditing({ workflowId, name });
@@ -12918,7 +12976,7 @@ var AgentsView = ({ onSchedule, maxWidth = 820, onChooseLLM, hideChooseLLM, glob
12918
12976
  apiBaseUrl: globalUrl,
12919
12977
  onViewChange: setAgentView,
12920
12978
  onSchedule,
12921
- onChooseLLM,
12979
+ onChooseLLM: handleChooseLLM,
12922
12980
  hideChooseLLM,
12923
12981
  defaultInput: prefill.input,
12924
12982
  defaultApps: prefill.apps.length > 0 ? prefill.apps : void 0,
@@ -12948,6 +13006,18 @@ var AgentsView = ({ onSchedule, maxWidth = 820, onChooseLLM, hideChooseLLM, glob
12948
13006
  apiBaseUrl: globalUrl,
12949
13007
  onSchedule
12950
13008
  }
13009
+ ),
13010
+ /* @__PURE__ */ (0, import_jsx_runtime24.jsx)(
13011
+ AgentRunDrawer_default,
13012
+ {
13013
+ open: builtInDrawer.open,
13014
+ onClose: () => setBuiltInDrawer((s) => ({ ...s, open: false })),
13015
+ initialTab: builtInDrawer.tab,
13016
+ globalUrl,
13017
+ localLLMSlot: effectiveLocalLLMSlot,
13018
+ permissionsSlot,
13019
+ agentUIProps: { onSchedule, apiBaseUrl: globalUrl }
13020
+ }
12951
13021
  )
12952
13022
  ] });
12953
13023
  };
@@ -13099,7 +13169,7 @@ init_api();
13099
13169
  init_fetchBreaker();
13100
13170
  init_appsCache();
13101
13171
 
13102
- // UsageBar.tsx
13172
+ // components/UsageBar.tsx
13103
13173
  var import_material21 = require("@mui/material");
13104
13174
  var import_jsx_runtime25 = require("react/jsx-runtime");
13105
13175
  var fmt = (n) => n.toLocaleString();
@@ -13180,10 +13250,15 @@ var UsageBar = ({
13180
13250
  };
13181
13251
 
13182
13252
  // index.ts
13253
+ var resolveMode = (theme, colorMode) => {
13254
+ if (theme === "light" || theme === "dark") return theme;
13255
+ if (theme === "system") return "auto";
13256
+ return colorMode ?? "auto";
13257
+ };
13183
13258
  var withMcpTheme = (Inner, displayName) => {
13184
- const Wrapped = ({ colorMode, ...rest }) => import_react20.default.createElement(
13259
+ const Wrapped = ({ theme, colorMode, ...rest }) => import_react20.default.createElement(
13185
13260
  ShuffleMcpThemeProvider,
13186
- { mode: colorMode },
13261
+ { mode: resolveMode(theme, colorMode) },
13187
13262
  import_react20.default.createElement(Inner, { ...rest })
13188
13263
  );
13189
13264
  Wrapped.displayName = `ShuffleMCPs(${displayName})`;
@@ -13191,9 +13266,9 @@ var withMcpTheme = (Inner, displayName) => {
13191
13266
  };
13192
13267
  var withMcpThemeRef = (Inner, displayName) => {
13193
13268
  const Wrapped = import_react20.default.forwardRef(
13194
- ({ colorMode, ...rest }, ref) => import_react20.default.createElement(
13269
+ ({ theme, colorMode, ...rest }, ref) => import_react20.default.createElement(
13195
13270
  ShuffleMcpThemeProvider,
13196
- { mode: colorMode },
13271
+ { mode: resolveMode(theme, colorMode) },
13197
13272
  import_react20.default.createElement(Inner, { ...rest, ref })
13198
13273
  )
13199
13274
  );