@legna-lnc/legnacode 1.1.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/README.md +184 -0
- package/npm/bin/legna +57 -0
- package/package.json +135 -0
package/README.md
ADDED
|
@@ -0,0 +1,184 @@
|
|
|
1
|
+
# LegnaCode CLI
|
|
2
|
+
<img width="1256" height="416" alt="image" src="https://github.com/user-attachments/assets/5e4717e6-3404-4901-9f5c-1c6462fb1c1a" />
|
|
3
|
+
LegnaCode 是一个基于 Anthropic Claude 的智能终端编程助手,让你直接在命令行中与 AI 协作完成软件工程任务——编辑文件、执行命令、搜索代码、管理 Git 工作流等。
|
|
4
|
+
|
|
5
|
+
---
|
|
6
|
+
|
|
7
|
+
## 更新日志
|
|
8
|
+
|
|
9
|
+
详见 [CHANGELOG.md](./CHANGELOG.md)
|
|
10
|
+
|
|
11
|
+
| 版本 | 日期 | 摘要 |
|
|
12
|
+
|------|------|------|
|
|
13
|
+
| [1.1.0](./CHANGELOG.md#110---2026-04-03) | 2026-04-03 | WebUI 管理面板 (`legna admin`)、双目录管理、配置迁移、npm 发布 |
|
|
14
|
+
| [1.0.9](./CHANGELOG.md#109---2026-04-03) | 2026-04-03 | i18n 多语言补全、内置精美状态栏、配置自动迁移 |
|
|
15
|
+
| [1.0.8](./CHANGELOG.md#108---2026-04-02) | 2026-04-02 | MONITOR_TOOL、WORKFLOW_SCRIPTS、HISTORY_SNIP,3 个重量级子系统,累计 47 flags |
|
|
16
|
+
| [1.0.7](./CHANGELOG.md#107---2026-04-02) | 2026-04-02 | TERMINAL_PANEL、WEB_BROWSER_TOOL、TEMPLATES、BG_SESSIONS,累计 44 flags |
|
|
17
|
+
| [1.0.6](./CHANGELOG.md#106---2026-04-02) | 2026-04-02 | CACHED_MICROCOMPACT、AGENT_TRIGGERS、TREE_SITTER_BASH 等 7 个功能,累计 40 flags |
|
|
18
|
+
| [1.0.5](./CHANGELOG.md#105---2026-04-02) | 2026-04-02 | AGENT_TRIGGERS、MCP_SKILLS、REACTIVE_COMPACT、REVIEW_ARTIFACT 等 6 个功能,累计 39 flags |
|
|
19
|
+
| [1.0.4](./CHANGELOG.md#104---2026-04-02) | 2026-04-02 | ULTRAPLAN、VERIFICATION_AGENT、AUTO_THEME 等 10 个功能,累计 33 flags |
|
|
20
|
+
| [1.0.3](./CHANGELOG.md#103---2026-04-02) | 2026-04-02 | COMMIT_ATTRIBUTION、BASH_CLASSIFIER、EXTRACT_MEMORIES 等 16 个功能 |
|
|
21
|
+
| [1.0.2](./CHANGELOG.md#102---2026-04-02) | 2026-04-02 | QUICK_SEARCH、MESSAGE_ACTIONS、FORK_SUBAGENT、HISTORY_PICKER |
|
|
22
|
+
| [1.0.1](./CHANGELOG.md#101---2026-04-02) | 2026-04-02 | BUDDY 虚拟宠物、TOKEN_BUDGET、构建系统修复 |
|
|
23
|
+
| [1.0.0](./CHANGELOG.md#100---2026-03-31) | 2026-03-31 | 初始发布 |
|
|
24
|
+
|
|
25
|
+
---
|
|
26
|
+
|
|
27
|
+
## 致谢
|
|
28
|
+
|
|
29
|
+
本项目基于 [Claude Code CLI](https://github.com/anthropics/claude-code) 的公开源码构建。
|
|
30
|
+
|
|
31
|
+
Claude Code 是 Anthropic 团队打造的一款出色的终端 AI 编程工具,它开创性地将大语言模型与命令行开发工作流深度融合,提供了文件编辑、代码搜索、Shell 执行、MCP 协议等丰富能力。LegnaCode 站在这个优秀项目的肩膀上,进行了定制化改造和品牌适配。
|
|
32
|
+
|
|
33
|
+
感谢 Anthropic 团队将 Claude Code CLI 开源,让社区能够在此基础上探索更多可能性。
|
|
34
|
+
|
|
35
|
+
---
|
|
36
|
+
|
|
37
|
+
## 特性
|
|
38
|
+
|
|
39
|
+
- **终端原生体验** — 基于 React + Ink 构建的现代终端 UI,支持语法高亮、结构化 Diff 展示
|
|
40
|
+
- **45+ 内置工具** — 文件读写、代码搜索(Glob/Grep)、Shell 执行、Web 抓取、Jupyter Notebook 编辑等
|
|
41
|
+
- **多层安全防护** — Bash/Zsh/PowerShell 命令安全检测、沙箱机制、权限分级控制
|
|
42
|
+
- **多云 AI 后端** — 支持 Anthropic API、AWS Bedrock、GCP Vertex、Azure
|
|
43
|
+
- **MCP 协议支持** — 通过 Model Context Protocol 连接外部工具和数据源
|
|
44
|
+
- **多 Agent 协作** — 支持子 Agent 派生、团队协作、任务编排
|
|
45
|
+
- **插件与技能系统** — 可扩展的插件架构和可复用的技能工作流
|
|
46
|
+
- **持久化记忆** — 跨会话的上下文记忆系统
|
|
47
|
+
- **纯 TS 语法高亮** — 内置基于 highlight.js 的纯 TypeScript 语法高亮实现,无需原生模块依赖
|
|
48
|
+
- **WebUI 管理面板** — `legna admin` 启动浏览器管理面板,可视化编辑 `~/.claude/` 和 `~/.legna/` 配置、切换配置文件、浏览会话记录、一键迁移配置
|
|
49
|
+
|
|
50
|
+
---
|
|
51
|
+
|
|
52
|
+
## 环境要求
|
|
53
|
+
|
|
54
|
+
| 依赖 | 版本 |
|
|
55
|
+
|------|------|
|
|
56
|
+
| [Bun](https://bun.sh) | >= 1.2.0 |
|
|
57
|
+
| Node.js | >= 18(可选) |
|
|
58
|
+
| Git | >= 2.0 |
|
|
59
|
+
| 操作系统 | macOS / Linux |
|
|
60
|
+
|
|
61
|
+
---
|
|
62
|
+
|
|
63
|
+
## 快速开始
|
|
64
|
+
|
|
65
|
+
### 1. 克隆仓库
|
|
66
|
+
|
|
67
|
+
```bash
|
|
68
|
+
git clone https://github.com/LegnaOS/LegnaCode-cli.git
|
|
69
|
+
cd LegnaCode-cli
|
|
70
|
+
```
|
|
71
|
+
|
|
72
|
+
### 2. 安装依赖
|
|
73
|
+
|
|
74
|
+
```bash
|
|
75
|
+
bun install
|
|
76
|
+
```
|
|
77
|
+
|
|
78
|
+
### 3. 编译为独立二进制
|
|
79
|
+
|
|
80
|
+
```bash
|
|
81
|
+
bun run compile
|
|
82
|
+
```
|
|
83
|
+
|
|
84
|
+
### 4. 运行
|
|
85
|
+
|
|
86
|
+
```bash
|
|
87
|
+
# 交互模式
|
|
88
|
+
./legna
|
|
89
|
+
|
|
90
|
+
# 非交互模式(直接提问)
|
|
91
|
+
./legna -p "解释这段代码的作用"
|
|
92
|
+
|
|
93
|
+
# 继续上次会话
|
|
94
|
+
./legna --continue
|
|
95
|
+
|
|
96
|
+
# 查看版本
|
|
97
|
+
./legna --version
|
|
98
|
+
```
|
|
99
|
+
|
|
100
|
+
---
|
|
101
|
+
|
|
102
|
+
## 项目结构
|
|
103
|
+
|
|
104
|
+
```
|
|
105
|
+
├── src/
|
|
106
|
+
│ ├── entrypoints/ # 入口文件(cli.tsx)
|
|
107
|
+
│ ├── server/ # HTTP 服务器(admin WebUI)
|
|
108
|
+
│ ├── components/ # React/Ink 终端 UI 组件
|
|
109
|
+
│ ├── tools/ # 内置工具(Bash、文件操作、搜索等)
|
|
110
|
+
│ ├── services/ # API 调用、MCP 客户端、分析等
|
|
111
|
+
│ ├── native-ts/ # 纯 TS 实现的原生模块替代(语法高亮等)
|
|
112
|
+
│ ├── utils/ # 工具函数
|
|
113
|
+
│ └── hooks/ # React hooks
|
|
114
|
+
├── webui/ # Admin WebUI 前端(React + Vite + Tailwind)
|
|
115
|
+
├── stubs/ # 原生模块的 stub(编译时外部依赖占位)
|
|
116
|
+
├── scripts/ # 构建脚本
|
|
117
|
+
├── bunfig.toml # Bun 构建配置(Feature Flags、宏定义)
|
|
118
|
+
└── package.json
|
|
119
|
+
```
|
|
120
|
+
|
|
121
|
+
---
|
|
122
|
+
|
|
123
|
+
## 构建说明
|
|
124
|
+
|
|
125
|
+
LegnaCode 使用 Bun 的 bundler 进行构建,支持两种模式:
|
|
126
|
+
|
|
127
|
+
- `bun run build` — 构建到 `dist/` 目录,适合开发调试
|
|
128
|
+
- `bun run compile` — 编译为独立二进制 `legna`,无需 Bun 运行时
|
|
129
|
+
|
|
130
|
+
### Admin WebUI
|
|
131
|
+
|
|
132
|
+
```bash
|
|
133
|
+
# 启动管理面板(默认端口 3456)
|
|
134
|
+
legna admin
|
|
135
|
+
|
|
136
|
+
# 自定义端口
|
|
137
|
+
legna admin 8080
|
|
138
|
+
```
|
|
139
|
+
|
|
140
|
+
管理面板支持:
|
|
141
|
+
- 可视化编辑 `~/.claude/` 和 `~/.legna/` 的 settings.json
|
|
142
|
+
- 配置文件(settings*.json)一键切换
|
|
143
|
+
- 会话记录浏览,复制 resume 命令
|
|
144
|
+
- Claude ↔ LegnaCode 配置迁移(全量或选择性字段)
|
|
145
|
+
|
|
146
|
+
构建时通过 `bunfig.toml` 中的 `[bundle.define]` 注入版本号等编译时常量,通过 `[bundle.features]` 控制 Feature Flags 实现死代码消除。
|
|
147
|
+
|
|
148
|
+
原生模块(`color-diff-napi`、`modifiers-napi` 等)标记为 `external`,运行时从 `stubs/` 加载占位实现。语法高亮已切换为 `src/native-ts/color-diff/` 下的纯 TypeScript 实现,无需任何原生编译依赖。
|
|
149
|
+
|
|
150
|
+
---
|
|
151
|
+
|
|
152
|
+
## 配置
|
|
153
|
+
|
|
154
|
+
LegnaCode 使用 `~/.legna/` 作为首选配置目录,兼容回退到 `~/.claude/`:
|
|
155
|
+
|
|
156
|
+
- `~/.legna/settings.json` — 全局用户设置(首选)
|
|
157
|
+
- `~/.claude/settings.json` — 兼容回退,启动时自动同步到 `~/.legna/`
|
|
158
|
+
- `项目根目录/.claude/settings.json` — 项目级设置
|
|
159
|
+
- `CLAUDE.md` — 项目指令文件,AI 会自动读取并遵循
|
|
160
|
+
|
|
161
|
+
> 启动时如果 `~/.claude/settings.json` 存在但 `~/.legna/settings.json` 不存在,会自动复制过去。两边都存在且内容不同时会打印警告,不会自动覆盖。设置 `LEGNA_NO_CONFIG_SYNC=1` 可禁止自动迁移。
|
|
162
|
+
|
|
163
|
+
### 环境变量
|
|
164
|
+
|
|
165
|
+
| 变量 | 说明 |
|
|
166
|
+
|------|------|
|
|
167
|
+
| `ANTHROPIC_API_KEY` | Anthropic API 密钥 |
|
|
168
|
+
| `CLAUDE_CODE_USE_BEDROCK` | 使用 AWS Bedrock 后端 |
|
|
169
|
+
| `CLAUDE_CODE_USE_VERTEX` | 使用 GCP Vertex 后端 |
|
|
170
|
+
| `CLAUDE_CODE_SYNTAX_HIGHLIGHT` | 设为 `0` 禁用语法高亮 |
|
|
171
|
+
|
|
172
|
+
---
|
|
173
|
+
|
|
174
|
+
## 许可证
|
|
175
|
+
|
|
176
|
+
本项目遵循上游 Claude Code CLI 的开源许可协议。详见 [Claude Code CLI](https://github.com/anthropics/claude-code) 原始仓库。
|
|
177
|
+
|
|
178
|
+
---
|
|
179
|
+
|
|
180
|
+
## 相关链接
|
|
181
|
+
|
|
182
|
+
- [Claude Code CLI(上游项目)](https://github.com/anthropics/claude-code)
|
|
183
|
+
- [Anthropic](https://www.anthropic.com)
|
|
184
|
+
- [Model Context Protocol](https://modelcontextprotocol.io)
|
package/npm/bin/legna
ADDED
|
@@ -0,0 +1,57 @@
|
|
|
1
|
+
#!/usr/bin/env node
|
|
2
|
+
"use strict";
|
|
3
|
+
|
|
4
|
+
var os = require("os");
|
|
5
|
+
var path = require("path");
|
|
6
|
+
var childProcess = require("child_process");
|
|
7
|
+
|
|
8
|
+
var PLATFORMS = {
|
|
9
|
+
"darwin-arm64": "@legna-lnc/legnacode-darwin-arm64",
|
|
10
|
+
"darwin-x64": "@legna-lnc/legnacode-darwin-x64",
|
|
11
|
+
"linux-x64": "@legna-lnc/legnacode-linux-x64",
|
|
12
|
+
"linux-arm64": "@legna-lnc/legnacode-linux-arm64",
|
|
13
|
+
"win32-x64": "@legna-lnc/legnacode-win32-x64",
|
|
14
|
+
};
|
|
15
|
+
|
|
16
|
+
var key = process.platform + "-" + os.arch();
|
|
17
|
+
var pkg = PLATFORMS[key];
|
|
18
|
+
|
|
19
|
+
if (!pkg) {
|
|
20
|
+
console.error(
|
|
21
|
+
"legna: unsupported platform " + key + "\n" +
|
|
22
|
+
"Supported: " + Object.keys(PLATFORMS).join(", ")
|
|
23
|
+
);
|
|
24
|
+
process.exit(1);
|
|
25
|
+
}
|
|
26
|
+
|
|
27
|
+
var bin;
|
|
28
|
+
try {
|
|
29
|
+
var binName = process.platform === "win32" ? "legna.exe" : "bin/legna";
|
|
30
|
+
bin = path.resolve(require.resolve(pkg + "/package.json"), "..", binName);
|
|
31
|
+
} catch (e) {
|
|
32
|
+
console.error(
|
|
33
|
+
"legna: could not find platform package " + pkg + "\n" +
|
|
34
|
+
"Try reinstalling: npm install -g @legna-lnc/legnacode"
|
|
35
|
+
);
|
|
36
|
+
process.exit(1);
|
|
37
|
+
}
|
|
38
|
+
|
|
39
|
+
var result = childProcess.spawnSync(bin, process.argv.slice(2), {
|
|
40
|
+
stdio: "inherit",
|
|
41
|
+
env: process.env,
|
|
42
|
+
});
|
|
43
|
+
|
|
44
|
+
if (result.error) {
|
|
45
|
+
if (result.error.code === "EACCES") {
|
|
46
|
+
require("fs").chmodSync(bin, 0o755);
|
|
47
|
+
result = childProcess.spawnSync(bin, process.argv.slice(2), {
|
|
48
|
+
stdio: "inherit",
|
|
49
|
+
env: process.env,
|
|
50
|
+
});
|
|
51
|
+
} else {
|
|
52
|
+
console.error("legna: " + result.error.message);
|
|
53
|
+
process.exit(1);
|
|
54
|
+
}
|
|
55
|
+
}
|
|
56
|
+
|
|
57
|
+
process.exit(result.status === null ? 1 : result.status);
|
package/package.json
ADDED
|
@@ -0,0 +1,135 @@
|
|
|
1
|
+
{
|
|
2
|
+
"name": "@legna-lnc/legnacode",
|
|
3
|
+
"version": "1.1.0",
|
|
4
|
+
"description": "LegnaCode — legna.lnc's official CLI for coding assistance",
|
|
5
|
+
"type": "module",
|
|
6
|
+
"bin": {
|
|
7
|
+
"legna": "npm/bin/legna"
|
|
8
|
+
},
|
|
9
|
+
"files": [
|
|
10
|
+
"npm/",
|
|
11
|
+
"README.md"
|
|
12
|
+
],
|
|
13
|
+
"scripts": {
|
|
14
|
+
"build": "bun run scripts/build.ts && python3 scripts/postbuild-fix.py",
|
|
15
|
+
"compile": "bun run scripts/compile.ts",
|
|
16
|
+
"compile:all": "bun run scripts/compile-all.ts",
|
|
17
|
+
"publish:all": "bun run scripts/publish.ts",
|
|
18
|
+
"dev": "bun --watch src/main.tsx",
|
|
19
|
+
"typecheck": "tsc --noEmit",
|
|
20
|
+
"lint": "eslint src/",
|
|
21
|
+
"clean": "rm -rf dist legna"
|
|
22
|
+
},
|
|
23
|
+
"dependencies": {
|
|
24
|
+
"@alcalzone/ansi-tokenize": "^0.1.3",
|
|
25
|
+
"@anthropic-ai/bedrock-sdk": "^0.26.4",
|
|
26
|
+
"@anthropic-ai/claude-agent-sdk": "^0.1.0",
|
|
27
|
+
"@anthropic-ai/foundry-sdk": "^0.2.3",
|
|
28
|
+
"@anthropic-ai/sdk": "^0.52.0",
|
|
29
|
+
"@anthropic-ai/vertex-sdk": "^0.14.4",
|
|
30
|
+
"@aws-sdk/client-bedrock": "^3.1020.0",
|
|
31
|
+
"@aws-sdk/client-bedrock-runtime": "^3.700.0",
|
|
32
|
+
"@aws-sdk/client-sts": "^3.1020.0",
|
|
33
|
+
"@azure/identity": "^4.13.1",
|
|
34
|
+
"@commander-js/extra-typings": "^13.1.0",
|
|
35
|
+
"@growthbook/growthbook": "^1.3.0",
|
|
36
|
+
"@modelcontextprotocol/sdk": "^1.12.0",
|
|
37
|
+
"@opentelemetry/api": "^1.9.0",
|
|
38
|
+
"@opentelemetry/api-logs": "^0.57.0",
|
|
39
|
+
"@opentelemetry/core": "^1.30.0",
|
|
40
|
+
"@opentelemetry/exporter-logs-otlp-grpc": "^0.214.0",
|
|
41
|
+
"@opentelemetry/exporter-logs-otlp-http": "^0.214.0",
|
|
42
|
+
"@opentelemetry/exporter-logs-otlp-proto": "^0.214.0",
|
|
43
|
+
"@opentelemetry/exporter-metrics-otlp-grpc": "^0.214.0",
|
|
44
|
+
"@opentelemetry/exporter-metrics-otlp-http": "^0.214.0",
|
|
45
|
+
"@opentelemetry/exporter-metrics-otlp-proto": "^0.214.0",
|
|
46
|
+
"@opentelemetry/exporter-prometheus": "^0.214.0",
|
|
47
|
+
"@opentelemetry/exporter-trace-otlp-grpc": "^0.214.0",
|
|
48
|
+
"@opentelemetry/exporter-trace-otlp-http": "^0.214.0",
|
|
49
|
+
"@opentelemetry/exporter-trace-otlp-proto": "^0.214.0",
|
|
50
|
+
"@opentelemetry/resources": "^2.0.0",
|
|
51
|
+
"@opentelemetry/sdk-logs": "^0.57.0",
|
|
52
|
+
"@opentelemetry/sdk-metrics": "^1.30.0",
|
|
53
|
+
"@opentelemetry/sdk-trace-base": "^1.30.0",
|
|
54
|
+
"@opentelemetry/semantic-conventions": "^1.30.0",
|
|
55
|
+
"ajv": "^8.17.0",
|
|
56
|
+
"asciichart": "^1.5.25",
|
|
57
|
+
"auto-bind": "^5.0.1",
|
|
58
|
+
"axios": "^1.7.0",
|
|
59
|
+
"bidi-js": "^1.0.3",
|
|
60
|
+
"chalk": "^5.4.0",
|
|
61
|
+
"chokidar": "^4.0.0",
|
|
62
|
+
"cli-boxes": "^3.0.0",
|
|
63
|
+
"commander": "13",
|
|
64
|
+
"diff": "^7.0.0",
|
|
65
|
+
"emoji-regex": "^10.4.0",
|
|
66
|
+
"env-paths": "^3.0.0",
|
|
67
|
+
"execa": "^9.5.0",
|
|
68
|
+
"fflate": "^0.8.2",
|
|
69
|
+
"figures": "^6.1.0",
|
|
70
|
+
"fuse.js": "^7.0.0",
|
|
71
|
+
"get-east-asian-width": "^1.3.0",
|
|
72
|
+
"google-auth-library": "^9.15.0",
|
|
73
|
+
"highlight.js": "^11.11.0",
|
|
74
|
+
"https-proxy-agent": "^7.0.0",
|
|
75
|
+
"ignore": "^7.0.0",
|
|
76
|
+
"indent-string": "^5.0.0",
|
|
77
|
+
"ink": "^5.1.0",
|
|
78
|
+
"jsonc-parser": "^3.3.0",
|
|
79
|
+
"lodash-es": "^4.17.21",
|
|
80
|
+
"lru-cache": "^11.0.0",
|
|
81
|
+
"marked": "^15.0.0",
|
|
82
|
+
"p-map": "^7.0.0",
|
|
83
|
+
"picomatch": "^4.0.0",
|
|
84
|
+
"proper-lockfile": "^4.1.2",
|
|
85
|
+
"qrcode": "^1.5.4",
|
|
86
|
+
"react": "19",
|
|
87
|
+
"react-compiler-runtime": "^1.0.0",
|
|
88
|
+
"react-reconciler": "0.33.0",
|
|
89
|
+
"semver": "^7.6.0",
|
|
90
|
+
"sharp": "^0.34.5",
|
|
91
|
+
"shell-quote": "^1.8.0",
|
|
92
|
+
"signal-exit": "^4.1.0",
|
|
93
|
+
"stack-utils": "^2.0.6",
|
|
94
|
+
"strip-ansi": "^7.1.0",
|
|
95
|
+
"supports-hyperlinks": "^3.1.0",
|
|
96
|
+
"tree-kill": "^1.2.2",
|
|
97
|
+
"turndown": "^7.2.2",
|
|
98
|
+
"type-fest": "^4.30.0",
|
|
99
|
+
"undici": "^7.3.0",
|
|
100
|
+
"usehooks-ts": "^3.1.0",
|
|
101
|
+
"vscode-jsonrpc": "^8.2.0",
|
|
102
|
+
"vscode-languageserver-protocol": "^3.17.0",
|
|
103
|
+
"vscode-languageserver-types": "^3.17.0",
|
|
104
|
+
"wrap-ansi": "^9.0.0",
|
|
105
|
+
"ws": "^8.18.0",
|
|
106
|
+
"xss": "^1.0.15",
|
|
107
|
+
"yaml": "^2.7.0",
|
|
108
|
+
"zod": "^3.25.0"
|
|
109
|
+
},
|
|
110
|
+
"devDependencies": {
|
|
111
|
+
"@types/bun": "^1.2.0",
|
|
112
|
+
"@types/diff": "^7.0.0",
|
|
113
|
+
"@types/lodash-es": "^4.17.12",
|
|
114
|
+
"@types/node": "^22.10.0",
|
|
115
|
+
"@types/proper-lockfile": "^4.1.4",
|
|
116
|
+
"@types/qrcode": "^1.5.5",
|
|
117
|
+
"@types/react": "^18.3.0",
|
|
118
|
+
"@types/react-reconciler": "^0.28.8",
|
|
119
|
+
"@types/semver": "^7.5.8",
|
|
120
|
+
"@types/shell-quote": "^1.7.5",
|
|
121
|
+
"@types/stack-utils": "^2.0.3",
|
|
122
|
+
"@types/ws": "^8.5.0",
|
|
123
|
+
"typescript": "^5.7.0"
|
|
124
|
+
},
|
|
125
|
+
"engines": {
|
|
126
|
+
"bun": ">=1.2.0"
|
|
127
|
+
},
|
|
128
|
+
"optionalDependencies": {
|
|
129
|
+
"@legna-lnc/legnacode-darwin-arm64": "1.0.9",
|
|
130
|
+
"@legna-lnc/legnacode-darwin-x64": "1.0.9",
|
|
131
|
+
"@legna-lnc/legnacode-linux-x64": "1.0.9",
|
|
132
|
+
"@legna-lnc/legnacode-linux-arm64": "1.0.9",
|
|
133
|
+
"@legna-lnc/legnacode-win32-x64": "1.0.9"
|
|
134
|
+
}
|
|
135
|
+
}
|