@deepseekcode/cli 3.0.1 → 3.0.4
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 +76 -55
- package/backend/jwcode-web.jar +0 -0
- package/dist/cli.js +16147 -31
- package/package.json +8 -6
- package/scripts/download-jar.js +93 -0
- package/dist/__tests__/store.test.d.ts +0 -1
- package/dist/__tests__/store.test.js +0 -43
- package/dist/__tests__/theme.test.d.ts +0 -1
- package/dist/__tests__/theme.test.js +0 -40
- package/dist/__tests__/tokenEstimate.test.d.ts +0 -1
- package/dist/__tests__/tokenEstimate.test.js +0 -48
- package/dist/commands/index.d.ts +0 -18
- package/dist/commands/index.js +0 -99
- package/dist/components/ApprovalModal.d.ts +0 -8
- package/dist/components/ApprovalModal.js +0 -47
- package/dist/components/ChatArea.d.ts +0 -10
- package/dist/components/ChatArea.js +0 -49
- package/dist/components/CommandPalette.d.ts +0 -6
- package/dist/components/CommandPalette.js +0 -72
- package/dist/components/StatusLine.d.ts +0 -1
- package/dist/components/StatusLine.js +0 -25
- package/dist/components/TextInput.d.ts +0 -10
- package/dist/components/TextInput.js +0 -118
- package/dist/hooks/useAppState.d.ts +0 -18
- package/dist/hooks/useAppState.js +0 -42
- package/dist/hooks/useWebSocket.d.ts +0 -3
- package/dist/hooks/useWebSocket.js +0 -8
package/README.md
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
# @jwcode/cli — JWCode TypeScript CLI
|
|
2
2
|
|
|
3
|
-
> **JWCode** 是一款 AI 编程助手 CLI 工具,基于 TypeScript +
|
|
3
|
+
> **JWCode** 是一款 AI 编程助手 CLI 工具,基于 TypeScript + Solid/OpenTUI 构建,提供交互式终端界面(TUI),与 Java 后端通过 WebSocket 通信,实现 AI 驱动的代码辅助能力。
|
|
4
4
|
|
|
5
5
|
---
|
|
6
6
|
|
|
@@ -160,61 +160,61 @@ export JWCODE_THEME_COLORS='{"primary":"#00ff00","bg":"#1a1a2e"}'
|
|
|
160
160
|
```
|
|
161
161
|
ts-cli/
|
|
162
162
|
├── src/
|
|
163
|
-
│ ├── main.
|
|
164
|
-
│ ├──
|
|
165
|
-
│ ├──
|
|
166
|
-
│ ├──
|
|
167
|
-
│ ├──
|
|
168
|
-
│ ├──
|
|
169
|
-
│ ├──
|
|
170
|
-
│ ├──
|
|
171
|
-
│ ├──
|
|
172
|
-
│ ├── commands/
|
|
173
|
-
│ ├──
|
|
174
|
-
│ │ ├──
|
|
175
|
-
│ │ ├──
|
|
176
|
-
│ │ ├──
|
|
177
|
-
│ │ ├──
|
|
178
|
-
│ │ ├──
|
|
179
|
-
│ │ ├──
|
|
180
|
-
│ │ └──
|
|
181
|
-
│
|
|
182
|
-
|
|
183
|
-
|
|
184
|
-
|
|
185
|
-
│ └── __tests__/ # 单元测试
|
|
186
|
-
├── backend/ # Java 后端(独立项目)
|
|
187
|
-
├── .github/workflows/ci.yml # CI 工作流配置
|
|
188
|
-
├── build.mjs # esbuild 构建脚本
|
|
163
|
+
│ ├── main.tsx # 入口 (Bun 打包, Solid+OpenTUI)
|
|
164
|
+
│ ├── client.ts # WebSocket 客户端
|
|
165
|
+
│ ├── config.ts # 配置加载
|
|
166
|
+
│ ├── launcher.ts # Java 后端进程管理
|
|
167
|
+
│ ├── pasteBuffer.ts # 粘贴缓冲
|
|
168
|
+
│ ├── fuzzyMatch.ts # 文件名模糊匹配
|
|
169
|
+
│ ├── textInputGrapheme.ts # grapheme 感知输入
|
|
170
|
+
│ ├── protocol.ts # WebSocket 消息协议
|
|
171
|
+
│ ├── update.ts # npm 版本自检
|
|
172
|
+
│ ├── commands/ # 斜杠命令定义
|
|
173
|
+
│ ├── solid/
|
|
174
|
+
│ │ ├── components/ # 17 个 UI 组件 (含 messages/ 子目录)
|
|
175
|
+
│ │ ├── hooks/ # AppStateProvider, ClientProvider, ...
|
|
176
|
+
│ │ ├── context/ # theme, kv, language, route, ...
|
|
177
|
+
│ │ ├── ui/ # dialog, toast
|
|
178
|
+
│ │ ├── util/ # clipboard, keybind, ...
|
|
179
|
+
│ │ ├── i18n/ # en, zh
|
|
180
|
+
│ │ └── theme/ # 33 个 JSON 主题
|
|
181
|
+
│ └── __tests__/ # vitest
|
|
182
|
+
├── backend/ # 打包后的 Java jar + jre/
|
|
183
|
+
├── .github/workflows/ci.yml # CI 工作流配置
|
|
184
|
+
├── build.mjs # Bun + ProGuard + jlink 构建
|
|
189
185
|
├── package.json
|
|
190
186
|
├── tsconfig.json
|
|
191
|
-
└── proguard.conf
|
|
187
|
+
└── proguard.conf # Java 后端混淆配置
|
|
192
188
|
```
|
|
193
189
|
|
|
194
190
|
### 架构流程图
|
|
195
191
|
|
|
196
192
|
```
|
|
197
|
-
|
|
198
|
-
│ 终端用户 (Terminal)
|
|
199
|
-
|
|
193
|
+
┌────────────────────────────────────────────┐
|
|
194
|
+
│ 终端用户 (Terminal) │
|
|
195
|
+
└──────────────────┬─────────────────────────┘
|
|
200
196
|
│ stdin/stdout
|
|
201
|
-
|
|
202
|
-
│
|
|
203
|
-
│
|
|
204
|
-
│
|
|
205
|
-
│
|
|
206
|
-
│
|
|
207
|
-
│
|
|
208
|
-
│
|
|
209
|
-
│
|
|
210
|
-
│ │
|
|
211
|
-
│
|
|
212
|
-
|
|
213
|
-
|
|
214
|
-
|
|
215
|
-
│
|
|
216
|
-
|
|
217
|
-
|
|
197
|
+
┌──────────────────▼─────────────────────────┐
|
|
198
|
+
│ @jwcode/cli (TypeScript TUI) │
|
|
199
|
+
│ ┌──────────┐ ┌───────────────────────┐ │
|
|
200
|
+
│ │ Commands │ │ Solid/OpenTUI UI │ │
|
|
201
|
+
│ │ (CLI) │ │ (12 个组件 + 33 主题) │ │
|
|
202
|
+
│ └─────┬────┘ └──────────┬────────────┘ │
|
|
203
|
+
│ │ │ │
|
|
204
|
+
│ ┌─────▼──────────────────▼────────────┐ │
|
|
205
|
+
│ │ Providers: AppState/Client/KV/Theme │ │
|
|
206
|
+
│ └─────────────────┬───────────────────┘ │
|
|
207
|
+
│ │ │
|
|
208
|
+
│ ┌─────────────────▼───────────────────┐ │
|
|
209
|
+
│ │ JwCodeClient │ │
|
|
210
|
+
│ │ (WebSocket 客户端) │ │
|
|
211
|
+
│ └─────────────────┬───────────────────┘ │
|
|
212
|
+
└────────────────────┼──────────────────────┘
|
|
213
|
+
│ WebSocket (ws://)
|
|
214
|
+
┌────────────────────┼──────────────────────┐
|
|
215
|
+
│ ▼ │
|
|
216
|
+
│ Java 后端服务 (WebSocket + AI) │
|
|
217
|
+
└───────────────────────────────────────────┘
|
|
218
218
|
```
|
|
219
219
|
|
|
220
220
|
---
|
|
@@ -258,7 +258,7 @@ npm run build
|
|
|
258
258
|
node dist/cli.js version
|
|
259
259
|
```
|
|
260
260
|
|
|
261
|
-
构建产物输出到 `dist/cli.js`,使用 **
|
|
261
|
+
构建产物输出到 `dist/cli.js`,使用 **Bun bundler** + `@opentui/solid/bun-plugin` 打包,外部依赖不打包。
|
|
262
262
|
|
|
263
263
|
### 代码风格
|
|
264
264
|
|
|
@@ -282,10 +282,10 @@ node dist/cli.js version
|
|
|
282
282
|
|
|
283
283
|
| 测试文件 | 覆盖模块 | 说明 |
|
|
284
284
|
|---------|---------|------|
|
|
285
|
-
| `store.test.ts` | `
|
|
286
|
-
| `theme.test.ts` | `theme
|
|
285
|
+
| `store.test.ts` | `useStreamHandlers` | appendMessage 队列及 cleanArgs 测试 |
|
|
286
|
+
| `theme.test.ts` | `context/theme` | 33 主题 JSON 校验及颜色引用验证 |
|
|
287
287
|
| `pasteBuffer.test.ts` | `pasteBuffer.ts` | 粘贴缓冲区测试 |
|
|
288
|
-
| `tokenEstimate.test.ts` |
|
|
288
|
+
| `tokenEstimate.test.ts` | `TextInput` | Token 估算测试 (CJK/English) |
|
|
289
289
|
|
|
290
290
|
### 编写新测试
|
|
291
291
|
|
|
@@ -344,7 +344,27 @@ jwcode start -p 8080
|
|
|
344
344
|
jwcode run -b http://localhost:17340
|
|
345
345
|
```
|
|
346
346
|
|
|
347
|
-
### 3.
|
|
347
|
+
### 3. 鼠标右键/粘贴
|
|
348
|
+
|
|
349
|
+
- **有选中文本时右键**:复制选中内容到剪贴板
|
|
350
|
+
- **无选中文本时右键**:从剪贴板粘贴内容到输入框
|
|
351
|
+
- **长按左键(300ms)**:选中光标处单词并自动复制
|
|
352
|
+
|
|
353
|
+
### 4. @ 文件引用
|
|
354
|
+
|
|
355
|
+
输入 @ 后自动弹出文件选择面板,支持:
|
|
356
|
+
- 通过后端 API 获取文件列表
|
|
357
|
+
- API 不可用时自动回退到本地文件系统扫描(最多 3 层,跳过 node_modules/.git 等目录)
|
|
358
|
+
|
|
359
|
+
### 5. 退出行为
|
|
360
|
+
|
|
361
|
+
CLI 退出时(Ctrl+C 或 /exit)自动执行:
|
|
362
|
+
1. 通过 WebSocket 发送 exit 信号通知后端清理会话
|
|
363
|
+
2. 优雅关闭 WebSocket 连接
|
|
364
|
+
3. 优雅关闭 Java 后端进程(先 taskkill 再 /F 兜底)
|
|
365
|
+
4. 清理 daemon 缓存文件
|
|
366
|
+
|
|
367
|
+
### 6. 构建后运行报错
|
|
348
368
|
|
|
349
369
|
```bash
|
|
350
370
|
# 清理后重新构建
|
|
@@ -352,7 +372,7 @@ rm -rf dist
|
|
|
352
372
|
npm run build
|
|
353
373
|
```
|
|
354
374
|
|
|
355
|
-
###
|
|
375
|
+
### 7. `EPIPE` / `ECONNRESET` 错误
|
|
356
376
|
|
|
357
377
|
这是终端断开时的正常行为,不影响程序运行。项目已自动处理这些信号。
|
|
358
378
|
|
|
@@ -368,6 +388,7 @@ npm run build
|
|
|
368
388
|
|
|
369
389
|
| 版本 | 日期 | 说明 |
|
|
370
390
|
|------|------|------|
|
|
371
|
-
| 3.
|
|
391
|
+
| 3.1.0 | 2026-06 | 消息组件拆分、输入框修复、右键粘贴、退出同步 |
|
|
392
|
+
| 3.0.0 | — | 当前版本,TypeScript 重写,Solid/OpenTUI TUI |
|
|
372
393
|
| 2.x | — | Python 版本 CLI |
|
|
373
394
|
| 1.x | — | 初版 CLI |
|
|
Binary file
|