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

Function createCustomWorkflowsFromConfig

src/utils/tool-registry.ts:156–194  ·  view source on GitHub ↗
(
  manifest: ResolvedManifest,
  customWorkflows: Record<string, string[]>,
)

Source from the content-addressed store, hash-verified

154}
155
156export function createCustomWorkflowsFromConfig(
157 manifest: ResolvedManifest,
158 customWorkflows: Record<string, string[]>,
159): { workflows: WorkflowManifestEntry[]; warnings: string[] } {
160 const workflows: WorkflowManifestEntry[] = [];
161 const warnings: string[] = [];
162 const toolIdByAlias = buildToolAliasMap(manifest);
163
164 for (const [rawWorkflowName, rawToolNames] of Object.entries(customWorkflows)) {
165 const workflowName = normalizeName(rawWorkflowName);
166 if (!workflowName) {
167 continue;
168 }
169
170 if (manifest.workflows.has(workflowName)) {
171 warnings.push(
172 `[config] Ignoring custom workflow '${workflowName}' because it conflicts with a built-in workflow.`,
173 );
174 continue;
175 }
176
177 const { toolIds, unknownToolNames } = resolveCustomWorkflowToolIds(toolIdByAlias, rawToolNames);
178 if (unknownToolNames.length > 0) {
179 warnings.push(
180 `[config] Custom workflow '${workflowName}' references unknown tools: ${unknownToolNames.join(', ')}`,
181 );
182 }
183 if (toolIds.length === 0) {
184 warnings.push(
185 `[config] Ignoring custom workflow '${workflowName}' because it resolved to no known tools.`,
186 );
187 continue;
188 }
189
190 workflows.push(buildCustomWorkflowEntry(workflowName, toolIds));
191 }
192
193 return { workflows, warnings };
194}
195
196function emitConfigWarningMetric(kind: 'unknown_workflow' | 'invalid_custom_workflow'): void {
197 recordInternalErrorMetric({

Callers 2

resolveSelectedWorkflowsFunction · 0.85

Calls 5

buildToolAliasMapFunction · 0.85
normalizeNameFunction · 0.85
buildCustomWorkflowEntryFunction · 0.85
pushMethod · 0.80

Tested by

no test coverage detected