@liangjie559567/ultrapower 7.6.0 → 7.7.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/.claude-plugin/marketplace.json +2 -2
- package/.claude-plugin/plugin.json +1 -1
- package/README.md +2 -2
- package/bridge/mcp-server.cjs +1 -0
- package/dist/lib/atomic-write.d.ts.map +1 -1
- package/dist/lib/atomic-write.js +2 -0
- package/dist/lib/atomic-write.js.map +1 -1
- package/dist/lib/logger.d.ts.map +1 -1
- package/dist/lib/logger.js +9 -4
- package/dist/lib/logger.js.map +1 -1
- package/dist/security/concurrency-control.d.ts +7 -0
- package/dist/security/concurrency-control.d.ts.map +1 -1
- package/dist/security/concurrency-control.js +22 -0
- package/dist/security/concurrency-control.js.map +1 -1
- package/docs/CLAUDE.md +2 -2
- package/docs/CODE_BASED_FLOW.md +12 -12
- package/docs/COMPATIBILITY.md +1 -1
- package/docs/FEATURES.md +16 -16
- package/docs/INSTALL.md +2 -2
- package/docs/MIGRATION.md +2 -2
- package/docs/OMC-CLAUDE.md +1 -1
- package/docs/REFERENCE.md +14 -14
- package/docs/UPGRADE_VERIFICATION.md +1 -1
- package/docs/agent-templates/README.md +2 -2
- package/docs/api/media/INSTALL.md +2 -2
- package/docs/api/media/MIGRATION.md +2 -2
- package/docs/api/media/REFERENCE.md +14 -14
- package/docs/api/media/mcp-server-usage.md +4 -4
- package/docs/architecture/ultrapower-flow-analysis.md +1 -1
- package/docs/getting-started/quickstart.md +1 -1
- package/docs/glossary.md +1 -1
- package/docs/guides/mcp-server-usage.md +4 -4
- package/docs/guides/tool-name-migration.md +12 -12
- package/docs/mcp/configuration.md +5 -5
- package/docs/mcp/performance.md +5 -5
- package/docs/mcp-compatibility-matrix.md +1 -1
- package/docs/partials/agent-tiers.md +24 -24
- package/docs/partials/features.md +1 -1
- package/docs/partials/verification-tiers.md +2 -2
- package/docs/plans/2026-02-24-superpowers-ultrapower-integration-design.md +2 -2
- package/docs/plans/2026-03-02-docs-comprehensive-update.md +16 -16
- package/docs/plans/2026-03-05-mcp-adoption-atomic-tasks.md +9 -9
- package/docs/plans/2026-03-16-tech-debt-fixes.md +222 -0
- package/docs/prd/bugs-pain-points-audit-dag.md +297 -297
- package/docs/prd/bugs-pain-points-audit-draft.md +154 -154
- package/docs/prd/bugs-pain-points-audit-manifest.md +650 -650
- package/docs/prd/bugs-pain-points-audit-rough.md +654 -654
- package/docs/reports/tech-debt-verification-2026-03-16.md +87 -0
- package/docs/reviews/bugs-pain-points-audit/review_critic.md +213 -213
- package/docs/reviews/bugs-pain-points-audit/review_domain.md +247 -247
- package/docs/reviews/bugs-pain-points-audit/review_product.md +189 -189
- package/docs/reviews/bugs-pain-points-audit/review_tech.md +382 -382
- package/docs/reviews/bugs-pain-points-audit/review_ux.md +161 -161
- package/docs/reviews/bugs-pain-points-audit/summary.md +129 -129
- package/docs/reviews/bugs-pain-points-audit/tech-debt-v7.6.0-code-review.md +328 -0
- package/docs/shared/agent-tiers.md +24 -24
- package/docs/shared/features.md +1 -1
- package/docs/shared/verification-tiers.md +2 -2
- package/docs/standards/runtime-protection.md +7 -0
- package/docs/troubleshooting.md +1 -1
- package/package.json +1 -1
|
@@ -70,8 +70,8 @@ Edit `~/.claude/claude_desktop_config.json`:
|
|
|
70
70
|
After configuration, restart Claude Desktop. The MCP server tools should appear in the tool list:
|
|
71
71
|
|
|
72
72
|
```
|
|
73
|
-
|
|
74
|
-
|
|
73
|
+
mcp__plugin_ultrapower_t__lsp_hover
|
|
74
|
+
mcp__plugin_ultrapower_t__lsp_goto_definition
|
|
75
75
|
mcp__plugin_ultrapower_t__ultrapower:ast_grep_search
|
|
76
76
|
... (64 tools total - each tool has both new and legacy names)
|
|
77
77
|
```
|
|
@@ -121,12 +121,12 @@ Restart Cursor. Check the MCP panel to confirm the server is connected and all 3
|
|
|
121
121
|
|
|
122
122
|
Get type information at cursor position:
|
|
123
123
|
```
|
|
124
|
-
Use
|
|
124
|
+
Use mcp__plugin_ultrapower_t__lsp_hover with file and position
|
|
125
125
|
```
|
|
126
126
|
|
|
127
127
|
Find all references to a symbol:
|
|
128
128
|
```
|
|
129
|
-
Use
|
|
129
|
+
Use mcp__plugin_ultrapower_t__lsp_find_references to locate usage
|
|
130
130
|
```
|
|
131
131
|
|
|
132
132
|
### AST Tools
|
|
@@ -17,29 +17,29 @@ Starting from v5.6.0, all ultrapower tools use the `ultrapower:` prefix instead
|
|
|
17
17
|
|
|
18
18
|
### LSP Tools
|
|
19
19
|
|
|
20
|
-
* `lsp_hover` → `ultrapower:lsp_hover`
|
|
20
|
+
* `ultrapower:lsp_hover` → `ultrapower:lsp_hover`
|
|
21
21
|
|
|
22
|
-
* `lsp_goto_definition` → `ultrapower:lsp_goto_definition`
|
|
22
|
+
* `ultrapower:lsp_goto_definition` → `ultrapower:lsp_goto_definition`
|
|
23
23
|
|
|
24
|
-
* `lsp_find_references` → `ultrapower:lsp_find_references`
|
|
24
|
+
* `ultrapower:lsp_find_references` → `ultrapower:lsp_find_references`
|
|
25
25
|
|
|
26
|
-
* `lsp_document_symbols` → `ultrapower:lsp_document_symbols`
|
|
26
|
+
* `ultrapower:lsp_document_symbols` → `ultrapower:lsp_document_symbols`
|
|
27
27
|
|
|
28
|
-
* `lsp_workspace_symbols` → `ultrapower:lsp_workspace_symbols`
|
|
28
|
+
* `ultrapower:lsp_workspace_symbols` → `ultrapower:lsp_workspace_symbols`
|
|
29
29
|
|
|
30
|
-
* `lsp_diagnostics` → `ultrapower:lsp_diagnostics`
|
|
30
|
+
* `ultrapower:lsp_diagnostics` → `ultrapower:lsp_diagnostics`
|
|
31
31
|
|
|
32
|
-
* `lsp_diagnostics_directory` → `ultrapower:lsp_diagnostics_directory`
|
|
32
|
+
* `ultrapower:lsp_diagnostics_directory` → `ultrapower:lsp_diagnostics_directory`
|
|
33
33
|
|
|
34
|
-
* `lsp_servers` → `ultrapower:lsp_servers`
|
|
34
|
+
* `ultrapower:lsp_servers` → `ultrapower:lsp_servers`
|
|
35
35
|
|
|
36
|
-
* `lsp_prepare_rename` → `ultrapower:lsp_prepare_rename`
|
|
36
|
+
* `ultrapower:lsp_prepare_rename` → `ultrapower:lsp_prepare_rename`
|
|
37
37
|
|
|
38
|
-
* `lsp_rename` → `ultrapower:lsp_rename`
|
|
38
|
+
* `ultrapower:lsp_rename` → `ultrapower:lsp_rename`
|
|
39
39
|
|
|
40
|
-
* `lsp_code_actions` → `ultrapower:lsp_code_actions`
|
|
40
|
+
* `ultrapower:lsp_code_actions` → `ultrapower:lsp_code_actions`
|
|
41
41
|
|
|
42
|
-
* `lsp_code_action_resolve` → `ultrapower:lsp_code_action_resolve`
|
|
42
|
+
* `ultrapower:lsp_code_action_resolve` → `ultrapower:lsp_code_action_resolve`
|
|
43
43
|
|
|
44
44
|
### State Tools
|
|
45
45
|
|
|
@@ -91,7 +91,7 @@ Location: `.claude/mcp.json` (workspace)
|
|
|
91
91
|
"args": ["bridge/mcp-server.cjs"],
|
|
92
92
|
"disabled": false,
|
|
93
93
|
"autoApprove": [
|
|
94
|
-
"lsp_hover",
|
|
94
|
+
"ultrapower:lsp_hover",
|
|
95
95
|
"state_read",
|
|
96
96
|
"notepad_read"
|
|
97
97
|
]
|
|
@@ -137,8 +137,8 @@ Edit `src/mcp/timeout.ts`:
|
|
|
137
137
|
|
|
138
138
|
```typescript
|
|
139
139
|
export const TOOL_TIMEOUTS: Record<string, number> = {
|
|
140
|
-
lsp_hover: 30000,
|
|
141
|
-
lsp_diagnostics: 60000,
|
|
140
|
+
ultrapower:lsp_hover: 30000,
|
|
141
|
+
ultrapower:lsp_diagnostics: 60000,
|
|
142
142
|
ast_grep_search: 60000,
|
|
143
143
|
ask_codex: 300000,
|
|
144
144
|
ask_gemini: 300000
|
|
@@ -160,8 +160,8 @@ Skip permission prompts for trusted tools:
|
|
|
160
160
|
"mcpServers": {
|
|
161
161
|
"ultrapower": {
|
|
162
162
|
"autoApprove": [
|
|
163
|
-
"lsp_hover",
|
|
164
|
-
"lsp_goto_definition",
|
|
163
|
+
"ultrapower:lsp_hover",
|
|
164
|
+
"ultrapower:lsp_goto_definition",
|
|
165
165
|
"state_read",
|
|
166
166
|
"notepad_read",
|
|
167
167
|
"project_memory_read"
|
package/docs/mcp/performance.md
CHANGED
|
@@ -6,9 +6,9 @@
|
|
|
6
6
|
|
|
7
7
|
| Tool | Cold Start | Warm | Notes |
|
|
8
8
|
| ------ | ----------- | ------ | ------- |
|
|
9
|
-
| `lsp_hover` | 150ms | 20ms | LSP server cached |
|
|
10
|
-
| `lsp_diagnostics` | 300ms | 50ms | File-level |
|
|
11
|
-
| `lsp_diagnostics_directory` | 2s | 500ms | Directory scan |
|
|
9
|
+
| `ultrapower:lsp_hover` | 150ms | 20ms | LSP server cached |
|
|
10
|
+
| `ultrapower:lsp_diagnostics` | 300ms | 50ms | File-level |
|
|
11
|
+
| `ultrapower:lsp_diagnostics_directory` | 2s | 500ms | Directory scan |
|
|
12
12
|
| `ast_grep_search` | 100ms | 30ms | Pattern complexity varies |
|
|
13
13
|
| `state_read` | 10ms | 5ms | JSON parse |
|
|
14
14
|
| `notepad_read` | 15ms | 8ms | Markdown parse |
|
|
@@ -137,8 +137,8 @@ await mcp__plugin_ultrapower_t__lsp_diagnostics_directory({
|
|
|
137
137
|
|
|
138
138
|
Output includes timing:
|
|
139
139
|
```
|
|
140
|
-
[debug] lsp_hover started
|
|
141
|
-
[debug] lsp_hover completed in 23ms
|
|
140
|
+
[debug] ultrapower:lsp_hover started
|
|
141
|
+
[debug] ultrapower:lsp_hover completed in 23ms
|
|
142
142
|
```
|
|
143
143
|
|
|
144
144
|
### Measure Tool Calls
|
|
@@ -47,7 +47,7 @@ All community MCP server tools use the format: `mcp__servername__toolname`
|
|
|
47
47
|
|
|
48
48
|
Internal OMC tools do not use namespace prefixes:
|
|
49
49
|
|
|
50
|
-
* `lsp_*` - Language Server Protocol tools
|
|
50
|
+
* `ultrapower:lsp_*` - Language Server Protocol tools
|
|
51
51
|
|
|
52
52
|
* `ast_grep_*` - AST manipulation tools
|
|
53
53
|
|
|
@@ -116,18 +116,18 @@ Task(subagent_type="ultrapower:explore",
|
|
|
116
116
|
|
|
117
117
|
| 工具 | 类别 | 用途 | 是否分配给 Agent? |
|
|
118
118
|
| ------ | ---------- | --------- | --------------------- |
|
|
119
|
-
| `lsp_hover` | LSP | 获取代码位置的类型信息和文档 | 否(orchestrator 直接使用) |
|
|
120
|
-
| `lsp_goto_definition` | LSP | 跳转到符号定义处 | 否(orchestrator 直接使用) |
|
|
121
|
-
| `lsp_find_references` | LSP | 查找符号在代码库中的所有用法 | 是(仅 `explore`) |
|
|
122
|
-
| `lsp_document_symbols` | LSP | 获取文件中所有符号的概览 | 是 |
|
|
123
|
-
| `lsp_workspace_symbols` | LSP | 按名称在工作区中搜索符号 | 是 |
|
|
124
|
-
| `lsp_diagnostics` | LSP | 获取文件的错误、警告和提示 | 是 |
|
|
125
|
-
| `lsp_diagnostics_directory` | LSP | 项目级类型检查(tsc --noEmit 或 LSP) | 是 |
|
|
126
|
-
| `lsp_prepare_rename` | LSP | 检查符号是否可以重命名 | 否(orchestrator 直接使用) |
|
|
127
|
-
| `lsp_rename` | LSP | 在整个项目中重命名符号 | 否(orchestrator 直接使用) |
|
|
128
|
-
| `lsp_code_actions` | LSP | 获取可用的重构和快速修复 | 否(orchestrator 直接使用) |
|
|
129
|
-
| `lsp_code_action_resolve` | LSP | 获取代码操作的完整编辑详情 | 否(orchestrator 直接使用) |
|
|
130
|
-
| `lsp_servers` | LSP | 列出可用的语言服务器及安装状态 | 否(orchestrator 直接使用) |
|
|
119
|
+
| `ultrapower:lsp_hover` | LSP | 获取代码位置的类型信息和文档 | 否(orchestrator 直接使用) |
|
|
120
|
+
| `ultrapower:lsp_goto_definition` | LSP | 跳转到符号定义处 | 否(orchestrator 直接使用) |
|
|
121
|
+
| `ultrapower:lsp_find_references` | LSP | 查找符号在代码库中的所有用法 | 是(仅 `explore`) |
|
|
122
|
+
| `ultrapower:lsp_document_symbols` | LSP | 获取文件中所有符号的概览 | 是 |
|
|
123
|
+
| `ultrapower:lsp_workspace_symbols` | LSP | 按名称在工作区中搜索符号 | 是 |
|
|
124
|
+
| `ultrapower:lsp_diagnostics` | LSP | 获取文件的错误、警告和提示 | 是 |
|
|
125
|
+
| `ultrapower:lsp_diagnostics_directory` | LSP | 项目级类型检查(tsc --noEmit 或 LSP) | 是 |
|
|
126
|
+
| `ultrapower:lsp_prepare_rename` | LSP | 检查符号是否可以重命名 | 否(orchestrator 直接使用) |
|
|
127
|
+
| `ultrapower:lsp_rename` | LSP | 在整个项目中重命名符号 | 否(orchestrator 直接使用) |
|
|
128
|
+
| `ultrapower:lsp_code_actions` | LSP | 获取可用的重构和快速修复 | 否(orchestrator 直接使用) |
|
|
129
|
+
| `ultrapower:lsp_code_action_resolve` | LSP | 获取代码操作的完整编辑详情 | 否(orchestrator 直接使用) |
|
|
130
|
+
| `ultrapower:lsp_servers` | LSP | 列出可用的语言服务器及安装状态 | 否(orchestrator 直接使用) |
|
|
131
131
|
| `ast_grep_search` | AST | 基于 AST 的模式化结构代码搜索 | 是 |
|
|
132
132
|
| `ast_grep_replace` | AST | 基于模式的结构化代码转换 | 是 |
|
|
133
133
|
| `python_repl` | Data | 用于数据分析和计算的持久化 Python REPL | 是 |
|
|
@@ -154,30 +154,30 @@ Task(subagent_type="ultrapower:explore",
|
|
|
154
154
|
|
|
155
155
|
| 工具 | 直接使用时机 |
|
|
156
156
|
| ------ | --------------------- |
|
|
157
|
-
| `lsp_hover` | 对话中快速查询类型 |
|
|
158
|
-
| `lsp_goto_definition` | 分析过程中导航到符号定义 |
|
|
159
|
-
| `lsp_prepare_rename` | 在决定方案前检查重命名可行性 |
|
|
160
|
-
| `lsp_rename` | 安全重命名操作(返回编辑预览,不自动应用) |
|
|
161
|
-
| `lsp_code_actions` | 发现可用的重构操作 |
|
|
162
|
-
| `lsp_code_action_resolve` | 获取特定代码操作的详情 |
|
|
163
|
-
| `lsp_servers` | 检查语言服务器可用性 |
|
|
157
|
+
| `ultrapower:lsp_hover` | 对话中快速查询类型 |
|
|
158
|
+
| `ultrapower:lsp_goto_definition` | 分析过程中导航到符号定义 |
|
|
159
|
+
| `ultrapower:lsp_prepare_rename` | 在决定方案前检查重命名可行性 |
|
|
160
|
+
| `ultrapower:lsp_rename` | 安全重命名操作(返回编辑预览,不自动应用) |
|
|
161
|
+
| `ultrapower:lsp_code_actions` | 发现可用的重构操作 |
|
|
162
|
+
| `ultrapower:lsp_code_action_resolve` | 获取特定代码操作的详情 |
|
|
163
|
+
| `ultrapower:lsp_servers` | 检查语言服务器可用性 |
|
|
164
164
|
|
|
165
165
|
对于需要实现的复杂重命名或重构任务,委派给 `executor`(使用 `model="opus"`),它可以使用 `ast_grep_replace` 进行结构化转换。
|
|
166
166
|
|
|
167
167
|
### 工具选择指南
|
|
168
168
|
|
|
169
|
-
* **需要文件符号概览或工作区搜索?** 通过 `explore` 使用 `lsp_document_symbols`/`lsp_workspace_symbols`
|
|
169
|
+
* **需要文件符号概览或工作区搜索?** 通过 `explore` 使用 `ultrapower:lsp_document_symbols`/`ultrapower:lsp_workspace_symbols`
|
|
170
170
|
|
|
171
|
-
* **需要查找符号的所有用法?** 通过 `explore` 使用 `lsp_find_references`
|
|
171
|
+
* **需要查找符号的所有用法?** 通过 `explore` 使用 `ultrapower:lsp_find_references`
|
|
172
172
|
|
|
173
173
|
* **需要结构化代码模式?**(如"查找所有匹配 X 形状的函数")通过 `explore`、`architect` 或 `code-reviewer` 使用 `ast_grep_search`
|
|
174
174
|
|
|
175
175
|
* **需要结构化代码转换?** 通过 `executor`(使用 `model="opus"`)使用 `ast_grep_replace`
|
|
176
176
|
|
|
177
|
-
* **需要全项目类型检查?** 通过 `architect`、`executor` 或 `build-fixer` 使用 `lsp_diagnostics_directory`
|
|
177
|
+
* **需要全项目类型检查?** 通过 `architect`、`executor` 或 `build-fixer` 使用 `ultrapower:lsp_diagnostics_directory`
|
|
178
178
|
|
|
179
|
-
* **需要单文件错误检查?** 通过多个 agent 使用 `lsp_diagnostics`(参见矩阵)
|
|
179
|
+
* **需要单文件错误检查?** 通过多个 agent 使用 `ultrapower:lsp_diagnostics`(参见矩阵)
|
|
180
180
|
|
|
181
181
|
* **需要数据分析/计算?** 通过 `scientist` 使用 `python_repl`
|
|
182
182
|
|
|
183
|
-
* **需要快速类型信息或定义查询?** 直接使用 `lsp_hover`/`lsp_goto_definition`(orchestrator 直接工具)
|
|
183
|
+
* **需要快速类型信息或定义查询?** 直接使用 `ultrapower:lsp_hover`/`ultrapower:lsp_goto_definition`(orchestrator 直接工具)
|
|
@@ -6,7 +6,7 @@
|
|
|
6
6
|
|
|
7
7
|
| 层级 | 标准 | Agent | 模型 | 所需证据 |
|
|
8
8
|
| ------ | ---------- | ------- | ------- | ------------------- |
|
|
9
|
-
| **LIGHT** | <5 个文件,<100 行,完整测试覆盖 | architect-low | haiku | lsp_diagnostics 无错误 |
|
|
9
|
+
| **LIGHT** | <5 个文件,<100 行,完整测试覆盖 | architect-low | haiku | ultrapower:lsp_diagnostics 无错误 |
|
|
10
10
|
| **STANDARD** | 默认(非 LIGHT 或 THOROUGH) | architect-medium | sonnet | diagnostics + 构建通过 |
|
|
11
11
|
| **THOROUGH** | >20 个文件,或架构/安全变更 | architect | opus | 完整审查 + 所有测试 |
|
|
12
12
|
|
|
@@ -94,7 +94,7 @@ ELSE:
|
|
|
94
94
|
| 声明 | 所需证据 |
|
|
95
95
|
| ------- | ------------------- |
|
|
96
96
|
| "已修复" | 显示现在通过的测试 |
|
|
97
|
-
| "已实现" | lsp_diagnostics 无错误 + 构建通过 |
|
|
97
|
+
| "已实现" | ultrapower:lsp_diagnostics 无错误 + 构建通过 |
|
|
98
98
|
| "已重构" | 所有测试仍然通过 |
|
|
99
99
|
| "已调试" | 定位到 file:line 的根本原因 |
|
|
100
100
|
|
|
@@ -113,7 +113,7 @@ brainstorming 触发时的强制流程:
|
|
|
113
113
|
verification-before-completion → [验证通过]
|
|
114
114
|
|
|
115
115
|
阶段5b: 构建验证(新增)
|
|
116
|
-
build-fixer → lsp_diagnostics_directory → [零错误]
|
|
116
|
+
build-fixer → ultrapower:lsp_diagnostics_directory → [零错误]
|
|
117
117
|
|
|
118
118
|
阶段6: 部署测试
|
|
119
119
|
qa-tester → ultraqa循环 → [全部通过]
|
|
@@ -282,7 +282,7 @@ brainstorming 触发时的强制流程:
|
|
|
282
282
|
|
|
283
283
|
| Agent | 关键节点 | 主推 | 备选 | 推荐理由 |
|
|
284
284
|
| --- | --- | --- | --- | --- |
|
|
285
|
-
| `build-fixer` agent | lsp_diagnostics 零错误后 | `qa-tester` agent | `requesting-code-review` | 构建通过进入部署测试 |
|
|
285
|
+
| `build-fixer` agent | ultrapower:lsp_diagnostics 零错误后 | `qa-tester` agent | `requesting-code-review` | 构建通过进入部署测试 |
|
|
286
286
|
|
|
287
287
|
### 阶段6:部署测试
|
|
288
288
|
|
|
@@ -311,18 +311,18 @@ Total: **35 tools** exposed via `mcp__plugin_ultrapower_t__` prefix.
|
|
|
311
311
|
### LSP Tools (12)
|
|
312
312
|
|
|
313
313
|
```
|
|
314
|
-
lsp_hover — Type info and docs at position
|
|
315
|
-
lsp_goto_definition — Jump to definition
|
|
316
|
-
lsp_find_references — Find all usages
|
|
317
|
-
lsp_document_symbols — File outline
|
|
318
|
-
lsp_workspace_symbols — Cross-workspace symbol search
|
|
319
|
-
lsp_diagnostics — Per-file errors/warnings
|
|
320
|
-
lsp_diagnostics_directory — Project-level type check
|
|
321
|
-
lsp_servers — List available language servers
|
|
322
|
-
lsp_prepare_rename — Check if rename is valid
|
|
323
|
-
lsp_rename — Preview multi-file rename
|
|
324
|
-
lsp_code_actions — Available refactors/fixes
|
|
325
|
-
lsp_code_action_resolve — Get action details
|
|
314
|
+
ultrapower:lsp_hover — Type info and docs at position
|
|
315
|
+
ultrapower:lsp_goto_definition — Jump to definition
|
|
316
|
+
ultrapower:lsp_find_references — Find all usages
|
|
317
|
+
ultrapower:lsp_document_symbols — File outline
|
|
318
|
+
ultrapower:lsp_workspace_symbols — Cross-workspace symbol search
|
|
319
|
+
ultrapower:lsp_diagnostics — Per-file errors/warnings
|
|
320
|
+
ultrapower:lsp_diagnostics_directory — Project-level type check
|
|
321
|
+
ultrapower:lsp_servers — List available language servers
|
|
322
|
+
ultrapower:lsp_prepare_rename — Check if rename is valid
|
|
323
|
+
ultrapower:lsp_rename — Preview multi-file rename
|
|
324
|
+
ultrapower:lsp_code_actions — Available refactors/fixes
|
|
325
|
+
ultrapower:lsp_code_action_resolve — Get action details
|
|
326
326
|
```
|
|
327
327
|
|
|
328
328
|
Supported languages: TypeScript, Python, Rust, Go, C/C++, Java, JSON, HTML, CSS, YAML
|
|
@@ -860,17 +860,17 @@ Directives are the highest-priority memory: they survive context compression and
|
|
|
860
860
|
|
|
861
861
|
### LSP Tools (12)
|
|
862
862
|
|
|
863
|
-
Require a running language server. Use `lsp_servers()` to check availability.
|
|
863
|
+
Require a running language server. Use `ultrapower:lsp_servers()` to check availability.
|
|
864
864
|
|
|
865
865
|
```typescript
|
|
866
866
|
// Type info at cursor position
|
|
867
|
-
lsp_hover({ file: "src/hooks/bridge.ts", line: 42, character: 15 })
|
|
867
|
+
ultrapower:lsp_hover({ file: "src/hooks/bridge.ts", line: 42, character: 15 })
|
|
868
868
|
|
|
869
869
|
// Find all usages
|
|
870
|
-
lsp_find_references({ file: "src/lib/validateMode.ts", symbol: "assertValidMode" })
|
|
870
|
+
ultrapower:lsp_find_references({ file: "src/lib/validateMode.ts", symbol: "assertValidMode" })
|
|
871
871
|
|
|
872
872
|
// Project-wide diagnostics
|
|
873
|
-
lsp_diagnostics_directory({ directory: "src/", includeWarnings: false })
|
|
873
|
+
ultrapower:lsp_diagnostics_directory({ directory: "src/", includeWarnings: false })
|
|
874
874
|
```
|
|
875
875
|
|
|
876
876
|
### AST Tools (2)
|
|
@@ -162,11 +162,11 @@ npm install --save-dev @types/node
|
|
|
162
162
|
|
|
163
163
|
**步骤:**
|
|
164
164
|
1. 创建 `src/mcp/adapters/lsp-adapter.ts`
|
|
165
|
-
2. 转换 lsp_hover, lsp_goto_definition, lsp_find_references
|
|
166
|
-
3. 转换 lsp_document_symbols, lsp_workspace_symbols
|
|
167
|
-
4. 转换 lsp_diagnostics, lsp_diagnostics_directory
|
|
168
|
-
5. 转换 lsp_servers, lsp_prepare_rename, lsp_rename
|
|
169
|
-
6. 转换 lsp_code_actions, lsp_code_action_resolve
|
|
165
|
+
2. 转换 ultrapower:lsp_hover, ultrapower:lsp_goto_definition, ultrapower:lsp_find_references
|
|
166
|
+
3. 转换 ultrapower:lsp_document_symbols, ultrapower:lsp_workspace_symbols
|
|
167
|
+
4. 转换 ultrapower:lsp_diagnostics, ultrapower:lsp_diagnostics_directory
|
|
168
|
+
5. 转换 ultrapower:lsp_servers, ultrapower:lsp_prepare_rename, ultrapower:lsp_rename
|
|
169
|
+
6. 转换 ultrapower:lsp_code_actions, ultrapower:lsp_code_action_resolve
|
|
170
170
|
|
|
171
171
|
**验收:**
|
|
172
172
|
|
|
@@ -380,7 +380,7 @@ npm install --save-dev @types/node
|
|
|
380
380
|
1. 创建 `src/mcp/tool-resolver.ts`
|
|
381
381
|
2. 实现 `resolveTool(name: string)` 函数
|
|
382
382
|
3. 支持带前缀:`mcp__plugin_ultrapower_t__lsp_hover`
|
|
383
|
-
4. 支持不带前缀:`lsp_hover`
|
|
383
|
+
4. 支持不带前缀:`ultrapower:lsp_hover`
|
|
384
384
|
5. 支持命名空间:`ultrapower:lsp_hover`
|
|
385
385
|
|
|
386
386
|
**验收:**
|
|
@@ -530,8 +530,8 @@ npm install --save-dev @types/node
|
|
|
530
530
|
**依赖:** 1.4.1
|
|
531
531
|
|
|
532
532
|
**步骤:**
|
|
533
|
-
1. 测试 `lsp_hover` 调用
|
|
534
|
-
2. 测试 `lsp_diagnostics` 调用
|
|
533
|
+
1. 测试 `ultrapower:lsp_hover` 调用
|
|
534
|
+
2. 测试 `ultrapower:lsp_diagnostics` 调用
|
|
535
535
|
3. 验证参数传递正确
|
|
536
536
|
4. 验证返回结果格式
|
|
537
537
|
|
|
@@ -581,7 +581,7 @@ npm install --save-dev @types/node
|
|
|
581
581
|
**步骤:**
|
|
582
582
|
1. 使用旧前缀调用工具:`mcp__plugin_ultrapower_t__lsp_hover`
|
|
583
583
|
2. 使用新前缀调用工具:`ultrapower:lsp_hover`
|
|
584
|
-
3. 使用无前缀调用工具:`lsp_hover`
|
|
584
|
+
3. 使用无前缀调用工具:`ultrapower:lsp_hover`
|
|
585
585
|
4. 验证三种方式都能成功
|
|
586
586
|
|
|
587
587
|
**验收:**
|
|
@@ -0,0 +1,222 @@
|
|
|
1
|
+
# Technical Debt Fixes Implementation Plan
|
|
2
|
+
|
|
3
|
+
> **For Claude:** REQUIRED SUB-SKILL: Use ultrapower:executing-plans to implement this plan task-by-task.
|
|
4
|
+
|
|
5
|
+
**Goal:** Fix 4 identified technical debt items from architecture assessment (TD-1 to TD-4)
|
|
6
|
+
|
|
7
|
+
**Architecture:** Prioritize P0 test stability, then address P1 deprecation warnings and platform compatibility, finally unify atomic write protection
|
|
8
|
+
|
|
9
|
+
**Tech Stack:** TypeScript, Vitest, Node.js fs module, cross-platform file operations
|
|
10
|
+
|
|
11
|
+
---
|
|
12
|
+
|
|
13
|
+
## Task 1: Fix P0 Test Timeout Issues (TD-1)
|
|
14
|
+
|
|
15
|
+
**Priority:** P0 - Blocking CI pipeline
|
|
16
|
+
|
|
17
|
+
**Files:**
|
|
18
|
+
- Modify: `src/features/__tests__/mcp-integration.test.ts:9`
|
|
19
|
+
- Modify: `src/features/mcp-autodiscovery/__tests__/performance.test.ts:7`
|
|
20
|
+
|
|
21
|
+
**Step 1: Increase timeout for MCP integration tests**
|
|
22
|
+
|
|
23
|
+
```typescript
|
|
24
|
+
// src/features/__tests__/mcp-integration.test.ts
|
|
25
|
+
beforeAll(async () => {
|
|
26
|
+
contextManager = new UnifiedContextManager();
|
|
27
|
+
await contextManager.initialize();
|
|
28
|
+
}, 30000); // Increase from 10000 to 30000ms
|
|
29
|
+
```
|
|
30
|
+
|
|
31
|
+
**Step 2: Increase timeout for performance tests**
|
|
32
|
+
|
|
33
|
+
```typescript
|
|
34
|
+
// src/features/mcp-autodiscovery/__tests__/performance.test.ts
|
|
35
|
+
beforeAll(async () => {
|
|
36
|
+
// Setup code
|
|
37
|
+
}, 30000); // Increase from 10000 to 30000ms
|
|
38
|
+
```
|
|
39
|
+
|
|
40
|
+
**Step 3: Run tests to verify fixes**
|
|
41
|
+
|
|
42
|
+
Run: `npm test -- mcp-integration.test.ts performance.test.ts`
|
|
43
|
+
Expected: All tests pass without timeout
|
|
44
|
+
|
|
45
|
+
**Step 4: Commit**
|
|
46
|
+
|
|
47
|
+
```bash
|
|
48
|
+
git add src/features/__tests__/mcp-integration.test.ts src/features/mcp-autodiscovery/__tests__/performance.test.ts
|
|
49
|
+
git commit -m "fix(test): increase timeout for MCP integration tests to 30s
|
|
50
|
+
|
|
51
|
+
Resolves TD-1: Test timeout issues blocking CI pipeline"
|
|
52
|
+
```
|
|
53
|
+
|
|
54
|
+
---
|
|
55
|
+
|
|
56
|
+
## Task 2: Remove LSP Tool Deprecation Warnings (TD-2)
|
|
57
|
+
|
|
58
|
+
**Priority:** P1 - User experience and maintenance
|
|
59
|
+
|
|
60
|
+
**Files:**
|
|
61
|
+
- Modify: `src/tools/lsp-tools.ts`
|
|
62
|
+
- Modify: `docs/REFERENCE.md`
|
|
63
|
+
- Modify: `README.md`
|
|
64
|
+
|
|
65
|
+
**Step 1: Update all documentation to use new naming**
|
|
66
|
+
|
|
67
|
+
Search and replace in documentation:
|
|
68
|
+
- `ultrapower:lsp_diagnostics` → `ultrapower:lsp_diagnostics`
|
|
69
|
+
- `ultrapower:lsp_hover` → `ultrapower:lsp_hover`
|
|
70
|
+
- (repeat for all 12 LSP tools)
|
|
71
|
+
|
|
72
|
+
**Step 2: Add deprecation timeline to CHANGELOG**
|
|
73
|
+
|
|
74
|
+
```markdown
|
|
75
|
+
## [Unreleased]
|
|
76
|
+
|
|
77
|
+
### Deprecated
|
|
78
|
+
- Old LSP tool naming (without `ultrapower:` prefix) will be removed in v8.0.0
|
|
79
|
+
- Users should migrate to new naming: `ultrapower:lsp_*`
|
|
80
|
+
```
|
|
81
|
+
|
|
82
|
+
**Step 3: Verify no old naming in docs**
|
|
83
|
+
|
|
84
|
+
Run: `grep -r "ultrapower:lsp_diagnostics" docs/ README.md`
|
|
85
|
+
Expected: No matches (all should use `ultrapower:lsp_diagnostics`)
|
|
86
|
+
|
|
87
|
+
**Step 4: Commit**
|
|
88
|
+
|
|
89
|
+
```bash
|
|
90
|
+
git add docs/ README.md CHANGELOG.md
|
|
91
|
+
git commit -m "docs: migrate LSP tool naming to ultrapower: prefix
|
|
92
|
+
|
|
93
|
+
Resolves TD-2: Prepare for v8.0.0 deprecation removal"
|
|
94
|
+
```
|
|
95
|
+
|
|
96
|
+
---
|
|
97
|
+
|
|
98
|
+
## Task 3: Add Windows Platform Compatibility Tests (TD-3)
|
|
99
|
+
|
|
100
|
+
**Priority:** P1 - Platform compatibility
|
|
101
|
+
|
|
102
|
+
**Files:**
|
|
103
|
+
- Create: `tests/platform/windows-atomic-write.test.ts`
|
|
104
|
+
- Modify: `src/lib/atomic-write.ts`
|
|
105
|
+
|
|
106
|
+
**Step 1: Create Windows-specific test file**
|
|
107
|
+
|
|
108
|
+
```typescript
|
|
109
|
+
// tests/platform/windows-atomic-write.test.ts
|
|
110
|
+
import { describe, it, expect } from 'vitest';
|
|
111
|
+
import { atomicWriteJsonSyncWithRetry } from '../../src/lib/atomic-write';
|
|
112
|
+
import { existsSync, readFileSync } from 'node:fs';
|
|
113
|
+
import { join } from 'node:path';
|
|
114
|
+
|
|
115
|
+
describe.skipIf(process.platform !== 'win32')('Windows atomic write', () => {
|
|
116
|
+
it('should handle locked files gracefully', async () => {
|
|
117
|
+
const testPath = join(process.cwd(), '.test-windows-lock.json');
|
|
118
|
+
const data = { test: 'value' };
|
|
119
|
+
|
|
120
|
+
// Write should succeed even if file is temporarily locked
|
|
121
|
+
atomicWriteJsonSyncWithRetry(testPath, data);
|
|
122
|
+
|
|
123
|
+
expect(existsSync(testPath)).toBe(true);
|
|
124
|
+
const content = JSON.parse(readFileSync(testPath, 'utf-8'));
|
|
125
|
+
expect(content).toEqual(data);
|
|
126
|
+
});
|
|
127
|
+
});
|
|
128
|
+
```
|
|
129
|
+
|
|
130
|
+
**Step 2: Run Windows tests**
|
|
131
|
+
|
|
132
|
+
Run: `npm test -- windows-atomic-write.test.ts`
|
|
133
|
+
Expected: Tests pass on Windows, skipped on other platforms
|
|
134
|
+
|
|
135
|
+
**Step 3: Document platform differences**
|
|
136
|
+
|
|
137
|
+
Add to `docs/standards/runtime-protection.md`:
|
|
138
|
+
|
|
139
|
+
```markdown
|
|
140
|
+
### Windows Platform Notes
|
|
141
|
+
|
|
142
|
+
- `renameSync` is not atomic when target file is locked
|
|
143
|
+
- Directory-level `fsync` silently fails
|
|
144
|
+
- Use `maxRetries` parameter in `atomicWriteJsonSyncWithRetry` for robustness
|
|
145
|
+
```
|
|
146
|
+
|
|
147
|
+
**Step 4: Commit**
|
|
148
|
+
|
|
149
|
+
```bash
|
|
150
|
+
git add tests/platform/windows-atomic-write.test.ts docs/standards/runtime-protection.md
|
|
151
|
+
git commit -m "test(platform): add Windows atomic write compatibility tests
|
|
152
|
+
|
|
153
|
+
Resolves TD-3: Windows platform compatibility validation"
|
|
154
|
+
```
|
|
155
|
+
|
|
156
|
+
---
|
|
157
|
+
|
|
158
|
+
## Task 4: Unify Atomic Write Protection (TD-4)
|
|
159
|
+
|
|
160
|
+
**Priority:** P2 - Consistency and safety
|
|
161
|
+
|
|
162
|
+
**Files:**
|
|
163
|
+
- Modify: `src/hooks/subagent-tracker/index.ts`
|
|
164
|
+
|
|
165
|
+
**Step 1: Replace immediate write with atomic write**
|
|
166
|
+
|
|
167
|
+
```typescript
|
|
168
|
+
// src/hooks/subagent-tracker/index.ts
|
|
169
|
+
import { atomicWriteJsonSyncWithRetry } from '../../lib/atomic-write';
|
|
170
|
+
|
|
171
|
+
// Replace this:
|
|
172
|
+
// writeFileSync(statePath, JSON.stringify(state, null, 2), "utf-8");
|
|
173
|
+
|
|
174
|
+
// With this:
|
|
175
|
+
atomicWriteJsonSyncWithRetry(statePath, state);
|
|
176
|
+
```
|
|
177
|
+
|
|
178
|
+
**Step 2: Remove writeTrackingStateImmediate function**
|
|
179
|
+
|
|
180
|
+
Remove the `writeTrackingStateImmediate()` function entirely, replace all calls with `atomicWriteJsonSyncWithRetry`.
|
|
181
|
+
|
|
182
|
+
**Step 3: Run tests to verify no regressions**
|
|
183
|
+
|
|
184
|
+
Run: `npm test -- subagent-tracker`
|
|
185
|
+
Expected: All tests pass
|
|
186
|
+
|
|
187
|
+
**Step 4: Update difference documentation**
|
|
188
|
+
|
|
189
|
+
Remove D-07 from `docs/standards/runtime-protection.md` (no longer a difference).
|
|
190
|
+
|
|
191
|
+
**Step 5: Commit**
|
|
192
|
+
|
|
193
|
+
```bash
|
|
194
|
+
git add src/hooks/subagent-tracker/index.ts docs/standards/runtime-protection.md
|
|
195
|
+
git commit -m "refactor(hooks): unify atomic write protection in subagent-tracker
|
|
196
|
+
|
|
197
|
+
Resolves TD-4: Remove immediate write bypass, use atomic write consistently"
|
|
198
|
+
```
|
|
199
|
+
|
|
200
|
+
---
|
|
201
|
+
|
|
202
|
+
## Verification Checklist
|
|
203
|
+
|
|
204
|
+
After completing all tasks:
|
|
205
|
+
|
|
206
|
+
- [ ] All tests pass: `npm test`
|
|
207
|
+
- [ ] No TypeScript errors: `npm run build`
|
|
208
|
+
- [ ] No lint errors: `npm run lint`
|
|
209
|
+
- [ ] CI pipeline passes on GitHub Actions
|
|
210
|
+
- [ ] Documentation updated for all changes
|
|
211
|
+
- [ ] CHANGELOG.md includes all fixes
|
|
212
|
+
|
|
213
|
+
---
|
|
214
|
+
|
|
215
|
+
## Estimated Timeline
|
|
216
|
+
|
|
217
|
+
- Task 1 (P0): 30 minutes
|
|
218
|
+
- Task 2 (P1): 1 hour
|
|
219
|
+
- Task 3 (P1): 2 hours
|
|
220
|
+
- Task 4 (P2): 1 hour
|
|
221
|
+
|
|
222
|
+
**Total:** ~4.5 hours
|