MCPcopy Create free account
hub / github.com/oboard/claude-code-rev / doWork

Function doWork

src/cli/print.ts:1561–1609  ·  view source on GitHub ↗
()

Source from the content-addressed store, hash-verified

1559 // Serialize calls to prevent race conditions between concurrent callers
1560 // (background plugin install and mcp_set_servers control messages)
1561 const doWork = async (): Promise<{
1562 response: SDKControlMcpSetServersResponse
1563 sdkServersChanged: boolean
1564 }> => {
1565 const oldSdkClientNames = new Set(sdkClients.map(c => c.name))
1566
1567 const result = await handleMcpSetServers(
1568 servers,
1569 { configs: sdkMcpConfigs, clients: sdkClients, tools: sdkTools },
1570 dynamicMcpState,
1571 setAppState,
1572 )
1573
1574 // Update SDK state (need to mutate sdkMcpConfigs since it's shared)
1575 for (const key of Object.keys(sdkMcpConfigs)) {
1576 delete sdkMcpConfigs[key]
1577 }
1578 Object.assign(sdkMcpConfigs, result.newSdkState.configs)
1579 sdkClients = result.newSdkState.clients
1580 sdkTools = result.newSdkState.tools
1581 dynamicMcpState = result.newDynamicState
1582
1583 // Keep appState.mcp.tools in sync so subagents can see SDK MCP tools.
1584 // Use both old and new SDK client names to remove stale tools.
1585 if (result.sdkServersChanged) {
1586 const newSdkClientNames = new Set(sdkClients.map(c => c.name))
1587 const allSdkNames = uniq([...oldSdkClientNames, ...newSdkClientNames])
1588 setAppState(prev => ({
1589 ...prev,
1590 mcp: {
1591 ...prev.mcp,
1592 tools: [
1593 ...prev.mcp.tools.filter(
1594 t =>
1595 !allSdkNames.some(name =>
1596 t.name.startsWith(getMcpPrefix(name)),
1597 ),
1598 ),
1599 ...sdkTools,
1600 ],
1601 },
1602 }))
1603 }
1604
1605 return {
1606 response: result.response,
1607 sdkServersChanged: result.sdkServersChanged,
1608 }
1609 }
1610
1611 mcpChangesPromise = mcpChangesPromise.then(doWork, doWork)
1612 return mcpChangesPromise

Callers

nothing calls this directly

Calls 4

handleMcpSetServersFunction · 0.85
uniqFunction · 0.85
getMcpPrefixFunction · 0.85
keysMethod · 0.80

Tested by

no test coverage detected