dsh-im-union 0.4.7 → 0.4.8
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 +6 -0
- package/README.en.md +73 -1
- package/README.md +73 -1
- package/dsh.plugin.json +4 -4
- package/locale/en.json +1 -1
- package/locale/zh.json +1 -1
- package/package.json +8 -8
package/CHANGELOG.md
CHANGED
|
@@ -2,6 +2,12 @@
|
|
|
2
2
|
|
|
3
3
|
本项目版本号遵循语义化版本;发布面与宿主兼容矩阵见 `scripts/hosts.mjs`(README 管理块同源)。
|
|
4
4
|
|
|
5
|
+
## 0.4.8(宿主枚举补票:0.2.1-rc.3)
|
|
6
|
+
|
|
7
|
+
### Changed
|
|
8
|
+
|
|
9
|
+
- hosts.mjs 单源追加 `0.2.1-rc.3`(12→13 tag),sync-hosts 下发 package.json engines/6 个 dsh-* peers、dsh.plugin.json、README 双语管理块与 locale/plugin 描述同串。
|
|
10
|
+
- 补票依据:rc.2→rc.3 契约面零断裂(host-matrix 14 列配对探针复核 + source-analysis v0.2.1-rc.3 四件套);本插件不触 `ctx.web` provider 钉选、模型标签槽与 `startSession` 系调用面。
|
|
5
11
|
## 0.4.7(/relay 别名解析)
|
|
6
12
|
|
|
7
13
|
### Added
|
package/README.en.md
CHANGED
|
@@ -3,7 +3,7 @@
|
|
|
3
3
|
A union IM bridge for DeepSeek Harness — a clean-room reimplementation merging the capability sets of xmanrui/dsh-im and MichengAI/dsh-im-connect, with no source copied from either.
|
|
4
4
|
|
|
5
5
|
<!-- host-compat:begin — generated by scripts/sync-hosts.mjs from scripts/hosts.mjs; DO NOT EDIT -->
|
|
6
|
-
- **Supported DSH hosts:** `0.1.2-rc.1` `0.1.5-rc.1` `0.1.5-rc.2` `0.1.5-rc.3` `0.1.7-rc.1` `0.1.7-rc.2` `0.2.0-rc.1` `0.2.0-rc.2` `0.2.1-alpha.2` `0.2.1-alpha.3` `0.2.1-rc.1` `0.2.1-rc.2` (
|
|
6
|
+
- **Supported DSH hosts:** `0.1.2-rc.1` `0.1.5-rc.1` `0.1.5-rc.2` `0.1.5-rc.3` `0.1.7-rc.1` `0.1.7-rc.2` `0.2.0-rc.1` `0.2.0-rc.2` `0.2.1-alpha.2` `0.2.1-alpha.3` `0.2.1-rc.1` `0.2.1-rc.2` `0.2.1-rc.3` (13 rc/alpha releases across lines 0.1.2 / 0.1.5 / 0.1.7 / 0.2.0 / 0.2.1)
|
|
7
7
|
<!-- host-compat:end -->
|
|
8
8
|
|
|
9
9
|
## Status
|
|
@@ -31,6 +31,78 @@ Then add accounts in the "IM union bridge" panel: most channels use credential b
|
|
|
31
31
|
- The Feishu voice tier requires system `ffmpeg` on PATH (the transcoding binary is not shipped; it is only invoked when the voice tier is enabled).
|
|
32
32
|
- The iMessage channel is macOS only.
|
|
33
33
|
|
|
34
|
+
## Usage
|
|
35
|
+
|
|
36
|
+
After installing, manage accounts and preferences from the **IM Union Bridge** section of the host's settings page; day-to-day operation happens entirely inside chat (`/help` lists the commands).
|
|
37
|
+
|
|
38
|
+
### Adding an account
|
|
39
|
+
|
|
40
|
+
Three bind shapes; the panel renders each form from channel metadata:
|
|
41
|
+
|
|
42
|
+
| Bind | Channels | Notes |
|
|
43
|
+
|---|---|---|
|
|
44
|
+
| Credentials (9) | telegram / discord / slack / matrix / imessage / wecom-app / email / dingtalk-notify / qq-notify | Bot token or app credentials; secret fields are written one-way and never returned by any response |
|
|
45
|
+
| Credentials or QR (4) | feishu / wecom / dingtalk / qq | Either fill app credentials, or create the bot by scanning from the panel |
|
|
46
|
+
| QR (2) | weixin / whatsapp | WeChat via the official iLink QR bind; WhatsApp via Baileys pairing |
|
|
47
|
+
|
|
48
|
+
Account IDs are generated (`<channel>-<ts36><rand>`) — **you never fill one in**. The *alias* is the human-facing name and is editable in the panel.
|
|
49
|
+
|
|
50
|
+
### Command panel (25)
|
|
51
|
+
|
|
52
|
+
| Group | Commands |
|
|
53
|
+
|---|---|
|
|
54
|
+
| Session | `/help` `/menu` `/status` `/new` `/stop` `/steer <text>` `/sessions [all] [page]` `/session <index\|id-fragment>` `/fork` `/rename <title>` `/unbind` `/goal <text\|->` `/queue` `/mute` |
|
|
55
|
+
| Models & presets | `/models` `/model <id>` `/reasoning <tier>` `/presets` `/preset <name>` `/workspaces` `/workspace <path\|->` |
|
|
56
|
+
| Delivery & relay | `/delivery [retry <n>]` `/export` `/relay <account\|->` `/speak <text>` |
|
|
57
|
+
|
|
58
|
+
Commands are gated by the per-account allowlist; in groups only explicit @-mentions trigger them. Tool approvals and agent questions are answered in the originating chat (deny-by-default, initiator only, 5-minute expiry).
|
|
59
|
+
|
|
60
|
+
### Final-answer relay (`/relay`)
|
|
61
|
+
|
|
62
|
+
Mirror every turn's final answer of the **current session** to a send-only notify account (DingTalk group webhook / QQ active push):
|
|
63
|
+
|
|
64
|
+
```text
|
|
65
|
+
/relay list this session's binding (prints usage when unbound)
|
|
66
|
+
/relay - unbind
|
|
67
|
+
/relay <account> bind; <account> is the surrogate ID or the alias
|
|
68
|
+
/relay <account>:<targetId> bind and set the push target explicitly
|
|
69
|
+
```
|
|
70
|
+
|
|
71
|
+
- **Resolution order**: surrogate ID first, then a **unique** alias match. An ambiguous alias is refused outright with a hint to use the account ID — the plugin never guesses.
|
|
72
|
+
- **targetId per channel**: DingTalk's webhook already pins the destination group, so it may be omitted; QQ uses `chatId` as openid/group_openid and **requires** it.
|
|
73
|
+
- **Semantics**: session-scoped, re-binding overwrites, many sessions may point at one account; the mirrored text carries a `[source-channel/session]` prefix plus the same turn-end suffix; an uncertain delivery is **never re-sent** (failures land in `plugin.log`).
|
|
74
|
+
- `/new` rotation does not inherit the binding (re-run `/relay`), and one session targets one notify account at a time.
|
|
75
|
+
|
|
76
|
+
### Tasks / Channels sidebar
|
|
77
|
+
|
|
78
|
+
The plugin wraps the host sidebar into two self-owned tabs: **Tasks** renders the official session tree with IM sessions filtered out (they never surface as "ungrouped" rows), **Channels** shows IM sessions grouped by messenger with search, a running indicator and click-to-open. When another plugin already owns the slot the plugin **stands down entirely** and the channel list remains available as a card inside the settings panel.
|
|
79
|
+
|
|
80
|
+
### Model allowlist
|
|
81
|
+
|
|
82
|
+
Enter one `provider/model` per line in the settings textarea (empty = no restriction). When set, `/models` lists only allowlisted models and `/model` rejects anything else while echoing the usable set; account-level model preferences are exempt. Purpose: when a model misbehaves, an IM-side user still has a vetted fallback to switch to.
|
|
83
|
+
|
|
84
|
+
### Charts (svg → image)
|
|
85
|
+
|
|
86
|
+
Ask for a diagram and the assistant emits a single `svg` code fence (complete inline SVG, white background, dark foreground, width ≤ 1000); the plugin renders it to PNG and sends it as an image. With no renderer available, or on channels that cannot take images, it degrades to text instead of blocking the answer.
|
|
87
|
+
|
|
88
|
+
### IM-concise agent preset
|
|
89
|
+
|
|
90
|
+
The plugin registers an `im-concise` agent preset with the host and uses it for IM sessions by default: a complete-mode persona that keeps rich-structure injections (GenUI fences, raw HTML) out of text-only chats, plus short plain-text discipline. Override it per account under *session preferences → Agent preset*; reply sanitisation stays on as a backstop either way.
|
|
91
|
+
|
|
92
|
+
### Administration API
|
|
93
|
+
|
|
94
|
+
`/api/dsh-im-union/*` reuses the host login session (every request passes the Host/Origin/Cookie checks) and returns zero credentials and zero internal error detail:
|
|
95
|
+
|
|
96
|
+
| Group | Endpoints |
|
|
97
|
+
|---|---|
|
|
98
|
+
| Probes | `/ping` `/state` |
|
|
99
|
+
| Accounts | `/accounts` `/accounts/save` `/accounts/pause` `/accounts/remove` `/accounts/allowlist` `/accounts/check` |
|
|
100
|
+
| Catalogs | `/session-catalog` `/channels` |
|
|
101
|
+
| QR bind | `/weixin/qr/start` `/weixin/qr/status` |
|
|
102
|
+
| Proactive delivery | `/proactive/send` `/proactive/targets` `/proactive/targets/remove` `/proactive/syncback` |
|
|
103
|
+
| Relay & allowlist | `/relay-bindings` `/relay-bindings/bind` `/relay-bindings/unbind` `/model-whitelist` |
|
|
104
|
+
| Misc | `/connector/jobs` `/connector/jobs/cancel` `/wecom-app/callback` (third-party webhook; signature verification *is* the authentication) |
|
|
105
|
+
|
|
34
106
|
## Development
|
|
35
107
|
|
|
36
108
|
```sh
|
package/README.md
CHANGED
|
@@ -3,7 +3,7 @@
|
|
|
3
3
|
DeepSeek Harness 的 IM 联合桥——净室重写,能力合集来自社区两仓(xmanrui/dsh-im 与 MichengAI/dsh-im-connect),不复制其源码。
|
|
4
4
|
|
|
5
5
|
<!-- host-compat:begin — generated by scripts/sync-hosts.mjs from scripts/hosts.mjs; DO NOT EDIT -->
|
|
6
|
-
- **支持的 DSH 宿主:** `0.1.2-rc.1` `0.1.5-rc.1` `0.1.5-rc.2` `0.1.5-rc.3` `0.1.7-rc.1` `0.1.7-rc.2` `0.2.0-rc.1` `0.2.0-rc.2` `0.2.1-alpha.2` `0.2.1-alpha.3` `0.2.1-rc.1` `0.2.1-rc.2`(覆盖 0.1.2 / 0.1.5 / 0.1.7 / 0.2.0 / 0.2.1 共
|
|
6
|
+
- **支持的 DSH 宿主:** `0.1.2-rc.1` `0.1.5-rc.1` `0.1.5-rc.2` `0.1.5-rc.3` `0.1.7-rc.1` `0.1.7-rc.2` `0.2.0-rc.1` `0.2.0-rc.2` `0.2.1-alpha.2` `0.2.1-alpha.3` `0.2.1-rc.1` `0.2.1-rc.2` `0.2.1-rc.3`(覆盖 0.1.2 / 0.1.5 / 0.1.7 / 0.2.0 / 0.2.1 共 13 个 rc/alpha)
|
|
7
7
|
<!-- host-compat:end -->
|
|
8
8
|
|
|
9
9
|
## 状态
|
|
@@ -31,6 +31,78 @@ dsh plugin --profile web add dsh-im-union@latest --registry=https://registry.npm
|
|
|
31
31
|
- 飞书语音档需要系统 `ffmpeg` 在 PATH 中(转码二进制不随包分发,仅启用语音档时才会调用)。
|
|
32
32
|
- iMessage 渠道仅 macOS 可用。
|
|
33
33
|
|
|
34
|
+
## 使用说明
|
|
35
|
+
|
|
36
|
+
装好后在宿主设置页/侧栏的「IM 联合桥」面板管理账号与偏好;日常操作全部可在聊天内完成(发 `/help` 看命令)。
|
|
37
|
+
|
|
38
|
+
### 添加账号
|
|
39
|
+
|
|
40
|
+
三类绑定形态,面板按渠道元数据自动出表单:
|
|
41
|
+
|
|
42
|
+
| 形态 | 渠道 | 说明 |
|
|
43
|
+
|---|---|---|
|
|
44
|
+
| 凭据表单(9) | telegram / discord / slack / matrix / imessage / wecom-app / email / dingtalk-notify / qq-notify | 填 Bot Token 或 App 凭据;secret 字段只单向入库,任何回包零凭据 |
|
|
45
|
+
| 凭据或扫码(4) | feishu / wecom / dingtalk / qq | 二选一:填应用凭据,或走面板扫码建机器人 |
|
|
46
|
+
| 扫码(2) | weixin / whatsapp | 微信走官方 iLink 扫码;WhatsApp 走 Baileys 配对 |
|
|
47
|
+
|
|
48
|
+
账号 ID 由系统自动生成(`<channel>-<ts36><rand>`),**无需也不应手填**;「别名」才是给人看的名字,可在面板设置。
|
|
49
|
+
|
|
50
|
+
### 命令面板(25 条)
|
|
51
|
+
|
|
52
|
+
| 组 | 命令 |
|
|
53
|
+
|---|---|
|
|
54
|
+
| 会话 | `/help` `/menu` `/status` `/new` `/stop` `/steer <文本>` `/sessions [all] [页]` `/session <序号\|id片段>` `/fork` `/rename <标题>` `/unbind` `/goal <文本\|->` `/queue` `/mute` |
|
|
55
|
+
| 模型与预设 | `/models` `/model <id>` `/reasoning <档位>` `/presets` `/preset <名称>` `/workspaces` `/workspace <路径\|->` |
|
|
56
|
+
| 投递与抄送 | `/delivery [retry <序号>]` `/export` `/relay <账号\|->` `/speak <文本>` |
|
|
57
|
+
|
|
58
|
+
命令默认只对白名单用户开放;群聊只认显式 @ 本机器人。工具审批与交互提问在原聊天回答(默认拒绝、发起者限定、5 分钟超时)。
|
|
59
|
+
|
|
60
|
+
### 通知抄送(`/relay`)
|
|
61
|
+
|
|
62
|
+
把**当前会话**每回合的最终回答镜像到一个纯出站通知账号(钉钉群 webhook / QQ 主动推送):
|
|
63
|
+
|
|
64
|
+
```text
|
|
65
|
+
/relay 列出本会话绑定(未绑定时回用法提示)
|
|
66
|
+
/relay - 解绑
|
|
67
|
+
/relay <账号> 绑定;<账号> 可为代理键 ID 或别名
|
|
68
|
+
/relay <账号>:<targetId> 绑定并指定推送目标
|
|
69
|
+
```
|
|
70
|
+
|
|
71
|
+
- **解析顺序**:先按账号 ID 直查,未命中再按别名**唯一**匹配;别名歧义时直接拒绝并提示改用账号 ID,绝不猜。
|
|
72
|
+
- **targetId 按渠道**:钉钉的 webhook 已锁定目标群,可省;QQ 用 `chatId` 作 openid/group_openid,**必填**。
|
|
73
|
+
- **语义**:会话级绑定、重复绑定即换目标(覆盖)、多会话可指向同一账号;抄送文本带 `[源渠道/会话短id]` 前缀与同款收轮后缀;投递结果不明时**绝不自动重发**,失败落 `plugin.log`。
|
|
74
|
+
- `/new` 轮换后新会话不继承旧绑定(需重新 `/relay`);一个会话同时只指向一个通知账号。
|
|
75
|
+
|
|
76
|
+
### 侧栏「任务 / 频道」
|
|
77
|
+
|
|
78
|
+
插件把宿主侧栏包成两个自持页签:**任务**=官方会话树(已过滤 IM 会话,不会冒出「未分组」条目)、**频道**=按渠道分组的 IM 会话列表(搜索、运行状态点、点击打开)。检测到侧栏已被其它插件接管时**完全不插手**,此时渠道列表退化为设置面板内的卡片。
|
|
79
|
+
|
|
80
|
+
### 模型白名单
|
|
81
|
+
|
|
82
|
+
设置面板「模型白名单」框一行一个 `provider/model`(留空=不限)。非空时 `/models` 只列白名单内、`/model` 越界被拒并回列可用项;账号级模型偏好不受约束。用途:模型异常时 IM 远端仍有可切的兜底集合。
|
|
83
|
+
|
|
84
|
+
### 图表(svg → 图片)
|
|
85
|
+
|
|
86
|
+
需要图示时让助手输出一个 `svg` 代码围栏(完整内联 SVG、白底深色前景、宽 ≤1000),插件会渲染成 PNG 作为图片消息发出;渲染依赖不在位或渠道不支持图片时降级为纯文字,不阻断回答。
|
|
87
|
+
|
|
88
|
+
### IM 简洁预设
|
|
89
|
+
|
|
90
|
+
插件向宿主注册 `im-concise` 预设并作为 IM 会话默认:persona 完整模式(从源头阻断 GenUI 围栏、裸 HTML 等富结构注入)+ 简短纯文字纪律。账号「会话偏好 → Agent 预设」可改用其它预设;出站净化作为兜底安全网始终生效。
|
|
91
|
+
|
|
92
|
+
### 管理 API
|
|
93
|
+
|
|
94
|
+
`/api/dsh-im-union/*` 复用宿主登录态(每请求过 Host/Origin/Cookie 三查),回包零凭据零内部异常细节:
|
|
95
|
+
|
|
96
|
+
| 组 | 端点 |
|
|
97
|
+
|---|---|
|
|
98
|
+
| 探针 | `/ping` `/state` |
|
|
99
|
+
| 账号 | `/accounts` `/accounts/save` `/accounts/pause` `/accounts/remove` `/accounts/allowlist` `/accounts/check` |
|
|
100
|
+
| 目录 | `/session-catalog` `/channels` |
|
|
101
|
+
| 扫码 | `/weixin/qr/start` `/weixin/qr/status` |
|
|
102
|
+
| 主动投递 | `/proactive/send` `/proactive/targets` `/proactive/targets/remove` `/proactive/syncback` |
|
|
103
|
+
| 抄送与白名单 | `/relay-bindings` `/relay-bindings/bind` `/relay-bindings/unbind` `/model-whitelist` |
|
|
104
|
+
| 其它 | `/connector/jobs` `/connector/jobs/cancel` `/wecom-app/callback`(第三方回调,验签即认证) |
|
|
105
|
+
|
|
34
106
|
## 开发
|
|
35
107
|
|
|
36
108
|
```sh
|
package/dsh.plugin.json
CHANGED
|
@@ -1,14 +1,14 @@
|
|
|
1
1
|
{
|
|
2
2
|
"id": "dsh-im-union",
|
|
3
3
|
"name": "dsh-im-union",
|
|
4
|
-
"version": "0.4.
|
|
4
|
+
"version": "0.4.8",
|
|
5
5
|
"description": {
|
|
6
|
-
"en": "Union IM bridge for DeepSeek Harness: multi-account bots across messaging platforms, each chat bound to its own session, with cross-host-version compatibility (0.1.2-rc.1 .. 0.2.1-rc.
|
|
7
|
-
"zh": "DeepSeek Harness 的 IM 联合桥:多平台多账号机器人、每个聊天绑定独立会话,跨宿主版本兼容(0.1.2-rc.1 至 0.2.1-rc.
|
|
6
|
+
"en": "Union IM bridge for DeepSeek Harness: multi-account bots across messaging platforms, each chat bound to its own session, with cross-host-version compatibility (0.1.2-rc.1 .. 0.2.1-rc.3).",
|
|
7
|
+
"zh": "DeepSeek Harness 的 IM 联合桥:多平台多账号机器人、每个聊天绑定独立会话,跨宿主版本兼容(0.1.2-rc.1 至 0.2.1-rc.3)。"
|
|
8
8
|
},
|
|
9
9
|
"license": "MIT",
|
|
10
10
|
"engines": {
|
|
11
|
-
"dsh": "0.1.2-rc.1 || 0.1.5-rc.1 || 0.1.5-rc.2 || 0.1.5-rc.3 || 0.1.7-rc.1 || 0.1.7-rc.2 || 0.2.0-rc.1 || 0.2.0-rc.2 || 0.2.1-alpha.2 || 0.2.1-alpha.3 || 0.2.1-rc.1 || 0.2.1-rc.2"
|
|
11
|
+
"dsh": "0.1.2-rc.1 || 0.1.5-rc.1 || 0.1.5-rc.2 || 0.1.5-rc.3 || 0.1.7-rc.1 || 0.1.7-rc.2 || 0.2.0-rc.1 || 0.2.0-rc.2 || 0.2.1-alpha.2 || 0.2.1-alpha.3 || 0.2.1-rc.1 || 0.2.1-rc.2 || 0.2.1-rc.3"
|
|
12
12
|
},
|
|
13
13
|
"main": "./lib/index.js",
|
|
14
14
|
"client": {
|
package/locale/en.json
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"meta":{"title":"IM Union Bridge","description":"Connect IM bots to local DeepSeek Harness: multi-platform multi-account, one session per chat, compatible across host 0.1.2-rc.1 .. 0.2.1-rc.
|
|
1
|
+
{"meta":{"title":"IM Union Bridge","description":"Connect IM bots to local DeepSeek Harness: multi-platform multi-account, one session per chat, compatible across host 0.1.2-rc.1 .. 0.2.1-rc.3."}}
|
package/locale/zh.json
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"meta":{"title":"IM 联合桥","description":"把主流 IM 机器人接入本机 DeepSeek Harness:多平台多账号、每聊天独立会话、跨宿主版本兼容(0.1.2-rc.1 至 0.2.1-rc.
|
|
1
|
+
{"meta":{"title":"IM 联合桥","description":"把主流 IM 机器人接入本机 DeepSeek Harness:多平台多账号、每聊天独立会话、跨宿主版本兼容(0.1.2-rc.1 至 0.2.1-rc.3)。"}}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "dsh-im-union",
|
|
3
|
-
"version": "0.4.
|
|
3
|
+
"version": "0.4.8",
|
|
4
4
|
"description": "Union IM bridge for DeepSeek Harness 鈥?clean-room merge of dsh-im and dsh-im-connect capabilities, compatible across 0.1.2-rc.1 .. 0.2.1-rc.2 hosts.",
|
|
5
5
|
"type": "module",
|
|
6
6
|
"license": "MIT",
|
|
@@ -41,16 +41,16 @@
|
|
|
41
41
|
},
|
|
42
42
|
"engines": {
|
|
43
43
|
"node": "^22.19.0 || >=24.0.0",
|
|
44
|
-
"dsh": "0.1.2-rc.1 || 0.1.5-rc.1 || 0.1.5-rc.2 || 0.1.5-rc.3 || 0.1.7-rc.1 || 0.1.7-rc.2 || 0.2.0-rc.1 || 0.2.0-rc.2 || 0.2.1-alpha.2 || 0.2.1-alpha.3 || 0.2.1-rc.1 || 0.2.1-rc.2"
|
|
44
|
+
"dsh": "0.1.2-rc.1 || 0.1.5-rc.1 || 0.1.5-rc.2 || 0.1.5-rc.3 || 0.1.7-rc.1 || 0.1.7-rc.2 || 0.2.0-rc.1 || 0.2.0-rc.2 || 0.2.1-alpha.2 || 0.2.1-alpha.3 || 0.2.1-rc.1 || 0.2.1-rc.2 || 0.2.1-rc.3"
|
|
45
45
|
},
|
|
46
46
|
"peerDependencies": {
|
|
47
47
|
"@deepseek-ai/cordis": "^4.0.2",
|
|
48
|
-
"@deepseek-ai/dsh-agent": "0.1.2-rc.1 || 0.1.5-rc.1 || 0.1.5-rc.2 || 0.1.5-rc.3 || 0.1.7-rc.1 || 0.1.7-rc.2 || 0.2.0-rc.1 || 0.2.0-rc.2 || 0.2.1-alpha.2 || 0.2.1-alpha.3 || 0.2.1-rc.1 || 0.2.1-rc.2",
|
|
49
|
-
"@deepseek-ai/dsh-client-locale": "0.1.2-rc.1 || 0.1.5-rc.1 || 0.1.5-rc.2 || 0.1.5-rc.3 || 0.1.7-rc.1 || 0.1.7-rc.2 || 0.2.0-rc.1 || 0.2.0-rc.2 || 0.2.1-alpha.2 || 0.2.1-alpha.3 || 0.2.1-rc.1 || 0.2.1-rc.2",
|
|
50
|
-
"@deepseek-ai/dsh-client-ui-primitives": "0.1.2-rc.1 || 0.1.5-rc.1 || 0.1.5-rc.2 || 0.1.5-rc.3 || 0.1.7-rc.1 || 0.1.7-rc.2 || 0.2.0-rc.1 || 0.2.0-rc.2 || 0.2.1-alpha.2 || 0.2.1-alpha.3 || 0.2.1-rc.1 || 0.2.1-rc.2",
|
|
51
|
-
"@deepseek-ai/dsh-client-ui-settings": "0.1.2-rc.1 || 0.1.5-rc.1 || 0.1.5-rc.2 || 0.1.5-rc.3 || 0.1.7-rc.1 || 0.1.7-rc.2 || 0.2.0-rc.1 || 0.2.0-rc.2 || 0.2.1-alpha.2 || 0.2.1-alpha.3 || 0.2.1-rc.1 || 0.2.1-rc.2",
|
|
52
|
-
"@deepseek-ai/dsh-client-ui-slots": "0.1.2-rc.1 || 0.1.5-rc.1 || 0.1.5-rc.2 || 0.1.5-rc.3 || 0.1.7-rc.1 || 0.1.7-rc.2 || 0.2.0-rc.1 || 0.2.0-rc.2 || 0.2.1-alpha.2 || 0.2.1-alpha.3 || 0.2.1-rc.1 || 0.2.1-rc.2",
|
|
53
|
-
"@deepseek-ai/dsh-host-webserver": "0.1.2-rc.1 || 0.1.5-rc.1 || 0.1.5-rc.2 || 0.1.5-rc.3 || 0.1.7-rc.1 || 0.1.7-rc.2 || 0.2.0-rc.1 || 0.2.0-rc.2 || 0.2.1-alpha.2 || 0.2.1-alpha.3 || 0.2.1-rc.1 || 0.2.1-rc.2",
|
|
48
|
+
"@deepseek-ai/dsh-agent": "0.1.2-rc.1 || 0.1.5-rc.1 || 0.1.5-rc.2 || 0.1.5-rc.3 || 0.1.7-rc.1 || 0.1.7-rc.2 || 0.2.0-rc.1 || 0.2.0-rc.2 || 0.2.1-alpha.2 || 0.2.1-alpha.3 || 0.2.1-rc.1 || 0.2.1-rc.2 || 0.2.1-rc.3",
|
|
49
|
+
"@deepseek-ai/dsh-client-locale": "0.1.2-rc.1 || 0.1.5-rc.1 || 0.1.5-rc.2 || 0.1.5-rc.3 || 0.1.7-rc.1 || 0.1.7-rc.2 || 0.2.0-rc.1 || 0.2.0-rc.2 || 0.2.1-alpha.2 || 0.2.1-alpha.3 || 0.2.1-rc.1 || 0.2.1-rc.2 || 0.2.1-rc.3",
|
|
50
|
+
"@deepseek-ai/dsh-client-ui-primitives": "0.1.2-rc.1 || 0.1.5-rc.1 || 0.1.5-rc.2 || 0.1.5-rc.3 || 0.1.7-rc.1 || 0.1.7-rc.2 || 0.2.0-rc.1 || 0.2.0-rc.2 || 0.2.1-alpha.2 || 0.2.1-alpha.3 || 0.2.1-rc.1 || 0.2.1-rc.2 || 0.2.1-rc.3",
|
|
51
|
+
"@deepseek-ai/dsh-client-ui-settings": "0.1.2-rc.1 || 0.1.5-rc.1 || 0.1.5-rc.2 || 0.1.5-rc.3 || 0.1.7-rc.1 || 0.1.7-rc.2 || 0.2.0-rc.1 || 0.2.0-rc.2 || 0.2.1-alpha.2 || 0.2.1-alpha.3 || 0.2.1-rc.1 || 0.2.1-rc.2 || 0.2.1-rc.3",
|
|
52
|
+
"@deepseek-ai/dsh-client-ui-slots": "0.1.2-rc.1 || 0.1.5-rc.1 || 0.1.5-rc.2 || 0.1.5-rc.3 || 0.1.7-rc.1 || 0.1.7-rc.2 || 0.2.0-rc.1 || 0.2.0-rc.2 || 0.2.1-alpha.2 || 0.2.1-alpha.3 || 0.2.1-rc.1 || 0.2.1-rc.2 || 0.2.1-rc.3",
|
|
53
|
+
"@deepseek-ai/dsh-host-webserver": "0.1.2-rc.1 || 0.1.5-rc.1 || 0.1.5-rc.2 || 0.1.5-rc.3 || 0.1.7-rc.1 || 0.1.7-rc.2 || 0.2.0-rc.1 || 0.2.0-rc.2 || 0.2.1-alpha.2 || 0.2.1-alpha.3 || 0.2.1-rc.1 || 0.2.1-rc.2 || 0.2.1-rc.3",
|
|
54
54
|
"@deepseek-ai/schemastery": "^3.18.2",
|
|
55
55
|
"react": "^18.2.0"
|
|
56
56
|
},
|