René's URL Explorer Experiment


Title: Remove dead `liveProgressEnabled` and `streamingFragmentsEnabled` from ToolHandlerContext · Issue #360 · getsentry/XcodeBuildMCP · GitHub

Open Graph Title: Remove dead `liveProgressEnabled` and `streamingFragmentsEnabled` from ToolHandlerContext · Issue #360 · getsentry/XcodeBuildMCP

X Title: Remove dead `liveProgressEnabled` and `streamingFragmentsEnabled` from ToolHandlerContext · Issue #360 · getsentry/XcodeBuildMCP

Description: Problem ToolHandlerContext exposes two booleans that aren't actually used by tools and leak a wire-layer concern into the public tool contract: // src/rendering/types.ts interface ToolHandlerContext { emit: (fragment: AnyFragment) => voi...

Open Graph Description: Problem ToolHandlerContext exposes two booleans that aren't actually used by tools and leak a wire-layer concern into the public tool contract: // src/rendering/types.ts interface ToolHandlerContex...

X Description: Problem ToolHandlerContext exposes two booleans that aren't actually used by tools and leak a wire-layer concern into the public tool contract: // src/rendering/types.ts interface ToolHandlerCo...

Opengraph URL: https://github.com/getsentry/XcodeBuildMCP/issues/360

X: @github

direct link

Domain: github.com


Hey, it has json ld scripts:
{"@context":"https://schema.org","@type":"DiscussionForumPosting","headline":"Remove dead `liveProgressEnabled` and `streamingFragmentsEnabled` from ToolHandlerContext","articleBody":"## Problem\n\n`ToolHandlerContext` exposes two booleans that aren't actually used by tools and leak a wire-layer concern into the public tool contract:\n\n```typescript\n// src/rendering/types.ts\ninterface ToolHandlerContext {\n  emit: (fragment: AnyFragment) =\u003e void\n  attach: (image: ImageAttachment) =\u003e void\n  liveProgressEnabled: boolean        // ← effectively unread\n  streamingFragmentsEnabled: boolean  // ← wire-layer leak\n  nextStepParams?: NextStepParamsMap\n  nextSteps?: NextStep[]\n  structuredOutput?: StructuredToolOutput\n}\n```\n\n## Evidence\n\n**No tool branches on either flag.** Searched all of `src/mcp/` for reads of these fields:\n\n- `src/mcp/tools/xcode-ide/shared.ts:19` — declares `readonly liveProgressEnabled = false` as a class member, never reads it.\n- `src/mcp/resources/devices.ts:25-26`, `src/mcp/resources/simulators.ts:25-26` — pass-through wiring that sets both to `false`, never reads them.\n- Zero other tool-side reads.\n\n**`liveProgressEnabled` is dead in `DefaultStreamingExecutionContext` too:**\n\n```typescript\n// src/utils/execution/tool-execution-context.ts\nconstructor(options) {\n  this.liveProgressEnabled = options.liveProgressEnabled ?? true;  // stored\n  this.fragmentCallback = options.onFragment;\n}\n\nemitFragment(fragment) {\n  this.fragmentCallback?.(fragment);  // does NOT branch on liveProgressEnabled\n}\n```\n\nThe class stores `liveProgressEnabled` and exposes it publicly but never reads its own copy.\n\n**`streamingFragmentsEnabled` does one thing, in one place:**\n\n```typescript\n// src/utils/tool-execution-compat.ts\nonFragment: ctx.streamingFragmentsEnabled ? (fragment) =\u003e ctx.emit(fragment) : undefined\n```\n\nA single wire-layer decision: subscribe to fragments, or don't. The tool never needs to know.\n\n## Why this matters\n\nThe boundary already has all the information it needs to decide what to do with fragments:\n\n- Runtime kind (`cli` / `mcp` / `daemon`) is set at session creation in `src/runtime/types.ts:19`.\n- Output format (`text` / `json` / `jsonl` / `raw`) is known at the CLI command boundary in `src/cli/register-tool-commands.ts`.\n- Render strategy (`text` / `cli-text` / `raw`) is selected per session in `src/rendering/render.ts`.\n\nTools should always emit fragments. Whether those fragments are forwarded, recorded, or dropped is a render-session/wire-boundary concern, not a tool-contract concern.\n\n## Proposed change\n\nRemove both fields from `ToolHandlerContext`. Push the wire decision down into the layers that already know:\n\n1. **`src/rendering/types.ts`** — drop `liveProgressEnabled` and `streamingFragmentsEnabled` from `ToolHandlerContext`.\n2. **`src/utils/tool-execution-compat.ts`** — collapse `createStreamingExecutionContext` so `onFragment` is always wired; let the render session decide what to do with fragments based on its strategy.\n3. **`src/utils/execution/tool-execution-context.ts`** — drop `liveProgressEnabled` from `DefaultStreamingExecutionContext` and `StreamingExecutionContextOptions`. (`StreamingExecutionContext` in `src/types/tool-execution.ts:14` would lose it too.)\n4. **`src/cli/register-tool-commands.ts`** — replace the per-call `liveProgressEnabled`/`streamingFragmentsEnabled` wiring (around lines 76-80, 362) with a single render-session strategy selection.\n5. **`src/utils/tool-registry.ts`** — drop the `liveProgressEnabled: false` / `streamingFragmentsEnabled: false` initialization (around lines 309-310). MCP-side handlers will just have their fragments captured by the render session as today.\n6. **`src/runtime/tool-invoker.ts`** — drop the duplicated wiring at lines 465-466, 511-512, 537-538.\n7. **`src/daemon/daemon-server.ts`** — the divergent `liveProgressEnabled: false` / `streamingFragmentsEnabled: true` case (lines 181-182) becomes a daemon-side render strategy choice rather than a tool-context flag.\n8. **`src/mcp/resources/devices.ts`, `simulators.ts`** and **`src/mcp/tools/xcode-ide/shared.ts`** — remove the now-dead initializations.\n9. **Test fixtures** in `src/test-utils/test-helpers.ts` and any `__tests__/*.ts` that set these fields manually — drop the field passes.\n\nAfter this, the resulting `ToolHandlerContext` is:\n\n```typescript\ninterface ToolHandlerContext {\n  emit: (fragment: AnyFragment) =\u003e void\n  attach: (image: ImageAttachment) =\u003e void\n  nextStepParams?: NextStepParamsMap\n  nextSteps?: NextStep[]\n  structuredOutput?: StructuredToolOutput\n}\n```\n\n## Migration impact\n\nExternal impact is minimal. These fields aren't part of any public type-author API; they're internal to the runtime layer. Tool authors don't read them (verified above). Test fixtures will need a small mechanical update.\n\nThe daemon's \"forward fragments to client without rendering them locally\" behavior is preserved by selecting a daemon-appropriate render strategy instead of toggling two booleans on the tool context.\n\n## Background\n\nSurfaced during a docs accuracy audit of `xcodebuildmcp.com/app/docs/_content/architecture.mdx`. Full investigation report at `/Volumes/Developer/xcodebuildmcp.com/docs/investigations/architecture-doc-accuracy-audit-2026-04-25.md` (Finding 6). The architecture doc has been pre-emptively updated to omit these two fields from the documented `ToolHandlerContext` shape, on the assumption that this issue lands.\n\n## Acceptance criteria\n\n- [ ] Both fields removed from `ToolHandlerContext` and `StreamingExecutionContext`.\n- [ ] All tool, resource, and test-fixture sites updated.\n- [ ] Daemon \"forward without rendering\" case preserved via render-strategy selection.\n- [ ] No regressions in snapshot tests or smoke tests.\n- [ ] Architecture doc stays accurate (no re-introduction of these fields).","author":{"url":"https://github.com/cameroncooke","@type":"Person","name":"cameroncooke"},"datePublished":"2026-04-25T08:57:32.000Z","interactionStatistic":{"@type":"InteractionCounter","interactionType":"https://schema.org/CommentAction","userInteractionCount":2},"url":"https://github.com/360/XcodeBuildMCP/issues/360"}

route-pattern/_view_fragments/issues/show/:user_id/:repository/:id/issue_layout(.:format)
route-controllervoltron_issues_fragments
route-actionissue_layout
fetch-noncev2:2ca00f8c-ac32-c825-c419-c6d4b4cba564
current-catalog-service-hash81bb79d38c15960b92d99bca9288a9108c7a47b18f2423d0f6438c5b7bcd2114
request-idE85C:1F2B7F:2ABBE7:38663F:6A4D433C
html-safe-nonce5a7ad12ccd364fa33b51cb4a0a6186ef3c16d1757ea5a62572b55079b989b638
visitor-payloadeyJyZWZlcnJlciI6IiIsInJlcXVlc3RfaWQiOiJFODVDOjFGMkI3RjoyQUJCRTc6Mzg2NjNGOjZBNEQ0MzNDIiwidmlzaXRvcl9pZCI6Ijg2MzI5MTMxODQ3NTgyNTIzNDgiLCJyZWdpb25fZWRnZSI6ImlhZCIsInJlZ2lvbl9yZW5kZXIiOiJpYWQifQ==
visitor-hmacf965b4e42f2a242a3a1780e54315df9532ffc66f6ac5b3dc68b67a48bca320bd
hovercard-subject-tagissue:4327639357
github-keyboard-shortcutsrepository,issues,copilot
google-site-verificationApib7-x98H0j5cPqHWwSMm6dNU4GmODRoqxLiDzdx9I
octolytics-urlhttps://collector.github.com/github/collect
analytics-location///voltron/issues_fragments/issue_layout
fb:app_id1401488693436528
apple-itunes-appapp-id=1477376905, app-argument=https://github.com/_view_fragments/issues/show/getsentry/XcodeBuildMCP/360/issue_layout
twitter:imagehttps://opengraph.githubassets.com/870a503bdd87e56966d41b8d89649a51d5b0dbe76b4625fa3f3a9a3521ec89ec/getsentry/XcodeBuildMCP/issues/360
twitter:cardsummary_large_image
og:imagehttps://opengraph.githubassets.com/870a503bdd87e56966d41b8d89649a51d5b0dbe76b4625fa3f3a9a3521ec89ec/getsentry/XcodeBuildMCP/issues/360
og:image:altProblem ToolHandlerContext exposes two booleans that aren't actually used by tools and leak a wire-layer concern into the public tool contract: // src/rendering/types.ts interface ToolHandlerContex...
og:image:width1200
og:image:height600
og:site_nameGitHub
og:typeobject
og:author:usernamecameroncooke
hostnamegithub.com
expected-hostnamegithub.com
None92571a8944142227b7e19cd10918b1ddd06e5066c1ad5bc7e4769cf6140a87e6
turbo-cache-controlno-preview
go-importgithub.com/getsentry/XcodeBuildMCP git https://github.com/getsentry/XcodeBuildMCP.git
octolytics-dimension-user_id1396951
octolytics-dimension-user_logingetsentry
octolytics-dimension-repository_id945551361
octolytics-dimension-repository_nwogetsentry/XcodeBuildMCP
octolytics-dimension-repository_publictrue
octolytics-dimension-repository_is_forkfalse
octolytics-dimension-repository_network_root_id945551361
octolytics-dimension-repository_network_root_nwogetsentry/XcodeBuildMCP
turbo-body-classeslogged-out env-production page-responsive
disable-turbofalse
browser-stats-urlhttps://api.github.com/_private/browser/stats
browser-errors-urlhttps://api.github.com/_private/browser/errors
release56fc8347865a14e2ec811533d68f929cf4e0ec19
ui-targetfull
theme-color#1e2327
color-schemelight dark

Links:

Skip to contenthttps://github.com/getsentry/XcodeBuildMCP/issues/360#start-of-content
https://github.com/
Sign in https://github.com/login?return_to=https%3A%2F%2Fgithub.com%2Fgetsentry%2FXcodeBuildMCP%2Fissues%2F360
GitHub CopilotWrite better code with AIhttps://github.com/features/copilot
GitHub Copilot appDirect agents from issue to mergehttps://github.com/features/ai/github-app
MCP RegistryNewIntegrate external toolshttps://github.com/mcp
ActionsAutomate any workflowhttps://github.com/features/actions
CodespacesInstant dev environmentshttps://github.com/features/codespaces
IssuesPlan and track workhttps://github.com/features/issues
Code ReviewManage code changeshttps://github.com/features/code-review
GitHub Advanced SecurityFind and fix vulnerabilitieshttps://github.com/security/advanced-security
Code securitySecure your code as you buildhttps://github.com/security/advanced-security/code-security
Secret protectionStop leaks before they starthttps://github.com/security/advanced-security/secret-protection
Why GitHubhttps://github.com/why-github
Documentationhttps://docs.github.com
Bloghttps://github.blog
Changeloghttps://github.blog/changelog
Marketplacehttps://github.com/marketplace
View all featureshttps://github.com/features
Enterpriseshttps://github.com/enterprise
Small and medium teamshttps://github.com/team
Startupshttps://github.com/enterprise/startups
Nonprofitshttps://github.com/solutions/industry/nonprofits
App Modernizationhttps://github.com/solutions/use-case/app-modernization
DevSecOpshttps://github.com/solutions/use-case/devsecops
DevOpshttps://github.com/solutions/use-case/devops
CI/CDhttps://github.com/solutions/use-case/ci-cd
View all use caseshttps://github.com/solutions/use-case
Healthcarehttps://github.com/solutions/industry/healthcare
Financial serviceshttps://github.com/solutions/industry/financial-services
Manufacturinghttps://github.com/solutions/industry/manufacturing
Governmenthttps://github.com/solutions/industry/government
View all industrieshttps://github.com/solutions/industry
View all solutionshttps://github.com/solutions
AIhttps://github.com/resources/articles?topic=ai
Software Developmenthttps://github.com/resources/articles?topic=software-development
DevOpshttps://github.com/resources/articles?topic=devops
Securityhttps://github.com/resources/articles?topic=security
View all topicshttps://github.com/resources/articles
Customer storieshttps://github.com/customer-stories
Events & webinarshttps://github.com/resources/events
Ebooks & reportshttps://github.com/resources/whitepapers
Business insightshttps://github.com/solutions/executive-insights
GitHub Skillshttps://skills.github.com
Documentationhttps://docs.github.com
Customer supporthttps://support.github.com
Community forumhttps://github.com/orgs/community/discussions
Trust centerhttps://github.com/trust-center
Partnershttps://github.com/partners
View all resourceshttps://github.com/resources
GitHub SponsorsFund open source developershttps://github.com/sponsors
Security Labhttps://securitylab.github.com
Maintainer Communityhttps://maintainers.github.com
Acceleratorhttps://github.com/accelerator
GitHub Starshttps://stars.github.com
Archive Programhttps://archiveprogram.github.com
Topicshttps://github.com/topics
Trendinghttps://github.com/trending
Collectionshttps://github.com/collections
Enterprise platformAI-powered developer platformhttps://github.com/enterprise
GitHub Advanced SecurityEnterprise-grade security featureshttps://github.com/security/advanced-security
Copilot for BusinessEnterprise-grade AI featureshttps://github.com/features/copilot/copilot-business
Premium SupportEnterprise-grade 24/7 supporthttps://github.com/premium-support
Pricinghttps://github.com/pricing
Search syntax tipshttps://docs.github.com/search-github/github-code-search/understanding-github-code-search-syntax
documentationhttps://docs.github.com/search-github/github-code-search/understanding-github-code-search-syntax
Sign in https://github.com/login?return_to=https%3A%2F%2Fgithub.com%2Fgetsentry%2FXcodeBuildMCP%2Fissues%2F360
Sign up https://github.com/signup?ref_cta=Sign+up&ref_loc=header+logged+out&ref_page=%2F%3Cuser-name%3E%2F%3Crepo-name%3E%2Fvoltron%2Fissues_fragments%2Fissue_layout&source=header-repo&source_repo=getsentry%2FXcodeBuildMCP
Reloadhttps://github.com/getsentry/XcodeBuildMCP/issues/360
Reloadhttps://github.com/getsentry/XcodeBuildMCP/issues/360
Reloadhttps://github.com/getsentry/XcodeBuildMCP/issues/360
Please reload this pagehttps://github.com/getsentry/XcodeBuildMCP/issues/360
getsentry https://github.com/getsentry
XcodeBuildMCPhttps://github.com/getsentry/XcodeBuildMCP
Please reload this pagehttps://github.com/getsentry/XcodeBuildMCP/issues/360
Notifications https://github.com/login?return_to=%2Fgetsentry%2FXcodeBuildMCP
Fork 300 https://github.com/login?return_to=%2Fgetsentry%2FXcodeBuildMCP
Star 6k https://github.com/login?return_to=%2Fgetsentry%2FXcodeBuildMCP
Code https://github.com/getsentry/XcodeBuildMCP
Issues 14 https://github.com/getsentry/XcodeBuildMCP/issues
Pull requests 8 https://github.com/getsentry/XcodeBuildMCP/pulls
Discussions https://github.com/getsentry/XcodeBuildMCP/discussions
Actions https://github.com/getsentry/XcodeBuildMCP/actions
Projects https://github.com/getsentry/XcodeBuildMCP/projects
Security and quality 0 https://github.com/getsentry/XcodeBuildMCP/security
Insights https://github.com/getsentry/XcodeBuildMCP/pulse
Code https://github.com/getsentry/XcodeBuildMCP
Issues https://github.com/getsentry/XcodeBuildMCP/issues
Pull requests https://github.com/getsentry/XcodeBuildMCP/pulls
Discussions https://github.com/getsentry/XcodeBuildMCP/discussions
Actions https://github.com/getsentry/XcodeBuildMCP/actions
Projects https://github.com/getsentry/XcodeBuildMCP/projects
Security and quality https://github.com/getsentry/XcodeBuildMCP/security
Insights https://github.com/getsentry/XcodeBuildMCP/pulse
Remove dead liveProgressEnabled and streamingFragmentsEnabled from ToolHandlerContexthttps://github.com/getsentry/XcodeBuildMCP/issues/360#top
enhancementNew feature or requesthttps://github.com/getsentry/XcodeBuildMCP/issues?q=state%3Aopen%20label%3A%22enhancement%22
https://github.com/cameroncooke
cameroncookehttps://github.com/cameroncooke
on Apr 25, 2026https://github.com/getsentry/XcodeBuildMCP/issues/360#issue-4327639357
enhancementNew feature or requesthttps://github.com/getsentry/XcodeBuildMCP/issues?q=state%3Aopen%20label%3A%22enhancement%22
https://github.com
Termshttps://docs.github.com/site-policy/github-terms/github-terms-of-service
Privacyhttps://docs.github.com/site-policy/privacy-policies/github-privacy-statement
Securityhttps://github.com/security
Statushttps://www.githubstatus.com/
Communityhttps://github.community/
Docshttps://docs.github.com/
Contacthttps://support.github.com?tags=dotcom-footer

Viewport: width=device-width


URLs of crawlers that visited me.