claude-code-best/docs/plans/tsc-decompile-fix-plan.md
James Feng 315b0bd80e fix(tsc): Phase 1 — add 25 stub files, eliminate all Cannot find module errors (270→204)
- 25 stub files: types/tools, types/utils, contextCollapse, mcpSkills, etc.
- 11 reused from chore/bridge-green, 14 created from scratch
- All stubs documented in docs/devlog/02-tsc-stubs.md
- Build passes, tests not regressed
2026-06-07 10:41:02 +08:00

4.5 KiB
Raw Blame History

TSC 类型错误修复计划 — 反编译残留235 个)

目标: 基于 chore/bridge-green1 错误)参考,修复 acp 分支 270 个类型错误中的 235 个反编译残留(排除 35 个社区自写代码 bug

基线: chore/bridge-green commit 27682acf — 1 error
当前: acp — 270 errors排除社区代码后 235


错误分类

A 类:缺文件 stub75 errors

缺失模块 引用次数 Bridge-green 状态
src/types/tools.js 17 文件不存在但无引用(或导出已补齐)
src/types/utils.js 15 同上
src/services/contextCollapse/persist.js 3 同上
src/services/contextCollapse/operations.js 2 同上
src/services/compact/snipProjection.js 3 同上
src/types/messageQueueTypes.js 3 同上
src/skills/mcpSkills.js 2 同上
src/services/skillSearch/signals.js 2 同上
src/services/compact/cachedMCConfig.js 1 同上
src/utils/toolSearch.js 1 同上
src/utils/postCommitAttribution.js 1 同上
src/memdir/memoryShapeTelemetry.js 2 同上
components/messages/SnipBoundaryMessage.js 1 同上
components/messages/UserGitHubWebhookMessage.js 1 同上
components/messages/UserForkBoilerplateMessage.js 1 同上
components/messages/UserCrossSessionMessage.js 1 同上
components/permissions/.../ReviewArtifactPermissionRequest.js 1 同上
components/design-system/Byline.js 2 同上
components/design-system/Dialog.js 2 同上
components/design-system/KeyboardShortcutHint.js 2 同上
tools/ToolSearchTool/constants.js 2 同上
commands/peers/index.js 1 同上
commands/fork/index.js 1 同上
environment-runner/main.js 1 同上
self-hosted-runner/main.js 1 同上
其他零散 ~5 同上

修复策略: 每个缺失文件创建最小 stub注释标记为 // STUB: 待补全每个 stub 必须在 docs/devlog/02-tsc-stubs.md 中详细记录,包含:

  • 文件路径
  • 被哪些文件引用
  • 最小导出内容
  • 补全优先级(高/中/低)

B 类:unknown 类型泛滥78 errors

重灾区文件 数量 根因
src/utils/task/framework.ts 9 getState() 返回 unknown
src/utils/teammate.ts 8 状态对象类型为 unknown
src/hooks/useCancelRequest.ts 7 任务对象类型丢失
src/commands/context/context-noninteractive.ts 8 contextCollapse 方法类型缺失
src/components/PromptInput/PromptInput.tsx 7 多处 unknown 参数
src/components/ContextVisualization.tsx 7 同上
src/components/TokenWarning.tsx 6 同上
其他 26

修复策略: 逐文件加类型标注,参考 bridge-green 版本。部分 unknown 来自缺失的类型定义文件(与 A 类关联)。

C 类:缺导出/缺名字27 errors

根因 数量 修复
Cannot find name 'feature' 2 加 import
Cannot find name — contextCollapse 方法 ~10 补 contextCollapse/index.js 导出
Cannot find name — 其他 ~13 逐项补 import 或 stub
no exported member 2 补导出

D 类类型不匹配50+ errors

类别 数量 修复
Property 不存在 ~40 加类型字段或 as 断言
类型转换错误 4 as unknown as
重复标识符 2 删重
参数类型错误 ~10 收窄类型

执行顺序

Phase 1A 类——批量建 stub预计消 75 错误)

  1. 创建 src/types/tools.js stub
  2. 创建 src/types/utils.js stub
  3. 创建其他缺失文件的 stub
  4. 记录所有 stub 到 docs/devlog/02-tsc-stubs.md

Phase 2C 类——补导出和名字(预计消 27 错误)

  1. contextCollapse 导出
  2. feature() import
  3. 补其他缺失的名字

Phase 3B + D 类——类型收窄(预计消 130+ 错误)

  1. 从 bridge-green 逐文件参考修复
  2. 优先高密度文件task/framework.ts 9 个teammate.ts 8 个)

约束

  1. 不修社区代码ACP、RCS、Bridge、autofix-pr、swarm、ssh 等社区自写功能
  2. 每个 stub 必须文档化docs/devlog/02-tsc-stubs.md 详细记录
  3. 构建必须保持通过:每批修复后 bun run build
  4. 测试不能回归:每批修复后 bun run test
  5. 不引入 as any:用正确类型或 // @ts-expect-error 标注