arkts-lsp-proxy 0.1.7 → 0.1.8
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/README.md +55 -35
- package/dist/codex-install.d.ts +13 -0
- package/dist/codex-install.d.ts.map +1 -0
- package/dist/codex-install.js +229 -0
- package/dist/codex-install.js.map +1 -0
- package/dist/mcp.js +1 -1
- package/package.json +4 -3
package/README.md
CHANGED
|
@@ -80,29 +80,56 @@ arkts-lsp-mcp
|
|
|
80
80
|
/plugin install arkts-lsp
|
|
81
81
|
```
|
|
82
82
|
|
|
83
|
-
### Codex
|
|
83
|
+
### Codex 项目级 MCP
|
|
84
84
|
|
|
85
|
-
|
|
85
|
+
Codex 不使用全局 marketplace 安装。为了避免所有项目都加载 ArkTS MCP 工具,
|
|
86
|
+
请在需要启用 ArkTS 能力的 Codex 项目目录执行项目级安装脚本:
|
|
87
|
+
|
|
88
|
+
```bash
|
|
89
|
+
npx -y --package arkts-lsp-proxy@latest arkts-lsp-codex-install
|
|
90
|
+
```
|
|
91
|
+
|
|
92
|
+
脚本只负责写入当前项目的 Codex 配置,不会判断该目录是不是 HarmonyOS 项目,也不会扫描
|
|
93
|
+
子目录。它会写入:
|
|
86
94
|
|
|
87
95
|
```text
|
|
88
|
-
|
|
89
|
-
|
|
96
|
+
<project>/.codex/config.toml
|
|
97
|
+
```
|
|
98
|
+
|
|
99
|
+
写入内容等价于:
|
|
100
|
+
|
|
101
|
+
```toml
|
|
102
|
+
[mcp_servers.arkts-lsp]
|
|
103
|
+
command = "npx"
|
|
104
|
+
args = ["-y", "--package", "arkts-lsp-proxy@latest", "arkts-lsp-mcp"]
|
|
105
|
+
|
|
106
|
+
[mcp_servers.arkts-lsp.env]
|
|
107
|
+
ARKTS_LSP_SYNC = "auto"
|
|
90
108
|
```
|
|
91
109
|
|
|
92
|
-
|
|
93
|
-
|
|
94
|
-
|
|
95
|
-
|
|
96
|
-
|
|
97
|
-
|
|
98
|
-
|
|
99
|
-
|
|
100
|
-
|
|
101
|
-
|
|
102
|
-
|
|
110
|
+
这样 ArkTS MCP 只在该 Codex 项目中生效;其它项目没有这段项目级
|
|
111
|
+
`.codex/config.toml`,不会暴露 ArkTS tools,也不会占用工具上下文。真正的
|
|
112
|
+
HarmonyOS 项目识别由 MCP tools 在运行时根据文件路径、`projectRoot` 或 `startPath`
|
|
113
|
+
完成。
|
|
114
|
+
|
|
115
|
+
安装脚本会按当前项目状态处理:
|
|
116
|
+
|
|
117
|
+
| 场景 | 行为 |
|
|
118
|
+
|------|------|
|
|
119
|
+
| 没有 `.codex/config.toml` | 创建 `.codex/` 目录和新的 `config.toml` |
|
|
120
|
+
| 已有 `.codex/config.toml`,但没有 Codex MCP 配置 | 先备份原文件,再写入 `arkts-lsp` MCP 配置 |
|
|
121
|
+
| 已有 `.codex/config.toml`,且已有其它配置 | 先备份原文件,保留其它配置,只新增或替换 `[mcp_servers.arkts-lsp]` 相关配置 |
|
|
122
|
+
|
|
123
|
+
备份文件位于同一目录,形如 `config.toml.bak-YYYYMMDDTHHMMSSZ`。安装脚本只清理
|
|
124
|
+
自己生成的时间戳备份,默认保留最近 3 份;其它手工备份文件不会被删除。如果只是想
|
|
125
|
+
预览将要写入的内容,可以先执行:
|
|
126
|
+
|
|
127
|
+
```bash
|
|
128
|
+
npx -y --package arkts-lsp-proxy@latest arkts-lsp-codex-install --dry-run
|
|
103
129
|
```
|
|
104
130
|
|
|
105
|
-
|
|
131
|
+
注意:Codex 只会读取 trusted project 的项目级 `.codex/config.toml`。安装后请在
|
|
132
|
+
该项目根目录启动 Codex,必要时重启当前 Codex 会话。
|
|
106
133
|
|
|
107
134
|
### npm 全局安装(手动 CLI 使用)
|
|
108
135
|
|
|
@@ -236,35 +263,28 @@ src/
|
|
|
236
263
|
├── mcp-tools.ts ArkTS MCP tools 的实现
|
|
237
264
|
├── mcp.ts MCP JSON-RPC 协议处理与 stdio server
|
|
238
265
|
├── mcp-server.ts arkts-lsp-mcp 入口
|
|
266
|
+
├── codex-install.ts Codex 项目级 MCP 安装脚本
|
|
239
267
|
└── index.ts arkts-lsp-proxy 入口
|
|
240
268
|
.claude-plugin/
|
|
241
269
|
└── marketplace.json marketplace 清单 + lspServers 配置
|
|
242
|
-
.agents/
|
|
243
|
-
└── plugins/
|
|
244
|
-
└── marketplace.json Codex marketplace 清单
|
|
245
270
|
plugins/
|
|
246
|
-
|
|
247
|
-
|
|
248
|
-
│
|
|
249
|
-
|
|
250
|
-
│
|
|
251
|
-
|
|
252
|
-
|
|
253
|
-
|
|
254
|
-
└── arkts-codex/
|
|
255
|
-
├── .codex-plugin/
|
|
256
|
-
│ └── plugin.json Codex 插件清单
|
|
257
|
-
├── .mcp.json MCP server 配置
|
|
258
|
-
├── skills/
|
|
259
|
-
│ └── arkts/
|
|
260
|
-
│ └── SKILL.md Codex 薄 skill
|
|
261
|
-
└── README.md Codex 插件文档
|
|
271
|
+
└── arkts-lsp/
|
|
272
|
+
├── .claude-plugin/
|
|
273
|
+
│ └── plugin.json Claude Code 插件清单
|
|
274
|
+
├── hooks/
|
|
275
|
+
│ └── hooks.json SessionStart 自动安装 hook
|
|
276
|
+
├── package.json npm 依赖声明(供 hook 自动安装)
|
|
277
|
+
├── .lsp.json LSP 服务器配置
|
|
278
|
+
└── README.md Claude Code 插件文档
|
|
262
279
|
test/
|
|
280
|
+
├── codex-install.test.ts
|
|
263
281
|
├── env.test.ts
|
|
264
282
|
├── project.test.ts
|
|
265
283
|
├── hvigor.test.ts
|
|
266
284
|
├── ace-server.test.ts
|
|
267
285
|
├── proxy.test.ts
|
|
286
|
+
├── mcp.test.ts
|
|
287
|
+
├── mcp-tools.test.ts
|
|
268
288
|
├── index.test.ts
|
|
269
289
|
└── fixtures/
|
|
270
290
|
```
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
#!/usr/bin/env node
|
|
2
|
+
export declare const CODEX_MCP_CONFIG_BLOCK = "[mcp_servers.arkts-lsp]\ncommand = \"npx\"\nargs = [\"-y\", \"--package\", \"arkts-lsp-proxy@latest\", \"arkts-lsp-mcp\"]\n\n[mcp_servers.arkts-lsp.env]\nARKTS_LSP_SYNC = \"auto\"\n";
|
|
3
|
+
interface InstallResult {
|
|
4
|
+
installRoot: string;
|
|
5
|
+
configPath: string;
|
|
6
|
+
backupPath?: string;
|
|
7
|
+
changed: boolean;
|
|
8
|
+
content: string;
|
|
9
|
+
}
|
|
10
|
+
export declare function upsertCodexMcpConfig(existing: string): string;
|
|
11
|
+
export declare function installCodexProjectConfig(startDir: string, dryRun?: boolean): InstallResult;
|
|
12
|
+
export {};
|
|
13
|
+
//# sourceMappingURL=codex-install.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"codex-install.d.ts","sourceRoot":"","sources":["../src/codex-install.ts"],"names":[],"mappings":";AASA,eAAO,MAAM,sBAAsB,0LAMlC,CAAC;AAQF,UAAU,aAAa;IACrB,WAAW,EAAE,MAAM,CAAC;IACpB,UAAU,EAAE,MAAM,CAAC;IACnB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,OAAO,EAAE,OAAO,CAAC;IACjB,OAAO,EAAE,MAAM,CAAC;CACjB;AAqFD,wBAAgB,oBAAoB,CAAC,QAAQ,EAAE,MAAM,GAAG,MAAM,CAG7D;AAgDD,wBAAgB,yBAAyB,CAAC,QAAQ,EAAE,MAAM,EAAE,MAAM,UAAQ,GAAG,aAAa,CA4BzF"}
|
|
@@ -0,0 +1,229 @@
|
|
|
1
|
+
#!/usr/bin/env node
|
|
2
|
+
"use strict";
|
|
3
|
+
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
|
|
4
|
+
if (k2 === undefined) k2 = k;
|
|
5
|
+
var desc = Object.getOwnPropertyDescriptor(m, k);
|
|
6
|
+
if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
|
|
7
|
+
desc = { enumerable: true, get: function() { return m[k]; } };
|
|
8
|
+
}
|
|
9
|
+
Object.defineProperty(o, k2, desc);
|
|
10
|
+
}) : (function(o, m, k, k2) {
|
|
11
|
+
if (k2 === undefined) k2 = k;
|
|
12
|
+
o[k2] = m[k];
|
|
13
|
+
}));
|
|
14
|
+
var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
|
|
15
|
+
Object.defineProperty(o, "default", { enumerable: true, value: v });
|
|
16
|
+
}) : function(o, v) {
|
|
17
|
+
o["default"] = v;
|
|
18
|
+
});
|
|
19
|
+
var __importStar = (this && this.__importStar) || (function () {
|
|
20
|
+
var ownKeys = function(o) {
|
|
21
|
+
ownKeys = Object.getOwnPropertyNames || function (o) {
|
|
22
|
+
var ar = [];
|
|
23
|
+
for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
|
|
24
|
+
return ar;
|
|
25
|
+
};
|
|
26
|
+
return ownKeys(o);
|
|
27
|
+
};
|
|
28
|
+
return function (mod) {
|
|
29
|
+
if (mod && mod.__esModule) return mod;
|
|
30
|
+
var result = {};
|
|
31
|
+
if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
|
|
32
|
+
__setModuleDefault(result, mod);
|
|
33
|
+
return result;
|
|
34
|
+
};
|
|
35
|
+
})();
|
|
36
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
37
|
+
exports.CODEX_MCP_CONFIG_BLOCK = void 0;
|
|
38
|
+
exports.upsertCodexMcpConfig = upsertCodexMcpConfig;
|
|
39
|
+
exports.installCodexProjectConfig = installCodexProjectConfig;
|
|
40
|
+
const fs = __importStar(require("node:fs"));
|
|
41
|
+
const path = __importStar(require("node:path"));
|
|
42
|
+
const SERVER_NAME = 'arkts-lsp';
|
|
43
|
+
const CONFIG_RELATIVE_PATH = path.join('.codex', 'config.toml');
|
|
44
|
+
const MAX_GENERATED_BACKUPS = 3;
|
|
45
|
+
exports.CODEX_MCP_CONFIG_BLOCK = `[mcp_servers.${SERVER_NAME}]
|
|
46
|
+
command = "npx"
|
|
47
|
+
args = ["-y", "--package", "arkts-lsp-proxy@latest", "arkts-lsp-mcp"]
|
|
48
|
+
|
|
49
|
+
[mcp_servers.${SERVER_NAME}.env]
|
|
50
|
+
ARKTS_LSP_SYNC = "auto"
|
|
51
|
+
`;
|
|
52
|
+
function usage() {
|
|
53
|
+
return `Usage: arkts-lsp-codex-install [--cwd <path>] [--dry-run]
|
|
54
|
+
|
|
55
|
+
Install ArkTS LSP MCP into a Codex project .codex/config.toml.
|
|
56
|
+
|
|
57
|
+
Options:
|
|
58
|
+
--cwd <path> Project directory to install into, or a file inside it.
|
|
59
|
+
--dry-run Print the config path and content without writing files.
|
|
60
|
+
-h, --help Show this help.
|
|
61
|
+
`;
|
|
62
|
+
}
|
|
63
|
+
function parseArgs(argv) {
|
|
64
|
+
const options = {
|
|
65
|
+
startDir: process.cwd(),
|
|
66
|
+
dryRun: false,
|
|
67
|
+
help: false,
|
|
68
|
+
};
|
|
69
|
+
for (let i = 0; i < argv.length; i += 1) {
|
|
70
|
+
const arg = argv[i];
|
|
71
|
+
if (arg === '-h' || arg === '--help') {
|
|
72
|
+
options.help = true;
|
|
73
|
+
continue;
|
|
74
|
+
}
|
|
75
|
+
if (arg === '--dry-run') {
|
|
76
|
+
options.dryRun = true;
|
|
77
|
+
continue;
|
|
78
|
+
}
|
|
79
|
+
if ((arg === '--cwd' || arg === '--project-root') && argv[i + 1]) {
|
|
80
|
+
options.startDir = argv[i + 1];
|
|
81
|
+
i += 1;
|
|
82
|
+
continue;
|
|
83
|
+
}
|
|
84
|
+
if (arg.startsWith('--cwd=')) {
|
|
85
|
+
options.startDir = arg.slice('--cwd='.length);
|
|
86
|
+
continue;
|
|
87
|
+
}
|
|
88
|
+
if (arg.startsWith('--project-root=')) {
|
|
89
|
+
options.startDir = arg.slice('--project-root='.length);
|
|
90
|
+
continue;
|
|
91
|
+
}
|
|
92
|
+
throw new Error(`Unknown argument: ${arg}`);
|
|
93
|
+
}
|
|
94
|
+
return options;
|
|
95
|
+
}
|
|
96
|
+
function isExistingFile(filePath) {
|
|
97
|
+
try {
|
|
98
|
+
return fs.statSync(filePath).isFile();
|
|
99
|
+
}
|
|
100
|
+
catch {
|
|
101
|
+
return false;
|
|
102
|
+
}
|
|
103
|
+
}
|
|
104
|
+
function resolveInstallRoot(startDir) {
|
|
105
|
+
const resolved = path.resolve(startDir);
|
|
106
|
+
return isExistingFile(resolved) ? path.dirname(resolved) : resolved;
|
|
107
|
+
}
|
|
108
|
+
function isArktsServerTable(tableName) {
|
|
109
|
+
return tableName === `mcp_servers.${SERVER_NAME}` || tableName.startsWith(`mcp_servers.${SERVER_NAME}.`);
|
|
110
|
+
}
|
|
111
|
+
function stripExistingArktsServerBlock(existing) {
|
|
112
|
+
const lines = existing.split(/\r?\n/);
|
|
113
|
+
const kept = [];
|
|
114
|
+
let skipping = false;
|
|
115
|
+
for (const line of lines) {
|
|
116
|
+
const header = line.match(/^\s*\[([^\]]+)\]\s*$/);
|
|
117
|
+
if (header) {
|
|
118
|
+
skipping = isArktsServerTable(header[1]);
|
|
119
|
+
}
|
|
120
|
+
if (!skipping) {
|
|
121
|
+
kept.push(line);
|
|
122
|
+
}
|
|
123
|
+
}
|
|
124
|
+
return kept.join('\n').trimEnd();
|
|
125
|
+
}
|
|
126
|
+
function upsertCodexMcpConfig(existing) {
|
|
127
|
+
const withoutOldBlock = stripExistingArktsServerBlock(existing);
|
|
128
|
+
return `${withoutOldBlock ? `${withoutOldBlock}\n\n` : ''}${exports.CODEX_MCP_CONFIG_BLOCK}`;
|
|
129
|
+
}
|
|
130
|
+
function formatTimestamp(date = new Date()) {
|
|
131
|
+
return date.toISOString().replace(/[-:]/g, '').replace(/\.\d{3}Z$/, 'Z');
|
|
132
|
+
}
|
|
133
|
+
function nextBackupPath(configPath) {
|
|
134
|
+
const basePath = `${configPath}.bak-${formatTimestamp()}`;
|
|
135
|
+
let candidate = basePath;
|
|
136
|
+
let suffix = 1;
|
|
137
|
+
while (fs.existsSync(candidate)) {
|
|
138
|
+
candidate = `${basePath}.${suffix}`;
|
|
139
|
+
suffix += 1;
|
|
140
|
+
}
|
|
141
|
+
return candidate;
|
|
142
|
+
}
|
|
143
|
+
function escapeRegExp(value) {
|
|
144
|
+
return value.replace(/[.*+?^${}()|[\]\\]/g, '\\$&');
|
|
145
|
+
}
|
|
146
|
+
function cleanupGeneratedBackups(configPath) {
|
|
147
|
+
const dir = path.dirname(configPath);
|
|
148
|
+
const basename = path.basename(configPath);
|
|
149
|
+
const backupPattern = new RegExp(`^${escapeRegExp(basename)}\\.bak-\\d{8}T\\d{6}Z(?:\\.\\d+)?$`);
|
|
150
|
+
let backups;
|
|
151
|
+
try {
|
|
152
|
+
backups = fs.readdirSync(dir).filter((name) => backupPattern.test(name)).sort();
|
|
153
|
+
}
|
|
154
|
+
catch {
|
|
155
|
+
return;
|
|
156
|
+
}
|
|
157
|
+
const staleBackups = backups.slice(0, Math.max(0, backups.length - MAX_GENERATED_BACKUPS));
|
|
158
|
+
for (const backup of staleBackups) {
|
|
159
|
+
try {
|
|
160
|
+
fs.unlinkSync(path.join(dir, backup));
|
|
161
|
+
}
|
|
162
|
+
catch {
|
|
163
|
+
// Best-effort cleanup only; installation has already preserved the current config.
|
|
164
|
+
}
|
|
165
|
+
}
|
|
166
|
+
}
|
|
167
|
+
function writeFileAtomically(filePath, content) {
|
|
168
|
+
const tempPath = `${filePath}.tmp-${process.pid}-${Date.now()}`;
|
|
169
|
+
fs.writeFileSync(tempPath, content, 'utf8');
|
|
170
|
+
fs.renameSync(tempPath, filePath);
|
|
171
|
+
}
|
|
172
|
+
function installCodexProjectConfig(startDir, dryRun = false) {
|
|
173
|
+
const installRoot = resolveInstallRoot(startDir);
|
|
174
|
+
const codexDir = path.join(installRoot, '.codex');
|
|
175
|
+
const configPath = path.join(installRoot, CONFIG_RELATIVE_PATH);
|
|
176
|
+
const hadExistingConfig = fs.existsSync(configPath);
|
|
177
|
+
const existing = hadExistingConfig ? fs.readFileSync(configPath, 'utf8') : '';
|
|
178
|
+
const content = upsertCodexMcpConfig(existing);
|
|
179
|
+
const changed = existing !== content;
|
|
180
|
+
let backupPath;
|
|
181
|
+
if (!dryRun && changed) {
|
|
182
|
+
fs.mkdirSync(codexDir, { recursive: true });
|
|
183
|
+
if (hadExistingConfig) {
|
|
184
|
+
backupPath = nextBackupPath(configPath);
|
|
185
|
+
fs.copyFileSync(configPath, backupPath);
|
|
186
|
+
}
|
|
187
|
+
writeFileAtomically(configPath, content);
|
|
188
|
+
cleanupGeneratedBackups(configPath);
|
|
189
|
+
}
|
|
190
|
+
return {
|
|
191
|
+
installRoot,
|
|
192
|
+
configPath,
|
|
193
|
+
backupPath,
|
|
194
|
+
changed,
|
|
195
|
+
content,
|
|
196
|
+
};
|
|
197
|
+
}
|
|
198
|
+
function main() {
|
|
199
|
+
try {
|
|
200
|
+
const options = parseArgs(process.argv.slice(2));
|
|
201
|
+
if (options.help) {
|
|
202
|
+
process.stdout.write(usage());
|
|
203
|
+
return;
|
|
204
|
+
}
|
|
205
|
+
const result = installCodexProjectConfig(options.startDir, options.dryRun);
|
|
206
|
+
process.stdout.write(`[arkts-lsp] install root: ${result.installRoot}\n`);
|
|
207
|
+
process.stdout.write(`[arkts-lsp] codex config: ${result.configPath}\n`);
|
|
208
|
+
if (result.backupPath) {
|
|
209
|
+
process.stdout.write(`[arkts-lsp] backup: ${result.backupPath}\n`);
|
|
210
|
+
}
|
|
211
|
+
if (options.dryRun) {
|
|
212
|
+
process.stdout.write('\n');
|
|
213
|
+
process.stdout.write(result.content);
|
|
214
|
+
return;
|
|
215
|
+
}
|
|
216
|
+
process.stdout.write(result.changed
|
|
217
|
+
? '[arkts-lsp] installed project-scoped Codex MCP config\n'
|
|
218
|
+
: '[arkts-lsp] project-scoped Codex MCP config already up to date\n');
|
|
219
|
+
}
|
|
220
|
+
catch (error) {
|
|
221
|
+
const message = error instanceof Error ? error.message : String(error);
|
|
222
|
+
process.stderr.write(`[arkts-lsp] ${message}\n`);
|
|
223
|
+
process.exit(1);
|
|
224
|
+
}
|
|
225
|
+
}
|
|
226
|
+
if (require.main === module) {
|
|
227
|
+
main();
|
|
228
|
+
}
|
|
229
|
+
//# sourceMappingURL=codex-install.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"codex-install.js","sourceRoot":"","sources":["../src/codex-install.ts"],"names":[],"mappings":"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"}
|
package/dist/mcp.js
CHANGED
package/package.json
CHANGED
|
@@ -1,11 +1,12 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "arkts-lsp-proxy",
|
|
3
|
-
"version": "0.1.
|
|
4
|
-
"description": "ArkTS LSP Proxy — bridges DevEco Studio's ace-server to Claude Code and Codex",
|
|
3
|
+
"version": "0.1.8",
|
|
4
|
+
"description": "ArkTS LSP Proxy — bridges DevEco Studio's ace-server to Claude Code and project-scoped Codex MCP",
|
|
5
5
|
"main": "dist/index.js",
|
|
6
6
|
"bin": {
|
|
7
7
|
"arkts-lsp-proxy": "dist/index.js",
|
|
8
|
-
"arkts-lsp-mcp": "dist/mcp-server.js"
|
|
8
|
+
"arkts-lsp-mcp": "dist/mcp-server.js",
|
|
9
|
+
"arkts-lsp-codex-install": "dist/codex-install.js"
|
|
9
10
|
},
|
|
10
11
|
"scripts": {
|
|
11
12
|
"build": "tsc",
|