[Experiment] Bitmap-based tool index for O(1) filtering #1637
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
This is an experiment exploring bitmap-based indexing for efficient tool filtering. Not intended for immediate merge - just capturing the approach for discussion.
Problem
In stateless server patterns, we rebuild tool lists per-request. With ~130 tools and multiple filter dimensions (toolsets, read-only, feature flags), filtering becomes O(n × filters).
Approach
Pre-compute bitmaps at startup, then use bitwise operations for O(1) filtering:
What's included
bitmap.go-ToolBitmaptype (256-bit, 4×uint64) with Set/And/Or/Iteratetool_index.go- Pre-computed index withQuery()andMaterialize()tool_variants.go- Simple override mechanism for tools with variant definitionsBenchmarks
Key design decisions
ApplyToTools- no allocs when no overrides matchOpen questions
ToolIndexpublicly or keep it internal?