Skip to content

Commit 2b9ad85

Browse files
cameroncookeclaude
andcommitted
ref(simulator): Use shared destination string construction
Route simulator destination string creation through constructDestinationString in\nget_sim_app_path and build_run_sim to keep formatting and behavior\nconsistent across tools and reduce drift risk. Co-Authored-By: Claude <noreply@anthropic.com>
1 parent a748d44 commit 2b9ad85

2 files changed

Lines changed: 21 additions & 5 deletions

File tree

src/mcp/tools/simulator/build_run_sim.ts

Lines changed: 13 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -21,6 +21,7 @@ import type { CommandExecutor } from '../../../utils/execution/index.ts';
2121
import { determineSimulatorUuid } from '../../../utils/simulator-utils.ts';
2222
import { nullifyEmptyStrings } from '../../../utils/schema-helpers.ts';
2323
import { inferPlatform } from '../../../utils/infer-platform.ts';
24+
import { constructDestinationString } from '../../../utils/xcode.ts';
2425

2526
// Unified schema: XOR between projectPath and workspacePath, and XOR between simulatorId and simulatorName
2627
const baseOptions = {
@@ -185,12 +186,21 @@ export async function build_run_simLogic(
185186
// Handle destination for simulator
186187
let destinationString: string;
187188
if (params.simulatorId) {
188-
destinationString = `platform=${detectedPlatform},id=${params.simulatorId}`;
189+
destinationString = constructDestinationString(
190+
detectedPlatform,
191+
undefined,
192+
params.simulatorId,
193+
);
189194
} else if (params.simulatorName) {
190-
destinationString = `platform=${detectedPlatform},name=${params.simulatorName}${(params.useLatestOS ?? true) ? ',OS=latest' : ''}`;
195+
destinationString = constructDestinationString(
196+
detectedPlatform,
197+
params.simulatorName,
198+
undefined,
199+
params.useLatestOS ?? true,
200+
);
191201
} else {
192202
// This shouldn't happen due to validation, but handle it
193-
destinationString = `platform=${detectedPlatform}`;
203+
destinationString = constructDestinationString(detectedPlatform);
194204
}
195205
command.push('-destination', destinationString);
196206

src/mcp/tools/simulator/get_sim_app_path.ts

Lines changed: 8 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -13,6 +13,7 @@ import type { CommandExecutor } from '../../../utils/execution/index.ts';
1313
import { getDefaultCommandExecutor } from '../../../utils/execution/index.ts';
1414
import type { ToolResponse } from '../../../types/common.ts';
1515
import { XcodePlatform } from '../../../types/common.ts';
16+
import { constructDestinationString } from '../../../utils/xcode.ts';
1617
import {
1718
createSessionAwareTool,
1819
getSessionAwareToolSchemaShape,
@@ -125,9 +126,14 @@ export async function get_sim_app_pathLogic(
125126
let destinationString = '';
126127

127128
if (simulatorId) {
128-
destinationString = `platform=${platform},id=${simulatorId}`;
129+
destinationString = constructDestinationString(platform, undefined, simulatorId);
129130
} else if (simulatorName) {
130-
destinationString = `platform=${platform},name=${simulatorName}${useLatestOS ? ',OS=latest' : ''}`;
131+
destinationString = constructDestinationString(
132+
platform,
133+
simulatorName,
134+
undefined,
135+
useLatestOS,
136+
);
131137
} else {
132138
return createTextResponse(
133139
`For ${platform} platform, either simulatorId or simulatorName must be provided`,

0 commit comments

Comments
 (0)