fix(app): start MCP servers only for open directories (#28937)

This commit is contained in:
Luke Parker
2026-05-28 21:51:11 +00:00
committed by GitHub
parent 7b56a1cea3
commit e16bfd745d
9 changed files with 180 additions and 23 deletions
+15 -9
View File
@@ -1,26 +1,32 @@
import { onCleanup } from "solid-js"
export function createRefCountMap<T>(create: (key: string) => T) {
export function createRefCountMap<T>(
create: (key: string) => T,
remove?: (key: string) => void,
identity: (key: string) => string = (key) => key,
) {
const items = new Map<string, T>()
const refCounts = new Map<string, number>()
return (key: string) => {
const id = identity(key)
onCleanup(() => {
refCounts.set(key, (refCounts.get(key) ?? 0) - 1)
if (refCounts.get(key) === 0) {
items.delete(key)
refCounts.delete(key)
refCounts.set(id, (refCounts.get(id) ?? 0) - 1)
if (refCounts.get(id) === 0) {
remove?.(id)
items.delete(id)
refCounts.delete(id)
}
})
const cached = items.get(key)
const cached = items.get(id)
if (cached) {
refCounts.set(key, (refCounts.get(key) ?? 0) + 1)
refCounts.set(id, (refCounts.get(id) ?? 0) + 1)
return cached
}
const item = create(key)
items.set(key, item)
refCounts.set(key, 1)
items.set(id, item)
refCounts.set(id, 1)
return item
}
}