dsh-canvas-workspace 0.0.0-stage → 0.2.4-experimental.2

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/LICENSE ADDED
@@ -0,0 +1,9 @@
1
+ MIT License
2
+
3
+ Copyright (c) 2026 dsh-canvas-workspace contributors
4
+
5
+ Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:
6
+
7
+ The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.
8
+
9
+ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
package/README.md CHANGED
@@ -1,3 +1,86 @@
1
- # Temporary Holding Version
1
+ # dsh-canvas-workspace
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
+ 让你的 dsh 更加好用。
4
+
5
+ 一个实验性的 DeepSeek Harness 画布插件。右下角使用 DSH 原生输入框;用户消息留在可滚动的右侧栏,Agent 回复显示在可平移、缩放的画布中。回复可以用顶部拖柄单独移动,新回复从上一条回复的实际位置下方开始。
6
+
7
+ ## 功能
8
+
9
+ 会话标题下方的原生“对话 / 轨迹”视图栏现可直接选择 **画布**,空间不足时由 DSH 原生“更多会话视图”菜单管理。此入口绑定当前会话并复用原有输入框,切换视图保留草稿、历史和卡片位置,不停止原生会话执行。画布模式隐藏宿主常驻左栏,由左上角小菜单开合浮层侧栏;返回对话后恢复原布局和侧栏宽度偏好。
10
+
11
+ - 同一 DSH 会话中的原生发送、停止、图片与文件附件、流式回复和历史恢复。
12
+ - Markdown 与受限 IUI 混排;无效片段保留原文,其余内容继续显示。IUI 图片仅解析明确的 URL 或工作区文件路径。
13
+ - 原生 `ask_user_question` 的选项和自定义回答也会出现在右侧消息列表,与对应 Agent 回复关联;工具错误或未回答的问题不会伪装成用户消息。
14
+ - DSH 返回思考字段时,生成中显示最新内容,完成后可按需展开查看。
15
+ - 右侧已发送消息按 DSH 用户消息样式呈现文字、图片和文件;图片支持预览,文字支持选择与复制。Steer 消息保留各自内容,并与同一回复成组关联。
16
+ - 双向悬停高亮、点击用户消息定位回复、三条左右高度的消息栏内滚、柔和背景和减少动态效果支持。
17
+ - 画布侧边栏复用 DSH 侧边栏的组件样式与图标:新会话、插件/自动化任务/更多、工作区搜索、视图切换、新增工作区和分组会话树。会话数据来自宿主公共控制器,遵循默认列表对空会话、子 Agent、归档、置顶与标题的规则,分组内默认按更新时间排序。浮层的折叠/搜索/视图选项独立于原生侧栏的本地偏好(宿主未公开该偏好接口)。它以浮层覆盖在画布上,不占用画布宽度;通过顶部原生会话页签切换画布与对话。
18
+
19
+ 原生画布页签左上角工具栏 → **自动排布**(原“画布菜单 → 更多 → 按视口自动排布”入口仍可用),会按当前缩放将画布完整可视宽度换算为排布宽度(左右各留 24px),整理全部未钉住的回复并避开已钉住卡片。消息列表和输入框不再占用排布宽度,允许覆盖下方卡片。宽度足够时排列为多列,放不下时向下延伸,不缩小文字、不改变镜头。图片加载、思考展开或流式内容真实增高并侵入其他卡片间距时,只向下调整必要的碰撞链;同高度更新、内容缩短和普通尺寸通知不会重排。新增回复只计算自己的落点,不移动已有卡片。首次加载、会话恢复和缩放本身不会触发整体排布;手动移动不等于钉住,下次主动排布仍会参与;回复顶部的纯图标按钮控制固定状态:未固定为划线图钉,固定后为高亮图钉,已钉住卡片不可拖动并作为布局障碍。钉住状态按会话保存。旧存档不会被自动视为钉住,加载时保留原坐标,主动排布时才应用新语义。布局随会话保存,平移、缩放和窗口变化不会触发重新整理;需要适应新视口时再次点击即可。新回复延续前一回复下方并参与避碰。
20
+
21
+ 回复卡片右上角、固定按钮旁的定位图标可将右侧消息列表滚动到对应输入,并转移键盘焦点;关联使用宿主消息/回合 ID,同文消息不会混淆。消息元数据稍后到达或列表恢复显示时会继续待完成定位。时间与复制按钮放到气泡左侧原有空白处,不再为隐藏的操作栏保留底部高度。列表底部不再叠加留白,原生输入区上方保留约 4px 间距,并随输入框增高收缩可用列表高度。主动排布时卡片以约 320ms 平滑移动到目标位置;再次点击会从当前画面继续,拖动、镜头操作和减少动态效果偏好会取消动画。
22
+
23
+ “更多 → 画布 IUI 渲染”默认开启,只切换已有 IUI 内容的显示,不会给模型注入生成协议。希望 Agent 主动生成 IUI 时,需要另行配置 `open-intelligent-ui` 提示插件或明确提供协议;显示已有 IUI 不需要额外安装该插件。
24
+
25
+ Canvas 只在显示层处理历史和布局,不修改已有 DSH 会话事件。图片通过宿主授权的资源加载接口读取,不从展示文字推测附件。普通发送由原生输入框负责;测试不发送真实模型请求。
26
+
27
+ ## 开发与检查
28
+
29
+ 要求 Node.js `^22.19.0 || >=24`。当前开发依赖固定为 DSH `0.2.1-rc.3`;声明支持 `0.2.0-rc.2`、`0.2.1-rc.2` 与 `0.2.1-rc.3`,其它版本需单独验证。`0.2.4-experimental.2` 起直接支持 rc.3,安装时不需要版本兼容豁免。
30
+
31
+ ```bash
32
+ npm ci
33
+ npm run typecheck
34
+ npm test
35
+ npm run format:check
36
+ npm run test:media
37
+ npm run test:rail
38
+ node tests/viewport-layout.browser.mjs
39
+ node tests/layout-stability.browser.mjs
40
+ npm run build
41
+ ```
42
+
43
+ 桌面版的 `npm run test:host` 使用已安装的 macOS DSH、全新隔离 profile 和合成历史,覆盖原生画布页签与侧栏恢复。首次运行可用 `npm install --prefix .research/pnpm --ignore-scripts pnpm@11.28.5` 准备局部测试工具;不会改全局 pnpm 或个人 DSH 配置。
44
+
45
+ `npm run dev` 启动独立 MOCK 演示。浏览器测试使用本地 Vite 页面,不连接用户当前运行中的 DSH;宿主测试脚本另需隔离的官方 DSH 测试环境。`npm run build` 生成宿主插件 `dist/` 与本地演示 `site/`。仓库包含可直接由现有 DSH 插件链接读取的 `dist/`,`site/` 和测试截图、日志不提交。
46
+
47
+ ## DSH 安装与兼容验证
48
+
49
+ 可直接安装实验版:
50
+
51
+ ```bash
52
+ dsh plugin --profile desktop add dsh-canvas-workspace@0.2.4-experimental.2
53
+ ```
54
+
55
+ 也可以使用 `dsh-canvas-workspace@experimental` 获取实验版标签指向的版本。npm 包包含构建后的 `dist/`,安装后重启对应的 DSH profile,无需下载源码或手动构建。
56
+
57
+ 在插件仓库目录执行:
58
+
59
+ ```bash
60
+ npm ci
61
+ npm run build
62
+ dsh plugin --profile desktop add "$PWD"
63
+ ```
64
+
65
+ 安装后打开已有会话,在会话标题下方选择 **画布**(空间不足时在“更多会话视图”中选择)。本地目录通过链接接入,请保留该目录。
66
+
67
+ rc.3 的隔离宿主检查可复现为:
68
+
69
+ ```bash
70
+ npm install --prefix .research/runtime-021rc3 --save-exact @deepseek-ai/dsh@0.2.1-rc.3
71
+ DSH_TEST_RUNTIME=.research/runtime-021rc3 npm run test:host:http
72
+ ```
73
+
74
+ 宿主检查使用独立 `.host-test/` 配置,不继承个人账号和模型凭据,不设置版本豁免,也不发送模型请求。该检查验证官方安装器、启动图和插件资源;实际画布显示还需在 DSH 中打开验证。
75
+
76
+ 2026-11-04 已使用 rc.3 官方依赖通过类型检查、161 项单元/DOM 测试、格式检查和完整构建;另用桌面版自带的 rc.3 CLI,在空白隔离 Web 配置中验证无豁免安装、启动图与构建文件一致,并确认画布模式下侧边栏以浮层呈现、画布保持全宽,搜索、视图切换、更多菜单和退出画布均可用。以上验证均未发送模型请求。
77
+
78
+ ## 源码与边界
79
+
80
+ - `src/client.tsx`:DSH 公共扩展点、原生输入框和会话资源接入。
81
+ - `src/ui/`:画布、消息栏、侧边栏、回复、图片预览和交互。
82
+ - `src/adapters/`:DSH 事件投影与离线 MOCK。
83
+ - `vendor/open-intelligent-ui/`:按 MIT 许可保留的受限 IUI 源码;本地差异见其 `CANVAS_PROVENANCE.md`。
84
+ - `tests/`:单元、DOM 和隔离浏览器回归。
85
+
86
+ 原生完整用户消息行没有独立公开接口,因此右侧消息区参照 DSH 的 MIT 源码结构与主题 token 实现,并复用公开文件图标、剪贴板、Tooltip、资源加载和灯箱。Canvas 尚未接入原生消息分支操作,也没有原生账户头像接口。项目许可见 [LICENSE](LICENSE),第三方归属与许可见 [THIRD_PARTY_NOTICES.md](THIRD_PARTY_NOTICES.md)。