Skip to content

Fix Kotlin reducer dropping session/mcpServerStateChanged#202

Open
joshmouch wants to merge 1 commit into
microsoft:mainfrom
joshmouch:pr/fix-kotlin-mcpserver
Open

Fix Kotlin reducer dropping session/mcpServerStateChanged#202
joshmouch wants to merge 1 commit into
microsoft:mainfrom
joshmouch:pr/fix-kotlin-mcpserver

Conversation

@joshmouch

Copy link
Copy Markdown
Contributor

The Kotlin sessionReducer had no arm for the session/mcpServerStateChanged action, so the action was decoded off the wire and then silently ignored — an MCP server customization's state and channel never updated, diverging from the TypeScript reference reducer and the Go/Rust/Swift ports.

Fix

Adds the missing reducer arm: a full replacement of the matched MCP server customization's state and channel, located by id. A top-level McpServer entry is matched first (hosts may surface MCP servers directly at the top level); otherwise the search descends into container children. The action is a no-op when no customization carries the id, or when the matched id belongs to a non-MCP customization type.

Tests

Adds four shared reducer fixtures (159–162) that the cross-language fixture-driven reducer suite picks up automatically — covering the top-level upsert, the container-child upsert, the unknown-id no-op, and the non-MCP-id no-op. ./gradlew test is green.

The Kotlin `sessionReducer` had no arm for the
`session/mcpServerStateChanged` action, so the action was decoded off the
wire and then silently ignored — an MCP server customization's `state` and
`channel` never updated, diverging from the TypeScript reference reducer and
the Go/Rust/Swift ports.

Add the missing reducer arm: a full replacement of the matched MCP server
customization's `state` and `channel`, located by id. A top-level
`McpServer` entry is matched first (hosts may surface MCP servers directly at
the top level); otherwise the search descends into container children. The
action is a no-op when no customization carries the id, or when the matched
id belongs to a non-MCP customization type.

Add four shared reducer fixtures (159-162) that the cross-language
fixture-driven reducer suite picks up automatically, covering the top-level
upsert, the container-child upsert, the unknown-id no-op, and the
non-MCP-id no-op.
@joshmouch joshmouch force-pushed the pr/fix-kotlin-mcpserver branch from c9df98e to 5a3bfda Compare June 9, 2026 01:33
@connor4312 connor4312 enabled auto-merge June 9, 2026 02:16
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.

2 participants