refactor: wave 1 - extract leaf modules, rename catch-all files, split index.ts hooks
- Split 25+ index.ts files into hook.ts + extracted modules - Rename all catch-all utils.ts/helpers.ts to domain-specific names - Split src/tools/lsp/ into ~15 focused modules - Split src/tools/delegate-task/ into ~18 focused modules - Separate shared types from implementation - 155 files changed, 60+ new files created - All typecheck clean, 61 tests pass
This commit is contained in:
@@ -0,0 +1,109 @@
|
||||
import { BUILTIN_SERVERS, LSP_INSTALL_HINTS } from "./constants"
|
||||
import { getConfigPaths, getMergedServers, loadAllConfigs } from "./server-config-loader"
|
||||
import { isServerInstalled } from "./server-installation"
|
||||
import type { ServerLookupResult } from "./types"
|
||||
|
||||
export function findServerForExtension(ext: string): ServerLookupResult {
|
||||
const servers = getMergedServers()
|
||||
|
||||
for (const server of servers) {
|
||||
if (server.extensions.includes(ext) && isServerInstalled(server.command)) {
|
||||
return {
|
||||
status: "found",
|
||||
server: {
|
||||
id: server.id,
|
||||
command: server.command,
|
||||
extensions: server.extensions,
|
||||
priority: server.priority,
|
||||
env: server.env,
|
||||
initialization: server.initialization,
|
||||
},
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
for (const server of servers) {
|
||||
if (server.extensions.includes(ext)) {
|
||||
const installHint = LSP_INSTALL_HINTS[server.id] || `Install '${server.command[0]}' and ensure it's in your PATH`
|
||||
return {
|
||||
status: "not_installed",
|
||||
server: {
|
||||
id: server.id,
|
||||
command: server.command,
|
||||
extensions: server.extensions,
|
||||
},
|
||||
installHint,
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
const availableServers = [...new Set(servers.map((s) => s.id))]
|
||||
return {
|
||||
status: "not_configured",
|
||||
extension: ext,
|
||||
availableServers,
|
||||
}
|
||||
}
|
||||
|
||||
export function getAllServers(): Array<{
|
||||
id: string
|
||||
installed: boolean
|
||||
extensions: string[]
|
||||
disabled: boolean
|
||||
source: string
|
||||
priority: number
|
||||
}> {
|
||||
const configs = loadAllConfigs()
|
||||
const servers = getMergedServers()
|
||||
const disabled = new Set<string>()
|
||||
|
||||
for (const config of configs.values()) {
|
||||
if (!config.lsp) continue
|
||||
for (const [id, entry] of Object.entries(config.lsp)) {
|
||||
if (entry.disabled) disabled.add(id)
|
||||
}
|
||||
}
|
||||
|
||||
const result: Array<{
|
||||
id: string
|
||||
installed: boolean
|
||||
extensions: string[]
|
||||
disabled: boolean
|
||||
source: string
|
||||
priority: number
|
||||
}> = []
|
||||
|
||||
const seen = new Set<string>()
|
||||
|
||||
for (const server of servers) {
|
||||
if (seen.has(server.id)) continue
|
||||
result.push({
|
||||
id: server.id,
|
||||
installed: isServerInstalled(server.command),
|
||||
extensions: server.extensions,
|
||||
disabled: false,
|
||||
source: server.source,
|
||||
priority: server.priority,
|
||||
})
|
||||
seen.add(server.id)
|
||||
}
|
||||
|
||||
for (const id of disabled) {
|
||||
if (seen.has(id)) continue
|
||||
const builtin = BUILTIN_SERVERS[id]
|
||||
result.push({
|
||||
id,
|
||||
installed: builtin ? isServerInstalled(builtin.command) : false,
|
||||
extensions: builtin?.extensions || [],
|
||||
disabled: true,
|
||||
source: "disabled",
|
||||
priority: 0,
|
||||
})
|
||||
}
|
||||
|
||||
return result
|
||||
}
|
||||
|
||||
export function getConfigPaths_(): { project: string; user: string; opencode: string } {
|
||||
return getConfigPaths()
|
||||
}
|
||||
Reference in New Issue
Block a user