Skip to content

Commit 0d8baad

Browse files
fix(features): defer unknown client availability
Apply pre-feature protocol and elicitation filtering only when stateless request metadata is known, leaving existing middleware to enforce unknown contexts. Co-authored-by: Copilot App <223556219+Copilot@users.noreply.github.com> Copilot-Session: 1e4a1ca6-53f7-4158-af22-35d2448d0b13
1 parent 7f89402 commit 0d8baad

2 files changed

Lines changed: 11 additions & 4 deletions

File tree

‎pkg/inventory/filters.go‎

Lines changed: 6 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -61,10 +61,12 @@ func (r *Inventory) isToolEnabled(ctx context.Context, tool *ServerTool, feature
6161
return false
6262
}
6363
if availability := tool.availability(); !availability.unrestricted() {
64-
if info, ok := ghcontext.MCPMethod(ctx); ok &&
65-
(info.Method == MCPMethodToolsList || info.Method == MCPMethodToolsCall) &&
66-
!toolAvailable(info.ProtocolVersion, info.ClientCapabilities, availability) {
67-
return false
64+
if info, ok := ghcontext.MCPMethod(ctx); ok && (info.Method == MCPMethodToolsList || info.Method == MCPMethodToolsCall) {
65+
known := (availability.minimumProtocolVersion == "" || info.ProtocolVersion != "") &&
66+
(availability.requiredElicitationMode == "" || info.ClientCapabilities != nil)
67+
if known && !toolAvailable(info.ProtocolVersion, info.ClientCapabilities, availability) {
68+
return false
69+
}
6870
}
6971
}
7072
// 4. Check feature availability.

‎pkg/inventory/registry_test.go‎

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1959,6 +1959,11 @@ func TestMCPAvailabilityRunsBeforeFeatureChecks(t *testing.T) {
19591959
})
19601960
require.Len(t, inv.AvailableTools(ctx), 2)
19611961
require.Equal(t, 1, calls)
1962+
1963+
calls = 0
1964+
ctx = ghcontext.WithMCPMethodInfo(context.Background(), &ghcontext.MCPMethodInfo{Method: method})
1965+
require.Len(t, inv.AvailableTools(ctx), 2)
1966+
require.Equal(t, 1, calls)
19621967
})
19631968
}
19641969
}

0 commit comments

Comments
 (0)