@michengai/dsh-btw 0.1.4 → 0.1.6

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/CHANGELOG.md CHANGED
@@ -1,16 +1,21 @@
1
1
  # Changelog
2
2
 
3
- ## [Unreleased]
3
+ ## [0.1.6] - 2026-09-11
4
+
5
+ - Support DSH `0.1.5-rc.2` while retaining compatibility with the four previously supported host versions.
6
+
7
+ ## [0.1.5] - 2026-09-10
8
+
9
+ - Support DSH `0.1.5-rc.1`, while retaining compatibility with `0.1.0-rc.8`, `0.1.1-rc.2`, and `0.1.2-rc.1`.
10
+ - Adapt to the updated composer: side questions accept text only. Images or files prompt you to remove them while preserving your draft and attachments.
4
11
 
5
12
  ## [0.1.4] - 2026-09-07
6
13
 
7
- - Exclude repository-only screenshots and branding images from the published npm tarball, reducing the package size while keeping README images available on GitHub.
8
- - Remove the standalone mock preview and its mock-only browser test so the repository no longer presents it as a real DSH plugin page.
14
+ - Reduce the installation package size; side-question behavior is unchanged.
9
15
 
10
16
  ## [0.1.3] - 2026-09-06
11
17
 
12
- - Fix the package path in GitHub Actions so npm treats the tarball as a local file, and validate it with an npm publish dry run before publishing.
13
- - Include the OIDC authorization check and its failure and credential-handling tests prepared for 0.1.2, whose publication failed before uploading a package.
18
+ - Fix the package publishing failure; side-question behavior is unchanged.
14
19
 
15
20
  ## [0.1.2] - 2026-09-06
16
21
 
@@ -19,18 +24,12 @@
19
24
 
20
25
  ## [0.1.1] - 2026-09-06
21
26
 
22
- - Limit each session to 20 side-question bubbles. At capacity, close the oldest completed bubble before accepting a new question; failed closure preserves answers and the current input with a localized message.
23
- - Show localized retry messages when cleanup fails during closure and keep host error details in logs.
24
- - Preserve completed answers when resource cleanup fails, with close retries still available.
25
- - Bound startup cancellation and cleanup waits while retaining ownership of late child agents. Cleanup errors no longer block plugin unload, and unreleased children remain protected from tool execution.
26
- - Retain recent bubbles per session so questions in another session cannot evict answers. Failed cleanup during eviction keeps the bubble available for retry.
27
- - Format the community notice consistently as a blockquote in both READMEs.
27
+ - Keep up to 20 side-question bubbles per session; questions in other sessions no longer remove your answers.
28
+ - Preserve existing answers and the current draft when closing fails, with a prompt to retry.
29
+ - Improve reliability when cancelling and closing side questions.
28
30
 
29
31
  ## [0.1.0] - 2026-09-06
30
32
 
31
- - Add one-shot `/btw` questions that inherit completed turns from the main session and answer without executing tools.
32
- - Show independent Markdown answer bubbles above the composer, with copy, collapse, close, and cancellation cleanup.
33
- - Support DSH light and dark themes and Chinese and English UI, while hiding internal transport commands.
34
- - Leave the sidebar unchanged and do not record input history or bind arrow keys.
35
- - Include installation instructions, real UI screenshots, and automated tests, packaging, and bilingual GitHub Releases.
36
- - Provide complete English and Chinese READMEs and use the Apache-2.0 license consistently.
33
+ - Introduce `/btw` side questions that use completed context from the main conversation and answer without executing tools.
34
+ - Display answers in separate bubbles above the composer, with Markdown, copy, collapse, close, and cancel support.
35
+ - Support light and dark themes and Chinese and English interfaces.
@@ -1,16 +1,21 @@
1
1
  # 更新日志
2
2
 
3
- ## [未发布]
3
+ ## [0.1.6] - 2026-09-11
4
+
5
+ - 支持 DSH `0.1.5-rc.2`,同时保留此前四个宿主版本的兼容支持。
6
+
7
+ ## [0.1.5] - 2026-09-10
8
+
9
+ - 支持 DSH `0.1.5-rc.1`,同时兼容 `0.1.0-rc.8`、`0.1.1-rc.2` 和 `0.1.2-rc.1`。
10
+ - 适配新版输入框:旁问仅接受文字,附带图片或文件时会提示移除,并保留草稿和附件。
4
11
 
5
12
  ## [0.1.4] - 2026-09-07
6
13
 
7
- - 从 npm 发布包中排除仅供仓库展示的截图和品牌图片,在保留 GitHub README 图片的同时缩小安装包体积。
8
- - 删除独立 mock 预览及仅验证该 mock 的浏览器测试,避免再将其当作真实 DSH 插件页面。
14
+ - 缩小安装包体积,旁问功能不变。
9
15
 
10
16
  ## [0.1.3] - 2026-09-06
11
17
 
12
- - 修复 GitHub Actions 安装包路径,确保 npm 将 tar 包识别为本地文件,并在正式发布前通过 npm publish dry run 验证。
13
- - 包含原定 0.1.2 的 OIDC 授权检查及授权失败、凭据处理测试;0.1.2 发布在上传安装包前失败。
18
+ - 修复安装包发布失败的问题,旁问功能不变。
14
19
 
15
20
  ## [0.1.2] - 2026-09-06
16
21
 
@@ -19,18 +24,12 @@
19
24
 
20
25
  ## [0.1.1] - 2026-09-06
21
26
 
22
- - 限制每个会话最多保留 20 个旁问气泡;满额先关闭最旧的已完成气泡,成功后接收新问题,失败则保留答案和当前输入并显示中英文提示。
23
- - 关闭清理失败时显示本地化重试提示,宿主错误详情仅记录日志。
24
- - 修复资源清理失败覆盖已完成答案的问题,保留关闭重试能力。
25
- - 为启动取消和资源清理增加有界等待,继续接管迟到的子代理;卸载异常不再阻塞插件退出,未释放子代理仍受工具保护。
26
- - 按会话保留最近的旁问气泡,避免其他会话的提问挤掉答案;淘汰时清理失败会保留气泡供重试。
27
- - 将中英文 README 的社区说明统一为引用块格式。
27
+ - 每个会话最多保留 20 个旁问气泡,其他会话的提问不会挤掉当前答案。
28
+ - 关闭失败时保留已有答案和当前输入,并提示重试。
29
+ - 改善旁问取消和关闭的稳定性。
28
30
 
29
31
  ## [0.1.0] - 2026-09-06
30
32
 
31
- - 新增 `/btw` 一次性旁问,继承主会话已完成回合,只回答、不执行工具。
32
- - 在输入框上方展示独立 Markdown 答案气泡,支持复制、折叠、关闭和取消清理。
33
- - 适配 DSH 浅色、深色主题及中英文界面,隐藏内部传输命令。
34
- - 不占用侧边栏,不记录输入历史,不绑定上下键。
35
- - 提供安装说明、实际界面截图及自动测试、打包和双语 Release 工作流。
36
- - 提供完整中英文 README,统一采用 Apache-2.0 许可证。
33
+ - 新增 `/btw` 旁问,依据主会话已完成的上下文回答,不执行工具。
34
+ - 答案显示在输入框上方的独立气泡中,支持 Markdown、复制、折叠、关闭和取消。
35
+ - 支持浅色、深色主题及中英文界面。
package/README.md CHANGED
@@ -1,5 +1,5 @@
1
1
  <p align="center">
2
- <img src="assets/branding/dsh-btw-banner.png" alt="DSH BTW" width="100%">
2
+ <img src="https://raw.githubusercontent.com/MichengAI/dsh-btw/2d8dd7752cec1b29dd705969eaa932635ba0bf4f/assets/branding/dsh-btw-banner.png" alt="DSH BTW" width="100%">
3
3
  </p>
4
4
 
5
5
  <div align="center">
@@ -33,30 +33,54 @@
33
33
 
34
34
  The main conversation stays in place, with the side answer above the composer.
35
35
 
36
- ![A BTW answer bubble in the stock DSH conversation](assets/screenshots/btw-conversation.png)
36
+ ![A BTW answer bubble in the stock DSH conversation](https://raw.githubusercontent.com/MichengAI/dsh-btw/2d8dd7752cec1b29dd705969eaa932635ba0bf4f/assets/screenshots/btw-conversation.png)
37
37
 
38
38
  ### Command menu
39
39
 
40
40
  Type `/` and select `btw` under the side-question category, or enter `/btw your question` directly.
41
41
 
42
- ![The side-question category and btw command](assets/screenshots/btw-command-menu.png)
42
+ ![The side-question category and btw command](https://raw.githubusercontent.com/MichengAI/dsh-btw/2d8dd7752cec1b29dd705969eaa932635ba0bf4f/assets/screenshots/btw-command-menu.png)
43
43
 
44
44
  ### Independent answer bubbles
45
45
 
46
46
  Each answer has its own copy, collapse or expand, and close controls in the upper right.
47
47
 
48
- ![Multiple answer bubbles with copy, collapse, and close controls](assets/screenshots/btw-bubbles.png)
48
+ ![Multiple answer bubbles with copy, collapse, and close controls](https://raw.githubusercontent.com/MichengAI/dsh-btw/2d8dd7752cec1b29dd705969eaa932635ba0bf4f/assets/screenshots/btw-bubbles.png)
49
+
50
+ ## DSH product ecosystem
51
+
52
+ For a ready-to-use workbench, download [DSH Codex Desktop](https://github.com/MichengAI/dsh-codex-desktop/releases). If you already use [DeepSeek Harness](https://github.com/deepseek-ai/deepseek-harness), install any of these eight plugins individually. The desktop app includes all eight.
53
+
54
+ | Plugin | What you can do |
55
+ | --- | --- |
56
+ | [Codex UI](https://github.com/MichengAI/dsh-codex-ui) | Organize projects and conversations, search tasks, and navigate chat turns |
57
+ | [IM Connect](https://github.com/MichengAI/dsh-im-connect) | Send tasks and receive replies through your usual messenger |
58
+ | [Automation](https://github.com/MichengAI/dsh-automation) | Schedule tasks and review each run |
59
+ | [Skills Manager](https://github.com/MichengAI/dsh-skills-manager) | Find, enable, create, and import local skills |
60
+ | [Archive Manager](https://github.com/MichengAI/dsh-archive-manager) | Search, restore, or clean up archived conversations |
61
+ | [Agency Agents](https://github.com/MichengAI/dsh-agency-agents) | Choose and summon specialists for your task |
62
+ | [BTW](https://github.com/MichengAI/dsh-btw) | Ask side questions without interrupting the main task |
63
+ | [Simplify](https://github.com/MichengAI/dsh-simplify) | Use /simplify to improve code within your Git changes |
49
64
 
50
65
  ## Prerequisites
51
66
 
52
- - An installed copy of DeepSeek Harness. The supported baseline is `0.1.2-rc.1`.
67
+ - An installed copy of DeepSeek Harness.
68
+ - Host peers accept exactly `0.1.0-rc.8 || 0.1.1-rc.2 || 0.1.2-rc.1 || 0.1.5-rc.1 || 0.1.5-rc.2`.
53
69
  - Node.js 22+ and `dsh` available in your terminal.
54
70
 
55
71
  ## Installation
56
72
 
57
73
  Examples use the `web` profile; replace it with your target profile. Disable other plugins that provide `/btw` before installing.
58
74
 
59
- ### From npm (Recommended)
75
+ ### Ask an agent to install it (recommended)
76
+
77
+ Send the prompt below to any agent that can run terminal commands on your computer. Replace `web` with your actual profile. Once installed, use the plugin in DSH.
78
+
79
+ ```text
80
+ Install the DSH plugin @michengai/dsh-btw into my local web profile by running: dsh plugin --profile web add @michengai/dsh-btw@latest --registry=https://registry.npmjs.org/. Then run dsh --profile web --dump-config, confirm the configuration includes michengai-btw, and explain how to reload DSH and start using the plugin.
81
+ ```
82
+
83
+ ### Install manually from npm
60
84
 
61
85
  ```powershell
62
86
  [Console]::OutputEncoding = [System.Text.Encoding]::UTF8
@@ -100,6 +124,8 @@ In a conversation with existing context, enter:
100
124
 
101
125
  Use the regular conversation to run commands, edit code, or continue the main task. BTW can only answer using existing context.
102
126
 
127
+ BTW accepts text only. Side questions with images or files are rejected without clearing the draft or attachments; remove the attachments before retrying.
128
+
103
129
  ### Usage Notes
104
130
 
105
131
  - Each question is independent and uses completed content from the main conversation at the time you ask. It does not include an answer still being generated or previous side questions.
@@ -128,6 +154,10 @@ npm run check
128
154
 
129
155
  `npm run check` runs type checking, tests, and a build.
130
156
 
157
+ Development and builds target `0.1.5-rc.2`. `npm run test:compat` builds with that baseline and runs 43 tests on each of the five isolated host versions, using a test model adapter.
158
+
159
+ Previous manual end-to-end acceptance with Edge and a live DeepSeek model passed on `0.1.5-rc.1`: side questions, attachment rejection, copying, collapse/expand, cancellation, and continued parent-session operation. This is not part of `npm run test:compat`; browser end-to-end acceptance has not been completed on `0.1.5-rc.2` or the older three versions.
160
+
131
161
  To install from source, run `dsh plugin --profile web add . --ignore-scripts` from the project directory, then reload DSH.
132
162
 
133
163
  ## License
package/README.zh-CN.md CHANGED
@@ -1,5 +1,5 @@
1
1
  <p align="center">
2
- <img src="assets/branding/dsh-btw-banner.png" alt="DSH BTW" width="100%">
2
+ <img src="https://raw.githubusercontent.com/MichengAI/dsh-btw/2d8dd7752cec1b29dd705969eaa932635ba0bf4f/assets/branding/dsh-btw-banner.png" alt="DSH BTW" width="100%">
3
3
  </p>
4
4
 
5
5
  <div align="center">
@@ -33,30 +33,54 @@
33
33
 
34
34
  主会话保留在原来的位置,旁问答案位于输入框上方。
35
35
 
36
- ![原生 DSH 会话中的 BTW 独立答案气泡](assets/screenshots/btw-conversation.png)
36
+ ![原生 DSH 会话中的 BTW 独立答案气泡](https://raw.githubusercontent.com/MichengAI/dsh-btw/2d8dd7752cec1b29dd705969eaa932635ba0bf4f/assets/screenshots/btw-conversation.png)
37
37
 
38
38
  ### 命令入口
39
39
 
40
40
  输入 `/` 后,可在「旁问」分类中选择 `btw`,也可以直接输入 `/btw 问题`。
41
41
 
42
- ![命令菜单中的旁问分类和 btw 入口](assets/screenshots/btw-command-menu.png)
42
+ ![命令菜单中的旁问分类和 btw 入口](https://raw.githubusercontent.com/MichengAI/dsh-btw/2d8dd7752cec1b29dd705969eaa932635ba0bf4f/assets/screenshots/btw-command-menu.png)
43
43
 
44
44
  ### 独立答案气泡
45
45
 
46
46
  每条旁问单独展示,右上角提供复制、折叠或展开、关闭操作。
47
47
 
48
- ![多条旁问气泡及复制、折叠和关闭操作](assets/screenshots/btw-bubbles.png)
48
+ ![多条旁问气泡及复制、折叠和关闭操作](https://raw.githubusercontent.com/MichengAI/dsh-btw/2d8dd7752cec1b29dd705969eaa932635ba0bf4f/assets/screenshots/btw-bubbles.png)
49
+
50
+ ## DSH 产品生态
51
+
52
+ 想直接使用完整工作台,可下载 [DSH Codex Desktop](https://github.com/MichengAI/dsh-codex-desktop/releases);已有 [DeepSeek Harness](https://github.com/deepseek-ai/deepseek-harness) 环境,可按需独立安装以下 8 个自研插件。桌面端已随附这些插件。
53
+
54
+ | 插件 | 你可以用它做什么 |
55
+ | --- | --- |
56
+ | [Codex UI](https://github.com/MichengAI/dsh-codex-ui) | 整理项目与会话、搜索任务、跳转对话轮次 |
57
+ | [IM Connect](https://github.com/MichengAI/dsh-im-connect) | 从微信、飞书、钉钉等消息平台下任务、收回复 |
58
+ | [Automation](https://github.com/MichengAI/dsh-automation) | 按计划执行任务,查看每次运行的结果 |
59
+ | [Skills Manager](https://github.com/MichengAI/dsh-skills-manager) | 统一查找、启停、创建和导入本机技能 |
60
+ | [Archive Manager](https://github.com/MichengAI/dsh-archive-manager) | 搜索、恢复或清理已归档会话 |
61
+ | [Agency Agents](https://github.com/MichengAI/dsh-agency-agents) | 按任务选择并召唤专业角色 |
62
+ | [BTW](https://github.com/MichengAI/dsh-btw) | 在当前上下文中临时旁问,不打断主任务 |
63
+ | [Simplify](https://github.com/MichengAI/dsh-simplify) | 用 /simplify 整理 Git 改动范围内的代码 |
49
64
 
50
65
  ## 前置条件
51
66
 
52
- - 已安装 DeepSeek Harness,适配版本为 `0.1.2-rc.1`。
67
+ - 已安装 DeepSeek Harness。
68
+ - 宿主 peer 依赖精确声明为 `0.1.0-rc.8 || 0.1.1-rc.2 || 0.1.2-rc.1 || 0.1.5-rc.1 || 0.1.5-rc.2`。
53
69
  - Node.js 22+,可在终端执行 `dsh`。
54
70
 
55
71
  ## 安装
56
72
 
57
73
  以下命令使用 `web` profile,请按实际环境替换。安装前停用其他提供 `/btw` 命令的插件。
58
74
 
59
- ### 从 npm 安装(推荐)
75
+ ### 让 Agent 帮你安装(推荐)
76
+
77
+ 把下面这段话发给任意能够执行本机终端命令的 Agent。将 `web` 替换为实际使用的 profile;安装完成后,在 DSH 中使用本插件。
78
+
79
+ ```text
80
+ 请将 DSH 插件 @michengai/dsh-btw 安装到本机 web profile,执行:dsh plugin --profile web add @michengai/dsh-btw@latest --registry=https://registry.npmjs.org/。安装后执行 dsh --profile web --dump-config,确认配置包含 michengai-btw,并告诉我如何重新加载 DSH 和开始使用。
81
+ ```
82
+
83
+ ### 手动从 npm 安装
60
84
 
61
85
  ```powershell
62
86
  [Console]::OutputEncoding = [System.Text.Encoding]::UTF8
@@ -99,6 +123,8 @@ dsh plugin --profile web add .\michengai-dsh-btw-0.1.0.tgz --ignore-scripts
99
123
 
100
124
  若需要执行命令、修改代码或继续主任务,请通过普通会话提交。BTW 只能依据已有上下文作答。
101
125
 
126
+ BTW 只接受文字。输入框中附带图片或普通文件时会拒绝旁问,并保留输入和附件,请移除附件后重试。
127
+
102
128
  ### 使用说明
103
129
 
104
130
  - 每次旁问相互独立,参考的是提问时主会话已完成的内容,不包含正在生成的回答或之前的旁问。
@@ -126,6 +152,10 @@ npm run check
126
152
 
127
153
  `npm run check` 执行类型检查、测试和构建。
128
154
 
155
+ 开发与构建基线为 `0.1.5-rc.2`。`npm run test:compat` 用该基线编译,再在五个隔离宿主版本中分别运行 43 项测试,模型使用测试适配器。
156
+
157
+ 此前在 `0.1.5-rc.1` 上完成真实 Edge 与 DeepSeek 模型的手工端到端验收,旁问、附件拒绝、复制、折叠/展开、取消和父会话继续均通过。这不属于 `npm run test:compat`;`0.1.5-rc.2` 与旧三版尚未完成浏览器端到端验收。
158
+
129
159
  从源码安装时,在项目目录执行 `dsh plugin --profile web add . --ignore-scripts`,然后重新加载 DSH。
130
160
 
131
161
  ## 许可证
package/lib/client.js CHANGED
@@ -387,8 +387,8 @@ var zh = {
387
387
  "menu.group": "\u65C1\u95EE",
388
388
  "command.description": "\u6839\u636E\u5F53\u524D\u4E0A\u4E0B\u6587\u56DE\u7B54\u65C1\u95EE",
389
389
  "error.copy": "\u590D\u5236\u5931\u8D25\uFF0C\u8BF7\u9009\u62E9\u56DE\u7B54\u6587\u5B57\u590D\u5236\u3002",
390
- "error.images": "\u65C1\u95EE\u53EA\u63A5\u53D7\u6587\u5B57\uFF0C\u56FE\u7247\u4ECD\u4FDD\u7559\u5728\u8F93\u5165\u6846\u4E2D\u3002",
391
- "error.removeImages": "\u65C1\u95EE\u53EA\u63A5\u53D7\u6587\u5B57\uFF0C\u8BF7\u5148\u79FB\u9664\u56FE\u7247\u3002",
390
+ "error.attachments": "\u65C1\u95EE\u53EA\u63A5\u53D7\u6587\u5B57\uFF0C\u56FE\u7247\u548C\u6587\u4EF6\u4ECD\u4FDD\u7559\u5728\u8F93\u5165\u6846\u4E2D\u3002",
391
+ "error.removeAttachments": "\u65C1\u95EE\u53EA\u63A5\u53D7\u6587\u5B57\uFF0C\u8BF7\u5148\u79FB\u9664\u56FE\u7247\u548C\u6587\u4EF6\u3002",
392
392
  "error.backend": "BTW \u540E\u7AEF\u5C1A\u672A\u542F\u7528\uFF0C\u8BF7\u68C0\u67E5\u63D2\u4EF6\u914D\u7F6E\u3002",
393
393
  "error.empty": "\u8BF7\u8F93\u5165\u65C1\u95EE\u5185\u5BB9\u3002",
394
394
  "error.length": "\u65C1\u95EE\u6700\u591A\u652F\u6301 8000 \u4E2A\u5B57\u7B26\u3002",
@@ -424,8 +424,8 @@ var en = {
424
424
  "menu.group": "Side Questions",
425
425
  "command.description": "Ask a side question using the current context",
426
426
  "error.copy": "Copy failed. Select the answer text to copy it.",
427
- "error.images": "Side questions accept text only. Your images remain in the input.",
428
- "error.removeImages": "Side questions accept text only. Remove the images first.",
427
+ "error.attachments": "Side questions accept text only. Your images and files remain in the input.",
428
+ "error.removeAttachments": "Side questions accept text only. Remove the images and files first.",
429
429
  "error.backend": "The BTW backend is unavailable. Check the plugin configuration.",
430
430
  "error.empty": "Enter a side question.",
431
431
  "error.length": "Side questions are limited to 8,000 characters.",
@@ -13418,8 +13418,8 @@ function apply(ctx) {
13418
13418
  get hint() {
13419
13419
  return t("command.hint");
13420
13420
  },
13421
- submit: async (args, _actx, images) => {
13422
- if (images.length) return { kind: "error", text: t("error.images") };
13421
+ submit: async (args, _actx, attachments) => {
13422
+ if (attachments.length) return { kind: "error", text: t("error.attachments") };
13423
13423
  try {
13424
13424
  await store.ask(sessionId, args.trim());
13425
13425
  return { kind: "success" };
@@ -13437,7 +13437,8 @@ function apply(ctx) {
13437
13437
  matchSpace: (session, token) => token === "/btw" ? claim(session.sessionId) : void 0,
13438
13438
  matchEnter: async (session, line, signal, envelope) => {
13439
13439
  if (signal.aborted || !/^\/btw(?:\s|$)/.test(line)) return void 0;
13440
- if (envelope.images) throw new Error(t("error.removeImages"));
13440
+ const input = envelope;
13441
+ if (input.attachments || input.images) throw new Error(t("error.removeAttachments"));
13441
13442
  return claim(session.sessionId);
13442
13443
  }
13443
13444
  };
package/lib/index.js CHANGED
@@ -15,8 +15,8 @@ var zh = {
15
15
  "menu.group": "\u65C1\u95EE",
16
16
  "command.description": "\u6839\u636E\u5F53\u524D\u4E0A\u4E0B\u6587\u56DE\u7B54\u65C1\u95EE",
17
17
  "error.copy": "\u590D\u5236\u5931\u8D25\uFF0C\u8BF7\u9009\u62E9\u56DE\u7B54\u6587\u5B57\u590D\u5236\u3002",
18
- "error.images": "\u65C1\u95EE\u53EA\u63A5\u53D7\u6587\u5B57\uFF0C\u56FE\u7247\u4ECD\u4FDD\u7559\u5728\u8F93\u5165\u6846\u4E2D\u3002",
19
- "error.removeImages": "\u65C1\u95EE\u53EA\u63A5\u53D7\u6587\u5B57\uFF0C\u8BF7\u5148\u79FB\u9664\u56FE\u7247\u3002",
18
+ "error.attachments": "\u65C1\u95EE\u53EA\u63A5\u53D7\u6587\u5B57\uFF0C\u56FE\u7247\u548C\u6587\u4EF6\u4ECD\u4FDD\u7559\u5728\u8F93\u5165\u6846\u4E2D\u3002",
19
+ "error.removeAttachments": "\u65C1\u95EE\u53EA\u63A5\u53D7\u6587\u5B57\uFF0C\u8BF7\u5148\u79FB\u9664\u56FE\u7247\u548C\u6587\u4EF6\u3002",
20
20
  "error.backend": "BTW \u540E\u7AEF\u5C1A\u672A\u542F\u7528\uFF0C\u8BF7\u68C0\u67E5\u63D2\u4EF6\u914D\u7F6E\u3002",
21
21
  "error.empty": "\u8BF7\u8F93\u5165\u65C1\u95EE\u5185\u5BB9\u3002",
22
22
  "error.length": "\u65C1\u95EE\u6700\u591A\u652F\u6301 8000 \u4E2A\u5B57\u7B26\u3002",
@@ -52,8 +52,8 @@ var en = {
52
52
  "menu.group": "Side Questions",
53
53
  "command.description": "Ask a side question using the current context",
54
54
  "error.copy": "Copy failed. Select the answer text to copy it.",
55
- "error.images": "Side questions accept text only. Your images remain in the input.",
56
- "error.removeImages": "Side questions accept text only. Remove the images first.",
55
+ "error.attachments": "Side questions accept text only. Your images and files remain in the input.",
56
+ "error.removeAttachments": "Side questions accept text only. Remove the images and files first.",
57
57
  "error.backend": "The BTW backend is unavailable. Check the plugin configuration.",
58
58
  "error.empty": "Enter a side question.",
59
59
  "error.length": "Side questions are limited to 8,000 characters.",
@@ -16,8 +16,8 @@ export declare const zh: {
16
16
  'menu.group': string;
17
17
  'command.description': string;
18
18
  'error.copy': string;
19
- 'error.images': string;
20
- 'error.removeImages': string;
19
+ 'error.attachments': string;
20
+ 'error.removeAttachments': string;
21
21
  'error.backend': string;
22
22
  'error.empty': string;
23
23
  'error.length': string;
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@michengai/dsh-btw",
3
- "version": "0.1.4",
3
+ "version": "0.1.6",
4
4
  "description": "DSH 一次性只读旁问气泡",
5
5
  "repository": {
6
6
  "type": "git",
@@ -43,7 +43,6 @@
43
43
  "inject": [
44
44
  "@deepseek-ai/dsh-client-ui-conversation",
45
45
  "@deepseek-ai/dsh-client-ui-input-trigger",
46
- "@deepseek-ai/dsh-client-ui-chat",
47
46
  "@deepseek-ai/dsh-api-remotes",
48
47
  "@deepseek-ai/dsh-client-locale"
49
48
  ]
@@ -53,9 +52,10 @@
53
52
  "build": "node scripts/build.mjs",
54
53
  "typecheck": "tsc --noEmit",
55
54
  "test": "vitest run",
56
- "test:release": "node --test tests/release.test.mjs tests/npm-oidc.test.mjs",
55
+ "test:release": "node --test tests/release.test.mjs tests/npm-oidc.test.mjs tests/github-release.test.mjs",
57
56
  "check": "npm run typecheck && npm test && npm run test:release && npm run build",
58
- "prepack": "npm run build"
57
+ "prepack": "npm run build",
58
+ "test:compat": "node scripts/test-compatibility.mjs"
59
59
  },
60
60
  "engines": {
61
61
  "node": ">=22"
@@ -63,36 +63,47 @@
63
63
  "license": "Apache-2.0",
64
64
  "peerDependencies": {
65
65
  "@deepseek-ai/cordis": "^4.0.2",
66
- "@deepseek-ai/dsh-commands": "0.1.2-rc.1",
67
- "@deepseek-ai/dsh-subagent": "0.1.2-rc.1",
68
- "@deepseek-ai/dsh-tools": "0.1.2-rc.1",
66
+ "@deepseek-ai/dsh-commands": "0.1.0-rc.8 || 0.1.1-rc.2 || 0.1.2-rc.1 || 0.1.5-rc.1 || 0.1.5-rc.2",
67
+ "@deepseek-ai/dsh-subagent": "0.1.0-rc.8 || 0.1.1-rc.2 || 0.1.2-rc.1 || 0.1.5-rc.1 || 0.1.5-rc.2",
68
+ "@deepseek-ai/dsh-tools": "0.1.0-rc.8 || 0.1.1-rc.2 || 0.1.2-rc.1 || 0.1.5-rc.1 || 0.1.5-rc.2",
69
69
  "react": "^18.3.1"
70
70
  },
71
71
  "devDependencies": {
72
72
  "@deepseek-ai/cordis": "4.0.2",
73
- "@deepseek-ai/dsh-agent": "0.1.2-rc.1",
74
- "@deepseek-ai/dsh-api-gateway": "0.1.2-rc.1",
75
- "@deepseek-ai/dsh-api-session-controller": "0.1.2-rc.1",
76
- "@deepseek-ai/dsh-attachment": "0.1.2-rc.1",
77
- "@deepseek-ai/dsh-client-locale": "0.1.2-rc.1",
78
- "@deepseek-ai/dsh-client-ui-chat": "0.1.2-rc.1",
79
- "@deepseek-ai/dsh-client-ui-conversation": "0.1.2-rc.1",
80
- "@deepseek-ai/dsh-client-ui-input-trigger": "0.1.2-rc.1",
81
- "@deepseek-ai/dsh-client-ui-renderer": "0.1.2-rc.1",
82
- "@deepseek-ai/dsh-client-ui-slots": "0.1.2-rc.1",
83
- "@deepseek-ai/dsh-client-ui-theme": "0.1.2-rc.1",
84
- "@deepseek-ai/dsh-commands": "0.1.2-rc.1",
85
- "@deepseek-ai/dsh-scope": "0.1.2-rc.1",
86
- "@deepseek-ai/dsh-session": "0.1.2-rc.1",
87
- "@deepseek-ai/dsh-subagent": "0.1.2-rc.1",
88
- "@deepseek-ai/dsh-tools": "0.1.2-rc.1",
89
- "@deepseek-ai/dsh-typert-protocol": "0.1.2-rc.1",
90
- "@deepseek-ai/dsh-typert-registry": "0.1.2-rc.1",
73
+ "@deepseek-ai/dsh-agent": "0.1.5-rc.2",
74
+ "@deepseek-ai/dsh-agent-loop": "0.1.5-rc.2",
75
+ "@deepseek-ai/dsh-api-gateway": "0.1.5-rc.2",
76
+ "@deepseek-ai/dsh-api-session-controller": "0.1.5-rc.2",
77
+ "@deepseek-ai/dsh-attachment": "0.1.5-rc.2",
78
+ "@deepseek-ai/dsh-client-locale": "0.1.5-rc.2",
79
+ "@deepseek-ai/dsh-client-ui-chat": "0.1.5-rc.2",
80
+ "@deepseek-ai/dsh-client-ui-conversation": "0.1.5-rc.2",
81
+ "@deepseek-ai/dsh-client-ui-input-trigger": "0.1.5-rc.2",
82
+ "@deepseek-ai/dsh-client-ui-renderer": "0.1.5-rc.2",
83
+ "@deepseek-ai/dsh-client-ui-slots": "0.1.5-rc.2",
84
+ "@deepseek-ai/dsh-client-ui-theme": "0.1.5-rc.2",
85
+ "@deepseek-ai/dsh-commands": "0.1.5-rc.2",
86
+ "@deepseek-ai/dsh-llm": "0.1.5-rc.2",
87
+ "@deepseek-ai/dsh-scope": "0.1.5-rc.2",
88
+ "@deepseek-ai/dsh-session": "0.1.5-rc.2",
89
+ "@deepseek-ai/dsh-session-persistence": "0.1.5-rc.2",
90
+ "@deepseek-ai/dsh-session-projection": "0.1.5-rc.2",
91
+ "@deepseek-ai/dsh-subagent": "0.1.5-rc.2",
92
+ "@deepseek-ai/dsh-subagent-fork-in-process": "0.1.5-rc.2",
93
+ "@deepseek-ai/dsh-subagent-in-process-driver": "0.1.5-rc.2",
94
+ "@deepseek-ai/dsh-system-prompt": "0.1.5-rc.2",
95
+ "@deepseek-ai/dsh-tools": "0.1.5-rc.2",
96
+ "@deepseek-ai/dsh-typert-protocol": "0.1.5-rc.2",
97
+ "@deepseek-ai/dsh-typert-registry": "0.1.5-rc.2",
98
+ "@deepseek-ai/dsh-util-time": "0.1.5-rc.2",
91
99
  "@types/node": "^22.0.0",
92
100
  "@types/react": "^18.3.1",
101
+ "@types/react-dom": "^18.3.7",
93
102
  "esbuild": "^0.25.0",
103
+ "jsdom": "^26.1.0",
94
104
  "lucide-react": "^0.468.0",
95
105
  "react": "^18.3.1",
106
+ "react-dom": "^18.3.1",
96
107
  "react-markdown": "^10.1.0",
97
108
  "remark-gfm": "^4.0.1",
98
109
  "typescript": "~5.7.2",