dsh-vscode-mode 0.1.22 → 0.1.25
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 +34 -25
- package/lib/client.js +538 -98
- package/lib/client.js.map +1 -1
- package/lib/index.js +4 -1
- package/lib/index.js.map +1 -1
- package/package.json +5 -2
- package/src/client/events.ts +8 -4
- package/src/client/index.ts +36 -9
- package/src/client/monaco/diffRender.ts +3 -0
- package/src/client/sidebar/panels/FileExplorer.ts +12 -2
- package/src/client/sidebarBridge.ts +247 -0
- package/src/client/styles/editor.css +11 -0
- package/src/client/ui/ContextMenu.ts +37 -12
- package/src/client/ui/DiffBadge.ts +5 -3
- package/src/client/ui/EditorView.ts +108 -43
- package/src/client/ui/SideEditorTab.ts +48 -0
- package/src/client/ui/menuPosition.ts +63 -0
- package/src/rpc.ts +7 -1
package/README.md
CHANGED
|
@@ -4,42 +4,48 @@
|
|
|
4
4
|
|
|
5
5
|
仿 VSCode 的 **Agent 文件编辑器 + 差异审查** DSH 插件:
|
|
6
6
|
|
|
7
|
-
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
7
|
+
- **侧边栏「文件编辑」Tab**(v0.1.23,推荐):检测到 [dsh-better-sidebar](https://github.com/omdsh-dev/DSH-better-sidebar)
|
|
8
|
+
(`ctx.betterSidebar` 服务)时,编辑器注册为右侧栏 Tab——**AI 对话(中央)与文件编辑(右侧栏)同屏**,
|
|
9
|
+
类主流 Code Agent 布局;Tab 可拖到下方成底部面板(全宽)、支持分栏;文件打开/差异跳转自动展开面板。
|
|
10
|
+
**可选依赖**:未安装 dsh-better-sidebar 时自动回退旧「中央文件编辑页签」形态(插件零新依赖仍完整可用),
|
|
11
|
+
并在编辑器顶部与设置页「兼容性」子 Tab 引导安装(`dsh plugin --profile web add dsh-better-sidebar`)。
|
|
12
|
+
文件页签(脏点/关闭/「+」打开)+ `Ctrl+P` 快速打开(QuickOpen)+ **Monaco Editor**
|
|
13
|
+
(语法高亮/行号/`Ctrl+F`/`Ctrl+G`/`Ctrl+S`/700ms 防抖自动保存)+ 顶部工具栏(路径/语言/Ln,Col/保存状态/差异/侧边栏/刷新)。
|
|
11
14
|
- **差异审查**:Host 捕获 agent 的 `edit`/`write`(`tools/result`),客户端统一使用**唯一一个挂在 DSH `conversation.input.dock` 的 DiffBox 实例**:
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
+
编辑器未打开时显示紧凑「差异 N 个文件 · 查看下一个」按钮(点击自动打开侧栏编辑器并聚焦差异);编辑器打开后 dock 切换为
|
|
16
|
+
完整操作条(Keep / Undo / 跳转 / 回滚 / 归档对比),不会再出现第二个差异栏。header 差异角标 +
|
|
17
|
+
DiffLauncher 全局总览 + 归档/批次回滚;状态持久化到工作区旁车(`.dsh-edit-review.json`,重启不丢)。
|
|
15
18
|
- **Monaco 离线分发**:`assets/vendor/monaco` AMD 构建随包发布,经 `/edrv/vendor/*` 前缀路由提供,全离线可用。
|
|
16
|
-
- **文件管理侧边栏**(类 VSCode 活动栏 +
|
|
17
|
-
(展开目录实时读取、点文件在编辑器打开、差异角标、活动文件高亮、`edrv:refresh`/手动 ⟳ 刷新、`Ctrl+B`
|
|
18
|
-
|
|
19
|
+
- **文件管理侧边栏**(类 VSCode 活动栏 + 面板):编辑器内嵌活动栏 + 可拖拽调宽的面板区;首期「资源管理器」= 懒加载目录树
|
|
20
|
+
(展开目录实时读取、点文件在编辑器打开、差异角标、活动文件高亮、`edrv:refresh`/手动 ⟳ 刷新、`Ctrl+B` 显隐并持久化;
|
|
21
|
+
侧栏形态默认收起以节省面板宽度)。面板通过注册表装配(`ctx.provide('edrvSidebarPanels')`),新增面板只加一条注册,不改编辑器布局。
|
|
19
22
|
- **MCP 可视化管理**(设置 → VSCodeMode):子 Tab「我的 MCP」(profile 全局)+「项目 MCP」(各项目根 `.mcp.json`)。
|
|
20
23
|
项目级 MCP 对齐 Claude Code/Cursor:配置存于项目根目录 `.mcp.json`(`mcpServers`),随仓库共享;
|
|
21
24
|
可查看各项目连接状态/工具、添加(stdio / streamable-http)、刷新、启用/禁用、删除。工具全局生效。
|
|
22
25
|
|
|
23
26
|
## 界面截图
|
|
24
27
|
|
|
25
|
-

|
|
26
29
|
|
|
27
|
-
> dsh-vscode-mode
|
|
28
|
-
>
|
|
29
|
-
>
|
|
30
|
-
|
|
30
|
+
> dsh-vscode-mode 侧边栏编辑形态:betterSidebar 右侧栏内的 Monaco 文件编辑器与中央 AI 对话同屏,
|
|
31
|
+
> 差异条统一挂在对话输入框上方的原生 dock(编辑器未打开=「差异 N 个文件 · 查看下一个」,
|
|
32
|
+
> 打开后=完整 Keep / Undo 操作条)。
|
|
33
|
+
|
|
34
|
+

|
|
35
|
+
|
|
36
|
+

|
|
31
37
|
|
|
32
38
|
## 安装(官方 `dsh plugin` 方式,三选一)
|
|
33
39
|
|
|
34
40
|
```bash
|
|
35
41
|
# ① Git 安装(clone + prepare 构建;推荐打固定 tag)
|
|
36
|
-
dsh plugin --profile web add github:Lenonss/DSH_VsCodeMode#v0.1.
|
|
42
|
+
dsh plugin --profile web add github:Lenonss/DSH_VsCodeMode#v0.1.23
|
|
37
43
|
|
|
38
44
|
# ② npm 注册表(发布到 npm 后)
|
|
39
45
|
dsh plugin --profile web add dsh-vscode-mode
|
|
40
46
|
|
|
41
47
|
# ③ GitHub Release tgz 直装
|
|
42
|
-
dsh plugin --profile web add https://github.com/Lenonss/DSH_VsCodeMode/releases/download/v0.1.
|
|
48
|
+
dsh plugin --profile web add https://github.com/Lenonss/DSH_VsCodeMode/releases/download/v0.1.23/dsh-vscode-mode-0.1.23.tgz
|
|
43
49
|
```
|
|
44
50
|
|
|
45
51
|
> `dsh plugin ...` 是 pnpm 转发器:git 安装会克隆仓库、执行该包 `prepare` 脚本(tsdown 双面构建)后安装,
|
|
@@ -103,18 +109,20 @@ src/
|
|
|
103
109
|
├── rpc.ts Host RPC 分发表(类型化 handler 表替代巨型 switch,含 compat)
|
|
104
110
|
├── routes.ts Host webServer 路由(/edrv/rpc、/edrv/assets/*、/edrv/vendor/*,带冲突护栏)
|
|
105
111
|
└── client/
|
|
106
|
-
├── index.ts Client 入口:slot 注册(inject=['slots','timer']
|
|
112
|
+
├── index.ts Client 入口:slot 注册(inject=['slots','timer']);betterSidebar 探测分流(侧栏 Tab / 旧页签回退)
|
|
107
113
|
├── compat.ts ★ Client 兼容层:设置桥三级降级(webUiSettings→settingsScope)、slot 安全注册、openPath 链式补丁、外部插件常量
|
|
114
|
+
├── sidebarBridge.ts ★ 侧边栏编辑区桥:可选探测 ctx.betterSidebar、注册「文件编辑」Tab、打开路由/角标计数(纯函数可单测)
|
|
108
115
|
├── rpc.ts Client 类型化 fetch 包装 + 诊断日志
|
|
109
|
-
├── events.ts 窗口事件助手(edrv:refresh/open-editor/show-launcher
|
|
116
|
+
├── events.ts 窗口事件助手(edrv:refresh/open-editor/show-launcher;侧栏路由优先、旧页签回退)
|
|
110
117
|
├── state/ records.ts(摘要/计数/空差异)+ regions.ts(差异区域/行裁剪)纯函数
|
|
111
118
|
├── monaco/ loader.ts(AMD 加载/语言映射)+ diffRender.ts(差异自绘渲染器)
|
|
112
|
-
├── diffDock.ts 差异 dock
|
|
119
|
+
├── diffDock.ts 差异 dock 轮转/文案/形态纯函数(对话 dock 与 DiffBox 共用)
|
|
113
120
|
├── sidebar/ ★ 侧边栏面板系统:registry.ts(注册表,镜像 fileOpeners)+ SidebarView.ts(活动栏/面板区/拖拽调宽)
|
|
114
121
|
│ + types.ts(SidebarPanelDef/SidebarCtx)+ panels/FileExplorer.ts(文件树面板 #1)
|
|
115
|
-
├── styles/editor.css 编辑区样式(tsdown CSS-inline
|
|
116
|
-
└── ui/ EditorView
|
|
117
|
-
/
|
|
122
|
+
├── styles/editor.css 编辑区样式(tsdown CSS-inline 注入;含侧栏形态/引导条)
|
|
123
|
+
└── ui/ EditorView(编排,tab/side 双形态)/ SideEditorTab(betterSidebar Tab 包装)/ QuickOpen
|
|
124
|
+
/ DiffBox(chat/editor 双模式)/ ConversationDiffDock / DiffBarEmpty / DiffLauncher
|
|
125
|
+
/ DiffBadge / McpSettings(含「兼容性」子 Tab)
|
|
118
126
|
```
|
|
119
127
|
|
|
120
128
|
**兼容层(`src/compat.ts` + `src/client/compat.ts`)**:集中处理与其他插件 / DSH 版本的适配——
|
|
@@ -151,8 +159,9 @@ curl -s -X POST http://127.0.0.1:3080/edrv/rpc -H 'content-type: application/jso
|
|
|
151
159
|
- **RPC**:静态包经 webServer 精确路由 `/edrv/rpc`,Client 同源 fetch;载荷形状由 `shared/rpc` 类型化。
|
|
152
160
|
- **批次/融合/归档**:每次新 edit/write 递增文件 batch,早于最新批次的未归档差异自动"融合"归档;
|
|
153
161
|
每条差异处理完成(采纳/拒绝/被覆盖)立即单条归档;DiffLauncher「归档」页按批次浏览 + 回滚。
|
|
154
|
-
- **Client
|
|
155
|
-
|
|
162
|
+
- **Client 挂点**:betterSidebar Tab `edrv-editor`(侧栏形态,未装 dsh-better-sidebar 时回退 `conversation.view` 页签
|
|
163
|
+
id `edrv-editor`)+ `conversation.session.header.utilities`(id `edrv-diff-badge`)+ `conversation.input.dock`
|
|
164
|
+
(id `edrv-diff-dock`,唯一差异栏:编辑器未打开=紧凑按钮,打开后=完整操作条)。内部路由/slot/事件/CSS 前缀沿用 `edrv-*`(防回归),包身份为 `dsh-vscode-mode`。
|
|
156
165
|
- **⚠️ Host 改动需重启 DSH 应用**(Node ESM 模块缓存);Client 经 `dsh-client-hmr` 热重载。
|
|
157
166
|
|
|
158
167
|
## 开发 / 卸载(超级模组注入器,开发期可选)
|