|
6 | 6 | "fmt" |
7 | 7 | "log/slog" |
8 | 8 | "net/http" |
9 | | - "os" |
10 | 9 |
|
11 | 10 | ghcontext "github.com/github/github-mcp-server/pkg/context" |
12 | 11 | "github.com/github/github-mcp-server/pkg/http/transport" |
@@ -95,7 +94,7 @@ type ToolDependencies interface { |
95 | 94 | GetContentWindowSize() int |
96 | 95 |
|
97 | 96 | // IsFeatureEnabled checks if a feature flag is enabled. |
98 | | - IsFeatureEnabled(ctx context.Context, flagName string) bool |
| 97 | + IsFeatureEnabled(ctx context.Context, flag inventory.FeatureFlag) bool |
99 | 98 |
|
100 | 99 | // Logger returns the structured logger, optionally enriched with |
101 | 100 | // request-scoped data from ctx. Integrators provide their own slog.Handler |
@@ -207,19 +206,8 @@ func (d BaseDeps) GetRequestStateSealer() RequestStateSealer { return d.StateSea |
207 | 206 | // IsFeatureEnabled checks if a feature flag is enabled. |
208 | 207 | // Returns false if the feature checker is nil, flag name is empty, or an error occurs. |
209 | 208 | // This allows tools to conditionally change behavior based on feature flags. |
210 | | -func (d BaseDeps) IsFeatureEnabled(ctx context.Context, flagName string) bool { |
211 | | - if d.featureChecker == nil || flagName == "" { |
212 | | - return false |
213 | | - } |
214 | | - |
215 | | - enabled, err := d.featureChecker(ctx, flagName) |
216 | | - if err != nil { |
217 | | - // Log error but don't fail the tool - treat as disabled |
218 | | - fmt.Fprintf(os.Stderr, "Feature flag check error for %q: %v\n", flagName, err) |
219 | | - return false |
220 | | - } |
221 | | - |
222 | | - return enabled |
| 209 | +func (d BaseDeps) IsFeatureEnabled(ctx context.Context, flag inventory.FeatureFlag) bool { |
| 210 | + return inventory.ResolveFeature(ctx, d.featureChecker, flag) |
223 | 211 | } |
224 | 212 |
|
225 | 213 | // NewTool creates a ServerTool that retrieves ToolDependencies from context at call time. |
@@ -496,17 +484,6 @@ func (d *RequestDeps) Metrics(ctx context.Context) metrics.Metrics { |
496 | 484 | } |
497 | 485 |
|
498 | 486 | // IsFeatureEnabled checks if a feature flag is enabled. |
499 | | -func (d *RequestDeps) IsFeatureEnabled(ctx context.Context, flagName string) bool { |
500 | | - if d.featureChecker == nil || flagName == "" { |
501 | | - return false |
502 | | - } |
503 | | - |
504 | | - enabled, err := d.featureChecker(ctx, flagName) |
505 | | - if err != nil { |
506 | | - // Log error but don't fail the tool - treat as disabled |
507 | | - fmt.Fprintf(os.Stderr, "Feature flag check error for %q: %v\n", flagName, err) |
508 | | - return false |
509 | | - } |
510 | | - |
511 | | - return enabled |
| 487 | +func (d *RequestDeps) IsFeatureEnabled(ctx context.Context, flag inventory.FeatureFlag) bool { |
| 488 | + return inventory.ResolveFeature(ctx, d.featureChecker, flag) |
512 | 489 | } |
0 commit comments