Skip to content

refactor(11/12): update manifests, config, docs, and example projects#329

Open
cameroncooke wants to merge 2 commits intorefactor/cli-daemon-mcp-boundariesfrom
refactor/manifests-config-docs
Open

refactor(11/12): update manifests, config, docs, and example projects#329
cameroncooke wants to merge 2 commits intorefactor/cli-daemon-mcp-boundariesfrom
refactor/manifests-config-docs

Conversation

@cameroncooke
Copy link
Copy Markdown
Collaborator

Summary

This is PR 11 of 12 in a stacked PR series that decouples the rendering pipeline from MCP transport. Depends on PR 10 (boundary rewiring).

Updates all configuration files, YAML manifests, documentation, and example projects to reflect the rendering pipeline refactor. No behavioral code changes -- this is metadata, documentation, and project configuration.

Manifest YAML updates (28 files)

All tool manifests updated to reflect the simplified handler contract. Changes are consistent across all manifests:

  • Removed output format configuration that is now handled by the render session
  • Updated parameter descriptions where they referenced the old rendering model

New resource manifests

Added manifests/resources/ directory with resource manifest definitions that were previously inline.

Configuration

  • package.json + package-lock.json: Dependency updates and script changes
  • knip.json: Dead code analysis configuration for the new module structure
  • vitest.config.ts: Minor updates for new test paths
  • vitest.flowdeck.config.ts + vitest.snapshot.config.ts: New vitest configs for flowdeck integration tests and snapshot tests respectively

Documentation

New developer documentation explaining the rendering pipeline architecture:

  • RENDERING_PIPELINE.md: Architecture overview for contributors
  • RENDERING_PIPELINE_REFACTOR.md: Migration guide and decision log
  • QUERY_TOOL_FORMAT_SPEC.md: Specification for query tool output formatting
  • FIXTURE_DESIGNS.md: Snapshot test fixture design documentation
  • STRUCTURED_XCODEBUILD_EVENTS_PLAN.md: Design document for the xcodebuild event model
  • Updated ARCHITECTURE.md, TESTING.md, MANIFEST_FORMAT.md, TOOL_DISCOVERY_LOGIC.md

Example projects

Minor updates to example projects to work with the updated tool interfaces. Updated test files and project configuration.

Other

  • AGENTS.md: Updated project rules
  • New test infrastructure: test-helpers.ts, vitest-executor-safety.setup.ts
  • Build scripts updated: removed copy-build-assets.js (no longer needed), added benchmark and capture wrapper scripts

Stack navigation

  • PR 1-10/12: All code changes
  • PR 11/12 (this PR): Manifests, config, docs, examples
  • PR 12/12: Snapshot test fixtures and benchmarks

Test plan

  • npx vitest run passes
  • Manifest validation passes for all YAML files
  • Documentation renders correctly in GitHub
  • Example projects build successfully

Copy link
Copy Markdown
Contributor

@cursor cursor bot left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Cursor Bugbot has reviewed your changes and found 2 potential issues.

Fix All in Cursor

❌ Bugbot Autofix is OFF. To automatically fix reported issues with cloud agents, enable autofix in the Cursor dashboard.

Reviewed by Cursor Bugbot for commit 55a323e. Configure here.

);
MARKETING_VERSION = 1.0;
PRODUCT_BUNDLE_IDENTIFIER = io.sentry.MCPTest;
PRODUCT_BUNDLE_IDENTIFIER = io.sentry.calculatorapp;
Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

macOS MCPTest reuses iOS Calculator bundle identifier

Medium Severity

The macOS MCPTest app's PRODUCT_BUNDLE_IDENTIFIER was updated to io.sentry.calculatorapp. This bundle ID is already in use by the iOS Calculator example app. Sharing the same bundle ID across two distinct example apps can lead to issues with app identification, automation, snapshot tests, and Keychain collisions.

Fix in Cursor Fix in Web

Reviewed by Cursor Bugbot for commit 55a323e. Configure here.

@cameroncooke cameroncooke force-pushed the refactor/cli-daemon-mcp-boundaries branch from b91063e to e6d00fe Compare April 8, 2026 21:29
@cameroncooke cameroncooke force-pushed the refactor/manifests-config-docs branch from 55a323e to 22247c9 Compare April 8, 2026 21:29

const text = chunk.toString();
stdoutChunks.push(text);
normalizedStdout += normalizeTerminalTranscript(text);
Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Bug: Processing streamed output in chunks can merge lines across chunk boundaries, breaking regex matching for benchmark milestones and resulting in incorrect metrics.
Severity: MEDIUM

Suggested Fix

Buffer the incoming data chunks and process the stream line-by-line instead of chunk-by-chunk. This ensures that normalizeTerminalTranscript and any subsequent pattern matching operate on complete lines, preventing milestone markers from being broken apart.

Prompt for AI Agent
Review the code at the location below. A potential bug has been identified by an AI
agent.
Verify if this is a real issue. If it is, propose a fix; if not, explain why it's not
valid.

Location: scripts/benchmark-simulator-test.ts#L140

Potential issue: When processing streamed output, the `normalizeTerminalTranscript`
function is called on each data chunk. This function joins lines without a trailing
newline. If a log line containing a benchmark milestone (e.g., `/🛠️\s*Compiling/`) is
split across two chunks, the last part of the line from the first chunk and the first
part from the next are concatenated. This breaks the pattern matching, leading to
incorrect metrics.

Did we get this right? 👍 / 👎 to inform future reviews.

@cameroncooke cameroncooke force-pushed the refactor/manifests-config-docs branch from b6e35ad to 0497670 Compare April 9, 2026 09:33
@cameroncooke cameroncooke force-pushed the refactor/cli-daemon-mcp-boundaries branch from 18de083 to 8096037 Compare April 9, 2026 09:33
@cameroncooke cameroncooke force-pushed the refactor/manifests-config-docs branch from 0497670 to dc62323 Compare April 9, 2026 10:39
@cameroncooke cameroncooke force-pushed the refactor/cli-daemon-mcp-boundaries branch 2 times, most recently from a3c5515 to f79a1f8 Compare April 9, 2026 10:56
@cameroncooke cameroncooke force-pushed the refactor/manifests-config-docs branch from dc62323 to 3cf09d1 Compare April 9, 2026 10:56
@cameroncooke cameroncooke force-pushed the refactor/cli-daemon-mcp-boundaries branch from f79a1f8 to 7ba6db8 Compare April 9, 2026 11:22
@cameroncooke cameroncooke force-pushed the refactor/manifests-config-docs branch 2 times, most recently from 1bc80ad to 8dfeb16 Compare April 9, 2026 11:31
@cameroncooke cameroncooke force-pushed the refactor/cli-daemon-mcp-boundaries branch from 7ba6db8 to 34ec659 Compare April 9, 2026 11:31
@cameroncooke cameroncooke force-pushed the refactor/manifests-config-docs branch from 8dfeb16 to d9a8caa Compare April 9, 2026 11:48
@cameroncooke cameroncooke force-pushed the refactor/cli-daemon-mcp-boundaries branch from 34ec659 to b3c094d Compare April 9, 2026 11:48
);
MARKETING_VERSION = 1.0;
PRODUCT_BUNDLE_IDENTIFIER = io.sentry.MCPTest;
PRODUCT_BUNDLE_IDENTIFIER = io.sentry.calculatorapp;
Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Bug: The macOS MCPTest app's bundle identifier is identical to the iOS Calculator app's, which could cause collisions for tools targeting by bundle ID.
Severity: MEDIUM

Suggested Fix

Assign a unique bundle identifier to the macOS MCPTest application to differentiate it from the iOS Calculator app. For example, you could use a platform-specific suffix like io.sentry.calculatorapp.macOS.

Prompt for AI Agent
Review the code at the location below. A potential bug has been identified by an AI
agent.
Verify if this is a real issue. If it is, propose a fix; if not, explain why it's not
valid.

Location: example_projects/macOS/MCPTest.xcodeproj/project.pbxproj#L341

Potential issue: The bundle identifier for the macOS `MCPTest` application has been set
to `io.sentry.calculatorapp`, which is identical to the one used by the iOS Calculator
application. This duplication creates a collision, causing ambiguity for tools that
target applications by their bundle ID, such as `launch_app_sim` or `stop_app_sim`.
These tools might inadvertently target the wrong application if both are present in the
same environment, for instance, on a simulator capable of running both iOS and macOS
apps.

@cameroncooke cameroncooke force-pushed the refactor/manifests-config-docs branch from d9a8caa to 6ea4df8 Compare April 9, 2026 12:03
Internal research notes that shouldn't be committed to the repository.
@cameroncooke cameroncooke force-pushed the refactor/cli-daemon-mcp-boundaries branch from 13b58c1 to b1364d7 Compare April 9, 2026 14:43
@cameroncooke cameroncooke force-pushed the refactor/manifests-config-docs branch from 6ea4df8 to 86b945d Compare April 9, 2026 14:43
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant