Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
24 commits
Select commit Hold shift + click to select a range
15b24c3
feat(responses): Add next-step verbosity controls
cameroncooke May 16, 2026
cf37efb
test(snapshot): Split fixtures by runtime output mode
cameroncooke May 16, 2026
ae9ee12
docs(changelog): Document next-step response updates
cameroncooke May 16, 2026
392767d
fix(responses): Respect MCP minimal render defaults
cameroncooke May 16, 2026
34fd3c7
test(snapshot): Avoid filtering device snapshot tests
cameroncooke May 16, 2026
95e8168
fix(responses): Preserve configured rendering details
cameroncooke May 16, 2026
63e8dcf
fix(xcode-ide): Align daemon bridge schema version
cameroncooke May 16, 2026
0a873b1
test(snapshot): Normalize volatile runtime fixture values
cameroncooke May 16, 2026
ec5cbaf
ref(snapshot): Simplify failed test normalization
cameroncooke May 16, 2026
84fc224
fix(responses): respect MCP runtime for test next steps
cameroncooke May 16, 2026
190aefe
test(snapshot): stabilize runtime fixture coverage
cameroncooke May 16, 2026
cf02c9d
fix(xcode-ide): make bridge schema versions explicit
cameroncooke May 16, 2026
b5b3323
fix(swift-package): preserve run stop next step
cameroncooke May 16, 2026
12068ed
test(snapshot): tighten runtime fixture normalization
cameroncooke May 17, 2026
988a9a3
ci(warden): Exclude generated fixtures from broad checks
cameroncooke May 17, 2026
676b2c1
ci(warden): Scope fixture review to contract files
cameroncooke May 17, 2026
e22835c
fix(responses): Address Warden schema and fixture feedback
cameroncooke May 17, 2026
7376693
ref(responses): Simplify Warden-flagged response helpers
cameroncooke May 17, 2026
d954699
fix(tests): Normalize unversioned Xcode app paths
cameroncooke May 17, 2026
054b899
fix(tests): Normalize LLDB offsets and stale tools
cameroncooke May 17, 2026
3d388b8
fix(tests): Isolate persisted session profile snapshots
cameroncooke May 17, 2026
e8d5a06
fix(tests): Address Warden runtime feedback
cameroncooke May 17, 2026
48c9078
ref(utils): Simplify runtime test helpers
cameroncooke May 17, 2026
dac75d6
ref(tests): Remove direct handler fallback path
cameroncooke May 17, 2026
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
The table of contents is too big for display.
Diff view
Diff view
  •  
  •  
  •  
1 change: 1 addition & 0 deletions AGENTS.md
Original file line number Diff line number Diff line change
Expand Up @@ -47,6 +47,7 @@ ESM TypeScript project (`type: module`). Key layers:
- **NEVER use inline imports** - no `await import("./foo.js")`, no `import("pkg").Type` in type positions, no dynamic imports for types. Always use standard top-level imports.
- NEVER remove or downgrade code to fix type errors from outdated dependencies; upgrade the dependency instead
- Always ask before removing functionality or code that appears to be intentional
- Do not add fallback behavior by default. If required context, configuration, runtime state, or dependencies are missing, fail loudly and fix the caller/setup instead of silently switching to an alternate path. Add a fallback only when explicitly requested or when it is a documented product requirement.
- Follow TypeScript best practices

## Import Conventions
Expand Down
6 changes: 6 additions & 0 deletions CHANGELOG.md
Original file line number Diff line number Diff line change
@@ -1,5 +1,11 @@
# Changelog

## [Unreleased]

### Added

- Added `nextSteps` hint lines to MCP `structuredContent` and CLI `--output json` envelopes so agents can consume follow-up actions without scraping text. CLI JSON renders shell command lines; MCP structured content renders MCP tool-call hints. Structured result schemas that include `nextSteps` now use schema version 2; existing version 1 schema files remain available for current validators.

## [2.5.2]

### Changed
Expand Down
1 change: 1 addition & 0 deletions CLAUDE.md
Original file line number Diff line number Diff line change
Expand Up @@ -6,6 +6,7 @@
- **NEVER use inline imports** - no `await import("./foo.js")`, no `import("pkg").Type` in type positions, no dynamic imports for types. Always use standard top-level imports.
- NEVER remove or downgrade code to fix type errors from outdated dependencies; upgrade the dependency instead
- Always ask before removing functionality or code that appears to be intentional
- Do not add fallback behavior by default. If required context, configuration, runtime state, or dependencies are missing, fail loudly and fix the caller/setup instead of silently switching to an alternate path. Add a fallback only when explicitly requested or when it is a documented product requirement.
- Follow TypeScript best practices

## Commands
Expand Down
2 changes: 1 addition & 1 deletion manifests/tools/boot_sim.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -6,7 +6,7 @@ names:
description: Boot iOS simulator for manual/non-build flows. Not required before simulator build-and-run (build_run_sim).
outputSchema:
schema: xcodebuildmcp.output.simulator-action-result
version: "1"
version: "2"
Comment thread
cursor[bot] marked this conversation as resolved.
annotations:
title: Boot Simulator
readOnlyHint: false
Expand Down
2 changes: 1 addition & 1 deletion manifests/tools/build_device.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -6,7 +6,7 @@ names:
description: Build for device.
outputSchema:
schema: xcodebuildmcp.output.build-result
version: "1"
version: "2"
predicates:
- hideWhenXcodeAgentMode
annotations:
Expand Down
2 changes: 1 addition & 1 deletion manifests/tools/build_macos.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -6,7 +6,7 @@ names:
description: Build macOS app.
outputSchema:
schema: xcodebuildmcp.output.build-result
version: "1"
version: "2"
predicates:
- hideWhenXcodeAgentMode
annotations:
Expand Down
2 changes: 1 addition & 1 deletion manifests/tools/build_run_device.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -6,7 +6,7 @@ names:
description: Build, install, and launch on physical device. Preferred single-step run tool when defaults are set.
outputSchema:
schema: xcodebuildmcp.output.build-run-result
version: '1'
version: "2"
predicates:
- hideWhenXcodeAgentMode
annotations:
Expand Down
2 changes: 1 addition & 1 deletion manifests/tools/build_run_macos.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -6,7 +6,7 @@ names:
description: Build and run macOS app.
outputSchema:
schema: xcodebuildmcp.output.build-run-result
version: "1"
version: "2"
predicates:
- hideWhenXcodeAgentMode
annotations:
Expand Down
2 changes: 1 addition & 1 deletion manifests/tools/build_run_sim.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -6,7 +6,7 @@ names:
description: Build, install, and launch on iOS Simulator; boots simulator and attempts to open Simulator.app as needed. Runtime logs are captured automatically and the log file path is included in the response. Preferred single-step run tool when defaults are set.
outputSchema:
schema: xcodebuildmcp.output.build-run-result
version: "1"
version: "2"
predicates:
- hideWhenXcodeAgentMode
annotations:
Expand Down
2 changes: 1 addition & 1 deletion manifests/tools/build_sim.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -6,7 +6,7 @@ names:
description: Build for iOS sim (compile-only, no launch).
outputSchema:
schema: xcodebuildmcp.output.build-result
version: "1"
version: "2"
predicates:
- hideWhenXcodeAgentMode
annotations:
Expand Down
2 changes: 1 addition & 1 deletion manifests/tools/button.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -6,7 +6,7 @@ names:
description: Press simulator hardware button.
outputSchema:
schema: xcodebuildmcp.output.ui-action-result
version: "1"
version: "2"
annotations:
title: Hardware Button
readOnlyHint: true
Expand Down
2 changes: 1 addition & 1 deletion manifests/tools/clean.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -6,7 +6,7 @@ names:
description: Clean build products.
outputSchema:
schema: xcodebuildmcp.output.build-result
version: "1"
version: "2"
predicates:
- hideWhenXcodeAgentMode
annotations:
Expand Down
2 changes: 1 addition & 1 deletion manifests/tools/debug_attach_sim.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -6,7 +6,7 @@ names:
description: Attach LLDB to sim app.
outputSchema:
schema: xcodebuildmcp.output.debug-session-action
version: "1"
version: "2"
routing:
stateful: true
annotations:
Expand Down
2 changes: 1 addition & 1 deletion manifests/tools/debug_breakpoint_add.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -6,7 +6,7 @@ names:
description: Add breakpoint.
outputSchema:
schema: xcodebuildmcp.output.debug-breakpoint-result
version: "1"
version: "2"
routing:
stateful: true
annotations:
Expand Down
2 changes: 1 addition & 1 deletion manifests/tools/debug_breakpoint_remove.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -6,7 +6,7 @@ names:
description: Remove breakpoint.
outputSchema:
schema: xcodebuildmcp.output.debug-breakpoint-result
version: "1"
version: "2"
routing:
stateful: true
annotations:
Expand Down
2 changes: 1 addition & 1 deletion manifests/tools/debug_continue.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -6,7 +6,7 @@ names:
description: Continue debug session.
outputSchema:
schema: xcodebuildmcp.output.debug-session-action
version: "1"
version: "2"
routing:
stateful: true
annotations:
Expand Down
2 changes: 1 addition & 1 deletion manifests/tools/debug_detach.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -6,7 +6,7 @@ names:
description: Detach debugger.
outputSchema:
schema: xcodebuildmcp.output.debug-session-action
version: "1"
version: "2"
routing:
stateful: true
annotations:
Expand Down
2 changes: 1 addition & 1 deletion manifests/tools/debug_lldb_command.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -6,7 +6,7 @@ names:
description: Run LLDB command.
outputSchema:
schema: xcodebuildmcp.output.debug-command-result
version: "1"
version: "2"
routing:
stateful: true
annotations:
Expand Down
2 changes: 1 addition & 1 deletion manifests/tools/debug_stack.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -6,7 +6,7 @@ names:
description: Get backtrace.
outputSchema:
schema: xcodebuildmcp.output.debug-stack-result
version: "1"
version: "2"
routing:
stateful: true
annotations:
Expand Down
2 changes: 1 addition & 1 deletion manifests/tools/debug_variables.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -6,7 +6,7 @@ names:
description: Get frame variables.
outputSchema:
schema: xcodebuildmcp.output.debug-variables-result
version: "1"
version: "2"
routing:
stateful: true
annotations:
Expand Down
2 changes: 1 addition & 1 deletion manifests/tools/discover_projs.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -6,7 +6,7 @@ names:
description: Scans a directory (defaults to workspace root) to find Xcode project (.xcodeproj) and workspace (.xcworkspace) files. Use when project/workspace path is unknown.
outputSchema:
schema: xcodebuildmcp.output.project-list
version: "1"
version: "2"
annotations:
title: Discover Projects
readOnlyHint: true
Expand Down
2 changes: 1 addition & 1 deletion manifests/tools/doctor.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -6,7 +6,7 @@ names:
description: MCP environment info.
outputSchema:
schema: xcodebuildmcp.output.doctor-report
version: "1"
version: "2"
annotations:
title: Doctor
readOnlyHint: true
Expand Down
2 changes: 1 addition & 1 deletion manifests/tools/erase_sims.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -6,7 +6,7 @@ names:
description: Erase simulator.
outputSchema:
schema: xcodebuildmcp.output.simulator-action-result
version: "1"
version: "2"
annotations:
title: Erase Simulators
readOnlyHint: false
Expand Down
2 changes: 1 addition & 1 deletion manifests/tools/gesture.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -6,7 +6,7 @@ names:
description: Simulator gesture preset.
outputSchema:
schema: xcodebuildmcp.output.ui-action-result
version: "1"
version: "2"
annotations:
title: Gesture
readOnlyHint: true
Expand Down
2 changes: 1 addition & 1 deletion manifests/tools/get_app_bundle_id.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -6,7 +6,7 @@ names:
description: Extract bundle id from .app.
outputSchema:
schema: xcodebuildmcp.output.bundle-id
version: "1"
version: "2"
annotations:
title: Get App Bundle ID
readOnlyHint: true
Expand Down
2 changes: 1 addition & 1 deletion manifests/tools/get_coverage_report.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -6,7 +6,7 @@ names:
description: Show per-target code coverage from an xcresult bundle.
outputSchema:
schema: xcodebuildmcp.output.coverage-result
version: "1"
version: "2"
annotations:
title: Get Coverage Report
readOnlyHint: true
Expand Down
2 changes: 1 addition & 1 deletion manifests/tools/get_device_app_path.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -6,7 +6,7 @@ names:
description: Get device built app path.
outputSchema:
schema: xcodebuildmcp.output.app-path
version: "1"
version: "2"
annotations:
title: Get Device App Path
readOnlyHint: true
Expand Down
2 changes: 1 addition & 1 deletion manifests/tools/get_file_coverage.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -6,7 +6,7 @@ names:
description: Show function-level coverage and uncovered line ranges for a specific file.
outputSchema:
schema: xcodebuildmcp.output.coverage-result
version: "1"
version: "2"
annotations:
title: Get File Coverage
readOnlyHint: true
Expand Down
2 changes: 1 addition & 1 deletion manifests/tools/get_mac_app_path.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -6,7 +6,7 @@ names:
description: Get macOS built app path.
outputSchema:
schema: xcodebuildmcp.output.app-path
version: "1"
version: "2"
annotations:
title: Get macOS App Path
readOnlyHint: true
Expand Down
2 changes: 1 addition & 1 deletion manifests/tools/get_mac_bundle_id.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -6,7 +6,7 @@ names:
description: Extract bundle id from macOS .app.
outputSchema:
schema: xcodebuildmcp.output.bundle-id
version: "1"
version: "2"
annotations:
title: Get Mac Bundle ID
readOnlyHint: true
Expand Down
2 changes: 1 addition & 1 deletion manifests/tools/get_sim_app_path.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -6,7 +6,7 @@ names:
description: Get sim built app path.
outputSchema:
schema: xcodebuildmcp.output.app-path
version: "1"
version: "2"
annotations:
title: Get Simulator App Path
readOnlyHint: true
Expand Down
2 changes: 1 addition & 1 deletion manifests/tools/install_app_device.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -6,7 +6,7 @@ names:
description: Install app on device.
outputSchema:
schema: xcodebuildmcp.output.install-result
version: "1"
version: "2"
annotations:
title: Install App Device
readOnlyHint: false
Expand Down
2 changes: 1 addition & 1 deletion manifests/tools/install_app_sim.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -6,7 +6,7 @@ names:
description: Install app on sim.
outputSchema:
schema: xcodebuildmcp.output.install-result
version: "1"
version: "2"
annotations:
title: Install App Simulator
readOnlyHint: false
Expand Down
2 changes: 1 addition & 1 deletion manifests/tools/key_press.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -6,7 +6,7 @@ names:
description: Press key by keycode.
outputSchema:
schema: xcodebuildmcp.output.ui-action-result
version: "1"
version: "2"
annotations:
title: Key Press
readOnlyHint: true
Expand Down
2 changes: 1 addition & 1 deletion manifests/tools/key_sequence.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -6,7 +6,7 @@ names:
description: Press a sequence of keys by their keycodes.
outputSchema:
schema: xcodebuildmcp.output.ui-action-result
version: "1"
version: "2"
annotations:
title: Key Sequence
readOnlyHint: true
Expand Down
2 changes: 1 addition & 1 deletion manifests/tools/launch_app_device.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -6,7 +6,7 @@ names:
description: Launch app on device.
outputSchema:
schema: xcodebuildmcp.output.launch-result
version: "1"
version: "2"
annotations:
title: Launch App Device
readOnlyHint: false
Expand Down
2 changes: 1 addition & 1 deletion manifests/tools/launch_app_sim.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -6,7 +6,7 @@ names:
description: Launch app on simulator. Runtime logs are captured automatically and the log file path is included in the response.
outputSchema:
schema: xcodebuildmcp.output.launch-result
version: "1"
version: "2"
annotations:
title: Launch App Simulator
readOnlyHint: false
Expand Down
2 changes: 1 addition & 1 deletion manifests/tools/launch_mac_app.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -6,7 +6,7 @@ names:
description: Launch macOS app.
outputSchema:
schema: xcodebuildmcp.output.launch-result
version: "1"
version: "2"
annotations:
title: Launch macOS App
readOnlyHint: false
Expand Down
2 changes: 1 addition & 1 deletion manifests/tools/list_devices.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -6,7 +6,7 @@ names:
description: List connected devices.
outputSchema:
schema: xcodebuildmcp.output.device-list
version: "1"
version: "2"
annotations:
title: List Devices
readOnlyHint: true
Expand Down
2 changes: 1 addition & 1 deletion manifests/tools/list_schemes.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -6,7 +6,7 @@ names:
description: List Xcode schemes.
outputSchema:
schema: xcodebuildmcp.output.scheme-list
version: "1"
version: "2"
annotations:
title: List Schemes
readOnlyHint: true
Expand Down
2 changes: 1 addition & 1 deletion manifests/tools/list_sims.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -6,7 +6,7 @@ names:
description: List iOS simulators.
outputSchema:
schema: xcodebuildmcp.output.simulator-list
version: "1"
version: "2"
annotations:
title: List Simulators
readOnlyHint: true
Expand Down
2 changes: 1 addition & 1 deletion manifests/tools/long_press.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -6,7 +6,7 @@ names:
description: Long press at coords.
outputSchema:
schema: xcodebuildmcp.output.ui-action-result
version: "1"
version: "2"
annotations:
title: Long Press
readOnlyHint: true
Expand Down
2 changes: 1 addition & 1 deletion manifests/tools/manage_workflows.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -6,7 +6,7 @@ names:
description: Workflows are groups of tools exposed by XcodeBuildMCP. By default, not all workflows (and therefore tools) are enabled; only simulator tools are enabled by default. Some workflows are mandatory and can't be disabled.
outputSchema:
schema: xcodebuildmcp.output.workflow-selection
version: "1"
version: "2"
availability:
cli: true
annotations:
Expand Down
2 changes: 1 addition & 1 deletion manifests/tools/open_sim.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -6,7 +6,7 @@ names:
description: Open Simulator.app for visibility/manual workflows. Not required before simulator build-and-run (build_run_sim).
outputSchema:
schema: xcodebuildmcp.output.simulator-action-result
version: "1"
version: "2"
annotations:
title: Open Simulator
readOnlyHint: true
Expand Down
Loading
Loading