dgxay-code-cli 0.0.0-stage → 1.0.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.
Files changed (45) hide show
  1. package/LICENSE +674 -0
  2. package/README-zh.md +200 -0
  3. package/README.md +182 -2
  4. package/bin/dgxay.js +42 -0
  5. package/package.json +47 -4
  6. package/src/cli/ansi.js +509 -0
  7. package/src/cli/approval.js +186 -0
  8. package/src/cli/args.js +162 -0
  9. package/src/cli/command-table.js +52 -0
  10. package/src/cli/editor.js +574 -0
  11. package/src/cli/index.js +228 -0
  12. package/src/cli/print.js +148 -0
  13. package/src/cli/render.js +324 -0
  14. package/src/cli/repl-state.js +85 -0
  15. package/src/cli/repl.js +1167 -0
  16. package/src/cli/slash.js +74 -0
  17. package/src/cli/ui.js +52 -0
  18. package/src/commands/_shared.js +20 -0
  19. package/src/commands/chat.js +212 -0
  20. package/src/commands/config.js +363 -0
  21. package/src/commands/context.js +43 -0
  22. package/src/commands/doctor.js +192 -0
  23. package/src/commands/export.js +102 -0
  24. package/src/commands/mcp.js +257 -0
  25. package/src/commands/model.js +223 -0
  26. package/src/commands/oauth.js +246 -0
  27. package/src/commands/permission.js +108 -0
  28. package/src/commands/provider.js +332 -0
  29. package/src/commands/run.js +172 -0
  30. package/src/commands/skill.js +94 -0
  31. package/src/commands/workspace.js +100 -0
  32. package/src/core/agent.js +419 -0
  33. package/src/core/llm.js +709 -0
  34. package/src/core/mcp.js +271 -0
  35. package/src/core/oauth.js +737 -0
  36. package/src/core/prompt.js +269 -0
  37. package/src/core/sessions.js +208 -0
  38. package/src/core/tools.js +391 -0
  39. package/src/services/config.js +182 -0
  40. package/src/services/input.js +91 -0
  41. package/src/services/session-bus.js +104 -0
  42. package/src/services/settings.js +340 -0
  43. package/src/services/skills.js +125 -0
  44. package/src/services/terminal.js +124 -0
  45. package/src/services/version.js +25 -0
package/README-zh.md ADDED
@@ -0,0 +1,200 @@
1
+ # DgxayCode CLI
2
+
3
+ DgxayCode 的命令行版本:一个支持多协议、四档权限、自动审查、技能与 MCP 的 AI 编码助手。
4
+
5
+ 桌面版(Electron)的全部能力都搬到了终端里,只去掉了界面:
6
+
7
+ - **三种接口协议**:OpenAI ChatCompletions、Anthropic Messages、OpenAI Responses,可自由切换供应商与模型
8
+ - **工作模式**:读写文件、执行命令、访问网络,先读后写、完成前不停止
9
+ - **四档权限**:无权限 / 普通权限 / 自动审查 / 完全权限,在进程内强制执行
10
+ - **自动审查**:由审查模型判断每次操作,可疑操作转交你确认
11
+ - **会话**:历史持久化、恢复、列表、重命名、删除、导出(最多保留 200 段)
12
+ - **上下文压缩**:`/compress` 用摘要替换历史
13
+ - **技能**:扫描 `~/.dcb/skills`,按会话启用
14
+ - **MCP**:配置、启停、日志
15
+ - **OAuth**:OpenAI / Anthropic / xAI / Google 账户连接(PKCE + 系统浏览器)
16
+ - **自检**:`dgxay doctor` 检查环境与模型连通性
17
+
18
+ ## 安装
19
+
20
+ 需要 **Node.js 18 或更高版本**。
21
+
22
+ ```bash
23
+ npm install -g dgxay-code-cli
24
+ dgxay
25
+ ```
26
+
27
+ 也可以不安装直接用:
28
+
29
+ ```bash
30
+ npx dgxay-code-cli --help
31
+ ```
32
+
33
+ 从源码安装:
34
+
35
+ ```bash
36
+ git clone https://github.com/dgxay/DgxayCode.git
37
+ cd DgxayCode-cli
38
+ npm link # 或 npm install -g .
39
+ dgxay --version
40
+ ```
41
+
42
+ ## 快速开始
43
+
44
+ ```bash
45
+ # 1. 首次配置:选择协议、填写 Base URL / API Key / 模型
46
+ dgxay config init
47
+
48
+ # 2. 自检
49
+ dgxay doctor
50
+
51
+ # 3. 进入交互模式
52
+ dgxay
53
+ ```
54
+
55
+ 一条命令直接提问:
56
+
57
+ ```bash
58
+ dgxay "把这个目录里的 JSON 合并成一个数组"
59
+
60
+ # 指定工作空间、工作模式、自动审查
61
+ dgxay run -p "给所有 Python 文件补上类型注解" -C ./project -m work --permission auto
62
+
63
+ # 结构化输出,方便接管道
64
+ dgxay run -p "总结这个仓库的架构" -o json | jq -r .text
65
+ ```
66
+
67
+ ## 交互模式
68
+
69
+ 进��� `dgxay` 后:
70
+
71
+ | 输入 | 作用 |
72
+ | --- | --- |
73
+ | 直接输入文字 | 发送给模型 |
74
+ | `!命令` | 执行终端命令,输出进入对话上下文,例如 `!git status` |
75
+ | `/` | 打开斜杠命令补全 |
76
+ | 行尾 `\` | 续行,输入多行消息 |
77
+ | `Ctrl+C` | 生成中中断;空闲时退出;输入框有内容时清空 |
78
+ | `Ctrl+D` | 退出 |
79
+ | `↑` / `↓` | 浏览历史输入 |
80
+
81
+ ### 斜杠命令
82
+
83
+ | 命令 | 说明 |
84
+ | --- | --- |
85
+ | `/help` | 查看全部命令 |
86
+ | `/new` `/list` `/resume <序号>` `/delete <序号>` `/rename <标题>` | 会话管理 |
87
+ | `/compress`(`/压缩`) | 压缩上下文,有损且不可撤销 |
88
+ | `/skill [名称]`(`/技能`) | 列出 / 启用技能 |
89
+ | `/model` `/provider` | 查看或切换模型 / 供应商 |
90
+ | `/mode [chat\|work]` | 切换模式 |
91
+ | `/permission [档位]` | 切换权限 |
92
+ | `/cd <目录>` `/ls` `/pwd` | 工作空间 |
93
+ | `/term <命令>` | 执行终端命令 |
94
+ | `/context` | 上下文用量 |
95
+ | `/mcp [子命令]` | MCP 管理 |
96
+ | `/clear` `/exit` | 清屏 / 退出 |
97
+
98
+ ## 子命令
99
+
100
+ ```
101
+ dgxay 进入交互模式
102
+ dgxay "问题" 单次执行后退出
103
+ dgxay run 单次执行(-p / -C / -m / --permission / -o json)
104
+ dgxay chat 会话:list / show / resume / rm / rename / clear
105
+ dgxay config init / show / get / set / path / reset
106
+ dgxay provider list / add / edit / rm / use / mv / review
107
+ dgxay model list / use / add / rm / fetch
108
+ dgxay oauth list / connect / disconnect / client
109
+ dgxay mcp list / add / start / stop / logs / rm / env
110
+ dgxay skill list / show / path
111
+ dgxay workspace set / list / clear
112
+ dgxay permission list / set
113
+ dgxay context 查看上下文估算
114
+ dgxay export 导出会话(Markdown / JSON)
115
+ dgxay doctor 自检
116
+ ```
117
+
118
+ 任何子命令都可以加 `--help` 查看详细用法。
119
+
120
+ ## 权限
121
+
122
+ | 档位 | 能力 | 授权 |
123
+ | --- | --- | --- |
124
+ | `none` 无权限 | 只能以只读方式访问工作空间内的文件 | 无 |
125
+ | `normal` 普通权限 | 全部能力 | **每次**操作都要你确认 |
126
+ | `auto` 自动审查 | 全部能力 | 先由审查模型判断,可疑才询问 |
127
+ | `full` 完全权限 | 全部能力 | 不审查、不询问 |
128
+
129
+ - 权限在工具执行层强制校验,改前端(这里是交互层)绕不过去。
130
+ - 自动审查需要给供应商配置审查模型:`dgxay provider review <供应商> --model <模型ID>`;没配置时 `auto` 不可用,会自动回落到 `normal`。
131
+ - 非交互环境(管道输入)遇到需要确认的操作一律拒绝;确实要放行时加 `--yes`。
132
+ - 删除是**永久删除**,不进回收站;批量修改前请先提交 Git。
133
+
134
+ ## 数据与配置
135
+
136
+ 数据目录:`~/.dcb`(Windows 为 `%USERPROFILE%\.dcb`),与桌面版共用同一份配置与对话。
137
+
138
+ ```
139
+ ~/.dcb/
140
+ ├── config.json # 供应商、模型、审查模型、模式、权限
141
+ ├── chats.json # 对话历史(最多 200 段)
142
+ ├── oauth.json # OAuth 客户端与账户令牌(0600)
143
+ ├── mcp.json # MCP server 配置
144
+ └── skills/ # 技能(SKILL.md 或 name.md)
145
+ ```
146
+
147
+ - API Key 在 `config.json` 中**是明文**;不要把该目录发到公开仓库。
148
+ - 用 `DGXAY_HOME=/tmp/test dgxay` 可以隔离数据目录(桌面版的 `DCB_HOME` 同样兼容)。
149
+ - 如果本机从桌面版迁移,OAuth 令牌由 Electron `safeStorage` 加密,CLI 无法解密,需要重新执行 `dgxay oauth connect <平台>`。
150
+
151
+ ## 环境变量
152
+
153
+ | 变量 | 作用 |
154
+ | --- | --- |
155
+ | `DGXAY_HOME` | 覆盖数据目录 |
156
+ | `DGXAY_API_KEY` | `config init` 时用作 API Key |
157
+ | `DGXAY_TOKEN_KEY` | 给 OAuth 令牌加解密口令(不设置则按明文 base64 保存) |
158
+ | `DGXAY_SHOW_REASONING=1` | 实时显示思考过程(默认折叠为一行摘要) |
159
+ | `DGXAY_COLOR=always\|never` | 强制开关颜色 |
160
+ | `NO_COLOR` | 关闭颜色 |
161
+ | `DGXAY_DEBUG=1` | 输出调试信息与堆栈 |
162
+ | `DGXAY_OAUTH_NO_BROWSER=1` | 授权时不自动打开浏览器(只打印链接) |
163
+
164
+ ## 终端兼容性
165
+
166
+ 流式输出只使用 `\r`(回到行首)和空格覆盖两种所有终端都支持的能力,**不依赖光标上移或清行序列**——
167
+ 这两类序列在部分 Windows 控制台组合下会被忽略,导致每段增量都变成新的一行。
168
+
169
+ 渲染分两步:生成过程中只在最后一行实时刷新预览;生成结束时一次性地按 Markdown 完整排版输出
170
+ (标题、列表、表格、代码块对齐)。所以在任何终端里每段正文都只会出现一次,不会堆积。
171
+
172
+ ## 与桌面版的差异
173
+
174
+ - 没有窗口、没有快捷键,全部操作用命令或斜杠命令完成。
175
+ - 上下文圆环换成输入框上方的状态行和 `/context`。
176
+ - OAuth 令牌不再使用系统钥匙串加密;可用 `DGXAY_TOKEN_KEY` 开启加密。
177
+ - 补上了桌面版没有的能力:`dgxay run` 单次执行、`export` 导出、`doctor` 自检。
178
+
179
+ ## 已知限制
180
+
181
+ - 每次请求只发送最近 **24 条**消息,更早的内容会被丢弃;长对话请先 `/compress` 或另起会话。
182
+ - `/compress` 有损且不可撤销。
183
+ - MCP 目前只管理进程,**尚未把 MCP 工具暴露给模型**(与桌面版一致)。
184
+ - 终端命令没有 PTY,不支持 `vim` / `top` / `ssh` 等交互式命令。
185
+ - 自动审查是 LLM,可能判断错误,不能代替人工审查。
186
+ - 上下文用量是字符启发式估算,实际 token 以模型返回的 `usage` 为准。
187
+
188
+ ## 开发
189
+
190
+ ```bash
191
+ npm test # 运行全部测试(内置 mock 服务,不消耗真实额度)
192
+ npm run pack:check # 检查 npm 发布内容
193
+ node bin/dgxay.js --help
194
+ ```
195
+
196
+ 测试覆盖:三种协议的流式与工具调用、权限矩阵(含拒绝路径)、会话持久化与压缩、SSE 分块解析、Markdown 渲染、参数解析。
197
+
198
+ ## 许可证
199
+
200
+ GNU General Public License v3.0,见 [LICENSE](./LICENSE)。
package/README.md CHANGED
@@ -1,3 +1,183 @@
1
- # Temporary Holding Version
1
+ # DgxayCode CLI
2
2
 
3
- This version is a temporary placeholder for this package. An operational version to replace this has been submitted for review and is awaiting a staged release.
3
+ The command-line edition of DgxayCode: a multi-protocol AI coding agent with four permission levels, model-based safety review, skills and MCP support.
4
+
5
+ Everything the desktop (Electron) app can do is available here — only the UI is gone:
6
+
7
+ - **Three protocols** — OpenAI ChatCompletions, Anthropic Messages and OpenAI Responses; switch providers and models freely.
8
+ - **Work mode** — read/write files, run commands, fetch URLs; works through a task to completion instead of stopping at a plan.
9
+ - **Four permission levels** — none / normal / auto-review / full, enforced inside the tool layer.
10
+ - **Auto review** — a reviewer model judges each operation; suspicious ones are handed back to you.
11
+ - **Sessions** — persisted history, resume, list, rename, delete, export (200 sessions max).
12
+ - **Context compression** — `/compress` replaces history with a summary.
13
+ - **Skills** — scanned from `~/.dcb/skills`, enabled per conversation.
14
+ - **MCP** — configure, start, stop, inspect logs.
15
+ - **OAuth** — connect OpenAI / Anthropic / xAI / Google accounts (PKCE, system browser).
16
+ - **Self-check** — `dgxay doctor` verifies environment and model connectivity.
17
+
18
+ ## Install
19
+
20
+ Requires **Node.js 18+**.
21
+
22
+ ```bash
23
+ npm install -g dgxay-code-cli
24
+ dgxay
25
+ ```
26
+
27
+ Or run without installing:
28
+
29
+ ```bash
30
+ npx dgxay-code-cli --help
31
+ ```
32
+
33
+ From source:
34
+
35
+ ```bash
36
+ git clone https://github.com/dgxay/DgxayCode.git
37
+ cd DgxayCode-cli
38
+ npm link # or: npm install -g .
39
+ dgxay --version
40
+ ```
41
+
42
+ ## Quick start
43
+
44
+ ```bash
45
+ # 1. First-time setup: protocol, Base URL, API key, model
46
+ dgxay config init
47
+
48
+ # 2. Self-check
49
+ dgxay doctor
50
+
51
+ # 3. Interactive mode
52
+ dgxay
53
+ ```
54
+
55
+ Ask once and exit:
56
+
57
+ ```bash
58
+ dgxay "merge every JSON file in this folder into one array"
59
+
60
+ # work mode with auto review
61
+ dgxay run -p "add type hints to all Python files" -C ./project -m work --permission auto
62
+
63
+ # structured output
64
+ dgxay run -p "summarize this repo's architecture" -o json | jq -r .text
65
+ ```
66
+
67
+ ## Interactive mode
68
+
69
+ | Input | Action |
70
+ | --- | --- |
71
+ | text | Send to the model |
72
+ | `!command` | Run a shell command; output joins the context, e.g. `!git status` |
73
+ | `/` | Slash-command completion |
74
+ | trailing `\` | Continue on the next line |
75
+ | `Ctrl+C` | Abort while generating; clear the input when non-empty; exit when idle |
76
+ | `Ctrl+D` | Exit |
77
+ | `↑` / `↓` | Input history |
78
+
79
+ ### Slash commands
80
+
81
+ `/help` `/new` `/list` `/resume` `/delete` `/rename` `/compress` `/skill` `/model` `/provider` `/mode` `/permission` `/cd` `/ls` `/pwd` `/term` `/context` `/mcp` `/clear` `/exit`
82
+
83
+ ## Subcommands
84
+
85
+ ```
86
+ dgxay interactive mode
87
+ dgxay "question" one-shot ask
88
+ dgxay run one-shot ask (-p / -C / -m / --permission / -o json)
89
+ dgxay chat list / show / resume / rm / rename / clear
90
+ dgxay config init / show / get / set / path / reset
91
+ dgxay provider list / add / edit / rm / use / mv / review
92
+ dgxay model list / use / add / rm / fetch
93
+ dgxay oauth list / connect / disconnect / client
94
+ dgxay mcp list / add / start / stop / logs / rm / env
95
+ dgxay skill list / show / path
96
+ dgxay workspace set / list / clear
97
+ dgxay permission list / set
98
+ dgxay context context usage estimate
99
+ dgxay export export a session (Markdown / JSON)
100
+ dgxay doctor self-check
101
+ ```
102
+
103
+ Every subcommand supports `--help`.
104
+
105
+ ## Permissions
106
+
107
+ | Level | Capabilities | Approval |
108
+ | --- | --- | --- |
109
+ | `none` | read-only inside the workspace | none |
110
+ | `normal` | everything | **every** operation needs your confirmation |
111
+ | `auto` | everything | reviewer model decides; suspicious operations ask you |
112
+ | `full` | everything | no review, no prompts |
113
+
114
+ - Enforced in the tool layer — the UI (here, the REPL) cannot bypass it.
115
+ - Auto review requires a review model: `dgxay provider review <provider> --model <modelId>`; without it `auto` is unavailable and falls back to `normal`.
116
+ - In non-interactive pipelines, approval-requiring operations are denied unless you pass `--yes`.
117
+ - Deletions are **permanent** (no trash). Commit to Git before bulk edits.
118
+
119
+ ## Data
120
+
121
+ `~/.dcb` (Windows: `%USERPROFILE%\.dcb`), shared with the desktop app:
122
+
123
+ ```
124
+ ~/.dcb/
125
+ ├── config.json # providers, models, review models, mode, permission
126
+ ├── chats.json # conversation history (200 sessions max)
127
+ ├── oauth.json # OAuth client + tokens (0600)
128
+ ├── mcp.json # MCP servers
129
+ └── skills/ # SKILL.md or name.md
130
+ ```
131
+
132
+ API keys are stored **in plain text** in `config.json`. Use `DGXAY_HOME=/tmp/test dgxay` to isolate a data directory (desktop's `DCB_HOME` also works). OAuth tokens written by the desktop app are encrypted with Electron `safeStorage` and cannot be read by the CLI — reconnect with `dgxay oauth connect <platform>`.
133
+
134
+ ## Environment variables
135
+
136
+ | Variable | Purpose |
137
+ | --- | --- |
138
+ | `DGXAY_HOME` | Override the data directory |
139
+ | `DGXAY_API_KEY` | API key used by `config init` |
140
+ | `DGXAY_TOKEN_KEY` | Passphrase that encrypts OAuth tokens (plain base64 otherwise) |
141
+ | `DGXAY_SHOW_REASONING=1` | Stream the reasoning text (collapsed to one line by default) |
142
+ | `DGXAY_COLOR=always\|never` | Force colours on/off |
143
+ | `NO_COLOR` | Disable colours |
144
+ | `DGXAY_DEBUG=1` | Debug output and stack traces |
145
+ | `DGXAY_OAUTH_NO_BROWSER=1` | Don't open a browser during OAuth; print the URL only |
146
+
147
+ ## Terminal compatibility
148
+
149
+ Streaming output relies only on `\r` (carriage return) and space padding — capabilities every terminal supports.
150
+ It never uses cursor-up or erase-line sequences: some Windows console combinations silently ignore them, which
151
+ makes every delta arrive as a new line.
152
+
153
+ Rendering happens in two steps: while generating, only the current line is refreshed as a plain-text preview;
154
+ when generation ends, the whole reply is laid out once as Markdown (headings, lists, tables, code blocks).
155
+ Every paragraph therefore appears exactly once in any terminal.
156
+
157
+ ## Differences from the desktop app
158
+
159
+ - No window and no global shortcuts — everything is a subcommand or slash command.
160
+ - The context ring becomes a status line plus `/context`.
161
+ - OAuth tokens no longer use the OS keychain; set `DGXAY_TOKEN_KEY` to encrypt them.
162
+ - New in the CLI: `dgxay run`, `export`, `doctor`.
163
+
164
+ ## Known limitations
165
+
166
+ - Only the most recent **24** messages are sent per request; compress or start a new session for long conversations.
167
+ - `/compress` is lossy and cannot be undone.
168
+ - MCP is process management only — MCP tools are **not** exposed to the model yet (same as desktop).
169
+ - Shell commands have no PTY: no `vim`, `top` or `ssh`.
170
+ - Auto review is an LLM and can be wrong; it is not a sandbox.
171
+ - Context usage is a character-based estimate; rely on the model's `usage` for real tokens.
172
+
173
+ ## Development
174
+
175
+ ```bash
176
+ npm test # full suite against a built-in mock server (no real API usage)
177
+ npm run pack:check # inspect the npm tarball
178
+ node bin/dgxay.js --help
179
+ ```
180
+
181
+ ## License
182
+
183
+ GNU General Public License v3.0 — see [LICENSE](./LICENSE). 中文说明见 [README-zh.md](./README-zh.md).
package/bin/dgxay.js ADDED
@@ -0,0 +1,42 @@
1
+ #!/usr/bin/env node
2
+ 'use strict';
3
+
4
+ /**
5
+ * DgxayCode CLI 可执行入口。
6
+ *
7
+ * 全局安装后直接运行 `dgxay` 即可:
8
+ * npm install -g dgxay-code-cli
9
+ * dgxay
10
+ *
11
+ * 这里只做三件事:检查 Node 版本、屏蔽不兼容的交互环境、把控制权交给 src/cli/index.js。
12
+ * 真正的参数解析与业务逻辑都在 cli 层,保证入口文件足够小、在任何平台都能被 npm 正常解析。
13
+ */
14
+
15
+ const MIN_MAJOR = 18;
16
+
17
+ const major = Number(process.versions.node.split('.')[0]);
18
+ if (!Number.isFinite(major) || major < MIN_MAJOR) {
19
+ process.stderr.write(
20
+ `DgxayCode CLI 需要 Node.js ${MIN_MAJOR} 或更高版本,当前为 ${process.versions.node}。\n` +
21
+ '请升级 Node.js 后重试:https://nodejs.org/\n'
22
+ );
23
+ process.exit(1);
24
+ }
25
+
26
+ function run() {
27
+ require('../src/cli/index.js')
28
+ .main(process.argv.slice(2))
29
+ .then((code) => {
30
+ if (typeof code === 'number' && code !== 0) process.exitCode = code;
31
+ })
32
+ .catch((error) => {
33
+ const message = error && error.message ? error.message : String(error);
34
+ process.stderr.write(`\n发生未处理的错误:${message}\n`);
35
+ if (process.env.DGXAY_DEBUG === '1' && error && error.stack) {
36
+ process.stderr.write(`${error.stack}\n`);
37
+ }
38
+ process.exitCode = 1;
39
+ });
40
+ }
41
+
42
+ run();
package/package.json CHANGED
@@ -1,6 +1,49 @@
1
1
  {
2
2
  "name": "dgxay-code-cli",
3
- "version": "0.0.0-stage",
4
- "stub": true,
5
- "description": "Temporary package placeholder for staged publishing"
6
- }
3
+ "productName": "DgxayCode CLI",
4
+ "version": "1.0.0",
5
+ "description": "DgxayCode 命令行版:多协议 AI 编码助手,支持工作空间、四档权限、自动审查、技能与 MCP。",
6
+ "author": "Dgxay",
7
+ "license": "GPL-3.0-only",
8
+ "bin": {
9
+ "dgxay": "bin/dgxay.js"
10
+ },
11
+ "main": "src/cli/index.js",
12
+ "type": "commonjs",
13
+ "engines": {
14
+ "node": ">=18"
15
+ },
16
+ "files": [
17
+ "bin/**/*",
18
+ "src/**/*",
19
+ "README.md",
20
+ "README-zh.md",
21
+ "LICENSE"
22
+ ],
23
+ "keywords": [
24
+ "cli",
25
+ "ai",
26
+ "agent",
27
+ "coding-assistant",
28
+ "ai-coding",
29
+ "openai",
30
+ "anthropic",
31
+ "deepseek",
32
+ "llm",
33
+ "mcp",
34
+ "terminal"
35
+ ],
36
+ "scripts": {
37
+ "start": "node bin/dgxay.js",
38
+ "test": "node test/run.js",
39
+ "pack:check": "npm pack --dry-run"
40
+ },
41
+ "homepage": "https://github.com/dgxay/DgxayCode",
42
+ "repository": {
43
+ "type": "git",
44
+ "url": "git+https://github.com/dgxay/DgxayCode.git"
45
+ },
46
+ "bugs": {
47
+ "url": "https://github.com/dgxay/DgxayCode/issues"
48
+ }
49
+ }