{"_id":"@ai-arkts/arkts-lsp","_rev":"3-df8683cbc39c13e176a8e3995e74276f","name":"@ai-arkts/arkts-lsp","dist-tags":{"latest":"1.0.2"},"versions":{"1.0.0":{"name":"@ai-arkts/arkts-lsp","version":"1.0.0","license":"MIT","_id":"@ai-arkts/arkts-lsp@1.0.0","maintainers":[{"name":"dukebywwh","email":"wwhbygx@sina.com"}],"bin":{"arkts-lsp":"lsp-wrapper.js"},"dist":{"shasum":"5527e1f6ffbd7ee85427e1c8c190e476073213d7","tarball":"https://registry.npmjs.org/@ai-arkts/arkts-lsp/-/arkts-lsp-1.0.0.tgz","fileCount":6,"integrity":"sha512-mvtil/ly8NKEuUVCVtX6UACI3lJfaOfprKkn5lCORk89psQvlKTPNIIgM4IuJv/BY4YWtLAYN20WHtJb3LYrGQ==","signatures":[{"sig":"MEUCIQDlufL4jlVXRuklD1+w7PNgdA1eTTX1f2o3Q6f2gWr0fgIgJzCk+mIc/ibGRQMhS6Lz3aPlCl2cqWuGyrMBbqkwmGY=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":156304},"engines":{"node":">=18"},"_npmUser":{"name":"dukebywwh","email":"wwhbygx@sina.com"},"repository":{"url":"https://gitee.com/Duke_Bit/arkts-lsp","type":"git"},"_npmVersion":"11.9.0","description":"ArkTS Language Server for OpenCode — wraps DevEco Studio's ace-server with hvigor sync and LSP proxy","directories":{},"_nodeVersion":"24.14.0","_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/arkts-lsp_1.0.0_1777490312342_0.5899502218837662","host":"s3://npm-registry-packages-npm-production"}},"1.0.1":{"name":"@ai-arkts/arkts-lsp","version":"1.0.1","license":"MIT","_id":"@ai-arkts/arkts-lsp@1.0.1","maintainers":[{"name":"dukebywwh","email":"wwhbygx@sina.com"}],"bin":{"arkts-lsp":"lsp-wrapper.js"},"dist":{"shasum":"a0c1f943b18a42e5b4f671837322b0fb729cc2b7","tarball":"https://registry.npmjs.org/@ai-arkts/arkts-lsp/-/arkts-lsp-1.0.1.tgz","fileCount":6,"integrity":"sha512-Lo2+ayWKsRiZ3JPCr2bRF21b5jLI7EXVTNMXE+z4DJDTeyr842R0XnP9l4kbEAcMhbO/2KF0Ph84F9Qs58p46w==","signatures":[{"sig":"MEUCIGliY1CruGqub2HgVWu54/k60pymc7COjaEmA+w2pFWRAiEAkMopO5wu0/JnQYVfrHcdplDtJYkp8UUmkPGbmOp2+Io=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":156465},"engines":{"node":">=18"},"gitHead":"60503f0d77efea5bac452aef22e68f1d15208c4e","_npmUser":{"name":"dukebywwh","email":"wwhbygx@sina.com"},"repository":{"url":"https://gitee.com/Duke_Bit/arkts-lsp","type":"git"},"_npmVersion":"11.9.0","description":"ArkTS Language Server for OpenCode — wraps DevEco Studio's ace-server with hvigor sync and LSP proxy","directories":{},"_nodeVersion":"24.14.0","_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/arkts-lsp_1.0.1_1777556983933_0.2835695694457958","host":"s3://npm-registry-packages-npm-production"}},"1.0.2":{"name":"@ai-arkts/arkts-lsp","version":"1.0.2","description":"ArkTS Language Server for OpenCode — wraps DevEco Studio's ace-server with hvigor sync and LSP proxy","license":"MIT","bin":{"arkts-lsp":"lsp-wrapper.js"},"engines":{"node":">=18"},"repository":{"type":"git","url":"https://gitee.com/Duke_Bit/arkts-lsp"},"gitHead":"2142683285224aef9e966a3cd0887e8198ebd42e","_id":"@ai-arkts/arkts-lsp@1.0.2","_nodeVersion":"24.14.0","_npmVersion":"11.9.0","dist":{"integrity":"sha512-hZ52JvZygjIjJdSwoLyn46yUeQvKV+aBg5cEBZQBz+LmQhaX+02tQ6+ffOfwUF8uV4F941saUHdlKSXwOKD5iw==","shasum":"774540eb53750c81bb326a7ecba47aa39899149a","tarball":"https://registry.npmjs.org/@ai-arkts/arkts-lsp/-/arkts-lsp-1.0.2.tgz","fileCount":6,"unpackedSize":156935,"signatures":[{"keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U","sig":"MEYCIQDaa8jy9IGOTIHaL1vPVcbBNEj7gtXuCSXmChhRKPWSXQIhAIf2D+RvMVWAserdfpBQHJYEEq50w+/mdsa65t97rkFC"}]},"_npmUser":{"name":"dukebywwh","email":"wwhbygx@sina.com"},"directories":{},"maintainers":[{"name":"dukebywwh","email":"wwhbygx@sina.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages-npm-production","tmp":"tmp/arkts-lsp_1.0.2_1778435422366_0.11857981032540676"},"_hasShrinkwrap":false}},"time":{"created":"2026-04-29T19:18:32.248Z","modified":"2026-05-10T17:50:22.651Z","1.0.0":"2026-04-29T19:18:32.480Z","1.0.1":"2026-04-30T13:49:44.116Z","1.0.2":"2026-05-10T17:50:22.514Z"},"license":"MIT","repository":{"type":"git","url":"https://gitee.com/Duke_Bit/arkts-lsp"},"description":"ArkTS Language Server for OpenCode — wraps DevEco Studio's ace-server with hvigor sync and LSP proxy","maintainers":[{"name":"dukebywwh","email":"wwhbygx@sina.com"}],"readme":"# ArkTS LSP for OpenCode\n\n将 DevEco Studio 的 ArkTS 语言服务器（ace-server）集成到 OpenCode，为 `.ets` 文件提供 LSP 支持（诊断、补全、悬停等）。\n\n## 工作原理\n\n```\nOpenCode (LSP 客户端)\n    │  stdin/stdout\n    ▼\nlsp-wrapper.js              ← npx @ai-arkts/arkts-lsp\n    │\n    ├─ 1. 发现 DevEco Studio 路径（环境变量 / 自动搜索）\n    ├─ 2. 推导 SDK、ace-server、工具链路径\n    ├─ 3. 运行 hvigor --sync（生成依赖映射）\n    └─ 4. 启动中间层代理 → ace-server\n         │\n         ▼\n    index.js (代理)          ← 处理多客户端、心跳、消息排队\n         │\n         ▼\n    ace-server               ← DevEco Studio 的 ArkTS LSP 引擎\n         │\n         ├── textDocument/didOpen → publishDiagnostics\n         ├── textDocument/completion\n         ├── textDocument/hover\n         └── aceProject/* (ArkTS 扩展方法)\n```\n\n## 前置条件\n\n- **DevEco Studio** 已安装（ace-server 随 IDE 分发）\n- **Node.js** >= 18\n\n## 快速开始\n\n### 1. 设置环境变量\n\n```bash\n# Windows (cmd)\nset DEVECO_HOME=D:\\Application\\Huawei\\DevEco Studio\n\n# Windows (PowerShell)\n$env:DEVECO_HOME = \"D:\\Application\\Huawei\\DevEco Studio\"\n\n# macOS\nexport DEVECO_HOME=/Applications/DevEco-Studio.app\n\n# Linux\nexport DEVECO_HOME=/opt/DevEco-Studio\n```\n\n不设置环境变量也可以——脚本会自动搜索各平台的默认安装路径。\n\n### 2. 配置 OpenCode 全局配置\n\n编辑 OpenCode 全局配置文件（`~/.config/opencode.json` 或项目下的 `opencode.json`）：\n\n```json\n{\n  \"lsp\": {\n    \"arkts\": {\n      \"command\": [\"npx\", \"--yes\", \"@ai-arkts/arkts-lsp\", \"--stdio\"],\n      \"extensions\": [\".ets\", \".d.ets\"],\n      \"env\": {\n        \"DEVECO_HOME\": \"D:\\\\Application\\\\Huawei\\\\DevEco Studio\"\n      }\n    }\n  }\n}\n```\n\n> **env 可选**：不配置时自动搜索各平台默认安装路径（`C:\\Program Files\\Huawei\\DevEco Studio`、`/Applications/DevEco-Studio.app`、`/opt/DevEco-Studio` 等）。\n\n### 3. 重启 OpenCode\n\n打开任意 `.ets` 文件，LSP 会自动激活。首次激活时会执行 `hvigor --sync` 初始化项目（可能需要几分钟）。\n\n## 安装方式\n\n### 推荐：npx（零安装，开箱即用）\n\n无需安装，`opencode.json` 中直接配置：\n\n```json\n\"command\": [\"npx\", \"--yes\", \"@ai-arkts/arkts-lsp\", \"--stdio\"]\n```\n\n首次使用时 npx 会自动从 npm 下载并缓存。\n\n### 全局安装\n\n```bash\nnpm install -g @ai-arkts/arkts-lsp\n\n# 安装后直接用\narkts-lsp --stdio\n```\n\n### 本地安装到项目\n\n```bash\nnpm install --save-dev @ai-arkts/arkts-lsp\n```\n\n## 跨平台支持\n\n| 平台 | 默认安装路径 | 二进制名 | 说明 |\n|------|-------------|---------|------|\n| **Windows** | `D:\\Application\\Huawei\\DevEco Studio`<br>`C:\\Program Files\\Huawei\\DevEco Studio`<br>`%LOCALAPPDATA%\\Huawei\\DevecoStudio` | `node.exe`<br>`ohpm.bat` | 扁平目录结构 |\n| **macOS** | `/Applications/DevEco-Studio.app`<br>`~/Applications/DevEco-Studio.app` | `node`<br>`ohpm` | `.app` 包，自动处理 `Contents/` 层 |\n| **Linux`** | `/opt/DevEco-Studio`<br>`~/DevEco-Studio` | `node`<br>`ohpm` | 扁平目录结构 |\n\n### macOS `.app` 包说明\n\nDevEco Studio 在 macOS 上是一个 `.app` bundle，实际内容在 `Contents/` 下：\n\n```\n/Applications/DevEco-Studio.app\n└── Contents/\n    ├── plugins/openharmony/ace-server/out/index.js    ← LSP 引擎\n    ├── sdk/default/sdk-pkg.json                       ← SDK\n    └── tools/node/node                                 ← 构建用 Node\n         tools/hvigor/bin/hvigorw.js                    ← hvigor 构建工具\n```\n\n脚本自动检测 `.app` 后缀并补全 `Contents/`。用户设置 `DEVECO_HOME` 时只需填 `.app` 路径，无需手动加 `Contents`。\n\n## 初始化流程\n\n```\n1. 发现 DevEco Studio\n   ↓\n2. 检验 SDK 完整性（检查 sdk/default/sdk-pkg.json）\n   ↓\n3. 运行 hvigor --sync（10 分钟超时）\n   使用 DevEco 自带的 Node.js + hvigorw.js\n   生成 .hvigor/dependencyMap/dependencyMap.json5\n   ↓\n4. 启动中间层代理 (index.js)\n   传入项目根目录、SDK 路径、扩展路径\n   ↓\n5. 代理启动 ace-server\n   读取上一步生成的依赖映射\n   完成 LSP 初始化\n```\n\n## 环境变量\n\n| 变量 | 必需 | 说明 |\n|------|------|------|\n| `DEVECO_HOME` | 推荐 | DevEco Studio 安装根目录。不设置时自动搜索默认路径 |\n\n## 目录结构\n\n```\narkts-lsp-server/\n├── package.json           ← npm 包定义（bin: arkts-lsp）\n├── lsp-wrapper.js         ← OpenCode 入口（跨平台、hvigor sync）\n├── index.js               ← 中间层代理（minified bundle，不动）\n├── README.md              ← 本文档\n└── tests/\n    └── test-e2e.js        ← E2E 测试套件\n```\n\n## 测试\n\n```bash\nnode arkts-lsp-server/tests/test-e2e.js\n```\n\n测试覆盖：\n- 平台检测逻辑（macOS/Linux/Windows）\n- DevEco Studio 路径自动搜索\n- `Contents/` 层处理（macOS .app bundle）\n- 工具二进制名适配（node.exe vs node）\n- hvigor sync 参数验证\n- LSP 协议初始化验证\n- 错误处理\n\n## 常见问题\n\n### DevEco Studio not found\n\n设置 `DEVECO_HOME` 环境变量指向 DevEco Studio 的安装目录。\n\n### hvigor sync 失败\n\n确认项目是有效的 HarmonyOS 项目（有 `build-profile.json5` 和 `hvigorfile.ts`）。\nhvigor sync 超时时间为 10 分钟，大型项目可能需要更长时间。\n\n### ace-server 不返回诊断\n\nace-server 需要 hvigor sync 生成的依赖映射。确保 sync 步骤成功完成。\n如果项目已有 `.hvigor/dependencyMap/` 目录，说明 sync 已成功运行过。","readmeFilename":"README.md"}