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

Function loadDaemonBackedXcodeProxyTools

src/cli/cli-tool-catalog.ts:117–171  ·  view source on GitHub ↗
(
  opts: BuildCliToolCatalogOptions,
)

Source from the content-addressed store, hash-verified

115}
116
117async function loadDaemonBackedXcodeProxyTools(
118 opts: BuildCliToolCatalogOptions,
119): Promise<ToolDefinition[]> {
120 const discoveryMode = opts.discoveryMode ?? 'none';
121 const quickMode = discoveryMode === 'quick';
122 const daemonClient = new DaemonClient({
123 socketPath: opts.socketPath,
124 timeout: getBridgeDiscoveryTimeoutMs(quickMode),
125 });
126
127 try {
128 const isRunning = await daemonClient.isRunning();
129 if (!isRunning) {
130 if (!quickMode) {
131 return [];
132 }
133
134 // Fast path for CLI help/discovery: fire-and-forget daemon startup to avoid
135 // blocking command rendering while still warming a long-lived bridge session.
136 try {
137 startDaemonBackground({
138 socketPath: opts.socketPath,
139 workspaceRoot: opts.workspaceRoot,
140 });
141 } catch (startError) {
142 const message = startError instanceof Error ? startError.message : String(startError);
143 log('warn', `[xcode-ide] Failed to start daemon in background: ${message}`);
144 }
145 return [];
146 }
147
148 const tools = await daemonClient.listXcodeIdeTools({
149 refresh: false,
150 prefetch: quickMode,
151 });
152
153 return tools.map(
154 (tool): ToolDefinition =>
155 createCliXcodeProxyTool({
156 name: tool.remoteName,
157 description: tool.description,
158 inputSchema: tool.inputSchema,
159 annotations: tool.annotations,
160 }),
161 );
162 } catch (error) {
163 const message = error instanceof Error ? error.message : String(error);
164 if (quickMode) {
165 log('warn', `[xcode-ide] CLI daemon-backed bridge discovery failed: ${message}`);
166 } else {
167 log('debug', `[xcode-ide] CLI cached bridge discovery skipped: ${message}`);
168 }
169 return [];
170 }
171}
172
173/**
174 * Build a tool catalog for CLI usage using the manifest system.

Callers 1

buildCliToolCatalogFunction · 0.85

Calls 6

isRunningMethod · 0.95
listXcodeIdeToolsMethod · 0.95
startDaemonBackgroundFunction · 0.90
logFunction · 0.90
createCliXcodeProxyToolFunction · 0.85

Tested by

no test coverage detected