- 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
110 lines
4.5 KiB
Markdown
110 lines
4.5 KiB
Markdown
# TSC 类型错误修复计划 — 反编译残留(235 个)
|
||
|
||
> **目标:** 基于 `chore/bridge-green`(1 错误)参考,修复 acp 分支 270 个类型错误中的 235 个反编译残留(排除 35 个社区自写代码 bug)。
|
||
|
||
**基线:** `chore/bridge-green` commit `27682acf` — 1 error
|
||
**当前:** `acp` — 270 errors(排除社区代码后 235)
|
||
|
||
---
|
||
|
||
## 错误分类
|
||
|
||
### A 类:缺文件 stub(75 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 1:A 类——批量建 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 2:C 类——补导出和名字(预计消 27 错误)
|
||
1. 补 `contextCollapse` 导出
|
||
2. 补 `feature()` import
|
||
3. 补其他缺失的名字
|
||
|
||
### Phase 3:B + 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` 标注
|