@benz-ai-x/dsh-md-preview 0.1.0 → 0.1.1
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 +69 -29
- package/package.json +1 -1
package/README.md
CHANGED
|
@@ -1,24 +1,28 @@
|
|
|
1
1
|
# @benz-ai-x/dsh-md-preview
|
|
2
2
|
|
|
3
|
-
DSH
|
|
3
|
+
DSH Web GUI 插件:点击对话中出现的 Markdown 文档,在对话右侧打开渲染后的预览面板。
|
|
4
|
+
|
|
5
|
+
[](https://www.npmjs.com/package/@benz-ai-x/dsh-md-preview)
|
|
6
|
+
[](https://github.com/benz-ai-x/dsh-md-preview)
|
|
4
7
|
|
|
5
8
|
## 效果
|
|
6
9
|
|
|
7
|
-
- 回合产出文件 chip 行中的 `.md` / `.markdown`
|
|
8
|
-
-
|
|
9
|
-
- 非 Markdown
|
|
10
|
-
-
|
|
10
|
+
- 回合产出文件 chip 行中的 `.md` / `.markdown` 文档:点击打开右侧预览面板,渲染 GFM、代码高亮和 TeX。
|
|
11
|
+
- 每条助手消息的操作区新增「预览文档」按钮,列出该回合产出的 Markdown 文档。
|
|
12
|
+
- 非 Markdown 产出文件保持原有行为(交给系统打开)。
|
|
13
|
+
- 面板可关闭、可拖宽(320–960 px);拖出的宽度在本次应用会话内保持。
|
|
14
|
+
- 没有预览目标时面板不渲染。
|
|
11
15
|
|
|
12
|
-
##
|
|
16
|
+
## 安装
|
|
13
17
|
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
18
|
+
要求 DSH 基线 `0.1.2-alpha.3`(即 peerDependencies 所列版本)和 web profile。
|
|
19
|
+
|
|
20
|
+
```sh
|
|
21
|
+
dsh plugin --profile <name> add @benz-ai-x/dsh-md-preview
|
|
22
|
+
dsh --profile <name> --dump-config # 应出现 id: md-preview 的行
|
|
23
|
+
dsh --profile <name> # 打开 Web GUI;回合产出 .md 后点击 chip 预览
|
|
24
|
+
dsh plugin --profile <name> remove @benz-ai-x/dsh-md-preview
|
|
25
|
+
```
|
|
22
26
|
|
|
23
27
|
## 配置
|
|
24
28
|
|
|
@@ -26,39 +30,75 @@ DSH web GUI 插件:点击对话中出现的 Markdown 文档,在对话右侧
|
|
|
26
30
|
- id: md-preview
|
|
27
31
|
name: '@benz-ai-x/dsh-md-preview'
|
|
28
32
|
config:
|
|
29
|
-
maxBytes: 1048576 #
|
|
33
|
+
maxBytes: 1048576 # 单文件读取上限(字节)
|
|
30
34
|
allowedExtensions: ['.md', '.markdown']
|
|
31
35
|
```
|
|
32
36
|
|
|
33
|
-
|
|
37
|
+
| 字段 | 类型 | 默认 | 说明 |
|
|
38
|
+
| --- | --- | --- | --- |
|
|
39
|
+
| `maxBytes` | number | `1048576` | 单文件读取上限,超出返回 `too-large` |
|
|
40
|
+
| `allowedExtensions` | string[] | `[".md", ".markdown"]` | 可预览的扩展名白名单 |
|
|
34
41
|
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
dsh --profile <name> # 打开 Web GUI,回合产出 .md 后点击 chip 预览
|
|
39
|
-
dsh plugin --profile <name> remove @benz-ai-x/dsh-md-preview
|
|
40
|
-
```
|
|
42
|
+
## 失败码
|
|
43
|
+
|
|
44
|
+
读取失败时面板显示 `md-preview/<reason>`。所有失败码:
|
|
41
45
|
|
|
42
|
-
|
|
46
|
+
| 码 | 含义 |
|
|
47
|
+
| --- | --- |
|
|
48
|
+
| `md-preview/bad-request` | path 为空或非法 |
|
|
49
|
+
| `md-preview/unknown-session` | 会话不存在 |
|
|
50
|
+
| `md-preview/no-workspace` | 会话没有工作目录 |
|
|
51
|
+
| `md-preview/unsupported-extension` | 扩展名不在白名单 |
|
|
52
|
+
| `md-preview/forbidden` | 路径超出会话工作区 |
|
|
53
|
+
| `md-preview/not-found` | 文件不存在 |
|
|
54
|
+
| `md-preview/too-large` | 文件超过 `maxBytes` |
|
|
55
|
+
| `md-preview/unavailable` | 读取过程发生 IO 错误 |
|
|
43
56
|
|
|
44
|
-
##
|
|
57
|
+
## 已知限制
|
|
58
|
+
|
|
59
|
+
- 正文中内联提到的 `.md` 文件名仍走系统打开(归 ui-deliverables 所有,不归本插件)。
|
|
60
|
+
- 面板悬浮在对话右侧,不替换三栏布局。
|
|
61
|
+
- 用户上传的文档附件不可预览(目前没有对应的会话面)。
|
|
62
|
+
|
|
63
|
+
## 开发(source-linked)
|
|
45
64
|
|
|
46
65
|
```sh
|
|
47
66
|
pnpm install
|
|
48
67
|
pnpm verify # context:check:strict + typecheck + test + build + built:check
|
|
49
68
|
pnpm context:sync # Harness 检出移动后重写 link 并刷新 lockfile
|
|
69
|
+
pnpm watch:client # 客户端 bundle 热构建
|
|
50
70
|
```
|
|
51
71
|
|
|
52
|
-
|
|
72
|
+
### 结构
|
|
73
|
+
|
|
74
|
+
| 部分 | 位置 | 说明 |
|
|
75
|
+
| --- | --- | --- |
|
|
76
|
+
| Host Remote | `src/remote.ts` | `mdPreview/read(sessionId, path, signal)`;工作区限域、扩展名白名单、字节上限 |
|
|
77
|
+
| Remote contribution | `src/typert/remote-client.ts` | 手工维护的浏览器端描述符(生成器产物的等价物) |
|
|
78
|
+
| 浏览器入口 | `src/client/index.ts` | 挂载 Remote + 注册三个 Slot 贡献 |
|
|
79
|
+
| 预览面板 | `src/client/PreviewOverlay.tsx` | `shell.overlay`(list,增量) |
|
|
80
|
+
| chip 行接管 | `src/client/MdChips.tsx` | `conversation.chat.turnTail`(chain,仅认领含 Markdown 的回合) |
|
|
81
|
+
| 消息操作 | `src/client/PreviewAction.tsx` | `conversation.chat.assistant-actions`(list,增量) |
|
|
82
|
+
|
|
83
|
+
### 真实 profile 验证(本地检出)
|
|
53
84
|
|
|
54
85
|
```sh
|
|
55
86
|
pnpm build
|
|
56
87
|
dsh plugin --profile <name> add ./dsh-md-preview
|
|
57
88
|
dsh --profile <name> --dump-config
|
|
58
|
-
dsh --profile <name> # 打开 Web GUI
|
|
89
|
+
dsh --profile <name> # 打开 Web GUI,写一个 README.md 产出并点击 chip
|
|
59
90
|
dsh plugin --profile <name> remove @benz-ai-x/dsh-md-preview
|
|
60
91
|
```
|
|
61
92
|
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
93
|
+
### 打包与发布
|
|
94
|
+
|
|
95
|
+
```sh
|
|
96
|
+
pnpm pack:publishable # 打出净化 manifest 的 tarball 并复检(无 devDeps、无 link:/workspace:)
|
|
97
|
+
pnpm publish:registry # 以同一净化流程发布到 npm
|
|
98
|
+
```
|
|
99
|
+
|
|
100
|
+
source-linked 验证证明与固定 Harness 检出(见 `dsh-reference.lock.json`)的兼容性;发布形态以 packed tarball 在干净 profile 中的安装/启动/移除冒烟为准。
|
|
101
|
+
|
|
102
|
+
## 许可证
|
|
103
|
+
|
|
104
|
+
MIT
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@benz-ai-x/dsh-md-preview",
|
|
3
|
-
"version": "0.1.
|
|
3
|
+
"version": "0.1.1",
|
|
4
4
|
"description": "DSH markdown preview: clicking a markdown document in the conversation opens a rendered preview panel docked to the right of the chat.",
|
|
5
5
|
"license": "MIT",
|
|
6
6
|
"repository": {
|