Cache dynamic JSON schemas with invalidation (#46824)
Dynamic schemas (settings, settings/lsp/*, debug_tasks) are now cached
after first generation and returned immediately via Task::ready() on
subsequent requests.
Cache is invalidated when `notify_schema_changed()` is called, which
happens when:
- Extensions are installed/uninstalled (affects settings schema)
- DAP registry changes (affects debug_tasks schema)
This eliminates repeated foreground thread blocking for the same dynamic
schema.
**Note:** This PR is based on #46823 and should be merged after it.
Release Notes:
- N/A
---------
Co-authored-by: Ben Kunkle <ben@zed.dev>
6e0dc03c1eRichard Feldman committed on 1/15/2026, 3:28:04 PM· committed by GitHubparent3d0222a