Skip to content

Commit 736c513

Browse files
committed
WIP
1 parent 4efcf91 commit 736c513

3 files changed

Lines changed: 33 additions & 23 deletions

File tree

src/mcp/tools/workflow-discovery/manage_workflows.ts

Lines changed: 6 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -25,10 +25,12 @@ export async function manage_workflowsLogic(
2525
const requestedSet = new Set(
2626
workflowNames.map((name) => name.trim().toLowerCase()).filter(Boolean),
2727
);
28-
const nextWorkflows =
29-
params.enable === false
30-
? currentWorkflows.filter((name) => !requestedSet.has(name.toLowerCase()))
31-
: [...new Set([...currentWorkflows, ...workflowNames])];
28+
let nextWorkflows: string[];
29+
if (params.enable === false) {
30+
nextWorkflows = currentWorkflows.filter((name) => !requestedSet.has(name.toLowerCase()));
31+
} else {
32+
nextWorkflows = [...new Set([...currentWorkflows, ...workflowNames])];
33+
}
3234
const registryState = await applyWorkflowSelection(nextWorkflows);
3335

3436
return createTextResponse(`Workflows enabled: ${registryState.enabledWorkflows.join(', ')}`);

src/utils/tool-registry.ts

Lines changed: 9 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -41,18 +41,19 @@ export async function applyWorkflowSelection(workflowNames: string[]): Promise<R
4141
for (const workflow of selection.selectedWorkflows) {
4242
desiredWorkflows.add(workflow.directoryName);
4343
for (const tool of workflow.tools) {
44-
desiredToolNames.add(tool.name);
45-
if (!registryState.tools.has(tool.name)) {
44+
const { name, description, schema, annotations, handler } = tool;
45+
desiredToolNames.add(name);
46+
if (!registryState.tools.has(name)) {
4647
const registeredTool = server.registerTool(
47-
tool.name,
48+
name,
4849
{
49-
description: tool.description ?? '',
50-
inputSchema: tool.schema,
51-
annotations: tool.annotations,
50+
description: description ?? '',
51+
inputSchema: schema,
52+
annotations,
5253
},
53-
(args: unknown): Promise<ToolResponse> => tool.handler(args as Record<string, unknown>),
54+
(args: unknown): Promise<ToolResponse> => handler(args as Record<string, unknown>),
5455
);
55-
registryState.tools.set(tool.name, registeredTool);
56+
registryState.tools.set(name, registeredTool);
5657
}
5758
}
5859
}

src/utils/workflow-selection.ts

Lines changed: 18 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -49,17 +49,24 @@ export function resolveSelectedWorkflowNames(
4949
baseAutoSelected.push(DEBUG_WORKFLOW);
5050
}
5151

52-
const selectedNames =
53-
normalizedNames.length > 0 ? [...new Set([...baseAutoSelected, ...normalizedNames])] : null;
54-
55-
// Filter selected name to only include workflows that match real workflows
56-
const selectedWorkflowNames = selectedNames
57-
? selectedNames.filter((workflowName) => availableWorkflowNames.includes(workflowName))
58-
: isWorkflowDiscoveryEnabled()
59-
? [...availableWorkflowNames]
60-
: availableWorkflowNames.filter(
61-
(workflowName) => workflowName !== WORKFLOW_DISCOVERY_WORKFLOW,
62-
);
52+
let selectedNames: WorkflowName[] | null = null;
53+
if (normalizedNames.length > 0) {
54+
selectedNames = [...new Set([...baseAutoSelected, ...normalizedNames])];
55+
}
56+
57+
// Filter selected names to only include workflows that match real workflows.
58+
let selectedWorkflowNames: WorkflowName[];
59+
if (selectedNames) {
60+
selectedWorkflowNames = selectedNames.filter((workflowName) =>
61+
availableWorkflowNames.includes(workflowName),
62+
);
63+
} else if (isWorkflowDiscoveryEnabled()) {
64+
selectedWorkflowNames = [...availableWorkflowNames];
65+
} else {
66+
selectedWorkflowNames = availableWorkflowNames.filter(
67+
(workflowName) => workflowName !== WORKFLOW_DISCOVERY_WORKFLOW,
68+
);
69+
}
6370

6471
return { selectedWorkflowNames, selectedNames };
6572
}

0 commit comments

Comments
 (0)