mirror of
https://github.com/claude-code-best/claude-code.git
synced 2026-06-25 09:35:52 +00:00
refactor: 拆分 3 个过大 ACP 文件为模块化子文件(每个 <500 行)
通过 4 阶段 workflow(分析 → 计划 → 重构 → 验证)将 3 个超大的 ACP 源文件拆分为 28 个模块化子文件,每个均严格小于 500 行,且完整保留 所有公共 API(barrel 模式重导出)。 变更概要: - packages/acp-link/src/server.ts: 1800 → 20 行(barrel),新增 11 个子模块 (server/types、payload-decode、permission-mode、runtime-state、dispatch、 handlers-agent、handlers-session、acp-client、client-send、start-server、 testing-internals) - src/services/acp/agent.ts: 1297 → 33 行(barrel),新增 9 个子模块 (agent/AcpAgent、sessionTypes、permissionMode、configOptions、promptQueue、 internalAccessors、createSessionMethod、sessionLifecycle、promptFlow) - src/services/acp/bridge.ts: 1516 → 29 行(barrel),新增 8 个子模块 (bridge/types、paths、contentBlocks、toolInfo、toolResults、modelUsage、 notifications、forwarding) 验证: - bun run precheck 全通过(typecheck + lint + 5851 tests) - ACP service tests: 176 pass / 0 fail - ACP link tests: 47 pass / 0 fail - 所有外部消费者(entry.ts、permissions.ts、__tests__/)的 import 路径不变 - 测试文件零修改 迁移计划详见 docs/acp-refactor-plan.md。 Co-Authored-By: glm-5.2 <zai-org@claude-code-best.win>
This commit is contained in:
27
src/services/acp/bridge/modelUsage.ts
Normal file
27
src/services/acp/bridge/modelUsage.ts
Normal file
@@ -0,0 +1,27 @@
|
||||
// Pure helpers used by the forwarding loop to resolve contextWindow from the
|
||||
// modelUsage map by longest prefix match.
|
||||
|
||||
export function commonPrefixLength(a: string, b: string): number {
|
||||
let i = 0
|
||||
const maxLen = Math.min(a.length, b.length)
|
||||
while (i < maxLen && a[i] === b[i]) i++
|
||||
return i
|
||||
}
|
||||
|
||||
export function getMatchingModelUsage(
|
||||
modelUsage: Record<string, { contextWindow?: number }>,
|
||||
currentModel: string,
|
||||
): { contextWindow?: number } | null {
|
||||
let bestKey: string | null = null
|
||||
let bestLen = 0
|
||||
|
||||
for (const key of Object.keys(modelUsage)) {
|
||||
const len = commonPrefixLength(key, currentModel)
|
||||
if (len > bestLen) {
|
||||
bestLen = len
|
||||
bestKey = key
|
||||
}
|
||||
}
|
||||
|
||||
return bestKey ? (modelUsage[bestKey] ?? null) : null
|
||||
}
|
||||
Reference in New Issue
Block a user