MCPcopy Create free account
hub / github.com/UsefulSoftwareCo/executor / ToolkitWorkspace

Function ToolkitWorkspace

packages/plugins/toolkits/src/page.tsx:1030–1178  ·  view source on GitHub ↗
(props: {
  toolkit: ToolkitResponse;
  showOwnerLabels: boolean;
  policies: readonly ToolkitPolicyResponse[];
  connections: readonly ToolkitConnectionResponse[];
  tools: readonly ToolRow[];
  integrations: readonly Integration[];
  integrationPlugins: readonly IntegrationPlugin[];
  mcpUrl: string;
  onBack: () => void;
  onRemoveToolkit: () => void;
  onAddConnection: (pattern: string) => Promise<void> | void;
  onRemoveConnection: (connectionId: string) => Promise<void> | void;
  onSetPolicy: (pattern: string, action: ToolPolicyAction) => Promise<void> | void;
  onClearPolicy: (pattern: string) => Promise<void> | void;
})

Source from the content-addressed store, hash-verified

1028}
1029
1030function ToolkitWorkspace(props: {
1031 toolkit: ToolkitResponse;
1032 showOwnerLabels: boolean;
1033 policies: readonly ToolkitPolicyResponse[];
1034 connections: readonly ToolkitConnectionResponse[];
1035 tools: readonly ToolRow[];
1036 integrations: readonly Integration[];
1037 integrationPlugins: readonly IntegrationPlugin[];
1038 mcpUrl: string;
1039 onBack: () => void;
1040 onRemoveToolkit: () => void;
1041 onAddConnection: (pattern: string) => Promise<void> | void;
1042 onRemoveConnection: (connectionId: string) => Promise<void> | void;
1043 onSetPolicy: (pattern: string, action: ToolPolicyAction) => Promise<void> | void;
1044 onClearPolicy: (pattern: string) => Promise<void> | void;
1045}) {
1046 const [addOpen, setAddOpen] = useState(false);
1047 const [selectedToolId, setSelectedToolId] = useState<string | null>(null);
1048 const visibleTools = useMemo(
1049 () => props.tools.filter((tool) => toolCanAppearInToolkit(props.toolkit, tool)),
1050 [props.toolkit, props.tools],
1051 );
1052 const connectionGroups = useMemo(() => buildConnectionGroups(visibleTools), [visibleTools]);
1053 const hiddenPersonalConnectionCount = useMemo(() => {
1054 if (props.toolkit.owner !== "org") return 0;
1055 return buildConnectionGroups(props.tools.filter((tool) => toolOwner(tool) === "user")).length;
1056 }, [props.toolkit.owner, props.tools]);
1057 const configuredConnections = useMemo(
1058 () =>
1059 configuredConnectionViews(
1060 props.connections,
1061 connectionGroups,
1062 props.integrations,
1063 props.integrationPlugins,
1064 props.showOwnerLabels,
1065 ),
1066 [
1067 connectionGroups,
1068 props.connections,
1069 props.integrationPlugins,
1070 props.integrations,
1071 props.showOwnerLabels,
1072 ],
1073 );
1074 const legacyPolicyIds = useMemo(
1075 () => legacyConnectionPolicyIds(props.policies, connectionGroups, props.connections),
1076 [connectionGroups, props.connections, props.policies],
1077 );
1078 const accessPolicies = useMemo(
1079 () => props.policies.filter((policy) => !legacyPolicyIds.has(policy.id)),
1080 [legacyPolicyIds, props.policies],
1081 );
1082 const connectionPatterns = useMemo(
1083 () => configuredConnectionPatterns(props.connections, props.policies, legacyPolicyIds),
1084 [legacyPolicyIds, props.connections, props.policies],
1085 );
1086 const configuredToolIds = useMemo(() => {
1087 const ids = new Set<string>();

Callers

nothing calls this directly

Calls 10

toolCanAppearInToolkitFunction · 0.85
buildConnectionGroupsFunction · 0.85
toolOwnerFunction · 0.85
toolMatchIdFunction · 0.85
toolConnectionNameFunction · 0.85
resolveToolkitPolicyFunction · 0.70
matchPatternFunction · 0.50

Tested by

no test coverage detected