MCPcopy Index your code
hub / github.com/getsentry/XcodeBuildMCP / enumerateAndRegisterTools

Function enumerateAndRegisterTools

src/utils/tool-registry.ts:412–455  ·  view source on GitHub ↗
(
  manifest: ResolvedManifest,
  selectedWorkflows: WorkflowManifestEntry[],
  ctx: PredicateContext,
)

Source from the content-addressed store, hash-verified

410}
411
412async function enumerateAndRegisterTools(
413 manifest: ResolvedManifest,
414 selectedWorkflows: WorkflowManifestEntry[],
415 ctx: PredicateContext,
416): Promise<{ registeredCount: number; desiredWorkflows: Set<string> }> {
417 const desiredToolNames = new Set<string>();
418 const desiredWorkflows = new Set<string>();
419 const catalogTools: ToolDefinition[] = [];
420 const moduleCache = new Map<string, ImportedToolModule>();
421 const forceExposedToolAliases = getForceExposedToolAliases();
422
423 for (const workflow of selectedWorkflows) {
424 desiredWorkflows.add(workflow.id);
425
426 for (const toolId of workflow.tools) {
427 const toolManifest = manifest.tools.get(toolId);
428 if (!toolManifest) continue;
429
430 if (!shouldExposeTool(toolManifest, ctx, forceExposedToolAliases)) {
431 continue;
432 }
433
434 const toolModule = await tryImportToolModule(toolManifest, moduleCache);
435 if (!toolModule) {
436 continue;
437 }
438
439 desiredToolNames.add(toolManifest.names.mcp);
440 catalogTools.push(toCatalogTool(toolManifest, workflow, toolModule));
441 registerToolFromManifest(toolManifest, toolModule);
442 }
443 }
444
445 registryState.catalog = createToolCatalog(catalogTools);
446
447 for (const [toolName, registeredTool] of registryState.tools.entries()) {
448 if (!desiredToolNames.has(toolName)) {
449 registeredTool.remove();
450 registryState.tools.delete(toolName);
451 }
452 }
453
454 return { registeredCount: desiredToolNames.size, desiredWorkflows };
455}
456
457export async function applyWorkflowSelectionFromManifest(
458 requestedWorkflows: string[] | undefined,

Callers 1

Calls 8

createToolCatalogFunction · 0.90
shouldExposeToolFunction · 0.85
tryImportToolModuleFunction · 0.85
toCatalogToolFunction · 0.85
registerToolFromManifestFunction · 0.85
getMethod · 0.80
pushMethod · 0.80

Tested by

no test coverage detected