@wangmo-bit/ds-link 0.0.0-stage → 0.8.18
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 +21 -0
- package/README.md +134 -2
- package/TESTING.md +59 -0
- package/THIRD_PARTY_NOTICES.md +313 -0
- package/assets/icon.svg +7 -0
- package/cordis.patch.yml +3 -0
- package/dist/client.js +6012 -0
- package/package.json +102 -4
- package/src/core/constants.js +188 -0
- package/src/core/downgrade.js +80 -0
- package/src/core/engine.js +4669 -0
- package/src/core/errors.js +51 -0
- package/src/core/ledger.js +1174 -0
- package/src/core/migration.js +741 -0
- package/src/core/render.js +61 -0
- package/src/core/settings.js +147 -0
- package/src/core/validation.js +454 -0
- package/src/host/adapter.js +1152 -0
- package/src/host/connection.js +113 -0
- package/src/host/entry-0.2.0.js +13 -0
- package/src/host/entry-0.3.0.js +13 -0
- package/src/host/entry-0.4.0.js +13 -0
- package/src/host/entry-0.8.10.js +13 -0
- package/src/host/entry-0.8.11.js +13 -0
- package/src/host/entry-0.8.12.js +13 -0
- package/src/host/entry-0.8.13.js +13 -0
- package/src/host/entry-0.8.14.js +13 -0
- package/src/host/entry-0.8.15.js +13 -0
- package/src/host/entry-0.8.16-pre.1.js +13 -0
- package/src/host/entry-0.8.16-pre.2.js +13 -0
- package/src/host/entry-0.8.16-pre.3.js +13 -0
- package/src/host/entry-0.8.16-pre.4.js +13 -0
- package/src/host/entry-0.8.16-pre.5.js +13 -0
- package/src/host/entry-0.8.18.js +13 -0
- package/src/host/entry-0.8.5.js +13 -0
- package/src/host/entry-0.8.6.js +13 -0
- package/src/host/entry-0.8.7.js +13 -0
- package/src/host/entry-0.8.8.js +13 -0
- package/src/host/entry-0.8.9.js +13 -0
- package/src/host/index.js +74 -0
- package/src/host/plugin.js +403 -0
- package/src/host/prompt.js +22 -0
- package/src/host/tools.js +312 -0
package/LICENSE
ADDED
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
MIT License
|
|
2
|
+
|
|
3
|
+
Copyright (c) 2026 Wangmo-bit
|
|
4
|
+
|
|
5
|
+
Permission is hereby granted, free of charge, to any person obtaining a copy
|
|
6
|
+
of this software and associated documentation files (the "Software"), to deal
|
|
7
|
+
in the Software without restriction, including without limitation the rights
|
|
8
|
+
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
|
9
|
+
copies of the Software, and to permit persons to whom the Software is
|
|
10
|
+
furnished to do so, subject to the following conditions:
|
|
11
|
+
|
|
12
|
+
The above copyright notice and this permission notice shall be included in all
|
|
13
|
+
copies or substantial portions of the Software.
|
|
14
|
+
|
|
15
|
+
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
|
16
|
+
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
|
17
|
+
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
|
18
|
+
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
|
19
|
+
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
|
20
|
+
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
|
|
21
|
+
SOFTWARE.
|
package/README.md
CHANGED
|
@@ -1,3 +1,135 @@
|
|
|
1
|
-
#
|
|
1
|
+
# DS-link
|
|
2
2
|
|
|
3
|
-
|
|
3
|
+
**Let the sessions you already have in DSH work together.**
|
|
4
|
+
|
|
5
|
+
English · [简体中文](README_ZH.md)
|
|
6
|
+
|
|
7
|
+
 
|
|
8
|
+
|
|
9
|
+
You already have development, product and research sessions. DS-link lets them exchange messages, ask for help and receive explicit replies. You no longer have to carry questions and answers between chat windows, and you do not need to build a separate bot team.
|
|
10
|
+
|
|
11
|
+
> **Install:** `dsh plugin --profile <your-profile> add @wangmo-bit/ds-link@0.8.18`. You can also download the same package from the [GitHub release](https://github.com/Wangmo-bit/DS-link/releases/tag/v0.8.18). Installing does not restart the Host or apply the optional bridge.
|
|
12
|
+
|
|
13
|
+

|
|
14
|
+
|
|
15
|
+
*The images use fictional content and a synthetic interface, not real conversations or an end-to-end validation recording.*
|
|
16
|
+
|
|
17
|
+
## What it does
|
|
18
|
+
|
|
19
|
+
**DS-link connects registered sessions on the same DSH host.** Workspaces may differ; computers, team networks and public-network Agents are not connected.
|
|
20
|
+
|
|
21
|
+
Tell your development session:
|
|
22
|
+
|
|
23
|
+
> Ask Product discussion whether the first version should start with weekly-report export or search. Then continue.
|
|
24
|
+
|
|
25
|
+
It finds the product session and sends a request. After an explicit reply, you continue in the development session instead of carrying the question and answer between windows yourself.
|
|
26
|
+
|
|
27
|
+
- **Use existing sessions:** discover registered ordinary sessions across workspaces, or ask to create a new session with its first task.
|
|
28
|
+
- **Separate notifications from requests:** tell another session something, or ask it for a reply explicitly linked to your request.
|
|
29
|
+
- **Inspect the exchange:** look at messages and delivery evidence. Host acceptance, context receipt and an explicit reply are different facts; none proves the work is done.
|
|
30
|
+
|
|
31
|
+

|
|
32
|
+
|
|
33
|
+
You ask in natural language and the Agent calls tools. The panel holds settings and records, **not a manual message-sending form**. A model may still misunderstand scope or fail to coordinate; review important results. See [first use](docs/quickstart.en.md).
|
|
34
|
+
|
|
35
|
+
## Two display modes
|
|
36
|
+
|
|
37
|
+
### Bubble mode: read the result, without the noise
|
|
38
|
+
|
|
39
|
+
For everyday conversation, delegation and reading results when you do not want to watch every execution step.
|
|
40
|
+
|
|
41
|
+
- Clear message bodies; long replies are not additionally clipped.
|
|
42
|
+
- Reasoning and tool bodies stay out of the timeline; elapsed time and thought/tool counts occupy one line.
|
|
43
|
+
- Lightweight message capsules open the exchange on demand.
|
|
44
|
+
- Small Agent hints show only participants and states that can be confirmed; dispatch is not completion.
|
|
45
|
+
- A failed turn has a short status first, with details on demand; questions and approvals that need you are never hidden.
|
|
46
|
+
|
|
47
|
+
### Card mode: keep the process, inspect the details
|
|
48
|
+
|
|
49
|
+
For troubleshooting, checking execution, or when you prefer DSH's native presentation.
|
|
50
|
+
|
|
51
|
+
- Keeps the Host's reasoning, tool bodies and original actions.
|
|
52
|
+
- Organizes messages as cards with clear sender, recipient and subject.
|
|
53
|
+
- Expands message bodies and technical details on demand instead of showing everything at once.
|
|
54
|
+
|
|
55
|
+

|
|
56
|
+
|
|
57
|
+
**Switching changes presentation, not conversation content, communication ability or permissions.** The preference is stored in the current browser and site only. Full bubble flow and Agent hints require a matching Host bridge; installing the plugin alone does not guarantee the full effect. Card mode does not need the bridge. See [installation](docs/installation.en.md).
|
|
58
|
+
|
|
59
|
+
## Small details in the chat
|
|
60
|
+
|
|
61
|
+
- **Quote reply:** the hollow quote icon after copy under an assistant message; click it to insert the quote into the composer, then write your reply. It never sends automatically. Bodies longer than 1200 Unicode characters insert an opening excerpt with a marker; a selected fragment can also use the Host's "quote text".
|
|
62
|
+
- **Agent hints:** show which Agents can be confirmed for this turn, without mixing running, done and unconfirmed; internal parent/child Agent messages do not crowd the main conversation capsules.
|
|
63
|
+
- **Actions stay with the message:** copy, quote, feedback, branch and information stay next to the message, following the Host action row's visibility rules without taking over reading space.
|
|
64
|
+
|
|
65
|
+

|
|
66
|
+
|
|
67
|
+
A quote carries text, **not a permanent message link or a "reply only to this" hard constraint**; it helps the model understand what you refer to, and does not replace your explicit instruction.
|
|
68
|
+
|
|
69
|
+
## Settings
|
|
70
|
+
|
|
71
|
+
Everyday communication has five settings: **enable, pause new delivery, delivery channels, reply wait time, completed-body retention days**. Start with the defaults and change them when needed.
|
|
72
|
+
|
|
73
|
+
- Pausing queues new messages; it does not stop work other sessions already started.
|
|
74
|
+
- The channel count limits message delivery, not model concurrency.
|
|
75
|
+
- A reply timeout is marked; it does not resend or cancel work.
|
|
76
|
+
- Retention cleans up the plugin's own completed bodies, not the Host's original chat.
|
|
77
|
+
|
|
78
|
+
Display mode and "my bubble display name" are separate browser-local preferences; the name does not become sender identity or permission. See [settings](docs/settings.en.md).
|
|
79
|
+
|
|
80
|
+
<details>
|
|
81
|
+
<summary>See the settings page</summary>
|
|
82
|
+
|
|
83
|
+

|
|
84
|
+
|
|
85
|
+
</details>
|
|
86
|
+
|
|
87
|
+
## Install
|
|
88
|
+
|
|
89
|
+
Requires Node.js 24, DSH and pnpm; verified environments are primarily Linux Web. For the first install, use an isolated profile and back up the target profile's `package.json`, `pnpm-lock.yaml` and `cordis.patch.yml`.
|
|
90
|
+
|
|
91
|
+
```sh
|
|
92
|
+
dsh plugin --profile <your-profile> add @wangmo-bit/ds-link@0.8.18
|
|
93
|
+
```
|
|
94
|
+
|
|
95
|
+
You can also download the `.tgz` from the [GitHub release](https://github.com/Wangmo-bit/DS-link/releases/tag/v0.8.18), or build from source:
|
|
96
|
+
|
|
97
|
+
```sh
|
|
98
|
+
git clone https://github.com/Wangmo-bit/DS-link.git
|
|
99
|
+
cd DS-link
|
|
100
|
+
npm ci
|
|
101
|
+
npm run build
|
|
102
|
+
mkdir -p output
|
|
103
|
+
npm pack --pack-destination ./output
|
|
104
|
+
dsh plugin --profile <your-profile> add /absolute/path/to/wangmo-bit-ds-link-VERSION.tgz
|
|
105
|
+
```
|
|
106
|
+
|
|
107
|
+
**Installing the plugin and modifying the Host are separate actions.** These commands do not apply the bridge or restart anything. The package is `@wangmo-bit/ds-link`; existing `session_link_*` tools and data identifiers remain compatible. See [installation and migration](docs/installation.en.md#renaming-an-existing-installation).
|
|
108
|
+
|
|
109
|
+
## Boundaries and privacy
|
|
110
|
+
|
|
111
|
+
- The message ledger stays in the local DSH data directory, not a separate cloud messaging service. Sent content still enters the receiving session and may reach its model provider.
|
|
112
|
+
- Cross-session history tools can read bounded text from registered ordinary and archived sessions according to permissions, **with no per-target consent switch**. Low intrusion does not mean no privacy impact.
|
|
113
|
+
- Messages, quotes and file paths from other sessions are context, not authorization for sensitive operations, and do not grant the receiver more permissions.
|
|
114
|
+
- It is not an automatic task-taking or task-management system, and it does not guarantee that more sessions will use fewer model credits.
|
|
115
|
+
- Known limits include Host adaptation, Agent attribution evidence, chain-control UI and cross-version rollback; see [known issues](docs/known-issues.en.md).
|
|
116
|
+
|
|
117
|
+
See the [security model](docs/security-model.md) (in Chinese); report vulnerabilities privately through [security reporting](SECURITY.en.md).
|
|
118
|
+
|
|
119
|
+
## Docs and feedback
|
|
120
|
+
|
|
121
|
+
| I want to… | Go to |
|
|
122
|
+
| --- | --- |
|
|
123
|
+
| Start using / adjust settings | [Quickstart](docs/quickstart.en.md) · [Settings](docs/settings.en.md) |
|
|
124
|
+
| Install / troubleshoot / understand limits | [Installation](docs/installation.en.md) · [Known issues](docs/known-issues.en.md) |
|
|
125
|
+
| Understand design choices | [Philosophy](docs/philosophy.md) · [Architecture](docs/architecture.md) (in Chinese) |
|
|
126
|
+
| Report a problem / contribute | [Issues](https://github.com/Wangmo-bit/DS-link/issues/new/choose) · [Contributing](CONTRIBUTING.en.md) · [Testing](TESTING.md) |
|
|
127
|
+
|
|
128
|
+
Concrete scenarios and problem reports are welcome; you never need to provide private conversations or full configuration files.
|
|
129
|
+
|
|
130
|
+
## Acknowledgments and license
|
|
131
|
+
|
|
132
|
+
- [DS-Bot](https://github.com/Fei2411/DS-Bot): a public design reference for collaboration and chat presentation.
|
|
133
|
+
- [Claude](https://claude.com/): where the author first experienced this kind of collaboration, and an early inspiration for DS-link.
|
|
134
|
+
|
|
135
|
+
Project-owned code uses [MIT](LICENSE). Third-party material, dependencies and Host-bridge licensing are documented in [notices](THIRD_PARTY_NOTICES.md); demonstration assets in [asset notes](ASSETS.md). This is an independent community plugin, not an official DeepSeek product, and it is not endorsed by DeepSeek. Your providers bill model usage; check important actions and results yourself.
|
package/TESTING.md
ADDED
|
@@ -0,0 +1,59 @@
|
|
|
1
|
+
# 测试与验证 / Testing
|
|
2
|
+
|
|
3
|
+
[贡献说明](CONTRIBUTING.md) · [English contribution guide](CONTRIBUTING.en.md)
|
|
4
|
+
|
|
5
|
+
## 先隔离,再测试
|
|
6
|
+
|
|
7
|
+
测试包含固定 `/tmp/dsh-session-link-*` 路径、子进程、文件删除、锁竞争和 chmod 故障注入。不要在日用宿主的共享 `/tmp` 上运行完整套件。仅设置 TMPDIR 或换用户不够;root 还会绕过权限故障。
|
|
8
|
+
|
|
9
|
+
`npm test` 现在先检查 **Linux、非 root、独立挂载到 `/tmp` 的 tmpfs**,不满足就退出,避免误清理。按下面方式在一次性容器中运行:
|
|
10
|
+
|
|
11
|
+
```sh
|
|
12
|
+
docker build -f scripts/test.Dockerfile -t session-link-check .
|
|
13
|
+
docker run --rm --network=none --read-only --user=node \
|
|
14
|
+
--cap-drop=ALL --security-opt=no-new-privileges \
|
|
15
|
+
--pids-limit=512 --memory=3g --cpus=4 \
|
|
16
|
+
--tmpfs /tmp:rw,nosuid,nodev,exec,size=1g,mode=1777 \
|
|
17
|
+
session-link-check
|
|
18
|
+
```
|
|
19
|
+
|
|
20
|
+
镜像构建阶段 `npm ci` 需要访问依赖源;测试运行阶段断网、只读根文件系统,源码/依赖复制到 tmpfs 后才测试、构建和核对包清单。退出即销毁所有测试数据。固定 Node 24 镜像 digest 见 Dockerfile;不是启动新的 DSH 服务。
|
|
21
|
+
|
|
22
|
+
`npm test` 用 `scripts/run-tests.mjs` 发现 test 和 scripts 的测试,包括 rc.1 桥接与安装器,不再手写容易漏挂的长列表。新增脚本子目录如需被发现,须修改 runner 的白名单。安装器测试使用合成前后像;它的隔离环境变量由经过守卫的 runner 设置。
|
|
23
|
+
|
|
24
|
+
## 哪些测试依赖实际 Host
|
|
25
|
+
|
|
26
|
+
上述镜像在构建时用 `scripts/prepare-host-fixtures.mjs` 获取并核验三份固定公开 SDK bundle,运行时只读使用;因此 CI 配方可以覆盖这些集成用例。直接运行源码而未提供夹具时,下列用例会明确跳过,不能把跳过算成兼容通过:
|
|
27
|
+
|
|
28
|
+
| 环境变量 | 需要的文件 / 范围 |
|
|
29
|
+
| --- | --- |
|
|
30
|
+
| `DSH_CHAT_FLOW_CLIENT` | 精确 rc.5 chat bundle,用于旧桥接用例 |
|
|
31
|
+
| `DSH_CHAT_RC1_CLIENT` | 原始 DSH `0.2.2-rc.1` chat bundle;精确 SHA 校验、桥生成和一次性前缀安装器验收 |
|
|
32
|
+
| `DSH_CLIENT_CONVERSATION` | 对应版本 conversation bundle;真实 dispatcher 的 4 个集成用例 |
|
|
33
|
+
| `DSH_CHAT_CLIENT` | 旧滚动补丁需要的精确 client artifact(具体入口以测试源码为准) |
|
|
34
|
+
|
|
35
|
+
只读挂载相应公开 SDK 夹具进测试容器并设置变量,禁止挂载生产 profile 或真实会话。桥接测试只修改 `/tmp` 中专门创建的假安装前缀,不改系统 DSH。不同历史测试的实际变量名以源码为准,不伪造环境使 skip 变 pass。
|
|
36
|
+
|
|
37
|
+
## 按改动选择证据
|
|
38
|
+
|
|
39
|
+
- 协议/存储:幂等、显式 reply、暂停、unknown、超时、旧数据迁移、锁与恢复。
|
|
40
|
+
- 客户端:气泡/卡片两条路径、作者身份、附件、审批、引用、操作行、Agent 归属与滚动。
|
|
41
|
+
- Host 维护:精确前后像、版本拒绝、备份、并发写入、原子替换、失败证据和重试。
|
|
42
|
+
- 包与文档:`npm run build` 后 `npm run check:public -- --pack`。检查是有限规则,不代替全历史人工审计。
|
|
43
|
+
|
|
44
|
+
UI 的 React/合成用例不是实际模型、图片上传、浏览器全部时序或真实权限验证。代码中保留原生动作也不等于已点过。应分别报告通过、失败、跳过和未运行。
|
|
45
|
+
|
|
46
|
+
## 演示素材不是验收录像
|
|
47
|
+
|
|
48
|
+
```sh
|
|
49
|
+
npm ci
|
|
50
|
+
# 若尚无浏览器,开发者可自行安装与 playwright-core 匹配的 Chromium。
|
|
51
|
+
# 或通过 CHROMIUM_PATH 显式指定一个已有浏览器。
|
|
52
|
+
npm run docs:assets
|
|
53
|
+
```
|
|
54
|
+
|
|
55
|
+
离线组件演示不连接 DSH、不读取 DSH_HOME、不发送消息,只有虚构会话和标注的宿主替身。生成说明和可选 GIF 工具见 [ASSETS](ASSETS.md)。生成素材本身不证明真正的跨会话调用或生产可用。
|
|
56
|
+
|
|
57
|
+
## English summary
|
|
58
|
+
|
|
59
|
+
The full suite mutates files, uses fixed /tmp names and starts subprocesses. Run it only in the documented disposable, non-root Linux container with a private tmpfs mounted at /tmp; TMPDIR alone is not isolation. The default runner refuses unsafe environments. Dependencies are fetched during image build, then tests/build/pack run offline. Optional Host SDK tests skip explicitly unless exact read-only fixtures are supplied. Synthetic UI images are presentation fixtures, not end-to-end, live-model, permission or production-installation evidence.
|
|
@@ -0,0 +1,313 @@
|
|
|
1
|
+
# Third-party notices
|
|
2
|
+
|
|
3
|
+
This repository is an independent implementation, but it is **not third-party-free**. Some material is derived from, or embeds paths from, other projects. Project-owned code and documentation are MIT; the third-party material below keeps its own license and is not relicensed by this project.
|
|
4
|
+
|
|
5
|
+
## DeepSeek Harness (DSH) — MIT
|
|
6
|
+
|
|
7
|
+
The plugin integrates with DeepSeek Harness public Host APIs. The optional Host bubble bridge in `scripts/dsh-web-flow-bridge-rc1.mjs` / `scripts/install-host-flow-bridge-rc1.mjs` derives from, and patches, the exact-version DSH Web Chat client bundle. It is source-only maintenance tooling, not part of the plugin package, and is never installed automatically.
|
|
8
|
+
|
|
9
|
+
The DSH license below is reproduced from the locally installed `@deepseek-ai/dsh` package (`LICENSE`, checked 2026-11-08). The derived bridge material carries the same copyright and permission notice.
|
|
10
|
+
|
|
11
|
+
```text
|
|
12
|
+
MIT License
|
|
13
|
+
|
|
14
|
+
Copyright (c) 2026 DeepSeek
|
|
15
|
+
|
|
16
|
+
Permission is hereby granted, free of charge, to any person obtaining a copy
|
|
17
|
+
of this software and associated documentation files (the "Software"), to deal
|
|
18
|
+
in the Software without restriction, including without limitation the rights
|
|
19
|
+
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
|
20
|
+
copies of the Software, and to permit persons to whom the Software is
|
|
21
|
+
furnished to do so, subject to the following conditions:
|
|
22
|
+
|
|
23
|
+
The above copyright notice and this permission notice shall be included in all
|
|
24
|
+
copies or substantial portions of the Software.
|
|
25
|
+
|
|
26
|
+
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
|
27
|
+
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
|
28
|
+
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
|
29
|
+
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
|
30
|
+
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
|
31
|
+
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
|
|
32
|
+
SOFTWARE.
|
|
33
|
+
```
|
|
34
|
+
|
|
35
|
+
## Lucide — ISC (quote icon)
|
|
36
|
+
|
|
37
|
+
The one-click quote icon in `src/client/message-quote-action.jsx` is the Lucide `quote` icon path. The Lucide license below is reproduced from <https://lucide.dev/license> (checked 2026-11-08).
|
|
38
|
+
|
|
39
|
+
```text
|
|
40
|
+
ISC License
|
|
41
|
+
|
|
42
|
+
Copyright (c) 2026 Lucide Icons and Contributors
|
|
43
|
+
|
|
44
|
+
Permission to use, copy, modify, and/or distribute this software for any
|
|
45
|
+
purpose with or without fee is hereby granted, provided that the above
|
|
46
|
+
copyright notice and this permission notice appear in all copies.
|
|
47
|
+
|
|
48
|
+
THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES
|
|
49
|
+
WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF
|
|
50
|
+
MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR
|
|
51
|
+
ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES
|
|
52
|
+
WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN
|
|
53
|
+
ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF
|
|
54
|
+
OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
|
|
55
|
+
```
|
|
56
|
+
|
|
57
|
+
## Feather-derived icon — MIT
|
|
58
|
+
|
|
59
|
+
The sidebar `link` icon in `src/client/index.jsx` is a Feather-derived icon path (distributed through Lucide's Feather-derived icon set). The Feather MIT license below is reproduced from the same Lucide license page (checked 2026-11-08).
|
|
60
|
+
|
|
61
|
+
```text
|
|
62
|
+
The MIT License (MIT)
|
|
63
|
+
|
|
64
|
+
Copyright (c) 2013-present Cole Bemis
|
|
65
|
+
|
|
66
|
+
Permission is hereby granted, free of charge, to any person obtaining a copy
|
|
67
|
+
of this software and associated documentation files (the "Software"), to deal
|
|
68
|
+
in the Software without restriction, including without limitation the rights
|
|
69
|
+
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
|
70
|
+
copies of the Software, and to permit persons to whom the Software is
|
|
71
|
+
furnished to do so, subject to the following conditions:
|
|
72
|
+
|
|
73
|
+
The above copyright notice and this permission notice shall be included in all
|
|
74
|
+
copies or substantial portions of the Software.
|
|
75
|
+
|
|
76
|
+
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
|
77
|
+
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
|
78
|
+
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
|
79
|
+
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
|
80
|
+
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
|
81
|
+
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
|
|
82
|
+
SOFTWARE.
|
|
83
|
+
```
|
|
84
|
+
|
|
85
|
+
## DS-Bot adapted fold/preview helpers — Apache-2.0
|
|
86
|
+
|
|
87
|
+
The long-message fold/preview helpers in `src/client/chat-skin-model.mjs` are adapted from DS-Bot's `ds-bot/src/client/fold.js` (Apache-2.0), Copyright 2026 Fei2411 and DS Bot contributors. The adaptation covers the scanning/preview helpers (`moreThanLines`, `firstLines`, `cutAtLine`, `openFence`, and the preview/fence behavior); they were changed to measure length in Unicode code points instead of UTF-16 code units and to return an independent view-model contract (`shouldFold`, `folded`, `preview`, `text`, `totalChars`) instead of the original hook/rendering structure. The current bubble presentation does not fold long messages; the adapted helper module remains in the client source and is carried through the client build path. The project as a whole remains MIT; this adapted material is Apache-2.0 and is not relicensed as MIT.
|
|
88
|
+
|
|
89
|
+
This is an engineering attribution, not a legal audit or a claim that every lineage detail has been independently cleared. The full Apache License 2.0 text is reproduced at the end of this file. The DS-Bot attribution notice relevant to this source is retained:
|
|
90
|
+
|
|
91
|
+
```text
|
|
92
|
+
DS Bot
|
|
93
|
+
Copyright 2026 Fei2411 and the DS Bot contributors
|
|
94
|
+
|
|
95
|
+
This product is licensed under the Apache License, Version 2.0 (see LICENSE).
|
|
96
|
+
```
|
|
97
|
+
|
|
98
|
+
## Other design references
|
|
99
|
+
|
|
100
|
+
- **DS-Bot** (<https://github.com/Fei2411/DS-Bot>, Apache-2.0): apart from the adapted fold/preview helpers above, the collaboration and chat-presentation design was informed by public documentation. No DS-Bot runtime, Bot roster, server logic, avatars or artwork is bundled here, and this project does not relicense any DS-Bot material.
|
|
101
|
+
- **dsh-go** (<https://github.com/ccch1mneyyy/dsh-go>): documentation and open-source preparation reference only; no code or artwork is copied here.
|
|
102
|
+
|
|
103
|
+
## Development dependencies and Host peers
|
|
104
|
+
|
|
105
|
+
Development dependencies such as React, React DOM, esbuild and playwright-core are used for building and testing only. They keep their own licenses, are not part of the plugin's published file set, and are not relicensed by this project's MIT license.
|
|
106
|
+
|
|
107
|
+
Host peer dependencies (`@deepseek-ai/dsh-llm`, `@deepseek-ai/cordis`, `@deepseek-ai/schemastery`, and React peers) are provided by their authors and are not vendored here. Refer to their packages for the applicable license and notice texts.
|
|
108
|
+
|
|
109
|
+
## Apache License 2.0 (DS-Bot adapted material)
|
|
110
|
+
|
|
111
|
+
```text
|
|
112
|
+
Apache License
|
|
113
|
+
Version 2.0, January 2004
|
|
114
|
+
http://www.apache.org/licenses/
|
|
115
|
+
|
|
116
|
+
TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION
|
|
117
|
+
|
|
118
|
+
1. Definitions.
|
|
119
|
+
|
|
120
|
+
"License" shall mean the terms and conditions for use, reproduction,
|
|
121
|
+
and distribution as defined by Sections 1 through 9 of this document.
|
|
122
|
+
|
|
123
|
+
"Licensor" shall mean the copyright owner or entity authorized by
|
|
124
|
+
the copyright owner that is granting the License.
|
|
125
|
+
|
|
126
|
+
"Legal Entity" shall mean the union of the acting entity and all
|
|
127
|
+
other entities that control, are controlled by, or are under common
|
|
128
|
+
control with that entity. For the purposes of this definition,
|
|
129
|
+
"control" means (i) the power, direct or indirect, to cause the
|
|
130
|
+
direction or management of such entity, whether by contract or
|
|
131
|
+
otherwise, or (ii) ownership of fifty percent (50%) or more of the
|
|
132
|
+
outstanding shares, or (iii) beneficial ownership of such entity.
|
|
133
|
+
|
|
134
|
+
"You" (or "Your") shall mean an individual or Legal Entity
|
|
135
|
+
exercising permissions granted by this License.
|
|
136
|
+
|
|
137
|
+
"Source" form shall mean the preferred form for making modifications,
|
|
138
|
+
including but not limited to software source code, documentation
|
|
139
|
+
source, and configuration files.
|
|
140
|
+
|
|
141
|
+
"Object" form shall mean any form resulting from mechanical
|
|
142
|
+
transformation or translation of a Source form, including but
|
|
143
|
+
not limited to compiled object code, generated documentation,
|
|
144
|
+
and conversions to other media types.
|
|
145
|
+
|
|
146
|
+
"Work" shall mean the work of authorship, whether in Source or
|
|
147
|
+
Object form, made available under the License, as indicated by a
|
|
148
|
+
copyright notice that is included in or attached to the work
|
|
149
|
+
(an example is provided in the Appendix below).
|
|
150
|
+
|
|
151
|
+
"Derivative Works" shall mean any work, whether in Source or Object
|
|
152
|
+
form, that is based on (or derived from) the Work and for which the
|
|
153
|
+
editorial revisions, annotations, elaborations, or other modifications
|
|
154
|
+
represent, as a whole, an original work of authorship. For the purposes
|
|
155
|
+
of this License, Derivative Works shall not include works that remain
|
|
156
|
+
separable from, or merely link (or bind by name) to the interfaces of,
|
|
157
|
+
the Work and Derivative Works thereof.
|
|
158
|
+
|
|
159
|
+
"Contribution" shall mean any work of authorship, including
|
|
160
|
+
the original version of the Work and any modifications or additions
|
|
161
|
+
to that Work or Derivative Works thereof, that is intentionally
|
|
162
|
+
submitted to Licensor for inclusion in the Work by the copyright owner
|
|
163
|
+
or by an individual or Legal Entity authorized to submit on behalf of
|
|
164
|
+
the copyright owner. For the purposes of this definition, "submitted"
|
|
165
|
+
means any form of electronic, verbal, or written communication sent
|
|
166
|
+
to the Licensor or its representatives, including but not limited to
|
|
167
|
+
communication on electronic mailing lists, source code control systems,
|
|
168
|
+
and issue tracking systems that are managed by, or on behalf of, the
|
|
169
|
+
Licensor for the purpose of discussing and improving the Work, but
|
|
170
|
+
excluding communication that is conspicuously marked or otherwise
|
|
171
|
+
designated in writing by the copyright owner as "Not a Contribution."
|
|
172
|
+
|
|
173
|
+
"Contributor" shall mean Licensor and any individual or Legal Entity
|
|
174
|
+
on behalf of whom a Contribution has been received by Licensor and
|
|
175
|
+
subsequently incorporated within the Work.
|
|
176
|
+
|
|
177
|
+
2. Grant of Copyright License. Subject to the terms and conditions of
|
|
178
|
+
this License, each Contributor hereby grants to You a perpetual,
|
|
179
|
+
worldwide, non-exclusive, no-charge, royalty-free, irrevocable
|
|
180
|
+
copyright license to reproduce, prepare Derivative Works of,
|
|
181
|
+
publicly display, publicly perform, sublicense, and distribute the
|
|
182
|
+
Work and such Derivative Works in Source or Object form.
|
|
183
|
+
|
|
184
|
+
3. Grant of Patent License. Subject to the terms and conditions of
|
|
185
|
+
this License, each Contributor hereby grants to You a perpetual,
|
|
186
|
+
worldwide, non-exclusive, no-charge, royalty-free, irrevocable
|
|
187
|
+
(except as stated in this section) patent license to make, have made,
|
|
188
|
+
use, offer to sell, sell, import, and otherwise transfer the Work,
|
|
189
|
+
where such license applies only to those patent claims licensable
|
|
190
|
+
by such Contributor that are necessarily infringed by their
|
|
191
|
+
Contribution(s) alone or by combination of their Contribution(s)
|
|
192
|
+
with the Work to which such Contribution(s) was submitted. If You
|
|
193
|
+
institute patent litigation against any entity (including a
|
|
194
|
+
cross-claim or counterclaim in a lawsuit) alleging that the Work
|
|
195
|
+
or a Contribution incorporated within the Work constitutes direct
|
|
196
|
+
or contributory patent infringement, then any patent licenses
|
|
197
|
+
granted to You under this License for that Work shall terminate
|
|
198
|
+
as of the date such litigation is filed.
|
|
199
|
+
|
|
200
|
+
4. Redistribution. You may reproduce and distribute copies of the
|
|
201
|
+
Work or Derivative Works thereof in any medium, with or without
|
|
202
|
+
modifications, and in Source or Object form, provided that You
|
|
203
|
+
meet the following conditions:
|
|
204
|
+
|
|
205
|
+
(a) You must give any other recipients of the Work or
|
|
206
|
+
Derivative Works a copy of this License; and
|
|
207
|
+
|
|
208
|
+
(b) You must cause any modified files to carry prominent notices
|
|
209
|
+
stating that You changed the files; and
|
|
210
|
+
|
|
211
|
+
(c) You must retain, in the Source form of any Derivative Works
|
|
212
|
+
that You distribute, all copyright, patent, trademark, and
|
|
213
|
+
attribution notices from the Source form of the Work,
|
|
214
|
+
excluding those notices that do not pertain to any part of
|
|
215
|
+
the Derivative Works; and
|
|
216
|
+
|
|
217
|
+
(d) If the Work includes a "NOTICE" text file as part of its
|
|
218
|
+
distribution, then any Derivative Works that You distribute must
|
|
219
|
+
include a readable copy of the attribution notices contained
|
|
220
|
+
within such NOTICE file, excluding those notices that do not
|
|
221
|
+
pertain to any part of the Derivative Works, in at least one
|
|
222
|
+
of the following places: within a NOTICE text file distributed
|
|
223
|
+
as part of the Derivative Works; within the Source form or
|
|
224
|
+
documentation, if provided along with the Derivative Works; or,
|
|
225
|
+
within a display generated by the Derivative Works, if and
|
|
226
|
+
wherever such third-party notices normally appear. The contents
|
|
227
|
+
of the NOTICE file are for informational purposes only and
|
|
228
|
+
do not modify the License. You may add Your own attribution
|
|
229
|
+
notices within Derivative Works that You distribute, alongside
|
|
230
|
+
or as an addendum to the NOTICE text from the Work, provided
|
|
231
|
+
that such additional attribution notices cannot be construed
|
|
232
|
+
as modifying the License.
|
|
233
|
+
|
|
234
|
+
You may add Your own copyright statement to Your modifications and
|
|
235
|
+
may provide additional or different license terms and conditions
|
|
236
|
+
for use, reproduction, or distribution of Your modifications, or
|
|
237
|
+
for any such Derivative Works as a whole, provided Your use,
|
|
238
|
+
reproduction, and distribution of the Work otherwise complies with
|
|
239
|
+
the conditions stated in this License.
|
|
240
|
+
|
|
241
|
+
5. Submission of Contributions. Unless You explicitly state otherwise,
|
|
242
|
+
any Contribution intentionally submitted for inclusion in the Work
|
|
243
|
+
by You to the Licensor shall be under the terms and conditions of
|
|
244
|
+
this License, without any additional terms or conditions.
|
|
245
|
+
Notwithstanding the above, nothing herein shall supersede or modify
|
|
246
|
+
the terms of any separate license agreement you may have executed
|
|
247
|
+
with Licensor regarding such Contributions.
|
|
248
|
+
|
|
249
|
+
6. Trademarks. This License does not grant permission to use the trade
|
|
250
|
+
names, trademarks, service marks, or product names of the Licensor,
|
|
251
|
+
except as required for reasonable and customary use in describing the
|
|
252
|
+
origin of the Work and reproducing the content of the NOTICE file.
|
|
253
|
+
|
|
254
|
+
7. Disclaimer of Warranty. Unless required by applicable law or
|
|
255
|
+
agreed to in writing, Licensor provides the Work (and each
|
|
256
|
+
Contributor provides its Contributions) on an "AS IS" BASIS,
|
|
257
|
+
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
|
|
258
|
+
implied, including, without limitation, any warranties or conditions
|
|
259
|
+
of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A
|
|
260
|
+
PARTICULAR PURPOSE. You are solely responsible for determining the
|
|
261
|
+
appropriateness of using or redistributing the Work and assume any
|
|
262
|
+
risks associated with Your exercise of permissions under this License.
|
|
263
|
+
|
|
264
|
+
8. Limitation of Liability. In no event and under no legal theory,
|
|
265
|
+
whether in tort (including negligence), contract, or otherwise,
|
|
266
|
+
unless required by applicable law (such as deliberate and grossly
|
|
267
|
+
negligent acts) or agreed to in writing, shall any Contributor be
|
|
268
|
+
liable to You for damages, including any direct, indirect, special,
|
|
269
|
+
incidental, or consequential damages of any character arising as a
|
|
270
|
+
result of this License or out of the use or inability to use the
|
|
271
|
+
Work (including but not limited to damages for loss of goodwill,
|
|
272
|
+
work stoppage, computer failure or malfunction, or any and all
|
|
273
|
+
other commercial damages or losses), even if such Contributor
|
|
274
|
+
has been advised of the possibility of such damages.
|
|
275
|
+
|
|
276
|
+
9. Accepting Warranty or Additional Liability. While redistributing
|
|
277
|
+
the Work or Derivative Works thereof, You may choose to offer,
|
|
278
|
+
and charge a fee for, acceptance of support, warranty, indemnity,
|
|
279
|
+
or other liability obligations and/or rights consistent with this
|
|
280
|
+
License. However, in accepting such obligations, You may act only
|
|
281
|
+
on Your own behalf and on Your sole responsibility, not on behalf
|
|
282
|
+
of any other Contributor, and only if You agree to indemnify,
|
|
283
|
+
defend, and hold each Contributor harmless for any liability
|
|
284
|
+
incurred by, or claims asserted against, such Contributor by reason
|
|
285
|
+
of your accepting any such warranty or additional liability.
|
|
286
|
+
|
|
287
|
+
END OF TERMS AND CONDITIONS
|
|
288
|
+
|
|
289
|
+
APPENDIX: How to apply the Apache License to your work.
|
|
290
|
+
|
|
291
|
+
To apply the Apache License to your work, attach the following
|
|
292
|
+
boilerplate notice, with the fields enclosed by brackets "[]"
|
|
293
|
+
replaced with your own identifying information. (Don't include
|
|
294
|
+
the brackets!) The text should be enclosed in the appropriate
|
|
295
|
+
comment syntax for the file format. We also recommend that a
|
|
296
|
+
file or class name and description of purpose be included on the
|
|
297
|
+
same "printed page" as the copyright notice for easier
|
|
298
|
+
identification within third-party archives.
|
|
299
|
+
|
|
300
|
+
Copyright [yyyy] [name of copyright owner]
|
|
301
|
+
|
|
302
|
+
Licensed under the Apache License, Version 2.0 (the "License");
|
|
303
|
+
you may not use this file except in compliance with the License.
|
|
304
|
+
You may obtain a copy of the License at
|
|
305
|
+
|
|
306
|
+
http://www.apache.org/licenses/LICENSE-2.0
|
|
307
|
+
|
|
308
|
+
Unless required by applicable law or agreed to in writing, software
|
|
309
|
+
distributed under the License is distributed on an "AS IS" BASIS,
|
|
310
|
+
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
311
|
+
See the License for the specific language governing permissions and
|
|
312
|
+
limitations under the License.
|
|
313
|
+
```
|
package/assets/icon.svg
ADDED
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 64 64" role="img" aria-label="会话互通">
|
|
2
|
+
<rect width="64" height="64" rx="14" fill="#e9edf9"/>
|
|
3
|
+
<g fill="none" stroke="#33499f" stroke-width="3.4" stroke-linecap="round" stroke-linejoin="round">
|
|
4
|
+
<path d="M21 16h11a5 5 0 0 1 5 5v5a5 5 0 0 1-5 5h-10l-6 5V21a5 5 0 0 1 5-5Z"/>
|
|
5
|
+
<path fill="#e9edf9" d="M31 26h12a5 5 0 0 1 5 5v16l-6-5H31a5 5 0 0 1-5-5v-6a5 5 0 0 1 5-5Z"/>
|
|
6
|
+
</g>
|
|
7
|
+
</svg>
|
package/cordis.patch.yml
ADDED