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

Function buildConnectionGroups

packages/plugins/toolkits/src/page.tsx:264–293  ·  view source on GitHub ↗
(tools: readonly ToolRow[])

Source from the content-addressed store, hash-verified

262};
263
264const buildConnectionGroups = (tools: readonly ToolRow[]): readonly ToolkitConnectionGroup[] => {
265 const groups = new Map<string, ToolkitConnectionGroup & { tools: ToolRow[] }>();
266 for (const tool of tools) {
267 const owner = toolOwner(tool);
268 const key = `${owner}:${tool.integration}:${toolConnectionName(tool)}`;
269 const existing = groups.get(key);
270 if (existing) {
271 existing.tools.push(tool);
272 continue;
273 }
274 groups.set(key, {
275 id: key,
276 owner,
277 integration: String(tool.integration),
278 connection: toolConnectionName(tool),
279 patterns: [],
280 tools: [tool],
281 });
282 }
283 return [...groups.values()]
284 .map((group) => {
285 const sortedTools = [...group.tools].sort(compareTools);
286 return {
287 ...group,
288 patterns: reducePolicyPatterns(sortedTools.map(connectionPatternForTool)),
289 tools: sortedTools,
290 };
291 })
292 .sort(compareConnectionGroups);
293};
294
295const compareTools = (a: ToolRow, b: ToolRow): number =>
296 String(a.name).localeCompare(String(b.name)) || toolMatchId(a).localeCompare(toolMatchId(b));

Callers 2

ToolkitTileFunction · 0.85
ToolkitWorkspaceFunction · 0.85

Calls 7

toolOwnerFunction · 0.85
toolConnectionNameFunction · 0.85
reducePolicyPatternsFunction · 0.85
pushMethod · 0.80
setMethod · 0.80
valuesMethod · 0.80
getMethod · 0.65

Tested by

no test coverage detected