| 301 | } as const); |
| 302 | |
| 303 | export async function build_run_deviceLogic( |
| 304 | params: BuildRunDeviceParams, |
| 305 | executor: CommandExecutor, |
| 306 | fileSystemExecutor: FileSystemExecutor = getDefaultFileSystemExecutor(), |
| 307 | ): Promise<void> { |
| 308 | const ctx = getHandlerContext(); |
| 309 | const invocationRequest = createBuildRunDeviceRequest(params); |
| 310 | |
| 311 | ctx.emit(createBuildInvocationFragment('build-run-result', 'BUILD', invocationRequest)); |
| 312 | const executionContext = createStreamingExecutionContext(ctx); |
| 313 | const executeBuildRunDevice = createBuildRunDeviceExecutor(executor, fileSystemExecutor); |
| 314 | |
| 315 | const result = await executeBuildRunDevice(params, executionContext); |
| 316 | |
| 317 | setXcodebuildStructuredOutput(ctx, 'build-run-result', result); |
| 318 | |
| 319 | if (!result.didError) { |
| 320 | const nextStepParams: NextStepParamsMap = {}; |
| 321 | if ('processId' in result.artifacts && typeof result.artifacts.processId === 'number') { |
| 322 | nextStepParams.stop_app_device = { |
| 323 | deviceId: params.deviceId, |
| 324 | processId: result.artifacts.processId, |
| 325 | }; |
| 326 | } |
| 327 | if (Object.keys(nextStepParams).length > 0) { |
| 328 | ctx.nextStepParams = nextStepParams; |
| 329 | } |
| 330 | } |
| 331 | } |
| 332 | |
| 333 | export const schema = getSessionAwareToolSchemaShape({ |
| 334 | sessionAware: publicSchemaObject, |