Skip to content
Merged
Show file tree
Hide file tree
Changes from 1 commit
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Prev Previous commit
Next Next commit
fix: resolve rebase feature flag conflicts
Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
  • Loading branch information
RossTarrant and Copilot committed May 21, 2026
commit bfa6fee63bced0c82f4ceb2e7e237d8b672fa89b
8 changes: 4 additions & 4 deletions pkg/github/issues.go
Original file line number Diff line number Diff line change
Expand Up @@ -348,10 +348,10 @@ Options are:
}

// attachIFC adds the IFC label to a successful tool result when
// InsidersMode is enabled. If the visibility lookup fails the
// IFC labels are enabled. If the visibility lookup fails the
// label is omitted rather than misclassifying the result.
attachIFC := func(r *mcp.CallToolResult) *mcp.CallToolResult {
if r == nil || r.IsError || !deps.GetFlags(ctx).InsidersMode {
if r == nil || r.IsError || !deps.IsFeatureEnabled(ctx, FeatureFlagIFCLabels) {
return r
}
isPrivate, err := FetchRepoIsPrivate(ctx, client, owner, repo)
Expand Down Expand Up @@ -1044,7 +1044,7 @@ func SearchIssues(t translations.TranslationHelperFunc) inventory.ServerTool {
[]scopes.Scope{scopes.Repo},
func(ctx context.Context, deps ToolDependencies, _ *mcp.CallToolRequest, args map[string]any) (*mcp.CallToolResult, any, error) {
var options []searchOption
if deps.GetFlags(ctx).InsidersMode {
if deps.IsFeatureEnabled(ctx, FeatureFlagIFCLabels) {
options = append(options, withSearchPostProcess(searchIssuesIFCPostProcess(deps)))
}
result, err := searchIssuesHandler(ctx, deps, args, options...)
Expand Down Expand Up @@ -1900,7 +1900,7 @@ func ListIssues(t translations.TranslationHelperFunc) inventory.ServerTool {
}

result := MarshalledTextResult(resp)
if deps.GetFlags(ctx).InsidersMode {
if deps.IsFeatureEnabled(ctx, FeatureFlagIFCLabels) {
if result.Meta == nil {
result.Meta = mcp.Meta{}
}
Expand Down
35 changes: 16 additions & 19 deletions pkg/github/issues_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -325,7 +325,6 @@ func Test_IssueRead_IFC_InsidersMode(t *testing.T) {
t.Run("insiders mode disabled omits ifc label", func(t *testing.T) {
deps := BaseDeps{
Client: mustNewGHClient(t, makeMockClient(false, 0)),
Flags: FeatureFlags{InsidersMode: false},
}
handler := serverTool.Handler(deps)

Expand All @@ -339,8 +338,8 @@ func Test_IssueRead_IFC_InsidersMode(t *testing.T) {

t.Run("insiders mode enabled on public repo emits public untrusted", func(t *testing.T) {
deps := BaseDeps{
Client: mustNewGHClient(t, makeMockClient(false, 0)),
Flags: FeatureFlags{InsidersMode: true},
Client: mustNewGHClient(t, makeMockClient(false, 0)),
featureChecker: featureCheckerFor(FeatureFlagIFCLabels),
}
handler := serverTool.Handler(deps)

Expand All @@ -357,8 +356,8 @@ func Test_IssueRead_IFC_InsidersMode(t *testing.T) {

t.Run("insiders mode enabled on private repo with get_comments emits private untrusted", func(t *testing.T) {
deps := BaseDeps{
Client: mustNewGHClient(t, makeMockClient(true, 0)),
Flags: FeatureFlags{InsidersMode: true},
Client: mustNewGHClient(t, makeMockClient(true, 0)),
featureChecker: featureCheckerFor(FeatureFlagIFCLabels),
}
handler := serverTool.Handler(deps)

Expand All @@ -375,8 +374,8 @@ func Test_IssueRead_IFC_InsidersMode(t *testing.T) {

t.Run("insiders mode skips ifc label when visibility lookup fails", func(t *testing.T) {
deps := BaseDeps{
Client: mustNewGHClient(t, makeMockClient(false, http.StatusInternalServerError)),
Flags: FeatureFlags{InsidersMode: true},
Client: mustNewGHClient(t, makeMockClient(false, http.StatusInternalServerError)),
featureChecker: featureCheckerFor(FeatureFlagIFCLabels),
}
handler := serverTool.Handler(deps)

Expand Down Expand Up @@ -910,7 +909,6 @@ func Test_SearchIssues_IFC_InsidersMode(t *testing.T) {
searchResult := &github.IssuesSearchResult{Issues: []*github.Issue{makeIssue("octocat", "public-repo", 1)}}
deps := BaseDeps{
Client: mustNewGHClient(t, makeMockClient(searchResult, []repoFixture{{owner: "octocat", repo: "public-repo"}})),
Flags: FeatureFlags{InsidersMode: false},
}
handler := serverTool.Handler(deps)

Expand All @@ -924,8 +922,8 @@ func Test_SearchIssues_IFC_InsidersMode(t *testing.T) {
t.Run("insiders mode all public emits public untrusted", func(t *testing.T) {
searchResult := &github.IssuesSearchResult{Issues: []*github.Issue{makeIssue("octocat", "public-repo", 1)}}
deps := BaseDeps{
Client: mustNewGHClient(t, makeMockClient(searchResult, []repoFixture{{owner: "octocat", repo: "public-repo"}})),
Flags: FeatureFlags{InsidersMode: true},
Client: mustNewGHClient(t, makeMockClient(searchResult, []repoFixture{{owner: "octocat", repo: "public-repo"}})),
featureChecker: featureCheckerFor(FeatureFlagIFCLabels),
}
handler := serverTool.Handler(deps)

Expand All @@ -950,7 +948,7 @@ func Test_SearchIssues_IFC_InsidersMode(t *testing.T) {
{owner: "octocat", repo: "private-repo", isPrivate: true},
{owner: "octocat", repo: "public-repo"},
})),
Flags: FeatureFlags{InsidersMode: true},
featureChecker: featureCheckerFor(FeatureFlagIFCLabels),
}
handler := serverTool.Handler(deps)

Expand All @@ -971,7 +969,7 @@ func Test_SearchIssues_IFC_InsidersMode(t *testing.T) {
Client: mustNewGHClient(t, makeMockClient(searchResult, []repoFixture{
{owner: "octocat", repo: "broken", repoStatus: http.StatusInternalServerError},
})),
Flags: FeatureFlags{InsidersMode: true},
featureChecker: featureCheckerFor(FeatureFlagIFCLabels),
}
handler := serverTool.Handler(deps)

Expand All @@ -989,8 +987,8 @@ func Test_SearchIssues_IFC_InsidersMode(t *testing.T) {
t.Run("insiders mode empty results emits public untrusted", func(t *testing.T) {
searchResult := &github.IssuesSearchResult{Issues: []*github.Issue{}}
deps := BaseDeps{
Client: mustNewGHClient(t, makeMockClient(searchResult, nil)),
Flags: FeatureFlags{InsidersMode: true},
Client: mustNewGHClient(t, makeMockClient(searchResult, nil)),
featureChecker: featureCheckerFor(FeatureFlagIFCLabels),
}
handler := serverTool.Handler(deps)

Expand Down Expand Up @@ -1876,7 +1874,6 @@ func Test_ListIssues_IFC_InsidersMode(t *testing.T) {
gqlClient := githubv4.NewClient(githubv4mock.NewMockedHTTPClient(matcher))
deps := BaseDeps{
GQLClient: gqlClient,
Flags: FeatureFlags{InsidersMode: false},
}
handler := serverTool.Handler(deps)

Expand All @@ -1892,8 +1889,8 @@ func Test_ListIssues_IFC_InsidersMode(t *testing.T) {
matcher := githubv4mock.NewQueryMatcher(query, vars, makeResponse(false))
gqlClient := githubv4.NewClient(githubv4mock.NewMockedHTTPClient(matcher))
deps := BaseDeps{
GQLClient: gqlClient,
Flags: FeatureFlags{InsidersMode: true},
GQLClient: gqlClient,
featureChecker: featureCheckerFor(FeatureFlagIFCLabels),
}
handler := serverTool.Handler(deps)

Expand All @@ -1919,8 +1916,8 @@ func Test_ListIssues_IFC_InsidersMode(t *testing.T) {
matcher := githubv4mock.NewQueryMatcher(query, vars, makeResponse(true))
gqlClient := githubv4.NewClient(githubv4mock.NewMockedHTTPClient(matcher))
deps := BaseDeps{
GQLClient: gqlClient,
Flags: FeatureFlags{InsidersMode: true},
GQLClient: gqlClient,
featureChecker: featureCheckerFor(FeatureFlagIFCLabels),
}
handler := serverTool.Handler(deps)

Expand Down
4 changes: 2 additions & 2 deletions pkg/github/repositories.go
Original file line number Diff line number Diff line change
Expand Up @@ -741,7 +741,7 @@ func GetFileContents(t translations.TranslationHelperFunc) inventory.ServerTool
}

// attachIFC adds the IFC label to a successful tool result when
// InsidersMode is enabled. The visibility lookup is performed
// IFC labels are enabled. The visibility lookup is performed
// lazily on first use and cached because GetFileContents has
// many possible return paths and would otherwise re-fetch on
// each. If the visibility lookup fails we skip the label rather
Expand All @@ -752,7 +752,7 @@ func GetFileContents(t translations.TranslationHelperFunc) inventory.ServerTool
ifcIsPrivate bool
)
attachIFC := func(r *mcp.CallToolResult) *mcp.CallToolResult {
if r == nil || r.IsError || !deps.GetFlags(ctx).InsidersMode {
if r == nil || r.IsError || !deps.IsFeatureEnabled(ctx, FeatureFlagIFCLabels) {
return r
}
if !ifcLabelKnown {
Expand Down
13 changes: 6 additions & 7 deletions pkg/github/repositories_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -521,7 +521,6 @@ func Test_GetFileContents_IFC_InsidersMode(t *testing.T) {
t.Run("insiders mode disabled omits ifc label from result meta", func(t *testing.T) {
deps := BaseDeps{
Client: mustNewGHClient(t, makeMockClient(false)),
Flags: FeatureFlags{InsidersMode: false},
}
handler := serverTool.Handler(deps)

Expand All @@ -535,8 +534,8 @@ func Test_GetFileContents_IFC_InsidersMode(t *testing.T) {

t.Run("insiders mode enabled on public repo emits public untrusted label", func(t *testing.T) {
deps := BaseDeps{
Client: mustNewGHClient(t, makeMockClient(false)),
Flags: FeatureFlags{InsidersMode: true},
Client: mustNewGHClient(t, makeMockClient(false)),
featureChecker: featureCheckerFor(FeatureFlagIFCLabels),
}
handler := serverTool.Handler(deps)

Expand All @@ -560,8 +559,8 @@ func Test_GetFileContents_IFC_InsidersMode(t *testing.T) {

t.Run("insiders mode enabled on private repo emits private trusted label", func(t *testing.T) {
deps := BaseDeps{
Client: mustNewGHClient(t, makeMockClient(true)),
Flags: FeatureFlags{InsidersMode: true},
Client: mustNewGHClient(t, makeMockClient(true)),
featureChecker: featureCheckerFor(FeatureFlagIFCLabels),
}
handler := serverTool.Handler(deps)

Expand Down Expand Up @@ -604,8 +603,8 @@ func Test_GetFileContents_IFC_InsidersMode(t *testing.T) {
},
})
deps := BaseDeps{
Client: mustNewGHClient(t, mockedClient),
Flags: FeatureFlags{InsidersMode: true},
Client: mustNewGHClient(t, mockedClient),
featureChecker: featureCheckerFor(FeatureFlagIFCLabels),
}
handler := serverTool.Handler(deps)

Expand Down
2 changes: 1 addition & 1 deletion pkg/github/search.go
Original file line number Diff line number Diff line change
Expand Up @@ -163,7 +163,7 @@ func SearchRepositories(t translations.TranslationHelperFunc) inventory.ServerTo
}

callResult := utils.NewToolResultText(string(r))
if deps.GetFlags(ctx).InsidersMode {
if deps.IsFeatureEnabled(ctx, FeatureFlagIFCLabels) {
attachSearchRepositoriesIFCLabel(result.Repositories, callResult)
}
return callResult, nil, nil
Expand Down
9 changes: 4 additions & 5 deletions pkg/github/search_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -207,7 +207,6 @@ func Test_SearchRepositories_IFC_InsidersMode(t *testing.T) {
t.Run("insiders mode disabled omits ifc label", func(t *testing.T) {
deps := BaseDeps{
Client: mustNewGHClient(t, makeMockClient([]repoFixture{{owner: "octocat", name: "public-repo"}})),
Flags: FeatureFlags{InsidersMode: false},
}
handler := serverTool.Handler(deps)

Expand All @@ -224,7 +223,7 @@ func Test_SearchRepositories_IFC_InsidersMode(t *testing.T) {
{owner: "octocat", name: "public-a"},
{owner: "octocat", name: "public-b"},
})),
Flags: FeatureFlags{InsidersMode: true},
featureChecker: featureCheckerFor(FeatureFlagIFCLabels),
}
handler := serverTool.Handler(deps)

Expand All @@ -245,7 +244,7 @@ func Test_SearchRepositories_IFC_InsidersMode(t *testing.T) {
{owner: "octocat", name: "private-repo", isPrivate: true},
{owner: "octocat", name: "public-repo"},
})),
Flags: FeatureFlags{InsidersMode: true},
featureChecker: featureCheckerFor(FeatureFlagIFCLabels),
}
handler := serverTool.Handler(deps)

Expand All @@ -262,8 +261,8 @@ func Test_SearchRepositories_IFC_InsidersMode(t *testing.T) {

t.Run("insiders mode empty results emits public untrusted", func(t *testing.T) {
deps := BaseDeps{
Client: mustNewGHClient(t, makeMockClient(nil)),
Flags: FeatureFlags{InsidersMode: true},
Client: mustNewGHClient(t, makeMockClient(nil)),
featureChecker: featureCheckerFor(FeatureFlagIFCLabels),
}
handler := serverTool.Handler(deps)

Expand Down
Loading