diff --git a/memory-bank/progress.md b/memory-bank/progress.md index 27bd1be..86e6962 100644 --- a/memory-bank/progress.md +++ b/memory-bank/progress.md @@ -2,10 +2,14 @@ ## Current Focus +- 已完成严格 LSP core 生命周期:initialize/shutdown/exit 使用显式状态机, + EOF 与非法 framing 返回非零退出码,launcher 透传服务器退出码 - 已完成 `AsyncExecutor` 协作式取消重构;任务句柄稳定持有结果,按实例取消, - 排队任务取消后不执行,运行中任务通过 `std::stop_token` 退出 -- 已修复 LSP UTF-16 位置到 UTF-8 字节偏移和 Tree-sitter 点位的转换, - 中文与 emoji 增量编辑使用一致坐标 + 请求 ID 区分整数与字符串,运行中任务通过 `std::stop_token` 退出 +- 已修复 LSP UTF-16 与 UTF-8/Tree-sitter 字节坐标的双向转换;增量编辑和 + syntax diagnostics 对中文与 emoji 使用一致位置 +- JSON-RPC 错误、请求异常和 LSP transport framing 均使用严格结构化处理, + 不再保留手写空 JSON、生命周期 Provider 或 staged rollout 开关 - 已完成参数解析与启动错误处理重构;CLI 参数严格校验,日志默认固定到 stderr,启动失败使用受控退出码 - 已完成 Conan 依赖升级;`lsp-server` 当前使用 ConanCenter 可见的最新 @@ -27,13 +31,15 @@ 启动回归测试 - LSP 测试脚本、VSCode 和 Vim 已移除废弃的日志输出选择参数 - 文本坐标转换新增 ASCII、中文、emoji、跨行、越界和无效 UTF-8 - 回归测试;`test_provider` 与 LSP 传输验证通过 + 回归测试;syntax diagnostics 已在 `didOpen` 后实际发布 UTF-16 坐标 - scheduler 使用 current/active 双索引准确处理重复 ID;`WaitAll` 覆盖登记到 Taskflow 入队之间的窗口,取消不在状态锁内触发 stop callback - 系统库、workspace 加载、文件索引和 workspace folder 枚举已传递 `std::stop_token`,并在文件边界检查取消 -- scheduler 新增 13 个生命周期与并发回归用例;`test_scheduler`、 - `test_provider`、`tsl-server` 构建和 LSP 传输冒烟验证通过 +- core 新增真实 stdio 生命周期、JSON-RPC 错误、请求取消、严格 framing 和 + diagnostics 回归;`tsl-server`、`test_scheduler`、`test_provider` 构建通过 +- `test_cli_startup`、`test_core_server`、`test_scheduler` 和 LSP transport + smoke 通过;`test_provider` 为 100/110,失败集合与本次 core 改动前一致 ## Next Steps @@ -45,6 +51,7 @@ 5. 后续任务处理 `--interpreter=~/...` 的主目录展开 6. 另行处理 `test_lsp_json` 的 rename 响应缺少 `result`;旧服务器二进制 同样可复现 +7. 另行修复 `test_provider` 的 10 个既有 Provider 行为断言 ## Open Risks @@ -54,15 +61,18 @@ 会导致脚本类 AST / symbol / semantic CTest 失败 - 系统 CMake 4.4 的 `import std` 实验门值尚未适配;本次使用 CMake 4.3.4 完成构建验证 -- Clang 22 在 C++ Modules 全量重编译期间曾于 `definitions_test.cppm` 出现一次 - 前端崩溃;相同 `-j1` 增量重试成功,未产生源码诊断 +- `test_provider` 仍有 documentHighlight、implementation、configuration、 + refresh、client capability、workDoneProgress、code action、executeCommand 和 + will file operations 共 10 个既有失败 +- Clang 22 在 C++ Modules 全量重编译期间会随机 frontend exit 139;本次在 + Glaze 实例化和 `interpreter_test.cppm` 出现,使用相同 `-j1` 重试成功 - `vscode/bin/tsl-server` 当前是未拉取的 Git LFS 指针,根目录 LSP 冒烟脚本 只能完成语法与参数静态验证 ## Workflow State -phase: planning +phase: done spec: docs/superpowers/specs/2026-07-13-lsp-core-lifecycle-design.md plan: docs/superpowers/plans/2026-07-13-lsp-core-lifecycle.md executor: executing-plans @@ -77,4 +87,5 @@ constraints: karpathy-guidelines,.agents,AGENT_RULES - [x] `2026-07-11-args-parser-startup-errors.md` done - [x] `2026-07-12-text-coordinates-utf16.md` done - [x] `2026-07-12-async-executor-cancellation.md` done +- [x] `2026-07-13-lsp-core-lifecycle.md` done